This is an automated email from the ASF dual-hosted git repository. struberg pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/openjpa.git
commit f72f3ca7e07b539c2de3c31e3381e8f9c9216807 Author: Mark Struberg <strub...@apache.org> AuthorDate: Sat May 8 22:38:56 2021 +0200 OPENJPA-2873 add persistence_2_2.xsd handling --- .../apache/openjpa/lib/meta/XMLVersionParser.java | 1 + .../persistence/PersistenceProductDerivation.java | 15 +- .../openjpa/persistence/persistence_2_2.xsd.rsrc | 354 +++++++++++++++++++++ openjpa-project/LICENSE | 2 + 4 files changed, 367 insertions(+), 5 deletions(-) diff --git a/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/XMLVersionParser.java b/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/XMLVersionParser.java index 3d7584c..67e6f95 100644 --- a/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/XMLVersionParser.java +++ b/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/XMLVersionParser.java @@ -32,6 +32,7 @@ public class XMLVersionParser extends XMLMetaDataParser { public static final String VERSION_1_0 = "1.0"; public static final String VERSION_2_0 = "2.0"; public static final String VERSION_2_1 = "2.1"; + public static final String VERSION_2_2 = "2.2"; static private final String VERSION_ATTR = "version"; static private final String XSI_NS = diff --git a/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceProductDerivation.java b/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceProductDerivation.java index bca362c..b328593 100644 --- a/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceProductDerivation.java +++ b/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceProductDerivation.java @@ -777,6 +777,7 @@ public class PersistenceProductDerivation private static final String PERSISTENCE_XSD_2_0 = "persistence_2_0.xsd"; private static final String PERSISTENCE_XSD_2_1 = "persistence_2_1.xsd"; + private static final String PERSISTENCE_XSD_2_2 = "persistence_2_2.xsd"; private static final Localizer _loc = Localizer.forPackage (ConfigurationParser.class); @@ -845,14 +846,18 @@ public class PersistenceProductDerivation // if the version and/or schema location is for 1.0, use the 1.0 // schema if (XMLVersionParser.VERSION_2_0.equals(_persistenceVersion) - || (_schemaLocation != null && _schemaLocation.indexOf(PERSISTENCE_XSD_2_0) != -1)) - { + || (_schemaLocation != null && _schemaLocation.indexOf(PERSISTENCE_XSD_2_0) != -1)) { persistencexsd = "persistence_2_0-xsd.rsrc"; - } else if (XMLVersionParser.VERSION_2_1.equals(_persistenceVersion) - || (_schemaLocation != null && _schemaLocation.indexOf(PERSISTENCE_XSD_2_1) != -1)) - { + } + else if (XMLVersionParser.VERSION_2_1.equals(_persistenceVersion) + || (_schemaLocation != null && _schemaLocation.indexOf(PERSISTENCE_XSD_2_1) != -1)) { persistencexsd = "persistence_2_1-xsd.rsrc"; } + else if (XMLVersionParser.VERSION_2_2.equals(_persistenceVersion) + || (_schemaLocation != null && _schemaLocation.indexOf(PERSISTENCE_XSD_2_2) != -1)) { + persistencexsd = "persistence_2_2-xsd.rsrc"; + } + return getClass().getResourceAsStream(persistencexsd); } diff --git a/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/persistence_2_2.xsd.rsrc b/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/persistence_2_2.xsd.rsrc new file mode 100644 index 0000000..0fab1c4 --- /dev/null +++ b/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/persistence_2_2.xsd.rsrc @@ -0,0 +1,354 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- persistence.xml schema --> +<xsd:schema targetNamespace="http://xmlns.jcp.org/xml/ns/persistence" + xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns:persistence="http://xmlns.jcp.org/xml/ns/persistence" + elementFormDefault="qualified" + attributeFormDefault="unqualified" + version="2.2"> + + <xsd:annotation> + <xsd:documentation> + @(#)persistence_2_2.xsd 2.2 July 17, 2017 + </xsd:documentation> + </xsd:annotation> + + <xsd:annotation> + <xsd:documentation> + + Copyright (c) 2008 - 2017 Oracle Corporation. All rights reserved. + + This program and the accompanying materials are made available under the + terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 + which accompanies this distribution. + The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html + and the Eclipse Distribution License is available at + http://www.eclipse.org/org/documents/edl-v10.php. + + Contributors: + Linda DeMichiel - Java Persistence 2.2, Version 2.2 (July 7, 2017) + Specification available from http://jcp.org/en/jsr/detail?id=338 + + </xsd:documentation> + </xsd:annotation> + + <xsd:annotation> + <xsd:documentation><![CDATA[ + + This is the XML Schema for the persistence configuration file. + The file must be named "META-INF/persistence.xml" in the + persistence archive. + + Persistence configuration files must indicate + the persistence schema by using the persistence namespace: + + http://xmlns.jcp.org/xml/ns/persistence + + and indicate the version of the schema by + using the version element as shown below: + + <persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence + http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd" + version="2.2"> + ... + </persistence> + + ]]></xsd:documentation> + </xsd:annotation> + + <xsd:simpleType name="versionType"> + <xsd:restriction base="xsd:token"> + <xsd:pattern value="[0-9]+(\.[0-9]+)*"/> + </xsd:restriction> + </xsd:simpleType> + + <!-- **************************************************** --> + + <xsd:element name="persistence"> + <xsd:complexType> + <xsd:sequence> + + <!-- **************************************************** --> + + <xsd:element name="persistence-unit" + minOccurs="1" maxOccurs="unbounded"> + <xsd:complexType> + <xsd:annotation> + <xsd:documentation> + + Configuration of a persistence unit. + + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + + <!-- **************************************************** --> + + <xsd:element name="description" type="xsd:string" + minOccurs="0"> + <xsd:annotation> + <xsd:documentation> + + Description of this persistence unit. + + </xsd:documentation> + </xsd:annotation> + </xsd:element> + + <!-- **************************************************** --> + + <xsd:element name="provider" type="xsd:string" + minOccurs="0"> + <xsd:annotation> + <xsd:documentation> + + Provider class that supplies EntityManagers for this + persistence unit. + + </xsd:documentation> + </xsd:annotation> + </xsd:element> + + <!-- **************************************************** --> + + <xsd:element name="jta-data-source" type="xsd:string" + minOccurs="0"> + <xsd:annotation> + <xsd:documentation> + + The container-specific name of the JTA datasource to use. + + </xsd:documentation> + </xsd:annotation> + </xsd:element> + + <!-- **************************************************** --> + + <xsd:element name="non-jta-data-source" type="xsd:string" + minOccurs="0"> + <xsd:annotation> + <xsd:documentation> + + The container-specific name of a non-JTA datasource to use. + + </xsd:documentation> + </xsd:annotation> + </xsd:element> + + <!-- **************************************************** --> + + <xsd:element name="mapping-file" type="xsd:string" + minOccurs="0" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation> + + File containing mapping information. Loaded as a resource + by the persistence provider. + + </xsd:documentation> + </xsd:annotation> + </xsd:element> + + <!-- **************************************************** --> + + <xsd:element name="jar-file" type="xsd:string" + minOccurs="0" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation> + + Jar file that is to be scanned for managed classes. + + </xsd:documentation> + </xsd:annotation> + </xsd:element> + + <!-- **************************************************** --> + + <xsd:element name="class" type="xsd:string" + minOccurs="0" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation> + + Managed class to be included in the persistence unit and + to scan for annotations. It should be annotated + with either @Entity, @Embeddable or @MappedSuperclass. + + </xsd:documentation> + </xsd:annotation> + </xsd:element> + + <!-- **************************************************** --> + + <xsd:element name="exclude-unlisted-classes" type="xsd:boolean" + default="true" minOccurs="0"> + <xsd:annotation> + <xsd:documentation> + + When set to true then only listed classes and jars will + be scanned for persistent classes, otherwise the + enclosing jar or directory will also be scanned. + Not applicable to Java SE persistence units. + + </xsd:documentation> + </xsd:annotation> + </xsd:element> + + <!-- **************************************************** --> + + <xsd:element name="shared-cache-mode" + type="persistence:persistence-unit-caching-type" + minOccurs="0"> + <xsd:annotation> + <xsd:documentation> + + Defines whether caching is enabled for the + persistence unit if caching is supported by the + persistence provider. When set to ALL, all entities + will be cached. When set to NONE, no entities will + be cached. When set to ENABLE_SELECTIVE, only entities + specified as cacheable will be cached. When set to + DISABLE_SELECTIVE, entities specified as not cacheable + will not be cached. When not specified or when set to + UNSPECIFIED, provider defaults may apply. + + </xsd:documentation> + </xsd:annotation> + </xsd:element> + + <!-- **************************************************** --> + + <xsd:element name="validation-mode" + type="persistence:persistence-unit-validation-mode-type" + minOccurs="0"> + <xsd:annotation> + <xsd:documentation> + + The validation mode to be used for the persistence unit. + + </xsd:documentation> + </xsd:annotation> + </xsd:element> + + + <!-- **************************************************** --> + + <xsd:element name="properties" minOccurs="0"> + <xsd:annotation> + <xsd:documentation> + + A list of standard and vendor-specific properties + and hints. + + </xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="property" + minOccurs="0" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation> + A name-value pair. + </xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:attribute name="name" type="xsd:string" + use="required"/> + <xsd:attribute name="value" type="xsd:string" + use="required"/> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + + </xsd:sequence> + + <!-- **************************************************** --> + + <xsd:attribute name="name" type="xsd:string" use="required"> + <xsd:annotation> + <xsd:documentation> + + Name used in code to reference this persistence unit. + + </xsd:documentation> + </xsd:annotation> + </xsd:attribute> + + <!-- **************************************************** --> + + <xsd:attribute name="transaction-type" + type="persistence:persistence-unit-transaction-type"> + <xsd:annotation> + <xsd:documentation> + + Type of transactions used by EntityManagers from this + persistence unit. + + </xsd:documentation> + </xsd:annotation> + </xsd:attribute> + + </xsd:complexType> + </xsd:element> + </xsd:sequence> + <xsd:attribute name="version" type="persistence:versionType" + fixed="2.2" use="required"/> + </xsd:complexType> + </xsd:element> + + <!-- **************************************************** --> + + <xsd:simpleType name="persistence-unit-transaction-type"> + <xsd:annotation> + <xsd:documentation> + + public enum PersistenceUnitTransactionType {JTA, RESOURCE_LOCAL}; + + </xsd:documentation> + </xsd:annotation> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="JTA"/> + <xsd:enumeration value="RESOURCE_LOCAL"/> + </xsd:restriction> + </xsd:simpleType> + +<!-- **************************************************** --> + + <xsd:simpleType name="persistence-unit-caching-type"> + <xsd:annotation> + <xsd:documentation> + + public enum SharedCacheMode { ALL, NONE, ENABLE_SELECTIVE, DISABLE_SELECTIVE, UNSPECIFIED}; + + </xsd:documentation> + </xsd:annotation> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="ALL"/> + <xsd:enumeration value="NONE"/> + <xsd:enumeration value="ENABLE_SELECTIVE"/> + <xsd:enumeration value="DISABLE_SELECTIVE"/> + <xsd:enumeration value="UNSPECIFIED"/> + </xsd:restriction> + </xsd:simpleType> + +<!-- **************************************************** --> + + <xsd:simpleType name="persistence-unit-validation-mode-type"> + <xsd:annotation> + <xsd:documentation> + + public enum ValidationMode { AUTO, CALLBACK, NONE}; + + </xsd:documentation> + </xsd:annotation> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="AUTO"/> + <xsd:enumeration value="CALLBACK"/> + <xsd:enumeration value="NONE"/> + </xsd:restriction> + </xsd:simpleType> + +</xsd:schema> diff --git a/openjpa-project/LICENSE b/openjpa-project/LICENSE index 0ee792d..260351e 100644 --- a/openjpa-project/LICENSE +++ b/openjpa-project/LICENSE @@ -427,6 +427,8 @@ The exceptions are as follows: http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd) persistence_2_1-xsd.rsrc - Eclipse Public License v1.0 - included in the openjpa jar, taken from: http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd). + persistence_2_2-xsd.rsrc - Eclipse Public License v1.0 - included in the openjpa jar, taken from: + http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/persistence/persistence_2_2.xsd). websphere-uow-api.jar - this jar file contains WebSphere proprietary API code which is licensed for use when compiling OpenJPA. The jar is not distributed with OpenJPA and is only included with the