Hi all,
I think I've found a bug in DroolsStreamUtils.
It does not allow to deserialize a collection of KnowledgePackages with
dependencies between the packages. In this case, it fails with
ClassNotFoundException.
Example: Package A contains a type declaration, package B contains a
rule using this declaration. Compilation and serialization works fine,
but deserialization fails (complains that it cannot find declared type).
As it seems, the deserialization code does not consider classes
resulting from declared types when resolving type references.
This is true for Drools 5.2.0.Final, 5.3.0.CR1 and 5.3.0.Beta1. It works
fine for 5.1.1.
I was so bold to create a JIRA ticket for this problem right away:
https://issues.jboss.org/browse/JBRULES-3225 (with unit tests attached).
The functionality provided by class DroolsStreamUtils is essential for
the Maven Drools Plugin (compiler needs to serialize stuff, which then
needs to be *de-serializable* by applications).
If anyone is interested in using the upcoming Maven Drools Plugin to
compile rule source code into binary package files and *load* theses
packages from your application, please *vote* for this JIRA ticket, as
the maven plugin *must* rely on serialization functionality *provided by
drools* (a re-implementation is certainly out of scope and would be
more than "prone" to incompatibility). Without a fix or at least a
workaround for this bug, the maven plugin will only be able to work with
Drools 5.1.1 (newer versions are broken, older versions did not include
DroolsStreamUtils at all AFAIK).
Thanks in advance, to everyone who will contribute to a potential
solution or workaround.
Best regards
Ansgar