public KnowledgeBuilderConfiguration newKnowledgeBuilderConfiguration() { return new PackageBuilderConfiguration(); }
/** * This checks to see if it should all be in the one namespace. */ private boolean checkNamespace( String newName ) { if (this.configuration == null) return true; if (( !this.pkgRegistryMap.isEmpty() ) && ( !this.pkgRegistryMap.containsKey( newName ) )) { return this.configuration.isAllowMultipleNamespaces(); } return true; }
private void init(Properties properties, ClassLoader... classLoaders) { setClassLoader( classLoaders ); this.chainedProperties = new ChainedProperties( "packagebuilder.conf", this.classLoader, true ); if ( properties != null ) { this.chainedProperties.addProperties( properties ); } setProperty( ClassLoaderCacheOption.PROPERTY_NAME, this.chainedProperties.getProperty( ClassLoaderCacheOption.PROPERTY_NAME, "true" ) ); this.dialectConfigurations = new HashMap<String, DialectConfiguration>(); buildDialectConfigurationMap(); buildAccumulateFunctionsMap(); buildEvaluatorRegistry(); buildDumpDirectory(); buildSeverityMap(); setProperty( ProcessStringEscapesOption.PROPERTY_NAME, this.chainedProperties.getProperty( ProcessStringEscapesOption.PROPERTY_NAME, "true" ) ); setProperty( DefaultPackageNameOption.PROPERTY_NAME, this.chainedProperties.getProperty( DefaultPackageNameOption.PROPERTY_NAME, "defaultpkg" ) ); this.componentFactory = new DroolsCompilerComponentFactory(); this.classBuilderFactory = new ClassBuilderFactory(); }
public void setProperty(String name, String value) { name = name.trim(); if ( StringUtils.isEmpty( name ) ) { return; } if ( name.equals( DefaultDialectOption.PROPERTY_NAME ) ) { setDefaultDialect( value ); } else if ( name.startsWith( AccumulateFunctionOption.PROPERTY_NAME ) ) { addAccumulateFunction( name.substring( AccumulateFunctionOption.PROPERTY_NAME.length() ), value ); } else if ( name.startsWith( EvaluatorOption.PROPERTY_NAME ) ) { this.evaluatorRegistry.addEvaluatorDefinition( value ); } else if ( name.equals( DumpDirOption.PROPERTY_NAME ) ) { buildDumpDirectory( value ); } else if ( name.equals( DefaultPackageNameOption.PROPERTY_NAME ) ) { setDefaultPackageName( value ); } else if ( name.equals( ProcessStringEscapesOption.PROPERTY_NAME ) ) { setProcessStringEscapes( Boolean.parseBoolean( value ) ); } else if ( name.equals( ClassLoaderCacheOption.PROPERTY_NAME ) ) { setClassLoaderCacheEnabled( Boolean.parseBoolean( value ) ); } else if ( name.startsWith( KBuilderSeverityOption.PROPERTY_NAME ) ) { String key = name.substring( name.lastIndexOf('.') + 1 ); this.severityMap.put(key, KBuilderSeverityOption.get(key, value).getSeverity()); } }
ClassLoader classLoader = this.getClass().getClassLoader(); PackageBuilderConfiguration configuration = new PackageBuilderConfiguration(); configuration.setClassLoader(classLoader); PackageBuilder builder = new PackageBuilder(configuration); builder.addPackageFromDrl(source); RuleBaseConfiguration ruleBaseConfiguration = new RuleBaseConfiguration(); ruleBaseConfiguration.setClassLoader(classLoader); ruleBase = RuleBaseFactory.newRuleBase(ruleBaseConfiguration); ruleBase.addPackage(builder.getPackage());
public PackageBuilder( RuleBase ruleBase, PackageBuilderConfiguration configuration ) { if (configuration == null) { this.configuration = new PackageBuilderConfiguration(); } else { this.configuration = configuration; } if (ruleBase != null) { this.rootClassLoader = ( (InternalRuleBase) ruleBase ).getRootClassLoader(); } else { this.rootClassLoader = this.configuration.getClassLoader(); } this.rootClassLoader.addClassLoader(getClass().getClassLoader()); this.dateFormats = null;//(DateFormats) this.environment.get( EnvironmentName.DATE_FORMATS ); if (this.dateFormats == null) { this.dateFormats = new DateFormatsImpl(); //this.environment.set( EnvironmentName.DATE_FORMATS , this.dateFormats ); } // FIXME, we need to get drools to support "default" namespace. //this.defaultNamespace = pkg.getName(); this.defaultDialect = this.configuration.getDefaultDialect(); this.pkgRegistryMap = new LinkedHashMap<String, PackageRegistry>(); this.results = new ArrayList<KnowledgeBuilderResult>(); this.ruleBase = (ReteooRuleBase) ruleBase; globals = new HashMap<String, Class<?>>(); processBuilder = createProcessBuilder(); builtinTypes = new HashMap<String, TypeDeclaration>(); initBuiltinTypeDeclarations(); }
@Test public void testDefaultCompiler() throws Exception { JarInputStream jis = new JarInputStream(this.getClass().getResourceAsStream("/billasurf.jar")); List<JarInputStream> l = new ArrayList<JarInputStream>(); l.add(jis); Properties properties = new Properties(); properties.setProperty("drools.accumulate.function.groupCount", "org.drools.base.accumulators.MaxAccumulateFunction"); BRMSPackageBuilder builder = new BRMSPackageBuilder(properties, new ClassLoaderBuilder(l).buildClassLoader()); assertEquals("org.drools.base.accumulators.MaxAccumulateFunction", builder.getPackageBuilderConfiguration().getAccumulateFunction("groupCount").getClass().getName()); PackageDescr pc = new PackageDescr("foo.bar"); builder.addPackage(pc); String header = "import com.billasurf.Person\n import com.billasurf.Board"; builder.addPackageFromDrl(new StringReader(header)); assertFalse(builder.hasErrors()); JavaDialectConfiguration javaConf = (JavaDialectConfiguration) builder.getPackageBuilderConfiguration().getDialectConfiguration("java"); assertEquals(JavaDialectConfiguration.ECLIPSE, javaConf.getCompiler()); }
@Test public void testGeneratedBeans() throws Exception { JarInputStream jis = new JarInputStream(this.getClass().getResourceAsStream("/billasurf.jar")); List<JarInputStream> jarInputStreams = new ArrayList<JarInputStream>(); jarInputStreams.add(jis); BRMSPackageBuilder builder = new BRMSPackageBuilder(new Properties(), new ClassLoaderBuilder(jarInputStreams).buildClassLoader()); builder.getPackageBuilderConfiguration().setDefaultPackageName( "foo.bar" ); PackageDescr pc = new PackageDescr("foo.bar"); builder.addPackage(pc); String header = "import com.billasurf.Person\n import com.billasurf.Board\n declare GenBean \n name: String \n end"; builder.addPackageFromDrl(new StringReader(header)); assertFalse(builder.hasErrors()); JavaDialectConfiguration javaConf = (JavaDialectConfiguration) builder.getPackageBuilderConfiguration().getDialectConfiguration("java"); assertEquals(JavaDialectConfiguration.ECLIPSE, javaConf.getCompiler()); String ruleAtom = "rule foo \n when \n Person() \n GenBean(name=='mike')\n then \n System.out.println(42); end"; builder.addPackageFromDrl(new StringReader(ruleAtom)); if (builder.hasErrors()) { System.err.println(builder.getErrors().getErrors()[0].getMessage()); } assertFalse(builder.hasErrors()); ruleAtom = "rule foo2 \n when \n Person() \n then \n System.out.println(42); end"; builder.addPackageFromDrl(new StringReader(ruleAtom)); if (builder.hasErrors()) { System.err.println(builder.getErrors().getErrors()[0].getMessage()); } assertFalse(builder.hasErrors()); assertEquals("foo.bar", builder.getPackage().getName()); }
@Test public void testEclipseCompiler() throws Exception { System.setProperty("drools.dialect.java.compiler", "ECLIPSE"); JarInputStream jis = new JarInputStream(this.getClass().getResourceAsStream("/billasurf.jar")); List<JarInputStream> l = new ArrayList<JarInputStream>(); l.add(jis); BRMSPackageBuilder builder = new BRMSPackageBuilder(new Properties(), new ClassLoaderBuilder(l).buildClassLoader()); PackageDescr pc = new PackageDescr("foo.bar"); builder.addPackage(pc); String header = "import com.billasurf.Person\n import com.billasurf.Board"; builder.addPackageFromDrl(new StringReader(header)); assertFalse(builder.hasErrors()); JavaDialectConfiguration javaConf = (JavaDialectConfiguration) builder.getPackageBuilderConfiguration().getDialectConfiguration("java"); assertEquals(JavaDialectConfiguration.ECLIPSE, javaConf.getCompiler()); }
public <T extends KnowledgeBuilderOption> void setOption(T option) { if ( option instanceof DefaultDialectOption ) { this.defaultDialect = (DefaultDialectOption) option; } else if ( option instanceof AccumulateFunctionOption ) { this.accumulateFunctions.put( ((AccumulateFunctionOption) option).getName(), ((AccumulateFunctionOption) option).getFunction() ); } else if ( option instanceof DumpDirOption ) { this.dumpDirectory = ((DumpDirOption) option).getDirectory(); } else if ( option instanceof EvaluatorOption ) { this.evaluatorRegistry.addEvaluatorDefinition( (EvaluatorDefinition) ((EvaluatorOption)option).getEvaluatorDefinition() ); } else if ( option instanceof ProcessStringEscapesOption ) { this.processStringEscapes = ((ProcessStringEscapesOption) option).isProcessStringEscapes(); } else if ( option instanceof DefaultPackageNameOption ) { setDefaultPackageName( ((DefaultPackageNameOption) option).getPackageName() ); } else if ( option instanceof ClassLoaderCacheOption ) { setClassLoaderCacheEnabled( ((ClassLoaderCacheOption) option).isClassLoaderCacheEnabled() ); } else if ( option instanceof KBuilderSeverityOption ) { this.severityMap.put(((KBuilderSeverityOption) option).getName(), ((KBuilderSeverityOption) option).getSeverity()); } else if ( option instanceof PropertySpecificOption ) { propertySpecificOption = (PropertySpecificOption)option; } }
if ( this.accumulateFunctions != null && !this.accumulateFunctions.isEmpty() ) { for ( Entry<String, AccumulateFunction> entry : this.accumulateFunctions.entrySet() ) { kconf.setOption( AccumulateFunctionOption.get( entry.getKey(), entry.getValue() ) ); kconf.setOption( EvaluatorOption.get( entry.getKey(), entry.getValue() ) );
for ( AccumulateFunctionCallDescr fc : funcCalls ) { AccumulateFunction function = context.getConfiguration().getAccumulateFunction( fc.getFunction() ); if ( function == null ) { context.addError( new DescrBuildError( accumDescr,
@Override public void setProperty(String name, String value) { if (name.equals(KnowledgeBuilderConfigurationRemoteClient.PROPERTY_MESSAGE_TIMEOUT)){ this.messageTimeout = value; }else if (name.equals(KnowledgeBuilderConfigurationRemoteClient.PROPERTY_MESSAGE_MINIMUM_WAIT_TIME)){ this.messageMinWaitTime = value; }else{ super.setProperty(name, value); } }
builder.getPackageBuilderConfiguration().setDefaultPackageName( "foo.bar" );
public PackageBuilder( Package pkg, PackageBuilderConfiguration configuration ) { if (configuration == null) { this.configuration = new PackageBuilderConfiguration(); } else { this.configuration = configuration; } this.dateFormats = null;//(DateFormats) this.environment.get( EnvironmentName.DATE_FORMATS ); if (this.dateFormats == null) { this.dateFormats = new DateFormatsImpl(); //this.environment.set( EnvironmentName.DATE_FORMATS , this.dateFormats ); } this.rootClassLoader = this.configuration.getClassLoader(); this.rootClassLoader.addClassLoader( getClass().getClassLoader() ); this.defaultDialect = this.configuration.getDefaultDialect(); this.pkgRegistryMap = new LinkedHashMap<String, PackageRegistry>(); this.results = new ArrayList<KnowledgeBuilderResult>(); PackageRegistry pkgRegistry = new PackageRegistry( this, pkg ); pkgRegistry.setDialect( this.defaultDialect ); this.pkgRegistryMap.put( pkg.getName(), pkgRegistry ); globals = new HashMap<String, Class<?>>(); processBuilder = createProcessBuilder(); builtinTypes = new HashMap<String, TypeDeclaration>(); initBuiltinTypeDeclarations(); }
public JavaDialect(PackageBuilder builder, PackageRegistry pkgRegistry, Package pkg) { this.packageBuilder = builder; this.pkg = pkg; this.packageRegistry = pkgRegistry; this.configuration = (JavaDialectConfiguration) builder.getPackageBuilderConfiguration().getDialectConfiguration( "java" ); this.errorHandlers = new HashMap<String, ErrorHandler>(); this.results = new ArrayList<KnowledgeBuilderResult>(); this.src = new MemoryResourceReader(); this.generatedClassList = new ArrayList<String>(); JavaDialectRuntimeData data = (JavaDialectRuntimeData) pkg.getDialectRuntimeRegistry().getDialectData( ID ); // initialise the dialect runtime data if it doesn't already exist if ( data == null ) { data = new JavaDialectRuntimeData(); this.pkg.getDialectRuntimeRegistry().setDialectData( ID, data ); data.onAdd( this.pkg.getDialectRuntimeRegistry(), this.packageBuilder.getRootClassLoader() ); } else { data = (JavaDialectRuntimeData) pkg.getDialectRuntimeRegistry().getDialectData( ID ); } this.packageStoreWrapper = new PackageStore( data, this.results ); loadCompiler(); }
if ( this.accumulateFunctions != null && !this.accumulateFunctions.isEmpty() ) { for ( Entry<String, AccumulateFunction> entry : this.accumulateFunctions.entrySet() ) { kconf.setOption( AccumulateFunctionOption.get( entry.getKey(), entry.getValue() ) ); kconf.setOption( EvaluatorOption.get( entry.getKey(), entry.getValue() ) );
for ( AccumulateFunctionCallDescr func : functions ) { AccumulateFunction function = context.getConfiguration().getAccumulateFunction( func.getFunction() ); if ( function == null ) { context.addError( new DescrBuildError( accumDescr,
public KnowledgeBuilderConfiguration newKnowledgeBuilderConfiguration(Properties properties, ClassLoader... classLoaders) { return new PackageBuilderConfiguration(properties, classLoaders); }
this.pkgBuilder = builder; this.packageRegistry = pkgRegistry; this.configuration = (MVELDialectConfiguration) builder.getPackageBuilderConfiguration().getDialectConfiguration( "mvel" ); setLanguageLevel( this.configuration.getLangLevel() ); this.strictMode = this.configuration.isStrict();