Guillaume, Do you think you can show up on IRC so that we can discuss this live? I am not opposed to exposing the package compilation data, but it is a very sensitive part of the code and we need to think carefully about the consequences of doing it and how to do it if that is the case...
Edson 2010/10/28 Guillaume Sauthier <[email protected]>: > > > Le 28/10/2010 10:55, Leonardo Gomes a écrit : > > It could be a starting point for this part: > >> maven plugin that precompiles the rule discovered in the module and simply >> place the >> compiled classes in a given directory. > > Sure, but then I would like to have an API to get access to the PackageStore > from KnowledgePackage. > Currently there is no such API (or I didn't find how to access theses > classes). > A solution where I could provides my own PackageStore (thus intercepting the > writeClass(String name, byte[] bytecode)) would be nice also :) > > Currently, I've only the reflection trick to access theses classes :'( > --G > > > On Thu, Oct 28, 2010 at 10:12 AM, Guillaume Sauthier > <[email protected]> wrote: >> >> Thanks for the link Leonardo >> I did take a look at it, but it doesn't do what I want (extract the >> generated classes from the Package) :'( >> --G >> >> Le 28/10/2010 09:49, Leonardo Gomes a écrit : >> >> For the maven-plugin thing, have a look here: >> http://drools-java-rules-engine.46999.n3.nabble.com/maven-drools-plugin-to-compile-DRL-s-at-build-time-td725751.html >> >> Leo. >> >> On Thu, Oct 28, 2010 at 9:39 AM, Guillaume Sauthier >> <[email protected]> wrote: >>> >>> Hi Edison >>> >>> To be more concrete, I would like to create first a maven plugin that >>> precompiles the rule discovered in the module and simply place the >>> compiled classes in a given directory. >>> >>> Currently, I may use the reflection trick to access what I want (the >>> PackageStore), but if it could be part of an API, that would be better :) >>> >>> Does it seems weird ? Is a patch welcome for this problem ? >>> >>> --G >>> >>> Le 26/10/2010 09:49, Guillaume Sauthier a écrit : >>> > Thanks for your answer Edson. >>> > >>> > The reason I have is that runtime generated stuff usually don't fit >>> > well >>> > in an OSGi model. >>> > >>> > When you take a bundle, it has a statically defined set of "imported >>> > packages". that means that when the bundle has been compiled, a list of >>> > packages to be wired in at deployment time has been computed. This list >>> > of packages if inferred from what the .class files (in the bundle) >>> > requires to be executed (think of them as external dependencies). >>> > >>> > Now if we generate some classes at runtime in an OSGi environment, we >>> > can see that generated classes can have different (or additional) >>> > requirements in terms of java packages. So usually, with OSGi, that >>> > ends >>> > up by adding a special header called DynamicImport-Package into the >>> > MANIFEST, with the side effects of breaking modularity :-( >>> > >>> > This is what I want to avoid by having access to the generated classes >>> > at the compilation phase: I can then use this bytecode (IOW giving it >>> > to >>> > Bnd [1]) to complete the Import-Package MANIFEST header with the right >>> > set of imported java packages. >>> > >>> > As a second issue, less important for the moment and more runtime >>> > oriented this time, I would like to know if/how we can add a new kind >>> > of >>> > Resource. >>> > Once we have generated the bytecode in the compilation phase, we can >>> > assume that all the stuff is already here in the bundle. Why can't we >>> > use it ? >>> > I've seen the PKG Resource type, but it's some kind of serialization of >>> > a whole Package, couldn't it be possible to have a new Package type (or >>> > way to create a Package) that can use the ClassLoader to get access to >>> > the already present bundle's resources instead of using the byte[] from >>> > the serialized Package ? >>> > >>> > WDYT? >>> > >>> > Thanks >>> > --G >>> > >>> > [1]. http://www.aqute.biz/Code/Bnd >>> > >>> > Le 25/10/2010 21:26, Edson Tirelli a écrit : >>> > >>> >> Not exactly sure how helpful would it be to store the generated >>> >> bytecodes in an osgi bundle. Anyway, there is no API right now to do >>> >> that, but you can use reflection to achieve the same: >>> >> >>> >> PackageCompilationData data = >>> >> pkg.getPackageCompilationData(); >>> >> Field field = PackageCompilationData.class.getDeclaredField( >>> >> "store" ); >>> >> field.setAccessible( true ); >>> >> Map<String, byte[]> store = (Map<String, byte[]>) >>> >> field.get( data ); >>> >> >>> >> If you can justify the need for such an API, I guess we could be >>> >> convinced to add one. >>> >> >>> >> Edson >>> >> >>> >> >>> >> >>> >> >>> >> 2010/10/25 Guillaume Sauthier<[email protected]>: >>> >> >>> >> >>> >>> Hi team >>> >>> >>> >>> I've tried the IRC (without much success I admit), maybe here someone >>> >>> will >>> >>> have some thoughts to share :) >>> >>> >>> >>> I'm looking for a way to "intercept" the classes being generated by >>> >>> the >>> >>> drools compiler. >>> >>> I've seen that the classes bytecode is stored deep in >>> >>> PackageStore/JavaDialectRuntimeData, so deep that I cannot easily >>> >>> access it >>> >>> :) >>> >>> The objective is to be able to give theses classes to Bnd (I want to >>> >>> store >>> >>> all of that in an OSGi bundle) so that appropriate Import-Packages >>> >>> can be >>> >>> computed. That will avoid to have DynamicImport-Packages all around >>> >>> my >>> >>> bundles :) >>> >>> >>> >>> Currently, what I get from the drools compiler is a >>> >>> Collection<KnowledgePackage> but I have no API (or didn't find any) >>> >>> to >>> >>> access (or know) the classes generated by the compiler. >>> >>> >>> >>> Any ideas ? >>> >>> Thanks >>> >>> --Guillaume >>> >>> >>> >>> _______________________________________________ >>> >>> rules-dev mailing list >>> >>> [email protected] >>> >>> https://lists.jboss.org/mailman/listinfo/rules-dev >>> >>> >>> >>> >>> >>> >>> >>> >>> >> >>> >> >>> >> >>> > _______________________________________________ >>> > rules-dev mailing list >>> > [email protected] >>> > https://lists.jboss.org/mailman/listinfo/rules-dev >>> > >>> > >>> > >>> _______________________________________________ >>> rules-dev mailing list >>> [email protected] >>> https://lists.jboss.org/mailman/listinfo/rules-dev >> >> >> _______________________________________________ >> rules-dev mailing list >> [email protected] >> https://lists.jboss.org/mailman/listinfo/rules-dev >> >> >> _______________________________________________ >> rules-dev mailing list >> [email protected] >> https://lists.jboss.org/mailman/listinfo/rules-dev >> > > > _______________________________________________ > rules-dev mailing list > [email protected] > https://lists.jboss.org/mailman/listinfo/rules-dev > > > _______________________________________________ > rules-dev mailing list > [email protected] > https://lists.jboss.org/mailman/listinfo/rules-dev > > -- Edson Tirelli JBoss Drools Core Development JBoss by Red Hat @ www.jboss.com _______________________________________________ rules-dev mailing list [email protected] https://lists.jboss.org/mailman/listinfo/rules-dev
