public void validate(){
<#list moduleFields as field>
<#if field.dependent==true && field.dependency.mandatory==true>
+ <#if field.type?starts_with("java.util.List")>
+ for(javax.management.ObjectName dep : ${field.name}) {
+ dependencyResolver.validateDependency(${field.dependency.sie.fullyQualifiedName}.class, dep, ${field.name}JmxAttribute);
+ }
+ <#else>
dependencyResolver.validateDependency(${field.dependency.sie.fullyQualifiedName}.class, ${field.name}, ${field.name}JmxAttribute);
</#if>
+ </#if>
</#list>
+ customValidation();
+ }
+
+ protected void customValidation(){
+
}
// caches of resolved dependencies
<#list moduleFields as field>
<#if field.dependent==true>
+ <#if field.type?starts_with("java.util.List")>
+ private java.util.List<${field.dependency.sie.exportedOsgiClassName}> ${field.name}Dependency = new java.util.ArrayList<${field.dependency.sie.exportedOsgiClassName}>();
+ protected final java.util.List<${field.dependency.sie.exportedOsgiClassName}> get${field.attributeName}Dependency(){
+ return ${field.name}Dependency;
+ }
+ <#else>
private ${field.dependency.sie.exportedOsgiClassName} ${field.name}Dependency;
protected final ${field.dependency.sie.exportedOsgiClassName} get${field.attributeName}Dependency(){
return ${field.name}Dependency;
}
+ </#if>
</#if>
</#list>
<#list moduleFields as field>
<#if field.dependent==true>
-
<#if field.dependency.mandatory==false>
if(${field.name}!=null) {
</#if>
- ${field.name}Dependency = dependencyResolver.resolveInstance(${field.dependency.sie.exportedOsgiClassName}.class, ${field.name}, ${field.name}JmxAttribute);
+ <#if field.type?starts_with("java.util.List")>
+ ${field.name}Dependency = new java.util.ArrayList<${field.dependency.sie.exportedOsgiClassName}>();
+ for(javax.management.ObjectName dep : ${field.name}) {
+ ${field.name}Dependency.add(dependencyResolver.resolveInstance(${field.dependency.sie.exportedOsgiClassName}.class, dep, ${field.name}JmxAttribute));
+ }
+ <#else>
+ ${field.name}Dependency = dependencyResolver.resolveInstance(${field.dependency.sie.exportedOsgiClassName}.class, ${field.name}, ${field.name}JmxAttribute);
+ </#if>
<#if field.dependency.mandatory==false>
}
public boolean canReuseInstance(${typeDeclaration.name} oldModule){
// allow reusing of old instance if no parameters was changed
- return equals(oldModule);
+ return isSame(oldModule);
}
public ${instanceType} reuseInstance(${instanceType} oldInstance){
public abstract ${instanceType} createInstance();
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
+ public boolean isSame(${typeDeclaration.name} other) {
+ if (other == null) {
+ throw new IllegalArgumentException("Parameter 'other' is null");
+ }
+ <#list moduleFields as field>
+ <#if field.dependent==true && field.listOfDependencies == false>
+ if (${field.name}Dependency != other.${field.name}Dependency) { // reference to dependency must be same
return false;
- if (getClass() != obj.getClass())
+ }
+ <#elseif field.listOfDependencies>
+ if (${field.name}Dependency.equals(other.${field.name}Dependency) == false) {
return false;
- ${typeDeclaration.name} other = (${typeDeclaration.name}) obj;
-
-
- <#list moduleFields as field>
- <#if field.dependent==true>
- if (${field.name}Dependency == null) {
- if (other.${field.name}Dependency != null)
+ }
+ for (int idx = 0; idx < ${field.name}Dependency.size(); idx++) {
+ if (${field.name}Dependency.get(idx) != other.${field.name}Dependency.get(idx)) {
return false;
- } else if (!${field.name}Dependency.equals(other.${field.name}Dependency))
- return false;
+ }
+ }
<#else>
if (${field.name} == null) {
- if (other.${field.name} != null)
+ if (other.${field.name} != null) {
return false;
- } else if (!${field.name}.equals(other.${field.name}))
+ }
+ } else if
+ <#if field.array == false>
+ (${field.name}.equals(other.${field.name}) == false)
+ <#else>
+ (java.util.Arrays.equals(${field.name},other.${field.name}) == false)
+ </#if>
+ {
return false;
+ }
</#if>
</#list>
return true;
}
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ ${typeDeclaration.name} that = (${typeDeclaration.name}) o;
+
+ return identifier.equals(that.identifier);
+ }
+
+ @Override
+ public int hashCode() {
+ return identifier.hashCode();
+ }
}