private void checkDuplicateEnumConstantValues(Enum anEnum, List<EnumConstant> constants) { DynamicMessage.Value allowAlias = anEnum.getOptions().get(ALLOW_ALIAS); if (allowAlias != null && allowAlias.isBooleanType() && allowAlias.getBoolean()) { // skip this check if aliases are allowed return; } Map<Integer, EnumConstant> constantByValue = new HashMap<>(); for (EnumConstant constant : constants) { Integer value = constant.getValue(); if (constantByValue.containsKey(value)) { throw new ParserException(constant, "Duplicate enum constant value: %d", value); } constantByValue.put(value, constant); } }
private void checkDuplicateEnumConstantValues(Enum anEnum, List<EnumConstant> constants) { DynamicMessage.Value allowAlias = anEnum.getOptions().get(ALLOW_ALIAS); if (allowAlias != null && allowAlias.isBooleanType() && allowAlias.getBoolean()) { // skip this check if aliases are allowed return; } Map<Integer, EnumConstant> constantByValue = new HashMap<>(); for (EnumConstant constant : constants) { Integer value = constant.getValue(); if (constantByValue.containsKey(value)) { throw new ParserException(constant, "Duplicate enum constant value: %d", value); } constantByValue.put(value, constant); } }
private void process(Module module, Enum anEnum) { ImmutableEnumDescriptor descriptor = ImmutableEnumDescriptor.builder() .type(NodeType.ENUM) .name(anEnum.getName()) .canonicalName(anEnum.getCanonicalName()) .description(markdownProcessor.toHtml(anEnum.getComments())) .options(anEnum.getOptions().toMap()) .usages(module.usageIndex().getUsages(anEnum).stream() .map(type -> ImmutableUsageItem.builder() .ref(type.getCanonicalName()) .type(UsageType.from(type)) .build()) .collect(Collectors.toList())) .addAllConstants(anEnum.getConstants().stream() .map(enumConstant -> ImmutableEnumConstant.builder() .name(enumConstant.getName()) .value(enumConstant.getValue()) .description(markdownProcessor.toHtml(enumConstant.getComments())) .options(enumConstant.getOptions().toMap()) .build()) .collect(Collectors.toList())) .build(); String output = "data/type/" + anEnum.getCanonicalName() + ".json"; write(module, output, descriptor); } }
private void process(Module module, Enum anEnum) { ImmutableEnumDescriptor descriptor = ImmutableEnumDescriptor.builder() .type(NodeType.ENUM) .name(anEnum.getName()) .canonicalName(anEnum.getCanonicalName()) .description(markdownProcessor.toHtml(anEnum.getComments())) .options(anEnum.getOptions().toMap()) .usages(module.usageIndex().getUsages(anEnum).stream() .map(type -> ImmutableUsageItem.builder() .ref(type.getCanonicalName()) .type(UsageType.from(type)) .build()) .collect(Collectors.toList())) .addAllConstants(anEnum.getConstants().stream() .map(enumConstant -> ImmutableEnumConstant.builder() .name(enumConstant.getName()) .value(enumConstant.getValue()) .description(markdownProcessor.toHtml(enumConstant.getComments())) .options(enumConstant.getOptions().toMap()) .build()) .collect(Collectors.toList())) .build(); String output = "data/type/" + anEnum.getCanonicalName() + ".json"; write(module, output, descriptor); } }