You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2012/11/02 18:19:54 UTC
svn commit: r1405063 - in /cxf/trunk/rt/rs/extensions/search: ./
src/main/java/org/apache/cxf/jaxrs/ext/search/fiql/
src/main/java/org/apache/cxf/jaxrs/ext/search/jpa/
src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/
src/test/resources/META-INF/
Author: sergeyb
Date: Fri Nov 2 17:19:53 2012
New Revision: 1405063
URL: http://svn.apache.org/viewvc?rev=1405063&view=rev
Log:
Few updates to the search code after testing with OpenJPA
Modified:
cxf/trunk/rt/rs/extensions/search/pom.xml
cxf/trunk/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/fiql/FiqlParser.java
cxf/trunk/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/jpa/JPACriteriaQueryVisitor.java
cxf/trunk/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/Book.java
cxf/trunk/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/JPATypedQueryVisitorTest.java
cxf/trunk/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/Name.java
cxf/trunk/rt/rs/extensions/search/src/test/resources/META-INF/persistence.xml
Modified: cxf/trunk/rt/rs/extensions/search/pom.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/extensions/search/pom.xml?rev=1405063&r1=1405062&r2=1405063&view=diff
==============================================================================
--- cxf/trunk/rt/rs/extensions/search/pom.xml (original)
+++ cxf/trunk/rt/rs/extensions/search/pom.xml Fri Nov 2 17:19:53 2012
@@ -85,17 +85,25 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-entitymanager</artifactId>
- <version>${hibernate.em.version}</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>hsqldb</groupId>
- <artifactId>hsqldb</artifactId>
- <version>${hsqldb.version}</version>
- <scope>test</scope>
- </dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-entitymanager</artifactId>
+ <version>${hibernate.em.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>hsqldb</groupId>
+ <artifactId>hsqldb</artifactId>
+ <version>${hsqldb.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <!--
+ <dependency>
+ <groupId>org.apache.openjpa</groupId>
+ <artifactId>openjpa</artifactId>
+ <version>2.2.0</version>
+ <scope>test</scope>
+ </dependency>
+ -->
</dependencies>
<build>
<plugins>
Modified: cxf/trunk/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/fiql/FiqlParser.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/fiql/FiqlParser.java?rev=1405063&r1=1405062&r2=1405063&view=diff
==============================================================================
--- cxf/trunk/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/fiql/FiqlParser.java (original)
+++ cxf/trunk/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/fiql/FiqlParser.java Fri Nov 2 17:19:53 2012
@@ -286,27 +286,26 @@ public class FiqlParser<T> implements Se
Object castedValue = value;
if (Date.class.isAssignableFrom(valueType)) {
castedValue = convertToDate(value);
- } else {
+ } else if (ownerBean == null || valueType.isPrimitive()) {
try {
castedValue = InjectionUtils.convertStringToPrimitive(value, valueType);
} catch (Exception e) {
- boolean throwEx = true;
- if (!valueType.isPrimitive()) {
- try {
- Method setterM = valueType.getMethod("set" + getMethodNameSuffix(setter),
- new Class[]{String.class});
- setterM.invoke(ownerBean, new Object[]{value});
- castedValue = lastCastedValue;
- throwEx = false;
- } catch (Throwable ex) {
- // continue
- }
- }
- if (throwEx) {
- throw new SearchParseException("Cannot convert String value \"" + value
+ throw new SearchParseException("Cannot convert String value \"" + value
+ "\" to a value of class " + valueType.getName(), e);
- }
}
+ } else {
+ try {
+ Method setterM = valueType.getMethod("set" + getMethodNameSuffix(setter),
+ new Class[]{String.class});
+ setterM.invoke(ownerBean, new Object[]{value});
+ } catch (Throwable ex) {
+ throw new SearchParseException("Cannot convert String value \"" + value
+ + "\" to a value of class " + valueType.getName(), ex);
+ }
+
+ }
+ if (lastCastedValue != null) {
+ castedValue = lastCastedValue;
}
return castedValue;
} else {
Modified: cxf/trunk/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/jpa/JPACriteriaQueryVisitor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/jpa/JPACriteriaQueryVisitor.java?rev=1405063&r1=1405062&r2=1405063&view=diff
==============================================================================
--- cxf/trunk/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/jpa/JPACriteriaQueryVisitor.java (original)
+++ cxf/trunk/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/jpa/JPACriteriaQueryVisitor.java Fri Nov 2 17:19:53 2012
@@ -25,6 +25,7 @@ import java.util.Map;
import javax.persistence.EntityManager;
import javax.persistence.criteria.CompoundSelection;
import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Path;
import javax.persistence.criteria.Selection;
import javax.persistence.metamodel.SingularAttribute;
@@ -82,7 +83,9 @@ public class JPACriteriaQueryVisitor<T,
private List<Selection<?>> toSelectionsList(List<SingularAttribute<T, ?>> attributes) {
List<Selection<?>> selections = new ArrayList<Selection<?>>(attributes.size());
for (SingularAttribute<T, ?> attr : attributes) {
- selections.add(getRoot().get(attr));
+ Path<?> path = getRoot().get(attr);
+ path.alias(attr.getName());
+ selections.add(path);
}
return selections;
}
Modified: cxf/trunk/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/Book.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/Book.java?rev=1405063&r1=1405062&r2=1405063&view=diff
==============================================================================
--- cxf/trunk/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/Book.java (original)
+++ cxf/trunk/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/Book.java Fri Nov 2 17:19:53 2012
@@ -25,15 +25,13 @@ import javax.persistence.ManyToOne;
@Entity(name = "Book")
public class Book {
- @Id
private int id;
private String title;
private OwnerAddress address;
private OwnerInfo ownerInfo;
- @ManyToOne
private Library library;
-
+ @Id
public int getId() {
return id;
}
@@ -67,6 +65,7 @@ public class Book {
this.ownerInfo = ownerInfo;
}
+ @ManyToOne
public Library getLibrary() {
return library;
}
Modified: cxf/trunk/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/JPATypedQueryVisitorTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/JPATypedQueryVisitorTest.java?rev=1405063&r1=1405062&r2=1405063&view=diff
==============================================================================
--- cxf/trunk/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/JPATypedQueryVisitorTest.java (original)
+++ cxf/trunk/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/JPATypedQueryVisitorTest.java Fri Nov 2 17:19:53 2012
@@ -64,7 +64,7 @@ public class JPATypedQueryVisitorTest ex
fail("Exception during HSQL database init.");
}
try {
- emFactory = Persistence.createEntityManagerFactory("testUnit");
+ emFactory = Persistence.createEntityManagerFactory("testUnitHibernate");
em = emFactory.createEntityManager();
em.getTransaction().begin();
@@ -239,6 +239,10 @@ public class JPATypedQueryVisitorTest ex
@Test
+ // "ownerInfo.name" maps to Name class and this
+ // does not work in OpenJPA, as opposed to Hibernate
+ // "ownerInfo.name.name" will map to primitive type, see
+ // testEqualsOwnerNameQuery3(), which also works in OpenJPA
public void testEqualsOwnerNameQuery2() throws Exception {
List<Book> books = queryBooks("ownerInfo.name==Fred");
assertEquals(1, books.size());
Modified: cxf/trunk/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/Name.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/Name.java?rev=1405063&r1=1405062&r2=1405063&view=diff
==============================================================================
--- cxf/trunk/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/Name.java (original)
+++ cxf/trunk/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/Name.java Fri Nov 2 17:19:53 2012
@@ -29,7 +29,7 @@ public class Name {
public Name() {
}
- Name(String name) {
+ public Name(String name) {
this.name = name;
}
Modified: cxf/trunk/rt/rs/extensions/search/src/test/resources/META-INF/persistence.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/extensions/search/src/test/resources/META-INF/persistence.xml?rev=1405063&r1=1405062&r2=1405063&view=diff
==============================================================================
--- cxf/trunk/rt/rs/extensions/search/src/test/resources/META-INF/persistence.xml (original)
+++ cxf/trunk/rt/rs/extensions/search/src/test/resources/META-INF/persistence.xml Fri Nov 2 17:19:53 2012
@@ -2,18 +2,35 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
- <persistence-unit name="testUnit" transaction-type="RESOURCE_LOCAL">
- <provider>org.hibernate.ejb.HibernatePersistence</provider>
- <class>org.apache.cxf.jaxrs.ext.search.jpa.Book</class>
- <class>org.apache.cxf.jaxrs.ext.search.jpa.Library</class>
- <exclude-unlisted-classes>true</exclude-unlisted-classes>
- <properties>
+ <persistence-unit name="testUnitHibernate" transaction-type="RESOURCE_LOCAL">
+ <provider>org.hibernate.ejb.HibernatePersistence</provider>
+ <class>org.apache.cxf.jaxrs.ext.search.jpa.Book</class>
+ <class>org.apache.cxf.jaxrs.ext.search.jpa.Library</class>
+ <exclude-unlisted-classes>true</exclude-unlisted-classes>
+ <properties>
<property name="hibernate.connection.url" value="jdbc:hsqldb:mem:books-jpa"/>
<property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
<property name="hibernate.hbm2ddl.auto" value="create-drop"/>
<property name="hibernate.connection.username" value="sa"/>
<property name="hibernate.connection.password" value=""/>
- </properties>
-</persistence-unit>
+ </properties>
+ </persistence-unit>
+ <persistence-unit name="testUnitOpenJPA" transaction-type="RESOURCE_LOCAL">
+ <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
+ <class>org.apache.cxf.jaxrs.ext.search.jpa.Book</class>
+ <class>org.apache.cxf.jaxrs.ext.search.jpa.Library</class>
+ <class>org.apache.cxf.jaxrs.ext.search.jpa.OwnerAddress</class>
+ <class>org.apache.cxf.jaxrs.ext.search.jpa.OwnerInfo</class>
+ <class>org.apache.cxf.jaxrs.ext.search.jpa.Name</class>
+ <exclude-unlisted-classes>true</exclude-unlisted-classes>
+ <properties>
+ <property name="openjpa.ConnectionURL" value="jdbc:hsqldb:mem:books-jpa"/>
+ <property name="openjpa.ConnectionDriverName" value="org.hsqldb.jdbcDriver"/>
+ <property name="openjpa.jdbc.DBDictionary" value="hsql" />
+ <property name="openjpa.ConnectionUserName" value="sa"/>
+ <property name="openjpa.ConnectionPassword" value=""/>
+ <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema"/>
+ </properties>
+ </persistence-unit>
</persistence>
\ No newline at end of file