Skip to content

Commit

Permalink
JBRULES-3145 BZ-811745: improving the agent code to handle different …
Browse files Browse the repository at this point in the history
…types of serialized packages
  • Loading branch information
etirelli committed Apr 24, 2012
1 parent a8972f0 commit 5fadf55
Show file tree
Hide file tree
Showing 4 changed files with 530 additions and 328 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -70,12 +70,14 @@
import org.drools.core.util.DroolsStreamUtils;
import org.drools.core.util.StringUtils;
import org.drools.core.util.asm.ClassFieldInspector;
import org.drools.definition.KnowledgePackage;
import org.drools.definition.process.Process;
import org.drools.definition.type.ClassReactive;
import org.drools.definition.type.FactField;
import org.drools.definition.type.Modifies;
import org.drools.definition.type.Position;
import org.drools.definition.type.PropertyReactive;
import org.drools.definitions.impl.KnowledgePackageImp;
import org.drools.factmodel.AnnotationDefinition;
import org.drools.factmodel.ClassBuilder;
import org.drools.factmodel.ClassBuilderFactory;
Expand Down Expand Up @@ -774,11 +776,43 @@ void addPackageFromChangeSet(Resource resource) throws SAXException, IOException
}
}

void addPackageFromInputStream(Resource resource) throws IOException, ClassNotFoundException {
void addPackageFromInputStream(final Resource resource) throws IOException, ClassNotFoundException {
InputStream is = resource.getInputStream();
Package pkg = (Package) DroolsStreamUtils.streamIn(is, this.configuration.getClassLoader());
Object object = DroolsStreamUtils.streamIn(is, this.configuration.getClassLoader());
is.close();
addPackage( pkg );
if( object instanceof Collection ) {
// KnowledgeBuilder API
@SuppressWarnings("unchecked")
Collection<KnowledgePackage> pkgs = (Collection<KnowledgePackage>) object;
for( KnowledgePackage kpkg : pkgs ) {
addPackage( ((KnowledgePackageImp)kpkg).pkg );
}
} else if( object instanceof KnowledgePackageImp ) {
// KnowledgeBuilder API
KnowledgePackageImp kpkg = (KnowledgePackageImp) object;
addPackage( kpkg.pkg );
} else if( object instanceof Package ) {
// Old Drools 4 API
Package pkg = (Package) object;
addPackage( pkg );
} else if( object instanceof Package[] ) {
// Old Drools 4 API
Package[] pkgs = (Package[]) object;
for( Package pkg : pkgs ) {
addPackage( pkg );
}
} else {
results.add( new DroolsError( resource ) {
@Override
public String getMessage() {
return "Unknown binary format trying to load resource "+resource.toString();
}
@Override
public int[] getLines() {
return new int[0];
}
} );
}
}

/**
Expand Down
Loading

0 comments on commit 5fadf55

Please sign in to comment.