Return-Path: Delivered-To: apmail-geronimo-dev-archive@www.apache.org Received: (qmail 9103 invoked from network); 3 Aug 2010 05:22:23 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 3 Aug 2010 05:22:23 -0000 Received: (qmail 69702 invoked by uid 500); 3 Aug 2010 05:22:23 -0000 Delivered-To: apmail-geronimo-dev-archive@geronimo.apache.org Received: (qmail 69424 invoked by uid 500); 3 Aug 2010 05:22:21 -0000 Mailing-List: contact dev-help@geronimo.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: dev@geronimo.apache.org List-Id: Delivered-To: mailing list dev@geronimo.apache.org Received: (qmail 69417 invoked by uid 99); 3 Aug 2010 05:22:20 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 03 Aug 2010 05:22:20 +0000 X-ASF-Spam-Status: No, hits=0.0 required=10.0 tests=FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,SPF_PASS,T_TO_NO_BRKTS_FREEMAIL X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of jgawor@gmail.com designates 209.85.212.54 as permitted sender) Received: from [209.85.212.54] (HELO mail-vw0-f54.google.com) (209.85.212.54) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 03 Aug 2010 05:22:13 +0000 Received: by vws7 with SMTP id 7so3352402vws.13 for ; Mon, 02 Aug 2010 22:21:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:date:message-id :subject:from:to:content-type:content-transfer-encoding; bh=aqhk/veO1DQxfeR1KUj6WEIU/3YGKyv47Qtb2O+avZ0=; b=PrbXUwUirVHkxoSJ/NHOhGHGk2aR+LoSbc5nGXM3wk+/zVP4+cmzl5XoU9sWAlN39e R/muZzyzQeqagSozLZrWRMMJmv3GLwO4IFIkrV4B51XybkmPbt7urJa3b2xzrL6dqsbG mpCOariJErvSkXe03puuJ0mB7O8KeJrTqOlyU= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type :content-transfer-encoding; b=qe4S0J12SP+Jzxpj7SFjPJ5/3TLA7AgpRrr8yfL4RpbBSI7FMzt+JQTThGK5wer78X gFv4sN6OtnaS+i0RnBDZ9WtTC5IagdskvpU+p76H7v43ZmxvWBzrSR02A56J/CF3btCK gn73zN6WhoB6Suqx5Z49AGSXP5f1Po2Lmcb5Q= MIME-Version: 1.0 Received: by 10.220.88.199 with SMTP id b7mr4890925vcm.83.1280812912029; Mon, 02 Aug 2010 22:21:52 -0700 (PDT) Received: by 10.220.160.82 with HTTP; Mon, 2 Aug 2010 22:21:51 -0700 (PDT) Date: Tue, 3 Aug 2010 01:21:51 -0400 Message-ID: Subject: Re: svn commit: r958821 - in /geronimo/server/trunk/plugins: client/client-deployer/src/main/plan/ j2ee/j2ee-deployer/src/main/plan/ openjpa2/geronimo-persistence-jpa20-builder/src/main/java/org/apache/geronimo/persistence/builder/ openjpa2/persisten From: Jarek Gawor To: dev@geronimo.apache.org Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable David, Can you explain why look for persistence units for references in a given module only? Shouldn't it be checking the module first and then the application and then its parents? Jarek On Tue, Jun 29, 2010 at 12:42 AM, wrote: > Author: djencks > Date: Tue Jun 29 04:42:13 2010 > New Revision: 958821 > > URL: http://svn.apache.org/viewvc?rev=3D958821&view=3Drev > Log: > Only look in module and parents for persistence units. =A0Only look in mo= dule for persistence units for refs. =A0Combine persistence unit and contex= t ref builders. > > Added: > =A0 =A0geronimo/server/trunk/plugins/openjpa2/geronimo-persistence-jpa20-= builder/src/main/java/org/apache/geronimo/persistence/builder/PersistenceRe= fBuilder.java =A0 (contents, props changed) > =A0 =A0 =A0- copied, changed from r958756, geronimo/server/trunk/plugins/= openjpa2/geronimo-persistence-jpa20-builder/src/main/java/org/apache/geroni= mo/persistence/builder/PersistenceUnitRefBuilder.java > Removed: > =A0 =A0geronimo/server/trunk/plugins/openjpa2/geronimo-persistence-jpa20-= builder/src/main/java/org/apache/geronimo/persistence/builder/PersistenceCo= ntextRefBuilder.java > =A0 =A0geronimo/server/trunk/plugins/openjpa2/geronimo-persistence-jpa20-= builder/src/main/java/org/apache/geronimo/persistence/builder/PersistenceUn= itRefBuilder.java > Modified: > =A0 =A0geronimo/server/trunk/plugins/client/client-deployer/src/main/plan= /plan.xml > =A0 =A0geronimo/server/trunk/plugins/j2ee/j2ee-deployer/src/main/plan/pla= n.xml > =A0 =A0geronimo/server/trunk/plugins/openjpa2/geronimo-persistence-jpa20-= builder/src/main/java/org/apache/geronimo/persistence/builder/PersistenceUn= itBuilder.java > =A0 =A0geronimo/server/trunk/plugins/openjpa2/persistence-jpa20-deployer/= src/main/plan/plan.xml > > Modified: geronimo/server/trunk/plugins/client/client-deployer/src/main/p= lan/plan.xml > URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/client/cl= ient-deployer/src/main/plan/plan.xml?rev=3D958821&r1=3D958820&r2=3D958821&v= iew=3Ddiff > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- geronimo/server/trunk/plugins/client/client-deployer/src/main/plan/pl= an.xml (original) > +++ geronimo/server/trunk/plugins/client/client-deployer/src/main/plan/pl= an.xml Tue Jun 29 04:42:13 2010 > @@ -42,7 +42,7 @@ > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 GBeanRefBuilder > =A0 =A0 =A0 =A0 =A0 =A0 > =A0 =A0 =A0 =A0 =A0 =A0 > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0PersistenceUnitRefBuilder > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0PersistenceRefBuilder > =A0 =A0 =A0 =A0 =A0 =A0 > =A0 =A0 =A0 =A0 =A0 =A0 > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 ClientResourceRefBuilder > > Modified: geronimo/server/trunk/plugins/j2ee/j2ee-deployer/src/main/plan/= plan.xml > URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/j2ee= -deployer/src/main/plan/plan.xml?rev=3D958821&r1=3D958820&r2=3D958821&view= =3Ddiff > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- geronimo/server/trunk/plugins/j2ee/j2ee-deployer/src/main/plan/plan.x= ml (original) > +++ geronimo/server/trunk/plugins/j2ee/j2ee-deployer/src/main/plan/plan.x= ml Tue Jun 29 04:42:13 2010 > @@ -115,10 +115,7 @@ > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 GBeanRefBuilder > =A0 =A0 =A0 =A0 =A0 =A0 > =A0 =A0 =A0 =A0 =A0 =A0 > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0PersistenceContextRefBuilder > - =A0 =A0 =A0 =A0 =A0 =A0 > - =A0 =A0 =A0 =A0 =A0 =A0 > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0PersistenceUnitRefBuilder > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0PersistenceRefBuilder > =A0 =A0 =A0 =A0 =A0 =A0 > =A0 =A0 =A0 =A0 =A0 =A0 > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 DataSourceBuilder > > Copied: geronimo/server/trunk/plugins/openjpa2/geronimo-persistence-jpa20= -builder/src/main/java/org/apache/geronimo/persistence/builder/PersistenceR= efBuilder.java (from r958756, geronimo/server/trunk/plugins/openjpa2/geroni= mo-persistence-jpa20-builder/src/main/java/org/apache/geronimo/persistence/= builder/PersistenceUnitRefBuilder.java) > URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/openjpa2/= geronimo-persistence-jpa20-builder/src/main/java/org/apache/geronimo/persis= tence/builder/PersistenceRefBuilder.java?p2=3Dgeronimo/server/trunk/plugins= /openjpa2/geronimo-persistence-jpa20-builder/src/main/java/org/apache/geron= imo/persistence/builder/PersistenceRefBuilder.java&p1=3Dgeronimo/server/tru= nk/plugins/openjpa2/geronimo-persistence-jpa20-builder/src/main/java/org/ap= ache/geronimo/persistence/builder/PersistenceUnitRefBuilder.java&r1=3D95875= 6&r2=3D958821&rev=3D958821&view=3Ddiff > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- geronimo/server/trunk/plugins/openjpa2/geronimo-persistence-jpa20-bui= lder/src/main/java/org/apache/geronimo/persistence/builder/PersistenceUnitR= efBuilder.java (original) > +++ geronimo/server/trunk/plugins/openjpa2/geronimo-persistence-jpa20-bui= lder/src/main/java/org/apache/geronimo/persistence/builder/PersistenceRefBu= ilder.java Tue Jun 29 04:42:13 2010 > @@ -32,21 +32,32 @@ import org.apache.geronimo.gbean.Abstrac > =A0import org.apache.geronimo.gbean.GBeanData; > =A0import org.apache.geronimo.gbean.annotation.GBean; > =A0import org.apache.geronimo.gbean.annotation.ParamAttribute; > +import org.apache.geronimo.j2ee.deployment.EARContext; > =A0import org.apache.geronimo.j2ee.deployment.Module; > +import org.apache.geronimo.j2ee.deployment.annotation.PersistenceContext= AnnotationHelper; > =A0import org.apache.geronimo.j2ee.deployment.annotation.PersistenceUnitA= nnotationHelper; > =A0import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory; > =A0import org.apache.geronimo.kernel.GBeanNotFoundException; > =A0import org.apache.geronimo.kernel.config.Configuration; > =A0import org.apache.geronimo.kernel.repository.Environment; > =A0import org.apache.geronimo.naming.deployment.AbstractNamingBuilder; > +import org.apache.geronimo.naming.reference.PersistenceContextReference; > =A0import org.apache.geronimo.naming.reference.PersistenceUnitReference; > =A0import org.apache.geronimo.schema.NamespaceElementConverter; > =A0import org.apache.geronimo.schema.SchemaConversionUtils; > =A0import org.apache.geronimo.xbeans.geronimo.naming.GerPatternType; > +import org.apache.geronimo.xbeans.geronimo.naming.GerPersistenceContextR= efDocument; > +import org.apache.geronimo.xbeans.geronimo.naming.GerPersistenceContextR= efType; > +import org.apache.geronimo.xbeans.geronimo.naming.GerPersistenceContextT= ypeType; > =A0import org.apache.geronimo.xbeans.geronimo.naming.GerPersistenceUnitRe= fDocument; > =A0import org.apache.geronimo.xbeans.geronimo.naming.GerPersistenceUnitRe= fType; > +import org.apache.geronimo.xbeans.geronimo.naming.GerPropertyType; > =A0import org.apache.openejb.jee.JndiConsumer; > +import org.apache.openejb.jee.PersistenceContextRef; > +import org.apache.openejb.jee.PersistenceContextType; > +import org.apache.openejb.jee.PersistenceRef; > =A0import org.apache.openejb.jee.PersistenceUnitRef; > +import org.apache.openejb.jee.Property; > =A0import org.apache.xmlbeans.QNameSet; > =A0import org.apache.xmlbeans.XmlObject; > > @@ -54,17 +65,19 @@ import org.apache.xmlbeans.XmlObject; > =A0* @version $Rev$ $Date$ > =A0*/ > =A0@GBean(j2eeType =3D NameFactory.MODULE_BUILDER) > -public class PersistenceUnitRefBuilder extends AbstractNamingBuilder { > +public class PersistenceRefBuilder extends AbstractNamingBuilder { > =A0 =A0 private static final QName PERSISTENCE_UNIT_REF_QNAME =3D new QNa= me(JEE_NAMESPACE, "persistence-unit-ref"); > =A0 =A0 private static final QNameSet PERSISTENCE_UNIT_REF_QNAME_SET =3D = QNameSet.singleton(PERSISTENCE_UNIT_REF_QNAME); > =A0 =A0 private static final QName GER_PERSISTENCE_UNIT_REF_QNAME =3D Ger= PersistenceUnitRefDocument.type.getDocumentElementName(); > =A0 =A0 private static final QNameSet GER_PERSISTENCE_UNIT_REF_QNAME_SET = =3D QNameSet.singleton(GER_PERSISTENCE_UNIT_REF_QNAME); > =A0 =A0 private static final Set PERSISTENCE_UNIT_INTERFACE_TYPES =3D Col= lections.singleton("org.apache.geronimo.persistence.PersistenceUnitGBean"); > + =A0 =A0private static final QName GER_PERSISTENCE_CONTEXT_REF_QNAME =3D= GerPersistenceContextRefDocument.type.getDocumentElementName(); > + =A0 =A0private static final QNameSet GER_PERSISTENCE_CONTEXT_REF_QNAME_= SET =3D QNameSet.singleton(GER_PERSISTENCE_CONTEXT_REF_QNAME); > =A0 =A0 private final AbstractNameQuery defaultPersistenceUnitAbstractNam= eQuery; > =A0 =A0 private final boolean strictMatching; > > > - =A0 =A0public PersistenceUnitRefBuilder(@ParamAttribute(name =3D "defau= ltEnvironment") Environment defaultEnvironment, > + =A0 =A0public PersistenceRefBuilder(@ParamAttribute(name =3D "defaultEn= vironment") Environment defaultEnvironment, > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0@ParamAttribute(name =3D "defaultPersistenceUnitAbstractNameQuery") Abst= ractNameQuery defaultPersistenceUnitAbstractNameQuery, > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0@ParamAttribute(name =3D "strictMatching") boolean strictMatching) { > =A0 =A0 =A0 =A0 super(defaultEnvironment); > @@ -73,22 +86,24 @@ public class PersistenceUnitRefBuilder e > =A0 =A0 } > > =A0 =A0 protected boolean willMergeEnvironment(JndiConsumer specDD, XmlOb= ject plan) throws DeploymentException { > - =A0 =A0 =A0 =A0if (specDD !=3D null && specDD.getPersistenceUnitRef().s= ize() > 0) { > + =A0 =A0 =A0 =A0if (specDD !=3D null && !specDD.getPersistenceUnitRef().= isEmpty()) { > =A0 =A0 =A0 =A0 =A0 =A0 return true; > =A0 =A0 =A0 =A0 } > - =A0 =A0 =A0 =A0return plan !=3D null && plan.selectChildren(Persistence= UnitRefBuilder.GER_PERSISTENCE_UNIT_REF_QNAME_SET).length > 0; > + =A0 =A0 =A0 =A0return plan !=3D null && plan.selectChildren(Persistence= RefBuilder.GER_PERSISTENCE_UNIT_REF_QNAME_SET).length > 0; > =A0 =A0 } > > - =A0 =A0public void buildNaming(JndiConsumer specDD, XmlObject plan, Mod= ule module, Map componentContext) throws DeploymentException { > + =A0 =A0public void buildNaming(JndiConsumer specDD, XmlObject plan, Mod= ule module, Map componentContext) throws Deployment= Exception { > =A0 =A0 =A0 =A0 Configuration localConfiguration =3D module.getEarContext= ().getConfiguration(); > - =A0 =A0 =A0 =A0// Discover and process any @PersistenceUnitRef annotati= ons (if !metadata-complete) > + =A0 =A0 =A0 =A0List problems =3D new ArrayList(); > + > + =A0 =A0 =A0 =A0// Discover and process any @PersistenceUnitRef and @Per= sistenceContextRef annotations (if !metadata-complete) > =A0 =A0 =A0 =A0 if (module.getClassFinder() !=3D null) { > =A0 =A0 =A0 =A0 =A0 =A0 processAnnotations(specDD, module); > =A0 =A0 =A0 =A0 } > > + =A0 =A0 =A0 =A0//persistenceUnit refs > =A0 =A0 =A0 =A0 Collection specPersistenceUnitRefsUnt= yped =3D specDD.getPersistenceUnitRef(); > =A0 =A0 =A0 =A0 Map gerPersistenceUnit= RefsUntyped =3D getGerPersistenceUnitRefs(plan); > - =A0 =A0 =A0 =A0List problems =3D new ArrayList(); > =A0 =A0 =A0 =A0 for (PersistenceUnitRef persistenceUnitRef : specPersiste= nceUnitRefsUntyped) { > =A0 =A0 =A0 =A0 =A0 =A0 try { > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 String persistenceUnitRefName =3D persist= enceUnitRef.getPersistenceUnitRefName().trim(); > @@ -99,32 +114,9 @@ public class PersistenceUnitRefBuilder e > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (gerPersistenceUnitRef !=3D null) { > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 persistenceUnitNameQuery =3D find= PersistenceUnit(gerPersistenceUnitRef); > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 checkForGBean(localConfiguration,= persistenceUnitNameQuery, true); > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0} else if (persistenceUnitRef.getPersist= enceUnitName() !=3D null && !persistenceUnitRef.getPersistenceUnitName().tr= im().isEmpty()) { > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0String persistenceUnitName =3D p= ersistenceUnitRef.getPersistenceUnitName().trim(); > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0persistenceUnitNameQuery =3D new= AbstractNameQuery(null, Collections.singletonMap("name", persistenceUnitNa= me), PERSISTENCE_UNIT_INTERFACE_TYPES); > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0if (!checkForGBean(localConfigur= ation, persistenceUnitNameQuery, strictMatching)) { > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0persistenceUnitName =3D = "persistence/" + persistenceUnitName; > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0persistenceUnitNameQuery= =3D new AbstractNameQuery(null, Collections.singletonMap("name", persisten= ceUnitName), PERSISTENCE_UNIT_INTERFACE_TYPES); > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0checkForGBean(localConfi= guration, persistenceUnitNameQuery, true); > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0} > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 } else { > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0persistenceUnitNameQuery =3D new= AbstractNameQuery(null, Collections.EMPTY_MAP, PERSISTENCE_UNIT_INTERFACE_= TYPES); > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0Set patterns = =3D Collections.singleton(persistenceUnitNameQuery); > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0LinkedHashSet gbeans = =3D localConfiguration.findGBeanDatas(localConfiguration, patterns); > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0persistenceUnitNameQuery =3D che= ckForDefaultPersistenceUnit(gbeans); > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0if (gbeans.isEmpty()) { > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0gbeans =3D localConfigur= ation.findGBeanDatas(patterns); > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0persistenceUnitNameQuery= =3D checkForDefaultPersistenceUnit(gbeans); > - > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0if (gbeans.isEmpty()) { > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0if (defaultPersi= stenceUnitAbstractNameQuery =3D=3D null) { > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0throw ne= w DeploymentException("No default PersistenceUnit specified, and none locat= ed"); > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0} > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0persistenceUnitN= ameQuery =3D defaultPersistenceUnitAbstractNameQuery; > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0} > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0} > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0persistenceUnitNameQuery =3D fin= dPersistenceUnitQuery(module, localConfiguration, persistenceUnitRef); > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 } > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0checkForGBean(localConfiguration, persis= tenceUnitNameQuery, true); > > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 PersistenceUnitReference reference =3D ne= w PersistenceUnitReference(module.getConfigId(), persistenceUnitNameQuery); > > @@ -134,31 +126,111 @@ public class PersistenceUnitRefBuilder e > =A0 =A0 =A0 =A0 =A0 =A0 } > > =A0 =A0 =A0 =A0 } > - > - > =A0 =A0 =A0 =A0 for (GerPersistenceUnitRefType gerPersistenceUnitRef : ge= rPersistenceUnitRefsUntyped.values()) { > =A0 =A0 =A0 =A0 =A0 =A0 try { > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 String PersistenceUnitRefName =3D gerPers= istenceUnitRef.getPersistenceUnitRefName(); > - > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 AbstractNameQuery persistenceUnitNameQuer= y =3D findPersistenceUnit(gerPersistenceUnitRef); > - > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 checkForGBean(localConfiguration, persist= enceUnitNameQuery, true); > - > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 PersistenceUnitReference reference =3D ne= w PersistenceUnitReference(module.getConfigId(), persistenceUnitNameQuery); > - > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 put(PersistenceUnitRefName, reference, mo= dule.getJndiContext()); > =A0 =A0 =A0 =A0 =A0 =A0 } catch (DeploymentException e) { > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 problems.add(e); > =A0 =A0 =A0 =A0 =A0 =A0 } > + =A0 =A0 =A0 =A0} > + > + > + =A0 =A0 =A0 =A0//persistence context refs > + =A0 =A0 =A0 =A0Collection specPersistenceContext= RefsUntyped =3D specDD.getPersistenceContextRef(); > + =A0 =A0 =A0 =A0Map gerPersistence= ContextRefsUntyped =3D getGerPersistenceContextRefs(plan); > + =A0 =A0 =A0 =A0for (PersistenceContextRef persistenceContextRef : specP= ersistenceContextRefsUntyped) { > + =A0 =A0 =A0 =A0 =A0 =A0try { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0String persistenceContextRefName =3D per= sistenceContextRef.getPersistenceContextRefName().trim(); > + > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0addInjections(persistenceContextRefName,= persistenceContextRef.getInjectionTarget(), componentContext); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0PersistenceContextType persistenceContex= tType =3D persistenceContextRef.getPersistenceContextType(); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0boolean transactionScoped =3D persistenc= eContextType =3D=3D null || persistenceContextType.equals(PersistenceContex= tType.TRANSACTION); > + > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0List propertyTypes =3D persist= enceContextRef.getPersistenceProperty(); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0Map properties =3D new H= ashMap(); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0for (Property propertyType : propertyTyp= es) { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0String key =3D propertyType.getN= ame(); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0String value =3D propertyType.ge= tValue(); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0properties.put(key, value); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0} > + > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0AbstractNameQuery persistenceUnitNameQue= ry; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0GerPersistenceContextRefType gerPersiste= nceContextRef =3D gerPersistenceContextRefsUntyped.remove(persistenceContex= tRefName); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0if (gerPersistenceContextRef !=3D null) = { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0persistenceUnitNameQuery =3D fin= dPersistenceUnit(gerPersistenceContextRef); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0addProperties(gerPersistenceCont= extRef, properties); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0checkForGBean(localConfiguration= , persistenceUnitNameQuery, true); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0} else { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0persistenceUnitNameQuery =3D fin= dPersistenceUnitQuery(module, localConfiguration, persistenceContextRef); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0} > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0PersistenceContextReference reference = =3D new PersistenceContextReference(module.getConfigId(), persistenceUnitNa= meQuery, transactionScoped, properties); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0put(persistenceContextRefName, reference= , module.getJndiContext()); > + =A0 =A0 =A0 =A0 =A0 =A0} catch (DeploymentException e) { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0problems.add(e); > + =A0 =A0 =A0 =A0 =A0 =A0} > + =A0 =A0 =A0 =A0} > + > + =A0 =A0 =A0 =A0// Support persistence context refs that are mentioned o= nly in the geronimo plan > + =A0 =A0 =A0 =A0for (GerPersistenceContextRefType gerPersistenceContextR= ef : gerPersistenceContextRefsUntyped.values()) { > + =A0 =A0 =A0 =A0 =A0 =A0try { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0String persistenceContextRefName =3D ger= PersistenceContextRef.getPersistenceContextRefName(); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0GerPersistenceContextTypeType.Enum persi= stenceContextType =3D gerPersistenceContextRef.getPersistenceContextType(); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0boolean transactionScoped =3D persistenc= eContextType =3D=3D null || !persistenceContextType.equals(GerPersistenceCo= ntextTypeType.EXTENDED); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0Map properties =3D new H= ashMap(); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0addProperties(gerPersistenceContextRef, = properties); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0AbstractNameQuery persistenceUnitNameQue= ry =3D findPersistenceUnit(gerPersistenceContextRef); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0checkForGBean(localConfiguration, persis= tenceUnitNameQuery, true); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0PersistenceContextReference reference = =3D new PersistenceContextReference(module.getConfigId(), persistenceUnitNa= meQuery, transactionScoped, properties); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0put(persistenceContextRefName, reference= , module.getJndiContext()); > + =A0 =A0 =A0 =A0 =A0 =A0} catch (DeploymentException e) { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0problems.add(e); > + =A0 =A0 =A0 =A0 =A0 =A0} > > =A0 =A0 =A0 =A0 } > + > =A0 =A0 =A0 =A0 if (!problems.isEmpty()) { > - =A0 =A0 =A0 =A0 =A0 =A0//TODO make DeploymentException accept a list of= exceptions as causes. > - =A0 =A0 =A0 =A0 =A0 =A0throw new DeploymentException("At least one depl= oyment problem:" + problems); > + =A0 =A0 =A0 =A0 =A0 =A0throw new DeploymentException("At least one depl= oyment problem:", problems); > =A0 =A0 =A0 =A0 } > =A0 =A0 } > > - =A0 =A0private AbstractNameQuery checkForDefaultPersistenceUnit(LinkedH= ashSet gbeans) throws DeploymentException { > + =A0 =A0private AbstractNameQuery findPersistenceUnitQuery(Module module= , Configuration localConfiguration, PersistenceRef persistenceRef) throws D= eploymentException { > + =A0 =A0 =A0 =A0AbstractNameQuery persistenceUnitNameQuery; > + =A0 =A0 =A0 =A0if (persistenceRef.getPersistenceUnitName() !=3D null &&= !persistenceRef.getPersistenceUnitName().trim().isEmpty()) { > + =A0 =A0 =A0 =A0 =A0 =A0String persistenceUnitName =3D persistenceRef.ge= tPersistenceUnitName().trim(); > + =A0 =A0 =A0 =A0 =A0 =A0AbstractName childName =3D module.getEarContext(= ).getNaming().createChildName(module.getModuleName(), persistenceUnitName, = NameFactory.PERSISTENCE_UNIT); > + =A0 =A0 =A0 =A0 =A0 =A0persistenceUnitNameQuery =3D new AbstractNameQue= ry(null, childName.getName(), PERSISTENCE_UNIT_INTERFACE_TYPES); > + =A0 =A0 =A0 =A0 =A0 =A0if (!checkForGBean(localConfiguration, persisten= ceUnitNameQuery, strictMatching)) { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0persistenceUnitName =3D "persistence/" += persistenceUnitName; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0childName =3D module.getEarContext().get= Naming().createChildName(module.getModuleName(), persistenceUnitName, NameF= actory.PERSISTENCE_UNIT); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0persistenceUnitNameQuery =3D new Abstrac= tNameQuery(null, childName.getName(), PERSISTENCE_UNIT_INTERFACE_TYPES); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0checkForGBean(localConfiguration, persis= tenceUnitNameQuery, true); > + =A0 =A0 =A0 =A0 =A0 =A0} > + =A0 =A0 =A0 =A0} else { > + =A0 =A0 =A0 =A0 =A0 =A0persistenceUnitNameQuery =3D new AbstractNameQue= ry(null, Collections.EMPTY_MAP, PERSISTENCE_UNIT_INTERFACE_TYPES); > + =A0 =A0 =A0 =A0 =A0 =A0Set patterns =3D Collections.= singleton(persistenceUnitNameQuery); > + =A0 =A0 =A0 =A0 =A0 =A0LinkedHashSet gbeans =3D localConfigu= ration.findGBeanDatas(localConfiguration, patterns); > + =A0 =A0 =A0 =A0 =A0 =A0persistenceUnitNameQuery =3D checkForDefaultPers= istenceUnit(gbeans); > + =A0 =A0 =A0 =A0 =A0 =A0if (gbeans.isEmpty()) { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0gbeans =3D localConfiguration.findGBeanD= atas(patterns); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0persistenceUnitNameQuery =3D checkForDef= aultPersistenceUnit(gbeans); > + > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0if (gbeans.isEmpty()) { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0if (defaultPersistenceUnitAbstra= ctNameQuery =3D=3D null) { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0throw new DeploymentExce= ption("No default PersistenceUnit specified, and none located"); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0} > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0persistenceUnitNameQuery =3D def= aultPersistenceUnitAbstractNameQuery; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0} > + =A0 =A0 =A0 =A0 =A0 =A0} > + =A0 =A0 =A0 =A0} > + =A0 =A0 =A0 =A0checkForGBean(localConfiguration, persistenceUnitNameQue= ry, true); > + =A0 =A0 =A0 =A0return persistenceUnitNameQuery; > + =A0 =A0} > + > + =A0 =A0private static AbstractNameQuery checkForDefaultPersistenceUnit(= LinkedHashSet gbeans) throws DeploymentException { > =A0 =A0 =A0 =A0 AbstractNameQuery persistenceUnitNameQuery =3D null; > =A0 =A0 =A0 =A0 for (java.util.Iterator it =3D gbeans.iterator(); it.hasN= ext();) { > =A0 =A0 =A0 =A0 =A0 =A0 GBeanData gbean =3D (GBeanData) it.next(); > @@ -176,14 +248,17 @@ public class PersistenceUnitRefBuilder e > =A0 =A0 =A0 =A0 return persistenceUnitNameQuery; > =A0 =A0 } > > - =A0 =A0private boolean checkForGBean(Configuration localConfiguration, = AbstractNameQuery persistenceUnitNameQuery, boolean complainIfMissing) thro= ws DeploymentException { > + =A0 =A0private static boolean checkForGBean(Configuration localConfigur= ation, AbstractNameQuery persistenceQuery, boolean complainIfMissing) throw= s DeploymentException { > =A0 =A0 =A0 =A0 try { > - =A0 =A0 =A0 =A0 =A0 =A0localConfiguration.findGBeanData(persistenceUnit= NameQuery); > + =A0 =A0 =A0 =A0 =A0 =A0localConfiguration.findGBeanData(persistenceQuer= y); > =A0 =A0 =A0 =A0 =A0 =A0 return true; > =A0 =A0 =A0 =A0 } catch (GBeanNotFoundException e) { > =A0 =A0 =A0 =A0 =A0 =A0 if (complainIfMissing || e.hasMatches()) { > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0String reason =3D e.hasMatches() ? "More= than one GBean reference found." : "No GBean references found."; > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0throw new DeploymentException("Could not= resolve reference at deploy time for query " + persistenceUnitNameQuery + = ". " + reason, e); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0if (e.hasMatches()) { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0throw new DeploymentException("M= ore than one reference at deploy time for query " + persistenceQuery + ". "= + e.getMatches(), e); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0} else { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0throw new DeploymentException("N= o references found at deploy time for query " + persistenceQuery, e); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0} > =A0 =A0 =A0 =A0 =A0 =A0 } > =A0 =A0 =A0 =A0 =A0 =A0 return false; > =A0 =A0 =A0 =A0 } > @@ -192,15 +267,16 @@ public class PersistenceUnitRefBuilder e > =A0 =A0 private void processAnnotations(JndiConsumer specDD, Module modul= e) throws DeploymentException { > =A0 =A0 =A0 =A0 // Process all the annotations for this naming builder ty= pe > =A0 =A0 =A0 =A0 PersistenceUnitAnnotationHelper.processAnnotations(specDD= , module.getClassFinder()); > + =A0 =A0 =A0 =A0PersistenceContextAnnotationHelper.processAnnotations(sp= ecDD, module.getClassFinder()); > =A0 =A0 } > > - =A0 =A0private AbstractNameQuery findPersistenceUnit(GerPersistenceUnit= RefType gerPersistenceUnitRef) { > + =A0 =A0private AbstractNameQuery findPersistenceUnit(GerPersistenceUnit= RefType gerPersistenceRef) { > =A0 =A0 =A0 =A0 AbstractNameQuery persistenceUnitNameQuery; > - =A0 =A0 =A0 =A0if (gerPersistenceUnitRef.isSetPersistenceUnitName()) { > - =A0 =A0 =A0 =A0 =A0 =A0String persistenceUnitName =3D gerPersistenceUni= tRef.getPersistenceUnitName(); > + =A0 =A0 =A0 =A0if (gerPersistenceRef.isSetPersistenceUnitName()) { > + =A0 =A0 =A0 =A0 =A0 =A0String persistenceUnitName =3D gerPersistenceRef= .getPersistenceUnitName(); > =A0 =A0 =A0 =A0 =A0 =A0 persistenceUnitNameQuery =3D new AbstractNameQuer= y(null, Collections.singletonMap("name", persistenceUnitName), PERSISTENCE_= UNIT_INTERFACE_TYPES); > =A0 =A0 =A0 =A0 } else { > - =A0 =A0 =A0 =A0 =A0 =A0GerPatternType gbeanLocator =3D gerPersistenceUn= itRef.getPattern(); > + =A0 =A0 =A0 =A0 =A0 =A0GerPatternType gbeanLocator =3D gerPersistenceRe= f.getPattern(); > > =A0 =A0 =A0 =A0 =A0 =A0 persistenceUnitNameQuery =3D buildAbstractNameQue= ry(gbeanLocator, null, null, PERSISTENCE_UNIT_INTERFACE_TYPES); > =A0 =A0 =A0 =A0 } > @@ -208,7 +284,7 @@ public class PersistenceUnitRefBuilder e > =A0 =A0 } > > =A0 =A0 public QNameSet getSpecQNameSet() { > - =A0 =A0 =A0 =A0SchemaConversionUtils.registerNamespaceConversions(Colle= ctions.singletonMap(PersistenceUnitRefBuilder.GER_PERSISTENCE_UNIT_REF_QNAM= E.getLocalPart(), new NamespaceElementConverter(PersistenceUnitRefBuilder.G= ER_PERSISTENCE_UNIT_REF_QNAME.getNamespaceURI()))); > + =A0 =A0 =A0 =A0SchemaConversionUtils.registerNamespaceConversions(Colle= ctions.singletonMap(PersistenceRefBuilder.GER_PERSISTENCE_UNIT_REF_QNAME.ge= tLocalPart(), new NamespaceElementConverter(PersistenceRefBuilder.GER_PERSI= STENCE_UNIT_REF_QNAME.getNamespaceURI()))); > =A0 =A0 =A0 =A0 return PERSISTENCE_UNIT_REF_QNAME_SET; > =A0 =A0 } > > @@ -219,7 +295,7 @@ public class PersistenceUnitRefBuilder e > =A0 =A0 private Map getGerPersistenceU= nitRefs(XmlObject plan) throws DeploymentException { > =A0 =A0 =A0 =A0 Map map =3D new HashMa= p(); > =A0 =A0 =A0 =A0 if (plan !=3D null) { > - =A0 =A0 =A0 =A0 =A0 =A0List refs =3D convert= (plan.selectChildren(PersistenceUnitRefBuilder.GER_PERSISTENCE_UNIT_REF_QNA= ME_SET), NAMING_CONVERTER, GerPersistenceUnitRefType.class, GerPersistenceU= nitRefType.type); > + =A0 =A0 =A0 =A0 =A0 =A0List refs =3D convert= (plan.selectChildren(PersistenceRefBuilder.GER_PERSISTENCE_UNIT_REF_QNAME_S= ET), NAMING_CONVERTER, GerPersistenceUnitRefType.class, GerPersistenceUnitR= efType.type); > =A0 =A0 =A0 =A0 =A0 =A0 for (GerPersistenceUnitRefType ref : refs) { > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 map.put(ref.getPersistenceUnitRefName().t= rim(), ref); > =A0 =A0 =A0 =A0 =A0 =A0 } > @@ -227,4 +303,38 @@ public class PersistenceUnitRefBuilder e > =A0 =A0 =A0 =A0 return map; > =A0 =A0 } > > + =A0 =A0private void addProperties(GerPersistenceContextRefType persiste= nceContextRef, Map properties) { > + =A0 =A0 =A0 =A0GerPropertyType[] propertyTypes =3D persistenceContextRe= f.getPropertyArray(); > + =A0 =A0 =A0 =A0for (GerPropertyType propertyType : propertyTypes) { > + =A0 =A0 =A0 =A0 =A0 =A0String key =3D propertyType.getKey(); > + =A0 =A0 =A0 =A0 =A0 =A0String value =3D propertyType.getValue(); > + =A0 =A0 =A0 =A0 =A0 =A0properties.put(key, value); > + =A0 =A0 =A0 =A0} > + =A0 =A0} > + > + =A0 =A0private Map getGerPersiste= nceContextRefs(XmlObject plan) throws DeploymentException { > + =A0 =A0 =A0 =A0Map map =3D new Ha= shMap(); > + =A0 =A0 =A0 =A0if (plan !=3D null) { > + =A0 =A0 =A0 =A0 =A0 =A0List refs =3D conv= ert(plan.selectChildren(GER_PERSISTENCE_CONTEXT_REF_QNAME_SET), NAMING_CONV= ERTER, GerPersistenceContextRefType.class, GerPersistenceContextRefType.typ= e); > + =A0 =A0 =A0 =A0 =A0 =A0for (GerPersistenceContextRefType ref : refs) { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0map.put(ref.getPersistenceContextRefName= ().trim(), ref); > + =A0 =A0 =A0 =A0 =A0 =A0} > + =A0 =A0 =A0 =A0} > + =A0 =A0 =A0 =A0return map; > + =A0 =A0} > + > + =A0 =A0private AbstractNameQuery findPersistenceUnit(GerPersistenceCont= extRefType persistenceContextRef) { > + =A0 =A0 =A0 =A0AbstractNameQuery persistenceUnitNameQuery; > + =A0 =A0 =A0 =A0if (persistenceContextRef.isSetPersistenceUnitName()) { > + =A0 =A0 =A0 =A0 =A0 =A0String persistenceUnitName =3D persistenceContex= tRef.getPersistenceUnitName(); > + =A0 =A0 =A0 =A0 =A0 =A0persistenceUnitNameQuery =3D new AbstractNameQue= ry(null, Collections.singletonMap("name", persistenceUnitName), PERSISTENCE= _UNIT_INTERFACE_TYPES); > + =A0 =A0 =A0 =A0} else { > + =A0 =A0 =A0 =A0 =A0 =A0GerPatternType gbeanLocator =3D persistenceConte= xtRef.getPattern(); > + > + =A0 =A0 =A0 =A0 =A0 =A0persistenceUnitNameQuery =3D buildAbstractNameQu= ery(gbeanLocator, null, null, PERSISTENCE_UNIT_INTERFACE_TYPES); > + =A0 =A0 =A0 =A0} > + =A0 =A0 =A0 =A0return persistenceUnitNameQuery; > + =A0 =A0} > + > + > =A0} > > Propchange: geronimo/server/trunk/plugins/openjpa2/geronimo-persistence-j= pa20-builder/src/main/java/org/apache/geronimo/persistence/builder/Persiste= nceRefBuilder.java > -------------------------------------------------------------------------= ----- > =A0 =A0svn:eol-style =3D native > > Propchange: geronimo/server/trunk/plugins/openjpa2/geronimo-persistence-j= pa20-builder/src/main/java/org/apache/geronimo/persistence/builder/Persiste= nceRefBuilder.java > -------------------------------------------------------------------------= ----- > =A0 =A0svn:keywords =3D Date Revision > > Propchange: geronimo/server/trunk/plugins/openjpa2/geronimo-persistence-j= pa20-builder/src/main/java/org/apache/geronimo/persistence/builder/Persiste= nceRefBuilder.java > -------------------------------------------------------------------------= ----- > =A0 =A0svn:mime-type =3D text/plain > > Modified: geronimo/server/trunk/plugins/openjpa2/geronimo-persistence-jpa= 20-builder/src/main/java/org/apache/geronimo/persistence/builder/Persistenc= eUnitBuilder.java > URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/openjpa2/= geronimo-persistence-jpa20-builder/src/main/java/org/apache/geronimo/persis= tence/builder/PersistenceUnitBuilder.java?rev=3D958821&r1=3D958820&r2=3D958= 821&view=3Ddiff > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- geronimo/server/trunk/plugins/openjpa2/geronimo-persistence-jpa20-bui= lder/src/main/java/org/apache/geronimo/persistence/builder/PersistenceUnitB= uilder.java (original) > +++ geronimo/server/trunk/plugins/openjpa2/geronimo-persistence-jpa20-bui= lder/src/main/java/org/apache/geronimo/persistence/builder/PersistenceUnitB= uilder.java Tue Jun 29 04:42:13 2010 > @@ -23,6 +23,7 @@ import java.net.URL; > =A0import java.util.ArrayList; > =A0import java.util.Collection; > =A0import java.util.HashMap; > +import java.util.LinkedHashSet; > =A0import java.util.List; > =A0import java.util.Map; > =A0import java.util.Properties; > @@ -59,6 +60,8 @@ import org.apache.openejb.jee.JAXBContex > =A0import org.apache.openejb.jee.JaxbJavaee; > =A0import org.apache.openejb.jee.Persistence; > =A0import org.apache.xbean.osgi.bundle.util.BundleResourceFinder; > +import org.apache.xbean.osgi.bundle.util.DiscoveryRange; > +import org.apache.xbean.osgi.bundle.util.ResourceDiscoveryFilter; > =A0import org.apache.xmlbeans.QNameSet; > =A0import org.apache.xmlbeans.XmlObject; > =A0import org.osgi.framework.Bundle; > @@ -72,18 +75,18 @@ import org.osgi.service.packageadmin.Pac > =A0@GBean(j2eeType =3D NameFactory.MODULE_BUILDER) > =A0public class PersistenceUnitBuilder implements ModuleBuilderExtension = { > > - =A0 =A0private static final EARContext.Key> PERSISTENCE_URL_L= IST_KEY =3D new EARContext.Key>() { > - > - =A0 =A0 =A0 =A0@Override > - =A0 =A0 =A0 =A0public List get(Map keyObje= ctMap) { > - =A0 =A0 =A0 =A0 =A0 =A0List list =3D (List) keyObjectMap.get(= this); > - =A0 =A0 =A0 =A0 =A0 =A0if (list =3D=3D null) { > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0list =3D new ArrayList(); > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0keyObjectMap.put(this, list); > - =A0 =A0 =A0 =A0 =A0 =A0} > - =A0 =A0 =A0 =A0 =A0 =A0return list; > - =A0 =A0 =A0 =A0} > - =A0 =A0}; > +// =A0 =A0private static final EARContext.Key> PERSISTENCE_URL= _LIST_KEY =3D new EARContext.Key>() { > +// > +// =A0 =A0 =A0 =A0@Override > +// =A0 =A0 =A0 =A0public List get(Map keyOb= jectMap) { > +// =A0 =A0 =A0 =A0 =A0 =A0List list =3D (List) keyObjectMap.ge= t(this); > +// =A0 =A0 =A0 =A0 =A0 =A0if (list =3D=3D null) { > +// =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0list =3D new ArrayList(); > +// =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0keyObjectMap.put(this, list); > +// =A0 =A0 =A0 =A0 =A0 =A0} > +// =A0 =A0 =A0 =A0 =A0 =A0return list; > +// =A0 =A0 =A0 =A0} > +// =A0 =A0}; > > =A0 =A0 private static final QName PERSISTENCE_QNAME =3D new QName("http:= //java.sun.com/xml/ns/persistence", "persistence"); > > @@ -144,19 +147,31 @@ public class PersistenceUnitBuilder impl > =A0 =A0 =A0 =A0 =A0 =A0 throw new DeploymentException("Parse Persistence = configuration file failed", e); > =A0 =A0 =A0 =A0 } > =A0 =A0 =A0 =A0 try { > - =A0 =A0 =A0 =A0 =A0 =A0URI moduleBaseURI =3D moduleContext.getBaseDir()= .toURI(); > - =A0 =A0 =A0 =A0 =A0 =A0Collection manifestcp =3D module.getClas= sPath(); > - =A0 =A0 =A0 =A0 =A0 =A0manifestcp.add(module.getTargetPath()); > -// =A0 =A0 =A0 =A0 =A0 =A0URL[] urls =3D new URL[manifestcp.size()]; > -// =A0 =A0 =A0 =A0 =A0 =A0int i =3D 0; > -// =A0 =A0 =A0 =A0 =A0 =A0for (String path : manifestcp) { > -// =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0//TODO either this encoding is unneces= sary or incomplete > -// =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0path =3D path.replaceAll(" ", "%20"); > -// =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0URL url =3D moduleBaseURI.resolve(path= ).toURL(); > -// =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0urls[i++] =3D url; > -// =A0 =A0 =A0 =A0 =A0 =A0} > - =A0 =A0 =A0 =A0 =A0 =A0BundleResourceFinder finder =3D new BundleResour= ceFinder(packageAdmin, bundle, "", "META-INF/persistence.xml"); > - =A0 =A0 =A0 =A0 =A0 =A0List knownPersistenceUrls =3D PERSISTENCE_U= RL_LIST_KEY.get(module.getRootEarContext().getGeneralData()); > + > + =A0 =A0 =A0 =A0 =A0 =A0final Collection manifestcp =3D new Link= edHashSet(); > + =A0 =A0 =A0 =A0 =A0 =A0for (Module m =3D module; m !=3D null; m =3D m.g= etParentModule()){ > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0manifestcp.addAll(m.getClassPath()); > + =A0 =A0 =A0 =A0 =A0 =A0} > + =A0 =A0 =A0 =A0 =A0 =A0//should not be needed?? > +// =A0 =A0 =A0 =A0 =A0 =A0manifestcp.add(module.getTargetPath()); > + =A0 =A0 =A0 =A0 =A0 =A0BundleResourceFinder finder =3D new BundleResour= ceFinder(packageAdmin, bundle, "", "META-INF/persistence.xml", new Resource= DiscoveryFilter() { > + > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0@Override > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0public boolean rangeDiscoveryRequired(Di= scoveryRange discoveryRange) { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0return discoveryRange =3D=3D Dis= coveryRange.BUNDLE_CLASSPATH || discoveryRange =3D=3D DiscoveryRange.FRAGME= NT_BUNDLES; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0} > + > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0@Override > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0public boolean zipFileDiscoveryRequired(= String s) { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0return manifestcp.contains(s); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0} > + > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0@Override > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0public boolean directoryDiscoveryRequire= d(String s) { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0return manifestcp.contains(s); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0} > + =A0 =A0 =A0 =A0 =A0 =A0}); > +// =A0 =A0 =A0 =A0 =A0 =A0List knownPersistenceUrls =3D PERSISTENCE= _URL_LIST_KEY.get(module.getRootEarContext().getGeneralData()); > =A0 =A0 =A0 =A0 =A0 =A0 final Map persistenceURLs =3D new Ha= shMap(); > =A0 =A0 =A0 =A0 =A0 =A0 finder.find(new BundleResourceFinder.ResourceFind= erCallback() { > > @@ -172,7 +187,7 @@ public class PersistenceUnitBuilder impl > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 persistenceURLs.put(url, jarName)= ; > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 } > =A0 =A0 =A0 =A0 =A0 =A0 }); > - =A0 =A0 =A0 =A0 =A0 =A0persistenceURLs.keySet().removeAll(knownPersiste= nceUrls); > +// =A0 =A0 =A0 =A0 =A0 =A0persistenceURLs.keySet().removeAll(knownPersis= tenceUrls); > =A0 =A0 =A0 =A0 =A0 =A0 if (raws.length > 0 || persistenceURLs.size() > 0= ) { > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 EnvironmentBuilder.mergeEnvironments(modu= le.getEnvironment(), defaultEnvironment); > =A0 =A0 =A0 =A0 =A0 =A0 } > @@ -189,7 +204,7 @@ public class PersistenceUnitBuilder impl > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 in.close(); > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 } > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 buildPersistenceUnits(persistence, overri= des, module, persistenceLocation); > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0knownPersistenceUrls.add(persistenceUrl)= ; > +// =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0knownPersistenceUrls.add(persistenceUr= l); > =A0 =A0 =A0 =A0 =A0 =A0 } > =A0 =A0 =A0 =A0 } catch (Exception e) { > =A0 =A0 =A0 =A0 =A0 =A0 throw new DeploymentException("Could not look for= META-INF/persistence.xml files", e); > > Modified: geronimo/server/trunk/plugins/openjpa2/persistence-jpa20-deploy= er/src/main/plan/plan.xml > URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/openjpa2/= persistence-jpa20-deployer/src/main/plan/plan.xml?rev=3D958821&r1=3D958820&= r2=3D958821&view=3Ddiff > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- geronimo/server/trunk/plugins/openjpa2/persistence-jpa20-deployer/src= /main/plan/plan.xml (original) > +++ geronimo/server/trunk/plugins/openjpa2/persistence-jpa20-deployer/src= /main/plan/plan.xml Tue Jun 29 04:42:13 2010 > @@ -44,21 +44,7 @@ > =A0 =A0 =A0 =A0 > =A0 =A0 > =A0 =A0 > - =A0 =A0 > - =A0 =A0 =A0 =A0 > - =A0 =A0 =A0 =A0 =A0 =A0 > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0org.apache.gero= nimo.configs > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0openjpa2 > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0${version} > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0car > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 > - =A0 =A0 =A0 =A0 =A0 =A0 > - =A0 =A0 =A0 =A0 > - =A0 =A0 > - =A0 =A0 > + =A0 =A0 > =A0 =A0 =A0 =A0 > =A0 =A0 =A0 =A0 =A0 =A0 > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 > > >