6 Replies Latest reply on Mar 24, 2011 11:07 AM by mausbull

    Alpha5 - problem with producer methods/fields

    mausbull

      Hi,

       

      I just upgraded arquillian from alpha4 to alpha5 and experience now the problem that my producer methods/fields do not work anymore.

       

      Example:

       

      I have a producer field for the EntityManger:

       

      public class DBFactory
      {
        @PersistenceUnit(unitName = "seqbench")
        @Produces
        @ExtensionManaged
        @SBPersistence
        EntityManagerFactory emf;
      }
      

       

      The produced EntityManager is then used in my class:

       

      @Stateless
      public class UsermanagementBridge implements Serializable
      {  
        @Inject
        @SBRequestPersistence
        private EntityManager entityManager;
      
        ...
      }
      

       

       

      Using arquillian alpha4 that just worked fine but with alpha5 I get a

       

      Unsatisfied dependencies for type [EntityManager] with qualifiers [@SBRequestPersistence] at injection point [[field] @Inject @SBRequestPersistence private at.icbi.seqbench.component.usermanagement.UsermanagementBridge.entityManager]

       

       

      Does anybody know a solution to this problem?

       

      Thanks

      Stephan

        • 1. Alpha5 - problem with producer methods/fields
          aslak

          Which arquillian container are you using and which contianer v (+ actual container runtime lib v's)?

          • 2. Alpha5 - problem with producer methods/fields
            mausbull

            I have the following versions in my pom file:

             

            Test:

            - arquillian.version -> 1.0.0.Alpha5

            - version.junit -> 4.8.2

            - weld.core.version -> 1.1.0.Final

             

            Container:

            - JBoss 6.0.0.Final

            remote configuration (arquillian-jbossas-remote-6)

             

            Seam:

            version CR3

            - config

            - faces

            - international

            - persistence

            - security

            - servlet

            - solder

            • 3. Alpha5 - problem with producer methods/fields
              aslak

              hmm, what about your @Deployment definition?

              • 4. Re: Alpha5 - problem with producer methods/fields
                mausbull

                I've added all methods that are used in the method annotated with @Deployment

                 

                 @Deployment
                  public static Archive<?> createTestArchive()
                  {
                     WebArchive war = JBossasTestUtils.createSolderPersistenceTestArchive();
                
                     war.addAsLibraries(MavenArtifactResolver.resolve(ArtifactNames.SEAM_SERVLET_API));
                     war.addAsLibraries(MavenArtifactResolver.resolve(ArtifactNames.SEAM_SERVLET_IMPL));
                
                     war.addAsLibraries(MavenArtifactResolver.resolve(ArtifactNames.SEAM_CONFIG));
                
                     war.addAsLibraries(MavenArtifactResolver.resolve(ArtifactNames.SEAM_INTERNATIONAL_API));
                     war.addAsLibraries(MavenArtifactResolver.resolve(ArtifactNames.SEAM_INTERNATIONAL_IMPL));
                
                     war.addAsLibraries(MavenArtifactResolver.resolve(ArtifactNames.SEAM_FACES_API));
                     war.addAsLibraries(MavenArtifactResolver.resolve(ArtifactNames.SEAM_FACES_IMPL));
                
                     war.addAsLibraries(MavenArtifactResolver.resolve(ArtifactNames.JAVAX_FACES));
                
                     war.addAsLibraries(MavenArtifactResolver.resolve(ArtifactNames.SEAM_SECURITY_API));     
                
                     //Project specific lib
                     war.addAsLibraries(MavenArtifactResolver.resolve(ArtifactNames.USERMANAGEMENT_UTILS));
                
                     war.addClasses(getTestClasses());
                
                     return war;
                  }
                
                

                 

                 

                public static Class<?>[] getTestClasses()
                  {
                    return new Class[] {       
                        DBFactoryRequest.class,
                        SBRequestPersistence.class,
                
                        //Project classes
                        ...
                
                        };
                  }
                

                 

                 

                 

                  public static WebArchive createSolderPersistenceTestArchive()
                  {
                    WebArchive war = ShrinkWrap.createDomain().getArchiveFactory().create(WebArchive.class, "test.war");
                    war.addAsLibraries(MavenArtifactResolver.resolve(ArtifactNames.SEAM_SOLDER));    war.addAsLibraries(MavenArtifactResolver.resolve(ArtifactNames.SEAM_PERSISTENCE_API));
                    war.addAsLibraries(MavenArtifactResolver.resolve(ArtifactNames.SEAM_PERSISTENCE_IMPL));
                
                    war.addAsResource(new File("src/test/resources/seamTest-persistence.xml"), ArchivePaths.create("META-INF/persistence.xml"));
                
                    war.addAsWebResource(new ByteArrayAsset(new byte[0]), "beans.xml");   
                    return war;  }
                
                
                • 5. Re: Alpha5 - problem with producer methods/fields
                  aslak

                  The ShrinkWrap API has changed a bit, in createSolderPersistenceTestArchive

                   

                  war.addAsWebResource will put beans.xml in /, you want to use addAsWebInfResource to have it placed in /WEB-INF.

                  • 6. Re: Alpha5 - problem with producer methods/fields
                    mausbull

                    Thanks a lot. That fixed the problem.

                     

                    Stephan