import static java.util.Objects.requireNonNull;
import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
import java.util.Objects;
import java.util.Optional;
+import java.util.regex.Pattern;
import java.util.stream.Collectors;
+import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.mdsal.binding.model.api.ConcreteType;
import org.opendaylight.mdsal.binding.model.api.GeneratedProperty;
import org.opendaylight.mdsal.binding.model.api.GeneratedTransferObject;
import org.opendaylight.mdsal.binding.model.api.Restrictions;
import org.opendaylight.mdsal.binding.model.api.Type;
import org.opendaylight.mdsal.binding.model.util.Types;
+import org.opendaylight.yangtools.yang.binding.CodeHelpers;
/**
* Base Java file template. Contains a non-null type and imports which the generated code refers to.
*/
class JavaFileTemplate {
- static final JavaTypeName NONNULL = JavaTypeName.create("org.eclipse.jdt.annotation", "NonNull");
- static final JavaTypeName NULLABLE = JavaTypeName.create("org.eclipse.jdt.annotation", "Nullable");
- static final JavaTypeName DEPRECATED = JavaTypeName.create(Deprecated.class);
- static final JavaTypeName OVERRIDE = JavaTypeName.create(Override.class);
- static final JavaTypeName SUPPRESS_WARNINGS = JavaTypeName.create(SuppressWarnings.class);
+ /**
+ * {@code java.lang.Class} as a JavaTypeName.
+ */
+ static final @NonNull JavaTypeName CLASS = JavaTypeName.create(Class.class);
+ /**
+ * {@code java.lang.Deprecated} as a JavaTypeName.
+ */
+ static final @NonNull JavaTypeName DEPRECATED = JavaTypeName.create(Deprecated.class);
+ /**
+ * {@code java.lang.Override} as a JavaTypeName.
+ */
+ static final @NonNull JavaTypeName OVERRIDE = JavaTypeName.create(Override.class);
+
+ /**
+ * {@code java.lang.SuppressWarnings} as a JavaTypeName.
+ */
+ static final @NonNull JavaTypeName SUPPRESS_WARNINGS = JavaTypeName.create(SuppressWarnings.class);
+
+ /**
+ * {@code java.util.Arrays} as a JavaTypeName.
+ */
+ static final @NonNull JavaTypeName JU_ARRAYS = JavaTypeName.create(Arrays.class);
+ /**
+ * {@code java.util.List} as a JavaTypeName.
+ */
+ static final @NonNull JavaTypeName JU_LIST = JavaTypeName.create(List.class);
+ /**
+ * {@code java.util.Map} as a JavaTypeName.
+ */
+ static final @NonNull JavaTypeName JU_MAP = JavaTypeName.create(Map.class);
+ /**
+ * {@code java.util.Objects} as a JavaTypeName.
+ */
+ static final @NonNull JavaTypeName JU_OBJECTS = JavaTypeName.create(Objects.class);
+ /**
+ * {@code java.util.regex.Pattern} as a JavaTypeName.
+ */
+ static final @NonNull JavaTypeName JUR_PATTERN = JavaTypeName.create(Pattern.class);
+
+ /**
+ * {@code org.eclipse.jdt.annotation.NonNull} as a JavaTypeName.
+ */
+ static final @NonNull JavaTypeName NONNULL = JavaTypeName.create("org.eclipse.jdt.annotation", "NonNull");
+ /**
+ * {@code org.eclipse.jdt.annotation.Nullable} as a JavaTypeName.
+ */
+ static final @NonNull JavaTypeName NULLABLE = JavaTypeName.create("org.eclipse.jdt.annotation", "Nullable");
+
+ /**
+ * {@code org.opendaylight.yangtools.yang.binding.CodeHelpers} as a JavaTypeName.
+ */
+ static final @NonNull JavaTypeName CODEHELPERS = JavaTypeName.create(CodeHelpers.class);
private final AbstractJavaGeneratedType javaType;
private final GeneratedType type;
- JavaFileTemplate(final GeneratedType type) {
+ JavaFileTemplate(final @NonNull GeneratedType type) {
this(new TopLevelJavaGeneratedType(type), type);
}
.collect(Collectors.joining());
}
- final String importedJavadocName(final Type intype) {
+ final @NonNull String importedJavadocName(final @NonNull Type intype) {
return importedName(intype instanceof ParameterizedType ? ((ParameterizedType) intype).getRawType() : intype);
}
- final String importedName(final Type intype, final String... annotations) {
- return javaType.getReferenceString(intype, annotations);
+ final @NonNull String importedName(final @NonNull Type intype) {
+ return javaType.getReferenceString(intype);
+ }
+
+ final @NonNull String importedName(final @NonNull Type intype, final @NonNull String annotation) {
+ return javaType.getReferenceString(intype, annotation);
}
- final String importedName(final Class<?> cls) {
+ final @NonNull String importedName(final Class<?> cls) {
return importedName(Types.typeForClass(cls));
}
- final String importedName(final JavaTypeName intype) {
+ final @NonNull String importedName(final @NonNull JavaTypeName intype) {
return javaType.getReferenceString(intype);
}
- final String importedNonNull(final Type intype) {
+ final @NonNull String importedNonNull(final @NonNull Type intype) {
return importedName(intype, importedName(NONNULL));
}
- final String importedNullable(final Type intype) {
+ final @NonNull String importedNullable(final @NonNull Type intype) {
return importedName(intype, importedName(NULLABLE));
}
- final void addImport(final Class<?> cls) {
- javaType.getReferenceString(JavaTypeName.create(cls));
- }
-
// Exposed for BuilderTemplate
boolean isLocalInnerClass(final JavaTypeName name) {
final Optional<JavaTypeName> optEnc = name.immediatelyEnclosingClass();
* @return Imported class name
*/
final String importedUtilClass(final GeneratedProperty property) {
- return importedName(property.getReturnType().getName().indexOf('[') != -1 ? Arrays.class : Objects.class);
+ return importedName(property.getReturnType().getName().indexOf('[') != -1 ? JU_ARRAYS : JU_OBJECTS);
}
static final Restrictions restrictionsForSetter(final Type actualType) {