@Override public String getMessage() { return "Rule name " + rule + " already exists in package " + pkgDescr.getName(); }
private PackageRegistry newPackage( final PackageDescr packageDescr ) { Package pkg; if (this.ruleBase == null || ( pkg = this.ruleBase.getPackage( packageDescr.getName() ) ) == null) { // there is no rulebase or it does not define this package so define it pkg = new Package( packageDescr.getName() ); pkg.setClassFieldAccessorCache( new ClassFieldAccessorCache( this.rootClassLoader ) ); // if there is a rulebase then add the package. if (this.ruleBase != null) { // Must lock here, otherwise the assumption about addPackage/getPackage behavior below might be violated this.ruleBase.lock(); try { this.ruleBase.addPackage( pkg ); pkg = this.ruleBase.getPackage( packageDescr.getName() ); } finally { this.ruleBase.unlock(); } } else { // the RuleBase will also initialise the pkg.getDialectRuntimeRegistry().onAdd( this.rootClassLoader ); } } PackageRegistry pkgRegistry = new PackageRegistry( this, pkg ); // add default import for this namespace pkgRegistry.addImport( new ImportDescr( packageDescr.getNamespace() + ".*" ) ); this.pkgRegistryMap.put( packageDescr.getName(), pkgRegistry ); return pkgRegistry; }
void processOtherDeclarations(PackageRegistry pkgRegistry, PackageDescr packageDescr) { processWindowDeclarations(pkgRegistry, packageDescr); processFunctions(pkgRegistry, packageDescr); processGlobals(pkgRegistry, packageDescr); // need to reinsert this to ensure that the package is the first/last one in the ordered map // this feature is exploited by the knowledgeAgent Package current = getPackage(); this.pkgRegistryMap.remove( packageDescr.getName() ); this.pkgRegistryMap.put( packageDescr.getName(), pkgRegistry ); if ( ! current.getName().equals( packageDescr.getName() ) ) { currentRulePackage = pkgRegistryMap.size() - 1; } }
PackageRegistry pkgReg = this.pkgRegistryMap.get( packageDescr.getName() ); if ( pkgReg != null ) { try {
private void processWindowDeclarations( PackageRegistry pkgRegistry, PackageDescr packageDescr ) { for (WindowDeclarationDescr wd : packageDescr.getWindowDeclarations()) { WindowDeclaration window = new WindowDeclaration( wd.getName(), packageDescr.getName() );
public void visitPackageDescr(final PackageDescr packageDescr) { final String packageName = packageDescr.getName(); final String xmlString = "<?xml version=\"1.0\" encoding=\"UTF-8\"?> " + XmlDumper.eol + " <package name=\"" + packageName + "\" " + XmlDumper.eol + "\txmlns=\"http://drools.org/drools-5.2\" " + XmlDumper.eol + "\txmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\" " + XmlDumper.eol + "\txs:schemaLocation=\"http://drools.org/drools-5.2 drools.org/drools-5.2.xsd\"> " + XmlDumper.eol; appendXmlDump( xmlString ); appendXmlDump( processImportsList( packageDescr.getImports() ) ); appendXmlDump( processGlobalsList( packageDescr.getGlobals() ) ); appendXmlDump( processFunctionImportsList( packageDescr.getFunctionImports() )); appendXmlDump( processFunctionsList( packageDescr.getFunctions() ) ); appendXmlDump( processRules( packageDescr.getRules() ) ); appendXmlDump( "</package>" ); }
} else { PackageDescrBuilder pkg = (PackageDescrBuilder) ctxBuilder; function = pkg.newFunction().namespace( pkg.getDescr().getName() ); AttributeDescr attribute = pkg.getDescr().getAttribute( "dialect" ); if ( attribute != null ) {