Looks like its time to return to the problem that's been bothering me
from day one; the interaction of maven and eclipse around MANIFEST.MF,
which I'm pretty sure is what's at the root of this.
My goal is to describe everything in the pom and do all builds in
maven, using eclipse solely for browsing and debugging. At some point
I added this to every pom so that's what I'll be showing below:
<manifestLocation>src/main/resources/META-INF</manifestLocation>
I do maven builds like this: mvn -Dmaven.test.skip=true clean
idea:clean eclipse:clean idea:idea eclipse:eclipse install. The test
pom is at the end. The manifest maven-bundle-plugin generates follows
with , replaced by ,\r\t for readability. Notice Import-Package drags
in bizarre stuff (Swting?!!) and doesn't mention soakit.core, which
should be providing most everything most bundles needs, with any
strays picked up with <Embed-Transitive).
Manifest-Version: 1.0
Built-By: bradcox
Bundle-Activator: com.gestalt.soakit.test.TestActivator
Created-By: Apache Maven Bundle Plugin
Import-Package: com.gestalt.soakit.test;resolution:=optional;version="
1.0",
com.gestalt.soakit.test.internals;resolution:=optional;version="
1.0",
com.sun.msv.datatype;resolution:=optional,
com.sun.msv.datatype.x
sd;resolution:=optional,
com.sun.org.apache.xerces.internal.parsers;re
solution:=optional,
com.sun.org.apache.xerces.internal.util;resolution
:=optional,
com.sun.org.apache.xerces.internal.xni.parser;resolution:=
optional,
javax.swing;resolution:=optional,
javax.swing.border;resoluti
on:=optional,
javax.swing.event;resolution:=optional,
javax.swing.table
;resolution:=optional,
javax.swing.text;resolution:=optional,
javax.swi
ng.tree;resolution:=optional,
javax.xml.datatype;resolution:=optional,
javax.xml.stream;resolution:=optional,
javax.xml.stream.events;resolut
ion:=optional,
javax.xml.stream.util;resolution:=optional,
org.apache.x
ml.resolver;resolution:=optional,
org.apache.xml.resolver.readers;reso
lution:=optional,
org.gjt.xpp;resolution:=optional,
org.jdom;resolution
:=optional,
org.jdom.input;resolution:=optional,
org.osgi.framework;res
olution:=optional,
org.osgi.util.tracker;resolution:=optional,
org.rela
xng.datatype;resolution:=optional,
org.xmlpull.v1;resolution:=optional
,
sun.io;resolution:=optional
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Embed-Transitive: true
Bnd-LastModified: 1229859848087
Export-Package: com.gestalt.soakit.test;uses:="com.gestalt.soakit.test
.internals,
org.osgi.framework";version="1.0.0.SNAPSHOT",
com.gestalt.s
oakit.test.internals;uses:="org.osgi.framework,
com.gestalt.soakit.tes
t";version="1.0.0.SNAPSHOT"
Bundle-Version: 1.0.0.SNAPSHOT
Bundle-Name: soakit.test
Bundle-Description: Integration tests for soakit core and components
Bundle-ClassPath: .,
xalan-2.6.0.jar,
icu4j-3.8.jar,
jaxme-api-0.3.jar,
xm
lParserAPIs-2.6.2.jar,
xercesImpl-2.6.2.jar,
junit-4.4.jar,
jaxen-1.1-be
ta-4.jar,
dom4j-1.5.2.jar,
xml-apis-1.0.b2.jar,
xom-1.1d2.jar,
soakit.cor
e-1.0-SNAPSHOT.jar
Build-Jdk: 1.5.0_16
Private-Package: nu.xom,
org.apache.xalan.xsltc.compiler,
com.ibm.icu.im
pl.data.icudt38b,
javax.xml.namespace,
com.ibm.icu.impl.data.icudt38b.r
bnf,
org.w3c.dom.events,
org.apache.xerces.impl.xs.traversers,
org.dom4j
.persistence.nativ,
org.jaxen.saxpath,
org.apache.xerces.util,
org.apach
e.xpath.patterns,
com.ibm.icu.math,
com.ibm.icu.text,
junit.runner,
org.a
pache.xpath.res,
com.ibm.icu.impl.data.icudt38b.translit,
javax.xml.par
sers,
org.apache.xerces.jaxp,
nu.xom.xinclude,
org.apache.xml.dtm,
org.ap
ache.bcel.verifier.structurals,
javax.xml.transform.stream,
org.dom4j.p
ersistence,
org.dom4j.dom,
org.apache.xalan.xsltc.compiler.util,
org.jun
it.internal,
org.apache.xalan.xsltc.runtime,
org.apache.html.dom,
org.do
m4j.io,
org.apache.xalan.xslt,
org.dom4j.swing,
org.apache.xerces.impl.x
s.util,
org.w3c.dom.stylesheets,
org.apache.xerces.impl,
com.ibm.icu.imp
l,
org.apache.xpath.axes,
org.junit.experimental.theories.suppliers,
org
.apache.xerces.xs,
javax.xml.bind.util,
org.junit.experimental.theories
,
com.ibm.icu.impl.duration.impl.data,
org.apache.xml.utils,
com.ibm.icu
.lang,
org.apache.xalan.serialize,
org.apache.xerces.impl.xs.models,
org
.apache.xalan.res,
org.xml.sax.ext,
org.xml.sax.helpers,
org.apache.xerc
es.xni.grammars,
org.apache.xerces.impl.xs,
org.apache.xpath.operations
,
javax.xml.bind,
org.dom4j.rule,
org.apache.xalan.extensions,
org.dom4j.
rule.pattern,
org.w3c.dom.ls,
org.apache.bcel,
org.junit.experimental.th
eories.internal,
org.apache.xerces.parsers,
org.apache.xalan.xsltc.cmdl
ine.getopt,
org.apache.xml.utils.res,
org.apache.xerces.xni.parser,
org.
apache.xalan.xsltc.trax,
org.apache.bcel.generic,
org.apache.xerces.imp
l.dv.xs,
com.ibm.icu.impl.data,
nu.xom.xslt,
org.apache.xml.res,
org.jaxe
n.function.xslt,
org.apache.xerces.impl.xpath.regex,
org.jaxen.dom.html
,
org.apache.xalan.templates,
org.apache.xalan.xsltc,
org.hamcrest.core,
org.hamcrest,
com.ibm.icu.impl.data.icudt38b.coll,
org.apache.xerces.im
pl.dv.util,
org.w3c.dom.views,
org.dom4j.xpp,
org.apache.xerces.impl.xs.
opti,
junit.extensions,
org.apache.xerces.impl.io,
org.apache.xerces.imp
l.dv.dtd,
junit.textui,
org.apache.xpath.compiler,
com.ibm.icu.impl.data
.icudt38b.brkitr,
org.apache.wml.dom,
org.apache.bcel.util,
org.apache.x
erces.impl.xs.identity,
javax.xml.transform.dom,
org.w3c.dom.traversal,
org.dom4j,
org.apache.xerces.dom3,
org.jaxen.javabean,
javax.xml.bind.he
lpers,
org.apache.xmlcommons,
org.jaxen.util,
org.dom4j.jaxb,
org.junit.m
atchers,
org.apache.wml,
com.gestalt.soakit.core.internals,
org.apache.b
cel.verifier.exc,
com.gestalt.soakit.core,
org.jaxen.function,
com.ibm.i
cu.impl.duration,
org.junit.runners,
org.apache.xpath.functions,
org.apa
che.xml.dtm.ref,
org.apache.xalan.xsltc.util,
org.apache.xalan.transfor
mer,
org.junit.experimental.results,
org.apache.bcel.classfile,
org.apac
he.xerces.dom3.bootstrap,
org.junit.runner.notification,
javax.xml.tran
sform,
org.apache.xerces.impl.dtd,
org.dom4j.xpath,
org.junit.internal.r
equests,
org.w3c.dom.css,
org.jaxen.dom4j,
org.apache.xerces.impl.dv,
org
.apache.xerces.dom3.as,
org.apache.xalan.processor,
org.apache.xpath,
or
g.dom4j.dtd,
com.ibm.icu.util,
org.apache.xerces.xni,
org.junit.runner,
o
rg.dom4j.datatype,
nu.xom.converters,
org.apache.xalan,
nu.xom.canonical
,
org.apache.xerces.dom.events,
org.w3c.dom.html,
org.apache.xalan.xsltc
.runtime.output,
org.jaxen.expr,
org.apache.xerces.xinclude,
lib,
org.apa
che.xerces.impl.xpath,
org.junit.runner.manipulation,
org.apache.xalan.
xsltc.dom,
org.apache.regexp,
org.apache.xalan.client,
org.jaxen.pattern
,
license,
org.apache.xalan.xsltc.cmdline,
org.apache.xml.dtm.ref.dom2dt
m,
org.w3c.dom.ranges,
org.dom4j.bean,
org.jaxen.jdom,
org.apache.xpath.d
omapi,
org.apache.xerces.impl.validation,
org.apache.bcel.verifier,
org.
jaxen.function.ext,
org.jaxen.saxpath.base,
org.apache.xerces.impl.dtd.
models,
org.dom4j.tree,
org.jaxen.dom,
org.dom4j.util,
org.junit.internal
.runners,
org.jaxen,
java_cup.runtime,
org.apache.xpath.objects,
org.apac
he.bcel.verifier.statics,
org.apache.xalan.lib,
org.jaxen.expr.iter,
org
.apache.xerces.impl.msg,
org.apache.xalan.trace,
org.apache.xml.seriali
zer,
nu.xom.tests,
org.xml.sax,
org.apache.xerces.dom,
org.hamcrest.inter
nal,
org.apache.xml.dtm.ref.sax2dtm,
org.junit,
org.apache.xalan.lib.sql
,
org.apache.xml.serialize,
org.w3c.dom,
javax.xml,
com.ibm.icu.impl.dura
tion.impl,
org.jaxen.xom,
javax.xml.transform.sax,
org.jaxen.saxpath.hel
pers,
org.w3c.dom.xpath,
junit.framework
Originally-Created-By: Apache Maven Bundle Plugin
Bundle-ManifestVersion: 2
Bundle-SymbolicName: soakit.test
Tool: Bnd-0.0.295
Embed-Dependency: *;scope=compile|runtime;inline=false
If I now launch eclipse and open that same file in the dependencies
GUI pane, I see the bizarre packages and no soakit.core. I delete the
strays, add soakit.core, clear out the strays on Runtime/Classpath,
and use Overview/Organize Manifests Wizard, and wind up with something
that looks pretty reasonable:
Manifest-Version: 1.0
Built-By: bradcox
Bundle-Activator: com.gestalt.soakit.test.TestActivator
Created-By: Apache Maven Bundle Plugin
Import-Package: com.gestalt.soakit.core;version="1.0.0.SNAPSHOT",
com.gestalt.soakit.core.internals;version="1.0.0.SNAPSHOT",
com.gestalt.soakit.test;version="1.0";resolution:=optional,
com.gestalt.soakit.test.internals;version="1.0";resolution:=optional
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Embed-Transitive: true
Bnd-LastModified: 1229859848087
Export-Package: com.gestalt.soakit.test;uses:="com.gestalt.soakit.test
.internals,
org.osgi.framework";version="1.0.0.SNAPSHOT",
com.gestalt.s
oakit.test.internals;uses:="org.osgi.framework,
com.gestalt.soakit.tes
t";version="1.0.0.SNAPSHOT"
Bundle-Version: 1.0.0.SNAPSHOT
Bundle-Name: soakit.test
Bundle-Description: Integration tests for soakit core and components
Bundle-ClassPath: .
Build-Jdk: 1.5.0_16
Private-Package: nu.xom,
org.apache.xalan.xsltc.compiler,
com.ibm.icu.im
pl.data.icudt38b,
javax.xml.namespace,
com.ibm.icu.impl.data.icudt38b.r
bnf,
org.w3c.dom.events,
org.apache.xerces.impl.xs.traversers,
org.dom4j
.persistence.nativ,
org.jaxen.saxpath,
org.apache.xerces.util,
org.apach
e.xpath.patterns,
com.ibm.icu.math,
com.ibm.icu.text,
junit.runner,
org.a
pache.xpath.res,
com.ibm.icu.impl.data.icudt38b.translit,
javax.xml.par
sers,
org.apache.xerces.jaxp,
nu.xom.xinclude,
org.apache.xml.dtm,
org.ap
ache.bcel.verifier.structurals,
javax.xml.transform.stream,
org.dom4j.p
ersistence,
org.dom4j.dom,
org.apache.xalan.xsltc.compiler.util,
org.jun
it.internal,
org.apache.xalan.xsltc.runtime,
org.apache.html.dom,
org.do
m4j.io,
org.apache.xalan.xslt,
org.dom4j.swing,
org.apache.xerces.impl.x
s.util,
org.w3c.dom.stylesheets,
org.apache.xerces.impl,
com.ibm.icu.imp
l,
org.apache.xpath.axes,
org.junit.experimental.theories.suppliers,
org
.apache.xerces.xs,
javax.xml.bind.util,
org.junit.experimental.theories
,
com.ibm.icu.impl.duration.impl.data,
org.apache.xml.utils,
com.ibm.icu
.lang,
org.apache.xalan.serialize,
org.apache.xerces.impl.xs.models,
org
.apache.xalan.res,
org.xml.sax.ext,
org.xml.sax.helpers,
org.apache.xerc
es.xni.grammars,
org.apache.xerces.impl.xs,
org.apache.xpath.operations
,
javax.xml.bind,
org.dom4j.rule,
org.apache.xalan.extensions,
org.dom4j.
rule.pattern,
org.w3c.dom.ls,
org.apache.bcel,
org.junit.experimental.th
eories.internal,
org.apache.xerces.parsers,
org.apache.xalan.xsltc.cmdl
ine.getopt,
org.apache.xml.utils.res,
org.apache.xerces.xni.parser,
org.
apache.xalan.xsltc.trax,
org.apache.bcel.generic,
org.apache.xerces.imp
l.dv.xs,
com.ibm.icu.impl.data,
nu.xom.xslt,
org.apache.xml.res,
org.jaxe
n.function.xslt,
org.apache.xerces.impl.xpath.regex,
org.jaxen.dom.html
,
org.apache.xalan.templates,
org.apache.xalan.xsltc,
org.hamcrest.core,
org.hamcrest,
com.ibm.icu.impl.data.icudt38b.coll,
org.apache.xerces.im
pl.dv.util,
org.w3c.dom.views,
org.dom4j.xpp,
org.apache.xerces.impl.xs.
opti,
junit.extensions,
org.apache.xerces.impl.io,
org.apache.xerces.imp
l.dv.dtd,
junit.textui,
org.apache.xpath.compiler,
com.ibm.icu.impl.data
.icudt38b.brkitr,
org.apache.wml.dom,
org.apache.bcel.util,
org.apache.x
erces.impl.xs.identity,
javax.xml.transform.dom,
org.w3c.dom.traversal,
org.dom4j,
org.apache.xerces.dom3,
org.jaxen.javabean,
javax.xml.bind.he
lpers,
org.apache.xmlcommons,
org.jaxen.util,
org.dom4j.jaxb,
org.junit.m
atchers,
org.apache.wml,
com.gestalt.soakit.core.internals,
org.apache.b
cel.verifier.exc,
com.gestalt.soakit.core,
org.jaxen.function,
com.ibm.i
cu.impl.duration,
org.junit.runners,
org.apache.xpath.functions,
org.apa
che.xml.dtm.ref,
org.apache.xalan.xsltc.util,
org.apache.xalan.transfor
mer,
org.junit.experimental.results,
org.apache.bcel.classfile,
org.apac
he.xerces.dom3.bootstrap,
org.junit.runner.notification,
javax.xml.tran
sform,
org.apache.xerces.impl.dtd,
org.dom4j.xpath,
org.junit.internal.r
equests,
org.w3c.dom.css,
org.jaxen.dom4j,
org.apache.xerces.impl.dv,
org
.apache.xerces.dom3.as,
org.apache.xalan.processor,
org.apache.xpath,
or
g.dom4j.dtd,
com.ibm.icu.util,
org.apache.xerces.xni,
org.junit.runner,
o
rg.dom4j.datatype,
nu.xom.converters,
org.apache.xalan,
nu.xom.canonical
,
org.apache.xerces.dom.events,
org.w3c.dom.html,
org.apache.xalan.xsltc
.runtime.output,
org.jaxen.expr,
org.apache.xerces.xinclude,
lib,
org.apa
che.xerces.impl.xpath,
org.junit.runner.manipulation,
org.apache.xalan.
xsltc.dom,
org.apache.regexp,
org.apache.xalan.client,
org.jaxen.pattern
,
license,
org.apache.xalan.xsltc.cmdline,
org.apache.xml.dtm.ref.dom2dt
m,
org.w3c.dom.ranges,
org.dom4j.bean,
org.jaxen.jdom,
org.apache.xpath.d
omapi,
org.apache.xerces.impl.validation,
org.apache.bcel.verifier,
org.
jaxen.function.ext,
org.jaxen.saxpath.base,
org.apache.xerces.impl.dtd.
models,
org.dom4j.tree,
org.jaxen.dom,
org.dom4j.util,
org.junit.internal
.runners,
org.jaxen,
java_cup.runtime,
org.apache.xpath.objects,
org.apac
he.bcel.verifier.statics,
org.apache.xalan.lib,
org.jaxen.expr.iter,
org
.apache.xerces.impl.msg,
org.apache.xalan.trace,
org.apache.xml.seriali
zer,
nu.xom.tests,
org.xml.sax,
org.apache.xerces.dom,
org.hamcrest.inter
nal,
org.apache.xml.dtm.ref.sax2dtm,
org.junit,
org.apache.xalan.lib.sql
,
org.apache.xml.serialize,
org.w3c.dom,
javax.xml,
com.ibm.icu.impl.dura
tion.impl,
org.jaxen.xom,
javax.xml.transform.sax,
org.jaxen.saxpath.hel
pers,
org.w3c.dom.xpath,
junit.framework
Originally-Created-By: Apache Maven Bundle Plugin
Bundle-ManifestVersion: 2
Bundle-SymbolicName: soakit.test
Tool: Bnd-0.0.295
Embed-Dependency: *;scope=compile|runtime;inline=false
But as soon as I do a full build to get something executable (I've
given up on getting eclipse to build anything executable until
somebody provides the secret sauce), maven overwrites this with the
invalid version.
I think what's going on is that maven's manifest prevails so test is
getting soakit.core from two places. Based on that, I'll try reworking
the pom to remove any ambiguity. Could really use any suggestions on
that.
But even more, I could really use a better understanding of why maven
and eclipse aren't working together now, and a fool proof recipe for
how to make them coexist going forward.
I've also tried Netbeans and IntelliJ but these all fail for various
reasons (bnd runs out of memory in IntelliJ building soakit.core for
one). Using Pax-Runner fails running some Eclipse ant script trying to
read bizarre directories. Every environ fails with a different problem.
The only common factor is my busted mental model of how maven and
eclipse work together. Can someone set me straight? Here's my (no
doubt) busted pom:
<?xml version="1.0" encoding="utf-8"?>
<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd"
>
<modelVersion>4.0.0</modelVersion>
<groupId>soakit</groupId>
<artifactId>soakit.test</artifactId>
<version>1.0-SNAPSHOT</version>
<name>soakit.test</name>
<description>Integration tests for soakit core and
components</description>
<packaging>bundle</packaging>
<parent>
<groupId>soakit</groupId>
<artifactId>soakit</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<dependencies>
<dependency>
<groupId>soakit</groupId>
<artifactId>soakit.core</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.4</version>
</dependency>
<!--
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.ipojo.junit4osgi</artifactId>
<version>1.1.0-SNAPSHOT</version>
</dependency>
-->
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>1.5.0-SNAPSHOT</version>
<extensions>true</extensions>
<configuration>
<manifestLocation>src/main/resources/META-INF</manifestLocation>
<instructions>
<Bundle-Version>${pom.version}</Bundle-Version>
<Bundle-SymbolicName>soakit.test</Bundle-SymbolicName>
<Bundle-RequiredExecutionEnvironment>
J2SE-1.5
</Bundle-RequiredExecutionEnvironment>
<Bundle-Activator>
com.gestalt.soakit.test.TestActivator
</Bundle-Activator>
<Export-Package>
com.gestalt.soakit.test.*;version="${pom.version}",
</Export-Package>
<Import-Package>
*;resolution:=optional
</Import-Package>
<Embed-Dependency>*;scope=compile|runtime;inline=false</Embed-Dependency>
<Embed-Transitive>true</Embed-Transitive>
</instructions>
</configuration>
<executions>
<execution>
<id>manifest</id>
<goals>
<goal>manifest</goal>
</goals>
<phase>process-resources</phase>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Richard S. Hall wrote:
Try printing CoreFactoryImpl.class.getClassLoader() within your
bundle using the service tracker and then print
cso.getClass().getClassLoader() from the service object and see if
they are coming from the same class loader.
One thing that seems weird to me, why are you casting to
CoreFactoryImpl instead of CoreFactory?
-> richard
Brad Cox wrote:
For the life of me I can't see why this fails. Here's the runup in
detail:
coreTracker is a ServiceTracker for CoreServiceImpl, defined in a
bundle I'm trying to access from the integration test bundle. These
are the relevant declarations:
public interface CoreFactory extends ServiceFactory
public class CoreFactoryImpl implements CoreFactory
Integration test uses a ServiceTracker (CoreTracker) to locate the
sole core instance from the core bundle like this:
Object cso = coreTracker.getService();
System.out.println("cso:"+cso);
> cso:com.gestalt.soakit.core.internals.corefactoryi...@dead19
So why should this cast fails with a ClassCastException?
CoreFactoryImpl cs = (CoreFactoryImpl)cso;
I'm going blind from staring at this. Maybe someone can spot what
I'm missing. Here's some more detail.
Class csoClass = cso.getClass();
System.out.println("csoClass:"+csoClass);
> csoClass:com.gestalt.soakit.core.internals.CoreFactoryImpl
Class[] csoClasses = csoClass.getClasses();
System.out.println("cso.getClasses():"+csoClass.getClasses());
> cso.getClasses():[Ljava.lang.Class;@1cc5ef
Class[] csoInterfaces = csoClass.getInterfaces();
System.out.println("cso.getInterfaces():"+csoClass.getInterfaces());
> cso.getInterfaces():[Ljava.lang.Class;@c44af4
Here's the full trace
> org.osgi.framework.BundleException: Activator start error in
bundle soakit.test [24].
> at org.apache.felix.framework.Felix._startBundle(Felix.java:1701)
> at org.apache.felix.framework.Felix.startBundle(Felix.java:1578)
> at
org.apache.felix.framework.BundleImpl.start(BundleImpl.java:382)
> at
org.apache.felix.framework.BundleImpl.start(BundleImpl.java:363)
> at
org.apache.felix.shell.impl.StartCommandImpl.execute(StartCommandImpl.java:82)
> at
org.apache.felix.shell.impl.Activator$ShellServiceImpl.executeCommand(Activator.java:276)
> at
org.apache.felix.shell.tui.Activator$ShellTuiRunnable.run(Activator.java:167)
> at java.lang.Thread.run(Thread.java:613)
> Caused by: java.lang.ClassCastException:
com.gestalt.soakit.core.internals.CoreFactoryImpl
> at
com.gestalt.soakit.test.internals.TestImpl.configure(TestImpl.java:49)
> at
com.gestalt.soakit.test.internals.TestFactoryImpl.createTest(TestFactoryImpl.java:35)
> at
com.gestalt.soakit.test.TestActivator.start(TestActivator.java:54)
> at
org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:589)
> at org.apache.felix.framework.Felix._startBundle(Felix.java:1654)
> ... 7 more
> java.lang.ClassCastException:
com.gestalt.soakit.core.internals.CoreFactoryImpl
------------------------------------------------------------------------
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]