package org.opendaylight.mdsal.binding.javav2.generator.util.generated.type.builder;
import com.google.common.annotations.Beta;
+import com.google.common.base.Preconditions;
import java.util.List;
import java.util.Optional;
-import com.google.common.base.Preconditions;
-import org.opendaylight.mdsal.binding.javav2.generator.util.JavaIdentifierNormalizer;
+import org.opendaylight.mdsal.binding.javav2.generator.context.ModuleContext;
+import org.opendaylight.mdsal.binding.javav2.generator.util.BindingGeneratorUtil;
import org.opendaylight.mdsal.binding.javav2.model.api.GeneratedType;
import org.opendaylight.mdsal.binding.javav2.model.api.GeneratedTypeForBuilder;
+import org.opendaylight.mdsal.binding.javav2.model.api.TypeComment;
import org.opendaylight.mdsal.binding.javav2.model.api.type.builder.GeneratedTypeBuilder;
import org.opendaylight.mdsal.binding.javav2.spec.runtime.BindingNamespaceType;
import org.opendaylight.yangtools.yang.common.QName;
private String reference;
private String moduleName;
private List<QName> schemaPath;
+ private boolean isWithBuilder = false;
+ private String basePackageName = null;
- public GeneratedTypeBuilderImpl(final String packageName, final String name) {
- super(packageName, name);
+ public GeneratedTypeBuilderImpl(final String packageName, final String name, ModuleContext context) {
+ super(packageName, name, context);
setAbstract(true);
}
- public GeneratedTypeBuilderImpl(final String packageName, final String name,
- final boolean isPkNameNormalized,
- final boolean isTypeNormalized) {
- super(packageName, name, isPkNameNormalized, isTypeNormalized);
+ public GeneratedTypeBuilderImpl(final String packageName, final String name, final boolean isPkNameNormalized,
+ final boolean isTypeNormalized, ModuleContext context) {
+ super(packageName, name, isPkNameNormalized, isTypeNormalized, context);
setAbstract(true);
}
@Override
public GeneratedType toInstance() {
- if (this.isDataObjectType()) {
+ if (this.isWithBuilder()) {
return new GeneratedTypeWithBuilderImpl(this);
} else {
return new GeneratedTypeImpl(this);
builder.append(getPackageName());
builder.append(", name=");
builder.append(getName());
- builder.append(", comment=");
- builder.append(getComment());
+ final TypeComment comment = getComment();
+ if (comment != null) {
+ builder.append(", comment=");
+ builder.append(comment.getJavadoc());
+ }
builder.append(", annotations=");
builder.append(getAnnotations());
builder.append(", implements=");
return this;
}
+ public boolean isWithBuilder() {
+ return isWithBuilder;
+ }
+
+ public void setWithBuilder(boolean withBuilder) {
+ isWithBuilder = withBuilder;
+ }
+
+ public String getBasePackageName() {
+ return basePackageName;
+ }
+
+ public void setBasePackageName(String basePackageName) {
+ this.basePackageName = basePackageName;
+ }
+
private static class GeneratedTypeImpl extends AbstractGeneratedType {
private final String description;
public GeneratedTypeWithBuilderImpl(GeneratedTypeBuilderImpl builder) {
super(builder);
+ Preconditions.checkState(builder.getBasePackageName() != null,
+ "Base package name can not be null for type with builder!");
this.basePackageName = builder.getBasePackageName();
this.builderPackageName = generatePackageNameForBuilder();
}
private String generatePackageNameForBuilder() {
- Preconditions.checkArgument(this.basePackageName != null);
- String normalizeBasePackageName = JavaIdentifierNormalizer.normalizeFullPackageName(this.basePackageName);
-
- if (!normalizeBasePackageName.equals(this.getPackageName())) {
- final String baseName = new StringBuilder(normalizeBasePackageName)
- .append(".").append(BindingNamespaceType.Data.getPackagePrefix()).toString();
-
- Preconditions.checkState(this.getPackageName().contains(baseName),
- "Package name does not contain base name!");
-
- return new StringBuilder(normalizeBasePackageName)
- .append(".")
- .append(BindingNamespaceType.Builder.getPackagePrefix())
- .append(this.getPackageName().substring(baseName.length()))
- .toString();
- } else {
- return new StringBuilder(normalizeBasePackageName)
- .append(".").append(BindingNamespaceType.Builder.getPackagePrefix()).toString();
- }
+ return BindingGeneratorUtil.replacePackageTopNamespace(this.basePackageName, this.getPackageName(),
+ BindingNamespaceType.Data, BindingNamespaceType.Builder);
}
@Override
public String getPackageNameForBuilder() {
return this.builderPackageName;
}
+
+ @Override
+ public String getBasePackageName() {
+ return this.basePackageName;
+ }
}
}