static int hashCode(final @NonNull EnumTypeDefinition type) { return Objects.hash(type.getPath(), type.getUnknownSchemaNodes(), type.getBaseType(), type.getUnits().orElse(null), type.getDefaultValue(), type.getValues()); }
@Override public void addEnumDescription(final EnumBuilder enumBuilder, final EnumTypeDefinition enumTypeDef) { final Optional<String> optDesc = enumTypeDef.getDescription(); if (optDesc.isPresent()) { enumBuilder.setDescription(encodeAngleBrackets(optDesc.get())); } }
final SchemaNode parentNode) { Preconditions.checkArgument(enumTypeDef != null, "EnumTypeDefinition reference cannot be NULL!"); Preconditions.checkArgument(enumTypeDef.getValues() != null, "EnumTypeDefinition MUST contain at least ONE value definition!"); Preconditions.checkArgument(enumTypeDef.getQName() != null, "EnumTypeDefinition MUST contain NON-NULL QName!"); Preconditions.checkArgument(enumTypeDef.getQName().getLocalName() != null, "Local Name in EnumTypeDefinition QName cannot be NULL!"); enumBuilder.setDescription(enumTypeDef.getDescription()); enumBuilder.setReference(enumTypeDef.getReference()); enumBuilder.setModuleName(module.getName()); enumBuilder.setSchemaPath(enumTypeDef.getPath().getPathFromRoot()); enumBuilder.updateEnumPairsFromEnumTypeDef(enumTypeDef); return enumBuilder.toInstance(null);
private static int getBaseTypeEnumValue(final String enumName, final EnumTypeDefinition baseType, final StmtContext<?, ?, ?> ctx) { for (EnumPair baseTypeEnumPair : baseType.getValues()) { if (enumName.equals(baseTypeEnumPair.getName())) { return baseTypeEnumPair.getValue(); } } throw new SourceException(ctx.getStatementSourceReference(), "Enum '%s' is not a subset of its base enumeration type %s.", enumName, baseType.getQName()); }
final GeneratedTypeBuilderBase<?> typeBuilder) { Preconditions.checkArgument(enumTypeDef != null, "EnumTypeDefinition reference cannot be NULL!"); Preconditions.checkArgument(enumTypeDef.getValues() != null, "EnumTypeDefinition MUST contain at least ONE value definition!"); Preconditions.checkArgument(enumTypeDef.getQName() != null, "EnumTypeDefinition MUST contain NON-NULL QName!"); Preconditions.checkArgument(enumTypeDef.getQName().getLocalName() != null, "Local Name in EnumTypeDefinition QName cannot be NULL!"); Preconditions.checkArgument(typeBuilder != null, "Generated Type Builder reference cannot be NULL!"); enumBuilder.setDescription(enumTypeDef.getDescription()); enumBuilder.updateEnumPairsFromEnumTypeDef(enumTypeDef); return enumBuilder.toInstance(enumBuilder);
if ((enumTypeDef != null) && (typeBuilder != null) && (enumTypeDef.getQName() != null) && (enumTypeDef.getQName().getLocalName() != null)) { final String enumerationName = BindingMapping.getClassName(enumName); final EnumBuilder enumBuilder = typeBuilder.addEnumeration(enumerationName); enumBuilder.setDescription(enumTypeDef.getDescription()); enumBuilder.updateEnumPairsFromEnumTypeDef(enumTypeDef); ModuleContext ctx = genCtx.get(module); ctx.addInnerTypedefType(enumTypeDef.getPath(), enumBuilder); return enumBuilder;
/** * Adds enumeration builder created from <code>enumTypeDef</code> to <code>typeBuilder</code>. Each * <code>enumTypeDef</code> item is added to builder with its name and value. * * @param enumTypeDef EnumTypeDefinition contains enum data * @param enumName string contains name which will be assigned to enumeration builder * @param typeBuilder GeneratedTypeBuilder to which will be enum builder assigned * @param module Module in which type should be generated * @return enumeration builder which contains data from <code>enumTypeDef</code> */ private EnumBuilder resolveInnerEnumFromTypeDefinition(final EnumTypeDefinition enumTypeDef, final QName enumName, final GeneratedTypeBuilder typeBuilder, final ModuleContext context) { if (enumTypeDef != null && typeBuilder != null && enumTypeDef.getQName().getLocalName() != null) { final EnumBuilder enumBuilder = typeBuilder.addEnumeration(BindingMapping.getClassName(enumName)); typeProvider.addEnumDescription(enumBuilder, enumTypeDef); enumBuilder.updateEnumPairsFromEnumTypeDef(enumTypeDef); context.addInnerTypedefType(enumTypeDef.getPath(), enumBuilder); return enumBuilder; } return null; }
final SchemaNode parentNode) { Preconditions.checkArgument(enumTypeDef != null, "EnumTypeDefinition reference cannot be NULL!"); Preconditions.checkArgument(enumTypeDef.getValues() != null, "EnumTypeDefinition MUST contain at least ONE value definition!"); Preconditions.checkArgument(enumTypeDef.getQName() != null, "EnumTypeDefinition MUST contain NON-NULL QName!"); Preconditions.checkArgument(enumTypeDef.getQName().getLocalName() != null, "Local Name in EnumTypeDefinition QName cannot be NULL!"); BindingMapping.getRootPackageName(module.getQNameModule()), BindingMapping.getClassName(enumName))); addEnumDescription(enumBuilder, enumTypeDef); enumTypeDef.getReference().ifPresent(enumBuilder::setReference); enumBuilder.setModuleName(module.getName()); enumBuilder.setSchemaPath(enumTypeDef.getPath()); enumBuilder.updateEnumPairsFromEnumTypeDef(enumTypeDef); return enumBuilder.toInstance(null);
final String enumName, final GeneratedTypeBuilderBase<?> typeBuilder) { Preconditions.checkArgument(enumTypeDef != null, "EnumTypeDefinition reference cannot be NULL!"); Preconditions.checkArgument(enumTypeDef.getValues() != null, "EnumTypeDefinition MUST contain at least ONE value definition!"); Preconditions.checkArgument(enumTypeDef.getQName() != null, "EnumTypeDefinition MUST contain NON-NULL QName!"); Preconditions.checkArgument(enumTypeDef.getQName().getLocalName() != null, "Local Name in EnumTypeDefinition QName cannot be NULL!"); Preconditions.checkArgument(typeBuilder != null, "Generated Type Builder reference cannot be NULL!");
private static void validateRestrictedEnum(final @NonNull EnumPair item, final @NonNull EnumTypeDefinition base) { boolean isASubsetOfBaseEnums = false; for (EnumPair baseTypeEnumPair : base.getValues()) { if (item.getName().equals(baseTypeEnumPair.getName())) { if (item.getValue() != baseTypeEnumPair.getValue()) { throw new InvalidEnumDefinitionException(item, "Value of enum '%s' must be the same as the value" + " of corresponding enum in the base enumeration type %s.", item.getName(), base.getQName()); } isASubsetOfBaseEnums = true; break; } } if (!isASubsetOfBaseEnums) { throw new InvalidEnumDefinitionException(item, "Enum '%s' is not a subset of its base enumeration type %s.", item.getName(), base.getQName()); } }
static int hashCode(final @NonNull EnumTypeDefinition type) { return Objects.hash(type.getPath(), type.getUnknownSchemaNodes(), type.getBaseType(), type.getUnits().orElse(null), type.getDefaultValue(), type.getValues()); }
private void emitEnumSpecification(final EnumTypeDefinition typeDefinition) { for (final EnumPair enumValue : typeDefinition.getValues()) { emitEnumNode(enumValue); } }
private static void validateRestrictedEnum(final @NonNull EnumPair item, final @NonNull EnumTypeDefinition base) { boolean isASubsetOfBaseEnums = false; for (EnumPair baseTypeEnumPair : base.getValues()) { if (item.getName().equals(baseTypeEnumPair.getName())) { if (item.getValue() != baseTypeEnumPair.getValue()) { throw new InvalidEnumDefinitionException(item, "Value of enum '%s' must be the same as the value" + " of corresponding enum in the base enumeration type %s.", item.getName(), base.getQName()); } isASubsetOfBaseEnums = true; break; } } if (!isASubsetOfBaseEnums) { throw new InvalidEnumDefinitionException(item, "Enum '%s' is not a subset of its base enumeration type %s.", item.getName(), base.getQName()); } }
@Override public List<EnumPair> getValues() { return baseType().getValues(); }
private EnumStringCodec(final Optional<EnumTypeDefinition> typeDef) { super(typeDef, String.class); if (typeDef.isPresent()) { final Builder<String, String> b = ImmutableMap.builder(); for (final EnumPair pair : typeDef.get().getValues()) { // Intern the String to get wide reuse final String v = pair.getName().intern(); b.put(v, v); } values = b.build(); } else { values = null; } }
@Override public List<EnumPair> getValues() { return baseType().getValues(); }
private EnumStringCodec(final Optional<EnumTypeDefinition> typeDef) { super(typeDef, String.class); if (typeDef.isPresent()) { final Builder<String, String> b = ImmutableMap.builder(); for (final EnumPair pair : typeDef.get().getValues()) { // Intern the String to get wide reuse final String v = pair.getName().intern(); b.put(v, v); } values = b.build(); } else { values = null; } }
private static int getEnumValue(final EnumTypeDefinition enumerationType, final String enumName) { for (final EnumTypeDefinition.EnumPair enumPair : enumerationType.getValues()) { if (enumName.equals(enumPair.getName())) { return enumPair.getValue(); } } throw new IllegalStateException(String.format("Enum %s does not belong to enumeration %s.", enumName, enumerationType)); }