Search in sources :

Example 1 with AsnConstructedType

use of com.beanit.asn1bean.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;
        replaceParametersByAnyTypes(componentTypes, parameters);
    }
    for (AsnElementType componentType : componentTypes) {
        if ((componentType.typeReference instanceof AsnConstructedType)) {
            listOfSubClassNames.add(getClassName(componentType));
        }
    }
    for (AsnElementType componentType : componentTypes) {
        if (isInnerType(componentType)) {
            String subClassName = getClassName(componentType, className);
            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("private byte[] code = null;");
    setClassNamesOfComponents(listOfSubClassNames, componentTypes, className);
    writeMembers(componentTypes);
    if (asnSequenceSet.isSequence && accessExtended && extensibilityImplied) {
        String accessModifierString = jaxbMode ? "private" : "public";
        write(accessModifierString + " byte[] extensionBytes = null;");
    }
    writeEmptyConstructor(className);
    if (jaxbMode) {
        writeGetterAndSetter(componentTypes);
        if (asnSequenceSet.isSequence && accessExtended && extensibilityImplied) {
            write("public byte[] getExtensionBytes() {");
            write("return extensionBytes;");
            write("}\n");
            write("public void setExtensionBytes(byte[] bytes) {");
            write("this.extensionBytes = bytes;");
            write("}\n");
        }
    } else {
        writeEncodeConstructor(className, componentTypes);
    }
    boolean hasExplicitTag = (tag != null) && (tag.type == TagType.EXPLICIT);
    writeSimpleEncodeFunction();
    writeSequenceOrSetEncodeFunction(componentTypes, hasExplicitTag, asnSequenceSet.isSequence);
    writeSimpleDecodeFunction("true");
    if (asnSequenceSet.isSequence) {
        writeSequenceDecodeMethod(convertToComponentInfos(componentTypes), hasExplicitTag);
    } else {
        writeSetDecodeFunction(convertToComponentInfos(componentTypes), hasExplicitTag);
    }
    writeEncodeAndSaveFunction();
    writeSequenceOrSetToStringFunction(componentTypes);
    write("}\n");
}
Also used : AsnConstructedType(com.beanit.asn1bean.compiler.model.AsnConstructedType) AsnParameter(com.beanit.asn1bean.compiler.model.AsnParameter) AsnCharacterString(com.beanit.asn1bean.compiler.model.AsnCharacterString) AsnOctetString(com.beanit.asn1bean.compiler.model.AsnOctetString) HexString(com.beanit.asn1bean.util.HexString) AsnBitString(com.beanit.asn1bean.compiler.model.AsnBitString) BerTag(com.beanit.asn1bean.ber.BerTag) AsnTag(com.beanit.asn1bean.compiler.model.AsnTag) AsnElementType(com.beanit.asn1bean.compiler.model.AsnElementType)

Example 2 with AsnConstructedType

use of com.beanit.asn1bean.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, moduleToPackageName(module.moduleIdentifier.name).replace('.', '/'));
    this.module = module;
    tagDefault = module.tagDefault;
    extensibilityImplied = module.extensible;
    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);
}
Also used : AsnTaggedType(com.beanit.asn1bean.compiler.model.AsnTaggedType) AsnConstructedType(com.beanit.asn1bean.compiler.model.AsnConstructedType) AsnCharacterString(com.beanit.asn1bean.compiler.model.AsnCharacterString) AsnOctetString(com.beanit.asn1bean.compiler.model.AsnOctetString) HexString(com.beanit.asn1bean.util.HexString) AsnBitString(com.beanit.asn1bean.compiler.model.AsnBitString) BerTag(com.beanit.asn1bean.ber.BerTag) AsnTag(com.beanit.asn1bean.compiler.model.AsnTag) File(java.io.File) AsnDefinedType(com.beanit.asn1bean.compiler.model.AsnDefinedType) AsnType(com.beanit.asn1bean.compiler.model.AsnType)

Example 3 with AsnConstructedType

use of com.beanit.asn1bean.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("private 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;
        replaceParametersByAnyTypes(componentTypes, parameters);
    }
    for (AsnElementType componentType : componentTypes) {
        if ((componentType.typeReference instanceof AsnConstructedType)) {
            listOfSubClassNames.add(getClassName(componentType, className));
        }
    }
    for (AsnElementType componentType : componentTypes) {
        if (isInnerType(componentType)) {
            String subClassName = getClassName(componentType, className);
            writeConstructedTypeClass(subClassName, componentType.typeReference, null, true, listOfSubClassNames);
        }
    }
    setClassNamesOfComponents(listOfSubClassNames, componentTypes, className);
    writeMembers(componentTypes);
    writeEmptyConstructor(className);
    if (!jaxbMode) {
        writeEncodeConstructor(className, componentTypes);
    }
    if (jaxbMode) {
        writeGetterAndSetter(componentTypes);
    }
    writeChoiceEncodeFunction(componentTypes, tag != null);
    writeChoiceDecodeMethod(convertToComponentInfos(componentTypes), tag != null);
    writeEncodeAndSaveFunction(tag == null);
    writeChoiceToStringFunction(componentTypes);
    write("}\n");
}
Also used : AsnConstructedType(com.beanit.asn1bean.compiler.model.AsnConstructedType) AsnParameter(com.beanit.asn1bean.compiler.model.AsnParameter) AsnCharacterString(com.beanit.asn1bean.compiler.model.AsnCharacterString) AsnOctetString(com.beanit.asn1bean.compiler.model.AsnOctetString) HexString(com.beanit.asn1bean.util.HexString) AsnBitString(com.beanit.asn1bean.compiler.model.AsnBitString) AsnElementType(com.beanit.asn1bean.compiler.model.AsnElementType)

Aggregations

AsnBitString (com.beanit.asn1bean.compiler.model.AsnBitString)3 AsnCharacterString (com.beanit.asn1bean.compiler.model.AsnCharacterString)3 AsnConstructedType (com.beanit.asn1bean.compiler.model.AsnConstructedType)3 AsnOctetString (com.beanit.asn1bean.compiler.model.AsnOctetString)3 HexString (com.beanit.asn1bean.util.HexString)3 BerTag (com.beanit.asn1bean.ber.BerTag)2 AsnElementType (com.beanit.asn1bean.compiler.model.AsnElementType)2 AsnParameter (com.beanit.asn1bean.compiler.model.AsnParameter)2 AsnTag (com.beanit.asn1bean.compiler.model.AsnTag)2 AsnDefinedType (com.beanit.asn1bean.compiler.model.AsnDefinedType)1 AsnTaggedType (com.beanit.asn1bean.compiler.model.AsnTaggedType)1 AsnType (com.beanit.asn1bean.compiler.model.AsnType)1 File (java.io.File)1