if ( properties != null ) {
config = (KnowledgeBuilderConfigurationImpl) properties.get( Constants.RES_PACKAGEBUILDER_CONFIG );
}
KnowledgeBuilderImpl builder = null;
if ( config != null ) {
builder = new KnowledgeBuilderImpl(config);
} else {
builder = new KnowledgeBuilderImpl();
}
Object dsrl = null;
String source = null;
if ( properties != null ) {
dsrl = properties.get( Constants.RES_DSL );
if ( dsrl == null ) {
// check for old legacy name ending
dsrl = properties.get( "dsl" );
}
source = ( String ) properties.get( Constants.RES_SOURCE );
if ( source == null ) {
// check for old legacy name ending
source = ( String ) properties.get( "source" );
}
}
if ( source == null ) {
source = "drl";
}
if ( dsrl == null ) {
if ( source.equals( Constants.RES_SOURCE_TYPE_XML ) || source.equals( "xml" ) ) {
builder.addPackageFromXml( ruleExecutionSetReader );
} else {
builder.addPackageFromDrl( ruleExecutionSetReader );
}
} else {
if ( source.equals( Constants.RES_SOURCE_TYPE_XML ) || source.equals( "xml" ) ) {
// xml cannot specify a dsl
builder.addPackageFromXml( ruleExecutionSetReader );
} else {
if ( dsrl instanceof Reader ) {
builder.addPackageFromDrl( ruleExecutionSetReader,
(Reader) dsrl );
} else {
builder.addPackageFromDrl( ruleExecutionSetReader,
new StringReader( (String) dsrl ) );
}
}
}
InternalKnowledgePackage pkg = builder.getPackage();
return createRuleExecutionSet( pkg,
properties );
} catch ( final IOException e ) {
throw new RuleExecutionSetCreateException( "cannot create rule execution set",
e );