if i comment out fetch then it works! hooray!
        Root<QuoteType> quoteType = cq.from(QuoteType.class);
//        quoteType.fetch("quoteTypeCategories", JoinType.LEFT);

is there any way to make fetch work or do you think i have a mapping error somewhere?  i have never had any problems so far

On 24/06/18 13:58, Matthew Broadhead wrote:
i am loading the PU with a producer like
@ApplicationScoped
public class EntityManagerProducer {

    @PersistenceUnit(unitName = "sales")
    private EntityManagerFactory entityManagerFactory;

    @Produces
    @Default
    @RequestScoped
    public EntityManager create() {
        return this.entityManagerFactory.createEntityManager();
    }

    public void dispose(@Disposes @Default EntityManager entityManager) {
        if (entityManager.isOpen()) {
            entityManager.close();
        }
    }
}

On 24/06/18 13:46, Matthew Broadhead wrote:
i changed
@Descriptors(@Descriptor(name = "persistence.xml", path = META-INF/persistence.xml"))
to
@Descriptors(@Descriptor(name = "persistence.xml", path = "src/main/resources/META-INF/persistence.xml"))
and now it is loading the persistence.xml

i still get the same error.  if i turn logging up to TRACE i get the below.  is there any way to find the particular mapping might be causing the problem?

org.apache.openejb.OpenEJBException: Creating application failed: /home/matthew/git/case-management/sales/QuoteGeneratorTest: org.apache.openejb.OpenEJBRuntimeException: <openjpa-2.4.2-r422266:1777108 fatal general error> org.apache.openjpa.persistence.PersistenceException: There was an error when invoking the static newInstance method on the named factory class "org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory". See the nested exception for details.: <openjpa-2.4.2-r422266:1777108 fatal general error> org.apache.openjpa.persistence.PersistenceException: There was an error when invoking the static newInstance method on the named factory class "org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory". See the nested exception for details.     at org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:1042)     at org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:718)     at org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:714)     at org.apache.openejb.testing.ApplicationComposers.deployApp(ApplicationComposers.java:724)     at org.apache.openejb.testing.ApplicationComposers.before(ApplicationComposers.java:386)     at org.apache.openejb.testing.ApplicationComposers.evaluate(ApplicationComposers.java:1068)     at org.apache.openejb.junit.DeployApplication.evaluate(DeployApplication.java:40)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)     at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)     at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:538)     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:760)     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:460)     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206) Caused by: org.apache.openejb.OpenEJBException: org.apache.openejb.OpenEJBRuntimeException: <openjpa-2.4.2-r422266:1777108 fatal general error> org.apache.openjpa.persistence.PersistenceException: There was an error when invoking the static newInstance method on the named factory class "org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory". See the nested exception for details.: <openjpa-2.4.2-r422266:1777108 fatal general error> org.apache.openjpa.persistence.PersistenceException: There was an error when invoking the static newInstance method on the named factory class "org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory". See the nested exception for details.     at org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:873)
    ... 21 more
Caused by: org.apache.openejb.OpenEJBRuntimeException: <openjpa-2.4.2-r422266:1777108 fatal general error> org.apache.openjpa.persistence.PersistenceException: There was an error when invoking the static newInstance method on the named factory class "org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory". See the nested exception for details.     at org.apache.openejb.assembler.classic.ReloadableEntityManagerFactory.createDelegate(ReloadableEntityManagerFactory.java:136)     at org.apache.openejb.assembler.classic.ReloadableEntityManagerFactory.<init>(ReloadableEntityManagerFactory.java:105)     at org.apache.openejb.assembler.classic.PersistenceBuilder.createEntityManagerFactory(PersistenceBuilder.java:157)     at org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:867)
    ... 21 more
Caused by: <openjpa-2.4.2-r422266:1777108 fatal general error> org.apache.openjpa.persistence.PersistenceException: There was an error when invoking the static newInstance method on the named factory class "org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory". See the nested exception for details.     at org.apache.openjpa.kernel.Bootstrap.newBrokerFactory(Bootstrap.java:73)     at org.apache.openjpa.persistence.PersistenceProviderImpl.getBrokerFactory(PersistenceProviderImpl.java:149)     at org.apache.openjpa.persistence.PersistenceProviderImpl.createContainerEntityManagerFactory(PersistenceProviderImpl.java:191)     at org.apache.openjpa.persistence.PersistenceProviderImpl.createContainerEntityManagerFactory(PersistenceProviderImpl.java:63)     at org.apache.openejb.assembler.classic.EntityManagerFactoryCallable.call(EntityManagerFactoryCallable.java:109)     at org.apache.openejb.assembler.classic.ReloadableEntityManagerFactory.createDelegate(ReloadableEntityManagerFactory.java:134)
    ... 24 more
Caused by: java.lang.IllegalStateException: On a thread without an initialized context nor a classloader mapping a deployed app     at org.apache.openejb.cdi.ThreadSingletonServiceImpl.get(ThreadSingletonServiceImpl.java:287)     at org.apache.openejb.cdi.ThreadSingletonServiceImpl.getContext(ThreadSingletonServiceImpl.java:263)     at org.apache.openejb.cdi.ThreadSingletonServiceImpl.get(ThreadSingletonServiceImpl.java:298)     at org.apache.openejb.cdi.ThreadSingletonServiceImpl.get(ThreadSingletonServiceImpl.java:60)     at org.apache.webbeans.config.WebBeansFinder.getSingletonInstance(WebBeansFinder.java:51)     at org.apache.webbeans.config.WebBeansContext.getInstance(WebBeansContext.java:185)     at org.apache.webbeans.config.WebBeansContext.currentInstance(WebBeansContext.java:203)     at org.apache.openejb.assembler.classic.EntityManagerFactoryCallable$BmHandler.findBm(EntityManagerFactoryCallable.java:170)     at org.apache.openejb.assembler.classic.EntityManagerFactoryCallable$BmHandler.invoke(EntityManagerFactoryCallable.java:158)
    at com.sun.proxy.$Proxy38.toString(Unknown Source)
    at java.lang.String.valueOf(String.java:2994)
    at java.lang.StringBuilder.append(StringBuilder.java:131)
    at java.util.AbstractMap.toString(AbstractMap.java:559)
    at java.text.MessageFormat.subformat(MessageFormat.java:1280)
    at java.text.MessageFormat.format(MessageFormat.java:865)
    at java.text.Format.format(Format.java:157)
    at java.text.MessageFormat.format(MessageFormat.java:841)
    at org.apache.openjpa.lib.util.Localizer$Message.getMessage(Localizer.java:282)     at org.apache.openjpa.lib.util.Localizer$Message.toString(Localizer.java:309)     at org.apache.openjpa.lib.log.AbstractLog.toString(AbstractLog.java:138)
    at org.apache.openjpa.lib.log.AbstractLog.trace(AbstractLog.java:72)
    at org.apache.openjpa.lib.log.AbstractLog.trace(AbstractLog.java:67)
    at org.apache.openjpa.persistence.PersistenceProductDerivation$ConfigurationProviderImpl.setInto(PersistenceProductDerivation.java:764)     at org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.newInstance(JDBCBrokerFactory.java:60)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.openjpa.kernel.Bootstrap.invokeFactory(Bootstrap.java:131)     at org.apache.openjpa.kernel.Bootstrap.newBrokerFactory(Bootstrap.java:65)
    ... 29 more

On 24/06/18 13:02, Romain Manni-Bucau wrote:
mapping error in your model it seems or bad persistence unit definition if
you dont use scanning.

Romain Manni-Bucau
@rmannibucau <https://twitter.com/rmannibucau> |  Blog
<https://rmannibucau.metawerx.net/> | Old Blog
<http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> |
LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
<https://www.packtpub.com/application-development/java-ee-8-high-performance>


Le dim. 24 juin 2018 à 12:52, Matthew Broadhead
<matthew.broadh...@nbmlaw.co.uk.invalid> a écrit :

thanks.  removing the @Jars helped. it is now injecting CDI bean fine.
but now i get OpenJPA NPE on
List<QuoteType> quoteTypeList = query.getResultList();

<openjpa-2.4.2-r422266:1777108 nonfatal general error>
org.apache.openjpa.persistence.PersistenceException: null
      at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:1029)       at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:928)
      at

org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:1032)
      at
org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:280)
      at

org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.load(SelectImpl.java:2382)
      at
org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:274)
      at

org.apache.openjpa.jdbc.kernel.InstanceResultObjectProvider.getResultObject(InstanceResultObjectProvider.java:59)
      at

org.apache.openjpa.kernel.QueryImpl$PackingResultObjectProvider.getResultObject(QueryImpl.java:2080)
      at
org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:35)       at org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1257)       at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:1013)       at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:869)       at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:800)
      at
org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:541)
      at
org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:274)
      at
org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:290)
      at
uk.me.kissy.sales.dao.QuoteTypeDao.selectQuoteTypes(QuoteTypeDao.java:51)
      at

uk.me.kissy.sales.dao.QuoteTypeDao$$OwbNormalScopeProxy0.selectQuoteTypes(uk/me/kissy/sales/dao/QuoteTypeDao.java)
      at
uk.me.kissy.sales.test.QuoteGeneratorTest.test1(QuoteGeneratorTest.java:96)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at

sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      at

sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:498)
      at

org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
      at

org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
      at

org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
      at

org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
      at

org.apache.openejb.junit.DeployApplication$1.call(DeployApplication.java:44)
      at

org.apache.openejb.junit.DeployApplication$1.call(DeployApplication.java:40)
      at

org.apache.openejb.testing.ApplicationComposers.evaluate(ApplicationComposers.java:1070)
      at

org.apache.openejb.junit.DeployApplication.evaluate(DeployApplication.java:40)
      at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
      at

org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
      at

org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
      at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
      at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)       at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)       at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)       at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
      at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
      at

org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
      at

org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
      at

org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:538)
      at

org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:760)
      at

org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:460)
      at

org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)
Caused by: java.lang.NullPointerException
      at

org.apache.openjpa.jdbc.kernel.JDBCStoreManager.setInverseRelation(JDBCStoreManager.java:452)
      at

org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:412)
      at

org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:305)
      at

org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:112)
      at

org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57)
      at
org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:1048)
      at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:1006)
      ... 45 more


On 24/06/18 12:18, Romain Manni-Bucau wrote:
you don't need @Jars for that

why you get an exception is cause appcomposers knows mysql has no EE
classes so it is excluded from the "find" logic. @Jars means "grab the
jars
matching this prefix and scan them to include them in the deployed app".

Romain Manni-Bucau
@rmannibucau <https://twitter.com/rmannibucau> | Blog
<https://rmannibucau.metawerx.net/> | Old Blog
<http://rmannibucau.wordpress.com> | Github <
https://github.com/rmannibucau> |
LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
<
https://www.packtpub.com/application-development/java-ee-8-high-performance


Le dim. 24 juin 2018 à 12:15, Matthew Broadhead
<matthew.broadh...@nbmlaw.co.uk.invalid> a écrit :

i tried adding test scope to pom.xml
<dependency>
               <groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.connector.version}</version>
               <scope>test</scope>
           </dependency>

also added mysql-connector-java-5.1.33.jar to the root of
src/test/resources but i still get
java.lang.IllegalArgumentException: mysql not found in classpath
       at


org.apache.openejb.testing.ApplicationComposers.findFiles(ApplicationComposers.java:1020)
       at


org.apache.openejb.testing.ApplicationComposers.addWebApp(ApplicationComposers.java:899)
       at


org.apache.openejb.testing.ApplicationComposers.deployApp(ApplicationComposers.java:651)

On 24/06/18 12:01, Romain Manni-Bucau wrote:
Appcopposer loads classes in the classpath so add it as a test
dependency.
Le dim. 24 juin 2018 11:37, Matthew Broadhead
<matthew.broadh...@nbmlaw.co.uk.invalid> a écrit :

not much luck with arquillian. i am trying ApplicationComposer again.
now i understand the properties format
@ContainerProperties({ @ContainerProperties.Property(name = "sales",
value = "new://Resource?type=DataSource"),
            @ContainerProperties.Property(name = "sales.JdbcDriver",
value
= "com.mysql.jdbc.Driver"),
            @ContainerProperties.Property(name = "sales.JdbcUrl",
value =
"jdbc:mysql://localhost:3306/sales"),
            @ContainerProperties.Property(name = "sales.Username",
value =
"admin"),
            @ContainerProperties.Property(name = "sales.Password",
value =
"blahblah") })

but now i get
org.apache.xbean.propertyeditor.PropertyEditorException: Unable to
resolve class com.mysql.jdbc.Driver
        at


org.apache.xbean.propertyeditor.ClassEditor.toObjectImpl(ClassEditor.java:43)
        at


org.apache.xbean.propertyeditor.AbstractConverter.toObject(AbstractConverter.java:86)
how to bundle the mysql driver? i tried
@Jars("mysql")

On 23/06/18 21:58, Romain Manni-Bucau wrote:
You need all your tested app needs (this is why classpath deploypent
solutions are easier to maintain).

Maybe import our ziplock lib and use Mvn.Builder class if you are
maven
based. It can help.

Le sam. 23 juin 2018 20:09, Matthew Broadhead
<matthew.broadh...@nbmlaw.co.uk.invalid> a écrit :

ah ok.  i found
.addAsManifestResource(new
ClassLoaderAsset("META-INF/persistence.xml"),
"persistence.xml")

in


http://svn.apache.org/repos/asf/tomee/tomee/trunk/examples/arquillian-jpa/src/test/java/org/superbiz/arquillian/test/persistence/PersistenceTest.java
but now i am back to
SEVERE - CDI Beans module deployment failed
org.apache.webbeans.exception.WebBeansDeploymentException:
javax.enterprise.inject.UnsatisfiedResolutionException: Api type
[uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the
qualifiers
Qualifiers: [@javax.enterprise.inject.Default()]
for injection into Field Injection Point, field name : quoteTypeDao,
Bean Owner : [QuoteGeneratorArquillian, WebBeansType:ENTERPRISE,
Name:null, API

Types:[uk.me.kissy.sales.test.QuoteGeneratorArquillian,java.lang.Object], Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
         at

org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:327)
so i must have missed a required class somewhere

On 23/06/18 18:53, Matthew Broadhead wrote:
do i need to copy the persistence.xml to
src/test/resources/META-INF?
or can i specify its location somewhere in config?

SEVERE - FAIL ... sales:    Missing required persistence.xml for
@PersistenceUnit ref "entityManagerFactory" to unit "sales"
SEVERE - Invalid EjbModule(name=sales,

path=/home/matthew/git/case-management/sales/target/working-dir/0/sales)
SEVERE - FAIL ... sales:    Missing required persistence.xml for
@PersistenceUnit ref "entityManagerFactory" to unit "sales"
SEVERE - Invalid WebModule(name=sales,

path=/home/matthew/git/case-management/sales/target/working-dir/0/sales)
INFO - Set the 'openejb.validation.output.level' system property to
VERBOSE for increased validation details.
SEVERE - Unable to deploy collapsed ear in war

StandardEngine[Catalina].StandardHost[localhost].StandardContext[/sales]
org.apache.openejb.config.ValidationFailedException: Module failed
validation. AppModule(name=sales)
        at

org.apache.openejb.config.ReportValidationResults.deploy(ReportValidationResults.java:88)
        at

org.apache.openejb.config.AppInfoBuilder.build(AppInfoBuilder.java:322)
On 23/06/18 13:30, Romain Manni-Bucau wrote:
You can but you need to add all the object graph in the archive.
Here
you
miss an injection it seems (in your dao?).

Side note: operatesondeployment and naming your archive is not
needed
here.
It is useful when you deploy N > 1 archives.

Le sam. 23 juin 2018 12:54, Matthew Broadhead
<matthew.broadh...@nbmlaw.co.uk.invalid> a écrit :

i got the sample configuration from
http://tomee.apache.org/developer/testing/arquillian/index.html
under
remote section.

now my problem is that i can't inject the CDI bean
SEVERE - CDI Beans module deployment failed
org.apache.webbeans.exception.WebBeansDeploymentException:
javax.enterprise.inject.UnsatisfiedResolutionException: Api type
[uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the
qualifiers
Qualifiers: [@javax.enterprise.inject.Default()]
for injection into Field Injection Point, field name :
quoteTypeDao,
Bean Owner : [QuoteGeneratorArquillian, WebBeansType:ENTERPRISE,
Name:null, API

Types:[uk.me.kissy.sales.test.QuoteGeneratorArquillian,java.lang.Object], Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
          at

org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:327)
          at


org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(OpenEJBLifecycle.java:196)
i created the @Deployment using
@Inject
          private QuoteTypeDao quoteTypeDao;

          @Deployment(name = "archive")
          public static WebArchive war() {
              return ShrinkWrap.create(WebArchive.class,
"test.war").addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml")
.addClasses(QuoteTypeDao.class);
          }

          @Test
          @OperateOnDeployment("archive")
          public void test1() {
              Quote quote = new Quote();
              Promotion promotion = null;
              List<QuoteType> quoteTypeList =
quoteTypeDao.selectQuoteTypes(promotion, true);
              System.out.println("Quote type list size: " +
quoteTypeList.size());
              for (QuoteType quoteType : quoteTypeList) {
System.out.println(quoteType.getName());
                  // quoteGeneratorDao.generateQuote(quote,
promotion,
                  // quoteType.getQuoteTypeCategories(),
quoteQuestions,
                  // quoteInit, true);
                  assertEquals(0, 1);
              }
              assertEquals(0, 1);
          }

can i not inject a CDI bean into the test using
arquillian-tomee-remote?

On 23/06/18 10:17, Romain Manni-Bucau wrote:
It is not needed at all bit it appears in your stack. If it is a
copy
paste
just drop it ;)

Le sam. 23 juin 2018 10:05, Matthew Broadhead
<matthew.broadh...@nbmlaw.co.uk.invalid> a écrit :

hi, i checked http://incubator.apache.org/projects/sirona.html
but i
couldn't find any documentation.  is sirona a requirement for
arquillian-tomee-remote?  i.e. is it necessary to monitor
tests?
if so,
then how do i exclude the mysql lib from the configuration?
<!-- we monitor the test with sirona -->
<property name="javaagent">

mvn:org.apache.sirona:sirona-javaagent:0.2-incubating:jar:shaded
</property>

On 23/06/18 08:15, Romain Manni-Bucau wrote:
Exclude mysql from sirona instrumentation. Its bytecode is not
safe.
Le sam. 23 juin 2018 01:03, Matthew Broadhead
<matthew.broadh...@nbmlaw.co.uk.invalid> a écrit :

thanks i added it using
<property

name="additionalLibs">mvn:mysql:mysql-connector-java:5.1.33</property>
but i get these errors (which don't seem to stop execution)

fail to transform
class:com/mysql/jdbc/AbandonedConnectionCleanupThread,
JSR/RET are not supported with computeFrames
optionjava.lang.RuntimeException: JSR/RET are not supported
with
computeFrames option
            at org.apache.sirona.asm.Frame.a(Unknown Source)
            at
org.apache.sirona.asm.MethodWriter.visitJumpInsn(Unknown
Source)
SEVERE - Can't create DataSource
java.lang.LinkageError: loader (instance of
java/net/URLClassLoader):
attempted  duplicate class definition for name:
"com/mysql/jdbc/ConnectionImpl"

but this one is a stopper

SEVERE - CDI Beans module deployment failed
org.apache.webbeans.exception.WebBeansDeploymentException: javax.enterprise.inject.UnsatisfiedResolutionException: Api
type
[uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the
qualifiers
Qualifiers: [@javax.enterprise.inject.Default()]
for injection into Field Injection Point, field name :
quoteTypeDao,
Bean Owner : [QuoteGeneratorArquillian,
WebBeansType:ENTERPRISE,
Name:null, API
Types:[java.lang.Object,uk.me
.kissy.sales.test.QuoteGeneratorArquillian],

Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
i tried enabling remote support as i am trying remote not
embedded
tomee.remote.support = true
# tomee.serialization.class.blacklist = *
tomee.serialization.class.whitelist = *

On 22/06/18 18:44, Romain Manni-Bucau wrote:
You can add it in libs property of arquillian container
config.
Just
prefix
the coords with mvn:.

Ex: mvn:mysql:mysql-connector-jav:version

It is a multiline property so you can add N libs to tomee
lib
this
way
Le ven. 22 juin 2018 18:13, Matthew Broadhead
<matthew.broadh...@nbmlaw.co.uk.invalid> a écrit :

INFO: Downloading
org.apache.tomee:apache-tomee:7.0.3:zip:plus
please
wait...

i have an arquillian test running up ok but it is
complaining
SEVERE - FATAL ERROR: Unknown error in Assembler. Please
send
the
following stack trace and this message to
users@tomee.apache.org :
org.apache.xbean.propertyeditor.PropertyEditorException:
Unable to
resolve class com.mysql.jdbc.Driver

is there any way to directly bring in the mysql driver from
maven
central? or do i need to download manually and put it into
src/test/tomee/lib?


On 22/06/18 10:03, Romain Manni-Bucau wrote:
You can theorically but I'd recommand you to write it in
the
final
module
instead of trying to use the parent which will be executed
before
any
other
modules.

If A depends on B which depends on C then write your tests
in
A for
the
complete app tests and write unit tests in B and C
(potentially
using
arquillian, appcomposer or even other solutions).

For reference:

http://tomee.apache.org/developer/testing/arquillian/index.html
and
http://tomee.apache.org/developer/testing/index.html

Romain Manni-Bucau
@rmannibucau <https://twitter.com/rmannibucau> |  Blog
<https://rmannibucau.metawerx.net/> | Old Blog
<http://rmannibucau.wordpress.com> | Github <
https://github.com/rmannibucau> |
LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
<
https://www.packtpub.com/application-development/java-ee-8-high-performance
Le ven. 22 juin 2018 à 09:42, Matthew Broadhead
<matthew.broadh...@nbmlaw.co.uk.invalid> a écrit :

it sounds like Arquillian might be the best fit in my
case.
can
the
tests inject CDI beans from the webapps or does
everything
need to
be
done through http? looking at
https://tomee.apache.org/refcard/refcard.html "Simple
Arquilian
Test"
it
looks as if beans can be injected...

is it possible to create the tests (or at least TomEE
instance)
in a
parent pom?  i need to run several webapps at once which
are
all
modules
of the parent.  i think code is discouraged in parent
project.
On 22/06/18 09:18, Romain Manni-Bucau wrote:
You can set the property openejb.location (or the other
ones we
have)
to
point to an openejb.xml if you want. The advantage of
the
properties
is
that it is filtered during the test and doesnt require a
maven
build
but
it
is up to you and depends the project setup.

Arquillian is great to test complete application*s* in a
real
server,
ApplicationComposer is good to test small parts of
applications
or
frameworks, TomEE,
TomEEEmbeddedSingleRunner is great to test a real app
(single
deployment
from the classpath + single test setup) and will save a
lot
of
time.
Romain Manni-Bucau
@rmannibucau <https://twitter.com/rmannibucau> | Blog
<https://rmannibucau.metawerx.net/> | Old Blog
<http://rmannibucau.wordpress.com> | Github <
https://github.com/rmannibucau> |
LinkedIn <https://www.linkedin.com/in/rmannibucau> |
Book
<
https://www.packtpub.com/application-development/java-ee-8-high-performance
Le ven. 22 juin 2018 à 09:03, Matthew Broadhead
<matthew.broadh...@nbmlaw.co.uk.invalid> a écrit :

i am trying to use ApplicationComposer to create some
tests.
CDI
is
scanning the classes correctly but i am a little
uncertain
about
how
to
load a test database.

i was going to start by just loading the database as
normal as
it
is a
copy of production database. but how do i specify the
username
and
password or any other properties that are needed to
connect to
the
db?
@ContainerProperties(@ContainerProperties.Property(name =
"mydb",
value
= "jdbc:mysql://localhost:3306/mydb"))

is there a way to specify the resource in an xml file?

another question...is it better to start with
Arquillian
or
ApplicationComposer?








Reply via email to