JavaDialectConfiguration javaConf = (JavaDialectConfiguration) builder_configuration.getDialectConfiguration( "java" );
javaConf.setJavaLanguageLevel( level );
}
// first parse the source
PackageDescr packageDescr = null;
List<BaseKnowledgeBuilderResultImpl> parserErrors = null;
if ( useCache && resource != null) {
DRLInfo cachedDrlInfo = (DRLInfo) parsedRules.get( resource );
if ( cachedDrlInfo != null ) {
packageDescr = cachedDrlInfo.getPackageDescr();
parserErrors = cachedDrlInfo.getParserErrors();
}
}
DrlParser parser = new DrlParser();
if ( packageDescr == null ) {
Reader dslReader = DSLAdapter.getDSLContent( content, resource );
if ( dslReader != null ) {
packageDescr = parser.parse( true, content, dslReader );
} else {
packageDescr = parser.parse( true, content );
}
parserErrors = new ArrayList<BaseKnowledgeBuilderResultImpl>();
parserErrors.addAll(parser.getErrors());
}
KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl( builder_configuration );
DRLInfo result = null;
// compile parsed rules if necessary
if ( packageDescr != null && compile && !parser.hasErrors()) {
// check whether a .package file exists and add it
if ( resource != null && resource.getParent() != null ) {
MyResourceVisitor visitor = new MyResourceVisitor();
resource.getParent().accept( visitor,
IResource.DEPTH_ONE,
IResource.NONE );
IResource packageDef = visitor.getPackageDef();
if ( packageDef != null ) {
PackageDescr desc = parseResource( packageDef,
false ).getPackageDescr();
if (desc != null){
builder.addPackage( desc);
}
}