This fails:-
Test
package com.guvnor.tests;
import org.drools.compiler.PackageBuilder;
import org.drools.compiler.PackageBuilderErrors;
import org.drools.io.ResourceFactory;
import org.drools.lang.descr.PackageDescr;
public class FragmentsTest {
public static final void main(String[] args) {
try {
PackageBuilderErrors pbe;
PackageBuilder pb = new PackageBuilder();
pb.addPackage( new PackageDescr( "p3" ) );
pb.addPackageFromDrl( ResourceFactory.newClassPathResource( "Fragment1.drl" ) );
pbe = pb.getErrors();
System.out.println("Errors = " + pbe.getErrors().length );
pb.addPackageFromDrl( ResourceFactory.newClassPathResource( "Fragment2.drl" ) );
pbe = pb.getErrors();
System.out.println("Errors = " + pbe.getErrors().length );
pb.addPackageFromDrl( ResourceFactory.newClassPathResource( "Fragment3.drl" ) );
pbe = pb.getErrors();
System.out.println("Errors = " + pbe.getErrors().length );
pb.getPackage();
} catch ( Exception e ) {
e.fillInStackTrace();
e.printStackTrace();
}
}
}
Fragment1.drl
package com.guvnor.package3
import com.guvnor.package1.Person
import java.math.BigDecimal
Fragment2.drl
package com.guvnor.package3
//import com.guvnor.package1.Person <<Fails unless I add this import
declare Person
end
declare Person2 extends Person
name : String
age : Integer
end
Fragment3.drl
package com.guvnor.package3
rule "test"
when
Person( salary == 10 )
then
System.out.println("Hello Fred!");
end
Resolved with https://github.com/droolsjbpm/drools/commit/dc00433f3e3821a2c224ba8dc36f0235b07aef2f