You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by da...@apache.org on 2007/01/10 21:50:15 UTC
svn commit: r494973 - in
/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb:
alt/config/ assembler/classic/
Author: dain
Date: Wed Jan 10 12:50:14 2007
New Revision: 494973
URL: http://svn.apache.org/viewvc?view=rev&rev=494973
Log:
Added persistence-contest-ref data to deployment process
Added:
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/PersistenceContextInfo.java
Modified:
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/JndiEncInfoBuilder.java
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncInfo.java
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/JndiEncInfoBuilder.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/JndiEncInfoBuilder.java?view=diff&rev=494973&r1=494972&r2=494973
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/JndiEncInfoBuilder.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/JndiEncInfoBuilder.java Wed Jan 10 12:50:14 2007
@@ -27,6 +27,7 @@
import org.apache.openejb.assembler.classic.EjbJarInfo;
import org.apache.openejb.assembler.classic.PersistenceUnitInfo;
import org.apache.openejb.assembler.classic.InjectionInfo;
+import org.apache.openejb.assembler.classic.PersistenceContextInfo;
import org.apache.openejb.jee.EjbLocalRef;
import org.apache.openejb.jee.EjbRef;
import org.apache.openejb.jee.EnvEntry;
@@ -35,6 +36,9 @@
import org.apache.openejb.jee.ResourceRef;
import org.apache.openejb.jee.Injectable;
import org.apache.openejb.jee.InjectionTarget;
+import org.apache.openejb.jee.PersistenceContextRef;
+import org.apache.openejb.jee.PersistenceContextType;
+import org.apache.openejb.jee.Property;
import org.apache.openejb.util.Logger;
import org.apache.openejb.util.Messages;
@@ -107,21 +111,42 @@
jndi.ejbLocalReferences.addAll(buildEjbLocalRefInfos(jndiConsumer, ejbName));
jndi.persistenceUnitRefs.addAll(buildPersistenceUnitRefInfos(jndiConsumer));
+
+ jndi.persistenceContextRefs.addAll(buildPersistenceContextRefInfos(jndiConsumer));
return jndi;
}
private List<PersistenceUnitInfo> buildPersistenceUnitRefInfos(JndiConsumer jndiConsumer) {
ArrayList<PersistenceUnitInfo> infos = new ArrayList<PersistenceUnitInfo>();
for (PersistenceUnitRef puRef : jndiConsumer.getPersistenceUnitRef()) {
- PersistenceUnitInfo info = new PersistenceUnitInfo();
+ PersistenceUnitInfo info = new PersistenceUnitInfo();
info.referenceName = puRef.getPersistenceUnitRefName();
- info.persistenceUnitName = puRef.getPersistenceUnitName();
+ info.persistenceUnitName = puRef.getPersistenceUnitName();
+ infos.add(info);
+ }
+ return infos;
+ }
+
+ private List<PersistenceContextInfo> buildPersistenceContextRefInfos(JndiConsumer jndiConsumer) {
+ ArrayList<PersistenceContextInfo> infos = new ArrayList<PersistenceContextInfo>();
+
+ for (PersistenceContextRef contextRef : jndiConsumer.getPersistenceContextRef()) {
+ PersistenceContextInfo info = new PersistenceContextInfo();
+ info.referenceName = contextRef.getPersistenceContextRefName();
+ info.persistenceUnitName = contextRef.getPersistenceUnitName();
+ info.extended = (contextRef.getPersistenceContextType() == PersistenceContextType.EXTENDED);
+ List<Property> persistenceProperty = contextRef.getPersistenceProperty();
+ for (Property property : persistenceProperty) {
+ String name = property.getName();
+ String value = property.getValue();
+ info.properties.setProperty(name, value);
+ }
infos.add(info);
}
- return infos;
+ return infos;
}
- private void buildAmbiguousEjbRefInfos(JndiEncInfo jndi, JndiConsumer jndiConsumer, String referringComponent) throws OpenEJBException {
+ private void buildAmbiguousEjbRefInfos(JndiEncInfo sjndi, JndiConsumer jndiConsumer, String referringComponent) throws OpenEJBException {
ArrayList<EjbRef> ejbRefs = new ArrayList<EjbRef>(jndiConsumer.getEjbRef());
for (EjbRef ejb : ejbRefs) {
if (ejb.getType() != EjbRef.Type.UNKNOWN) continue;
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java?view=diff&rev=494973&r1=494972&r2=494973
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java Wed Jan 10 12:50:14 2007
@@ -142,6 +142,14 @@
}
}
+ for (PersistenceContextInfo info : bean.jndiEnc.persistenceContextRefs) {
+ for (InjectionInfo target : info.targets) {
+ Class targetClass = loadClass(target.className, "classNotFound.injectionTarget");
+ Injection injection = new Injection(info.referenceName, target.propertyName, targetClass);
+ deployment.getInjections().add(injection);
+ }
+ }
+
for (ResourceReferenceInfo info : bean.jndiEnc.resourceRefs) {
for (InjectionInfo target : info.targets) {
Class targetClass = loadClass(target.className, "classNotFound.injectionTarget");
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java?view=diff&rev=494973&r1=494972&r2=494973
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java Wed Jan 10 12:50:14 2007
@@ -53,6 +53,7 @@
private final EnvEntryInfo[] envEntries;
private final ResourceReferenceInfo[] resourceRefs;
private final PersistenceUnitInfo[] persistenceUnitRefs;
+ private final PersistenceContextInfo[] persistenceContextRefs;
private final Map<String, EntityManagerFactory> entityManagerFactories;
private final Map<String, Map<String, EntityManagerFactory>> allFactories;
private final String jarPath;
@@ -109,6 +110,12 @@
persistenceUnitRefs = new PersistenceUnitInfo[]{};
}
+ if ((jndiEnc != null && jndiEnc.persistenceContextRefs != null)) {
+ persistenceContextRefs = jndiEnc.persistenceContextRefs.toArray(new PersistenceContextInfo[0]);
+ } else {
+ persistenceContextRefs = new PersistenceContextInfo[]{};
+ }
+
if(allFactories != null){
this.allFactories = allFactories;
} else {
@@ -249,6 +256,27 @@
reference = new PersistenceUnitReference(factory);
bindings.put(normalize(puRefInfo.referenceName), wrapReference(reference));
+ }
+
+ for (int i = 0; i < persistenceContextRefs.length; i++) {
+ PersistenceContextInfo contextInfo = persistenceContextRefs[i];
+
+ EntityManagerFactory factory;
+ if (contextInfo.persistenceUnitName != null) {
+ if (contextInfo.persistenceUnitName.indexOf("#") == -1) {
+ factory = entityManagerFactories.get(contextInfo.persistenceUnitName);
+ } else {
+ factory = findEntityManagerFactory(allFactories, jarPath, contextInfo.persistenceUnitName);
+ }
+ } else if (entityManagerFactories.size() == 1) {
+ factory = entityManagerFactories.values().toArray(new EntityManagerFactory[1])[0];
+ } else {
+ throw new OpenEJBException("Deployment failed as the Persistence Unit could not be located. Try adding the 'persistence-unit-name' tag in ejb-jar.xml ");
+ }
+
+// TODO create persistence context reference here
+// Reference reference = new PersistenceUnitReference(factory);
+// bindings.put(normalize(contextInfo.referenceName), wrapReference(reference));
}
IvmContext enc = new IvmContext(new NameNode(null, new ParsedName("comp"), null));
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncInfo.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncInfo.java?view=diff&rev=494973&r1=494972&r2=494973
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncInfo.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncInfo.java Wed Jan 10 12:50:14 2007
@@ -26,4 +26,5 @@
public final List<EjbLocalReferenceInfo> ejbLocalReferences = new ArrayList<EjbLocalReferenceInfo>();
public final List<ResourceReferenceInfo> resourceRefs = new ArrayList<ResourceReferenceInfo>();
public final List<PersistenceUnitInfo> persistenceUnitRefs = new ArrayList<PersistenceUnitInfo>();
+ public final List<PersistenceContextInfo> persistenceContextRefs = new ArrayList<PersistenceContextInfo>();
}
Added: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/PersistenceContextInfo.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/PersistenceContextInfo.java?view=auto&rev=494973
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/PersistenceContextInfo.java (added)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/PersistenceContextInfo.java Wed Jan 10 12:50:14 2007
@@ -0,0 +1,30 @@
+/**
+ *
+ * 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.assembler.classic;
+
+import java.util.Properties;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class PersistenceContextInfo extends InjectableInfo {
+ public String referenceName;
+ public String persistenceUnitName;
+ public boolean extended;
+ public final Properties properties = new Properties();
+}