import java.util.HashSet;
import java.util.Map;
import java.util.Set;
+import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable;
import org.opendaylight.mdsal.binding.model.api.Enumeration;
enclosedTypes = b.build();
final Set<String> cb = new HashSet<>();
- if (genType instanceof Enumeration) {
- ((Enumeration) genType).getValues().stream().map(Pair::getMappedName).forEach(cb::add);
+ if (genType instanceof Enumeration enumeration) {
+ enumeration.getValues().stream().map(Pair::getMappedName).forEach(cb::add);
}
// TODO: perhaps we can do something smarter to actually access the types
collectAccessibleTypes(cb, genType);
private void collectAccessibleTypes(final Set<String> set, final GeneratedType type) {
for (Type impl : type.getImplements()) {
- if (impl instanceof GeneratedType) {
- final GeneratedType genType = (GeneratedType) impl;
+ if (impl instanceof GeneratedType genType) {
for (GeneratedType inner : Iterables.concat(genType.getEnclosedTypes(), genType.getEnumerations())) {
set.add(inner.getIdentifier().simpleName());
}
return name.simpleName();
}
+ private String annotateReference(final String ref, final Type type, final String annotation) {
+ if (type instanceof ParameterizedType parameterized) {
+ return getReferenceString(annotate(ref, annotation), type, parameterized.getActualTypeArguments());
+ }
+ return "byte[]".equals(ref) ? "byte @" + annotation + "[]" : annotate(ref, annotation).toString();
+ }
+
+ final String getFullyQualifiedReference(final Type type, final String annotation) {
+ return annotateReference(type.getFullyQualifiedName(), type ,annotation);
+ }
+
final String getReferenceString(final Type type) {
final String ref = getReferenceString(type.getIdentifier());
- return type instanceof ParameterizedType ? getReferenceString(new StringBuilder(ref), type,
- ((ParameterizedType) type).getActualTypeArguments())
+ return type instanceof ParameterizedType parameterized
+ ? getReferenceString(new StringBuilder(ref), type, parameterized.getActualTypeArguments())
: ref;
}
- final String getReferenceString(final Type type, final String... annotations) {
+ final String getReferenceString(final Type type, final String annotation) {
// Package-private method, all callers who would be passing an empty array are bound to the more special
// case above, hence we know annotations.length >= 1
final String ref = getReferenceString(type.getIdentifier());
- return type instanceof ParameterizedType ? getReferenceString(annotate(ref, annotations), type,
- ((ParameterizedType) type).getActualTypeArguments())
- : annotate(ref, annotations).toString();
+ return annotateReference(ref, type, annotation);
}
- private String getReferenceString(final StringBuilder sb, final Type type, final Type[] arguments) {
+ private String getReferenceString(final StringBuilder sb, final Type type, final @NonNull Type[] arguments) {
if (arguments.length == 0) {
return sb.append("<?>").toString();
}
return checkAndImportType(type.topLevelClass()) ? type.localName() : type.toString();
}
- private static StringBuilder annotate(final String ref, final String... annotations) {
+ private static StringBuilder annotate(final String ref, final String annotation) {
final StringBuilder sb = new StringBuilder();
final int dot = ref.lastIndexOf('.');
if (dot != -1) {
sb.append(ref, 0, dot + 1);
}
- for (String annotation : annotations) {
- sb.append('@').append(annotation).append(' ');
- }
-
- return sb.append(ref, dot + 1, ref.length());
+ return sb.append('@').append(annotation).append(' ').append(ref, dot + 1, ref.length());
}
}