ParameterManager.initializeParameterContainer(id, parameterListType, executionContext);
}
@SuppressWarnings("unchecked")
public void lookup(ExecutionContext executionContext, Fragment source) {
final DaoRegister emr = PersistenceUtil.getDAORegister(executionContext);
Object dao = null;
try {
if(daoName == null) {
dao = emr.getDefaultDao();
} else {
dao = emr.getDao(daoName);
}
if(dao == null) {
throw new IllegalStateException("The DAO register returned null while getting the DAO '" + daoName + "'");
}
Object result = lookup(dao, executionContext);
if(result != null && uniqueResult == true) {
if(result instanceof Collection){
Collection<Object> resultCollection = (Collection<Object>) result;
if(resultCollection.size() == 0) {
result = null;
} else if(resultCollection.size() == 1) {
for(Object value : resultCollection) {
result = value;
}
} else {
String exception;
if(daoName == null) {
exception = "The " + getDaoNameFromAdapter(dao) + " DAO";
} else {
exception = "The DAO '" + daoName + "'";
}
exception += " returned multiple results for the ";
if(lookupName != null) {
exception += "lookup '" + lookupName + "'";
} else {
exception += "query '" + query + "'";
}
throw new NonUniqueResultException(exception);
}
} else {
throw new SmooksConfigurationException("The returned result doesn't implement the '" + Collection.class.getName() + "' interface " +
"and there for the unique result check can't be done.");
}
}
if(result == null && onNoResult == OnNoResult.EXCEPTION) {
String exception;
if(daoName == null) {
exception = "The " + getDaoNameFromAdapter(dao) + " DAO";
} else {
exception = "The DAO '" + daoName + "'";
}
exception += " returned no results for lookup ";
if(lookupName != null) {
exception += "lookup '" + query + "'";
} else {
exception += "query '" + query + "'";
}
throw new NoLookupResultException(exception);
}
BeanContext beanContext = executionContext.getBeanContext();
if(result == null) {
beanContext.removeBean(beanId, source);
} else {
beanContext.addBean(beanId, result, source);
}
} finally {
if(dao != null) {
emr.returnDao(dao);
}
}
}