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