private static String getTypeName(EdmEnum enumAnno, Class<?> enumClass) { String name = enumAnno.name(); if (isNullOrEmpty(name)) { // Use class name if name is not specified in EdmEnum annotation name = enumClass.getSimpleName(); } return name; }
private static String getNamespace(EdmEnum enumAnno, Class<?> enumClass) { String namespace = enumAnno.namespace(); if (isNullOrEmpty(namespace)) { // Use package name if namespace is not specified in EdmEnum annotation namespace = enumClass.getPackage().getName(); } return namespace; }
public EnumType build(Class<?> cls) { EdmEnum enumAnno = cls.getAnnotation(EdmEnum.class); boolean isFlags = enumAnno.flags(); // NOTE: Values are generated automatically. If isFlags is false, then consecutive integer values starting // from 0 are used (0, 1, 2, ...). If isFlags is true, then consecutive bits are used (1, 2, 4, 8, ...). List<EnumMember> members = new ArrayList<>(); long value = isFlags ? 1L : 0L; for (Field field : cls.getDeclaredFields()) { if (field.isEnumConstant()) { members.add(new EnumMemberImpl(field.getName(), value)); if (isFlags) { value <<= 1; } else { value++; } } } return new EnumTypeImpl.Builder() .setName(getTypeName(enumAnno, cls)) .setNamespace(getNamespace(enumAnno, cls)) .setJavaType(cls) .setUnderlyingType(enumAnno.underlyingType()) .setIsFlags(isFlags) .addMembers(members) .build(); }
public EnumType build(Class<?> cls) { EdmEnum enumAnno = cls.getAnnotation(EdmEnum.class); boolean isFlags = enumAnno.flags(); // NOTE: Values are generated automatically. If isFlags is false, then consecutive integer values starting // from 0 are used (0, 1, 2, ...). If isFlags is true, then consecutive bits are used (1, 2, 4, 8, ...). List<EnumMember> members = new ArrayList<>(); long value = isFlags ? 1L : 0L; for (Field field : cls.getDeclaredFields()) { if (field.isEnumConstant()) { members.add(new EnumMemberImpl(field.getName(), value)); if (isFlags) { value <<= 1; } else { value++; } } } return new EnumTypeImpl.Builder() .setName(getTypeName(enumAnno, cls)) .setNamespace(getNamespace(enumAnno, cls)) .setJavaType(cls) .setUnderlyingType(enumAnno.underlyingType()) .setIsFlags(isFlags) .addMembers(members) .build(); }
private static String getNamespace(EdmEnum enumAnno, Class<?> enumClass) { String namespace = enumAnno.namespace(); if (isNullOrEmpty(namespace)) { // Use package name if namespace is not specified in EdmEnum annotation namespace = enumClass.getPackage().getName(); } return namespace; }
private static String getTypeName(EdmEnum enumAnno, Class<?> enumClass) { String name = enumAnno.name(); if (isNullOrEmpty(name)) { // Use class name if name is not specified in EdmEnum annotation name = enumClass.getSimpleName(); } return name; }