-/*\r
- * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.\r
- *\r
- * This program and the accompanying materials are made available under the\r
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
- * and is available at http://www.eclipse.org/legal/epl-v10.html\r
- */\r
-package org.opendaylight.controller.sal.binding.generator.impl;\r
-\r
-import java.util.ArrayList;\r
-import java.util.Arrays;\r
-import java.util.Collections;\r
-import java.util.HashSet;\r
-import java.util.List;\r
-import java.util.Set;\r
-\r
-import org.opendaylight.controller.sal.binding.model.api.AccessModifier;\r
-import org.opendaylight.controller.sal.binding.model.api.Constant;\r
-import org.opendaylight.controller.sal.binding.model.api.Enumeration;\r
-import org.opendaylight.controller.sal.binding.model.api.GeneratedProperty;\r
-import org.opendaylight.controller.sal.binding.model.api.GeneratedTransferObject;\r
-import org.opendaylight.controller.sal.binding.model.api.MethodSignature;\r
-import org.opendaylight.controller.sal.binding.model.api.Type;\r
-import org.opendaylight.controller.sal.binding.model.api.type.builder.ConstantBuilder;\r
-import org.opendaylight.controller.sal.binding.model.api.type.builder.EnumBuilder;\r
-import org.opendaylight.controller.sal.binding.model.api.type.builder.GeneratedPropertyBuilder;\r
-import org.opendaylight.controller.sal.binding.model.api.type.builder.GeneratedTOBuilder;\r
-\r
-final class GeneratedTOBuilderImpl implements GeneratedTOBuilder {\r
- \r
- private static final String[] SET_VALUES = new String[] { "abstract",\r
- "assert", "boolean", "break", "byte", "case", "catch", "char",\r
- "class", "const", "continue", "default", "double", "do", "else",\r
- "enum", "extends", "false", "final", "finally", "float", "for",\r
- "goto", "if", "implements", "import", "instanceof", "int",\r
- "interface", "long", "native", "new", "null", "package", "private",\r
- "protected", "public", "return", "short", "static", "strictfp",\r
- "super", "switch", "synchronized", "this", "throw", "throws",\r
- "transient", "true", "try", "void", "volatile", "while" };\r
-\r
- public static final Set<String> JAVA_RESERVED_WORDS = new HashSet<String>(\r
- Arrays.asList(SET_VALUES));\r
- \r
- private String packageName;\r
- private final String name;\r
-\r
- private final List<EnumBuilder> enumerations = new ArrayList<EnumBuilder>();\r
- private final List<GeneratedPropertyBuilder> properties = new ArrayList<GeneratedPropertyBuilder>();\r
- private final List<GeneratedPropertyBuilder> equalsProperties = new ArrayList<GeneratedPropertyBuilder>();\r
- private final List<GeneratedPropertyBuilder> hashProperties = new ArrayList<GeneratedPropertyBuilder>();\r
- private final List<GeneratedPropertyBuilder> toStringProperties = new ArrayList<GeneratedPropertyBuilder>();\r
-\r
- public GeneratedTOBuilderImpl(String packageName, String name) {\r
- super();\r
- this.packageName = GeneratedTypeBuilderImpl.validatePackage(packageName);\r
- this.name = name;\r
- }\r
- \r
- @Override\r
- public String getPackageName() {\r
- return packageName;\r
- }\r
-\r
- @Override\r
- public String getName() {\r
- return name;\r
- }\r
- \r
- @Override\r
- public EnumBuilder addEnumeration(String name) {\r
- final EnumBuilder builder = new EnumerationBuilderImpl(packageName,\r
- name);\r
- enumerations.add(builder);\r
- return builder;\r
- }\r
-\r
- @Override\r
- public GeneratedPropertyBuilder addProperty(String name) {\r
- final GeneratedPropertyBuilder builder = new GeneratedPropertyBuilderImpl(\r
- name);\r
- properties.add(builder);\r
- return builder;\r
- }\r
-\r
- @Override\r
- public boolean addEqualsIdentity(GeneratedPropertyBuilder property) {\r
- return equalsProperties.add(property);\r
- }\r
-\r
- @Override\r
- public boolean addHashIdentity(GeneratedPropertyBuilder property) {\r
- return hashProperties.add(property);\r
- }\r
-\r
- @Override\r
- public boolean addToStringProperty(GeneratedPropertyBuilder property) {\r
- return toStringProperties.add(property);\r
- }\r
-\r
- @Override\r
- public GeneratedTransferObject toInstance() {\r
- \r
- return new GeneratedTransferObjectImpl(packageName, name, enumerations,\r
- properties, equalsProperties, hashProperties,\r
- toStringProperties);\r
- }\r
-\r
- private static final class GeneratedPropertyBuilderImpl implements\r
- GeneratedPropertyBuilder {\r
-\r
- private final String name;\r
- private Type returnType;\r
- private final List<MethodSignature.Parameter> parameters;\r
- private String comment = "";\r
- private AccessModifier accessModifier;\r
- private boolean isFinal;\r
- private boolean isReadOnly;\r
-\r
- public GeneratedPropertyBuilderImpl(final String name) {\r
- super();\r
- this.name = name;\r
- parameters = new ArrayList<MethodSignature.Parameter>();\r
- isFinal = true;\r
- this.isReadOnly = true;\r
- accessModifier = AccessModifier.PUBLIC;\r
- }\r
-\r
- public String getName() {\r
- return name;\r
- }\r
-\r
- @Override\r
- public boolean addReturnType(Type returnType) {\r
- if (returnType != null) {\r
- this.returnType = returnType;\r
- this.parameters.add(new MethodParameterImpl(name, returnType));\r
- return true;\r
- }\r
- return false;\r
- }\r
-\r
- @Override\r
- public void accessorModifier(final AccessModifier modifier) {\r
- accessModifier = modifier;\r
- }\r
-\r
- @Override\r
- public void addComment(String comment) {\r
- if (comment != null) {\r
- this.comment = comment;\r
- }\r
- }\r
-\r
- @Override\r
- public void setFinal(boolean isFinal) {\r
- this.isFinal = isFinal;\r
- }\r
-\r
- @Override\r
- public void setReadOnly(boolean isReadOnly) {\r
- this.isReadOnly = isReadOnly;\r
- }\r
-\r
- @Override\r
- public GeneratedProperty toInstance(final Type definingType) {\r
- return new GeneratedPropertyImpl(name, comment, definingType,\r
- returnType, isFinal, isReadOnly, parameters, accessModifier);\r
- }\r
- }\r
-\r
- private static final class GeneratedPropertyImpl implements\r
- GeneratedProperty {\r
-\r
- private final String name;\r
- private final String comment;\r
- private final Type parent;\r
- private final Type returnType;\r
- private final boolean isFinal;\r
- private final boolean isReadOnly;\r
- private final List<MethodSignature.Parameter> parameters;\r
- private final AccessModifier modifier;\r
-\r
- public GeneratedPropertyImpl(final String name, final String comment,\r
- final Type parent, final Type returnType,\r
- final boolean isFinal, final boolean isReadOnly,\r
- final List<Parameter> parameters, final AccessModifier modifier) {\r
- super();\r
- this.name = name;\r
- this.comment = comment;\r
- this.parent = parent;\r
- this.returnType = returnType;\r
- this.isFinal = isFinal;\r
- this.isReadOnly = isReadOnly;\r
- this.parameters = Collections.unmodifiableList(parameters);\r
- this.modifier = modifier;\r
- }\r
-\r
- @Override\r
- public String getName() {\r
- return name;\r
- }\r
-\r
- @Override\r
- public String getComment() {\r
- return comment;\r
- }\r
-\r
- @Override\r
- public Type getDefiningType() {\r
- return parent;\r
- }\r
-\r
- @Override\r
- public Type getReturnType() {\r
- return returnType;\r
- }\r
-\r
- @Override\r
- public List<Parameter> getParameters() {\r
- return parameters;\r
- }\r
-\r
- @Override\r
- public AccessModifier getAccessModifier() {\r
- return modifier;\r
- }\r
-\r
- @Override\r
- public boolean isReadOnly() {\r
- return isReadOnly;\r
- }\r
-\r
- @Override\r
- public boolean isFinal() {\r
- return isFinal;\r
- }\r
-\r
- @Override\r
- public int hashCode() {\r
- final int prime = 31;\r
- int result = 1;\r
- result = prime * result\r
- + ((comment == null) ? 0 : comment.hashCode());\r
- result = prime * result + (isFinal ? 1231 : 1237);\r
- result = prime * result + (isReadOnly ? 1231 : 1237);\r
- result = prime * result\r
- + ((modifier == null) ? 0 : modifier.hashCode());\r
- result = prime * result + ((name == null) ? 0 : name.hashCode());\r
- result = prime * result\r
- + ((parameters == null) ? 0 : parameters.hashCode());\r
-\r
- if (parent != null) {\r
- result = prime\r
- * result\r
- + ((parent.getPackageName() == null) ? 0 : parent\r
- .getPackageName().hashCode());\r
- result = prime\r
- * result\r
- + ((parent.getName() == null) ? 0 : parent.getName()\r
- .hashCode());\r
- }\r
-\r
- result = prime * result\r
- + ((returnType == null) ? 0 : returnType.hashCode());\r
- return result;\r
- }\r
-\r
- @Override\r
- public boolean equals(Object obj) {\r
- if (this == obj) {\r
- return true;\r
- }\r
- if (obj == null) {\r
- return false;\r
- }\r
- if (getClass() != obj.getClass()) {\r
- return false;\r
- }\r
- GeneratedPropertyImpl other = (GeneratedPropertyImpl) obj;\r
- if (comment == null) {\r
- if (other.comment != null) {\r
- return false;\r
- }\r
- } else if (!comment.equals(other.comment)) {\r
- return false;\r
- }\r
- if (isFinal != other.isFinal) {\r
- return false;\r
- }\r
- if (isReadOnly != other.isReadOnly) {\r
- return false;\r
- }\r
- if (modifier != other.modifier) {\r
- return false;\r
- }\r
- if (name == null) {\r
- if (other.name != null) {\r
- return false;\r
- }\r
- } else if (!name.equals(other.name)) {\r
- return false;\r
- }\r
- if (parameters == null) {\r
- if (other.parameters != null) {\r
- return false;\r
- }\r
- } else if (!parameters.equals(other.parameters)) {\r
- return false;\r
- }\r
- if (parent == null) {\r
- if (other.parent != null) {\r
- return false;\r
- }\r
- } else if ((parent != null) && (other.parent != null)) {\r
- if (!parent.getPackageName().equals(\r
- other.parent.getPackageName())\r
- && !parent.getName().equals(other.parent.getName())) {\r
- return false;\r
- }\r
- }\r
- if (returnType == null) {\r
- if (other.returnType != null) {\r
- return false;\r
- }\r
- } else if (!returnType.equals(other.returnType)) {\r
- return false;\r
- }\r
- return true;\r
- }\r
-\r
- @Override\r
- public String toString() {\r
- StringBuilder builder = new StringBuilder();\r
- builder.append("GeneratedPropertyImpl [name=");\r
- builder.append(name);\r
- builder.append(", comment=");\r
- builder.append(comment);\r
- if (parent != null) {\r
- builder.append(", parent=");\r
- builder.append(parent.getPackageName());\r
- builder.append(".");\r
- builder.append(parent.getName());\r
- } else {\r
- builder.append(", parent= null");\r
- }\r
- builder.append(", returnType=");\r
- builder.append(returnType);\r
- builder.append(", isFinal=");\r
- builder.append(isFinal);\r
- builder.append(", isReadOnly=");\r
- builder.append(isReadOnly);\r
- builder.append(", parameters=");\r
- builder.append(parameters);\r
- builder.append(", modifier=");\r
- builder.append(modifier);\r
- builder.append("]");\r
- return builder.toString();\r
- }\r
- }\r
-\r
- private static final class GeneratedTransferObjectImpl implements\r
- GeneratedTransferObject {\r
-\r
- private final String packageName;\r
- private final String name;\r
- // private final List<Constant> constants;\r
- private final List<Enumeration> enumerations;\r
- private final List<GeneratedProperty> properties;\r
- private final List<GeneratedProperty> equalsProperties;\r
- private final List<GeneratedProperty> hashCodeProperties;\r
- private final List<GeneratedProperty> stringProperties;\r
-\r
- private List<Enumeration> toUnmodifiableEnumerations(\r
- final List<EnumBuilder> enumBuilders) {\r
- final List<Enumeration> enumerations = new ArrayList<Enumeration>();\r
- for (final EnumBuilder builder : enumBuilders) {\r
- enumerations.add(builder.toInstance(this));\r
- }\r
- return Collections.unmodifiableList(enumerations);\r
- }\r
-\r
- private List<Constant> toUnmodifiableConstant(\r
- final List<ConstantBuilder> constBuilders) {\r
- final List<Constant> constants = new ArrayList<Constant>();\r
- for (final ConstantBuilder builder : constBuilders) {\r
- constants.add(builder.toInstance(this));\r
- }\r
- return Collections.unmodifiableList(constants);\r
- }\r
-\r
- private List<GeneratedProperty> toUnmodifiableProperties(\r
- final List<GeneratedPropertyBuilder> propBuilders) {\r
- final List<GeneratedProperty> constants = new ArrayList<GeneratedProperty>();\r
- for (final GeneratedPropertyBuilder builder : propBuilders) {\r
- constants.add(builder.toInstance(this));\r
- }\r
- return Collections.unmodifiableList(constants);\r
- }\r
-\r
- public GeneratedTransferObjectImpl(String packageName, String name,\r
- List<EnumBuilder> enumBuilders,\r
- List<GeneratedPropertyBuilder> propBuilers,\r
- List<GeneratedPropertyBuilder> equalsBuilers,\r
- List<GeneratedPropertyBuilder> hashCodeBuilers,\r
- List<GeneratedPropertyBuilder> stringBuilers) {\r
- super();\r
- this.packageName = packageName;\r
- this.name = name;\r
- this.enumerations = toUnmodifiableEnumerations(enumBuilders);\r
- this.properties = toUnmodifiableProperties(propBuilers);\r
- this.equalsProperties = toUnmodifiableProperties(equalsBuilers);\r
- this.hashCodeProperties = toUnmodifiableProperties(hashCodeBuilers);\r
- this.stringProperties = toUnmodifiableProperties(stringBuilers);\r
- }\r
-\r
- @Override\r
- public String getPackageName() {\r
- return packageName;\r
- }\r
-\r
- @Override\r
- public String getName() {\r
- return name;\r
- }\r
-\r
- @Override\r
- public List<Enumeration> getEnumDefintions() {\r
- return enumerations;\r
- }\r
-\r
- @Override\r
- public List<GeneratedProperty> getProperties() {\r
- return properties;\r
- }\r
-\r
- @Override\r
- public List<GeneratedProperty> getEqualsIdentifiers() {\r
- return equalsProperties;\r
- }\r
-\r
- @Override\r
- public List<GeneratedProperty> getHashCodeIdentifiers() {\r
- return hashCodeProperties;\r
- }\r
-\r
- @Override\r
- public List<GeneratedProperty> getToStringIdentifiers() {\r
- return stringProperties;\r
- }\r
-\r
- /*\r
- * (non-Javadoc)\r
- * \r
- * @see java.lang.Object#hashCode()\r
- */\r
- @Override\r
- public int hashCode() {\r
- final int prime = 31;\r
- int result = 1;\r
- result = prime * result\r
- + ((enumerations == null) ? 0 : enumerations.hashCode());\r
- result = prime\r
- * result\r
- + ((equalsProperties == null) ? 0 : equalsProperties\r
- .hashCode());\r
- result = prime\r
- * result\r
- + ((hashCodeProperties == null) ? 0 : hashCodeProperties\r
- .hashCode());\r
- result = prime * result + ((name == null) ? 0 : name.hashCode());\r
- result = prime * result\r
- + ((packageName == null) ? 0 : packageName.hashCode());\r
- result = prime * result\r
- + ((properties == null) ? 0 : properties.hashCode());\r
- result = prime\r
- * result\r
- + ((stringProperties == null) ? 0 : stringProperties\r
- .hashCode());\r
- return result;\r
- }\r
-\r
- /*\r
- * (non-Javadoc)\r
- * \r
- * @see java.lang.Object#equals(java.lang.Object)\r
- */\r
- @Override\r
- public boolean equals(Object obj) {\r
- if (this == obj) {\r
- return true;\r
- }\r
- if (obj == null) {\r
- return false;\r
- }\r
- if (getClass() != obj.getClass()) {\r
- return false;\r
- }\r
- GeneratedTransferObjectImpl other = (GeneratedTransferObjectImpl) obj;\r
- if (enumerations == null) {\r
- if (other.enumerations != null) {\r
- return false;\r
- }\r
- } else if (!enumerations.equals(other.enumerations)) {\r
- return false;\r
- }\r
- if (equalsProperties == null) {\r
- if (other.equalsProperties != null) {\r
- return false;\r
- }\r
- } else if (!equalsProperties.equals(other.equalsProperties)) {\r
- return false;\r
- }\r
- if (hashCodeProperties == null) {\r
- if (other.hashCodeProperties != null) {\r
- return false;\r
- }\r
- } else if (!hashCodeProperties.equals(other.hashCodeProperties)) {\r
- return false;\r
- }\r
- if (name == null) {\r
- if (other.name != null) {\r
- return false;\r
- }\r
- } else if (!name.equals(other.name)) {\r
- return false;\r
- }\r
- if (packageName == null) {\r
- if (other.packageName != null) {\r
- return false;\r
- }\r
- } else if (!packageName.equals(other.packageName)) {\r
- return false;\r
- }\r
- if (properties == null) {\r
- if (other.properties != null) {\r
- return false;\r
- }\r
- } else if (!properties.equals(other.properties)) {\r
- return false;\r
- }\r
- if (stringProperties == null) {\r
- if (other.stringProperties != null) {\r
- return false;\r
- }\r
- } else if (!stringProperties.equals(other.stringProperties)) {\r
- return false;\r
- }\r
- return true;\r
- }\r
-\r
- /*\r
- * (non-Javadoc)\r
- * \r
- * @see java.lang.Object#toString()\r
- */\r
- @Override\r
- public String toString() {\r
- StringBuilder builder = new StringBuilder();\r
- builder.append("GeneratedTransferObjectImpl [packageName=");\r
- builder.append(packageName);\r
- builder.append(", name=");\r
- builder.append(name);\r
- builder.append(", enumerations=");\r
- builder.append(enumerations);\r
- builder.append(", properties=");\r
- builder.append(properties);\r
- builder.append(", equalsProperties=");\r
- builder.append(equalsProperties);\r
- builder.append(", hashCodeProperties=");\r
- builder.append(hashCodeProperties);\r
- builder.append(", stringProperties=");\r
- builder.append(stringProperties);\r
- builder.append("]");\r
- return builder.toString();\r
- }\r
- }\r
-}\r
+/*
+ * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.controller.sal.binding.generator.impl;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.opendaylight.controller.sal.binding.model.api.AccessModifier;
+import org.opendaylight.controller.sal.binding.model.api.Constant;
+import org.opendaylight.controller.sal.binding.model.api.Enumeration;
+import org.opendaylight.controller.sal.binding.model.api.GeneratedProperty;
+import org.opendaylight.controller.sal.binding.model.api.GeneratedTransferObject;
+import org.opendaylight.controller.sal.binding.model.api.MethodSignature;
+import org.opendaylight.controller.sal.binding.model.api.Type;
+import org.opendaylight.controller.sal.binding.model.api.type.builder.ConstantBuilder;
+import org.opendaylight.controller.sal.binding.model.api.type.builder.EnumBuilder;
+import org.opendaylight.controller.sal.binding.model.api.type.builder.GeneratedPropertyBuilder;
+import org.opendaylight.controller.sal.binding.model.api.type.builder.GeneratedTOBuilder;
+
+final class GeneratedTOBuilderImpl implements GeneratedTOBuilder {
+ private String packageName;
+ private final String name;
+
+ private final List<EnumBuilder> enumerations = new ArrayList<EnumBuilder>();
+ private final List<GeneratedPropertyBuilder> properties = new ArrayList<GeneratedPropertyBuilder>();
+ private final List<GeneratedPropertyBuilder> equalsProperties = new ArrayList<GeneratedPropertyBuilder>();
+ private final List<GeneratedPropertyBuilder> hashProperties = new ArrayList<GeneratedPropertyBuilder>();
+ private final List<GeneratedPropertyBuilder> toStringProperties = new ArrayList<GeneratedPropertyBuilder>();
+
+ public GeneratedTOBuilderImpl(String packageName, String name) {
+ super();
+ this.packageName = packageName;
+ this.name = name;
+ }
+
+ @Override
+ public String getPackageName() {
+ return packageName;
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public EnumBuilder addEnumeration(String name) {
+ final EnumBuilder builder = new EnumerationBuilderImpl(packageName,
+ name);
+ enumerations.add(builder);
+ return builder;
+ }
+
+ @Override
+ public GeneratedPropertyBuilder addProperty(String name) {
+ final GeneratedPropertyBuilder builder = new GeneratedPropertyBuilderImpl(
+ name);
+ properties.add(builder);
+ return builder;
+ }
+
+ @Override
+ public boolean addEqualsIdentity(GeneratedPropertyBuilder property) {
+ return equalsProperties.add(property);
+ }
+
+ @Override
+ public boolean addHashIdentity(GeneratedPropertyBuilder property) {
+ return hashProperties.add(property);
+ }
+
+ @Override
+ public boolean addToStringProperty(GeneratedPropertyBuilder property) {
+ return toStringProperties.add(property);
+ }
+
+ @Override
+ public GeneratedTransferObject toInstance() {
+ return new GeneratedTransferObjectImpl(packageName, name, enumerations,
+ properties, equalsProperties, hashProperties,
+ toStringProperties);
+ }
+
+ private static final class GeneratedPropertyBuilderImpl implements
+ GeneratedPropertyBuilder {
+
+ private final String name;
+ private Type returnType;
+ private final List<MethodSignature.Parameter> parameters;
+ private String comment = "";
+ private AccessModifier accessModifier;
+ private boolean isFinal;
+ private boolean isReadOnly;
+
+ public GeneratedPropertyBuilderImpl(final String name) {
+ super();
+ this.name = name;
+ parameters = new ArrayList<MethodSignature.Parameter>();
+ isFinal = true;
+ this.isReadOnly = true;
+ accessModifier = AccessModifier.PUBLIC;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public boolean addReturnType(Type returnType) {
+ if (returnType != null) {
+ this.returnType = returnType;
+ this.parameters.add(new MethodParameterImpl(name, returnType));
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public void accessorModifier(final AccessModifier modifier) {
+ accessModifier = modifier;
+ }
+
+ @Override
+ public void addComment(String comment) {
+ if (comment != null) {
+ this.comment = comment;
+ }
+ }
+
+ @Override
+ public void setFinal(boolean isFinal) {
+ this.isFinal = isFinal;
+ }
+
+ @Override
+ public void setReadOnly(boolean isReadOnly) {
+ this.isReadOnly = isReadOnly;
+ }
+
+ @Override
+ public GeneratedProperty toInstance(final Type definingType) {
+ return new GeneratedPropertyImpl(name, comment, definingType,
+ returnType, isFinal, isReadOnly, parameters, accessModifier);
+ }
+ }
+
+ private static final class GeneratedPropertyImpl implements
+ GeneratedProperty {
+
+ private final String name;
+ private final String comment;
+ private final Type parent;
+ private final Type returnType;
+ private final boolean isFinal;
+ private final boolean isReadOnly;
+ private final List<MethodSignature.Parameter> parameters;
+ private final AccessModifier modifier;
+
+ public GeneratedPropertyImpl(final String name, final String comment,
+ final Type parent, final Type returnType,
+ final boolean isFinal, final boolean isReadOnly,
+ final List<Parameter> parameters, final AccessModifier modifier) {
+ super();
+ this.name = name;
+ this.comment = comment;
+ this.parent = parent;
+ this.returnType = returnType;
+ this.isFinal = isFinal;
+ this.isReadOnly = isReadOnly;
+ this.parameters = Collections.unmodifiableList(parameters);
+ this.modifier = modifier;
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public String getComment() {
+ return comment;
+ }
+
+ @Override
+ public Type getDefiningType() {
+ return parent;
+ }
+
+ @Override
+ public Type getReturnType() {
+ return returnType;
+ }
+
+ @Override
+ public List<Parameter> getParameters() {
+ return parameters;
+ }
+
+ @Override
+ public AccessModifier getAccessModifier() {
+ return modifier;
+ }
+
+ @Override
+ public boolean isReadOnly() {
+ return isReadOnly;
+ }
+
+ @Override
+ public boolean isFinal() {
+ return isFinal;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result
+ + ((comment == null) ? 0 : comment.hashCode());
+ result = prime * result + (isFinal ? 1231 : 1237);
+ result = prime * result + (isReadOnly ? 1231 : 1237);
+ result = prime * result
+ + ((modifier == null) ? 0 : modifier.hashCode());
+ result = prime * result + ((name == null) ? 0 : name.hashCode());
+ result = prime * result
+ + ((parameters == null) ? 0 : parameters.hashCode());
+
+ if (parent != null) {
+ result = prime
+ * result
+ + ((parent.getPackageName() == null) ? 0 : parent
+ .getPackageName().hashCode());
+ result = prime
+ * result
+ + ((parent.getName() == null) ? 0 : parent.getName()
+ .hashCode());
+ }
+
+ result = prime * result
+ + ((returnType == null) ? 0 : returnType.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ GeneratedPropertyImpl other = (GeneratedPropertyImpl) obj;
+ if (comment == null) {
+ if (other.comment != null) {
+ return false;
+ }
+ } else if (!comment.equals(other.comment)) {
+ return false;
+ }
+ if (isFinal != other.isFinal) {
+ return false;
+ }
+ if (isReadOnly != other.isReadOnly) {
+ return false;
+ }
+ if (modifier != other.modifier) {
+ return false;
+ }
+ if (name == null) {
+ if (other.name != null) {
+ return false;
+ }
+ } else if (!name.equals(other.name)) {
+ return false;
+ }
+ if (parameters == null) {
+ if (other.parameters != null) {
+ return false;
+ }
+ } else if (!parameters.equals(other.parameters)) {
+ return false;
+ }
+ if (parent == null) {
+ if (other.parent != null) {
+ return false;
+ }
+ } else if ((parent != null) && (other.parent != null)) {
+ if (!parent.getPackageName().equals(
+ other.parent.getPackageName())
+ && !parent.getName().equals(other.parent.getName())) {
+ return false;
+ }
+ }
+ if (returnType == null) {
+ if (other.returnType != null) {
+ return false;
+ }
+ } else if (!returnType.equals(other.returnType)) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("GeneratedPropertyImpl [name=");
+ builder.append(name);
+ builder.append(", comment=");
+ builder.append(comment);
+ if (parent != null) {
+ builder.append(", parent=");
+ builder.append(parent.getPackageName());
+ builder.append(".");
+ builder.append(parent.getName());
+ } else {
+ builder.append(", parent= null");
+ }
+ builder.append(", returnType=");
+ builder.append(returnType);
+ builder.append(", isFinal=");
+ builder.append(isFinal);
+ builder.append(", isReadOnly=");
+ builder.append(isReadOnly);
+ builder.append(", parameters=");
+ builder.append(parameters);
+ builder.append(", modifier=");
+ builder.append(modifier);
+ builder.append("]");
+ return builder.toString();
+ }
+ }
+
+ private static final class GeneratedTransferObjectImpl implements
+ GeneratedTransferObject {
+
+ private final String packageName;
+ private final String name;
+ // private final List<Constant> constants;
+ private final List<Enumeration> enumerations;
+ private final List<GeneratedProperty> properties;
+ private final List<GeneratedProperty> equalsProperties;
+ private final List<GeneratedProperty> hashCodeProperties;
+ private final List<GeneratedProperty> stringProperties;
+
+ private List<Enumeration> toUnmodifiableEnumerations(
+ final List<EnumBuilder> enumBuilders) {
+ final List<Enumeration> enumerations = new ArrayList<Enumeration>();
+ for (final EnumBuilder builder : enumBuilders) {
+ enumerations.add(builder.toInstance(this));
+ }
+ return Collections.unmodifiableList(enumerations);
+ }
+
+ private List<Constant> toUnmodifiableConstant(
+ final List<ConstantBuilder> constBuilders) {
+ final List<Constant> constants = new ArrayList<Constant>();
+ for (final ConstantBuilder builder : constBuilders) {
+ constants.add(builder.toInstance(this));
+ }
+ return Collections.unmodifiableList(constants);
+ }
+
+ private List<GeneratedProperty> toUnmodifiableProperties(
+ final List<GeneratedPropertyBuilder> propBuilders) {
+ final List<GeneratedProperty> constants = new ArrayList<GeneratedProperty>();
+ for (final GeneratedPropertyBuilder builder : propBuilders) {
+ constants.add(builder.toInstance(this));
+ }
+ return Collections.unmodifiableList(constants);
+ }
+
+ public GeneratedTransferObjectImpl(String packageName, String name,
+ List<EnumBuilder> enumBuilders,
+ List<GeneratedPropertyBuilder> propBuilers,
+ List<GeneratedPropertyBuilder> equalsBuilers,
+ List<GeneratedPropertyBuilder> hashCodeBuilers,
+ List<GeneratedPropertyBuilder> stringBuilers) {
+ super();
+ this.packageName = packageName;
+ this.name = name;
+ this.enumerations = toUnmodifiableEnumerations(enumBuilders);
+ this.properties = toUnmodifiableProperties(propBuilers);
+ this.equalsProperties = toUnmodifiableProperties(equalsBuilers);
+ this.hashCodeProperties = toUnmodifiableProperties(hashCodeBuilers);
+ this.stringProperties = toUnmodifiableProperties(stringBuilers);
+ }
+
+ @Override
+ public String getPackageName() {
+ return packageName;
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public List<Enumeration> getEnumDefintions() {
+ return enumerations;
+ }
+
+ @Override
+ public List<GeneratedProperty> getProperties() {
+ return properties;
+ }
+
+ @Override
+ public List<GeneratedProperty> getEqualsIdentifiers() {
+ return equalsProperties;
+ }
+
+ @Override
+ public List<GeneratedProperty> getHashCodeIdentifiers() {
+ return hashCodeProperties;
+ }
+
+ @Override
+ public List<GeneratedProperty> getToStringIdentifiers() {
+ return stringProperties;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.lang.Object#hashCode()
+ */
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result
+ + ((enumerations == null) ? 0 : enumerations.hashCode());
+ result = prime
+ * result
+ + ((equalsProperties == null) ? 0 : equalsProperties
+ .hashCode());
+ result = prime
+ * result
+ + ((hashCodeProperties == null) ? 0 : hashCodeProperties
+ .hashCode());
+ result = prime * result + ((name == null) ? 0 : name.hashCode());
+ result = prime * result
+ + ((packageName == null) ? 0 : packageName.hashCode());
+ result = prime * result
+ + ((properties == null) ? 0 : properties.hashCode());
+ result = prime
+ * result
+ + ((stringProperties == null) ? 0 : stringProperties
+ .hashCode());
+ return result;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.lang.Object#equals(java.lang.Object)
+ */
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ GeneratedTransferObjectImpl other = (GeneratedTransferObjectImpl) obj;
+ if (enumerations == null) {
+ if (other.enumerations != null) {
+ return false;
+ }
+ } else if (!enumerations.equals(other.enumerations)) {
+ return false;
+ }
+ if (equalsProperties == null) {
+ if (other.equalsProperties != null) {
+ return false;
+ }
+ } else if (!equalsProperties.equals(other.equalsProperties)) {
+ return false;
+ }
+ if (hashCodeProperties == null) {
+ if (other.hashCodeProperties != null) {
+ return false;
+ }
+ } else if (!hashCodeProperties.equals(other.hashCodeProperties)) {
+ return false;
+ }
+ if (name == null) {
+ if (other.name != null) {
+ return false;
+ }
+ } else if (!name.equals(other.name)) {
+ return false;
+ }
+ if (packageName == null) {
+ if (other.packageName != null) {
+ return false;
+ }
+ } else if (!packageName.equals(other.packageName)) {
+ return false;
+ }
+ if (properties == null) {
+ if (other.properties != null) {
+ return false;
+ }
+ } else if (!properties.equals(other.properties)) {
+ return false;
+ }
+ if (stringProperties == null) {
+ if (other.stringProperties != null) {
+ return false;
+ }
+ } else if (!stringProperties.equals(other.stringProperties)) {
+ return false;
+ }
+ return true;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.lang.Object#toString()
+ */
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("GeneratedTransferObjectImpl [packageName=");
+ builder.append(packageName);
+ builder.append(", name=");
+ builder.append(name);
+ builder.append(", enumerations=");
+ builder.append(enumerations);
+ builder.append(", properties=");
+ builder.append(properties);
+ builder.append(", equalsProperties=");
+ builder.append(equalsProperties);
+ builder.append(", hashCodeProperties=");
+ builder.append(hashCodeProperties);
+ builder.append(", stringProperties=");
+ builder.append(stringProperties);
+ builder.append("]");
+ return builder.toString();
+ }
+ }
+}