use of org.openmuc.jasn1.compiler.model.AsnConstructedType in project jasn1 by openmuc.
the class BerClassWriter method writeChoiceClass.
private void writeChoiceClass(String className, AsnChoice asn1TypeElement, Tag tag, String isStaticStr, List<String> listOfSubClassNames) throws IOException {
write("public" + isStaticStr + " class " + className + " implements " + berTypeInterfaceString + "Serializable {\n");
write("private static final long serialVersionUID = 1L;\n");
write("public byte[] code = null;");
if (tag != null) {
write("public static final BerTag tag = new BerTag(" + getBerTagParametersString(tag) + ");\n");
}
List<AsnElementType> componentTypes = asn1TypeElement.componentTypes;
addAutomaticTagsIfNeeded(componentTypes);
if (asn1TypeElement.parameters != null) {
List<AsnParameter> parameters = asn1TypeElement.parameters;
replaceParamtersByAnyTypes(componentTypes, parameters);
}
for (AsnElementType componentType : componentTypes) {
if (componentType.typeReference != null && (componentType.typeReference instanceof AsnConstructedType)) {
listOfSubClassNames.add(getClassNameOfComponent(componentType));
}
}
for (AsnElementType componentType : componentTypes) {
if (isInnerType(componentType)) {
String subClassName = getClassNameOfComponent(componentType);
writeConstructedTypeClass(subClassName, componentType.typeReference, null, true, listOfSubClassNames);
}
}
setClassNamesOfComponents(listOfSubClassNames, componentTypes);
writePublicMembers(componentTypes);
writeEmptyConstructor(className);
if (!jaxbMode) {
writeEncodeConstructor(className, componentTypes);
}
if (jaxbMode) {
writeGetterAndSetter(componentTypes);
}
writeChoiceEncodeFunction(componentTypes, tag != null);
writeChoiceDecodeFunction(componentTypes, tag != null);
writeEncodeAndSaveFunction(tag == null);
writeChoiceToStringFunction(componentTypes);
write("}\n");
}
use of org.openmuc.jasn1.compiler.model.AsnConstructedType in project jasn1 by openmuc.
the class BerClassWriter method writeSequenceOrSetClass.
private void writeSequenceOrSetClass(String className, AsnSequenceSet asnSequenceSet, Tag tag, String isStaticStr, List<String> listOfSubClassNames) throws IOException {
write("public" + isStaticStr + " class " + className + " implements " + berTypeInterfaceString + "Serializable {\n");
write("private static final long serialVersionUID = 1L;\n");
List<AsnElementType> componentTypes = asnSequenceSet.componentTypes;
addAutomaticTagsIfNeeded(componentTypes);
if (asnSequenceSet.parameters != null) {
List<AsnParameter> parameters = asnSequenceSet.parameters;
replaceParamtersByAnyTypes(componentTypes, parameters);
}
for (AsnElementType componentType : componentTypes) {
if (componentType.typeReference != null && (componentType.typeReference instanceof AsnConstructedType)) {
listOfSubClassNames.add(getClassNameOfComponent(componentType));
}
}
for (AsnElementType componentType : componentTypes) {
if (isInnerType(componentType)) {
String subClassName = getClassNameOfComponent(componentType);
writeConstructedTypeClass(subClassName, componentType.typeReference, null, true, listOfSubClassNames);
}
}
Tag mainTag;
if (tag == null) {
if (asnSequenceSet.isSequence) {
mainTag = stdSeqTag;
} else {
mainTag = stdSetTag;
}
} else {
mainTag = tag;
}
write("public static final BerTag tag = new BerTag(" + getBerTagParametersString(mainTag) + ");\n");
write("public byte[] code = null;");
setClassNamesOfComponents(listOfSubClassNames, componentTypes);
writePublicMembers(componentTypes);
writeEmptyConstructor(className);
if (!jaxbMode) {
writeEncodeConstructor(className, componentTypes);
}
if (jaxbMode) {
writeGetterAndSetter(componentTypes);
}
boolean hasExplicitTag = (tag != null) && (tag.type == TagType.EXPLICIT);
writeSimpleEncodeFunction();
writeSequenceOrSetEncodeFunction(componentTypes, hasExplicitTag, asnSequenceSet.isSequence);
writeSimpleDecodeFunction("true");
if (asnSequenceSet.isSequence) {
writeSequenceDecodeFunction(componentTypes, hasExplicitTag);
} else {
writeSetDecodeFunction(componentTypes);
}
writeEncodeAndSaveFunction();
writeSequenceOrSetToStringFunction(componentTypes);
write("}\n");
}
use of org.openmuc.jasn1.compiler.model.AsnConstructedType in project jasn1 by openmuc.
the class BerClassWriter method getConstructorParametersFromConstructedElement.
private String[] getConstructorParametersFromConstructedElement(AsnConstructedType assignedTypeDefinition) throws IOException {
List<AsnElementType> componentTypes;
if (assignedTypeDefinition instanceof AsnSequenceSet) {
componentTypes = ((AsnSequenceSet) assignedTypeDefinition).componentTypes;
} else {
componentTypes = ((AsnChoice) assignedTypeDefinition).componentTypes;
}
String[] constructorParameters = new String[componentTypes.size() * 2];
for (int j = 0; j < componentTypes.size(); j++) {
AsnElementType componentType = componentTypes.get(j);
constructorParameters[j * 2] = getClassNameOfComponent(componentType);
constructorParameters[j * 2 + 1] = cleanUpName(componentType.name);
}
return constructorParameters;
}
use of org.openmuc.jasn1.compiler.model.AsnConstructedType in project jasn1 by openmuc.
the class BerClassWriter method translateModule.
public void translateModule(AsnModule module) throws IOException {
System.out.println("Generating classes for module \"" + module.moduleIdentifier.name + "\"");
outputDirectory = new File(outputBaseDir, sanitizeModuleName(module.moduleIdentifier.name).replace('-', '/').toLowerCase());
this.module = module;
tagDefault = module.tagDefault;
for (AsnType typeDefinition : module.typesByName.values()) {
if (typeDefinition instanceof AsnDefinedType) {
if (getInformationObjectClass(((AsnDefinedType) typeDefinition).typeName, module) != null) {
continue;
}
}
String typeName = cleanUpName(typeDefinition.name);
writeClassHeader(typeName, module);
if (typeDefinition instanceof AsnTaggedType) {
AsnTaggedType asnTaggedType = (AsnTaggedType) typeDefinition;
Tag tag = getTag(asnTaggedType);
if (asnTaggedType.definedType != null) {
writeRetaggingTypeClass(typeName, asnTaggedType.definedType.typeName, typeDefinition, tag);
} else {
AsnType assignedAsnType = asnTaggedType.typeReference;
if (assignedAsnType instanceof AsnConstructedType) {
writeConstructedTypeClass(typeName, assignedAsnType, tag, false, null);
} else {
writeRetaggingTypeClass(typeName, getBerType(assignedAsnType), typeDefinition, tag);
}
}
} else if (typeDefinition instanceof AsnDefinedType) {
writeRetaggingTypeClass(typeName, ((AsnDefinedType) typeDefinition).typeName, typeDefinition, null);
} else if (typeDefinition instanceof AsnConstructedType) {
writeConstructedTypeClass(typeName, typeDefinition, null, false, null);
} else {
writeRetaggingTypeClass(typeName, getBerType(typeDefinition), typeDefinition, null);
}
out.close();
}
writeOidValues(module);
}
Aggregations