You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomee.apache.org by David Jencks <da...@yahoo.com> on 2010/07/22 19:30:43 UTC

Re: svn commit: r965072 - /openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/rules/CheckPersistenceUnitUsageTest.java

I fixed the spelling on some of the keys (pre>>per) in rev 966758

Also I straightened out some of the logic in AnnotationDeployer.  I think there is at least one type that isn't getting validated there.... I added a TODO at line 2907.  I'm also not 100% sure about overriding ejb refs in buildEjbRef line 2375.

This validation stuff is great... I hadn't seen it before!!!

thanks
david jencks

On Jul 17, 2010, at 6:24 AM, kmalhi@apache.org wrote:

> Author: kmalhi
> Date: Sat Jul 17 13:24:03 2010
> New Revision: 965072
> 
> URL: http://svn.apache.org/viewvc?rev=965072&view=rev
> Log:
> Tests all @PersistenceUnit usage
> 
> Added:
>    openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/rules/CheckPersistenceUnitUsageTest.java
> 
> Added: openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/rules/CheckPersistenceUnitUsageTest.java
> URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/rules/CheckPersistenceUnitUsageTest.java?rev=965072&view=auto
> ==============================================================================
> --- openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/rules/CheckPersistenceUnitUsageTest.java (added)
> +++ openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/rules/CheckPersistenceUnitUsageTest.java Sat Jul 17 13:24:03 2010
> @@ -0,0 +1,96 @@
> +/**
> + * Licensed to the Apache Software Foundation (ASF) under one or more
> + * contributor license agreements.  See the NOTICE file distributed with
> + * this work for additional information regarding copyright ownership.
> + * The ASF licenses this file to You under the Apache License, Version 2.0
> + * (the "License"); you may not use this file except in compliance with
> + * the License.  You may obtain a copy of the License at
> + *
> + *     http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing, software
> + * distributed under the License is distributed on an "AS IS" BASIS,
> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> + * See the License for the specific language governing permissions and
> + * limitations under the License.
> + */
> +package org.apache.openejb.config.rules;
> +
> +import javax.persistence.EntityManager;
> +import javax.persistence.EntityManagerFactory;
> +
> +import org.apache.openejb.OpenEJBException;
> +import org.apache.openejb.config.AppModule;
> +import org.apache.openejb.config.EjbModule;
> +import org.apache.openejb.config.PersistenceModule;
> +import org.apache.openejb.jee.EjbJar;
> +import org.apache.openejb.jee.StatelessBean;
> +import org.apache.openejb.jee.jpa.unit.PersistenceUnit;
> +import org.junit.runner.RunWith;
> +
> +@RunWith(ValidationRunner.class)
> +public class CheckPersistenceUnitUsageTest {
> +    @Keys( { @Key(value = "persistenceUnitRef.noPersistenceUnits", count = 3), @Key("presistenceUnitAnnotation.onClassWithNoName"),
> +            @Key("presistenceUnitAnnotation.onEntityManager"), @Key("presistenceUnitAnnotation.onNonEntityManagerFactory") })
> +    public EjbJar wrongUsage() throws OpenEJBException {
> +        EjbJar ejbJar = new EjbJar();
> +        ejbJar.addEnterpriseBean(new StatelessBean(FooStateless.class));
> +        return ejbJar;
> +    }
> +
> +    @Keys( { @Key(value = "persistenceUnitRef.noMatches"), @Key(value = "persistenceUnitRef.noUnitName") })
> +    public AppModule noUnitName() {
> +        EjbJar ejbJar = new EjbJar();
> +        ejbJar.addEnterpriseBean(new StatelessBean(FooStatelessOne.class));
> +        EjbModule ejbModule = new EjbModule(ejbJar);
> +        AppModule appModule = new AppModule(ejbModule.getClassLoader(), ejbModule.getJarLocation());
> +        appModule.getEjbModules().add(ejbModule);
> +        PersistenceUnit pu = new PersistenceUnit("fooUnit");
> +        PersistenceUnit pu1 = new PersistenceUnit("fooUnit1");
> +        PersistenceUnit pu2 = new PersistenceUnit("fooUnit");
> +        org.apache.openejb.jee.jpa.unit.Persistence p = new org.apache.openejb.jee.jpa.unit.Persistence(pu, pu1, pu2);
> +        PersistenceModule pm = new PersistenceModule("foo", p);
> +        appModule.getPersistenceModules().add(pm);
> +        return appModule;
> +    }
> +
> +    @Keys( { @Key(value = "persistenceUnitRef.vagueMatches") })
> +    public AppModule vagueMatches() {
> +        EjbJar ejbJar = new EjbJar();
> +        ejbJar.addEnterpriseBean(new StatelessBean(FooStatelessTwo.class));
> +        EjbModule ejbModule = new EjbModule(ejbJar);
> +        AppModule appModule = new AppModule(ejbModule.getClassLoader(), ejbModule.getJarLocation());
> +        appModule.getEjbModules().add(ejbModule);
> +        PersistenceUnit pu = new PersistenceUnit("fooUnit");
> +        org.apache.openejb.jee.jpa.unit.Persistence p = new org.apache.openejb.jee.jpa.unit.Persistence(pu);
> +        PersistenceModule pm = new PersistenceModule("foo", p);
> +        appModule.getPersistenceModules().add(pm);
> +        PersistenceUnit pu1 = new PersistenceUnit("fooUnit");
> +        org.apache.openejb.jee.jpa.unit.Persistence p1 = new org.apache.openejb.jee.jpa.unit.Persistence(pu1);
> +        PersistenceModule pm1 = new PersistenceModule("foo1", p1);
> +        appModule.getPersistenceModules().add(pm1);
> +        return appModule;
> +    }
> +
> +    @javax.persistence.PersistenceUnit
> +    private static class FooStateless {
> +        @javax.persistence.PersistenceUnit
> +        EntityManagerFactory emf;
> +        @javax.persistence.PersistenceUnit
> +        EntityManager em;
> +        @javax.persistence.PersistenceUnit
> +        String nonEntityManagerFactory;
> +    }
> +
> +    private static class FooStatelessOne {
> +        @javax.persistence.PersistenceUnit(unitName = "wrongName")
> +        EntityManagerFactory emf;
> +        @javax.persistence.PersistenceUnit
> +        EntityManagerFactory emf1;
> +    }
> +
> +    private static class FooStatelessTwo {
> +        @javax.persistence.PersistenceUnit(unitName = "fooUnit")
> +        EntityManagerFactory emf;
> +    }
> +}
> 
> 


Re: svn commit: r965072 - /openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/rules/CheckPersistenceUnitUsageTest.java

Posted by Karan Malhi <ka...@gmail.com>.
Thanks. I need to write up a document explaining how to write tests using
this framework.
Will see if i can work on that TODO.

On Thu, Jul 22, 2010 at 1:30 PM, David Jencks <da...@yahoo.com>wrote:

> I fixed the spelling on some of the keys (pre>>per) in rev 966758
>
> Also I straightened out some of the logic in AnnotationDeployer.  I think
> there is at least one type that isn't getting validated there.... I added a
> TODO at line 2907.  I'm also not 100% sure about overriding ejb refs in
> buildEjbRef line 2375.
>
> This validation stuff is great... I hadn't seen it before!!!
>
> thanks
> david jencks
>
> On Jul 17, 2010, at 6:24 AM, kmalhi@apache.org wrote:
>
> > Author: kmalhi
> > Date: Sat Jul 17 13:24:03 2010
> > New Revision: 965072
> >
> > URL: http://svn.apache.org/viewvc?rev=965072&view=rev
> > Log:
> > Tests all @PersistenceUnit usage
> >
> > Added:
> >
>  openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/rules/CheckPersistenceUnitUsageTest.java
> >
> > Added:
> openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/rules/CheckPersistenceUnitUsageTest.java
> > URL:
> http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/rules/CheckPersistenceUnitUsageTest.java?rev=965072&view=auto
> >
> ==============================================================================
> > ---
> openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/rules/CheckPersistenceUnitUsageTest.java
> (added)
> > +++
> openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/rules/CheckPersistenceUnitUsageTest.java
> Sat Jul 17 13:24:03 2010
> > @@ -0,0 +1,96 @@
> > +/**
> > + * Licensed to the Apache Software Foundation (ASF) under one or more
> > + * contributor license agreements.  See the NOTICE file distributed with
> > + * this work for additional information regarding copyright ownership.
> > + * The ASF licenses this file to You under the Apache License, Version
> 2.0
> > + * (the "License"); you may not use this file except in compliance with
> > + * the License.  You may obtain a copy of the License at
> > + *
> > + *     http://www.apache.org/licenses/LICENSE-2.0
> > + *
> > + * Unless required by applicable law or agreed to in writing, software
> > + * distributed under the License is distributed on an "AS IS" BASIS,
> > + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
> implied.
> > + * See the License for the specific language governing permissions and
> > + * limitations under the License.
> > + */
> > +package org.apache.openejb.config.rules;
> > +
> > +import javax.persistence.EntityManager;
> > +import javax.persistence.EntityManagerFactory;
> > +
> > +import org.apache.openejb.OpenEJBException;
> > +import org.apache.openejb.config.AppModule;
> > +import org.apache.openejb.config.EjbModule;
> > +import org.apache.openejb.config.PersistenceModule;
> > +import org.apache.openejb.jee.EjbJar;
> > +import org.apache.openejb.jee.StatelessBean;
> > +import org.apache.openejb.jee.jpa.unit.PersistenceUnit;
> > +import org.junit.runner.RunWith;
> > +
> > +@RunWith(ValidationRunner.class)
> > +public class CheckPersistenceUnitUsageTest {
> > +    @Keys( { @Key(value = "persistenceUnitRef.noPersistenceUnits", count
> = 3), @Key("presistenceUnitAnnotation.onClassWithNoName"),
> > +            @Key("presistenceUnitAnnotation.onEntityManager"),
> @Key("presistenceUnitAnnotation.onNonEntityManagerFactory") })
> > +    public EjbJar wrongUsage() throws OpenEJBException {
> > +        EjbJar ejbJar = new EjbJar();
> > +        ejbJar.addEnterpriseBean(new StatelessBean(FooStateless.class));
> > +        return ejbJar;
> > +    }
> > +
> > +    @Keys( { @Key(value = "persistenceUnitRef.noMatches"), @Key(value =
> "persistenceUnitRef.noUnitName") })
> > +    public AppModule noUnitName() {
> > +        EjbJar ejbJar = new EjbJar();
> > +        ejbJar.addEnterpriseBean(new
> StatelessBean(FooStatelessOne.class));
> > +        EjbModule ejbModule = new EjbModule(ejbJar);
> > +        AppModule appModule = new AppModule(ejbModule.getClassLoader(),
> ejbModule.getJarLocation());
> > +        appModule.getEjbModules().add(ejbModule);
> > +        PersistenceUnit pu = new PersistenceUnit("fooUnit");
> > +        PersistenceUnit pu1 = new PersistenceUnit("fooUnit1");
> > +        PersistenceUnit pu2 = new PersistenceUnit("fooUnit");
> > +        org.apache.openejb.jee.jpa.unit.Persistence p = new
> org.apache.openejb.jee.jpa.unit.Persistence(pu, pu1, pu2);
> > +        PersistenceModule pm = new PersistenceModule("foo", p);
> > +        appModule.getPersistenceModules().add(pm);
> > +        return appModule;
> > +    }
> > +
> > +    @Keys( { @Key(value = "persistenceUnitRef.vagueMatches") })
> > +    public AppModule vagueMatches() {
> > +        EjbJar ejbJar = new EjbJar();
> > +        ejbJar.addEnterpriseBean(new
> StatelessBean(FooStatelessTwo.class));
> > +        EjbModule ejbModule = new EjbModule(ejbJar);
> > +        AppModule appModule = new AppModule(ejbModule.getClassLoader(),
> ejbModule.getJarLocation());
> > +        appModule.getEjbModules().add(ejbModule);
> > +        PersistenceUnit pu = new PersistenceUnit("fooUnit");
> > +        org.apache.openejb.jee.jpa.unit.Persistence p = new
> org.apache.openejb.jee.jpa.unit.Persistence(pu);
> > +        PersistenceModule pm = new PersistenceModule("foo", p);
> > +        appModule.getPersistenceModules().add(pm);
> > +        PersistenceUnit pu1 = new PersistenceUnit("fooUnit");
> > +        org.apache.openejb.jee.jpa.unit.Persistence p1 = new
> org.apache.openejb.jee.jpa.unit.Persistence(pu1);
> > +        PersistenceModule pm1 = new PersistenceModule("foo1", p1);
> > +        appModule.getPersistenceModules().add(pm1);
> > +        return appModule;
> > +    }
> > +
> > +    @javax.persistence.PersistenceUnit
> > +    private static class FooStateless {
> > +        @javax.persistence.PersistenceUnit
> > +        EntityManagerFactory emf;
> > +        @javax.persistence.PersistenceUnit
> > +        EntityManager em;
> > +        @javax.persistence.PersistenceUnit
> > +        String nonEntityManagerFactory;
> > +    }
> > +
> > +    private static class FooStatelessOne {
> > +        @javax.persistence.PersistenceUnit(unitName = "wrongName")
> > +        EntityManagerFactory emf;
> > +        @javax.persistence.PersistenceUnit
> > +        EntityManagerFactory emf1;
> > +    }
> > +
> > +    private static class FooStatelessTwo {
> > +        @javax.persistence.PersistenceUnit(unitName = "fooUnit")
> > +        EntityManagerFactory emf;
> > +    }
> > +}
> >
> >
>
>


-- 
Karan Singh Malhi