Skip to content

Commit 354ccc2

Browse files
committed
Working on #67.
1 parent 8875d33 commit 354ccc2

File tree

4 files changed

+97
-0
lines changed

4 files changed

+97
-0
lines changed
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package org.hisrc.jsonix.compilation.mapping;
2+
3+
import org.apache.commons.lang3.Validate;
4+
import org.hisrc.jscm.codemodel.expression.JSAssignmentExpression;
5+
6+
public class BuiltinLeafInfoCompiler<T, C extends T, O> implements TypeInfoCompiler<T, C> {
7+
8+
private final String name;
9+
10+
public BuiltinLeafInfoCompiler(String name) {
11+
Validate.notNull(name);
12+
this.name = name;
13+
}
14+
15+
@Override
16+
public JSAssignmentExpression createTypeInfoDeclaration(MappingCompiler<T, C> mappingCompiler) {
17+
return mappingCompiler.getCodeModel().string(name);
18+
}
19+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package org.hisrc.jsonix.compilation.mapping;
2+
3+
import org.apache.commons.lang3.Validate;
4+
import org.hisrc.jscm.codemodel.JSCodeModel;
5+
import org.hisrc.jscm.codemodel.expression.JSAssignmentExpression;
6+
import org.hisrc.jscm.codemodel.expression.JSObjectLiteral;
7+
import org.hisrc.jsonix.naming.Naming;
8+
import org.jvnet.jaxb2_commons.xml.bind.model.MList;
9+
10+
public class ListCompiler<T, C extends T> implements TypeInfoCompiler<T, C> {
11+
12+
private final MList<T, C> typeInfo;
13+
private final TypeInfoCompiler<T, C> itemTypeInfoCompiler;
14+
15+
public ListCompiler(MList<T, C> typeInfo, TypeInfoCompiler<T, C> itemTypeInfoCompiler) {
16+
Validate.notNull(typeInfo);
17+
Validate.notNull(itemTypeInfoCompiler);
18+
this.typeInfo = typeInfo;
19+
this.itemTypeInfoCompiler = itemTypeInfoCompiler;
20+
}
21+
22+
@Override
23+
public JSAssignmentExpression createTypeInfoDeclaration(MappingCompiler<T, C> mappingCompiler) {
24+
Validate.notNull(mappingCompiler);
25+
final JSCodeModel codeModel = mappingCompiler.getCodeModel();
26+
final Naming naming = mappingCompiler.getNaming();
27+
28+
final JSObjectLiteral list = codeModel.object();
29+
list.append(naming.type(), codeModel.string(naming.list()));
30+
final JSAssignmentExpression typeInfoDeclaration = this.itemTypeInfoCompiler
31+
.createTypeInfoDeclaration(mappingCompiler);
32+
if (!typeInfoDeclaration.acceptExpressionVisitor(new CheckValueStringLiteralExpressionVisitor("String"))) {
33+
list.append(naming.baseTypeInfo(), typeInfoDeclaration);
34+
}
35+
return list;
36+
37+
}
38+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package org.hisrc.jsonix.compilation.mapping;
2+
3+
import org.apache.commons.lang3.Validate;
4+
import org.hisrc.jscm.codemodel.JSCodeModel;
5+
import org.hisrc.jscm.codemodel.expression.JSAssignmentExpression;
6+
import org.hisrc.jsonix.definition.Modules;
7+
import org.jvnet.jaxb2_commons.xml.bind.model.MPackagedTypeInfo;
8+
9+
public class PackagedTypeInfoCompiler<T, C extends T> implements TypeInfoCompiler<T, C> {
10+
11+
private final MPackagedTypeInfo<T, C> typeInfo;
12+
13+
public PackagedTypeInfoCompiler(MPackagedTypeInfo<T, C> typeInfo) {
14+
Validate.notNull(typeInfo);
15+
this.typeInfo = typeInfo;
16+
}
17+
18+
@Override
19+
public JSAssignmentExpression createTypeInfoDeclaration(MappingCompiler<T, C> mappingCompiler) {
20+
Validate.notNull(mappingCompiler);
21+
final Modules<T, C> mappingNameResolver = mappingCompiler.getModules();
22+
final String mappingName = mappingCompiler.getMapping().getMappingName();
23+
final JSCodeModel codeModel = mappingCompiler.getCodeModel();
24+
final String typeInfoMappingName = mappingNameResolver
25+
.getMappingName(this.typeInfo.getPackageInfo().getPackageName());
26+
final String spaceName = typeInfoMappingName.equals(mappingName) ? "" : typeInfoMappingName;
27+
final String typeInfoName = spaceName + "."
28+
+ this.typeInfo.getContainerLocalName(MappingCompiler.DEFAULT_SCOPED_NAME_DELIMITER);
29+
return codeModel.string(typeInfoName);
30+
31+
}
32+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package org.hisrc.jsonix.compilation.mapping;
2+
3+
import org.hisrc.jscm.codemodel.expression.JSAssignmentExpression;
4+
5+
public interface TypeInfoCompiler<T, C extends T> {
6+
7+
public JSAssignmentExpression createTypeInfoDeclaration(MappingCompiler<T, C> mappingCompiler);
8+
}

0 commit comments

Comments
 (0)