</#if>
</#list>
+ // caches of resolved IdentityRefs
+ <#list moduleFields as field>
+ <#if field.identityRef==true>
+ private ${field.identityClassType} ${field.identityClassName};
+ </#if>
+ </#list>
@Override
public final ${instanceType} getInstance(){
}
</#if>
</#if>
+
+ <#if field.needsDepResolver==true>
+ if(${field.name} != null) {
+ <#if field.type?starts_with("java.util.List")>
+ for(${field.type?substring(field.type?index_of("<") + 1, field.type?index_of(">"))} candidate : ${field.name}) {
+ candidate.injectDependencyResolver(dependencyResolver);
+ }
+ <#else>
+ ${field.name}.injectDependencyResolver(dependencyResolver);
+ </#if>
+ }
+ </#if>
+
+ <#if field.identityRef==true>
+ if(${field.name} != null) {
+ set${field.attributeName}(${field.name}.resolveIdentity(dependencyResolver, ${field.identityBaseClass}.class));
+ }
+ </#if>
</#list>
if(oldInstance!=null && canReuseInstance(oldModule)) {
throw new IllegalArgumentException("Parameter 'other' is null");
}
<#list moduleFields as field>
- <#if field.dependent==true>
- if (${field.name}Dependency == null) {
- if (other.${field.name}Dependency != null)
- return false;
- } else if (!${field.name}Dependency.equals(other.${field.name}Dependency)) {
+ <#if field.dependent==true && field.listOfDependencies == false>
+ if (${field.name}Dependency != other.${field.name}Dependency) { // reference to dependency must be same
return false;
}
+ <#elseif field.listOfDependencies>
+ if (${field.name}Dependency.equals(other.${field.name}Dependency) == false) {
+ return false;
+ }
+ 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} == null) {
if (other.${field.name} != null) {