public static Class<?> findClassByName(RuleBuildContext context, String className) { if (className == null) { return null; } String namespace = context.getRuleDescr().getNamespace(); PackageBuilder packageBuilder = context.getPackageBuilder(); Class<?> clazz = null; try { clazz = Class.forName(className.indexOf('.') < 0 ? namespace + "." + className : className, false, packageBuilder.getRootClassLoader()); } catch (ClassNotFoundException e) { } if (clazz != null) { return clazz; } Set<String> imports = new HashSet<String>(); List<PackageDescr> pkgDescrs = packageBuilder.getPackageDescrs(namespace); if (pkgDescrs == null) { return null; } for (PackageDescr pkgDescr : pkgDescrs) { for (ImportDescr importDescr : pkgDescr.getImports()) { imports.add(importDescr.getTarget()); } } return findClass(className, imports, packageBuilder.getRootClassLoader()); }
child.setNamespace(context.getRuleDescr().getNamespace());
void compileAllRules(PackageDescr packageDescr, PackageRegistry pkgRegistry) { pkgRegistry.setDialect( getPackageDialect(packageDescr) ); // only try to compile if there are no parse errors if (!hasErrors()) { compileRules(packageDescr, pkgRegistry); } compileAll(); try { reloadAll(); } catch (Exception e) { this.results.add( new DialectError( null, "Unable to wire compiled classes, probably related to compilation failures:" + e.getMessage() ) ); } updateResults(); // iterate and compile if (! hasErrors() && this.ruleBase != null) { for (RuleDescr ruleDescr : packageDescr.getRules()) { pkgRegistry = this.pkgRegistryMap.get(ruleDescr.getNamespace()); this.ruleBase.addRule(pkgRegistry.getPackage(), pkgRegistry.getPackage().getRule(ruleDescr.getName())); } } }
PackageRegistry pkgRegistry = this.pkgRegistryMap.get( ruleDescr.getNamespace() );
if (isEmpty(ruleDescr.getNamespace())) {