Author: dain
Date: Mon Sep 24 13:02:06 2007
New Revision: 578939

URL: http://svn.apache.org/viewvc?rev=578939&view=rev
Log:
Fixed persistence units in Tomcat plugin
Aded persistence unit example to ejb-examples.war

Added:
    
openejb/trunk/openejb3/examples/ejb-examples/src/main/java/org/apache/openejb/examples/servlet/JpaBean.java
    
openejb/trunk/openejb3/examples/ejb-examples/src/main/java/org/apache/openejb/examples/servlet/JpaServlet.java
    openejb/trunk/openejb3/examples/ejb-examples/src/main/resources/META-INF/
    
openejb/trunk/openejb3/examples/ejb-examples/src/main/resources/META-INF/persistence.xml
Modified:
    openejb/trunk/openejb3/assembly/openejb-tomcat/maven.xml
    
openejb/trunk/openejb3/assembly/openejb-tomcat/src/main/java/org/apache/openejb/tomcat/TomcatWebAppBuilder.java
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/WebAppBuilder.java
    openejb/trunk/openejb3/examples/ejb-examples/src/main/webapp/WEB-INF/web.xml

Modified: openejb/trunk/openejb3/assembly/openejb-tomcat/maven.xml
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-tomcat/maven.xml?rev=578939&r1=578938&r2=578939&view=diff
==============================================================================
--- openejb/trunk/openejb3/assembly/openejb-tomcat/maven.xml (original)
+++ openejb/trunk/openejb3/assembly/openejb-tomcat/maven.xml Mon Sep 24 
13:02:06 2007
@@ -208,7 +208,7 @@
 
     <goal name="setup:ejb-examples">
       <mkdir dir="${tomcat.home}/webapps/ejb-examples"/>
-      <unjar 
src="${user.home}/.m2/repository/org/apache/openejb/servlet-samples/1.0-SNAPSHOT/servlet-samples-1.0-SNAPSHOT.war"
 dest="${tomcat.home}/webapps/ejb-examples"/>
+      <unjar 
src="${user.home}/.m2/repository/org/apache/openejb/ejb-examples/1.0-SNAPSHOT/ejb-examples-1.0-SNAPSHOT.war"
 dest="${tomcat.home}/webapps/ejb-examples"/>
     </goal>
 
     <!--======================-->
@@ -219,7 +219,7 @@
       <attainGoal name="tomcat6"/>
       <attainGoal name="setup:tomcat"/>
       <attainGoal name="setup:loader-webapp"/>
-      <attainGoal name="setup:itests-war"/>
+      <!--<attainGoal name="setup:itests-war"/>-->
       <attainGoal name="setup:ejb-examples"/>
       <attainGoal name="start:tomcat"/>
     </goal>
@@ -228,7 +228,7 @@
       <attainGoal name="tomcat6"/>
       <attainGoal name="setup:tomcat"/>
       <attainGoal name="setup:loader-webapp"/>
-      <attainGoal name="setup:itests-war"/>
+      <!--<attainGoal name="setup:itests-war"/>-->
       <attainGoal name="setup:ejb-examples"/>
       <attainGoal name="start:tomcat-debug"/>
     </goal>

Modified: 
openejb/trunk/openejb3/assembly/openejb-tomcat/src/main/java/org/apache/openejb/tomcat/TomcatWebAppBuilder.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-tomcat/src/main/java/org/apache/openejb/tomcat/TomcatWebAppBuilder.java?rev=578939&r1=578938&r2=578939&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/assembly/openejb-tomcat/src/main/java/org/apache/openejb/tomcat/TomcatWebAppBuilder.java
 (original)
+++ 
openejb/trunk/openejb3/assembly/openejb-tomcat/src/main/java/org/apache/openejb/tomcat/TomcatWebAppBuilder.java
 Mon Sep 24 13:02:06 2007
@@ -30,6 +30,7 @@
 import org.apache.openejb.assembler.classic.JndiEncBuilder;
 import org.apache.openejb.assembler.classic.WebAppBuilder;
 import org.apache.openejb.assembler.classic.WebAppInfo;
+import org.apache.openejb.assembler.classic.LinkResolver;
 import org.apache.openejb.config.AppModule;
 import org.apache.openejb.config.ConfigurationFactory;
 import org.apache.openejb.config.DeploymentLoader;
@@ -48,6 +49,7 @@
 import javax.naming.Context;
 import javax.naming.NamingException;
 import javax.servlet.ServletContext;
+import javax.persistence.EntityManagerFactory;
 import java.io.File;
 import java.io.IOException;
 import java.net.URL;
@@ -95,11 +97,11 @@
     // OpenEJB WebAppBuilder
     //
 
-    public void deploy(WebAppInfo webAppInfo) throws Exception {
+    public void deploy(WebAppInfo webAppInfo, 
LinkResolver<EntityManagerFactory> emfLinkResolver) throws Exception {
         StandardContext standardContext = 
getContextInfo(webAppInfo.moduleId).standardContext;
 
         if (standardContext != null) {
-            JndiEncBuilder jndiEncBuilder = new 
JndiEncBuilder(webAppInfo.jndiEnc, webAppInfo.moduleId);
+            JndiEncBuilder jndiEncBuilder = new 
JndiEncBuilder(webAppInfo.jndiEnc, "Bean", emfLinkResolver, 
webAppInfo.moduleId);
             jndiEncBuilder.setUseCrossClassLoaderRef(false);
             Context enc = (Context) jndiEncBuilder.build().lookup("env");
             bindEnc(standardContext, enc);

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java?rev=578939&r1=578938&r2=578939&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
 Mon Sep 24 13:02:06 2007
@@ -542,7 +542,7 @@
             WebAppBuilder webAppBuilder = 
SystemInstance.get().getComponent(WebAppBuilder.class);
             if (webAppBuilder != null) {
                 for (WebAppInfo webAppInfo : appInfo.webApps) {
-                    webAppBuilder.deploy(webAppInfo);
+                    webAppBuilder.deploy(webAppInfo, emfLinkResolver);
                 }
             }
 

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java?rev=578939&r1=578938&r2=578939&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java
 Mon Sep 24 13:02:06 2007
@@ -272,39 +272,41 @@
             }
         }
 
-        for (PersistenceUnitReferenceInfo referenceInfo : 
jndiEnc.persistenceUnitRefs) {
-            if (referenceInfo.location != null){
-                Reference reference = 
buildReferenceLocation(referenceInfo.location);
+        if (emfLinkResolver != null) {
+            for (PersistenceUnitReferenceInfo referenceInfo : 
jndiEnc.persistenceUnitRefs) {
+                if (referenceInfo.location != null){
+                    Reference reference = 
buildReferenceLocation(referenceInfo.location);
+                    bindings.put(normalize(referenceInfo.referenceName), 
reference);
+                    continue;
+                }
+
+                EntityManagerFactory factory = 
emfLinkResolver.resolveLink(referenceInfo.persistenceUnitName, moduleUri);
+                if (factory == null) {
+                    throw new IllegalArgumentException("Persistence unit " + 
referenceInfo.persistenceUnitName + " for persistence-unit-ref " +
+                            referenceInfo.referenceName + " not found");
+                }
+
+                Reference reference = new PersistenceUnitReference(factory);
                 bindings.put(normalize(referenceInfo.referenceName), 
reference);
-                continue;
             }
 
-            EntityManagerFactory factory = 
emfLinkResolver.resolveLink(referenceInfo.persistenceUnitName, moduleUri);
-            if (factory == null) {
-                throw new IllegalArgumentException("Persistence unit " + 
referenceInfo.persistenceUnitName + " for persistence-unit-ref " +
-                        referenceInfo.referenceName + " not found");
-            }
+            for (PersistenceContextReferenceInfo contextInfo : 
jndiEnc.persistenceContextRefs) {
+                if (contextInfo.location != null){
+                    Reference reference = 
buildReferenceLocation(contextInfo.location);
+                    bindings.put(normalize(contextInfo.referenceName), 
reference);
+                    continue;
+                }
 
-            Reference reference = new PersistenceUnitReference(factory);
-            bindings.put(normalize(referenceInfo.referenceName), reference);
-        }
+                EntityManagerFactory factory = 
emfLinkResolver.resolveLink(contextInfo.persistenceUnitName, moduleUri);
+                if (factory == null) {
+                    throw new IllegalArgumentException("Persistence unit " + 
contextInfo.persistenceUnitName + " for persistence-context-ref " +
+                            contextInfo.referenceName + " not found");
+                }
 
-        for (PersistenceContextReferenceInfo contextInfo : 
jndiEnc.persistenceContextRefs) {
-            if (contextInfo.location != null){
-                Reference reference = 
buildReferenceLocation(contextInfo.location);
+                JtaEntityManager jtaEntityManager = new 
JtaEntityManager(jtaEntityManagerRegistry, factory, contextInfo.properties, 
contextInfo.extended);
+                Reference reference = new 
PersistenceContextReference(jtaEntityManager);
                 bindings.put(normalize(contextInfo.referenceName), reference);
-                continue;
             }
-
-            EntityManagerFactory factory = 
emfLinkResolver.resolveLink(contextInfo.persistenceUnitName, moduleUri);
-            if (factory == null) {
-                throw new IllegalArgumentException("Persistence unit " + 
contextInfo.persistenceUnitName + " for persistence-context-ref " +
-                        contextInfo.referenceName + " not found");
-            }
-
-            JtaEntityManager jtaEntityManager = new 
JtaEntityManager(jtaEntityManagerRegistry, factory, contextInfo.properties, 
contextInfo.extended);
-            Reference reference = new 
PersistenceContextReference(jtaEntityManager);
-            bindings.put(normalize(contextInfo.referenceName), reference);
         }
 
         for (ServiceReferenceInfo referenceInfo : jndiEnc.serviceRefs) {

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/WebAppBuilder.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/WebAppBuilder.java?rev=578939&r1=578938&r2=578939&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/WebAppBuilder.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/WebAppBuilder.java
 Mon Sep 24 13:02:06 2007
@@ -17,7 +17,9 @@
  */
 package org.apache.openejb.assembler.classic;
 
+import javax.persistence.EntityManagerFactory;
+
 public interface WebAppBuilder {
-    void deploy(WebAppInfo webAppInfo) throws Exception;
+    void deploy(WebAppInfo webAppInfo, LinkResolver<EntityManagerFactory> 
emfLinkResolver) throws Exception;
     void undeploy(WebAppInfo webAppInfo) throws Exception;
 }

Added: 
openejb/trunk/openejb3/examples/ejb-examples/src/main/java/org/apache/openejb/examples/servlet/JpaBean.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/examples/ejb-examples/src/main/java/org/apache/openejb/examples/servlet/JpaBean.java?rev=578939&view=auto
==============================================================================
--- 
openejb/trunk/openejb3/examples/ejb-examples/src/main/java/org/apache/openejb/examples/servlet/JpaBean.java
 (added)
+++ 
openejb/trunk/openejb3/examples/ejb-examples/src/main/java/org/apache/openejb/examples/servlet/JpaBean.java
 Mon Sep 24 13:02:06 2007
@@ -0,0 +1,52 @@
+/**
+ *
+ * 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.examples.servlet;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Column;
+
[EMAIL PROTECTED]
+public class JpaBean {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "id")
+    private int id;
+
+    @Column(name = "name")
+    private String name;
+
+    public int getId() {
+        return id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+
+    public String toString() {
+        return "[JpaBean id=" + id + ", name=" + name + "]";
+    }
+}
\ No newline at end of file

Added: 
openejb/trunk/openejb3/examples/ejb-examples/src/main/java/org/apache/openejb/examples/servlet/JpaServlet.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/examples/ejb-examples/src/main/java/org/apache/openejb/examples/servlet/JpaServlet.java?rev=578939&view=auto
==============================================================================
--- 
openejb/trunk/openejb3/examples/ejb-examples/src/main/java/org/apache/openejb/examples/servlet/JpaServlet.java
 (added)
+++ 
openejb/trunk/openejb3/examples/ejb-examples/src/main/java/org/apache/openejb/examples/servlet/JpaServlet.java
 Mon Sep 24 13:02:06 2007
@@ -0,0 +1,73 @@
+/**
+ *
+ * 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.examples.servlet;
+
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.PersistenceUnit;
+import javax.persistence.EntityManager;
+import javax.persistence.EntityTransaction;
+import javax.persistence.Query;
+import javax.servlet.ServletException;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+public class JpaServlet extends HttpServlet {
+    @PersistenceUnit(name = "jpa-example")
+    private EntityManagerFactory emf;
+
+
+    protected void doGet(HttpServletRequest request, HttpServletResponse 
response) throws ServletException, IOException {
+        response.setContentType("text/plain");
+        ServletOutputStream out = response.getOutputStream();
+
+        out.println("@PersistenceUnit=" + emf);
+
+        EntityManager em = emf.createEntityManager();
+        EntityTransaction transaction = em.getTransaction();
+        transaction.begin();
+
+        JpaBean jpaBean = new JpaBean();
+        jpaBean.setName("JpaBean");
+        em.persist(jpaBean);
+
+        transaction.commit();
+        transaction.begin();
+
+        Query query = em.createQuery("SELECT j FROM JpaBean j WHERE 
j.name='JpaBean'");
+        jpaBean = (JpaBean) query.getSingleResult();
+        out.println("Loaded " + jpaBean);
+
+        em.remove(jpaBean);
+
+        transaction.commit();
+        transaction.begin();
+
+        query = em.createQuery("SELECT count(j) FROM JpaBean j WHERE 
j.name='JpaBean'");
+        int count = ((Number) query.getSingleResult()).intValue();
+        if (count == 0) {
+            out.println("Removed " + jpaBean);
+        } else {
+            out.println("ERROR: unable to remove" + jpaBean);
+        }
+
+        transaction.commit();
+    }
+}

Added: 
openejb/trunk/openejb3/examples/ejb-examples/src/main/resources/META-INF/persistence.xml
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/examples/ejb-examples/src/main/resources/META-INF/persistence.xml?rev=578939&view=auto
==============================================================================
--- 
openejb/trunk/openejb3/examples/ejb-examples/src/main/resources/META-INF/persistence.xml
 (added)
+++ 
openejb/trunk/openejb3/examples/ejb-examples/src/main/resources/META-INF/persistence.xml
 Mon Sep 24 13:02:06 2007
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    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.
+-->
+<persistence xmlns="http://java.sun.com/xml/ns/persistence"; version="1.0">
+  <persistence-unit transaction-type="RESOURCE_LOCAL" name="jpa-example">
+    <jta-data-source>java:openejb/Connector/Default JDBC 
Database</jta-data-source>
+    <non-jta-data-source>java:openejb/Connector/Default Unmanaged JDBC 
Database</non-jta-data-source>
+    <class>org.apache.openejb.examples.servlet.JpaBean</class>
+
+    <properties>
+      <property name="openjpa.jdbc.SynchronizeMappings" 
value="buildSchema(ForeignKeys=true)"/>
+    </properties>
+  </persistence-unit>
+</persistence>
\ No newline at end of file

Modified: 
openejb/trunk/openejb3/examples/ejb-examples/src/main/webapp/WEB-INF/web.xml
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/examples/ejb-examples/src/main/webapp/WEB-INF/web.xml?rev=578939&r1=578938&r2=578939&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/examples/ejb-examples/src/main/webapp/WEB-INF/web.xml 
(original)
+++ 
openejb/trunk/openejb3/examples/ejb-examples/src/main/webapp/WEB-INF/web.xml 
Mon Sep 24 13:02:06 2007
@@ -32,4 +32,14 @@
     <servlet-name>AnnotatedServlet</servlet-name>
     <url-pattern>/annotated/*</url-pattern>
   </servlet-mapping>
+
+  <servlet>
+    <servlet-name>JpaServlet</servlet-name>
+    
<servlet-class>org.apache.openejb.examples.servlet.JpaServlet</servlet-class>
+  </servlet>
+
+  <servlet-mapping>
+    <servlet-name>JpaServlet</servlet-name>
+    <url-pattern>/jpa/*</url-pattern>
+  </servlet-mapping>
 </web-app>


Reply via email to