You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by th...@apache.org on 2014/06/22 23:55:17 UTC

git commit: TAP5-2206: support parsing of JPA 2.x definitions

Repository: tapestry-5
Updated Branches:
  refs/heads/master fbd7d031e -> a55a5bc59


TAP5-2206: support parsing of JPA 2.x definitions


Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/a55a5bc5
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/a55a5bc5
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/a55a5bc5

Branch: refs/heads/master
Commit: a55a5bc59f63e7630e92527f855ad1d3435b48bd
Parents: fbd7d03
Author: Thiago H. de Paula Figueiredo <th...@apache.org>
Authored: Sun Jun 22 18:55:00 2014 -0300
Committer: Thiago H. de Paula Figueiredo <th...@apache.org>
Committed: Sun Jun 22 18:55:00 2014 -0300

----------------------------------------------------------------------
 .../internal/jpa/PersistenceContentHandler.java | 13 +++++++---
 .../jpa/EntityManagerSourceImplTest.java        | 27 +++++++++++++++-----
 .../single-persistence-unit-jpa-2.1.xml         | 14 ++++++++++
 3 files changed, 44 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/a55a5bc5/tapestry-jpa/src/main/java/org/apache/tapestry5/internal/jpa/PersistenceContentHandler.java
----------------------------------------------------------------------
diff --git a/tapestry-jpa/src/main/java/org/apache/tapestry5/internal/jpa/PersistenceContentHandler.java b/tapestry-jpa/src/main/java/org/apache/tapestry5/internal/jpa/PersistenceContentHandler.java
index 9dcf8c9..eccfd57 100644
--- a/tapestry-jpa/src/main/java/org/apache/tapestry5/internal/jpa/PersistenceContentHandler.java
+++ b/tapestry-jpa/src/main/java/org/apache/tapestry5/internal/jpa/PersistenceContentHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2011 The Apache Software Foundation
+// Copyright 2011, 2014 The Apache Software Foundation
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -24,11 +24,16 @@ import org.xml.sax.SAXException;
 import javax.persistence.SharedCacheMode;
 import javax.persistence.ValidationMode;
 import javax.persistence.spi.PersistenceUnitTransactionType;
+
+import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
+import java.util.Set;
 
 public class PersistenceContentHandler implements ContentHandler
 {
-    private static final String NAMESPACE_URI = "http://java.sun.com/xml/ns/persistence";
+    private static final List<String> NAMESPACE_URIS = Arrays.asList(
+    		new String[]{"http://java.sun.com/xml/ns/persistence", "http://xmlns.jcp.org/xml/ns/persistence"});
     private static final String ELEMENT_PERSISTENCE_UNIT = "persistence-unit";
     private static final String ELEMENT_PROVIDER = "provider";
     private static final String ELEMENT_JTA_DATA_SOURCE = "jta-data-source";
@@ -83,7 +88,7 @@ public class PersistenceContentHandler implements ContentHandler
     public void startElement(final String namespaceURI, final String localName, final String qName,
                              final Attributes atts) throws SAXException
     {
-        if (NAMESPACE_URI.equals(namespaceURI))
+        if (NAMESPACE_URIS.contains(namespaceURI))
         {
             if (ELEMENT_PERSISTENCE_UNIT.equals(localName))
             {
@@ -115,7 +120,7 @@ public class PersistenceContentHandler implements ContentHandler
         final String string = characters.toString().trim();
         characters = null;
 
-        if (NAMESPACE_URI.equals(namespaceURI))
+        if (NAMESPACE_URIS.contains(namespaceURI))
         {
             if (ELEMENT_PROVIDER.equals(localName))
             {

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/a55a5bc5/tapestry-jpa/src/test/java/org/apache/tapestry5/internal/jpa/EntityManagerSourceImplTest.java
----------------------------------------------------------------------
diff --git a/tapestry-jpa/src/test/java/org/apache/tapestry5/internal/jpa/EntityManagerSourceImplTest.java b/tapestry-jpa/src/test/java/org/apache/tapestry5/internal/jpa/EntityManagerSourceImplTest.java
index e1f819f..fa090cf 100644
--- a/tapestry-jpa/src/test/java/org/apache/tapestry5/internal/jpa/EntityManagerSourceImplTest.java
+++ b/tapestry-jpa/src/test/java/org/apache/tapestry5/internal/jpa/EntityManagerSourceImplTest.java
@@ -24,6 +24,7 @@ import org.testng.annotations.Test;
 
 import javax.persistence.EntityManager;
 import javax.persistence.spi.PersistenceUnitTransactionType;
+
 import java.util.HashMap;
 import java.util.Map;
 
@@ -58,7 +59,15 @@ public class EntityManagerSourceImplTest extends TapestryTestCase
     @Test
     public void createEntityManagerFactory_with_supplied_entitymanagerproperties()
     {
-        PersistenceUnitConfigurer configurer = new PersistenceUnitConfigurer()
+    	final String persistenceUnitFile = "single-persistence-unit.xml";
+        EntityManagerSourceImpl emSource = create(persistenceUnitFile);
+        EntityManager em = emSource.createEntityManagerFactory("defaultpropertytest")
+                .createEntityManager();
+        assertEquals(em.getProperties().get("MYKEY"), "MYVALUE");
+    }
+
+	private EntityManagerSourceImpl create(final String persistenceUnitFile) {
+		PersistenceUnitConfigurer configurer = new PersistenceUnitConfigurer()
         {
             @Override
             @SuppressWarnings(
@@ -81,12 +90,18 @@ public class EntityManagerSourceImplTest extends TapestryTestCase
         Map<String, PersistenceUnitConfigurer> configurerMap = CollectionFactory
                 .<String, PersistenceUnitConfigurer>newMap();
         configurerMap.put("defaultpropertytest", configurer);
-        EntityManagerSourceImpl emSource = new EntityManagerSourceImpl(
+		EntityManagerSourceImpl emSource = new EntityManagerSourceImpl(
                 LoggerFactory.getLogger(EntityManagerSourceImplTest.class), new ClasspathResource(
-                "single-persistence-unit.xml"), null, configurerMap);
-        EntityManager em = emSource.createEntityManagerFactory("defaultpropertytest")
-                .createEntityManager();
-        assertEquals(em.getProperties().get("MYKEY"), "MYVALUE");
+                persistenceUnitFile), null, configurerMap);
+		return emSource;
+	}
+    
+    // TAP5-2206
+    @Test
+    public void jpa2dot1Namespace() {
+    	
+    	// fails with an NPE without the fix
+    	create("single-persistence-unit-jpa-2.1.xml");
     }
 
 }

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/a55a5bc5/tapestry-jpa/src/test/resources/single-persistence-unit-jpa-2.1.xml
----------------------------------------------------------------------
diff --git a/tapestry-jpa/src/test/resources/single-persistence-unit-jpa-2.1.xml b/tapestry-jpa/src/test/resources/single-persistence-unit-jpa-2.1.xml
new file mode 100644
index 0000000..4ea59cc
--- /dev/null
+++ b/tapestry-jpa/src/test/resources/single-persistence-unit-jpa-2.1.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence" version="2.1">
+
+	<persistence-unit name="App2PersistenceUnit" transaction-type="RESOURCE_LOCAL">
+		<properties>
+			<property name="javax.persistence.jdbc.driver" value="org.h2.Driver" />
+			<property name="javax.persistence.jdbc.url" value="jdbc:h2:mem:test" />
+			<property name="javax.persistence.jdbc.username" value="sa" />
+			<property name="eclipselink.ddl-generation" value="create-tables"/>
+			<property name="eclipselink.logging.level" value="fine"/>
+		</properties>
+	</persistence-unit>
+
+</persistence>
\ No newline at end of file