You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by fa...@apache.org on 2009/05/20 23:59:24 UTC
svn commit: r776878 - in /openjpa/trunk:
openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/attrOverrides/
openjpa-persistence/src/main/java/org/apache/openjpa/persistence/
openjpa-persistence/src/main/resources/org/apache/open...
Author: faywang
Date: Wed May 20 21:59:24 2009
New Revision: 776878
URL: http://svn.apache.org/viewvc?rev=776878&view=rev
Log:
OPENJPA-1069: support of @OrderBy("DESC") on ElementCollection containing basic type
Modified:
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/attrOverrides/Person.java
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/attrOverrides/TestAttrOverrides.java
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/AnnotationPersistenceMetaDataParser.java
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java
openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/localizer.properties
Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/attrOverrides/Person.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/attrOverrides/Person.java?rev=776878&r1=776877&r2=776878&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/attrOverrides/Person.java (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/attrOverrides/Person.java Wed May 20 21:59:24 2009
@@ -1,3 +1,21 @@
+/*
+ * 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.openjpa.persistence.embed.attrOverrides;
import java.util.ArrayList;
@@ -20,6 +38,22 @@
@OrderBy("zipcode.zip, zipcode.plusFour")
protected List<Address> residences = new ArrayList<Address>();
+ @ElementCollection
+ @OrderBy("DESC")
+ private List<String> nickNames = new ArrayList<String>();
+
+ public List<String> getNickNames() {
+ return nickNames;
+ }
+
+ public void setNickNames(List<String> nickNames) {
+ this.nickNames = nickNames;
+ }
+
+ public void addNickName(String nickName) {
+ nickNames.add(nickName);
+ }
+
public String getSsn() {
return ssn;
}
Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/attrOverrides/TestAttrOverrides.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/attrOverrides/TestAttrOverrides.java?rev=776878&r1=776877&r2=776878&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/attrOverrides/TestAttrOverrides.java (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/attrOverrides/TestAttrOverrides.java Wed May 20 21:59:24 2009
@@ -249,6 +249,7 @@
zipCode.setPlusFour("plusFour_" + id + "_" + i);
addr.setZipcode(zipCode);
p.addResidence(addr);
+ p.addNickName("nickName_ + " + i);
}
em.persist(p);
return p;
@@ -271,5 +272,14 @@
assertEquals(expPlusFour, plusFour);
i++;
}
+
+ List<String> nickNames = p.getNickNames();
+ assertEquals(4, nickNames.size());
+ i = 4;
+ for (String s : nickNames) {
+ String expNickName = "nickName_ + " + i;
+ assertEquals(expNickName, s);
+ i--;
+ }
}
}
\ No newline at end of file
Modified: openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/AnnotationPersistenceMetaDataParser.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/AnnotationPersistenceMetaDataParser.java?rev=776878&r1=776877&r2=776878&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/AnnotationPersistenceMetaDataParser.java (original)
+++ openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/AnnotationPersistenceMetaDataParser.java Wed May 20 21:59:24 2009
@@ -1542,8 +1542,18 @@
*/
private void parseOrderBy(FieldMetaData fmd, OrderBy anno) {
String dec = anno.value();
- if (dec.length() == 0)
+ if (fmd.isElementCollection() &&
+ fmd.getElement().getEmbeddedMetaData() != null) {
+ if (dec.length() == 0 || dec.equals("ASC") ||
+ dec.equals("DESC"))
+ throw new MetaDataException(_loc.get(
+ "invalid-orderBy", fmd));
+ }
+ if (dec.length() == 0 || dec.equals("ASC"))
dec = Order.ELEMENT + " asc";
+ else if (dec.equals("DESC"))
+ dec = Order.ELEMENT + " desc";
+
fmd.setOrderDeclaration(dec);
}
Modified: openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java?rev=776878&r1=776877&r2=776878&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java (original)
+++ openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java Wed May 20 21:59:24 2009
@@ -72,6 +72,8 @@
import static org.apache.openjpa.persistence.MetaDataTag.*;
import static org.apache.openjpa.persistence.PersistenceStrategy.*;
import org.apache.openjpa.util.ImplHelper;
+import org.apache.openjpa.util.MetaDataException;
+
import serp.util.Numbers;
/**
@@ -1549,8 +1551,18 @@
throws SAXException {
FieldMetaData fmd = (FieldMetaData) currentElement();
String dec = currentText();
- if (StringUtils.isEmpty(dec))
+ if (fmd.isElementCollection() &&
+ fmd.getElement().getEmbeddedMetaData() != null) {
+ if (dec.length() == 0 || dec.equals("ASC") ||
+ dec.equals("DESC"))
+ throw new MetaDataException(_loc.get(
+ "invalid-orderBy", fmd));
+ }
+ if (StringUtils.isEmpty(dec) || dec.equals("ASC"))
dec = Order.ELEMENT + " asc";
+ else if (dec.equals("DESC"))
+ dec = Order.ELEMENT + " desc";
+
fmd.setOrderDeclaration(dec);
}
Modified: openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/localizer.properties
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/localizer.properties?rev=776878&r1=776877&r2=776878&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/localizer.properties (original)
+++ openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/localizer.properties Wed May 20 21:59:24 2009
@@ -190,4 +190,6 @@
access-invalid: "{0}" is not a valid access style. Valid access styles are \
"PROPERTY" and "FIELD".
getter-unmatched: Getter method "{0}" has no matching setter method.
-
\ No newline at end of file
+invalid-orderBy: This is not a valid OrderBy annotation. The property or \
+ field_name must be specified in the orederBy item of the orderBy list \
+ for "{0}".
\ No newline at end of file