if (ucoIT != null){
while(ucoIT.hasNext()){
DmcUncheckedObject uco = ucoIT.next();
ClassDefinition ruleDataCD = sm.cdef(uco.getConstructionClass());
RuleDefinition ruleDEF = ruleDataCD.getRuleDefinition();
RuleDataDMO ruledata = null;
SourceInfo source = getSource(uco);
try{
ruledata = (RuleDataDMO) dmofactory.createObject(uco);
// DebugInfo.debug("Parsed and instantiated:\n\n" + ruledata.toOIF());
}
catch(ClassNotFoundException cnf){
// This may be thrown from TypeDefinition when trying to instantiate a
// holder for an attribute. This would likely result from not having
// the compiled output of a previous code generation run specified on
// the class path for the dmogen call that's checking the rules
StringBuffer sb = new StringBuffer();
sb.append(cnf.getMessage() + "\n\n");
sb.append("You probably need to augment the following classpath:\n");
ClassLoader cl = ClassLoader.getSystemClassLoader();
URL[] urls = ((URLClassLoader)cl).getURLs();
for(URL url: urls){
sb.append(url.getFile() + "\n");
}
sb.append("\nwith the classpath info for the missing class.");
DmcRuleException ex = new DmcRuleException(sb.toString(), null);
ex.source(source);
if (rc == null)
rc = new DmcRuleExceptionSet();
rc.add(ex);
// This is a show stopper, so just fire it now.
throw(rc);
}
catch(DmcValueException dve){
// If a value for an attribute doesn't pass the basic tests, we'll
// get one of these, just repackage it as a rule exception
DmcRuleException ex = new DmcRuleException(dve.getMessage(), null);
ex.source(source);
if (rc == null)
rc = new DmcRuleExceptionSet();
rc.add(ex);
}
catch(ResultException rex){
// If we can't find a class or attribute, we'll get one of these
DmcRuleException ex = new DmcRuleException(rex.getMessage(), null);
ex.source(source);
if (rc == null)
rc = new DmcRuleExceptionSet();
rc.add(ex);
// System.err.println(ex.toString());
}
if (ruledata == null)
continue;
try{
ruledata.resolveReferences(sm);
}
catch(DmcValueExceptionSet ex){
System.err.println(ex.toString() + "\nFile: " + ruledata.getFile() + " Line: " + ruledata.getLineNumber());
}
try{
DynamicInitIF rule = (DynamicInitIF) ruleDEF.newRuleInstance();
rule.setRuleData(ruledata);