Hibernate SVN: r18739 - in branches/Branch_3_2/HibernateExt/tools: src/java/org/hibernate/tool and 1 other directories.
by hibernate-commits@lists.jboss.org
Author: max.andersen(a)jboss.com
Date: 2010-02-09 04:30:47 -0500 (Tue, 09 Feb 2010)
New Revision: 18739
Modified:
branches/Branch_3_2/HibernateExt/tools/.classpath
branches/Branch_3_2/HibernateExt/tools/build.xml
branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/tool/Version.java
branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/tool/hbmlint/detector/InstrumentationDetector.java
Log:
Fixed broken InstrumentationDetector.java which did not detect JavaAssist properly (which is default in 3.3.x)
Updated version info.
Modified: branches/Branch_3_2/HibernateExt/tools/.classpath
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/.classpath 2010-02-09 03:53:56 UTC (rev 18738)
+++ branches/Branch_3_2/HibernateExt/tools/.classpath 2010-02-09 09:30:47 UTC (rev 18739)
@@ -1,67 +1,67 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="src" path="src/java"/>
- <classpathentry kind="src" path="src/test"/>
- <classpathentry kind="src" path="src/testsupport"/>
- <classpathentry kind="src" path="src/templates"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
- <classpathentry kind="lib" path="lib/freemarker.jar"/>
- <classpathentry kind="lib" path="lib/jtidy-r8-20060801.jar"/>
- <classpathentry kind="lib" path="lib/org.eclipse.core.runtime_3.2.0.v20060603.jar"/>
- <classpathentry kind="lib" path="lib/org.eclipse.equinox.common_3.2.0.v20060603.jar"/>
- <classpathentry kind="lib" path="lib/org.eclipse.jdt.core_3.2.0.v_671.jar"/>
- <classpathentry kind="lib" path="lib/org.eclipse.text_3.2.0.v20060605-1400.jar"/>
- <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/3"/>
- <classpathentry kind="lib" path="lib/testlibs/commons-collections-2.1.1.jar"/>
- <classpathentry kind="lib" path="lib/testlibs/commons-logging-1.0.4.jar"/>
- <classpathentry kind="lib" path="lib/testlibs/dom4j-1.6.1.jar"/>
- <classpathentry kind="lib" path="lib/testlibs/ejb3-persistence.jar"/>
- <classpathentry kind="lib" path="lib/testlibs/hibernate3.jar" sourcepath="/hibernate-3.2"/>
- <classpathentry kind="lib" path="lib/testlibs/hibernate-annotations.jar"/>
- <classpathentry kind="lib" path="lib/testlibs/hibernate-commons-annotations.jar"/>
- <classpathentry kind="lib" path="lib/testlibs/hibernate-entitymanager.jar"/>
- <classpathentry kind="lib" path="lib/testlibs/javassist.jar"/>
- <classpathentry kind="lib" path="lib/testlibs/jboss-annotations-ejb3.jar"/>
- <classpathentry kind="lib" path="lib/testlibs/jboss-archive-browsing.jar"/>
- <classpathentry kind="lib" path="lib/testlibs/jboss-ejb3x.jar"/>
- <classpathentry kind="lib" path="etc"/>
- <classpathentry kind="lib" path="/hibernate-3.2/lib/antlr-2.7.6.jar"/>
- <classpathentry kind="lib" path="/hibernate-3.2/lib/ant-1.6.5.jar"/>
- <classpathentry kind="lib" path="/hibernate-3.2/lib/cglib-2.1.3.jar"/>
- <classpathentry kind="lib" path="/hibernate-3.2/lib/junit-3.8.1.jar"/>
- <classpathentry kind="lib" path="/hibernate-3.2/jdbc/hsqldb.jar"/>
- <classpathentry kind="lib" path="/hibernate-3.2/lib/ant-antlr-1.6.5.jar"/>
- <classpathentry kind="lib" path="/hibernate-3.2/lib/ant-junit-1.6.5.jar"/>
- <classpathentry kind="lib" path="/hibernate-3.2/lib/ant-launcher-1.6.5.jar"/>
- <classpathentry kind="lib" path="/hibernate-3.2/lib/ant-swing-1.6.5.jar"/>
- <classpathentry kind="lib" path="/hibernate-3.2/lib/asm-attrs.jar"/>
- <classpathentry kind="lib" path="/hibernate-3.2/lib/asm.jar"/>
- <classpathentry kind="lib" path="/hibernate-3.2/lib/c3p0-0.9.1.jar"/>
- <classpathentry kind="lib" path="/hibernate-3.2/lib/checkstyle-all.jar"/>
- <classpathentry kind="lib" path="/hibernate-3.2/lib/cleanimports.jar"/>
- <classpathentry kind="lib" path="/hibernate-3.2/lib/commons-collections-2.1.1.jar"/>
- <classpathentry kind="lib" path="/hibernate-3.2/lib/commons-logging-1.0.4.jar"/>
- <classpathentry kind="lib" path="/hibernate-3.2/lib/concurrent-1.3.2.jar"/>
- <classpathentry kind="lib" path="/hibernate-3.2/lib/dom4j-1.6.1.jar"/>
- <classpathentry kind="lib" path="/hibernate-3.2/lib/ehcache-1.2.3.jar"/>
- <classpathentry kind="lib" path="/hibernate-3.2/lib/jaas.jar"/>
- <classpathentry kind="lib" path="/hibernate-3.2/lib/jacc-1_0-fr.jar"/>
- <classpathentry kind="lib" path="/hibernate-3.2/lib/javassist.jar"/>
- <classpathentry kind="lib" path="/hibernate-3.2/lib/jaxen-1.1-beta-7.jar"/>
- <classpathentry kind="lib" path="/hibernate-3.2/lib/jboss-cache.jar"/>
- <classpathentry kind="lib" path="/hibernate-3.2/lib/jboss-common.jar"/>
- <classpathentry kind="lib" path="/hibernate-3.2/lib/jboss-jmx.jar"/>
- <classpathentry kind="lib" path="/hibernate-3.2/lib/jboss-system.jar"/>
- <classpathentry kind="lib" path="/hibernate-3.2/lib/jgroups-2.2.8.jar"/>
- <classpathentry kind="lib" path="/hibernate-3.2/lib/jta.jar"/>
- <classpathentry kind="lib" path="/hibernate-3.2/lib/log4j-1.2.11.jar"/>
- <classpathentry kind="lib" path="/hibernate-3.2/lib/oscache-2.1.jar"/>
- <classpathentry kind="lib" path="/hibernate-3.2/lib/proxool-0.8.3.jar"/>
- <classpathentry kind="lib" path="/hibernate-3.2/lib/swarmcache-1.0rc2.jar"/>
- <classpathentry kind="lib" path="/hibernate-3.2/lib/syndiag2.jar"/>
- <classpathentry kind="lib" path="/hibernate-3.2/lib/versioncheck.jar"/>
- <classpathentry kind="lib" path="/hibernate-3.2/lib/xerces-2.6.2.jar"/>
- <classpathentry kind="lib" path="/hibernate-3.2/lib/xml-apis.jar"/>
- <classpathentry combineaccessrules="false" kind="src" path="/hibernate-3.2"/>
- <classpathentry kind="output" path="build/classes"/>
-</classpath>
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src/java"/>
+ <classpathentry kind="src" path="src/test"/>
+ <classpathentry kind="src" path="src/testsupport"/>
+ <classpathentry kind="src" path="src/templates"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="lib" path="lib/freemarker.jar"/>
+ <classpathentry kind="lib" path="lib/jtidy-r8-20060801.jar"/>
+ <classpathentry kind="lib" path="lib/org.eclipse.core.runtime_3.2.0.v20060603.jar"/>
+ <classpathentry kind="lib" path="lib/org.eclipse.equinox.common_3.2.0.v20060603.jar"/>
+ <classpathentry kind="lib" path="lib/org.eclipse.jdt.core_3.2.0.v_671.jar"/>
+ <classpathentry kind="lib" path="lib/org.eclipse.text_3.2.0.v20060605-1400.jar"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/3"/>
+ <classpathentry kind="lib" path="lib/testlibs/commons-logging-1.0.4.jar"/>
+ <classpathentry kind="lib" path="lib/testlibs/dom4j-1.6.1.jar"/>
+ <classpathentry kind="lib" path="lib/testlibs/ejb3-persistence.jar"/>
+ <classpathentry kind="lib" path="lib/testlibs/hibernate-annotations.jar"/>
+ <classpathentry kind="lib" path="lib/testlibs/hibernate-commons-annotations.jar"/>
+ <classpathentry kind="lib" path="lib/testlibs/hibernate-entitymanager.jar"/>
+ <classpathentry kind="lib" path="lib/testlibs/javassist.jar"/>
+ <classpathentry kind="lib" path="lib/testlibs/jboss-annotations-ejb3.jar"/>
+ <classpathentry kind="lib" path="lib/testlibs/jboss-archive-browsing.jar"/>
+ <classpathentry kind="lib" path="lib/testlibs/jboss-ejb3x.jar"/>
+ <classpathentry kind="lib" path="etc"/>
+ <classpathentry kind="lib" path="/hibernate-3.2/lib/antlr-2.7.6.jar"/>
+ <classpathentry kind="lib" path="/hibernate-3.2/lib/ant-1.6.5.jar"/>
+ <classpathentry kind="lib" path="/hibernate-3.2/lib/cglib-2.1.3.jar"/>
+ <classpathentry kind="lib" path="/hibernate-3.2/lib/junit-3.8.1.jar"/>
+ <classpathentry kind="lib" path="/hibernate-3.2/jdbc/hsqldb.jar"/>
+ <classpathentry kind="lib" path="/hibernate-3.2/lib/ant-antlr-1.6.5.jar"/>
+ <classpathentry kind="lib" path="/hibernate-3.2/lib/ant-junit-1.6.5.jar"/>
+ <classpathentry kind="lib" path="/hibernate-3.2/lib/ant-launcher-1.6.5.jar"/>
+ <classpathentry kind="lib" path="/hibernate-3.2/lib/ant-swing-1.6.5.jar"/>
+ <classpathentry kind="lib" path="/hibernate-3.2/lib/asm-attrs.jar"/>
+ <classpathentry kind="lib" path="/hibernate-3.2/lib/asm.jar"/>
+ <classpathentry kind="lib" path="/hibernate-3.2/lib/c3p0-0.9.1.jar"/>
+ <classpathentry kind="lib" path="/hibernate-3.2/lib/checkstyle-all.jar"/>
+ <classpathentry kind="lib" path="/hibernate-3.2/lib/cleanimports.jar"/>
+ <classpathentry kind="lib" path="/hibernate-3.2/lib/commons-logging-1.0.4.jar"/>
+ <classpathentry kind="lib" path="/hibernate-3.2/lib/concurrent-1.3.2.jar"/>
+ <classpathentry kind="lib" path="/hibernate-3.2/lib/dom4j-1.6.1.jar"/>
+ <classpathentry kind="lib" path="/hibernate-3.2/lib/ehcache-1.2.3.jar"/>
+ <classpathentry kind="lib" path="/hibernate-3.2/lib/jaas.jar"/>
+ <classpathentry kind="lib" path="/hibernate-3.2/lib/jacc-1_0-fr.jar"/>
+ <classpathentry kind="lib" path="/hibernate-3.2/lib/javassist.jar"/>
+ <classpathentry kind="lib" path="/hibernate-3.2/lib/jaxen-1.1-beta-7.jar"/>
+ <classpathentry kind="lib" path="/hibernate-3.2/lib/jboss-cache.jar"/>
+ <classpathentry kind="lib" path="/hibernate-3.2/lib/jboss-common.jar"/>
+ <classpathentry kind="lib" path="/hibernate-3.2/lib/jboss-jmx.jar"/>
+ <classpathentry kind="lib" path="/hibernate-3.2/lib/jboss-system.jar"/>
+ <classpathentry kind="lib" path="/hibernate-3.2/lib/jgroups-2.2.8.jar"/>
+ <classpathentry kind="lib" path="/hibernate-3.2/lib/jta.jar"/>
+ <classpathentry kind="lib" path="/hibernate-3.2/lib/log4j-1.2.11.jar"/>
+ <classpathentry kind="lib" path="/hibernate-3.2/lib/oscache-2.1.jar"/>
+ <classpathentry kind="lib" path="/hibernate-3.2/lib/proxool-0.8.3.jar"/>
+ <classpathentry kind="lib" path="/hibernate-3.2/lib/swarmcache-1.0rc2.jar"/>
+ <classpathentry kind="lib" path="/hibernate-3.2/lib/syndiag2.jar"/>
+ <classpathentry kind="lib" path="/hibernate-3.2/lib/versioncheck.jar"/>
+ <classpathentry kind="lib" path="/hibernate-3.2/lib/xerces-2.6.2.jar"/>
+ <classpathentry kind="lib" path="/hibernate-3.2/lib/xml-apis.jar"/>
+ <classpathentry kind="lib" path="C:/work/products/hibernate-distribution-3.3.2.GA/lib/required/slf4j-api-1.5.8.jar"/>
+ <classpathentry kind="lib" path="C:/work/products/slf4j-1.5.10/slf4j-log4j12-1.5.10.jar"/>
+ <classpathentry kind="lib" path="C:/work/products/hibernate-distribution-3.3.2.GA/lib/required/commons-collections-3.1.jar"/>
+ <classpathentry kind="lib" path="C:/work/products/hibernate-distribution-3.3.2.GA/hibernate3.jar" sourcepath="C:/work/products/hibernate-distribution-3.3.2.GA/project"/>
+ <classpathentry kind="output" path="build/classes"/>
+</classpath>
Modified: branches/Branch_3_2/HibernateExt/tools/build.xml
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/build.xml 2010-02-09 03:53:56 UTC (rev 18738)
+++ branches/Branch_3_2/HibernateExt/tools/build.xml 2010-02-09 09:30:47 UTC (rev 18739)
@@ -7,7 +7,7 @@
<!-- Name of project and version, used to create filenames -->
<property name="Name" value="Hibernate Tools"/>
<property name="name" value="hibernate-tools"/>
- <property name="version" value="3.2.5.GA"/>
+ <property name="version" value="3.2.6.CR1"/>
<property name="javadoc.packagenames" value="org.hibernate.tool"/>
Modified: branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/tool/Version.java
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/tool/Version.java 2010-02-09 03:53:56 UTC (rev 18738)
+++ branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/tool/Version.java 2010-02-09 09:30:47 UTC (rev 18739)
@@ -5,7 +5,7 @@
final public class Version {
- public static final String VERSION = "3.2.5.Beta";
+ public static final String VERSION = "3.2.6.CR1";
private static final Version instance = new Version();
Modified: branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/tool/hbmlint/detector/InstrumentationDetector.java
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/tool/hbmlint/detector/InstrumentationDetector.java 2010-02-09 03:53:56 UTC (rev 18738)
+++ branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/tool/hbmlint/detector/InstrumentationDetector.java 2010-02-09 09:30:47 UTC (rev 18739)
@@ -25,7 +25,7 @@
if(Environment.getBytecodeProvider() instanceof BytecodeProviderImpl) {
cglibEnabled = true;
- } else if(Environment.getBytecodeProvider() instanceof BytecodeProviderImpl) {
+ } else if(Environment.getBytecodeProvider() instanceof org.hibernate.bytecode.javassist.BytecodeProviderImpl) {
javassistEnabled = true;
}
}
@@ -61,7 +61,7 @@
Class intface = interfaces[i];
if(intface.getName().equals( "net.sf.cglib.transform.impl.InterceptFieldEnabled" )) {
cglib = true;
- } else if(javassistEnabled && !intface.getName().equals( "org.hibernate.bytecode.javassist.FieldHandled" )) {
+ } else if(intface.getName().equals( "org.hibernate.bytecode.javassist.FieldHandled" )) {
javaassist = true;
}
}
16 years, 2 months
Hibernate SVN: r18738 - in core/trunk/entitymanager/src/test/java/org/hibernate/ejb/test: packaging and 1 other directory.
by hibernate-commits@lists.jboss.org
Author: steve.ebersole(a)jboss.com
Date: 2010-02-08 22:53:56 -0500 (Mon, 08 Feb 2010)
New Revision: 18738
Modified:
core/trunk/entitymanager/src/test/java/org/hibernate/ejb/test/PackagedEntityManagerTest.java
core/trunk/entitymanager/src/test/java/org/hibernate/ejb/test/packaging/JarVisitorTest.java
Log:
HHH-4892 - Simplify testing of persistence packages
Modified: core/trunk/entitymanager/src/test/java/org/hibernate/ejb/test/PackagedEntityManagerTest.java
===================================================================
--- core/trunk/entitymanager/src/test/java/org/hibernate/ejb/test/PackagedEntityManagerTest.java 2010-02-08 21:35:12 UTC (rev 18737)
+++ core/trunk/entitymanager/src/test/java/org/hibernate/ejb/test/PackagedEntityManagerTest.java 2010-02-09 03:53:56 UTC (rev 18738)
@@ -23,6 +23,11 @@
*/
package org.hibernate.ejb.test;
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Properties;
@@ -62,12 +67,46 @@
*/
@SuppressWarnings("unchecked")
public class PackagedEntityManagerTest extends TestCase {
+ private static ClassLoader originalClassLoader;
public Class[] getAnnotatedClasses() {
return new Class[] { Item.class, Distributor.class };
}
@Override
+ protected void setUp() throws Exception {
+ originalClassLoader = Thread.currentThread().getContextClassLoader();
+ Thread.currentThread().setContextClassLoader( buildCustomTCCL( originalClassLoader ) );
+ super.setUp();
+ }
+
+ private ClassLoader buildCustomTCCL(ClassLoader parentClassLoader) throws MalformedURLException {
+ // get a URL reference to something we now is part of the classpath (us)
+ URL myUrl = parentClassLoader.getResource( PackagedEntityManagerTest.class.getName().replace( '.', '/' ) + ".class" );
+ File myPath = new File( myUrl.getFile() );
+ // navigate back to '/target'
+ File targetDir = myPath
+ .getParentFile() // target/classes/org/hibernate/ejb/test
+ .getParentFile() // target/classes/org/hibernate/ejb
+ .getParentFile() // target/classes/org/hibernate
+ .getParentFile() // target/classes/org
+ .getParentFile() // target/classes/
+ .getParentFile(); // target
+ File testPackagesDir = new File( targetDir, "test-packages" );
+ ArrayList<URL> urls = new ArrayList<URL>();
+ for ( File testPackage : testPackagesDir.listFiles() ) {
+ urls.add( testPackage.toURL() );
+ }
+ return new URLClassLoader( urls.toArray( new URL[ urls.size() ] ), parentClassLoader );
+ }
+
+ @Override
+ public void tearDown() throws Exception {
+ super.tearDown();
+ Thread.currentThread().setContextClassLoader( originalClassLoader );
+ }
+
+ @Override
protected void buildConfiguration() throws Exception {
super.buildConfiguration();
factory = Persistence.createEntityManagerFactory( "manager1" );
Modified: core/trunk/entitymanager/src/test/java/org/hibernate/ejb/test/packaging/JarVisitorTest.java
===================================================================
--- core/trunk/entitymanager/src/test/java/org/hibernate/ejb/test/packaging/JarVisitorTest.java 2010-02-08 21:35:12 UTC (rev 18737)
+++ core/trunk/entitymanager/src/test/java/org/hibernate/ejb/test/packaging/JarVisitorTest.java 2010-02-09 03:53:56 UTC (rev 18738)
@@ -1,6 +1,29 @@
-//$Id$
+/*
+ * Hibernate, Relational Persistence for Idiomatic Java
+ *
+ * Copyright (c) 2010, Red Hat Inc. or third-party contributors as
+ * indicated by the @author tags or express copyright attribution
+ * statements applied by the authors. All third-party contributions are
+ * distributed under license by Red Hat Inc.
+ *
+ * This copyrighted material is made available to anyone wishing to use, modify,
+ * copy, or redistribute it subject to the terms and conditions of the GNU
+ * Lesser General Public License, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this distribution; if not, write to:
+ * Free Software Foundation, Inc.
+ * 51 Franklin Street, Fifth Floor
+ * Boston, MA 02110-1301 USA
+ */
package org.hibernate.ejb.test.packaging;
+import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.net.URLConnection;
@@ -25,6 +48,8 @@
import org.hibernate.ejb.packaging.PackageFilter;
import org.hibernate.ejb.test.pack.defaultpar.ApplicationServer;
import org.hibernate.ejb.test.pack.explodedpar.Carpet;
+import org.hibernate.junit.FailureExpected;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -36,8 +61,26 @@
private static final Logger log = LoggerFactory.getLogger(JarVisitorTest.class);
- private static final String jarFileBase = "file:./target/test-packages";
+ private static String jarFileBase;
+ @Override
+ protected void setUp() throws Exception {
+ URL myUrl = JarVisitorTest.class.getClassLoader().getResource( JarVisitorTest.class.getName().replace( '.', '/' ) + ".class" );
+ File myPath = new File( myUrl.getFile() );
+ // navigate back to '/target'
+ File targetDir = myPath
+ .getParentFile() // target/classes/org/hibernate/ejb/test/packaging
+ .getParentFile() // target/classes/org/hibernate/ejb/test
+ .getParentFile() // target/classes/org/hibernate/ejb
+ .getParentFile() // target/classes/org/hibernate
+ .getParentFile() // target/classes/org
+ .getParentFile() // target/classes
+ .getParentFile(); // target
+ jarFileBase = new File( targetDir, "test-packages" ).toURL().toExternalForm();
+ super.setUp();
+ }
+
+
public void testHttp() throws Exception {
URL url = JarVisitorFactory.getJarURLFromURLEntry(
new URL(
@@ -59,8 +102,9 @@
assertEquals( 0, visitor.getMatchingEntries()[2].size() );
}
+ @FailureExpected( jiraKey = "")
public void testInputStreamZippedJar() throws Exception {
- String jarFileName = jarFileBase + "/defaultpar.par";
+ String jarFileName = jarFileBase + "defaultpar.par";
Filter[] filters = getFilters();
JarVisitor jarVisitor = new InputStreamZippedJarVisitor( new URL( jarFileName ), filters, "" );
assertEquals( "defaultpar", jarVisitor.getUnqualifiedJarName() );
16 years, 2 months
Hibernate SVN: r18737 - in search/trunk/src: main/java/org/hibernate/search/reader and 38 other directories.
by hibernate-commits@lists.jboss.org
Author: sannegrinovero
Date: 2010-02-08 16:35:12 -0500 (Mon, 08 Feb 2010)
New Revision: 18737
Modified:
search/trunk/src/main/java/org/hibernate/search/filter/CachingWrapperFilter.java
search/trunk/src/main/java/org/hibernate/search/reader/CacheableMultiReader.java
search/trunk/src/test/java/org/hibernate/search/test/FSDirectoryTest.java
search/trunk/src/test/java/org/hibernate/search/test/PurgeTest.java
search/trunk/src/test/java/org/hibernate/search/test/RamDirectoryTest.java
search/trunk/src/test/java/org/hibernate/search/test/SearchTestCase.java
search/trunk/src/test/java/org/hibernate/search/test/TransactionTest.java
search/trunk/src/test/java/org/hibernate/search/test/analyzer/AnalyzerTest.java
search/trunk/src/test/java/org/hibernate/search/test/analyzer/DoubleAnalyzerTest.java
search/trunk/src/test/java/org/hibernate/search/test/analyzer/inheritance/AnalyzerInheritanceTest.java
search/trunk/src/test/java/org/hibernate/search/test/analyzer/inheritance/ISOLatin1Analyzer.java
search/trunk/src/test/java/org/hibernate/search/test/analyzer/solr/InsertWhitespaceFilter.java
search/trunk/src/test/java/org/hibernate/search/test/analyzer/solr/SolrAnalyzerTest.java
search/trunk/src/test/java/org/hibernate/search/test/bridge/BridgeTest.java
search/trunk/src/test/java/org/hibernate/search/test/bridge/ClassBridgeTest.java
search/trunk/src/test/java/org/hibernate/search/test/bridge/Cloud.java
search/trunk/src/test/java/org/hibernate/search/test/bridge/UnresolvedBridgeTest.java
search/trunk/src/test/java/org/hibernate/search/test/configuration/Country.java
search/trunk/src/test/java/org/hibernate/search/test/configuration/ProgrammaticMappingTest.java
search/trunk/src/test/java/org/hibernate/search/test/configuration/SecurityFilterFactory.java
search/trunk/src/test/java/org/hibernate/search/test/configuration/ShardsConfigurationTest.java
search/trunk/src/test/java/org/hibernate/search/test/directoryProvider/DirectoryProviderHelperTest.java
search/trunk/src/test/java/org/hibernate/search/test/directoryProvider/FSSlaveAndMasterDPTest.java
search/trunk/src/test/java/org/hibernate/search/test/directoryProvider/MultipleSFTestCase.java
search/trunk/src/test/java/org/hibernate/search/test/embedded/EmbeddedTest.java
search/trunk/src/test/java/org/hibernate/search/test/embedded/doubleinsert/DoubleInsertEmbeddedTest.java
search/trunk/src/test/java/org/hibernate/search/test/embedded/nested/NestedEmbeddedTest.java
search/trunk/src/test/java/org/hibernate/search/test/engine/LazyCollectionsUpdatingTest.java
search/trunk/src/test/java/org/hibernate/search/test/engine/RollbackTransactionTest.java
search/trunk/src/test/java/org/hibernate/search/test/fieldAccess/FieldAccessTest.java
search/trunk/src/test/java/org/hibernate/search/test/filter/ExcludeAllFilter.java
search/trunk/src/test/java/org/hibernate/search/test/filter/ExcludeAllFilterFactory.java
search/trunk/src/test/java/org/hibernate/search/test/filter/FilterTest.java
search/trunk/src/test/java/org/hibernate/search/test/filter/FiltersOptimizationTest.java
search/trunk/src/test/java/org/hibernate/search/test/filter/InstanceBasedExcludeAllFilter.java
search/trunk/src/test/java/org/hibernate/search/test/id/EmbeddedIdTest.java
search/trunk/src/test/java/org/hibernate/search/test/id/ImplicitIdTest.java
search/trunk/src/test/java/org/hibernate/search/test/id/providedId/ProvidedIdPerson.java
search/trunk/src/test/java/org/hibernate/search/test/id/providedId/ProvidedIdPersonSub.java
search/trunk/src/test/java/org/hibernate/search/test/id/providedId/ProvidedIdTest.java
search/trunk/src/test/java/org/hibernate/search/test/indexingStrategy/ManualIndexingStrategyTest.java
search/trunk/src/test/java/org/hibernate/search/test/inheritance/InheritanceTest.java
search/trunk/src/test/java/org/hibernate/search/test/jgroups/common/JGroupsCommonTest.java
search/trunk/src/test/java/org/hibernate/search/test/jgroups/master/JGroupsMasterTest.java
search/trunk/src/test/java/org/hibernate/search/test/jgroups/slave/JGroupsSlaveTest.java
search/trunk/src/test/java/org/hibernate/search/test/jms/master/JMSMasterTest.java
search/trunk/src/test/java/org/hibernate/search/test/jms/slave/JMSSlaveTest.java
search/trunk/src/test/java/org/hibernate/search/test/jpa/EntityManagerSerializationTest.java
search/trunk/src/test/java/org/hibernate/search/test/jpa/EntityManagerTest.java
search/trunk/src/test/java/org/hibernate/search/test/jpa/JPATestCase.java
search/trunk/src/test/java/org/hibernate/search/test/optimizer/OptimizerPerfTest.java
search/trunk/src/test/java/org/hibernate/search/test/perf/IndexTestDontRun.java
search/trunk/src/test/java/org/hibernate/search/test/perf/SearcherThread.java
search/trunk/src/test/java/org/hibernate/search/test/query/LuceneQuerySortTest.java
search/trunk/src/test/java/org/hibernate/search/test/query/LuceneQueryTest.java
search/trunk/src/test/java/org/hibernate/search/test/query/MultiClassesQueryLoaderTest.java
search/trunk/src/test/java/org/hibernate/search/test/query/ProjectionQueryTest.java
search/trunk/src/test/java/org/hibernate/search/test/query/QueryLoaderTest.java
search/trunk/src/test/java/org/hibernate/search/test/query/QueryUnindexedEntityTest.java
search/trunk/src/test/java/org/hibernate/search/test/query/ScrollableResultsTest.java
search/trunk/src/test/java/org/hibernate/search/test/query/TermVectorTest.java
search/trunk/src/test/java/org/hibernate/search/test/query/boost/DynamicBoostedDescriptionLibrary.java
search/trunk/src/test/java/org/hibernate/search/test/query/boost/DynamicBoostingTest.java
search/trunk/src/test/java/org/hibernate/search/test/query/boost/FieldBoostTest.java
search/trunk/src/test/java/org/hibernate/search/test/query/criteria/MixedCriteriaTest.java
search/trunk/src/test/java/org/hibernate/search/test/query/explain/ExplanationTest.java
search/trunk/src/test/java/org/hibernate/search/test/reader/ReaderPerfTestCase.java
search/trunk/src/test/java/org/hibernate/search/test/reader/functionality/FilterOnDirectoryTest.java
search/trunk/src/test/java/org/hibernate/search/test/reader/functionality/TestableSharingBufferReaderProvider.java
search/trunk/src/test/java/org/hibernate/search/test/reader/performance/AbstractActivity.java
search/trunk/src/test/java/org/hibernate/search/test/reader/performance/ReaderPerformance.java
search/trunk/src/test/java/org/hibernate/search/test/session/MassIndexTest.java
search/trunk/src/test/java/org/hibernate/search/test/session/MassIndexUsingManualFlushTest.java
search/trunk/src/test/java/org/hibernate/search/test/session/OptimizeTest.java
search/trunk/src/test/java/org/hibernate/search/test/session/SessionTest.java
search/trunk/src/test/java/org/hibernate/search/test/shards/CustomerShardingStrategyTest.java
search/trunk/src/test/java/org/hibernate/search/test/shards/DirectoryProviderForQueryTest.java
search/trunk/src/test/java/org/hibernate/search/test/shards/ShardsTest.java
search/trunk/src/test/java/org/hibernate/search/test/similarity/SimilarityTest.java
search/trunk/src/test/java/org/hibernate/search/test/util/textbuilder/WordDictionary.java
search/trunk/src/test/java/org/hibernate/search/test/worker/ConcurrencyTest.java
search/trunk/src/test/java/org/hibernate/search/test/worker/WorkerTestCase.java
search/trunk/src/test/java/org/hibernate/search/test/worker/duplication/WorkDuplicationTest.java
Log:
HSEARCH-458 Remove all deprecations from Lucene's 2.9 API usage
Modified: search/trunk/src/main/java/org/hibernate/search/filter/CachingWrapperFilter.java
===================================================================
--- search/trunk/src/main/java/org/hibernate/search/filter/CachingWrapperFilter.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/main/java/org/hibernate/search/filter/CachingWrapperFilter.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -25,7 +25,6 @@
package org.hibernate.search.filter;
import java.io.IOException;
-import java.util.BitSet;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.search.DocIdSet;
@@ -75,18 +74,6 @@
}
@Override
- public BitSet bits(IndexReader reader) throws IOException {
- throw new UnsupportedOperationException();
- /* BitSet cached = (BitSet) cache.get(reader);
- if (cached != null) {
- return cached;
- }
- final BitSet bits = filter.bits(reader);
- cache.put(reader, bits);
- return bits; */
- }
-
- @Override
public DocIdSet getDocIdSet(IndexReader reader) throws IOException {
DocIdSet cached = (DocIdSet) cache.get( reader );
if ( cached != null ) {
Modified: search/trunk/src/main/java/org/hibernate/search/reader/CacheableMultiReader.java
===================================================================
--- search/trunk/src/main/java/org/hibernate/search/reader/CacheableMultiReader.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/main/java/org/hibernate/search/reader/CacheableMultiReader.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -24,8 +24,6 @@
*/
package org.hibernate.search.reader;
-import java.io.IOException;
-
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.MultiReader;
@@ -41,7 +39,7 @@
// expose this publically (it's a protected member in Lucene 2.3)
final IndexReader[] subReaders;
- public CacheableMultiReader(IndexReader[] subReaders) throws IOException {
+ public CacheableMultiReader(IndexReader[] subReaders) {
super( subReaders );
this.subReaders = subReaders;
}
Modified: search/trunk/src/test/java/org/hibernate/search/test/FSDirectoryTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/FSDirectoryTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/FSDirectoryTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -28,7 +28,6 @@
import java.util.List;
import org.apache.lucene.analysis.StopAnalyzer;
-import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.Term;
import org.apache.lucene.index.TermDocs;
@@ -37,6 +36,8 @@
import org.apache.lucene.search.Query;
import org.apache.lucene.search.TermQuery;
import org.apache.lucene.search.TopDocs;
+import org.apache.lucene.store.Directory;
+import org.apache.lucene.store.FSDirectory;
import org.hibernate.Session;
import org.hibernate.search.Environment;
@@ -76,63 +77,70 @@
);
s.getTransaction().commit();
s.close();
- IndexReader reader = IndexReader.open( new File( getBaseIndexDir(), "Documents" ) );
+
+ Directory dir = FSDirectory.open( new File( getBaseIndexDir(), "Documents" ) );
try {
- int num = reader.numDocs();
- assertEquals( 1, num );
- TermDocs docs = reader.termDocs( new Term( "Abstract", "hibernate" ) );
- assertTrue( docs.next() );
- org.apache.lucene.document.Document doc = reader.document( docs.doc() );
- assertFalse( docs.next() );
- docs = reader.termDocs( new Term( "title", "action" ) );
- assertTrue( docs.next() );
- doc = reader.document( docs.doc() );
- assertFalse( docs.next() );
- assertEquals( "1", doc.getField( "id" ).stringValue() );
- }
- finally {
- reader.close();
- }
+ IndexReader reader = IndexReader.open( dir, true );
+ try {
+ int num = reader.numDocs();
+ assertEquals( 1, num );
+ TermDocs docs = reader.termDocs( new Term( "Abstract", "hibernate" ) );
+ assertTrue( docs.next() );
+ org.apache.lucene.document.Document doc = reader.document( docs.doc() );
+ assertFalse( docs.next() );
+ docs = reader.termDocs( new Term( "title", "action" ) );
+ assertTrue( docs.next() );
+ doc = reader.document( docs.doc() );
+ assertFalse( docs.next() );
+ assertEquals( "1", doc.getField( "id" ).stringValue() );
+ }
+ finally {
+ reader.close();
+ }
- s = getSessions().openSession();
- s.getTransaction().begin();
- Document entity = (Document) s.get( Document.class, Long.valueOf( 1 ) );
- entity.setSummary( "Object/relational mapping with EJB3" );
- s.persist( new Document( "Seam in Action", "", "blah blah blah blah" ) );
- s.getTransaction().commit();
- s.close();
+ s = getSessions().openSession();
+ s.getTransaction().begin();
+ Document entity = (Document) s.get( Document.class, Long.valueOf( 1 ) );
+ entity.setSummary( "Object/relational mapping with EJB3" );
+ s.persist( new Document( "Seam in Action", "", "blah blah blah blah" ) );
+ s.getTransaction().commit();
+ s.close();
- reader = IndexReader.open( new File( getBaseIndexDir(), "Documents" ) );
- try {
- int num = reader.numDocs();
- assertEquals( 2, num );
- TermDocs docs = reader.termDocs( new Term( "Abstract", "ejb" ) );
- assertTrue( docs.next() );
- org.apache.lucene.document.Document doc = reader.document( docs.doc() );
- assertFalse( docs.next() );
- }
- finally {
- reader.close();
- }
+ reader = IndexReader.open( dir, true );
+ try {
+ int num = reader.numDocs();
+ assertEquals( 2, num );
+ TermDocs docs = reader.termDocs( new Term( "Abstract", "ejb" ) );
+ assertTrue( docs.next() );
+ org.apache.lucene.document.Document doc = reader.document( docs.doc() );
+ assertFalse( docs.next() );
+ }
+ finally {
+ reader.close();
+ }
- s = getSessions().openSession();
- s.getTransaction().begin();
- s.delete( entity );
- s.getTransaction().commit();
- s.close();
+ s = getSessions().openSession();
+ s.getTransaction().begin();
+ s.delete( entity );
+ s.getTransaction().commit();
+ s.close();
- reader = IndexReader.open( new File( getBaseIndexDir(), "Documents" ) );
- try {
- int num = reader.numDocs();
- assertEquals( 1, num );
- TermDocs docs = reader.termDocs( new Term( "title", "seam" ) );
- assertTrue( docs.next() );
- org.apache.lucene.document.Document doc = reader.document( docs.doc() );
- assertFalse( docs.next() );
- assertEquals( "2", doc.getField( "id" ).stringValue() );
+ reader = IndexReader.open( dir, true );
+ try {
+ int num = reader.numDocs();
+ assertEquals( 1, num );
+ TermDocs docs = reader.termDocs( new Term( "title", "seam" ) );
+ assertTrue( docs.next() );
+ org.apache.lucene.document.Document doc = reader.document( docs.doc() );
+ assertFalse( docs.next() );
+ assertEquals( "2", doc.getField( "id" ).stringValue() );
+ }
+ finally {
+ reader.close();
+ }
}
finally {
- reader.close();
+ dir.close();
}
s = getSessions().openSession();
@@ -154,9 +162,10 @@
s.getTransaction().commit();
s.close();
- IndexSearcher searcher = new IndexSearcher( new File( getBaseIndexDir(), "Documents" ).getCanonicalPath() );
+ FSDirectory dir = FSDirectory.open( new File( getBaseIndexDir(), "Documents" ) );
+ IndexSearcher searcher = new IndexSearcher( dir, true );
try {
- QueryParser qp = new QueryParser( "id", new StandardAnalyzer() );
+ QueryParser qp = new QueryParser( getTargetLuceneVersion(), "id", SearchTestCase.standardAnalyzer );
Query query = qp.parse( "title:Action OR Abstract:Action" );
TopDocs hits = searcher.search( query, 1000 );
assertEquals( 2, hits.totalHits );
@@ -166,6 +175,7 @@
}
finally {
searcher.close();
+ dir.close();
}
s = getSessions().openSession();
@@ -182,23 +192,25 @@
public void testSearchOnDeletedIndex() throws Exception {
Session s = getSessions().openSession();
s.getTransaction().begin();
- s.persist( new Document( "Hibernate Search in Action", "", "") );
+ s.persist( new Document( "Hibernate Search in Action", "", "" ) );
s.getTransaction().commit();
s.close();
-
- IndexSearcher searcher = new IndexSearcher( new File( getBaseIndexDir(), "Documents" ).getCanonicalPath() );
+
+ Directory dir = FSDirectory.open( new File( getBaseIndexDir(), "Documents" ) );
+ IndexSearcher searcher = new IndexSearcher( dir, true );
// deleting before search, but after IndexSearcher creation:
// ( fails when deleting -concurrently- to IndexSearcher initialization! )
- FileHelper.delete(getBaseIndexDir());
- TermQuery query = new TermQuery( new Term("title","action") );
+ FileHelper.delete( getBaseIndexDir() );
+ TermQuery query = new TermQuery( new Term( "title", "action" ) );
TopDocs hits = searcher.search( query, 1000 );
assertEquals( 1, hits.totalHits );
org.apache.lucene.document.Document doc = searcher.doc( 0 );
assertEquals( "Hibernate Search in Action", doc.get( "title" ) );
searcher.close();
+ dir.close();
}
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[] {
Document.class
};
@@ -213,4 +225,3 @@
}
}
-
Modified: search/trunk/src/test/java/org/hibernate/search/test/PurgeTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/PurgeTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/PurgeTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -26,7 +26,6 @@
import java.util.List;
-import org.apache.lucene.analysis.StopAnalyzer;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.Query;
import org.hibernate.Transaction;
@@ -60,7 +59,7 @@
s.clear();
tx = s.beginTransaction();
- QueryParser parser = new QueryParser( "brand", new StopAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "brand", SearchTestCase.stopAnalyzer );
Query query = parser.parse( "brand:Seiko" );
org.hibernate.Query hibQuery = s.createFullTextQuery( query, Clock.class, Book.class );
@@ -104,8 +103,8 @@
s.clear();
tx = s.beginTransaction();
- QueryParser parser = new QueryParser( "brand", new StopAnalyzer() );
- tx = s.beginTransaction();
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "brand", SearchTestCase.stopAnalyzer );
+ tx = s.beginTransaction();
s.purgeAll( Clock.class);
tx.commit();
@@ -127,7 +126,7 @@
s.close();
}
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[] {
Book.class,
AlternateBook.class,
Modified: search/trunk/src/test/java/org/hibernate/search/test/RamDirectoryTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/RamDirectoryTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/RamDirectoryTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -82,7 +82,7 @@
}
}
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[]{
Document.class,
AlternateDocument.class
Modified: search/trunk/src/test/java/org/hibernate/search/test/SearchTestCase.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/SearchTestCase.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/SearchTestCase.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -27,8 +27,13 @@
import java.io.File;
import java.io.InputStream;
+import org.apache.lucene.analysis.Analyzer;
+import org.apache.lucene.analysis.KeywordAnalyzer;
+import org.apache.lucene.analysis.SimpleAnalyzer;
import org.apache.lucene.analysis.StopAnalyzer;
+import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.store.Directory;
+import org.apache.lucene.util.Version;
import org.slf4j.Logger;
import org.hibernate.HibernateException;
@@ -56,6 +61,11 @@
public abstract class SearchTestCase extends TestCase {
private static final Logger log = org.hibernate.search.util.LoggerFactory.make();
+
+ public static Analyzer standardAnalyzer = new StandardAnalyzer( getTargetLuceneVersion() );
+ public static Analyzer stopAnalyzer = new StopAnalyzer( getTargetLuceneVersion() );
+ public static Analyzer simpleAnalyzer = new SimpleAnalyzer();
+ public static Analyzer keywordAnalyzer = new KeywordAnalyzer();
private static File indexDir;
@@ -180,4 +190,9 @@
protected static File getIndexDir() {
return indexDir;
}
+
+ public static Version getTargetLuceneVersion() {
+ return Version.LUCENE_29;
+ }
+
}
Modified: search/trunk/src/test/java/org/hibernate/search/test/TransactionTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/TransactionTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/TransactionTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -89,7 +89,8 @@
}
}
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[] { Document.class };
}
+
}
Modified: search/trunk/src/test/java/org/hibernate/search/test/analyzer/AnalyzerTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/analyzer/AnalyzerTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/analyzer/AnalyzerTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -29,7 +29,6 @@
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.Token;
-import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.queryParser.QueryParser;
import org.slf4j.Logger;
@@ -78,12 +77,12 @@
// at query time we use a standard analyzer. We explicitly search for tokens which can only be found if the
// right language specific stemmer was used at index time
- QueryParser parser = new QueryParser( "references.text", new StandardAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "references.text", SearchTestCase.standardAnalyzer );
org.apache.lucene.search.Query luceneQuery = parser.parse( "aufeinanderschlug" );
FullTextQuery query = s.createFullTextQuery( luceneQuery );
assertEquals( 1, query.getResultSize() );
- parser = new QueryParser( "text", new StandardAnalyzer() );
+ parser = new QueryParser( getTargetLuceneVersion(), "text", SearchTestCase.standardAnalyzer );
luceneQuery = parser.parse( "acknowledg" );
query = s.createFullTextQuery( luceneQuery );
assertEquals( 1, query.getResultSize() );
@@ -92,7 +91,7 @@
s.close();
}
- public void testMultipleAnalyzerDiscriminatorDefinitions() throws Exception {
+ public void testMultipleAnalyzerDiscriminatorDefinitions() {
SearchConfigurationFromHibernateCore searchConfig = new SearchConfigurationFromHibernateCore( cfg );
ReflectionManager reflectionManager = searchConfig.getReflectionManager();
XClass xclass = reflectionManager.toXClass( BlogEntry.class );
@@ -119,7 +118,7 @@
tx.commit();
tx = s.beginTransaction();
- QueryParser parser = new QueryParser( "id", new StandardAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "id", SearchTestCase.standardAnalyzer );
org.apache.lucene.search.Query luceneQuery = parser.parse( "entity:alarm" );
FullTextQuery query = s.createFullTextQuery( luceneQuery, MyEntity.class );
assertEquals( 1, query.getResultSize() );
Modified: search/trunk/src/test/java/org/hibernate/search/test/analyzer/DoubleAnalyzerTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/analyzer/DoubleAnalyzerTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/analyzer/DoubleAnalyzerTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -24,7 +24,6 @@
*/
package org.hibernate.search.test.analyzer;
-import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.MatchAllDocsQuery;
import org.apache.lucene.search.Query;
@@ -45,7 +44,7 @@
public static final Logger log = LoggerFactory.make();
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[] { MyEntity.class, AlarmEntity.class };
}
@@ -61,7 +60,7 @@
tx.commit();
tx = s.beginTransaction();
- QueryParser parser = new QueryParser( "id", new StandardAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "id", SearchTestCase.standardAnalyzer );
{
Query luceneQuery = new MatchAllDocsQuery();
FullTextQuery query = s.createFullTextQuery( luceneQuery );
Modified: search/trunk/src/test/java/org/hibernate/search/test/analyzer/inheritance/AnalyzerInheritanceTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/analyzer/inheritance/AnalyzerInheritanceTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/analyzer/inheritance/AnalyzerInheritanceTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -65,7 +65,7 @@
tx = s.beginTransaction();
- QueryParser parser = new QueryParser( "name", s.getSearchFactory().getAnalyzer( SubClass.class ) );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "name", s.getSearchFactory().getAnalyzer( SubClass.class ) );
org.apache.lucene.search.Query luceneQuery = parser.parse( "name:Proca\u00EFne" );
FullTextQuery query = s.createFullTextQuery( luceneQuery, SubClass.class );
assertEquals( 1, query.getResultSize() );
@@ -100,7 +100,7 @@
}
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[] { SubClass.class };
}
}
Modified: search/trunk/src/test/java/org/hibernate/search/test/analyzer/inheritance/ISOLatin1Analyzer.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/analyzer/inheritance/ISOLatin1Analyzer.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/analyzer/inheritance/ISOLatin1Analyzer.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -27,16 +27,19 @@
import java.io.Reader;
import org.apache.lucene.analysis.TokenStream;
-import org.apache.lucene.analysis.ISOLatin1AccentFilter;
+import org.apache.lucene.analysis.ASCIIFoldingFilter;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardTokenizer;
+import org.hibernate.search.test.SearchTestCase;
/**
* @author Hardy Ferentschik
*/
- public class ISOLatin1Analyzer extends Analyzer {
- public TokenStream tokenStream(String s, Reader reader) {
- TokenStream result = new StandardTokenizer( reader );
- return new ISOLatin1AccentFilter( result );
- }
+public class ISOLatin1Analyzer extends Analyzer {
+
+ public TokenStream tokenStream(String s, Reader reader) {
+ TokenStream result = new StandardTokenizer( SearchTestCase.getTargetLuceneVersion(), reader );
+ return new ASCIIFoldingFilter(result);
}
+
+}
Modified: search/trunk/src/test/java/org/hibernate/search/test/analyzer/solr/InsertWhitespaceFilter.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/analyzer/solr/InsertWhitespaceFilter.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/analyzer/solr/InsertWhitespaceFilter.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -26,29 +26,36 @@
import java.io.IOException;
-import org.apache.lucene.analysis.Token;
import org.apache.lucene.analysis.TokenFilter;
import org.apache.lucene.analysis.TokenStream;
+import org.apache.lucene.analysis.tokenattributes.TermAttribute;
/**
* A filter which will actually insert spaces. Most filters/tokenizers remove them, but for testing it is
* sometimes better to insert them again ;-)
*
* @author Hardy Ferentschik
+ * @author Sanne Grinovero
*/
public class InsertWhitespaceFilter extends TokenFilter {
+
+ private TermAttribute termAtt;
+
public InsertWhitespaceFilter(TokenStream in) {
super( in );
+ termAtt = (TermAttribute) addAttribute(TermAttribute.class);
}
- public Token next(final Token reusableToken) throws IOException {
- Token nextToken = input.next( reusableToken );
- if ( nextToken != null ) {
- nextToken.setTermBuffer( " " + nextToken.term() + " " );
- return nextToken;
+ @Override
+ public boolean incrementToken() throws IOException {
+ if ( input.incrementToken() ) {
+ String value = " " + termAtt.term() + " ";
+ termAtt.setTermBuffer( value );
+ return true;
}
else {
- return null;
+ return false;
}
}
+
}
Modified: search/trunk/src/test/java/org/hibernate/search/test/analyzer/solr/SolrAnalyzerTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/analyzer/solr/SolrAnalyzerTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/analyzer/solr/SolrAnalyzerTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -177,7 +177,7 @@
fts.close();
}
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[] {
Team.class
};
Modified: search/trunk/src/test/java/org/hibernate/search/test/bridge/BridgeTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/bridge/BridgeTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/bridge/BridgeTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -34,14 +34,12 @@
import java.util.TimeZone;
import org.apache.lucene.analysis.SimpleAnalyzer;
-import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.index.Term;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.BooleanClause;
import org.apache.lucene.search.BooleanQuery;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.TermQuery;
-
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.search.Environment;
@@ -82,7 +80,7 @@
tx = s.beginTransaction();
FullTextSession session = Search.getFullTextSession( s );
- QueryParser parser = new QueryParser( "id", new StandardAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "id", SearchTestCase.standardAnalyzer );
Query query;
List result;
@@ -145,7 +143,7 @@
tx = s.beginTransaction();
FullTextSession session = Search.getFullTextSession( s );
- QueryParser parser = new QueryParser( "id", new SimpleAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "id", SearchTestCase.simpleAnalyzer );
Query query;
List result;
@@ -187,7 +185,7 @@
tx = s.beginTransaction();
FullTextSession session = Search.getFullTextSession( s );
- QueryParser parser = new QueryParser( "id", new StandardAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "id", SearchTestCase.standardAnalyzer );
Query query;
List result;
@@ -235,7 +233,7 @@
tx = s.beginTransaction();
FullTextSession session = Search.getFullTextSession( s );
- QueryParser parser = new QueryParser( "id", new StandardAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "id", SearchTestCase.standardAnalyzer );
Query query;
List result;
@@ -270,7 +268,7 @@
}
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[] {
Cloud.class
};
Modified: search/trunk/src/test/java/org/hibernate/search/test/bridge/ClassBridgeTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/bridge/ClassBridgeTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/bridge/ClassBridgeTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -67,7 +67,7 @@
// Departments entity after being massaged by passing it
// through the EquipmentType class. This field is in
// the Lucene document but not in the Department entity itself.
- QueryParser parser = new QueryParser( "equipment", new SimpleAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "equipment", SearchTestCase.simpleAnalyzer );
// Check the second ClassBridge annotation
Query query = parser.parse( "equiptype:Cisco" );
@@ -87,7 +87,7 @@
assertTrue( "problem with field cross-ups", result.size() == 0 );
// Non-ClassBridge field.
- parser = new QueryParser( "branchHead", new SimpleAnalyzer() );
+ parser = new QueryParser( getTargetLuceneVersion(), "branchHead", SearchTestCase.simpleAnalyzer );
query = parser.parse( "branchHead:Kent Lewin" );
hibQuery = session.createFullTextQuery( query, Departments.class );
result = hibQuery.list();
@@ -96,7 +96,7 @@
assertEquals("incorrect entity returned", "Kent Lewin", ( result.get( 0 ) ).getBranchHead());
// Check other ClassBridge annotation.
- parser = new QueryParser( "branchnetwork", new SimpleAnalyzer() );
+ parser = new QueryParser( getTargetLuceneVersion(), "branchnetwork", SearchTestCase.simpleAnalyzer );
query = parser.parse( "branchnetwork:st. george 1D" );
hibQuery = session.createFullTextQuery( query, Departments.class );
result = hibQuery.list();
@@ -135,7 +135,7 @@
// Departments entity after being massaged by passing it
// through the EquipmentType class. This field is in
// the Lucene document but not in the Department entity itself.
- QueryParser parser = new QueryParser( "equipment", new SimpleAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "equipment", SearchTestCase.simpleAnalyzer );
// Check the second ClassBridge annotation
Query query = parser.parse( "equiptype:Cisco" );
@@ -201,7 +201,7 @@
// the branch field and the network field of the Department
// class. This is in the Lucene document but not in the
// Department entity itself.
- QueryParser parser = new QueryParser( "branchnetwork", new SimpleAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "branchnetwork", SearchTestCase.simpleAnalyzer );
Query query = parser.parse( "branchnetwork:layton 2B" );
org.hibernate.search.FullTextQuery hibQuery = session.createFullTextQuery( query, Department.class );
@@ -228,7 +228,7 @@
assertTrue( "problem with field cross-ups", result.size() == 0 );
// Non-ClassBridge field.
- parser = new QueryParser( "branchHead", new SimpleAnalyzer() );
+ parser = new QueryParser( getTargetLuceneVersion(), "branchHead", SearchTestCase.simpleAnalyzer );
query = parser.parse( "branchHead:Kent Lewin" );
hibQuery = session.createFullTextQuery( query, Department.class );
result = hibQuery.list();
@@ -321,7 +321,7 @@
return depts;
}
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[] {
Department.class,
Departments.class
Modified: search/trunk/src/test/java/org/hibernate/search/test/bridge/Cloud.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/bridge/Cloud.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/bridge/Cloud.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -40,6 +40,7 @@
@Entity
@Indexed
public class Cloud {
+
private int id;
private Long long1;
private long long2;
@@ -76,9 +77,6 @@
private Calendar calendarHour;
private Calendar calendarMillisecond;
-
-
-
@Field(index=Index.UN_TOKENIZED, store=Store.YES)
public URL getUrl() {
return url;
@@ -266,7 +264,6 @@
this.dateHour = dateHour;
}
-
@Field(index=Index.UN_TOKENIZED, store=Store.YES)
@DateBridge( resolution = Resolution.MINUTE )
public Date getDateMinute() {
@@ -333,7 +330,6 @@
this.char2 = char2;
}
-
@Field(index=Index.UN_TOKENIZED, store=Store.YES)
public Calendar getMyCalendar() {
return myCalendar;
@@ -373,8 +369,6 @@
this.calendarDay = calendarDay;
}
-
-
@Field(index=Index.UN_TOKENIZED, store=Store.YES)
@CalendarBridge( resolution = Resolution.MINUTE )
public Calendar getCalendarMinute() {
@@ -385,7 +379,6 @@
this.calendarMinute = calendarMinute;
}
-
@Field(index=Index.UN_TOKENIZED, store=Store.YES)
@CalendarBridge( resolution = Resolution.HOUR )
public Calendar getCalendarHour() {
@@ -396,7 +389,6 @@
this.calendarHour = calendarHour;
}
-
@Field(index=Index.UN_TOKENIZED, store=Store.YES)
@CalendarBridge( resolution = Resolution.MILLISECOND )
public Calendar getCalendarMillisecond() {
Modified: search/trunk/src/test/java/org/hibernate/search/test/bridge/UnresolvedBridgeTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/bridge/UnresolvedBridgeTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/bridge/UnresolvedBridgeTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -62,7 +62,7 @@
}
@SuppressWarnings("unchecked")
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[] {
Gangster.class
};
Modified: search/trunk/src/test/java/org/hibernate/search/test/configuration/Country.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/configuration/Country.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/configuration/Country.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -51,7 +51,7 @@
private String name;
@OneToMany(mappedBy = "country")
- private Set<Address> addresses = new HashSet<Address>();;
+ private Set<Address> addresses = new HashSet<Address>();
public String getName() {
return name;
Modified: search/trunk/src/test/java/org/hibernate/search/test/configuration/ProgrammaticMappingTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/configuration/ProgrammaticMappingTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/configuration/ProgrammaticMappingTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -32,7 +32,6 @@
import java.util.TimeZone;
import org.apache.lucene.analysis.SimpleAnalyzer;
-import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.index.Term;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.queryParser.QueryParser;
@@ -71,7 +70,6 @@
public class ProgrammaticMappingTest extends SearchTestCase {
private static final Logger log = LoggerFactory.make();
-
public void testMapping() throws Exception{
Address address = new Address();
@@ -87,7 +85,7 @@
tx = s.beginTransaction();
- QueryParser parser = new QueryParser( "id", new StandardAnalyzer( ) );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "id", SearchTestCase.standardAnalyzer );
org.apache.lucene.search.Query luceneQuery = parser.parse( "" + address.getAddressId() );
System.out.println(luceneQuery.toString( ));
FullTextQuery query = s.createFullTextQuery( luceneQuery );
@@ -118,7 +116,7 @@
tx = s.beginTransaction();
- QueryParser parser = new QueryParser( "id", new StandardAnalyzer( ) );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "id", SearchTestCase.standardAnalyzer );
org.apache.lucene.search.Query luceneQuery = parser.parse( "street1_ngram:pea" );
final FullTextQuery query = s.createFullTextQuery( luceneQuery );
@@ -127,7 +125,6 @@
s.delete( query.list().get( 0 ));
tx.commit();
s.close();
-
}
public void testBridgeMapping() throws Exception{
@@ -144,7 +141,7 @@
tx = s.beginTransaction();
- QueryParser parser = new QueryParser( "id", new StandardAnalyzer( ) );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "id", SearchTestCase.standardAnalyzer );
org.apache.lucene.search.Query luceneQuery = parser.parse( "street1:peac" );
FullTextQuery query = s.createFullTextQuery( luceneQuery );
assertEquals( "PrefixQuery should not be on", 0, query.getResultSize() );
@@ -178,7 +175,7 @@
tx = s.beginTransaction();
- QueryParser parser = new QueryParser( "id", new StandardAnalyzer( ) );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "id", SearchTestCase.standardAnalyzer );
org.apache.lucene.search.Query luceneQuery = parser.parse( "street1:peachtree OR idx_street2:peachtree" );
FullTextQuery query = s.createFullTextQuery( luceneQuery ).setProjection( FullTextQuery.THIS, FullTextQuery.SCORE );
assertEquals( "expecting two results", 2, query.getResultSize() );
@@ -194,10 +191,7 @@
tx.commit();
s.close();
}
-
-
-
public void testAnalyzerDiscriminator() throws Exception{
FullTextSession s = Search.getFullTextSession( openSession() );
Transaction tx = s.beginTransaction();
@@ -233,7 +227,6 @@
tx.commit();
s.close();
}
-
public void testDateBridgeMapping() throws Exception{
FullTextSession s = Search.getFullTextSession( openSession() );
@@ -269,7 +262,7 @@
tx = s.beginTransaction();
- QueryParser parser = new QueryParser( "id", new StandardAnalyzer( ) );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "id", SearchTestCase.standardAnalyzer );
org.apache.lucene.search.Query luceneQuery = parser.parse( "date-created:20091115 OR blog-entry-created:20091115" );
FullTextQuery query = s.createFullTextQuery( luceneQuery ).setProjection( FullTextQuery.THIS, FullTextQuery.SCORE );
assertEquals( "expecting 3 results", 3, query.getResultSize() );
@@ -310,7 +303,7 @@
tx = s.beginTransaction();
- QueryParser parser = new QueryParser( "id", new StandardAnalyzer( ) );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "id", SearchTestCase.standardAnalyzer );
org.apache.lucene.search.Query luceneQuery = parser.parse( "last-updated:20091115" );
FullTextQuery query = s.createFullTextQuery( luceneQuery ).setProjection( FullTextQuery.THIS, FullTextQuery.SCORE );
assertEquals( "expecting 2 results", 2, query.getResultSize() );
@@ -325,7 +318,6 @@
s.close();
}
-
public void testProvidedIdMapping() throws Exception{
FullTextSession fullTextSession = Search.getFullTextSession( openSession() );
SearchFactoryImplementor sf = (SearchFactoryImplementor) fullTextSession.getSearchFactory();
@@ -355,7 +347,7 @@
Transaction transaction = fullTextSession.beginTransaction();
- QueryParser parser = new QueryParser( "providedidentry.name", new StandardAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "providedidentry.name", SearchTestCase.standardAnalyzer );
Query luceneQuery = parser.parse( "Goat" );
//we cannot use FTQuery because @ProvidedId does not provide the getter id and Hibernate Hsearch Query extension
@@ -364,7 +356,7 @@
//we know there is only one DP
DirectoryProvider<?> provider = fullTextSession.getSearchFactory()
.getDirectoryProviders( ProvidedIdEntry.class )[0];
- IndexSearcher searcher = new IndexSearcher( provider.getDirectory() );
+ IndexSearcher searcher = new IndexSearcher( provider.getDirectory(), true );
TopDocs hits = searcher.search( luceneQuery, 1000 );
searcher.close();
transaction.commit();
@@ -373,8 +365,6 @@
assertEquals( 3, hits.totalHits );
}
-
-
public void testFullTextFilterDefAtMappingLevel() throws Exception{
FullTextSession s = Search.getFullTextSession( openSession() );
Transaction tx = s.beginTransaction();
@@ -403,7 +393,7 @@
tx = s.beginTransaction();
- QueryParser parser = new QueryParser( "id", new StandardAnalyzer( ) );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "id", SearchTestCase.standardAnalyzer );
org.apache.lucene.search.Query luceneQuery = parser.parse( "street1:Peachtnot" );
FullTextQuery query = s.createFullTextQuery( luceneQuery ).setProjection( FullTextQuery.THIS, FullTextQuery.SCORE );
query.enableFullTextFilter("security").setParameter("ownerName", "test");
@@ -438,7 +428,7 @@
tx = s.beginTransaction();
- QueryParser parser = new QueryParser( "id", new StandardAnalyzer( ) );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "id", SearchTestCase.standardAnalyzer );
org.apache.lucene.search.Query luceneQuery = parser.parse( "items.description:Ferrari" );
FullTextQuery query = s.createFullTextQuery( luceneQuery ).setProjection( FullTextQuery.THIS, FullTextQuery.SCORE );
assertEquals( "expecting 1 results", 1, query.getResultSize() );
@@ -472,7 +462,7 @@
tx = s.beginTransaction();
- QueryParser parser = new QueryParser( "id", new StandardAnalyzer( ) );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "id", SearchTestCase.standardAnalyzer );
org.apache.lucene.search.Query luceneQuery = parser.parse( "items.description:test" );
FullTextQuery query = s.createFullTextQuery( luceneQuery ).setProjection( FullTextQuery.THIS, FullTextQuery.SCORE );
assertEquals( "expecting 1 results", 1, query.getResultSize() );
@@ -489,12 +479,12 @@
tx = s.beginTransaction();
- parser = new QueryParser( "id", new StandardAnalyzer( ) );
+ parser = new QueryParser( getTargetLuceneVersion(), "id", SearchTestCase.standardAnalyzer );
luceneQuery = parser.parse( "items.description:test" );
query = s.createFullTextQuery( luceneQuery ).setProjection( FullTextQuery.THIS, FullTextQuery.SCORE );
assertEquals( "expecting 0 results", 0, query.getResultSize() );
- parser = new QueryParser( "id", new StandardAnalyzer( ) );
+ parser = new QueryParser( getTargetLuceneVersion(), "id", SearchTestCase.standardAnalyzer );
luceneQuery = parser.parse( "items.description:Ferrari" );
query = s.createFullTextQuery( luceneQuery ).setProjection( FullTextQuery.THIS, FullTextQuery.SCORE );
assertEquals( "expecting 1 results", 1, query.getResultSize() );
@@ -529,7 +519,7 @@
// Departments entity after being massaged by passing it
// through the EquipmentType class. This field is in
// the Lucene document but not in the Department entity itself.
- QueryParser parser = new QueryParser( "equipment", new SimpleAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "equipment", new SimpleAnalyzer() );
// Check the second ClassBridge annotation
Query query = parser.parse( "equiptype:Cisco" );
@@ -549,7 +539,7 @@
assertTrue( "problem with field cross-ups", result.size() == 0 );
// Non-ClassBridge field.
- parser = new QueryParser( "branchHead", new SimpleAnalyzer() );
+ parser = new QueryParser( getTargetLuceneVersion(), "branchHead", new SimpleAnalyzer() );
query = parser.parse( "branchHead:Kent Lewin" );
hibQuery = session.createFullTextQuery( query, Departments.class );
result = hibQuery.list();
@@ -558,7 +548,7 @@
assertEquals("incorrect entity returned", "Kent Lewin", ( result.get( 0 ) ).getBranchHead());
// Check other ClassBridge annotation.
- parser = new QueryParser( "branchnetwork", new SimpleAnalyzer() );
+ parser = new QueryParser( getTargetLuceneVersion(), "branchnetwork", new SimpleAnalyzer() );
query = parser.parse( "branchnetwork:st. george 1D" );
hibQuery = session.createFullTextQuery( query, Departments.class );
result = hibQuery.list();
@@ -573,7 +563,6 @@
s.close();
}
-
public void testDynamicBoosts() throws Exception {
Session session = openSession();
@@ -657,7 +646,7 @@
}
private int nbrOfMatchingResults(String field, String token, FullTextSession s) throws ParseException {
- QueryParser parser = new QueryParser( field, new StandardAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), field, SearchTestCase.standardAnalyzer );
org.apache.lucene.search.Query luceneQuery = parser.parse( token );
FullTextQuery query = s.createFullTextQuery( luceneQuery );
return query.getResultSize();
@@ -750,9 +739,6 @@
.analyzerDef( "minimal", StandardTokenizerFactory.class );
}
-
-
-
protected Class<?>[] getMappings() {
return new Class<?>[] {
Modified: search/trunk/src/test/java/org/hibernate/search/test/configuration/SecurityFilterFactory.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/configuration/SecurityFilterFactory.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/configuration/SecurityFilterFactory.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -61,7 +61,7 @@
return key;
}
- private final class SecurityFilter extends Filter {
+ private static final class SecurityFilter extends Filter {
private static final long serialVersionUID = -5105989141875576599L;
private final String ownerName;
Modified: search/trunk/src/test/java/org/hibernate/search/test/configuration/ShardsConfigurationTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/configuration/ShardsConfigurationTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/configuration/ShardsConfigurationTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -28,7 +28,6 @@
import static org.hibernate.search.backend.configuration.IndexWriterSetting.MAX_MERGE_DOCS;
import static org.hibernate.search.backend.configuration.IndexWriterSetting.MERGE_FACTOR;
import static org.hibernate.search.backend.configuration.IndexWriterSetting.RAM_BUFFER_SIZE;
-import static org.hibernate.search.backend.configuration.IndexWriterSetting.TERM_INDEX_INTERVAL;
import static org.hibernate.search.test.configuration.ConfigurationReadTestCase.TransactionType.TRANSACTION;
import static org.hibernate.search.test.configuration.ConfigurationReadTestCase.TransactionType.BATCH;
import org.hibernate.search.store.DirectoryProvider;
@@ -67,7 +66,7 @@
cfg.setProperty( "hibernate.search.Documents.1.transaction.term_index_interval", "12" );
}
- public void testCorrectNumberOfShardsDetected() throws Exception {
+ public void testCorrectNumberOfShardsDetected() {
DirectoryProvider[] docDirProviders = getSearchFactory()
.getDirectoryProviders( Document.class );
assertNotNull( docDirProviders);
@@ -78,14 +77,14 @@
assertEquals( 2, bookDirProviders.length );
}
- public void testSelectionOfShardingStrategy() throws Exception {
+ public void testSelectionOfShardingStrategy() {
IndexShardingStrategy shardingStrategy = getSearchFactory().getDocumentBuilderIndexedEntity( Document.class )
.getDirectoryProviderSelectionStrategy();
assertNotNull( shardingStrategy );
assertEquals( shardingStrategy.getClass(), UselessShardingStrategy.class );
}
- public void testShardingSettingsInherited() throws Exception {
+ public void testShardingSettingsInherited() {
DirectoryProvider[] docDirProviders = getSearchFactory().getDirectoryProviders( Document.class );
assertTrue( docDirProviders[0] instanceof RAMDirectoryProvider );
assertTrue( docDirProviders[1] instanceof FSDirectoryProvider );
@@ -93,7 +92,7 @@
assertValueIsSet( Document.class, 0, BATCH, MAX_BUFFERED_DOCS, 4 );
}
- public void testShardN2UsesDefaults() throws Exception {
+ public void testShardN2UsesDefaults() {
assertValueIsSet( Document.class, 2, TRANSACTION, MAX_BUFFERED_DOCS, 6 );
assertValueIsDefault( Document.class, 2, TRANSACTION, MAX_MERGE_DOCS );
assertValueIsSet( Document.class, 2, TRANSACTION, MERGE_FACTOR, 100 );
@@ -104,7 +103,7 @@
assertValueIsDefault( Document.class, 2, BATCH, RAM_BUFFER_SIZE );
}
- public void testShardN1_ExplicitParams() throws Exception {
+ public void testShardN1_ExplicitParams() {
assertValueIsSet( Document.class, 1, TRANSACTION, MAX_BUFFERED_DOCS, 12 );
assertValueIsSet( Document.class, 1, BATCH, MAX_MERGE_DOCS, 11 );
}
@@ -114,7 +113,7 @@
// skips index emptying to prevent a problem with UselessShardingStrategy
}
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[] {
Book.class,
Author.class,
Modified: search/trunk/src/test/java/org/hibernate/search/test/directoryProvider/DirectoryProviderHelperTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/directoryProvider/DirectoryProviderHelperTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/directoryProvider/DirectoryProviderHelperTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -37,7 +37,7 @@
*/
public class DirectoryProviderHelperTest extends TestCase {
- public void testMkdirsDetermineIndex() throws Exception {
+ public void testMkdirsDetermineIndex() {
String root = "./testDir/dir1/dir2";
String relative = "dir3";
@@ -45,14 +45,14 @@
properties.put( "indexBase", root );
properties.put( "indexName", relative );
- File f = DirectoryProviderHelper.getVerifiedIndexDir( "name", properties, true );
+ DirectoryProviderHelper.getVerifiedIndexDir( "name", properties, true );
assertTrue( new File( root ).exists() );
FileHelper.delete( new File( "./testDir" ) );
}
- public void testMkdirsGetSource() throws Exception {
+ public void testMkdirsGetSource() {
String root = "./testDir";
String relative = "dir1/dir2/dir3";
Modified: search/trunk/src/test/java/org/hibernate/search/test/directoryProvider/FSSlaveAndMasterDPTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/directoryProvider/FSSlaveAndMasterDPTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/directoryProvider/FSSlaveAndMasterDPTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -28,7 +28,6 @@
import java.util.Date;
import java.util.List;
-import org.apache.lucene.analysis.StopAnalyzer;
import org.apache.lucene.queryParser.QueryParser;
import org.slf4j.Logger;
@@ -38,6 +37,7 @@
import org.hibernate.cfg.Configuration;
import org.hibernate.search.FullTextSession;
import org.hibernate.search.Search;
+import org.hibernate.search.test.SearchTestCase;
import org.hibernate.search.util.FileHelper;
import org.hibernate.search.util.LoggerFactory;
@@ -87,7 +87,7 @@
// assert that the salve index is empty
FullTextSession fullTextSession = Search.getFullTextSession( getSlaveSession() );
Transaction tx = fullTextSession.beginTransaction();
- QueryParser parser = new QueryParser( "id", new StopAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "id", SearchTestCase.stopAnalyzer );
List result = fullTextSession.createFullTextQuery( parser.parse( "location:texas" ) ).list();
assertEquals( "No copy yet, fresh index expected", 0, result.size() );
tx.commit();
@@ -212,7 +212,7 @@
return 2;
}
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[] {
SnowStorm.class
};
Modified: search/trunk/src/test/java/org/hibernate/search/test/directoryProvider/MultipleSFTestCase.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/directoryProvider/MultipleSFTestCase.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/directoryProvider/MultipleSFTestCase.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -28,11 +28,13 @@
import junit.framework.TestCase;
+import org.apache.lucene.util.Version;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;
import org.hibernate.cfg.Environment;
import org.hibernate.dialect.Dialect;
+import org.hibernate.search.test.SearchTestCase;
/**
* Build multiple session factories from the same set of classes
@@ -130,4 +132,9 @@
public static SessionFactory[] getSessionFactories() {
return sessionFactories;
}
+
+ public static Version getTargetLuceneVersion() {
+ return SearchTestCase.getTargetLuceneVersion();
+ }
+
}
Modified: search/trunk/src/test/java/org/hibernate/search/test/embedded/EmbeddedTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/embedded/EmbeddedTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/embedded/EmbeddedTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -27,7 +27,6 @@
import java.util.ArrayList;
import java.util.List;
-import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.index.Term;
import org.apache.lucene.queryParser.MultiFieldQueryParser;
import org.apache.lucene.queryParser.QueryParser;
@@ -66,7 +65,7 @@
tx.commit();
FullTextSession session = Search.getFullTextSession( s );
- QueryParser parser = new QueryParser( "id", new StandardAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "id", SearchTestCase.standardAnalyzer );
Query query;
List<?> result;
@@ -132,7 +131,7 @@
tx.commit();
FullTextSession session = Search.getFullTextSession( s );
- QueryParser parser = new QueryParser( "id", new StandardAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "id", SearchTestCase.standardAnalyzer );
Query query;
List<?> result;
@@ -169,7 +168,7 @@
s.clear();
FullTextSession session = Search.getFullTextSession( s );
- QueryParser parser = new QueryParser( "id", new StandardAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "id", SearchTestCase.standardAnalyzer );
Query query;
List<?> result;
@@ -246,7 +245,7 @@
FullTextSession session = Search.getFullTextSession( s );
tx = session.beginTransaction();
- QueryParser parser = new MultiFieldQueryParser( new String[] { "name", "authors.name" }, new StandardAnalyzer() );
+ QueryParser parser = new MultiFieldQueryParser( getTargetLuceneVersion(), new String[] { "name", "authors.name" }, SearchTestCase.standardAnalyzer );
Query query;
List<?> result;
@@ -306,7 +305,7 @@
FullTextSession session = Search.getFullTextSession( s );
tx = session.beginTransaction();
- QueryParser parser = new MultiFieldQueryParser( new String[] { "name", "state.name" }, new StandardAnalyzer() );
+ QueryParser parser = new MultiFieldQueryParser( getTargetLuceneVersion(), new String[] { "name", "state.name" }, SearchTestCase.standardAnalyzer );
Query query;
List<?> result;
Modified: search/trunk/src/test/java/org/hibernate/search/test/embedded/doubleinsert/DoubleInsertEmbeddedTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/embedded/doubleinsert/DoubleInsertEmbeddedTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/embedded/doubleinsert/DoubleInsertEmbeddedTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -93,7 +93,7 @@
s.close();
}
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[] {
Address.class,
Contact.class,
Modified: search/trunk/src/test/java/org/hibernate/search/test/embedded/nested/NestedEmbeddedTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/embedded/nested/NestedEmbeddedTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/embedded/nested/NestedEmbeddedTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -26,10 +26,8 @@
import java.util.List;
-import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.Query;
-
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.search.FullTextSession;
@@ -61,7 +59,7 @@
tx.commit();
FullTextSession session = Search.getFullTextSession( s );
- QueryParser parser = new QueryParser( "attributes.values.value", new StandardAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "attributes.values.value", SearchTestCase.standardAnalyzer );
Query query;
List<?> result;
@@ -115,7 +113,7 @@
tx.commit();
FullTextSession session = Search.getFullTextSession( s );
- QueryParser parser = new QueryParser( "placesVisited.address.city", new StandardAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "placesVisited.address.city", SearchTestCase.standardAnalyzer );
Query query;
List<?> result;
Modified: search/trunk/src/test/java/org/hibernate/search/test/engine/LazyCollectionsUpdatingTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/engine/LazyCollectionsUpdatingTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/engine/LazyCollectionsUpdatingTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -133,7 +133,7 @@
// Test setup options - Entities
@Override
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[] { BusLine.class, BusStop.class };
}
Modified: search/trunk/src/test/java/org/hibernate/search/test/engine/RollbackTransactionTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/engine/RollbackTransactionTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/engine/RollbackTransactionTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -98,7 +98,7 @@
// Test setup options - Entities
@Override
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[] { BusLine.class, BusStop.class };
}
Modified: search/trunk/src/test/java/org/hibernate/search/test/fieldAccess/FieldAccessTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/fieldAccess/FieldAccessTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/fieldAccess/FieldAccessTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -32,7 +32,6 @@
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.apache.lucene.queryParser.QueryParser;
-import org.apache.lucene.analysis.standard.StandardAnalyzer;
/**
* @author Emmanuel Bernard
@@ -50,7 +49,7 @@
FullTextSession session = Search.getFullTextSession(s);
tx = session.beginTransaction();
- QueryParser p = new QueryParser("id", new StandardAnalyzer( ) );
+ QueryParser p = new QueryParser( getTargetLuceneVersion(), "id", SearchTestCase.standardAnalyzer );
List result = session.createFullTextQuery( p.parse( "Abstract:Hibernate" ) ).list();
assertEquals( "Query by field", 1, result.size() );
s.delete( result.get( 0 ) );
@@ -74,7 +73,7 @@
FullTextSession session = Search.getFullTextSession(s);
tx = session.beginTransaction();
- QueryParser p = new QueryParser("id", new StandardAnalyzer( ) );
+ QueryParser p = new QueryParser( getTargetLuceneVersion(), "id", SearchTestCase.standardAnalyzer );
List result = session.createFullTextQuery( p.parse( "title:Action OR Abstract:Action" ) ).list();
assertEquals( "Query by field", 2, result.size() );
assertEquals( "@Boost fails", "Hibernate in Action", ( (Document) result.get( 0 ) ).getTitle() );
@@ -84,7 +83,7 @@
}
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[] {
Document.class
};
Modified: search/trunk/src/test/java/org/hibernate/search/test/filter/ExcludeAllFilter.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/filter/ExcludeAllFilter.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/filter/ExcludeAllFilter.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -24,8 +24,8 @@
*/
package org.hibernate.search.test.filter;
-import java.util.BitSet;
import java.io.IOException;
+import java.io.Serializable;
import org.apache.lucene.search.DocIdSet;
import org.apache.lucene.search.Filter;
@@ -34,23 +34,12 @@
/**
* @author Emmanuel Bernard
*/
-@SuppressWarnings("serial")
-public class ExcludeAllFilter extends Filter {
+public class ExcludeAllFilter extends Filter implements Serializable {
// ugly but useful for test purposes
private static volatile boolean done = false;
@Override
- public BitSet bits(IndexReader reader) throws IOException {
- if ( done ) {
- throw new IllegalStateException( "Called twice" );
- }
- BitSet bitSet = new BitSet( reader.maxDoc() );
- done = true;
- return bitSet;
- }
-
- @Override
public DocIdSet getDocIdSet(IndexReader reader) throws IOException {
if ( done ) {
throw new IllegalStateException( "Called twice" );
@@ -58,4 +47,5 @@
done = true;
return DocIdSet.EMPTY_DOCIDSET;
}
+
}
Modified: search/trunk/src/test/java/org/hibernate/search/test/filter/ExcludeAllFilterFactory.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/filter/ExcludeAllFilterFactory.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/filter/ExcludeAllFilterFactory.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -31,8 +31,10 @@
* @author Emmanuel Bernard
*/
public class ExcludeAllFilterFactory {
+
@Factory
public Filter getFilter() {
return new ExcludeAllFilter();
}
+
}
Modified: search/trunk/src/test/java/org/hibernate/search/test/filter/FilterTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/filter/FilterTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/filter/FilterTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -30,8 +30,8 @@
import org.apache.lucene.search.BooleanClause;
import org.apache.lucene.search.BooleanQuery;
import org.apache.lucene.search.Filter;
-import org.apache.lucene.search.RangeFilter;
import org.apache.lucene.search.TermQuery;
+import org.apache.lucene.search.TermRangeFilter;
import org.hibernate.Session;
import org.hibernate.search.FullTextQuery;
import org.hibernate.search.FullTextSession;
@@ -137,8 +137,7 @@
ftQuery = s.createFullTextQuery( query, Driver.class );
ftQuery.enableFullTextFilter( "bestDriver");
- Filter dateFilter = new RangeFilter("delivery", "2001", "2005",
- true, true);
+ Filter dateFilter = new TermRangeFilter("delivery", "2001", "2005", true, true);
ftQuery.setFilter( dateFilter );
assertEquals("Should select only liz", 1, ftQuery.getResultSize() );
@@ -200,7 +199,7 @@
}
@SuppressWarnings("unchecked")
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[] {
Driver.class,
Soap.class
Modified: search/trunk/src/test/java/org/hibernate/search/test/filter/FiltersOptimizationTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/filter/FiltersOptimizationTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/filter/FiltersOptimizationTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -126,17 +126,16 @@
private boolean isIdSetSequenceSameTo(DocIdSet docIdSet, int...expectedIds) throws IOException {
DocIdSetIterator idSetIterator = docIdSet.iterator();
for ( int setBit : expectedIds ) {
- if ( ! idSetIterator.next() ) {
+ int currentId = idSetIterator.nextDoc();
+ if ( currentId == DocIdSetIterator.NO_MORE_DOCS ) {
return false;
}
- if ( idSetIterator.doc() != setBit ) {
+ if ( currentId != setBit ) {
return false;
}
}
- if ( idSetIterator.next() ){
- return false;
- }
- return true;
+ // and now test both sequences are at the end:
+ return idSetIterator.nextDoc() == DocIdSetIterator.NO_MORE_DOCS;
}
/**
@@ -185,7 +184,7 @@
* Implementation for testing: wraps a DocIdSet with a new type
* to make it not possible to cast/detect to the original type.
*/
- private class DocIdSetHiddenType extends DocIdSet {
+ private static class DocIdSetHiddenType extends DocIdSet {
private final DocIdSet bitSet;
Modified: search/trunk/src/test/java/org/hibernate/search/test/filter/InstanceBasedExcludeAllFilter.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/filter/InstanceBasedExcludeAllFilter.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/filter/InstanceBasedExcludeAllFilter.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -24,8 +24,8 @@
*/
package org.hibernate.search.test.filter;
-import java.util.BitSet;
import java.io.IOException;
+import java.io.Serializable;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.search.Filter;
@@ -34,20 +34,11 @@
/**
* @author Emmanuel Bernard
*/
-public class InstanceBasedExcludeAllFilter extends Filter {
+public class InstanceBasedExcludeAllFilter extends Filter implements Serializable {
+
private volatile boolean done = false;
@Override
- public BitSet bits(IndexReader reader) throws IOException {
- if ( done ) {
- throw new IllegalStateException( "Called twice" );
- }
- BitSet bitSet = new BitSet( reader.maxDoc() );
- done = true;
- return bitSet;
- }
-
- @Override
public DocIdSet getDocIdSet(IndexReader reader) throws IOException {
if ( done ) {
throw new IllegalStateException( "Called twice" );
@@ -55,4 +46,5 @@
done = true;
return DocIdSet.EMPTY_DOCIDSET;
}
+
}
Modified: search/trunk/src/test/java/org/hibernate/search/test/id/EmbeddedIdTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/id/EmbeddedIdTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/id/EmbeddedIdTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -112,7 +112,7 @@
s.close();
}
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[] {
Person.class
};
Modified: search/trunk/src/test/java/org/hibernate/search/test/id/ImplicitIdTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/id/ImplicitIdTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/id/ImplicitIdTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -63,7 +63,7 @@
s.close();
}
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[] {
Animal.class
};
Modified: search/trunk/src/test/java/org/hibernate/search/test/id/providedId/ProvidedIdPerson.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/id/providedId/ProvidedIdPerson.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/id/providedId/ProvidedIdPerson.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -32,9 +32,6 @@
import org.hibernate.search.annotations.FieldBridge;
import org.hibernate.search.bridge.builtin.LongBridge;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
import java.io.Serializable;
Modified: search/trunk/src/test/java/org/hibernate/search/test/id/providedId/ProvidedIdPersonSub.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/id/providedId/ProvidedIdPersonSub.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/id/providedId/ProvidedIdPersonSub.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -24,8 +24,6 @@
*/
package org.hibernate.search.test.id.providedId;
-import javax.persistence.Entity;
-
import org.hibernate.search.annotations.Indexed;
/**
Modified: search/trunk/src/test/java/org/hibernate/search/test/id/providedId/ProvidedIdTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/id/providedId/ProvidedIdTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/id/providedId/ProvidedIdTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -24,7 +24,6 @@
*/
package org.hibernate.search.test.id.providedId;
-import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
@@ -34,6 +33,7 @@
import org.hibernate.search.engine.SearchFactoryImplementor;
import org.hibernate.search.impl.SearchFactoryImpl;
import org.hibernate.search.store.DirectoryProvider;
+import org.hibernate.search.test.SearchTestCase;
/**
* @author Navin Surtani
@@ -66,7 +66,7 @@
tc.end();
- QueryParser parser = new QueryParser( "name", new StandardAnalyzer() );
+ QueryParser parser = new QueryParser( SearchTestCase.getTargetLuceneVersion(), "name", SearchTestCase.standardAnalyzer );
Query luceneQuery = parser.parse( "Goat" );
//we cannot use FTQuery because @ProvidedId does not provide the getter id and Hibernate Hsearch Query extension
@@ -75,7 +75,7 @@
//we know there is only one DP
DirectoryProvider provider = sf
.getDirectoryProviders( ProvidedIdPerson.class )[0];
- IndexSearcher searcher = new IndexSearcher( provider.getDirectory() );
+ IndexSearcher searcher = new IndexSearcher( provider.getDirectory(), true );
TopDocs hits = searcher.search( luceneQuery, 1000 );
assertEquals( 3, hits.totalHits );
searcher.close();
Modified: search/trunk/src/test/java/org/hibernate/search/test/indexingStrategy/ManualIndexingStrategyTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/indexingStrategy/ManualIndexingStrategyTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/indexingStrategy/ManualIndexingStrategyTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -77,7 +77,7 @@
}
}
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[] {
Document.class,
AlternateDocument.class
Modified: search/trunk/src/test/java/org/hibernate/search/test/inheritance/InheritanceTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/inheritance/InheritanceTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/inheritance/InheritanceTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -27,12 +27,11 @@
import java.util.List;
import java.io.Serializable;
-import org.apache.lucene.analysis.StopAnalyzer;
import org.apache.lucene.index.Term;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.Query;
-import org.apache.lucene.search.RangeQuery;
import org.apache.lucene.search.TermQuery;
+import org.apache.lucene.search.TermRangeQuery;
import org.slf4j.Logger;
import org.hibernate.Transaction;
@@ -55,7 +54,7 @@
public void testSearchUnindexClass() throws Exception {
createTestData();
- QueryParser parser = new QueryParser( "name", new StopAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "name", SearchTestCase.stopAnalyzer );
Query query = parser.parse( "Elephant" );
FullTextSession s = Search.getFullTextSession( openSession() );
@@ -84,7 +83,7 @@
FullTextSession s = Search.getFullTextSession( openSession() );
Transaction tx = s.beginTransaction();
- QueryParser parser = new QueryParser( "name", new StopAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "name", SearchTestCase.stopAnalyzer );
Query query = parser.parse( "Elephant" );
org.hibernate.Query hibQuery = s.createFullTextQuery( query, Mammal.class );
assertItsTheElephant( hibQuery.list() );
@@ -103,7 +102,7 @@
assertNotNull( result );
assertEquals( "Query filtering on superclass return mapped subclasses", 2, result.size() );
- query = new RangeQuery( new Term( "weight", "04000" ), new Term( "weight", "05000" ), true );
+ query = new TermRangeQuery( "weight", "04000", "05000", true, true );
hibQuery = s.createFullTextQuery( query, Animal.class );
assertItsTheElephant( hibQuery.list() );
@@ -121,7 +120,7 @@
FullTextSession s = Search.getFullTextSession( openSession() );
Transaction tx = s.beginTransaction();
- QueryParser parser = new QueryParser( "name", new StopAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "name", SearchTestCase.stopAnalyzer );
Query query = parser.parse( "Elephant" );
org.hibernate.Query hibQuery = s.createFullTextQuery( query, Mammal.class );
@@ -252,7 +251,7 @@
}
private void assertNumberOfAnimals(FullTextSession s, int count) throws Exception {
- QueryParser parser = new QueryParser( "name", new StopAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "name", SearchTestCase.stopAnalyzer );
Query query = parser.parse( "Elephant OR White Pointer OR Chimpanzee OR Dove or Eagle" );
List result = s.createFullTextQuery( query, Animal.class ).list();
assertNotNull( result );
@@ -304,7 +303,7 @@
assertEquals( "Wrong animal name", "Elephant", mammal.getName() );
}
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[] {
Animal.class,
Mammal.class,
Modified: search/trunk/src/test/java/org/hibernate/search/test/jgroups/common/JGroupsCommonTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/jgroups/common/JGroupsCommonTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/jgroups/common/JGroupsCommonTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -26,10 +26,8 @@
import java.util.List;
-import org.apache.lucene.analysis.StopAnalyzer;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.Query;
-
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
@@ -38,6 +36,7 @@
import org.hibernate.search.FullTextSession;
import org.hibernate.search.Search;
import org.hibernate.search.backend.impl.jgroups.JGroupsBackendQueueProcessorFactory;
+import org.hibernate.search.test.SearchTestCase;
import org.hibernate.search.test.jgroups.master.TShirt;
/**
@@ -73,7 +72,7 @@
FullTextSession ftSess = Search.getFullTextSession( openSession() );
ftSess.getTransaction().begin();
- QueryParser parser = new QueryParser( "id", new StopAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "id", SearchTestCase.stopAnalyzer );
Query luceneQuery = parser.parse( "logo:Boston or logo:Mapple leaves" );
org.hibernate.Query query = ftSess.createFullTextQuery( luceneQuery );
List result = query.list();
@@ -89,7 +88,7 @@
//need to sleep for the message consumption
Thread.sleep( 3000 );
- parser = new QueryParser( "id", new StopAnalyzer() );
+ parser = new QueryParser( getTargetLuceneVersion(), "id", SearchTestCase.stopAnalyzer );
luceneQuery = parser.parse( "logo:Peter pan" );
query = ftSess.createFullTextQuery( luceneQuery );
result = query.list();
@@ -104,7 +103,7 @@
//Need to sleep for the message consumption
Thread.sleep( 3000 );
- parser = new QueryParser( "id", new StopAnalyzer() );
+ parser = new QueryParser( getTargetLuceneVersion(), "id", SearchTestCase.stopAnalyzer );
luceneQuery = parser.parse( "logo:Boston or logo:Mapple leaves" );
query = ftSess.createFullTextQuery( luceneQuery );
result = query.list();
Modified: search/trunk/src/test/java/org/hibernate/search/test/jgroups/master/JGroupsMasterTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/jgroups/master/JGroupsMasterTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/jgroups/master/JGroupsMasterTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -30,7 +30,6 @@
import java.util.ArrayList;
import java.util.List;
-import org.apache.lucene.analysis.StopAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.queryParser.QueryParser;
@@ -82,7 +81,7 @@
FullTextSession ftSess = Search.getFullTextSession( openSession() );
ftSess.getTransaction().begin();
- QueryParser parser = new QueryParser( "id", new StopAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "id", SearchTestCase.stopAnalyzer );
Query luceneQuery = parser.parse( "logo:jboss" );
org.hibernate.Query query = ftSess.createFullTextQuery( luceneQuery );
List result = query.list();
@@ -186,7 +185,7 @@
"shun=false;print_local_addr=true)";
}
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[] {
TShirt.class
};
Modified: search/trunk/src/test/java/org/hibernate/search/test/jgroups/slave/JGroupsSlaveTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/jgroups/slave/JGroupsSlaveTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/jgroups/slave/JGroupsSlaveTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -118,7 +118,7 @@
super.tearDown();
}
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[] {
TShirt.class
};
Modified: search/trunk/src/test/java/org/hibernate/search/test/jms/master/JMSMasterTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/jms/master/JMSMasterTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/jms/master/JMSMasterTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -39,12 +39,10 @@
import javax.naming.Context;
import org.apache.activemq.broker.BrokerService;
-import org.apache.lucene.analysis.StopAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.Query;
-
import org.hibernate.Session;
import org.hibernate.cfg.Configuration;
import org.hibernate.search.Environment;
@@ -93,7 +91,7 @@
FullTextSession ftSess = Search.getFullTextSession( openSession() );
ftSess.getTransaction().begin();
- QueryParser parser = new QueryParser( "id", new StopAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "id", SearchTestCase.stopAnalyzer );
Query luceneQuery = parser.parse( "logo:jboss" );
org.hibernate.Query query = ftSess.createFullTextQuery( luceneQuery );
List result = query.list();
@@ -200,7 +198,7 @@
cfg.setProperty( Environment.WORKER_BACKEND, "lucene" );
}
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[] {
TShirt.class
};
Modified: search/trunk/src/test/java/org/hibernate/search/test/jms/slave/JMSSlaveTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/jms/slave/JMSSlaveTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/jms/slave/JMSSlaveTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -160,7 +160,7 @@
cfg.setProperty( JMSBackendQueueProcessorFactory.JMS_QUEUE, QUEUE_NAME );
}
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[] {
TShirt.class
};
Modified: search/trunk/src/test/java/org/hibernate/search/test/jpa/EntityManagerSerializationTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/jpa/EntityManagerSerializationTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/jpa/EntityManagerSerializationTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -31,13 +31,13 @@
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
-import org.apache.lucene.analysis.StopAnalyzer;
import org.apache.lucene.index.Term;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.TermQuery;
import org.hibernate.search.jpa.FullTextEntityManager;
import org.hibernate.search.jpa.Search;
+import org.hibernate.search.test.SearchTestCase;
/**
* Serialization test for entity manager. HSEARCH-117.
@@ -120,7 +120,7 @@
em.getTransaction().commit();
em.clear();
em.getTransaction().begin();
- QueryParser parser = new QueryParser("title", new StopAnalyzer());
+ QueryParser parser = new QueryParser( SearchTestCase.getTargetLuceneVersion(), "title", SearchTestCase.stopAnalyzer );
Query query = parser.parse("saltQty:noword");
assertEquals(0, em.createFullTextQuery(query).getResultList().size());
query = new TermQuery(new Term("saltQty", "23.0"));
Modified: search/trunk/src/test/java/org/hibernate/search/test/jpa/EntityManagerTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/jpa/EntityManagerTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/jpa/EntityManagerTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -26,10 +26,10 @@
import org.hibernate.search.jpa.Search;
import org.hibernate.search.jpa.FullTextEntityManager;
+import org.hibernate.search.test.SearchTestCase;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.TermQuery;
import org.apache.lucene.queryParser.QueryParser;
-import org.apache.lucene.analysis.StopAnalyzer;
import org.apache.lucene.index.Term;
/**
@@ -45,7 +45,7 @@
em.getTransaction().commit();
em.clear();
em.getTransaction().begin();
- QueryParser parser = new QueryParser( "title", new StopAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "title", SearchTestCase.stopAnalyzer );
Query query = parser.parse( "saltQty:noword" );
assertEquals( 0, em.createFullTextQuery( query ).getResultList().size() );
query = new TermQuery( new Term("saltQty", "23.0") );
@@ -56,14 +56,14 @@
em.getTransaction().commit();
em.clear();
-
+
em.getTransaction().begin();
em.remove( em.find( Bretzel.class, bretzel.getId() ) );
em.getTransaction().commit();
em.close();
}
- public void testIndex() throws Exception {
+ public void testIndex() {
FullTextEntityManager em = Search.getFullTextEntityManager( factory.createEntityManager() );
em.getTransaction().begin();
Bretzel bretzel = new Bretzel( 23, 34 );
Modified: search/trunk/src/test/java/org/hibernate/search/test/jpa/JPATestCase.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/jpa/JPATestCase.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/jpa/JPATestCase.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -37,7 +37,9 @@
import org.hibernate.ejb.AvailableSettings;
import org.hibernate.ejb.HibernatePersistence;
import org.hibernate.search.store.RAMDirectoryProvider;
+import org.hibernate.search.test.SearchTestCase;
import org.apache.lucene.analysis.StopAnalyzer;
+import org.apache.lucene.util.Version;
/**
* @author Emmanuel Bernard
@@ -127,5 +129,10 @@
return config;
}
+
+ public static Version getTargetLuceneVersion() {
+ return SearchTestCase.getTargetLuceneVersion();
+ }
+
}
Modified: search/trunk/src/test/java/org/hibernate/search/test/optimizer/OptimizerPerfTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/optimizer/OptimizerPerfTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/optimizer/OptimizerPerfTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -123,7 +123,7 @@
s = sf.openSession();
tx = s.beginTransaction();
FullTextSession fts = new FullTextSessionImpl( s );
- QueryParser parser = new QueryParser( "id", new StopAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "id", SearchTestCase.stopAnalyzer );
Query query;
try {
query = parser.parse( "name:Gavin" );
@@ -201,7 +201,7 @@
cfg.setProperty( Environment.ANALYZER_CLASS, StopAnalyzer.class.getName() );
}
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[] {
Worker.class,
Construction.class
Modified: search/trunk/src/test/java/org/hibernate/search/test/perf/IndexTestDontRun.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/perf/IndexTestDontRun.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/perf/IndexTestDontRun.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -104,11 +104,11 @@
private IndexSearcher getNewSearcher() throws IOException {
final org.hibernate.classic.Session session = getSessions().openSession();
Directory d = Search.getFullTextSession( session ).getSearchFactory().getDirectoryProviders( Boat.class )[0].getDirectory();
- IndexSearcher indexsearcher = new IndexSearcher( d );
+ IndexSearcher indexsearcher = new IndexSearcher( d, true );
return indexsearcher;
}
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[] {
Boat.class
};
Modified: search/trunk/src/test/java/org/hibernate/search/test/perf/SearcherThread.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/perf/SearcherThread.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/perf/SearcherThread.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -29,7 +29,6 @@
import java.util.List;
import java.util.concurrent.CountDownLatch;
-import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.BooleanQuery;
@@ -45,6 +44,7 @@
import org.hibernate.search.FullTextSession;
import org.hibernate.search.Search;
import org.hibernate.search.SearchException;
+import org.hibernate.search.test.SearchTestCase;
import org.hibernate.search.util.LoggerFactory;
/**
@@ -128,7 +128,7 @@
}
private Query getQuery() throws ParseException {
- QueryParser qp = new QueryParser( "t", new StandardAnalyzer() );
+ QueryParser qp = new QueryParser( SearchTestCase.getTargetLuceneVersion(), "t", SearchTestCase.standardAnalyzer );
qp.setLowercaseExpandedTerms( true );
// Parse the query
Query q = qp.parse( queryString );
Modified: search/trunk/src/test/java/org/hibernate/search/test/query/LuceneQuerySortTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/query/LuceneQuerySortTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/query/LuceneQuerySortTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -27,7 +27,6 @@
import java.util.List;
import java.util.Calendar;
-import org.apache.lucene.analysis.StopAnalyzer;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.Sort;
@@ -53,7 +52,7 @@
FullTextSession s = Search.getFullTextSession( openSession() );
createTestBooks(s);
Transaction tx = s.beginTransaction();
- QueryParser parser = new QueryParser("title", new StopAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "title", SearchTestCase.stopAnalyzer );
Query query = parser.parse( "summary:lucene" );
FullTextQuery hibQuery = s.createFullTextQuery( query, Book.class );
@@ -71,21 +70,21 @@
// now the same query, but with a lucene sort specified.
query = parser.parse( "summary:lucene" );
hibQuery = s.createFullTextQuery( query, Book.class );
- Sort sort = new Sort(new SortField("id", true));
+ Sort sort = new Sort( new SortField( "id", SortField.STRING, true ) );
hibQuery.setSort(sort);
result = hibQuery.list();
assertNotNull( result );
assertEquals( "Wrong number of test results.", 3, result.size() );
id = 3;
- for(Book b : result) {
- assertEquals("Expected another id", Integer.valueOf( id ), b.getId());
+ for (Book b : result) {
+ assertEquals( "Expected another id", Integer.valueOf( id ), b.getId() );
id--;
}
// order by summary
query = parser.parse( "summary:lucene OR summary:action" );
hibQuery = s.createFullTextQuery( query, Book.class );
- sort = new Sort( new SortField( "summary_forSort", false ) ); //ASC
+ sort = new Sort( new SortField( "summary_forSort", SortField.STRING ) ); //ASC
hibQuery.setSort( sort );
result = hibQuery.list();
assertNotNull( result );
@@ -95,7 +94,7 @@
// order by summary backwards
query = parser.parse( "summary:lucene OR summary:action" );
hibQuery = s.createFullTextQuery( query, Book.class );
- sort = new Sort( new SortField( "summary_forSort", true ) ); //DESC
+ sort = new Sort( new SortField( "summary_forSort", SortField.STRING, true ) ); //DESC
hibQuery.setSort( sort );
result = hibQuery.list();
assertNotNull( result );
@@ -158,7 +157,7 @@
s.clear();
}
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[] {
Book.class,
Author.class
Modified: search/trunk/src/test/java/org/hibernate/search/test/query/LuceneQueryTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/query/LuceneQueryTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/query/LuceneQueryTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -27,8 +27,6 @@
import java.util.Iterator;
import java.util.List;
-import org.apache.lucene.analysis.StopAnalyzer;
-import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.Query;
import org.hibernate.FetchMode;
@@ -62,7 +60,7 @@
tx.commit();
s.clear();
tx = s.beginTransaction();
- QueryParser parser = new QueryParser( "title", new StopAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "title", SearchTestCase.stopAnalyzer );
Query query = parser.parse( "summary:noword" );
org.hibernate.Query hibQuery = s.createFullTextQuery( query, Clock.class, Book.class );
@@ -117,7 +115,7 @@
tx.commit();
s.clear();
tx = s.beginTransaction();
- QueryParser parser = new QueryParser( "title", new StopAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "title", SearchTestCase.stopAnalyzer );
Query query = parser.parse( "summary:Festina Or brand:Seiko" );
Statistics stats = s.getSessionFactory().getStatistics();
@@ -153,7 +151,7 @@
tx.commit();
s.clear();
tx = s.beginTransaction();
- QueryParser parser = new QueryParser( "title", new StopAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "title", SearchTestCase.stopAnalyzer );
Query query = parser.parse( "summary:Festina Or brand:Seiko" );
org.hibernate.Query hibQuery = s.createFullTextQuery( query, Clock.class, Book.class );
@@ -199,7 +197,7 @@
tx.commit();//post commit events for lucene
s.clear();
tx = s.beginTransaction();
- QueryParser parser = new QueryParser( "title", new StopAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "title", SearchTestCase.stopAnalyzer );
Query query = parser.parse( "summary:noword" );
org.hibernate.Query hibQuery = s.createFullTextQuery( query, Clock.class, Book.class );
@@ -245,7 +243,7 @@
tx.commit();//post commit events for lucene
s.clear();
tx = s.beginTransaction();
- QueryParser parser = new QueryParser( "title", new StopAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "title", SearchTestCase.stopAnalyzer );
Query query = parser.parse( "summary:noword" );
org.hibernate.Query hibQuery = s.createFullTextQuery( query, Clock.class, Book.class );
@@ -281,7 +279,7 @@
s.clear();
Transaction tx = s.beginTransaction();
- QueryParser parser = new QueryParser( "dept", new StandardAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "dept", SearchTestCase.standardAnalyzer );
Query query = parser.parse( "dept:ITech" );
org.hibernate.search.FullTextQuery hibQuery = s.createFullTextQuery( query, Employee.class );
@@ -307,7 +305,7 @@
s.clear();
Transaction tx = s.beginTransaction();
- QueryParser parser = new QueryParser( "dept", new StandardAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "dept", SearchTestCase.standardAnalyzer );
Query query = parser.parse( "dept:ITech" );
org.hibernate.search.FullTextQuery hibQuery = s.createFullTextQuery( query, Employee.class );
@@ -332,7 +330,7 @@
s.clear();
Transaction tx = s.beginTransaction();
- QueryParser parser = new QueryParser( "dept", new StandardAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "dept", SearchTestCase.standardAnalyzer );
Query query = parser.parse( "dept:ITech" );
org.hibernate.search.FullTextQuery hibQuery = s.createFullTextQuery( query, Employee.class );
@@ -368,7 +366,7 @@
s.clear();
Transaction tx = s.beginTransaction();
- QueryParser parser = new QueryParser( "dept", new StandardAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "dept", SearchTestCase.standardAnalyzer );
Query query = parser.parse( "dept:ITech" );
org.hibernate.search.FullTextQuery hibQuery = s.createFullTextQuery( query, Employee.class );
@@ -412,7 +410,7 @@
s.clear();
Transaction tx = s.beginTransaction();
- QueryParser parser = new QueryParser( "dept", new StandardAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "dept", SearchTestCase.standardAnalyzer );
Query query = parser.parse( "dept:XXX" );
org.hibernate.search.FullTextQuery hibQuery = s.createFullTextQuery( query, Employee.class );
@@ -438,7 +436,7 @@
s.clear();
Transaction tx = s.beginTransaction();
- QueryParser parser = new QueryParser( "dept", new StandardAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "dept", SearchTestCase.standardAnalyzer );
Query query = parser.parse( "dept:ITech" );
org.hibernate.search.FullTextQuery hibQuery = s.createFullTextQuery( query, Employee.class );
@@ -496,7 +494,7 @@
tx.commit();
s.clear();
tx = s.beginTransaction();
- QueryParser parser = new QueryParser( "title", new StopAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "title", SearchTestCase.stopAnalyzer );
Query query = parser.parse( "summary:Festina" );
org.hibernate.Query hibQuery = s.createFullTextQuery( query, Clock.class, Book.class );
@@ -552,7 +550,7 @@
tx.commit();
s.clear();
tx = s.beginTransaction();
- QueryParser parser = new QueryParser( "title", new StopAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "title", SearchTestCase.stopAnalyzer );
Query query = parser.parse( "summary:Festina" );
org.hibernate.Query hibQuery = s.createFullTextQuery( query, Book.class );
@@ -585,7 +583,7 @@
s.clear();
Transaction tx = s.beginTransaction();
- QueryParser parser = new QueryParser( "dept", new StandardAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "dept", SearchTestCase.standardAnalyzer );
Query query = parser.parse( "dept:XXX" );
org.hibernate.search.FullTextQuery hibQuery = s.createFullTextQuery( query, Employee.class );
@@ -616,7 +614,7 @@
s.clear();
Transaction tx = s.beginTransaction();
- QueryParser parser = new QueryParser( "dept", new StandardAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "dept", SearchTestCase.standardAnalyzer );
Query query = parser.parse( "dept:XXX" );
org.hibernate.search.FullTextQuery hibQuery = s.createFullTextQuery( query, Employee.class );
@@ -639,7 +637,7 @@
s.clear();
Transaction tx = s.beginTransaction();
- QueryParser parser = new QueryParser( "dept", new StandardAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "dept", SearchTestCase.standardAnalyzer );
Query query = parser.parse( "dept:XXX" );
org.hibernate.search.FullTextQuery hibQuery = s.createFullTextQuery( query, Employee.class );
@@ -673,7 +671,7 @@
}
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[] {
Book.class,
AlternateBook.class,
Modified: search/trunk/src/test/java/org/hibernate/search/test/query/MultiClassesQueryLoaderTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/query/MultiClassesQueryLoaderTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/query/MultiClassesQueryLoaderTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -34,7 +34,6 @@
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.apache.lucene.queryParser.QueryParser;
-import org.apache.lucene.analysis.KeywordAnalyzer;
import org.apache.lucene.search.Query;
/**
@@ -56,7 +55,7 @@
statement.close();
FullTextSession s = Search.getFullTextSession( sess );
tx = s.beginTransaction();
- QueryParser parser = new QueryParser( "title", new KeywordAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "title", SearchTestCase.keywordAnalyzer );
Query query = parser.parse( "name:moo" );
FullTextQuery hibQuery = s.createFullTextQuery( query, Author.class, Music.class );
List result = hibQuery.list();
@@ -70,7 +69,7 @@
s.close();
}
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[] {
Author.class,
Music.class
Modified: search/trunk/src/test/java/org/hibernate/search/test/query/ProjectionQueryTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/query/ProjectionQueryTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/query/ProjectionQueryTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -30,12 +30,9 @@
import java.util.Map;
import java.util.Date;
-import org.apache.lucene.analysis.StopAnalyzer;
-import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.Query;
-
import org.hibernate.ScrollableResults;
import org.hibernate.Session;
import org.hibernate.Transaction;
@@ -65,7 +62,7 @@
s.clear();
Transaction tx = s.beginTransaction();
- QueryParser parser = new QueryParser( "dept", new StandardAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "dept", SearchTestCase.standardAnalyzer );
Query query = parser.parse( "dept:ITech" );
org.hibernate.search.FullTextQuery hibQuery = s.createFullTextQuery( query, Employee.class );
hibQuery.setProjection( FullTextQuery.OBJECT_CLASS );
@@ -88,7 +85,7 @@
Transaction tx;
s.clear();
tx = s.beginTransaction();
- QueryParser parser = new QueryParser( "dept", new StandardAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "dept", SearchTestCase.standardAnalyzer );
Query query = parser.parse( "dept:ITech" );
org.hibernate.search.FullTextQuery hibQuery = s.createFullTextQuery( query, Employee.class );
@@ -154,7 +151,7 @@
Transaction tx;
s.clear();
tx = s.beginTransaction();
- QueryParser parser = new QueryParser( "dept", new StandardAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "dept", SearchTestCase.standardAnalyzer );
Query query = parser.parse( "dept:ITech" );
org.hibernate.search.FullTextQuery hibQuery = s.createFullTextQuery( query, Employee.class );
@@ -181,7 +178,7 @@
Transaction tx;
s.clear();
tx = s.beginTransaction();
- QueryParser parser = new QueryParser( "dept", new StandardAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "dept", SearchTestCase.standardAnalyzer );
Query query = parser.parse( "dept:ITech" );
org.hibernate.search.FullTextQuery hibQuery = s.createFullTextQuery( query, Employee.class );
@@ -254,7 +251,7 @@
Transaction tx;
s.clear();
tx = s.beginTransaction();
- QueryParser parser = new QueryParser( "dept", new StandardAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "dept", SearchTestCase.standardAnalyzer );
Query query = parser.parse( "dept:ITech" );
org.hibernate.search.FullTextQuery hibQuery = s.createFullTextQuery( query, Employee.class );
@@ -292,7 +289,7 @@
Transaction tx;
s.clear();
tx = s.beginTransaction();
- QueryParser parser = new QueryParser( "dept", new StandardAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "dept", SearchTestCase.standardAnalyzer );
Query query = parser.parse( "dept:Accounting" );
org.hibernate.search.FullTextQuery hibQuery = s.createFullTextQuery( query, Employee.class );
@@ -356,7 +353,7 @@
Transaction tx;
s.clear();
tx = s.beginTransaction();
- QueryParser parser = new QueryParser( "dept", new StandardAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "dept", SearchTestCase.standardAnalyzer );
Query query = parser.parse( "dept:Accounting" );
org.hibernate.search.FullTextQuery hibQuery = s.createFullTextQuery( query, Employee.class );
@@ -430,7 +427,7 @@
tx.commit();
s.clear();
tx = s.beginTransaction();
- QueryParser parser = new QueryParser( "title", new StopAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "title", SearchTestCase.stopAnalyzer );
Query query = parser.parse( "summary:Festina" );
org.hibernate.search.FullTextQuery hibQuery = s.createFullTextQuery( query, Book.class );
@@ -489,7 +486,7 @@
s.close();
}
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[] {
Book.class,
Author.class,
Modified: search/trunk/src/test/java/org/hibernate/search/test/query/QueryLoaderTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/query/QueryLoaderTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/query/QueryLoaderTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -26,7 +26,6 @@
import java.util.List;
-import org.apache.lucene.analysis.KeywordAnalyzer;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.Query;
import org.hibernate.Session;
@@ -88,7 +87,7 @@
FullTextSession s = Search.getFullTextSession( sess );
tx = s.beginTransaction();
- QueryParser parser = new QueryParser( "title", new KeywordAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "title", SearchTestCase.keywordAnalyzer );
Query query = parser.parse( "title:moo" );
FullTextQuery hibQuery = s.createFullTextQuery( query, Music.class );
List result = hibQuery.list();
@@ -110,7 +109,7 @@
s.close();
}
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[] {
Author.class,
Music.class
Modified: search/trunk/src/test/java/org/hibernate/search/test/query/QueryUnindexedEntityTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/query/QueryUnindexedEntityTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/query/QueryUnindexedEntityTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -24,10 +24,8 @@
*/
package org.hibernate.search.test.query;
-import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.Query;
-
import org.hibernate.HibernateException;
import org.hibernate.Transaction;
import org.hibernate.search.FullTextQuery;
@@ -53,7 +51,7 @@
tx.commit();
tx = s.beginTransaction();
- QueryParser parser = new QueryParser( "name", new StandardAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "name", SearchTestCase.standardAnalyzer );
Query query = parser.parse( "name:foo" );
FullTextQuery hibQuery = s.createFullTextQuery( query );
try {
@@ -68,7 +66,7 @@
s.close();
}
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[] {
Person.class,
};
Modified: search/trunk/src/test/java/org/hibernate/search/test/query/ScrollableResultsTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/query/ScrollableResultsTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/query/ScrollableResultsTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -80,7 +80,7 @@
public void testScrollingForward() {
Transaction tx = sess.beginTransaction();
TermQuery tq = new TermQuery( new Term( "summary", "number") );
- Sort sort = new Sort( new SortField( "summary" ) );
+ Sort sort = new Sort( new SortField( "summary", SortField.STRING ) );
ScrollableResults scrollableResults = sess
.createFullTextQuery( tq, AlternateBook.class )
.setSort( sort )
@@ -115,7 +115,7 @@
public void testScrollingBackwards() {
Transaction tx = sess.beginTransaction();
TermQuery tq = new TermQuery( new Term( "summary", "number") );
- Sort sort = new Sort( new SortField( "summary" ) );
+ Sort sort = new Sort( new SortField( "summary", SortField.STRING ) );
ScrollableResults scrollableResults = sess
.createFullTextQuery( tq, AlternateBook.class )
.setSort( sort )
@@ -145,7 +145,7 @@
public void testResultsAreManaged() {
Transaction tx = sess.beginTransaction();
TermQuery tq = new TermQuery( new Term( "summary", "number") );
- Sort sort = new Sort( new SortField( "summary" ) );
+ Sort sort = new Sort( new SortField( "summary", SortField.STRING ) );
ScrollableResults scrollableResults = sess
.createFullTextQuery( tq, AlternateBook.class )
.setSort( sort )
Modified: search/trunk/src/test/java/org/hibernate/search/test/query/TermVectorTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/query/TermVectorTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/query/TermVectorTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -120,7 +120,7 @@
tx.commit();
}
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[]{
ElectricalProperties.class,
Employee.class
Modified: search/trunk/src/test/java/org/hibernate/search/test/query/boost/DynamicBoostedDescriptionLibrary.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/query/boost/DynamicBoostedDescriptionLibrary.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/query/boost/DynamicBoostedDescriptionLibrary.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -28,7 +28,6 @@
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
-import org.hibernate.search.annotations.Boost;
import org.hibernate.search.annotations.DocumentId;
import org.hibernate.search.annotations.Field;
import org.hibernate.search.annotations.Indexed;
Modified: search/trunk/src/test/java/org/hibernate/search/test/query/boost/DynamicBoostingTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/query/boost/DynamicBoostingTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/query/boost/DynamicBoostingTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -124,7 +124,7 @@
return score;
}
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[] {
DynamicBoostedDescriptionLibrary.class
};
Modified: search/trunk/src/test/java/org/hibernate/search/test/query/boost/FieldBoostTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/query/boost/FieldBoostTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/query/boost/FieldBoostTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -26,7 +26,6 @@
import java.util.List;
-import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.BooleanClause;
import org.apache.lucene.search.BooleanQuery;
@@ -53,8 +52,8 @@
fullTextSession.clear();
Transaction tx = fullTextSession.beginTransaction();
- QueryParser authorParser = new QueryParser( "author", new StandardAnalyzer() );
- QueryParser descParser = new QueryParser( "description", new StandardAnalyzer() );
+ QueryParser authorParser = new QueryParser( getTargetLuceneVersion(), "author", SearchTestCase.standardAnalyzer );
+ QueryParser descParser = new QueryParser( getTargetLuceneVersion(), "description", SearchTestCase.standardAnalyzer );
Query author = authorParser.parse( "Wells" );
Query desc = descParser.parse( "martians" );
@@ -91,8 +90,8 @@
fullTextSession.clear();
Transaction tx = fullTextSession.beginTransaction();
- QueryParser authorParser = new QueryParser( "author", new StandardAnalyzer() );
- QueryParser descParser = new QueryParser( "description", new StandardAnalyzer() );
+ QueryParser authorParser = new QueryParser( getTargetLuceneVersion(), "author", SearchTestCase.standardAnalyzer );
+ QueryParser descParser = new QueryParser( getTargetLuceneVersion(), "description", SearchTestCase.standardAnalyzer );
Query author = authorParser.parse( "Wells" );
Query desc = descParser.parse( "martians" );
@@ -129,8 +128,8 @@
fullTextSession.clear();
Transaction tx = fullTextSession.beginTransaction();
- QueryParser authorParser = new QueryParser( "author", new StandardAnalyzer() );
- QueryParser descParser = new QueryParser( "description", new StandardAnalyzer() );
+ QueryParser authorParser = new QueryParser( getTargetLuceneVersion(), "author", SearchTestCase.standardAnalyzer );
+ QueryParser descParser = new QueryParser( getTargetLuceneVersion(), "description", SearchTestCase.standardAnalyzer );
Query author = authorParser.parse( "Wells" );
Query desc = descParser.parse( "martians" );
@@ -211,7 +210,7 @@
tx.commit();
}
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[] {
BoostedDescriptionLibrary.class,
BoostedFieldDescriptionLibrary.class,
Modified: search/trunk/src/test/java/org/hibernate/search/test/query/criteria/MixedCriteriaTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/query/criteria/MixedCriteriaTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/query/criteria/MixedCriteriaTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -26,10 +26,8 @@
import java.util.List;
-import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.queryParser.MultiFieldQueryParser;
import org.apache.lucene.search.Query;
-
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;
@@ -54,8 +52,8 @@
Transaction tx = session.beginTransaction();
FullTextSession fullTextSession = Search.getFullTextSession( session );
- MultiFieldQueryParser parser = new MultiFieldQueryParser(
- new String[] { "kurztext" }, new StandardAnalyzer()
+ MultiFieldQueryParser parser = new MultiFieldQueryParser( getTargetLuceneVersion(),
+ new String[] { "kurztext" }, SearchTestCase.standardAnalyzer
);
Query query = parser.parse( "combi OR sport" );
@@ -78,8 +76,8 @@
Transaction tx = session.beginTransaction();
FullTextSession fullTextSession = Search.getFullTextSession( session );
- MultiFieldQueryParser parser = new MultiFieldQueryParser(
- new String[] { "kurztext" }, new StandardAnalyzer()
+ MultiFieldQueryParser parser = new MultiFieldQueryParser( getTargetLuceneVersion(),
+ new String[] { "kurztext" }, SearchTestCase.standardAnalyzer
);
Query query = parser.parse( "combi OR sport" );
@@ -102,8 +100,8 @@
Transaction tx = session.beginTransaction();
FullTextSession fullTextSession = Search.getFullTextSession( session );
- MultiFieldQueryParser parser = new MultiFieldQueryParser(
- new String[] { "kurztext" }, new StandardAnalyzer()
+ MultiFieldQueryParser parser = new MultiFieldQueryParser( getTargetLuceneVersion(),
+ new String[] { "kurztext" }, SearchTestCase.standardAnalyzer
);
Query query = parser.parse( "combi OR sport" );
@@ -143,7 +141,7 @@
}
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[] {
AbstractCar.class, CombiCar.class, SportCar.class, Bike.class
};
Modified: search/trunk/src/test/java/org/hibernate/search/test/query/explain/ExplanationTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/query/explain/ExplanationTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/query/explain/ExplanationTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -35,7 +35,6 @@
import org.hibernate.Transaction;
import org.apache.lucene.search.Query;
import org.apache.lucene.queryParser.MultiFieldQueryParser;
-import org.apache.lucene.analysis.standard.StandardAnalyzer;
/**
* @author Emmanuel Bernard
@@ -55,7 +54,8 @@
Map<String, Float> boosts = new HashMap<String, Float>(2);
boosts.put( "title", new Float(4) );
boosts.put( "description", new Float(1) );
- MultiFieldQueryParser parser = new MultiFieldQueryParser(new String[] {"title", "description"}, new StandardAnalyzer(), boosts);
+ MultiFieldQueryParser parser = new MultiFieldQueryParser( getTargetLuceneVersion(), new String[] {"title", "description"},
+ SearchTestCase.standardAnalyzer, boosts );
Query luceneQuery = parser.parse( "dark" );
FullTextQuery ftQuery = s.createFullTextQuery( luceneQuery, Dvd.class )
.setProjection( FullTextQuery.DOCUMENT_ID, FullTextQuery.EXPLANATION, FullTextQuery.THIS );
@@ -69,7 +69,7 @@
s.close();
}
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[] {
Dvd.class
};
Modified: search/trunk/src/test/java/org/hibernate/search/test/reader/ReaderPerfTestCase.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/reader/ReaderPerfTestCase.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/reader/ReaderPerfTestCase.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -31,7 +31,6 @@
import java.util.concurrent.Executors;
import org.apache.lucene.analysis.StopAnalyzer;
-import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.queryParser.MultiFieldQueryParser;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.queryParser.QueryParser;
@@ -70,7 +69,7 @@
}
@SuppressWarnings("unchecked")
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[] {
Detective.class,
Suspect.class
@@ -144,9 +143,9 @@
public void run() {
Session s = sf.openSession();
Transaction tx = s.beginTransaction();
- QueryParser parser = new MultiFieldQueryParser(
+ QueryParser parser = new MultiFieldQueryParser( getTargetLuceneVersion(),
new String[] { "name", "physicalDescription", "suspectCharge" },
- new StandardAnalyzer()
+ SearchTestCase.standardAnalyzer
);
FullTextQuery query = getQuery( "John Doe", parser, s );
assertTrue( query.getResultSize() != 0 );
@@ -207,9 +206,9 @@
public void run() {
Session s = sf.openSession();
Transaction tx = s.beginTransaction();
- QueryParser parser = new MultiFieldQueryParser(
+ QueryParser parser = new MultiFieldQueryParser( getTargetLuceneVersion(),
new String[] { "name", "physicalDescription", "suspectCharge" },
- new StandardAnalyzer()
+ SearchTestCase.standardAnalyzer
);
FullTextQuery query = getQuery( "John Doe", parser, s );
assertTrue( query.getResultSize() != 0 );
Modified: search/trunk/src/test/java/org/hibernate/search/test/reader/functionality/FilterOnDirectoryTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/reader/functionality/FilterOnDirectoryTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/reader/functionality/FilterOnDirectoryTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -84,7 +84,7 @@
cfg.setProperty( Environment.READER_STRATEGY, SharingBufferReaderProvider.class.getName() );
}
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[] {
Detective.class,
Suspect.class
Modified: search/trunk/src/test/java/org/hibernate/search/test/reader/functionality/TestableSharingBufferReaderProvider.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/reader/functionality/TestableSharingBufferReaderProvider.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/reader/functionality/TestableSharingBufferReaderProvider.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -189,11 +189,6 @@
}
@Override
- protected void doCommit() {
- throw new UnsupportedOperationException();
- }
-
- @Override
protected void doDelete(int docNum) {
throw new UnsupportedOperationException();
}
@@ -293,6 +288,16 @@
throw new UnsupportedOperationException();
}
+// @Override not defined in Lucene 2.9, added in 3.0
+ protected void doCommit(Map<String, String> commitUserData) {
+ throw new UnsupportedOperationException();
+ }
+
+// @Override not defined in Lucene 3.0, existed before
+ protected void doCommit() throws IOException {
+ throw new UnsupportedOperationException();
+ }
+
}
}
Modified: search/trunk/src/test/java/org/hibernate/search/test/reader/performance/AbstractActivity.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/reader/performance/AbstractActivity.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/reader/performance/AbstractActivity.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -27,7 +27,6 @@
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.atomic.AtomicInteger;
-import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.queryParser.MultiFieldQueryParser;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.queryParser.QueryParser;
@@ -38,6 +37,7 @@
import org.hibernate.search.FullTextQuery;
import org.hibernate.search.FullTextSession;
import org.hibernate.search.Search;
+import org.hibernate.search.test.SearchTestCase;
/**
* @author Sanne Grinovero
@@ -47,9 +47,9 @@
private final ThreadLocal<QueryParser> parsers = new ThreadLocal<QueryParser>(){
@Override
protected QueryParser initialValue(){
- return new MultiFieldQueryParser(
+ return new MultiFieldQueryParser( SearchTestCase.getTargetLuceneVersion(),
new String[] {"name", "physicalDescription", "suspectCharge"},
- new StandardAnalyzer() );
+ SearchTestCase.standardAnalyzer );
}
};
Modified: search/trunk/src/test/java/org/hibernate/search/test/reader/performance/ReaderPerformance.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/reader/performance/ReaderPerformance.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/reader/performance/ReaderPerformance.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -73,7 +73,7 @@
private void buildBigIndex() throws InterruptedException, CorruptIndexException, LockObtainFailedException, IOException {
System.out.println( "Going to create fake index..." );
- FSDirectory directory = FSDirectory.getDirectory(new File(getBaseIndexDir(), Detective.class.getCanonicalName()));
+ FSDirectory directory = FSDirectory.open(new File(getBaseIndexDir(), Detective.class.getCanonicalName()));
IndexWriter.MaxFieldLength fieldLength = new IndexWriter.MaxFieldLength( IndexWriter.DEFAULT_MAX_FIELD_LENGTH );
IndexWriter iw = new IndexWriter( directory, new SimpleAnalyzer(), true, fieldLength );
IndexFillRunnable filler = new IndexFillRunnable( iw );
@@ -90,7 +90,7 @@
}
@SuppressWarnings("unchecked")
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[] {
Detective.class,
Suspect.class
Modified: search/trunk/src/test/java/org/hibernate/search/test/session/MassIndexTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/session/MassIndexTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/session/MassIndexTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -77,7 +77,7 @@
tx.commit();
s.clear();
tx = s.beginTransaction();
- QueryParser parser = new QueryParser( "id", new StopAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "id", SearchTestCase.stopAnalyzer );
List result = s.createFullTextQuery( parser.parse( "body:create" ) ).list();
assertEquals( 14, result.size() );
for (Object object : result) {
@@ -105,7 +105,7 @@
//check non created object does get found!!1
s = new FullTextSessionImpl( openSession() );
tx = s.beginTransaction();
- QueryParser parser = new QueryParser( "id", new StopAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "id", SearchTestCase.stopAnalyzer );
List result = s.createFullTextQuery( parser.parse( "body:create" ) ).list();
assertEquals( 0, result.size() );
tx.commit();
@@ -126,7 +126,7 @@
s = new FullTextSessionImpl( openSession() );
tx = s.beginTransaction();
- parser = new QueryParser( "id", new StopAnalyzer() );
+ parser = new QueryParser( getTargetLuceneVersion(), "id", SearchTestCase.stopAnalyzer );
result = s.createFullTextQuery( parser.parse( "body:write" ) ).list();
assertEquals( 0, result.size() );
result = s.createCriteria( Email.class ).list();
@@ -217,7 +217,7 @@
cfg.setProperty( Environment.ANALYZER_CLASS, StopAnalyzer.class.getName() );
}
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[] {
Email.class,
Entite.class,
Modified: search/trunk/src/test/java/org/hibernate/search/test/session/MassIndexUsingManualFlushTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/session/MassIndexUsingManualFlushTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/session/MassIndexUsingManualFlushTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -74,7 +74,7 @@
tx.commit();
s.clear();
tx = s.beginTransaction();
- QueryParser parser = new QueryParser( "id", new StopAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "id", SearchTestCase.stopAnalyzer );
List result = s.createFullTextQuery( parser.parse( "body:create" ) ).list();
assertEquals( 14, result.size() );
for (Object object : result) {
@@ -89,7 +89,7 @@
cfg.setProperty( Environment.ANALYZER_CLASS, StopAnalyzer.class.getName() );
}
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[] {
Email.class,
Domain.class
Modified: search/trunk/src/test/java/org/hibernate/search/test/session/OptimizeTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/session/OptimizeTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/session/OptimizeTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -65,7 +65,7 @@
//check non indexed object get indexed by s.index
s = new FullTextSessionImpl( openSession() );
tx = s.beginTransaction();
- QueryParser parser = new QueryParser( "id", new StopAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "id", SearchTestCase.stopAnalyzer );
int result = s.createFullTextQuery( parser.parse( "body:wrote" ) ).getResultSize();
assertEquals( 2000, result );
s.createQuery( "delete " + Email.class.getName() ).executeUpdate();
@@ -101,7 +101,7 @@
}
@SuppressWarnings("unchecked")
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[] {
Email.class,
Domain.class
Modified: search/trunk/src/test/java/org/hibernate/search/test/session/SessionTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/session/SessionTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/session/SessionTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -91,7 +91,7 @@
}
}
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[] {
Email.class,
Domain.class
Modified: search/trunk/src/test/java/org/hibernate/search/test/shards/CustomerShardingStrategyTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/shards/CustomerShardingStrategyTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/shards/CustomerShardingStrategyTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -70,7 +70,7 @@
// create a dummy document for the same customerID, and make sure the shard it would be
// indexed on matches the shard returned by getDirectoryProvidersForQuery()
Document document = new Document();
- document.add(new Field("customerID", "5", Field.Store.NO, Field.Index.UN_TOKENIZED));
+ document.add(new Field("customerID", "5", Field.Store.NO, Field.Index.NOT_ANALYZED));
assertTrue(providers[0].equals(
shardStrategy.getDirectoryProviderForAddition(null, null, null, document)
Modified: search/trunk/src/test/java/org/hibernate/search/test/shards/DirectoryProviderForQueryTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/shards/DirectoryProviderForQueryTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/shards/DirectoryProviderForQueryTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -26,7 +26,6 @@
import java.util.List;
-import org.apache.lucene.analysis.StopAnalyzer;
import org.apache.lucene.queryParser.QueryParser;
import org.hibernate.Session;
import org.hibernate.Transaction;
@@ -72,7 +71,7 @@
tx = s.beginTransaction();
FullTextSession fts = Search.getFullTextSession( s );
- QueryParser parser = new QueryParser("id", new StopAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "id", SearchTestCase.stopAnalyzer );
FullTextQuery fullTextQuery = fts.createFullTextQuery( parser.parse( "body:message" ) );
List results = fullTextQuery.list();
@@ -88,7 +87,7 @@
}
@SuppressWarnings("unchecked")
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[] {
Email.class
};
Modified: search/trunk/src/test/java/org/hibernate/search/test/shards/ShardsTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/shards/ShardsTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/shards/ShardsTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -41,6 +41,7 @@
import org.hibernate.Transaction;
import org.apache.lucene.analysis.StopAnalyzer;
import org.apache.lucene.queryParser.QueryParser;
+import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.TermDocs;
import org.apache.lucene.index.Term;
@@ -50,7 +51,6 @@
*/
public class ShardsTest extends SearchTestCase {
-
protected void configure(Configuration cfg) {
super.configure( cfg );
cfg.setProperty( "hibernate.search.default.directory_provider", FSDirectoryProvider.class.getName() );
@@ -98,7 +98,7 @@
tx = s.beginTransaction();
FullTextSession fts = Search.getFullTextSession( s );
- QueryParser parser = new QueryParser("id", new StopAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "id", SearchTestCase.stopAnalyzer );
List results = fts.createFullTextQuery( parser.parse( "name:mouse OR name:bear" ) ).list();
assertEquals( "Either double insert, single update, or query fails with shards", 2, results.size() );
@@ -127,24 +127,36 @@
s.clear();
- IndexReader reader = IndexReader.open( new File( getBaseIndexDir(), "Animal00" ) );
+ FSDirectory animal00Directory = FSDirectory.open( new File( getBaseIndexDir(), "Animal00" ) );
try {
- int num = reader.numDocs();
- assertEquals( 1, num );
+ IndexReader reader = IndexReader.open( animal00Directory );
+ try {
+ int num = reader.numDocs();
+ assertEquals( 1, num );
+ }
+ finally {
+ reader.close();
+ }
}
finally {
- reader.close();
+ animal00Directory.close();
}
- reader = IndexReader.open( new File( getBaseIndexDir(), "Animal.1" ) );
+
+ FSDirectory animal01Directory = FSDirectory.open( new File( getBaseIndexDir(), "Animal.1" ) );
try {
- int num = reader.numDocs();
- assertEquals( 1, num );
+ IndexReader reader = IndexReader.open( animal01Directory );
+ try {
+ int num = reader.numDocs();
+ assertEquals( 1, num );
+ }
+ finally {
+ reader.close();
+ }
}
finally {
- reader.close();
+ animal01Directory.close();
}
-
tx = s.beginTransaction();
a = (Animal) s.get(Animal.class, 1);
a.setName( "Mouse" );
@@ -152,22 +164,28 @@
s.clear();
- reader = IndexReader.open( new File( getBaseIndexDir(), "Animal.1" ) );
+ animal01Directory = FSDirectory.open( new File( getBaseIndexDir(), "Animal.1" ) );
try {
- int num = reader.numDocs();
- assertEquals( 1, num );
- TermDocs docs = reader.termDocs( new Term( "name", "mouse" ) );
- assertTrue( docs.next() );
- org.apache.lucene.document.Document doc = reader.document( docs.doc() );
- assertFalse( docs.next() );
+ IndexReader reader = IndexReader.open( animal01Directory );
+ try {
+ int num = reader.numDocs();
+ assertEquals( 1, num );
+ TermDocs docs = reader.termDocs( new Term( "name", "mouse" ) );
+ assertTrue( docs.next() );
+ org.apache.lucene.document.Document doc = reader.document( docs.doc() );
+ assertFalse( docs.next() );
+ }
+ finally {
+ reader.close();
+ }
}
finally {
- reader.close();
+ animal01Directory.close();
}
tx = s.beginTransaction();
FullTextSession fts = Search.getFullTextSession( s );
- QueryParser parser = new QueryParser("id", new StopAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "id", SearchTestCase.stopAnalyzer );
List results = fts.createFullTextQuery( parser.parse( "name:mouse OR name:bear" ) ).list();
assertEquals( "Either double insert, single update, or query fails with shards", 2, results.size() );
@@ -196,7 +214,7 @@
}
@SuppressWarnings("unchecked")
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[] {
Animal.class,
Furniture.class
Modified: search/trunk/src/test/java/org/hibernate/search/test/similarity/SimilarityTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/similarity/SimilarityTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/similarity/SimilarityTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -80,7 +80,7 @@
}
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[] {
Trash.class,
Can.class
Modified: search/trunk/src/test/java/org/hibernate/search/test/util/textbuilder/WordDictionary.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/util/textbuilder/WordDictionary.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/util/textbuilder/WordDictionary.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -24,6 +24,7 @@
*/
package org.hibernate.search.test.util.textbuilder;
+import java.io.Serializable;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Random;
@@ -53,7 +54,7 @@
gaussFactor = ((double)maxSize +1 ) / 4d ;
}
- private static class StringLengthComparator implements Comparator<String> {
+ private static class StringLengthComparator implements Comparator<String>, Serializable {
public int compare(String o1, String o2) {
return o1.length()-o2.length();
Modified: search/trunk/src/test/java/org/hibernate/search/test/worker/ConcurrencyTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/worker/ConcurrencyTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/worker/ConcurrencyTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -69,7 +69,7 @@
}
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[] {
Drink.class,
Food.class
Modified: search/trunk/src/test/java/org/hibernate/search/test/worker/WorkerTestCase.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/worker/WorkerTestCase.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/worker/WorkerTestCase.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -124,7 +124,7 @@
s = sf.openSession();
tx = s.beginTransaction();
FullTextSession fts = new FullTextSessionImpl( s );
- QueryParser parser = new QueryParser( "id", new StopAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "id", SearchTestCase.stopAnalyzer );
Query query;
try {
query = parser.parse( "name:emmanuel2" );
@@ -198,7 +198,7 @@
}
@SuppressWarnings("unchecked")
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[]{
Employee.class,
Employer.class
Modified: search/trunk/src/test/java/org/hibernate/search/test/worker/duplication/WorkDuplicationTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/worker/duplication/WorkDuplicationTest.java 2010-02-08 21:28:05 UTC (rev 18736)
+++ search/trunk/src/test/java/org/hibernate/search/test/worker/duplication/WorkDuplicationTest.java 2010-02-08 21:35:12 UTC (rev 18737)
@@ -27,13 +27,11 @@
import java.util.List;
import java.util.ArrayList;
-import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.TopDocs;
-
import org.hibernate.Transaction;
import org.hibernate.search.FullTextQuery;
import org.hibernate.search.FullTextSession;
@@ -81,7 +79,7 @@
// search if the record made it into the index
tx = s.beginTransaction();
String searchQuery = "Joe";
- QueryParser parser = new QueryParser( "Content", new StandardAnalyzer() );
+ QueryParser parser = new QueryParser( getTargetLuceneVersion(), "Content", SearchTestCase.standardAnalyzer );
Query luceneQuery = parser.parse( searchQuery );
FullTextQuery query = s.createFullTextQuery( luceneQuery );
List results = query.list();
@@ -154,7 +152,7 @@
}
- protected Class[] getMappings() {
+ protected Class<?>[] getMappings() {
return new Class[] { Person.class, EmailAddress.class, SpecialPerson.class };
}
}
16 years, 2 months
Hibernate SVN: r18736 - core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e1/a.
by hibernate-commits@lists.jboss.org
Author: steve.ebersole(a)jboss.com
Date: 2010-02-08 16:28:05 -0500 (Mon, 08 Feb 2010)
New Revision: 18736
Modified:
core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e1/a/Dependent.java
core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e1/a/DependentId.java
core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e1/a/DerivedIdentitySimpleParentIdClassDepTest.java
core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e1/a/Employee.java
Log:
HHH-4704 - Pass session into EntityTuplizer#setIdentifier
Modified: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e1/a/Dependent.java
===================================================================
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e1/a/Dependent.java 2010-02-08 21:27:25 UTC (rev 18735)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e1/a/Dependent.java 2010-02-08 21:28:05 UTC (rev 18736)
@@ -1,24 +1,23 @@
package org.hibernate.test.annotations.derivedidentities.e1.a;
+import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.IdClass;
import javax.persistence.ManyToOne;
+import org.hibernate.annotations.Cascade;
+
/**
* @author Emmanuel Bernard
*/
@Entity
@IdClass(DependentId.class)
public class Dependent {
- @Id
- String name;
-
+ private String name;
// id attribute mapped by join column default
- @Id
- @ManyToOne
- Employee emp;
+ private Employee emp;
public Dependent() {
}
@@ -27,4 +26,24 @@
this.name = name;
this.emp = emp;
}
+
+ @Id
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ @Id
+ @ManyToOne( cascade = CascadeType.PERSIST )
+ @Cascade( org.hibernate.annotations.CascadeType.SAVE_UPDATE )
+ public Employee getEmp() {
+ return emp;
+ }
+
+ public void setEmp(Employee emp) {
+ this.emp = emp;
+ }
}
Modified: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e1/a/DependentId.java
===================================================================
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e1/a/DependentId.java 2010-02-08 21:27:25 UTC (rev 18735)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e1/a/DependentId.java 2010-02-08 21:28:05 UTC (rev 18736)
@@ -16,4 +16,20 @@
this.name = name;
this.emp = emp;
}
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public long getEmp() {
+ return emp;
+ }
+
+ public void setEmp(long emp) {
+ this.emp = emp;
+ }
}
\ No newline at end of file
Modified: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e1/a/DerivedIdentitySimpleParentIdClassDepTest.java
===================================================================
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e1/a/DerivedIdentitySimpleParentIdClassDepTest.java 2010-02-08 21:27:25 UTC (rev 18735)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e1/a/DerivedIdentitySimpleParentIdClassDepTest.java 2010-02-08 21:28:05 UTC (rev 18736)
@@ -1,15 +1,13 @@
package org.hibernate.test.annotations.derivedidentities.e1.a;
import org.hibernate.Session;
-import org.hibernate.junit.FailureExpected;
import org.hibernate.test.annotations.TestCase;
import org.hibernate.test.util.SchemaUtil;
/**
* @author Emmanuel Bernard
*/
-public class
- DerivedIdentitySimpleParentIdClassDepTest extends TestCase {
+public class DerivedIdentitySimpleParentIdClassDepTest extends TestCase {
public void testManyToOne() throws Exception {
assertTrue( SchemaUtil.isColumnPresent( "Dependent", "emp_empId", getCfg() ) );
@@ -17,28 +15,22 @@
Session s = openSession();
s.getTransaction().begin();
- Employee e = new Employee();
- e.empId = 1;
- e.empName = "Emmanuel";
- e.nickname = "Manu";
- s.persist( e );
- Dependent d = new Dependent();
- d.emp = e;
- d.name = "Doggy";
- d.emp = e;
+ Employee e = new Employee( 1L, "Emmanuel", "Manu" );
+ Dependent d = new Dependent( "Doggy", e );
s.persist( d );
+ s.persist( e );
s.getTransaction().commit();
s.close();
s = openSession();
s.getTransaction().begin();
- DependentId dId = new DependentId( d.name, d.emp.empId );
+ DependentId dId = new DependentId( d.getName(), d.getEmp().empId );
d = (Dependent) s.get( Dependent.class, dId );
- assertEquals( e.empId, d.emp.empId );
- assertEquals( e.empName, d.emp.empName );
- assertEquals( e.nickname, d.emp.nickname );
+ assertEquals( e.empId, d.getEmp().empId );
+ assertEquals( e.empName, d.getEmp().empName );
+ assertEquals( e.nickname, d.getEmp().nickname );
s.delete( d );
- s.delete( d.emp );
+ s.delete( d.getEmp() );
s.getTransaction().commit();
s.close();
}
Modified: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e1/a/Employee.java
===================================================================
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e1/a/Employee.java 2010-02-08 21:27:25 UTC (rev 18735)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e1/a/Employee.java 2010-02-08 21:28:05 UTC (rev 18736)
@@ -8,9 +8,42 @@
*/
@Entity
public class Employee {
- @Id
long empId;
String empName;
String nickname;
+
+ public Employee() {
+ }
+
+ public Employee(long empId, String empName, String nickname) {
+ this.empId = empId;
+ this.empName = empName;
+ this.nickname = nickname;
+ }
+
+ @Id
+ public long getEmpId() {
+ return empId;
+ }
+
+ public void setEmpId(long empId) {
+ this.empId = empId;
+ }
+
+ public String getEmpName() {
+ return empName;
+ }
+
+ public void setEmpName(String empName) {
+ this.empName = empName;
+ }
+
+ public String getNickname() {
+ return nickname;
+ }
+
+ public void setNickname(String nickname) {
+ this.nickname = nickname;
+ }
}
\ No newline at end of file
16 years, 2 months
Hibernate SVN: r18735 - search/trunk/src/test/java/org/hibernate/search/test.
by hibernate-commits@lists.jboss.org
Author: sannegrinovero
Date: 2010-02-08 16:27:25 -0500 (Mon, 08 Feb 2010)
New Revision: 18735
Modified:
search/trunk/src/test/java/org/hibernate/search/test/FSDirectoryTest.java
Log:
fixing embarassing old bug in test, uncovered by previous commit 18729
Modified: search/trunk/src/test/java/org/hibernate/search/test/FSDirectoryTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/FSDirectoryTest.java 2010-02-08 20:58:20 UTC (rev 18734)
+++ search/trunk/src/test/java/org/hibernate/search/test/FSDirectoryTest.java 2010-02-08 21:27:25 UTC (rev 18735)
@@ -80,11 +80,11 @@
try {
int num = reader.numDocs();
assertEquals( 1, num );
- TermDocs docs = reader.termDocs( new Term( "Abstract", "Hibernate" ) );
+ TermDocs docs = reader.termDocs( new Term( "Abstract", "hibernate" ) );
assertTrue( docs.next() );
org.apache.lucene.document.Document doc = reader.document( docs.doc() );
assertFalse( docs.next() );
- docs = reader.termDocs( new Term( "Title", "Action" ) );
+ docs = reader.termDocs( new Term( "title", "action" ) );
assertTrue( docs.next() );
doc = reader.document( docs.doc() );
assertFalse( docs.next() );
16 years, 2 months
Hibernate SVN: r18734 - in jpamodelgen/trunk/src: main/java/org/hibernate/jpamodelgen/annotation and 16 other directories.
by hibernate-commits@lists.jboss.org
Author: hardy.ferentschik
Date: 2010-02-08 15:58:20 -0500 (Mon, 08 Feb 2010)
New Revision: 18734
Added:
jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/AccessTypeInformation.java
jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/util/StringUtil.java
jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/mixedmode/Car.java
jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/mixedmode/MixedConfigurationTest.java
jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/mixedmode/Truck.java
jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/mixedmode/Vehicle.java
jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/mixedmode/XmlMetaCompleteTest.java
jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/xmlmapped/IgnoreInvalidXmlTest.java
jpamodelgen/trunk/src/test/resources/org/hibernate/jpamodelgen/test/accesstype/
jpamodelgen/trunk/src/test/resources/org/hibernate/jpamodelgen/test/accesstype/orm.xml
jpamodelgen/trunk/src/test/resources/org/hibernate/jpamodelgen/test/mixedmode/car.xml
jpamodelgen/trunk/src/test/resources/org/hibernate/jpamodelgen/test/mixedmode/truck.xml
jpamodelgen/trunk/src/test/resources/org/hibernate/jpamodelgen/test/xmlmapped/jpa1-orm.xml
jpamodelgen/trunk/src/test/resources/org/hibernate/jpamodelgen/test/xmlmapped/malformed-mapping.xml
jpamodelgen/trunk/src/test/resources/org/hibernate/jpamodelgen/test/xmlmapped/non-existend-class.xml
jpamodelgen/trunk/src/test/resources/org/hibernate/jpamodelgen/test/xmlmapped/persistence.xml
Removed:
jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/mixedmode/MixedModeMappingTest.java
jpamodelgen/trunk/src/test/resources/META-INF/dummy.xml
jpamodelgen/trunk/src/test/resources/META-INF/jpa1-orm.xml
jpamodelgen/trunk/src/test/resources/META-INF/malformed-mapping-xml.xml
jpamodelgen/trunk/src/test/resources/META-INF/orm.xml
Modified:
jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/Context.java
jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/ImportContextImpl.java
jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/JPAMetaModelEntityProcessor.java
jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/annotation/AnnotationMetaAttribute.java
jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/annotation/AnnotationMetaEntity.java
jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/util/TypeUtils.java
jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/xml/XmlMetaAttribute.java
jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/xml/XmlMetaEntity.java
jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/xml/XmlParser.java
jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/accesstype/AccessTypeTest.java
jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/accesstype/Order.java
jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/arraytype/ArrayTest.java
jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/arraytype/TemperatureSamples.java
jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/elementcollection/ElementCollectionTest.java
jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/generics/GenericsTest.java
jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/inheritance/InheritanceTest.java
jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/rawtypes/RawTypesTest.java
jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/util/CompilationTest.java
jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/util/TestUtil.java
jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/xmlmapped/LivingBeing.java
jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/xmlmapped/XmlMappingTest.java
jpamodelgen/trunk/src/test/resources/META-INF/persistence.xml
jpamodelgen/trunk/src/test/resources/org/hibernate/jpamodelgen/test/xmlmapped/mammal.xml
Log:
METAGEN-9
Added: jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/AccessTypeInformation.java
===================================================================
--- jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/AccessTypeInformation.java (rev 0)
+++ jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/AccessTypeInformation.java 2010-02-08 20:58:20 UTC (rev 18734)
@@ -0,0 +1,90 @@
+// $Id:$
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2009, Red Hat, Inc. and/or its affiliates, and individual contributors
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* Licensed 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.hibernate.jpamodelgen;
+
+import javax.persistence.AccessType;
+
+/**
+ * Encapsulates the access type information for a single class.
+ *
+ * @author Hardy Ferentschik
+ */
+public class AccessTypeInformation {
+ private final String fqcn;
+
+ /**
+ * Access type explicitly specified in xml or on an entity.
+ */
+ private AccessType explicitAccessType;
+
+ /**
+ * The default type for en entity. This type might change during the parsing/discovering process. The reason
+ * for that is the ability to mix and match xml and annotation configuration.
+ */
+ private AccessType defaultAccessType;
+
+ private static final AccessType DEFAULT_ACCESS_TYPE = AccessType.PROPERTY;
+
+ public AccessTypeInformation(String fqcn, AccessType explicitAccessType, AccessType defaultAccessType) {
+ this.fqcn = fqcn;
+ this.explicitAccessType = explicitAccessType;
+ this.defaultAccessType = defaultAccessType;
+ }
+
+ public boolean isAccessTypeResolved() {
+ return explicitAccessType != null || defaultAccessType != null;
+ }
+
+ public AccessType getAccessType() {
+ if ( explicitAccessType != null ) {
+ return explicitAccessType;
+ }
+ else if ( defaultAccessType != null ) {
+ return defaultAccessType;
+
+ }
+ else {
+ return DEFAULT_ACCESS_TYPE;
+ }
+ }
+
+ public void setDefaultAccessType(AccessType defaultAccessType) {
+ this.defaultAccessType = defaultAccessType;
+ }
+
+ public void setExplicitAccessType(AccessType explicitAccessType) {
+ this.explicitAccessType = explicitAccessType;
+ }
+
+ public AccessType getDefaultAccessType() {
+ return defaultAccessType;
+ }
+
+ @Override
+ public String toString() {
+ final StringBuilder sb = new StringBuilder();
+ sb.append( "AccessTypeInformation" );
+ sb.append( "{fqcn='" ).append( fqcn ).append( '\'' );
+ sb.append( ", explicitAccessType=" ).append( explicitAccessType );
+ sb.append( ", defaultAccessType=" ).append( defaultAccessType );
+ sb.append( '}' );
+ return sb.toString();
+ }
+}
+
+
Modified: jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/Context.java
===================================================================
--- jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/Context.java 2010-02-08 19:27:00 UTC (rev 18733)
+++ jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/Context.java 2010-02-08 20:58:20 UTC (rev 18734)
@@ -21,18 +21,15 @@
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.List;
import java.util.Map;
-import java.util.Set;
import javax.annotation.processing.ProcessingEnvironment;
import javax.lang.model.element.TypeElement;
+import javax.lang.model.util.Elements;
import javax.persistence.AccessType;
import javax.tools.Diagnostic;
-import org.hibernate.jpamodelgen.annotation.AnnotationMetaEntity;
import org.hibernate.jpamodelgen.model.MetaEntity;
-import org.hibernate.jpamodelgen.util.TypeUtils;
/**
* @author Max Andersen
@@ -44,24 +41,16 @@
private static final String DEFAULT_PERSISTENCE_XML_LOCATION = "/META-INF/persistence.xml";
private final Map<String, MetaEntity> metaEntities = new HashMap<String, MetaEntity>();
private final Map<String, MetaEntity> metaSuperclassAndEmbeddable = new HashMap<String, MetaEntity>();
+ private final Map<String, AccessTypeInformation> accessTypeInformation = new HashMap<String, AccessTypeInformation>();
private final ProcessingEnvironment pe;
private final boolean logDebug;
private final String persistenceXmlLocation;
private final List<String> ormXmlFiles;
-
- //used to cache access types
- private Map<TypeElement, AccessTypeHolder> accessTypes = new HashMap<TypeElement, AccessTypeHolder>();
- private Set<String> elementsAlreadyProcessed = new HashSet<String>();
-
private boolean isPersistenceUnitCompletelyXmlConfigured;
+ private AccessType persistenceUnitDefaultAccessType;
- private static class AccessTypeHolder {
- public AccessType elementAccessType;
- public AccessType hierarchyAccessType;
- }
-
public Context(ProcessingEnvironment pe) {
this.pe = pe;
@@ -134,59 +123,23 @@
metaSuperclassAndEmbeddable.put( fcqn, metaEntity );
}
- public void removeMetaSuperclassOrEmbeddable(String fcqn) {
- metaSuperclassAndEmbeddable.remove( fcqn );
- }
-
public Collection<MetaEntity> getMetaSuperclassOrEmbeddable() {
return metaSuperclassAndEmbeddable.values();
}
- public void addAccessType(TypeElement element, AccessType accessType) {
- AccessTypeHolder typeHolder = accessTypes.get( element );
- if ( typeHolder == null ) {
- typeHolder = new AccessTypeHolder();
- accessTypes.put( element, typeHolder );
- }
- typeHolder.elementAccessType = accessType;
+ public void addAccessTypeInformation(String fqcn, AccessTypeInformation info) {
+ accessTypeInformation.put( fqcn, info );
}
- public void addAccessTypeForHierarchy(TypeElement element, AccessType accessType) {
- AccessTypeHolder typeHolder = accessTypes.get( element );
- if ( typeHolder == null ) {
- typeHolder = new AccessTypeHolder();
- accessTypes.put( element, typeHolder );
- }
- typeHolder.hierarchyAccessType = accessType;
+ public AccessTypeInformation getAccessTypeInfo(String fqcn) {
+ return accessTypeInformation.get( fqcn );
}
- public AccessType getAccessType(TypeElement element) {
- final AccessTypeHolder typeHolder = accessTypes.get( element );
- return typeHolder != null ? typeHolder.elementAccessType : null;
+ public TypeElement getTypeElementForFullyQualifiedName(String fqcn) {
+ Elements elementUtils = pe.getElementUtils();
+ return elementUtils.getTypeElement( fqcn );
}
- public AccessType getDefaultAccessTypeForHierarchy(TypeElement element) {
- final AccessTypeHolder typeHolder = accessTypes.get( element );
- return typeHolder != null ? typeHolder.hierarchyAccessType : null;
- }
-
- public Set<String> getElementsAlreadyProcessed() {
- return elementsAlreadyProcessed;
- }
-
- //only process Embeddable or Superclass
- //does not work for Entity (risk of circularity)
-
- public void processElement(TypeElement element, AccessType defaultAccessTypeForHierarchy) {
- if ( elementsAlreadyProcessed.contains( element.getQualifiedName().toString() ) ) {
- logMessage( Diagnostic.Kind.OTHER, "Element already processed (ignoring): " + element );
- return;
- }
- ClassWriter.writeFile( new AnnotationMetaEntity( element, this, defaultAccessTypeForHierarchy ), this );
- TypeUtils.extractClosestRealTypeAsString( element.asType(), this );
- elementsAlreadyProcessed.add( element.getQualifiedName().toString() );
- }
-
public void logMessage(Diagnostic.Kind type, String message) {
if ( !logDebug && type.equals( Diagnostic.Kind.OTHER ) ) {
return;
@@ -201,4 +154,25 @@
public void setPersistenceUnitCompletelyXmlConfigured(boolean persistenceUnitCompletelyXmlConfigured) {
isPersistenceUnitCompletelyXmlConfigured = persistenceUnitCompletelyXmlConfigured;
}
+
+ public AccessType getPersistenceUnitDefaultAccessType() {
+ return persistenceUnitDefaultAccessType;
+ }
+
+ public void setPersistenceUnitDefaultAccessType(AccessType persistenceUnitDefaultAccessType) {
+ this.persistenceUnitDefaultAccessType = persistenceUnitDefaultAccessType;
+ }
+
+ @Override
+ public String toString() {
+ final StringBuilder sb = new StringBuilder();
+ sb.append( "Context" );
+ sb.append( "{accessTypeInformation=" ).append( accessTypeInformation );
+ sb.append( ", logDebug=" ).append( logDebug );
+ sb.append( ", isPersistenceUnitCompletelyXmlConfigured=" ).append( isPersistenceUnitCompletelyXmlConfigured );
+ sb.append( ", ormXmlFiles=" ).append( ormXmlFiles );
+ sb.append( ", persistenceXmlLocation='" ).append( persistenceXmlLocation ).append( '\'' );
+ sb.append( '}' );
+ return sb.toString();
+ }
}
Modified: jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/ImportContextImpl.java
===================================================================
--- jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/ImportContextImpl.java 2010-02-08 19:27:00 UTC (rev 18733)
+++ jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/ImportContextImpl.java 2010-02-08 20:58:20 UTC (rev 18734)
@@ -110,7 +110,7 @@
if ( inSamePackage( fqcn ) || ( imports.contains( pureFqcn ) && canBeSimple ) ) {
- result = unqualify( result ); // dequalify
+ result = unqualify( result ); // de-qualify
}
else if ( inJavaLang( fqcn ) ) {
result = result.substring( "java.lang.".length() );
Modified: jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/JPAMetaModelEntityProcessor.java
===================================================================
--- jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/JPAMetaModelEntityProcessor.java 2010-02-08 19:27:00 UTC (rev 18733)
+++ jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/JPAMetaModelEntityProcessor.java 2010-02-08 20:58:20 UTC (rev 18734)
@@ -94,6 +94,14 @@
return ALLOW_OTHER_PROCESSORS_TO_CLAIM_ANNOTATIONS;
}
+ if ( context.isPersistenceUnitCompletelyXmlConfigured() ) {
+ context.logMessage(
+ Diagnostic.Kind.OTHER,
+ "Skipping the processing of annotations since persistence unit is purely xml configured."
+ );
+ return ALLOW_OTHER_PROCESSORS_TO_CLAIM_ANNOTATIONS;
+ }
+
Set<? extends Element> elements = roundEnvironment.getRootElements();
for ( Element element : elements ) {
context.logMessage( Diagnostic.Kind.OTHER, "Processing " + element.toString() );
@@ -104,16 +112,11 @@
}
private void createMetaModelClasses() {
- for ( MetaEntity entity : context.getMetaEntities()) {
+ for ( MetaEntity entity : context.getMetaEntities() ) {
context.logMessage( Diagnostic.Kind.OTHER, "Writing meta model for " + entity );
ClassWriter.writeFile( entity, context );
}
- //process left over, in most cases is empty
- for ( String className : context.getElementsAlreadyProcessed() ) {
- context.removeMetaSuperclassOrEmbeddable( className );
- }
-
for ( MetaEntity entity : context.getMetaSuperclassOrEmbeddable() ) {
context.logMessage( Diagnostic.Kind.OTHER, "Writing meta model for " + entity );
ClassWriter.writeFile( entity, context );
@@ -159,7 +162,6 @@
}
else if ( TypeUtils.isAnnotationMirrorOfType( mirror, MappedSuperclass.class )
|| TypeUtils.isAnnotationMirrorOfType( mirror, Embeddable.class ) ) {
-
context.addMetaSuperclassOrEmbeddable( metaEntity.getQualifiedName(), metaEntity );
}
}
Modified: jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/annotation/AnnotationMetaAttribute.java
===================================================================
--- jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/annotation/AnnotationMetaAttribute.java 2010-02-08 19:27:00 UTC (rev 18733)
+++ jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/annotation/AnnotationMetaAttribute.java 2010-02-08 20:58:20 UTC (rev 18734)
@@ -71,4 +71,14 @@
public String getTypeDeclaration() {
return type;
}
+
+ @Override
+ public String toString() {
+ final StringBuilder sb = new StringBuilder();
+ sb.append( "AnnotationMetaAttribute" );
+ sb.append( "{element=" ).append( element );
+ sb.append( ", type='" ).append( type ).append( '\'' );
+ sb.append( '}' );
+ return sb.toString();
+ }
}
Modified: jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/annotation/AnnotationMetaEntity.java
===================================================================
--- jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/annotation/AnnotationMetaEntity.java 2010-02-08 19:27:00 UTC (rev 18733)
+++ jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/annotation/AnnotationMetaEntity.java 2010-02-08 20:58:20 UTC (rev 18734)
@@ -37,29 +37,24 @@
import javax.lang.model.util.ElementFilter;
import javax.lang.model.util.Elements;
import javax.lang.model.util.SimpleTypeVisitor6;
-import javax.persistence.Access;
import javax.persistence.AccessType;
import javax.persistence.ElementCollection;
-import javax.persistence.Embeddable;
-import javax.persistence.Embedded;
-import javax.persistence.EmbeddedId;
-import javax.persistence.Entity;
-import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.MapKeyClass;
-import javax.persistence.MappedSuperclass;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Transient;
import javax.tools.Diagnostic;
+import org.hibernate.jpamodelgen.AccessTypeInformation;
import org.hibernate.jpamodelgen.Context;
-import org.hibernate.jpamodelgen.model.ImportContext;
import org.hibernate.jpamodelgen.ImportContextImpl;
+import org.hibernate.jpamodelgen.MetaModelGenerationException;
+import org.hibernate.jpamodelgen.model.ImportContext;
import org.hibernate.jpamodelgen.model.MetaAttribute;
import org.hibernate.jpamodelgen.model.MetaEntity;
-import org.hibernate.jpamodelgen.MetaModelGenerationException;
+import org.hibernate.jpamodelgen.util.StringUtil;
import org.hibernate.jpamodelgen.util.TypeUtils;
/**
@@ -69,7 +64,6 @@
*/
public class AnnotationMetaEntity implements MetaEntity {
- private static final String DEFAULT_ANNOTATION_PARAMETER_NAME = "value";
static Map<String, String> COLLECTIONS = new HashMap<String, String>();
static {
@@ -82,21 +76,16 @@
private final TypeElement element;
private final ImportContext importContext;
private Context context;
- //used to propagate the access type of the root entity over to subclasses, superclasses and embeddable
- private AccessType defaultAccessTypeForHierarchy;
- private AccessType defaultAccessTypeForElement;
+ private List<MetaAttribute> members;
+ private AccessTypeInformation entityAccessTypeInfo;
public AnnotationMetaEntity(TypeElement element, Context context) {
this.element = element;
this.context = context;
importContext = new ImportContextImpl( getPackageName() );
+ init();
}
- public AnnotationMetaEntity(TypeElement element, Context context, AccessType accessType) {
- this( element, context );
- this.defaultAccessTypeForHierarchy = accessType;
- }
-
public Context getContext() {
return context;
}
@@ -115,28 +104,7 @@
}
public List<MetaAttribute> getMembers() {
- List<MetaAttribute> membersFound = new ArrayList<MetaAttribute>();
- final AccessType elementAccessType = getAccessTypeForElement();
-
- List<? extends Element> fieldsOfClass = ElementFilter.fieldsIn( element.getEnclosedElements() );
- addPersistentMembers( membersFound, elementAccessType, fieldsOfClass, AccessType.FIELD );
-
- List<? extends Element> methodsOfClass = ElementFilter.methodsIn( element.getEnclosedElements() );
- addPersistentMembers( membersFound, elementAccessType, methodsOfClass, AccessType.PROPERTY );
-
- //process superclasses
- for ( TypeElement superclass = TypeUtils.getSuperclassTypeElement( element );
- superclass != null;
- superclass = TypeUtils.getSuperclassTypeElement( superclass ) ) {
- if ( TypeUtils.containsAnnotation( superclass, Entity.class ) ) {
- break; //will be handled or has been handled already
- }
- else if ( TypeUtils.containsAnnotation( superclass, MappedSuperclass.class ) ) {
- //FIXME use the class default access type
- context.processElement( superclass, defaultAccessTypeForHierarchy );
- }
- }
- return membersFound;
+ return members;
}
@Override
@@ -144,191 +112,74 @@
return false;
}
- private void addPersistentMembers(
- List<MetaAttribute> membersFound,
- AccessType elementAccessType,
- List<? extends Element> membersOfClass,
- AccessType membersKind) {
- AccessType explicitAccessType;
- if ( elementAccessType == membersKind ) {
- //all membersKind considered
- explicitAccessType = null;
- }
- else {
- //use membersKind only if marked with @Access(membersKind)
- explicitAccessType = membersKind;
- }
+ private void addPersistentMembers(List<? extends Element> membersOfClass, AccessType membersKind) {
for ( Element memberOfClass : membersOfClass ) {
+ AccessType forcedAccessType = TypeUtils.determineAnnotationSpecifiedAccessType( memberOfClass );
+ if ( entityAccessTypeInfo.getAccessType() != membersKind && forcedAccessType == null ) {
+ continue;
+ }
- TypeVisitor visitor = new TypeVisitor( this, explicitAccessType );
+ if ( TypeUtils.containsAnnotation( memberOfClass, Transient.class )
+ || memberOfClass.getModifiers().contains( Modifier.TRANSIENT )
+ || memberOfClass.getModifiers().contains( Modifier.STATIC ) ) {
+ continue;
+ }
+
+ TypeVisitor visitor = new TypeVisitor( this );
AnnotationMetaAttribute result = memberOfClass.asType().accept( visitor, memberOfClass );
if ( result != null ) {
- membersFound.add( result );
+ members.add( result );
}
}
}
- private AccessType getAccessTypeForElement() {
-
- //get local strategy
- AccessType accessType = getAccessTypeForClass( element );
- if ( accessType == null ) {
- accessType = this.defaultAccessTypeForHierarchy;
- }
- if ( accessType == null ) {
- //we don't know if an entity go up
- //
- //superclasses are always treated after their entities
- //and their access type are discovered
- //FIXME is it really true if only the superclass is changed
- TypeElement superClass = element;
- do {
- superClass = TypeUtils.getSuperclassTypeElement( superClass );
- if ( superClass != null ) {
- if ( TypeUtils.containsAnnotation( superClass, Entity.class, MappedSuperclass.class ) ) {
- //FIXME make it work for XML
- AccessType superClassAccessType = getAccessTypeForClass( superClass );
- //we've reach the root entity and resolved Ids
- if ( superClassAccessType != null && defaultAccessTypeForHierarchy != null ) {
- break; //we've found it
- }
- }
- else {
- break; //neither @Entity nor @MappedSuperclass
- }
- }
- }
- while ( superClass != null );
- }
-
- if ( accessType == null ) {
- accessType = AccessType.PROPERTY; //default to property
- this.defaultAccessTypeForElement = accessType;
- }
- //this is a subclass so caching is OK
- //this.defaultAccessTypeForHierarchy = accessType;
- context.addAccessType( this.element, accessType );
- this.defaultAccessTypeForElement = accessType;
- return accessType;
+ @Override
+ public String toString() {
+ final StringBuilder sb = new StringBuilder();
+ sb.append( "AnnotationMetaEntity" );
+ sb.append( "{element=" ).append( element );
+ sb.append( ", members=" ).append( members );
+ sb.append( '}' );
+ return sb.toString();
}
- private AccessType getAccessTypeForClass(TypeElement searchedElement) {
- context.logMessage( Diagnostic.Kind.OTHER, "check class " + searchedElement );
- AccessType accessType = context.getAccessType( searchedElement );
+ private void init() {
+ members = new ArrayList<MetaAttribute>();
+ TypeUtils.determineAccessTypeForHierarchy( element, context );
+ entityAccessTypeInfo = context.getAccessTypeInfo( getQualifiedName() );
- if ( defaultAccessTypeForHierarchy == null ) {
- this.defaultAccessTypeForHierarchy = context.getDefaultAccessTypeForHierarchy( searchedElement );
- }
- if ( accessType != null ) {
- context.logMessage( Diagnostic.Kind.OTHER, "Found in cache" + searchedElement + ":" + accessType );
- return accessType;
- }
+ List<? extends Element> fieldsOfClass = ElementFilter.fieldsIn( element.getEnclosedElements() );
+ addPersistentMembers( fieldsOfClass, AccessType.FIELD );
- /**
- * when forcing access type, we can only override the defaultAccessTypeForHierarchy
- * if we are the entity root (identified by having @Id or @EmbeddedId
- */
- AccessType forcedAccessType = determineAnnotationSpecifiedAccessType( searchedElement );
- if ( forcedAccessType != null ) {
- context.logMessage( Diagnostic.Kind.OTHER, "access type " + searchedElement + ":" + forcedAccessType );
- context.addAccessType( searchedElement, forcedAccessType );
- }
+ List<? extends Element> methodsOfClass = ElementFilter.methodsIn( element.getEnclosedElements() );
+ addPersistentMembers( methodsOfClass, AccessType.PROPERTY );
+ }
- //continue nevertheless to check if we are root and if defaultAccessTypeForHierarchy
- //should be overridden
- if ( forcedAccessType == null || defaultAccessTypeForHierarchy == null ) {
- List<? extends Element> myMembers = searchedElement.getEnclosedElements();
- for ( Element subElement : myMembers ) {
- List<? extends AnnotationMirror> entityAnnotations =
- context.getProcessingEnvironment().getElementUtils().getAllAnnotationMirrors( subElement );
+ public String generateImports() {
+ return importContext.generateImports();
+ }
- for ( Object entityAnnotation : entityAnnotations ) {
- AnnotationMirror annotationMirror = ( AnnotationMirror ) entityAnnotation;
+ public String importType(String fqcn) {
+ return importContext.importType( fqcn );
+ }
- //FIXME consider XML
- if ( TypeUtils.isAnnotationMirrorOfType( annotationMirror, Id.class )
- || TypeUtils.isAnnotationMirrorOfType( annotationMirror, EmbeddedId.class ) ) {
- context.logMessage( Diagnostic.Kind.OTHER, "Found id on" + searchedElement );
- final ElementKind kind = subElement.getKind();
- if ( kind == ElementKind.FIELD || kind == ElementKind.METHOD ) {
- accessType = kind == ElementKind.FIELD ? AccessType.FIELD : AccessType.PROPERTY;
- //FIXME enlever in niveau
- if ( defaultAccessTypeForHierarchy == null ) {
- this.defaultAccessTypeForHierarchy = context.getDefaultAccessTypeForHierarchy(
- searchedElement
- );
- //we've discovered the class hierarchy, let's cache it
- if ( defaultAccessTypeForHierarchy == null ) {
- this.defaultAccessTypeForHierarchy = accessType;
- context.addAccessTypeForHierarchy( searchedElement, defaultAccessTypeForHierarchy );
- //FIXME should we add
- //context.addAccessTypeForHierarchy( element, defaultAccessTypeForHierarchy );
- }
- }
- if ( forcedAccessType == null ) {
- context.addAccessType( searchedElement, accessType );
- context.logMessage(
- Diagnostic.Kind.OTHER, "access type " + searchedElement + ":" + accessType
- );
- return accessType;
- }
- else {
- return forcedAccessType;
- }
- }
- }
- }
- }
- }
- return forcedAccessType;
+ public String staticImport(String fqcn, String member) {
+ return importContext.staticImport( fqcn, member );
}
- private AccessType determineAnnotationSpecifiedAccessType(Element element) {
- final AnnotationMirror accessAnnotationMirror = TypeUtils.getAnnotationMirror( element, Access.class );
- AccessType forcedAccessType = null;
- if ( accessAnnotationMirror != null ) {
- Element accessElement = ( Element ) TypeUtils.getAnnotationValue(
- accessAnnotationMirror,
- DEFAULT_ANNOTATION_PARAMETER_NAME
- );
- if ( accessElement.getKind().equals( ElementKind.ENUM_CONSTANT ) ) {
- if ( accessElement.getSimpleName().toString().equals( AccessType.PROPERTY.toString() ) ) {
- forcedAccessType = AccessType.PROPERTY;
- }
- else if ( accessElement.getSimpleName().toString().equals( AccessType.FIELD.toString() ) ) {
- forcedAccessType = AccessType.FIELD;
-
- }
- else {
- context.logMessage( Diagnostic.Kind.ERROR, "Unexpected type for access type" );
- }
- }
- }
- return forcedAccessType;
+ public String importType(Name qualifiedName) {
+ return importType( qualifiedName.toString() );
}
- @Override
- public String toString() {
- final StringBuilder sb = new StringBuilder();
- sb.append( "MetaEntity" );
- sb.append( "{element=" ).append( element );
- sb.append( '}' );
- return sb.toString();
+ public TypeElement getTypeElement() {
+ return element;
}
class TypeVisitor extends SimpleTypeVisitor6<AnnotationMetaAttribute, Element> {
-
AnnotationMetaEntity parent;
- /*
- * If {@code explicitAccessType == null}, process all members as implicit. If {@code explicitAccessType != null}
- * only process members marked as {@code @Access(explicitAccessType)}.
- */
- private AccessType explicitAccessType;
-
- TypeVisitor(AnnotationMetaEntity parent, AccessType explicitAccessType) {
+ TypeVisitor(AnnotationMetaEntity parent) {
this.parent = parent;
- this.explicitAccessType = explicitAccessType;
}
@Override
@@ -338,92 +189,82 @@
@Override
public AnnotationMetaAttribute visitPrimitive(PrimitiveType t, Element element) {
- if ( isPersistent( element ) ) {
- return new AnnotationMetaSingleAttribute( parent, element, TypeUtils.toTypeString( t ) );
- }
- else {
- return null;
- }
+ return new AnnotationMetaSingleAttribute( parent, element, TypeUtils.toTypeString( t ) );
}
@Override
public AnnotationMetaAttribute visitArray(ArrayType t, Element element) {
- if ( isPersistent( element ) ) {
- return new AnnotationMetaSingleAttribute( parent, element, TypeUtils.toTypeString( t ) );
- }
- else {
- return null;
- }
+ return new AnnotationMetaSingleAttribute( parent, element, TypeUtils.toTypeString( t ) );
}
- private boolean isPersistent(Element element) {
- //FIXME consider XML
- boolean correctAccessType = false;
- if ( this.explicitAccessType == null ) {
- correctAccessType = true;
- }
- else {
- AccessType annotationAccessType = determineAnnotationSpecifiedAccessType( element );
- if ( explicitAccessType.equals( annotationAccessType ) ) {
- correctAccessType = true;
- }
- }
- return correctAccessType
- && !TypeUtils.containsAnnotation( element, Transient.class )
- && !element.getModifiers().contains( Modifier.TRANSIENT )
- && !element.getModifiers().contains( Modifier.STATIC );
-
- }
-
@Override
public AnnotationMetaAttribute visitDeclared(DeclaredType declaredType, Element element) {
- if ( isPersistent( element ) ) {
- TypeElement returnedElement = ( TypeElement ) context.getProcessingEnvironment()
- .getTypeUtils()
- .asElement( declaredType );
- // WARNING: .toString() is necessary here since Name equals does not compare to String
- String fqNameOfReturnType = returnedElement.getQualifiedName().toString();
- String collection = COLLECTIONS.get( fqNameOfReturnType );
- String targetEntity = getTargetEntity( element.getAnnotationMirrors() );
- if ( collection != null ) {
- if ( TypeUtils.containsAnnotation( element, ElementCollection.class ) ) {
- String explicitTargetEntity = getTargetEntity( element.getAnnotationMirrors() );
- TypeMirror collectionElementType = getCollectionElementType(
- declaredType, fqNameOfReturnType, explicitTargetEntity
+ TypeElement returnedElement = ( TypeElement ) context.getProcessingEnvironment()
+ .getTypeUtils()
+ .asElement( declaredType );
+ // WARNING: .toString() is necessary here since Name equals does not compare to String
+ String fqNameOfReturnType = returnedElement.getQualifiedName().toString();
+ String collection = COLLECTIONS.get( fqNameOfReturnType );
+ String targetEntity = getTargetEntity( element.getAnnotationMirrors() );
+ if ( collection != null ) {
+ if ( TypeUtils.containsAnnotation( element, ElementCollection.class ) ) {
+ String explicitTargetEntity = getTargetEntity( element.getAnnotationMirrors() );
+ TypeMirror collectionElementType = getCollectionElementType(
+ declaredType, fqNameOfReturnType, explicitTargetEntity
+ );
+ final TypeElement collectionElement = ( TypeElement ) context.getProcessingEnvironment()
+ .getTypeUtils()
+ .asElement( collectionElementType );
+ AccessTypeInformation accessTypeInfo = context.getAccessTypeInfo( collectionElement.getQualifiedName().toString() );
+ if ( accessTypeInfo == null ) {
+ AccessType explicitAccessType = TypeUtils.determineAnnotationSpecifiedAccessType(
+ collectionElement
);
- final TypeElement collectionElement = ( TypeElement ) context.getProcessingEnvironment()
- .getTypeUtils()
- .asElement( collectionElementType );
- this.parent.context.processElement(
- collectionElement,
- this.parent.defaultAccessTypeForElement
+ accessTypeInfo = new AccessTypeInformation(
+ collectionElement.getQualifiedName().toString(),
+ explicitAccessType,
+ entityAccessTypeInfo.getAccessType()
);
+ context.addAccessTypeInformation(
+ collectionElement.getQualifiedName().toString(), accessTypeInfo
+ );
}
- if ( collection.equals( "javax.persistence.metamodel.MapAttribute" ) ) {
- return createAnnotationMetaAttributeForMap( declaredType, element, collection, targetEntity );
- }
else {
- return new AnnotationMetaCollection(
- parent, element, collection, getElementType( declaredType, targetEntity )
- );
+ accessTypeInfo.setDefaultAccessType( entityAccessTypeInfo.getAccessType() );
}
+ AnnotationMetaEntity metaEntity = new AnnotationMetaEntity( collectionElement, context );
+ context.addMetaSuperclassOrEmbeddable( metaEntity.getQualifiedName(), metaEntity );
}
+ if ( collection.equals( "javax.persistence.metamodel.MapAttribute" ) ) {
+ return createAnnotationMetaAttributeForMap( declaredType, element, collection, targetEntity );
+ }
else {
- //FIXME Consider XML
- if ( TypeUtils.containsAnnotation( returnedElement, Embedded.class, Embeddable.class ) ) {
- this.parent.context.processElement(
- returnedElement,
- this.parent.defaultAccessTypeForElement
- );
- }
- return new AnnotationMetaSingleAttribute(
- parent, element, returnedElement.getQualifiedName().toString()
+ return new AnnotationMetaCollection(
+ parent, element, collection, getElementType( declaredType, targetEntity )
);
}
}
else {
+ return new AnnotationMetaSingleAttribute(
+ parent, element, returnedElement.getQualifiedName().toString()
+ );
+ }
+ }
+
+ @Override
+ public AnnotationMetaAttribute visitExecutable(ExecutableType t, Element p) {
+ if ( !p.getKind().equals( ElementKind.METHOD ) ) {
return null;
}
+
+ String string = p.getSimpleName().toString();
+ if ( StringUtil.isPropertyName( string ) ) {
+ TypeMirror returnType = t.getReturnType();
+ return returnType.accept( this, p );
+ }
+ else {
+ return null;
+ }
}
private AnnotationMetaAttribute createAnnotationMetaAttributeForMap(DeclaredType declaredType, Element element, String collection, String targetEntity) {
@@ -432,7 +273,7 @@
TypeMirror typeMirror = ( TypeMirror ) TypeUtils.getAnnotationValue(
TypeUtils.getAnnotationMirror(
element, MapKeyClass.class
- ), DEFAULT_ANNOTATION_PARAMETER_NAME
+ ), TypeUtils.DEFAULT_ANNOTATION_PARAMETER_NAME
);
keyType = typeMirror.toString();
}
@@ -470,103 +311,69 @@
return collectionElementType;
}
- @Override
- public AnnotationMetaAttribute visitExecutable(ExecutableType t, Element p) {
- if ( !p.getKind().equals( ElementKind.METHOD ) ) {
- return null;
+ private String getElementType(DeclaredType declaredType, String targetEntity) {
+ if ( targetEntity != null ) {
+ return targetEntity;
}
-
- String string = p.getSimpleName().toString();
- if ( string.startsWith( "get" ) || string.startsWith( "is" ) || string.startsWith( "has" ) ) {
- TypeMirror returnType = t.getReturnType();
- return returnType.accept( this, p );
+ final List<? extends TypeMirror> mirrors = declaredType.getTypeArguments();
+ if ( mirrors.size() == 1 ) {
+ final TypeMirror type = mirrors.get( 0 );
+ return TypeUtils.extractClosestRealTypeAsString( type, context );
}
+ else if ( mirrors.size() == 2 ) {
+ return TypeUtils.extractClosestRealTypeAsString( mirrors.get( 1 ), context );
+ }
else {
- return null;
+ //for 0 or many
+ //0 is expected, many is not
+ if ( mirrors.size() > 2 ) {
+ context.logMessage(
+ Diagnostic.Kind.WARNING, "Unable to find the closest solid type" + declaredType
+ );
+ }
+ return "?";
}
}
- }
- /**
- * @param annotations list of annotation mirrors.
- *
- * @return target entity class name as string or {@code null} if no targetEntity is here or if equals to void
- */
- private String getTargetEntity(List<? extends AnnotationMirror> annotations) {
-
- String fullyQualifiedTargetEntityName = null;
- for ( AnnotationMirror mirror : annotations ) {
- if ( TypeUtils.isAnnotationMirrorOfType( mirror, ElementCollection.class ) ) {
- fullyQualifiedTargetEntityName = getFullyQualifiedClassNameOfTargetEntity( mirror, "targetClass" );
- }
- else if ( TypeUtils.isAnnotationMirrorOfType( mirror, OneToMany.class )
- || TypeUtils.isAnnotationMirrorOfType( mirror, ManyToMany.class )
- || TypeUtils.isAnnotationMirrorOfType( mirror, ManyToOne.class )
- || TypeUtils.isAnnotationMirrorOfType( mirror, OneToOne.class ) ) {
- fullyQualifiedTargetEntityName = getFullyQualifiedClassNameOfTargetEntity( mirror, "targetEntity" );
- }
+ private String getKeyType(DeclaredType t) {
+ return TypeUtils.extractClosestRealTypeAsString( t.getTypeArguments().get( 0 ), context );
}
- return fullyQualifiedTargetEntityName;
- }
- private String getFullyQualifiedClassNameOfTargetEntity(AnnotationMirror mirror, String parameterName) {
- assert mirror != null;
- assert parameterName != null;
+ /**
+ * @param annotations list of annotation mirrors.
+ *
+ * @return target entity class name as string or {@code null} if no targetEntity is here or if equals to void
+ */
+ private String getTargetEntity(List<? extends AnnotationMirror> annotations) {
- String targetEntityName = null;
- Object parameterValue = TypeUtils.getAnnotationValue( mirror, parameterName );
- if ( parameterValue != null ) {
- TypeMirror parameterType = ( TypeMirror ) parameterValue;
- if ( !parameterType.getKind().equals( TypeKind.VOID ) ) {
- targetEntityName = parameterType.toString();
+ String fullyQualifiedTargetEntityName = null;
+ for ( AnnotationMirror mirror : annotations ) {
+ if ( TypeUtils.isAnnotationMirrorOfType( mirror, ElementCollection.class ) ) {
+ fullyQualifiedTargetEntityName = getFullyQualifiedClassNameOfTargetEntity( mirror, "targetClass" );
+ }
+ else if ( TypeUtils.isAnnotationMirrorOfType( mirror, OneToMany.class )
+ || TypeUtils.isAnnotationMirrorOfType( mirror, ManyToMany.class )
+ || TypeUtils.isAnnotationMirrorOfType( mirror, ManyToOne.class )
+ || TypeUtils.isAnnotationMirrorOfType( mirror, OneToOne.class ) ) {
+ fullyQualifiedTargetEntityName = getFullyQualifiedClassNameOfTargetEntity( mirror, "targetEntity" );
+ }
}
+ return fullyQualifiedTargetEntityName;
}
- return targetEntityName;
- }
- public String generateImports() {
- return importContext.generateImports();
- }
+ private String getFullyQualifiedClassNameOfTargetEntity(AnnotationMirror mirror, String parameterName) {
+ assert mirror != null;
+ assert parameterName != null;
- public String importType(String fqcn) {
- return importContext.importType( fqcn );
- }
-
- public String staticImport(String fqcn, String member) {
- return importContext.staticImport( fqcn, member );
- }
-
- public String importType(Name qualifiedName) {
- return importType( qualifiedName.toString() );
- }
-
- public TypeElement getTypeElement() {
- return element;
- }
-
- private String getKeyType(DeclaredType t) {
- return TypeUtils.extractClosestRealTypeAsString( t.getTypeArguments().get( 0 ), context );
- }
-
- private String getElementType(DeclaredType declaredType, String targetEntity) {
- if ( targetEntity != null ) {
- return targetEntity;
- }
- final List<? extends TypeMirror> mirrors = declaredType.getTypeArguments();
- if ( mirrors.size() == 1 ) {
- final TypeMirror type = mirrors.get( 0 );
- return TypeUtils.extractClosestRealTypeAsString( type, context );
- }
- else if ( mirrors.size() == 2 ) {
- return TypeUtils.extractClosestRealTypeAsString( mirrors.get( 1 ), context );
- }
- else {
- //for 0 or many
- //0 is expected, many is not
- if ( mirrors.size() > 2 ) {
- context.logMessage( Diagnostic.Kind.WARNING, "Unable to find the closest solid type" + declaredType );
+ String targetEntityName = null;
+ Object parameterValue = TypeUtils.getAnnotationValue( mirror, parameterName );
+ if ( parameterValue != null ) {
+ TypeMirror parameterType = ( TypeMirror ) parameterValue;
+ if ( !parameterType.getKind().equals( TypeKind.VOID ) ) {
+ targetEntityName = parameterType.toString();
+ }
}
- return "?";
+ return targetEntityName;
}
}
}
Added: jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/util/StringUtil.java
===================================================================
--- jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/util/StringUtil.java (rev 0)
+++ jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/util/StringUtil.java 2010-02-08 20:58:20 UTC (rev 18734)
@@ -0,0 +1,77 @@
+// $Id:$
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2009, Red Hat, Inc. and/or its affiliates, and individual contributors
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* Licensed 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.hibernate.jpamodelgen.util;
+
+/**
+ * @author Hardy Ferentschik
+ */
+public class StringUtil {
+ private static final String NAME_SEPARATOR = ".";
+ private static final String PROPERTY_PREFIX_GET = "get";
+ private static final String PROPERTY_PREFIX_IS = "is";
+ private static final String PROPERTY_PREFIX_HAS = "has";
+
+ private StringUtil() {
+ }
+
+ public static String determineFullyQualifiedClassName(String packageName, String name) {
+ if ( isFullyQualified( name ) ) {
+ return name;
+ }
+ else {
+ return packageName + NAME_SEPARATOR + name;
+ }
+ }
+
+ public static boolean isFullyQualified(String name) {
+ return name.contains( NAME_SEPARATOR );
+ }
+
+ public static String packageNameFromFqcn(String fqcn) {
+ return fqcn.substring( 0, fqcn.lastIndexOf( NAME_SEPARATOR ) );
+ }
+
+ public static String classNameFromFqcn(String fqcn) {
+ return fqcn.substring( fqcn.lastIndexOf( NAME_SEPARATOR ) + 1 );
+ }
+
+ public static boolean isPropertyName(String name) {
+ return name.startsWith( PROPERTY_PREFIX_GET ) || name.startsWith( PROPERTY_PREFIX_IS ) || name.startsWith(
+ PROPERTY_PREFIX_HAS
+ );
+ }
+
+ public static String getPropertyName(String name) {
+ if ( !isPropertyName( name ) ) {
+ return null;
+ }
+
+ if ( name.startsWith( PROPERTY_PREFIX_GET ) ) {
+ name = name.replaceFirst( PROPERTY_PREFIX_GET, "" );
+ }
+ else if ( name.startsWith( PROPERTY_PREFIX_IS ) ) {
+ name = name.replaceFirst( PROPERTY_PREFIX_IS, "" );
+ }
+ else if ( name.startsWith( PROPERTY_PREFIX_HAS ) ) {
+ name = name.replaceFirst( PROPERTY_PREFIX_HAS, "" );
+ }
+ return name.substring(0,1).toLowerCase() + name.substring(1);
+ }
+}
+
+
Modified: jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/util/TypeUtils.java
===================================================================
--- jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/util/TypeUtils.java 2010-02-08 19:27:00 UTC (rev 18733)
+++ jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/util/TypeUtils.java 2010-02-08 20:58:20 UTC (rev 18734)
@@ -25,6 +25,7 @@
import javax.lang.model.element.AnnotationMirror;
import javax.lang.model.element.AnnotationValue;
import javax.lang.model.element.Element;
+import javax.lang.model.element.ElementKind;
import javax.lang.model.element.ExecutableElement;
import javax.lang.model.element.TypeElement;
import javax.lang.model.type.DeclaredType;
@@ -32,7 +33,15 @@
import javax.lang.model.type.TypeMirror;
import javax.lang.model.type.TypeVariable;
import javax.lang.model.util.Types;
+import javax.persistence.Access;
+import javax.persistence.AccessType;
+import javax.persistence.EmbeddedId;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.MappedSuperclass;
+import javax.tools.Diagnostic;
+import org.hibernate.jpamodelgen.AccessTypeInformation;
import org.hibernate.jpamodelgen.Context;
/**
@@ -44,6 +53,7 @@
*/
public class TypeUtils {
+ public static final String DEFAULT_ANNOTATION_PARAMETER_NAME = "value";
private static final Map<String, String> PRIMITIVES = new HashMap<String, String>();
static {
@@ -181,4 +191,135 @@
}
return returnValue;
}
+
+ public static void determineAccessTypeForHierarchy(TypeElement searchedElement, Context context) {
+ String fqcn = searchedElement.getQualifiedName().toString();
+ context.logMessage( Diagnostic.Kind.OTHER, "check class " + fqcn );
+ AccessTypeInformation accessTypeInfo = context.getAccessTypeInfo( fqcn );
+
+ if ( accessTypeInfo != null && accessTypeInfo.isAccessTypeResolved() ) {
+ context.logMessage(
+ Diagnostic.Kind.OTHER,
+ "AccessType for " + searchedElement.toString() + "found in cache: " + accessTypeInfo
+ );
+ return;
+ }
+
+ // check for explicit access type
+ AccessType forcedAccessType = determineAnnotationSpecifiedAccessType( searchedElement );
+ if ( forcedAccessType != null ) {
+ context.logMessage(
+ Diagnostic.Kind.OTHER, "Explicit access type on " + searchedElement + ":" + forcedAccessType
+ );
+ accessTypeInfo = new AccessTypeInformation( fqcn, forcedAccessType, null );
+ context.addAccessTypeInformation( fqcn, accessTypeInfo );
+ return;
+ }
+
+ // need to find the default access type for this class
+ // let's check first if this entity is the root of the class hierarchy and defines an id. If so the
+ // placement of the id annotation determines the access type
+ AccessType defaultAccessType = getAccessTypeInCaseElementIsRoot( searchedElement, context );
+ if ( defaultAccessType != null ) {
+ accessTypeInfo = new AccessTypeInformation( fqcn, null, defaultAccessType );
+ context.addAccessTypeInformation( fqcn, accessTypeInfo );
+ return;
+ }
+
+ // if we end up here we need to recursively look for superclasses
+ defaultAccessType = getDefaultAccessForHierarchy( searchedElement, context );
+ if ( defaultAccessType == null ) {
+ defaultAccessType = AccessType.PROPERTY;
+ }
+ accessTypeInfo = new AccessTypeInformation( fqcn, null, defaultAccessType );
+ context.addAccessTypeInformation( fqcn, accessTypeInfo );
+ }
+
+ private static AccessType getDefaultAccessForHierarchy(TypeElement element, Context context) {
+ AccessType defaultAccessType = null;
+ TypeElement superClass = element;
+ do {
+ superClass = TypeUtils.getSuperclassTypeElement( superClass );
+ if ( superClass != null ) {
+ String fqcn = superClass.getQualifiedName().toString();
+ AccessTypeInformation accessTypeInfo = context.getAccessTypeInfo( fqcn );
+ if ( accessTypeInfo != null && accessTypeInfo.getDefaultAccessType() != null ) {
+ return accessTypeInfo.getDefaultAccessType();
+ }
+ if ( TypeUtils.containsAnnotation( superClass, Entity.class, MappedSuperclass.class ) ) {
+ defaultAccessType = getAccessTypeInCaseElementIsRoot( superClass, context );
+ if ( defaultAccessType != null ) {
+ accessTypeInfo = new AccessTypeInformation( fqcn, null, defaultAccessType );
+ context.addAccessTypeInformation( fqcn, accessTypeInfo );
+ defaultAccessType = accessTypeInfo.getAccessType();
+ }
+ else {
+ defaultAccessType = getDefaultAccessForHierarchy( superClass, context );
+ }
+ }
+ }
+ }
+ while ( superClass != null );
+ return defaultAccessType;
+ }
+
+ private static AccessType getAccessTypeInCaseElementIsRoot(TypeElement searchedElement, Context context) {
+ AccessType defaultAccessType = null;
+ List<? extends Element> myMembers = searchedElement.getEnclosedElements();
+ for ( Element subElement : myMembers ) {
+ List<? extends AnnotationMirror> entityAnnotations =
+ context.getProcessingEnvironment().getElementUtils().getAllAnnotationMirrors( subElement );
+ for ( Object entityAnnotation : entityAnnotations ) {
+ AnnotationMirror annotationMirror = ( AnnotationMirror ) entityAnnotation;
+ if ( isIdAnnotation( annotationMirror ) ) {
+ defaultAccessType = getAccessTypeOfIdAnnotation( subElement );
+ break;
+ }
+ }
+ }
+ return defaultAccessType;
+ }
+
+ private static AccessType getAccessTypeOfIdAnnotation(Element element) {
+ AccessType accessType = null;
+ final ElementKind kind = element.getKind();
+ if ( kind == ElementKind.FIELD || kind == ElementKind.METHOD ) {
+ accessType = kind == ElementKind.FIELD ? AccessType.FIELD : AccessType.PROPERTY;
+ }
+ return accessType;
+ }
+
+ private static boolean isIdAnnotation(AnnotationMirror annotationMirror) {
+ return TypeUtils.isAnnotationMirrorOfType( annotationMirror, Id.class )
+ || TypeUtils.isAnnotationMirrorOfType( annotationMirror, EmbeddedId.class );
+ }
+
+ public static AccessType determineAnnotationSpecifiedAccessType(Element element) {
+ final AnnotationMirror accessAnnotationMirror = TypeUtils.getAnnotationMirror( element, Access.class );
+ AccessType forcedAccessType = null;
+ if ( accessAnnotationMirror != null ) {
+ Element accessElement = ( Element ) TypeUtils.getAnnotationValue(
+ accessAnnotationMirror,
+ DEFAULT_ANNOTATION_PARAMETER_NAME
+ );
+ if ( accessElement.getKind().equals( ElementKind.ENUM_CONSTANT ) ) {
+ if ( accessElement.getSimpleName().toString().equals( AccessType.PROPERTY.toString() ) ) {
+ forcedAccessType = AccessType.PROPERTY;
+ }
+ else if ( accessElement.getSimpleName().toString().equals( AccessType.FIELD.toString() ) ) {
+ forcedAccessType = AccessType.FIELD;
+ }
+ }
+ }
+ return forcedAccessType;
+ }
+
+ public static ElementKind getElementKindForAccessType(AccessType accessType) {
+ if ( AccessType.FIELD.equals( accessType ) ) {
+ return ElementKind.FIELD;
+ }
+ else {
+ return ElementKind.METHOD;
+ }
+ }
}
Modified: jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/xml/XmlMetaAttribute.java
===================================================================
--- jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/xml/XmlMetaAttribute.java 2010-02-08 19:27:00 UTC (rev 18733)
+++ jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/xml/XmlMetaAttribute.java 2010-02-08 20:58:20 UTC (rev 18734)
@@ -37,7 +37,6 @@
this.type = type;
}
-
@Override
public String getDeclarationString() {
return "public static volatile " + parentEntity.importType(getMetaType()) + "<" + parentEntity.importType(parentEntity.getQualifiedName()) + ", " + parentEntity.importType(getTypeDeclaration()) + "> " + getPropertyName() + ";";
@@ -53,4 +52,14 @@
@Override
abstract public String getMetaType();
+
+ @Override
+ public String toString() {
+ final StringBuilder sb = new StringBuilder();
+ sb.append( "XmlMetaAttribute" );
+ sb.append( "{propertyName='" ).append( propertyName ).append( '\'' );
+ sb.append( ", type='" ).append( type ).append( '\'' );
+ sb.append( '}' );
+ return sb.toString();
+ }
}
Modified: jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/xml/XmlMetaEntity.java
===================================================================
--- jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/xml/XmlMetaEntity.java 2010-02-08 19:27:00 UTC (rev 18733)
+++ jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/xml/XmlMetaEntity.java 2010-02-08 20:58:20 UTC (rev 18734)
@@ -22,18 +22,22 @@
import java.util.List;
import java.util.Map;
import javax.lang.model.element.Element;
+import javax.lang.model.element.ElementKind;
+import javax.lang.model.element.ExecutableElement;
import javax.lang.model.element.Name;
import javax.lang.model.element.TypeElement;
import javax.lang.model.type.DeclaredType;
import javax.lang.model.type.TypeMirror;
import javax.tools.Diagnostic;
+import org.hibernate.jpamodelgen.AccessTypeInformation;
import org.hibernate.jpamodelgen.Context;
+import org.hibernate.jpamodelgen.ImportContextImpl;
+import org.hibernate.jpamodelgen.MetaModelGenerationException;
import org.hibernate.jpamodelgen.model.ImportContext;
-import org.hibernate.jpamodelgen.ImportContextImpl;
import org.hibernate.jpamodelgen.model.MetaAttribute;
import org.hibernate.jpamodelgen.model.MetaEntity;
-import org.hibernate.jpamodelgen.MetaModelGenerationException;
+import org.hibernate.jpamodelgen.util.StringUtil;
import org.hibernate.jpamodelgen.util.TypeUtils;
import org.hibernate.jpamodelgen.xml.jaxb.Attributes;
import org.hibernate.jpamodelgen.xml.jaxb.Basic;
@@ -68,15 +72,23 @@
private final List<MetaAttribute> members = new ArrayList<MetaAttribute>();
private final TypeElement element;
private final Context context;
+ private final AccessTypeInformation accessTypeInfo;
private boolean isMetaComplete;
public XmlMetaEntity(Entity ormEntity, String packageName, TypeElement element, Context context) {
- this.clazzName = ormEntity.getClazz();
+ String className = ormEntity.getClazz();
+ if ( StringUtil.isFullyQualified( className ) ) {
+ // we have to extract the package name from the fqcn. default package name gets ignored
+ packageName = StringUtil.packageNameFromFqcn( className );
+ className = StringUtil.classNameFromFqcn( className );
+ }
+ this.clazzName = className;
this.packageName = packageName;
this.context = context;
this.importContext = new ImportContextImpl( getPackageName() );
this.element = element;
+ this.accessTypeInfo = context.getAccessTypeInfo( getQualifiedName() );
initIsMetaComplete( ormEntity.isMetadataComplete() );
parseAttributes( ormEntity.getAttributes() );
}
@@ -87,6 +99,7 @@
this.context = context;
this.importContext = new ImportContextImpl( getPackageName() );
this.element = element;
+ this.accessTypeInfo = context.getAccessTypeInfo( getQualifiedName() );
initIsMetaComplete( mappedSuperclass.isMetadataComplete() );
parseAttributes( mappedSuperclass.getAttributes() );
}
@@ -97,12 +110,21 @@
this.context = context;
this.importContext = new ImportContextImpl( getPackageName() );
this.element = element;
+ this.accessTypeInfo = context.getAccessTypeInfo( getQualifiedName() );
initIsMetaComplete( embeddable.isMetadataComplete() );
parseEmbeddableAttributes( embeddable.getAttributes() );
}
- private void initIsMetaComplete(boolean metadataComplete) {
- isMetaComplete = context.isPersistenceUnitCompletelyXmlConfigured() || metadataComplete;
+ private void initIsMetaComplete(Boolean metadataComplete) {
+ if ( context.isPersistenceUnitCompletelyXmlConfigured() ) {
+ isMetaComplete = true;
+ return;
+ }
+ if ( Boolean.TRUE.equals( metadataComplete ) ) {
+ isMetaComplete = true;
+ return;
+ }
+ isMetaComplete = false;
}
public String getSimpleName() {
@@ -146,205 +168,300 @@
return isMetaComplete;
}
- private String[] getCollectionType(String propertyName, String explicitTargetEntity) {
+ private String[] getCollectionType(String propertyName, String explicitTargetEntity, ElementKind expectedElementKind) {
String types[] = new String[2];
for ( Element elem : element.getEnclosedElements() ) {
- if ( elem.getSimpleName().toString().equals( propertyName ) ) {
- DeclaredType type = ( ( DeclaredType ) elem.asType() );
- List<? extends TypeMirror> typeArguments = type.getTypeArguments();
+ if ( expectedElementKind.equals( elem.getKind() ) ) {
+ continue;
+ }
- if ( typeArguments.size() == 0 && explicitTargetEntity == null ) {
- throw new MetaModelGenerationException( "Unable to determine target entity type for " + clazzName + "." + propertyName + "." );
- }
+ if ( !elem.getSimpleName().toString().equals( propertyName ) ) {
+ continue;
+ }
- if ( explicitTargetEntity == null ) {
- types[0] = TypeUtils.extractClosestRealTypeAsString( typeArguments.get( 0 ), context );
- }
- else {
- types[0] = explicitTargetEntity;
- }
- types[1] = COLLECTIONS.get( type.asElement().toString() );
+ DeclaredType type = ( ( DeclaredType ) elem.asType() );
+ List<? extends TypeMirror> typeArguments = type.getTypeArguments();
+
+ if ( typeArguments.size() == 0 && explicitTargetEntity == null ) {
+ throw new MetaModelGenerationException( "Unable to determine target entity type for " + clazzName + "." + propertyName + "." );
}
+
+ if ( explicitTargetEntity == null ) {
+ types[0] = TypeUtils.extractClosestRealTypeAsString( typeArguments.get( 0 ), context );
+ }
+ else {
+ types[0] = explicitTargetEntity;
+ }
+ types[1] = COLLECTIONS.get( type.asElement().toString() );
+ return types;
+
}
- return types;
+ return null;
}
/**
- * Returns the entity type for relation.
+ * Returns the entity type for a property.
*
- * @param propertyName The property name of the association
- * @param explicitTargetEntity The explicitly specified target entity type
+ * @param propertyName The property name
+ * @param explicitTargetEntity The explicitly specified target entity type or {@code null}.
+ * @param expectedElementKind Determines property vs field access type
*
- * @return The entity type for relation/association.
+ * @return The entity type for this property or {@code null} if the property with the name and the matching access
+ * type does not exist.
*/
- private String getType(String propertyName, String explicitTargetEntity) {
- if ( explicitTargetEntity != null ) {
- // TODO should there be a check of the target entity class and if it is loadable?
- return explicitTargetEntity;
- }
+ private String getType(String propertyName, String explicitTargetEntity, ElementKind expectedElementKind) {
+ for ( Element elem : element.getEnclosedElements() ) {
+ if ( !expectedElementKind.equals( elem.getKind() ) ) {
+ continue;
+ }
- String typeName = null;
- for ( Element elem : element.getEnclosedElements() ) {
- if ( elem.getSimpleName().toString().equals( propertyName ) ) {
- switch ( elem.asType().getKind() ) {
- case INT: {
- typeName = "java.lang.Integer";
- break;
- }
- case LONG: {
- typeName = "java.lang.Long";
- break;
- }
- case BOOLEAN: {
- typeName = "java.lang.Boolean";
- break;
- }
- case DECLARED: {
- typeName = elem.asType().toString();
- break;
- }
- case TYPEVAR: {
- typeName = elem.asType().toString();
- break;
- }
+ TypeMirror mirror;
+ String name = elem.getSimpleName().toString();
+ if ( ElementKind.METHOD.equals( elem.getKind() ) ) {
+ name = StringUtil.getPropertyName( name );
+ mirror = ( ( ExecutableElement ) elem ).getReturnType();
+ } else {
+ mirror = elem.asType();
+ }
+
+ if ( name == null || !name.equals( propertyName ) ) {
+ continue;
+ }
+
+ if ( explicitTargetEntity != null ) {
+ // TODO should there be a check of the target entity class and if it is loadable?
+ return explicitTargetEntity;
+ }
+
+ switch ( mirror.getKind() ) {
+ case INT: {
+ return "java.lang.Integer";
}
- break;
+ case LONG: {
+ return "java.lang.Long";
+ }
+ case BOOLEAN: {
+ return "java.lang.Boolean";
+ }
+ case DECLARED: {
+ return mirror.toString();
+ }
+ case TYPEVAR: {
+ return mirror.toString();
+ }
}
}
- return typeName;
+
+ context.logMessage(
+ Diagnostic.Kind.WARNING,
+ "Unable to determine type for property " + propertyName + " of class " + getQualifiedName()
+ + " using assess type " + accessTypeInfo.getDefaultAccessType()
+ );
+ return null;
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder();
sb.append( "XmlMetaEntity" );
- sb.append( "{type=" ).append( element );
+ sb.append( "{accessTypeInfo=" ).append( accessTypeInfo );
+ sb.append( ", clazzName='" ).append( clazzName ).append( '\'' );
+ sb.append( ", members=" ).append( members );
+ sb.append( ", isMetaComplete=" ).append( isMetaComplete );
sb.append( '}' );
return sb.toString();
}
private void parseAttributes(Attributes attributes) {
XmlMetaSingleAttribute attribute;
-
if ( !attributes.getId().isEmpty() ) {
// TODO what do we do if there are more than one id nodes?
Id id = attributes.getId().get( 0 );
- attribute = new XmlMetaSingleAttribute(
- this, id.getName(), getType( id.getName(), null )
- );
- members.add( attribute );
+ ElementKind elementKind = getElementKind( id.getAccess() );
+ String type = getType( id.getName(), null, elementKind );
+ if ( type != null ) {
+ attribute = new XmlMetaSingleAttribute( this, id.getName(), type );
+ members.add( attribute );
+ }
}
for ( Basic basic : attributes.getBasic() ) {
- attribute = new XmlMetaSingleAttribute( this, basic.getName(), getType( basic.getName(), null ) );
- members.add( attribute );
+ ElementKind elementKind = getElementKind( basic.getAccess() );
+ String type = getType( basic.getName(), null, elementKind );
+ if ( type != null ) {
+ attribute = new XmlMetaSingleAttribute( this, basic.getName(), type );
+ members.add( attribute );
+ }
}
for ( ManyToOne manyToOne : attributes.getManyToOne() ) {
- attribute = new XmlMetaSingleAttribute(
- this, manyToOne.getName(), getType( manyToOne.getName(), manyToOne.getTargetEntity() )
- );
- members.add( attribute );
+ ElementKind elementKind = getElementKind( manyToOne.getAccess() );
+ String type = getType( manyToOne.getName(), manyToOne.getTargetEntity(), elementKind );
+ if ( type != null ) {
+ attribute = new XmlMetaSingleAttribute( this, manyToOne.getName(), type );
+ members.add( attribute );
+ }
}
for ( OneToOne oneToOne : attributes.getOneToOne() ) {
- attribute = new XmlMetaSingleAttribute(
- this, oneToOne.getName(), getType( oneToOne.getName(), oneToOne.getTargetEntity() )
- );
- members.add( attribute );
+ ElementKind elementKind = getElementKind( oneToOne.getAccess() );
+ String type = getType( oneToOne.getName(), oneToOne.getTargetEntity(), elementKind );
+ if ( type != null ) {
+ attribute = new XmlMetaSingleAttribute( this, oneToOne.getName(), type );
+ members.add( attribute );
+ }
}
XmlMetaCollection metaCollection;
String[] types;
for ( ManyToMany manyToMany : attributes.getManyToMany() ) {
+ ElementKind elementKind = getElementKind( manyToMany.getAccess() );
try {
- types = getCollectionType( manyToMany.getName(), manyToMany.getTargetEntity() );
+ types = getCollectionType( manyToMany.getName(), manyToMany.getTargetEntity(), elementKind );
}
catch ( MetaModelGenerationException e ) {
logMetaModelException( manyToMany.getName(), e );
break;
}
- metaCollection = new XmlMetaCollection( this, manyToMany.getName(), types[0], types[1] );
- members.add( metaCollection );
+ if ( types != null ) {
+ metaCollection = new XmlMetaCollection( this, manyToMany.getName(), types[0], types[1] );
+ members.add( metaCollection );
+ }
}
for ( OneToMany oneToMany : attributes.getOneToMany() ) {
+ ElementKind elementKind = getElementKind( oneToMany.getAccess() );
try {
- types = getCollectionType( oneToMany.getName(), oneToMany.getTargetEntity() );
+ types = getCollectionType( oneToMany.getName(), oneToMany.getTargetEntity(), elementKind );
}
catch ( MetaModelGenerationException e ) {
logMetaModelException( oneToMany.getName(), e );
break;
}
- metaCollection = new XmlMetaCollection( this, oneToMany.getName(), types[0], types[1] );
- members.add( metaCollection );
+ if ( types != null ) {
+ metaCollection = new XmlMetaCollection( this, oneToMany.getName(), types[0], types[1] );
+ members.add( metaCollection );
+ }
}
for ( ElementCollection collection : attributes.getElementCollection() ) {
+ ElementKind elementKind = getElementKind( collection.getAccess() );
try {
- types = getCollectionType( collection.getName(), collection.getTargetClass() );
+ types = getCollectionType( collection.getName(), collection.getTargetClass(), elementKind );
}
catch ( MetaModelGenerationException e ) {
logMetaModelException( collection.getName(), e );
break;
}
- metaCollection = new XmlMetaCollection( this, collection.getName(), types[0], types[1] );
- members.add( metaCollection );
+ if ( types != null ) {
+ metaCollection = new XmlMetaCollection( this, collection.getName(), types[0], types[1] );
+ members.add( metaCollection );
+ }
}
}
- private void logMetaModelException(String name, MetaModelGenerationException e) {
- StringBuilder builder = new StringBuilder();
- builder.append( "Error processing xml for " );
- builder.append( clazzName );
- builder.append( "." );
- builder.append( name );
- builder.append( ". Error message: " );
- builder.append( e.getMessage() );
- context.logMessage(
- Diagnostic.Kind.WARNING,
- builder.toString()
- );
- }
-
private void parseEmbeddableAttributes(EmbeddableAttributes attributes) {
XmlMetaSingleAttribute attribute;
for ( Basic basic : attributes.getBasic() ) {
- attribute = new XmlMetaSingleAttribute( this, basic.getName(), getType( basic.getName(), null ) );
- members.add( attribute );
+ ElementKind elementKind = getElementKind( basic.getAccess() );
+ String type = getType( basic.getName(), null, elementKind );
+ if ( type != null ) {
+ attribute = new XmlMetaSingleAttribute( this, basic.getName(), type );
+ members.add( attribute );
+ }
}
for ( ManyToOne manyToOne : attributes.getManyToOne() ) {
- attribute = new XmlMetaSingleAttribute(
- this, manyToOne.getName(), getType( manyToOne.getName(), manyToOne.getTargetEntity() )
- );
- members.add( attribute );
+ ElementKind elementKind = getElementKind( manyToOne.getAccess() );
+ String type = getType( manyToOne.getName(), manyToOne.getTargetEntity(), elementKind );
+ if ( type != null ) {
+ attribute = new XmlMetaSingleAttribute( this, manyToOne.getName(), type );
+ members.add( attribute );
+ }
}
for ( OneToOne oneToOne : attributes.getOneToOne() ) {
- attribute = new XmlMetaSingleAttribute(
- this, oneToOne.getName(), getType( oneToOne.getName(), oneToOne.getTargetEntity() )
- );
- members.add( attribute );
+ ElementKind elementKind = getElementKind( oneToOne.getAccess() );
+ String type = getType( oneToOne.getName(), oneToOne.getTargetEntity(), elementKind );
+ if ( type != null ) {
+ attribute = new XmlMetaSingleAttribute( this, oneToOne.getName(), type );
+ members.add( attribute );
+ }
}
XmlMetaCollection metaCollection;
+ String[] types;
for ( ManyToMany manyToMany : attributes.getManyToMany() ) {
- String[] types = getCollectionType( manyToMany.getName(), manyToMany.getTargetEntity() );
- metaCollection = new XmlMetaCollection( this, manyToMany.getName(), types[0], types[1] );
- members.add( metaCollection );
+ ElementKind elementKind = getElementKind( manyToMany.getAccess() );
+ try {
+ types = getCollectionType( manyToMany.getName(), manyToMany.getTargetEntity(), elementKind );
+ }
+ catch ( MetaModelGenerationException e ) {
+ logMetaModelException( manyToMany.getName(), e );
+ break;
+ }
+ if ( types != null ) {
+ metaCollection = new XmlMetaCollection( this, manyToMany.getName(), types[0], types[1] );
+ members.add( metaCollection );
+ }
}
for ( OneToMany oneToMany : attributes.getOneToMany() ) {
- String[] types = getCollectionType( oneToMany.getName(), oneToMany.getTargetEntity() );
- metaCollection = new XmlMetaCollection( this, oneToMany.getName(), types[0], types[1] );
- members.add( metaCollection );
+ ElementKind elementKind = getElementKind( oneToMany.getAccess() );
+ try {
+ types = getCollectionType( oneToMany.getName(), oneToMany.getTargetEntity(), elementKind );
+ }
+ catch ( MetaModelGenerationException e ) {
+ logMetaModelException( oneToMany.getName(), e );
+ break;
+ }
+ if ( types != null ) {
+ metaCollection = new XmlMetaCollection( this, oneToMany.getName(), types[0], types[1] );
+ members.add( metaCollection );
+ }
}
for ( ElementCollection collection : attributes.getElementCollection() ) {
- String[] types = getCollectionType( collection.getName(), collection.getTargetClass() );
- metaCollection = new XmlMetaCollection( this, collection.getName(), types[0], types[1] );
- members.add( metaCollection );
+ ElementKind elementKind = getElementKind( collection.getAccess() );
+ try {
+ types = getCollectionType( collection.getName(), collection.getTargetClass(), elementKind );
+ }
+ catch ( MetaModelGenerationException e ) {
+ logMetaModelException( collection.getName(), e );
+ break;
+ }
+ if ( types != null ) {
+ metaCollection = new XmlMetaCollection( this, collection.getName(), types[0], types[1] );
+ members.add( metaCollection );
+ }
}
}
+
+ private void logMetaModelException(String name, MetaModelGenerationException e) {
+ StringBuilder builder = new StringBuilder();
+ builder.append( "Error processing xml for " );
+ builder.append( clazzName );
+ builder.append( "." );
+ builder.append( name );
+ builder.append( ". Error message: " );
+ builder.append( e.getMessage() );
+ context.logMessage(
+ Diagnostic.Kind.WARNING,
+ builder.toString()
+ );
+ }
+
+ private ElementKind getElementKind(org.hibernate.jpamodelgen.xml.jaxb.AccessType accessType) {
+ // if no explicit access type was specified in xml we use the entity access type
+ if ( accessType == null ) {
+ return TypeUtils.getElementKindForAccessType( accessTypeInfo.getDefaultAccessType() );
+ }
+
+ if ( org.hibernate.jpamodelgen.xml.jaxb.AccessType.FIELD.equals( accessType ) ) {
+ return ElementKind.FIELD;
+ }
+ else {
+ return ElementKind.METHOD;
+ }
+ }
}
Modified: jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/xml/XmlParser.java
===================================================================
--- jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/xml/XmlParser.java 2010-02-08 19:27:00 UTC (rev 18733)
+++ jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/xml/XmlParser.java 2010-02-08 20:58:20 UTC (rev 18734)
@@ -37,7 +37,10 @@
import org.xml.sax.SAXException;
+import org.hibernate.jpamodelgen.AccessTypeInformation;
import org.hibernate.jpamodelgen.Context;
+import org.hibernate.jpamodelgen.util.StringUtil;
+import org.hibernate.jpamodelgen.util.TypeUtils;
import org.hibernate.jpamodelgen.xml.jaxb.Entity;
import org.hibernate.jpamodelgen.xml.jaxb.EntityMappings;
import org.hibernate.jpamodelgen.xml.jaxb.ObjectFactory;
@@ -53,11 +56,9 @@
private static final String PERSISTENCE_XML_XSD = "persistence_2_0.xsd";
private static final String ORM_XSD = "orm_2_0.xsd";
private static final String PATH_SEPARATOR = "/";
- private static final AccessType DEFAULT_XML_ACCESS_TYPE = AccessType.PROPERTY;
private Context context;
private List<EntityMappings> entityMappings;
- private AccessType defaultAccessType = DEFAULT_XML_ACCESS_TYPE;
public XmlParser(Context context) {
this.context = context;
@@ -67,13 +68,18 @@
public void parsePersistenceXml() {
collectAllEntityMappings();
determineDefaultAccessTypeAndMetaCompleteness();
+ determineXmlAccessTypes();
+ if ( !context.isPersistenceUnitCompletelyXmlConfigured() ) {
+ // need to take annotations into consideration, since they can override xml settings
+ // we have to at least determine whether any of the xml configured entities is influenced by annotations
+ determineAnnotationAccessTypes();
+ }
for ( EntityMappings mappings : entityMappings ) {
- String packageName = mappings.getPackage();
- AccessType entityAccessType = determineEntityAccessType( mappings );
- parseEntities( mappings.getEntity(), packageName, entityAccessType );
- parseEmbeddable( mappings.getEmbeddable(), packageName, entityAccessType );
- parseMappedSuperClass( mappings.getMappedSuperclass(), packageName, entityAccessType );
+ String defaultPackageName = mappings.getPackage();
+ parseEntities( mappings.getEntity(), defaultPackageName );
+ parseEmbeddable( mappings.getEmbeddable(), defaultPackageName );
+ parseMappedSuperClass( mappings.getMappedSuperclass(), defaultPackageName );
}
}
@@ -108,85 +114,88 @@
}
}
- private void parseEntities(Collection<Entity> entities, String packageName, AccessType accessType) {
+ private void parseEntities(Collection<Entity> entities, String defaultPackageName) {
for ( Entity entity : entities ) {
- String fullyQualifiedClassName = packageName + "." + entity.getClazz();
+ String fqcn = StringUtil.determineFullyQualifiedClassName( defaultPackageName, entity.getClazz() );
- if ( !xmlMappedTypeExists( fullyQualifiedClassName ) ) {
+ if ( !xmlMappedTypeExists( fqcn ) ) {
context.logMessage(
Diagnostic.Kind.WARNING,
- fullyQualifiedClassName + " is mapped in xml, but class does not exists. Skipping meta model generation."
+ fqcn + " is mapped in xml, but class does not exists. Skipping meta model generation."
);
continue;
}
XmlMetaEntity metaEntity = new XmlMetaEntity(
- entity, packageName, getXmlMappedType( fullyQualifiedClassName ),
- context
+ entity, defaultPackageName, getXmlMappedType( fqcn ), context
);
-
- if ( context.containsMetaEntity( fullyQualifiedClassName ) ) {
+ if ( context.containsMetaEntity( fqcn ) ) {
context.logMessage(
Diagnostic.Kind.WARNING,
- fullyQualifiedClassName + " was already processed once. Skipping second occurance."
+ fqcn + " was already processed once. Skipping second occurance."
);
}
- context.addMetaEntity( fullyQualifiedClassName, metaEntity );
+ context.addMetaEntity( fqcn, metaEntity );
}
}
- private void parseEmbeddable(Collection<org.hibernate.jpamodelgen.xml.jaxb.Embeddable> embeddables, String packageName, AccessType accessType) {
+ private void parseEmbeddable(Collection<org.hibernate.jpamodelgen.xml.jaxb.Embeddable> embeddables, String defaultPackageName) {
for ( org.hibernate.jpamodelgen.xml.jaxb.Embeddable embeddable : embeddables ) {
- String fullyQualifiedClassName = packageName + "." + embeddable.getClazz();
+ String fqcn = StringUtil.determineFullyQualifiedClassName( defaultPackageName, embeddable.getClazz() );
+ // we have to extract the package name from the fqcn. Maybe the entity was setting a fqcn directly
+ String pkg = StringUtil.packageNameFromFqcn( fqcn );
- if ( !xmlMappedTypeExists( fullyQualifiedClassName ) ) {
+ if ( !xmlMappedTypeExists( fqcn ) ) {
context.logMessage(
Diagnostic.Kind.WARNING,
- fullyQualifiedClassName + " is mapped in xml, but class does not exists. Skipping meta model generation."
+ fqcn + " is mapped in xml, but class does not exists. Skipping meta model generation."
);
continue;
}
XmlMetaEntity metaEntity = new XmlMetaEntity(
- embeddable, packageName, getXmlMappedType( fullyQualifiedClassName ),
+ embeddable, pkg, getXmlMappedType( fqcn ),
context
);
- if ( context.containsMetaSuperclassOrEmbeddable( fullyQualifiedClassName ) ) {
+ if ( context.containsMetaSuperclassOrEmbeddable( fqcn ) ) {
context.logMessage(
Diagnostic.Kind.WARNING,
- fullyQualifiedClassName + " was already processed once. Skipping second occurance."
+ fqcn + " was already processed once. Skipping second occurance."
);
}
- context.addMetaSuperclassOrEmbeddable( fullyQualifiedClassName, metaEntity );
+ context.addMetaSuperclassOrEmbeddable( fqcn, metaEntity );
}
}
-
- private void parseMappedSuperClass(Collection<org.hibernate.jpamodelgen.xml.jaxb.MappedSuperclass> mappedSuperClasses, String packageName, AccessType accessType) {
+ private void parseMappedSuperClass(Collection<org.hibernate.jpamodelgen.xml.jaxb.MappedSuperclass> mappedSuperClasses, String defaultPackageName) {
for ( org.hibernate.jpamodelgen.xml.jaxb.MappedSuperclass mappedSuperClass : mappedSuperClasses ) {
- String fullyQualifiedClassName = packageName + "." + mappedSuperClass.getClazz();
+ String fqcn = StringUtil.determineFullyQualifiedClassName(
+ defaultPackageName, mappedSuperClass.getClazz()
+ );
+ // we have to extract the package name from the fqcn. Maybe the entity was setting a fqcn directly
+ String pkg = StringUtil.packageNameFromFqcn( fqcn );
- if ( !xmlMappedTypeExists( fullyQualifiedClassName ) ) {
+ if ( !xmlMappedTypeExists( fqcn ) ) {
context.logMessage(
Diagnostic.Kind.WARNING,
- fullyQualifiedClassName + " is mapped in xml, but class does not exists. Skipping meta model generation."
+ fqcn + " is mapped in xml, but class does not exists. Skipping meta model generation."
);
continue;
}
XmlMetaEntity metaEntity = new XmlMetaEntity(
- mappedSuperClass, packageName, getXmlMappedType( fullyQualifiedClassName ),
+ mappedSuperClass, pkg, getXmlMappedType( fqcn ),
context
);
- if ( context.containsMetaSuperclassOrEmbeddable( fullyQualifiedClassName ) ) {
+ if ( context.containsMetaSuperclassOrEmbeddable( fqcn ) ) {
context.logMessage(
Diagnostic.Kind.WARNING,
- fullyQualifiedClassName + " was already processed once. Skipping second occurance."
+ fqcn + " was already processed once. Skipping second occurance."
);
}
- context.addMetaSuperclassOrEmbeddable( fullyQualifiedClassName, metaEntity );
+ context.addMetaSuperclassOrEmbeddable( fqcn, metaEntity );
}
}
@@ -298,13 +307,89 @@
}
private AccessType determineEntityAccessType(EntityMappings mappings) {
- AccessType accessType = defaultAccessType;
+ AccessType accessType = context.getPersistenceUnitDefaultAccessType();
if ( mappings.getAccess() != null ) {
accessType = mapXmlAccessTypeToJpaAccessType( mappings.getAccess() );
}
return accessType;
}
+ private void determineXmlAccessTypes() {
+ for ( EntityMappings mappings : entityMappings ) {
+ String fqcn;
+ String packageName = mappings.getPackage();
+ AccessType defaultAccessType = determineEntityAccessType( mappings );
+
+ for ( Entity entity : mappings.getEntity() ) {
+ String name = entity.getClazz();
+ fqcn = StringUtil.determineFullyQualifiedClassName( packageName, name );
+ AccessType explicitAccessType = null;
+ org.hibernate.jpamodelgen.xml.jaxb.AccessType type = entity.getAccess();
+ if ( type != null ) {
+ explicitAccessType = mapXmlAccessTypeToJpaAccessType( type );
+ }
+ AccessTypeInformation accessInfo = new AccessTypeInformation(
+ fqcn, explicitAccessType, defaultAccessType
+ );
+ context.addAccessTypeInformation( fqcn, accessInfo );
+ }
+
+ for ( org.hibernate.jpamodelgen.xml.jaxb.Embeddable embeddable : mappings.getEmbeddable() ) {
+ String name = embeddable.getClazz();
+ fqcn = StringUtil.determineFullyQualifiedClassName( packageName, name );
+ AccessType explicitAccessType = null;
+ org.hibernate.jpamodelgen.xml.jaxb.AccessType type = embeddable.getAccess();
+ if ( type != null ) {
+ explicitAccessType = mapXmlAccessTypeToJpaAccessType( type );
+ }
+ AccessTypeInformation accessInfo = new AccessTypeInformation(
+ fqcn, explicitAccessType, defaultAccessType
+ );
+ context.addAccessTypeInformation( fqcn, accessInfo );
+
+ }
+
+ for ( org.hibernate.jpamodelgen.xml.jaxb.MappedSuperclass mappedSuperClass : mappings.getMappedSuperclass() ) {
+ String name = mappedSuperClass.getClazz();
+ fqcn = StringUtil.determineFullyQualifiedClassName( packageName, name );
+ AccessType explicitAccessType = null;
+ org.hibernate.jpamodelgen.xml.jaxb.AccessType type = mappedSuperClass.getAccess();
+ if ( type != null ) {
+ explicitAccessType = mapXmlAccessTypeToJpaAccessType( type );
+ }
+ AccessTypeInformation accessInfo = new AccessTypeInformation(
+ fqcn, explicitAccessType, defaultAccessType
+ );
+ context.addAccessTypeInformation( fqcn, accessInfo );
+ }
+ }
+ }
+
+ private void determineAnnotationAccessTypes() {
+ for ( EntityMappings mappings : entityMappings ) {
+ String fqcn;
+ String packageName = mappings.getPackage();
+
+ for ( Entity entity : mappings.getEntity() ) {
+ String name = entity.getClazz();
+ fqcn = StringUtil.determineFullyQualifiedClassName( packageName, name );
+ TypeElement element = context.getTypeElementForFullyQualifiedName( fqcn );
+ if ( element != null ) {
+ TypeUtils.determineAccessTypeForHierarchy( element, context );
+ }
+ }
+
+ for ( org.hibernate.jpamodelgen.xml.jaxb.MappedSuperclass mappedSuperClass : mappings.getMappedSuperclass() ) {
+ String name = mappedSuperClass.getClazz();
+ fqcn = StringUtil.determineFullyQualifiedClassName( packageName, name );
+ TypeElement element = context.getTypeElementForFullyQualifiedName( fqcn );
+ if ( element != null ) {
+ TypeUtils.determineAccessTypeForHierarchy( element, context );
+ }
+ }
+ }
+ }
+
/**
* Determines the default access type as specified in the <i>persistence-unit-defaults</i> as well as whether the
* xml configuration is complete and annotations should be ignored.
@@ -332,7 +417,7 @@
if ( persistenceUnitDefaults != null ) {
org.hibernate.jpamodelgen.xml.jaxb.AccessType xmlAccessType = persistenceUnitDefaults.getAccess();
if ( xmlAccessType != null ) {
- defaultAccessType = mapXmlAccessTypeToJpaAccessType( xmlAccessType );
+ context.setPersistenceUnitDefaultAccessType( mapXmlAccessTypeToJpaAccessType( xmlAccessType ) );
}
}
// for simplicity we stop looking for PersistenceUnitMetadata instances. We assume that all files
Modified: jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/accesstype/AccessTypeTest.java
===================================================================
--- jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/accesstype/AccessTypeTest.java 2010-02-08 19:27:00 UTC (rev 18733)
+++ jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/accesstype/AccessTypeTest.java 2010-02-08 20:58:20 UTC (rev 18734)
@@ -17,8 +17,9 @@
*/
package org.hibernate.jpamodelgen.test.accesstype;
-import java.util.Collections;
-import java.util.Map;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
import org.testng.annotations.Test;
@@ -36,6 +37,11 @@
public class AccessTypeTest extends CompilationTest {
@Test
+ public void testXmlConfiguredEntityGenerated() {
+ TestUtil.assertMetamodelClassGeneratedFor( Order.class );
+ }
+
+ @Test
public void testExcludeTransientFieldAndStatic() {
TestUtil.assertAbsenceOfFieldInMetamodelFor( Product.class, "nonPersistent" );
TestUtil.assertAbsenceOfFieldInMetamodelFor( Product.class, "nonPersistent2" );
@@ -91,12 +97,14 @@
}
@Override
- protected String getTestPackage() {
- return Product.class.getPackage().getName();
+ protected String getPackageNameOfTestSources() {
+ return AccessTypeTest.class.getPackage().getName();
}
@Override
- protected Map<String, String> getProcessorOptions() {
- return Collections.emptyMap();
+ protected Collection<String> getOrmFiles() {
+ List<String> ormFiles = new ArrayList<String>();
+ ormFiles.add( TestUtil.fcnToPath( AccessTypeTest.class.getPackage().getName() ) + "/orm.xml" );
+ return ormFiles;
}
}
Modified: jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/accesstype/Order.java
===================================================================
--- jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/accesstype/Order.java 2010-02-08 19:27:00 UTC (rev 18733)
+++ jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/accesstype/Order.java 2010-02-08 20:58:20 UTC (rev 18734)
@@ -22,7 +22,6 @@
import java.util.Set;
/**
- *
* @author Max Andersen
* @author Hardy Ferentschik
* @author Emmanuel Bernard
Modified: jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/arraytype/ArrayTest.java
===================================================================
--- jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/arraytype/ArrayTest.java 2010-02-08 19:27:00 UTC (rev 18733)
+++ jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/arraytype/ArrayTest.java 2010-02-08 20:58:20 UTC (rev 18734)
@@ -17,9 +17,6 @@
*/
package org.hibernate.jpamodelgen.test.arraytype;
-import java.util.Collections;
-import java.util.Map;
-
import org.testng.annotations.Test;
import org.hibernate.jpamodelgen.test.util.CompilationTest;
@@ -50,12 +47,7 @@
}
@Override
- protected String getTestPackage() {
+ protected String getPackageNameOfTestSources() {
return Image.class.getPackage().getName();
}
-
- @Override
- protected Map<String, String> getProcessorOptions() {
- return Collections.emptyMap();
- }
}
\ No newline at end of file
Modified: jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/arraytype/TemperatureSamples.java
===================================================================
--- jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/arraytype/TemperatureSamples.java 2010-02-08 19:27:00 UTC (rev 18733)
+++ jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/arraytype/TemperatureSamples.java 2010-02-08 20:58:20 UTC (rev 18734)
@@ -20,7 +20,7 @@
import javax.persistence.Entity;
/**
- * @author Hardy Feretnschik
+ * @author Hardy Ferentschik
*/
@Entity
public class TemperatureSamples {
Modified: jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/elementcollection/ElementCollectionTest.java
===================================================================
--- jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/elementcollection/ElementCollectionTest.java 2010-02-08 19:27:00 UTC (rev 18733)
+++ jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/elementcollection/ElementCollectionTest.java 2010-02-08 20:58:20 UTC (rev 18734)
@@ -17,9 +17,6 @@
*/
package org.hibernate.jpamodelgen.test.elementcollection;
-import java.util.Collections;
-import java.util.Map;
-
import org.testng.annotations.Test;
import org.hibernate.jpamodelgen.test.util.CompilationTest;
@@ -59,12 +56,7 @@
}
@Override
- protected String getTestPackage() {
+ protected String getPackageNameOfTestSources() {
return ElementCollectionTest.class.getPackage().getName();
}
-
- @Override
- protected Map<String, String> getProcessorOptions() {
- return Collections.emptyMap();
- }
}
\ No newline at end of file
Modified: jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/generics/GenericsTest.java
===================================================================
--- jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/generics/GenericsTest.java 2010-02-08 19:27:00 UTC (rev 18733)
+++ jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/generics/GenericsTest.java 2010-02-08 20:58:20 UTC (rev 18734)
@@ -17,9 +17,6 @@
*/
package org.hibernate.jpamodelgen.test.generics;
-import java.util.Collections;
-import java.util.Map;
-
import org.testng.annotations.Test;
import org.hibernate.jpamodelgen.test.util.CompilationTest;
@@ -38,12 +35,7 @@
}
@Override
- protected String getTestPackage() {
+ protected String getPackageNameOfTestSources() {
return GenericsTest.class.getPackage().getName();
}
-
- @Override
- protected Map<String, String> getProcessorOptions() {
- return Collections.emptyMap();
- }
}
\ No newline at end of file
Modified: jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/inheritance/InheritanceTest.java
===================================================================
--- jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/inheritance/InheritanceTest.java 2010-02-08 19:27:00 UTC (rev 18733)
+++ jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/inheritance/InheritanceTest.java 2010-02-08 20:58:20 UTC (rev 18734)
@@ -17,9 +17,6 @@
*/
package org.hibernate.jpamodelgen.test.inheritance;
-import java.util.Collections;
-import java.util.Map;
-
import org.testng.annotations.Test;
import org.hibernate.jpamodelgen.test.util.CompilationTest;
@@ -43,12 +40,7 @@
}
@Override
- protected String getTestPackage() {
+ protected String getPackageNameOfTestSources() {
return InheritanceTest.class.getPackage().getName();
}
-
- @Override
- protected Map<String, String> getProcessorOptions() {
- return Collections.emptyMap();
- }
}
Added: jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/mixedmode/Car.java
===================================================================
--- jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/mixedmode/Car.java (rev 0)
+++ jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/mixedmode/Car.java 2010-02-08 20:58:20 UTC (rev 18734)
@@ -0,0 +1,42 @@
+// $Id:$
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2009, Red Hat, Inc. and/or its affiliates, and individual contributors
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* Licensed 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.hibernate.jpamodelgen.test.mixedmode;
+
+/**
+ * @author Hardy Ferentschik
+ */
+public class Car extends Vehicle {
+ private String make;
+
+ public int getHorsePower() {
+ return 0;
+ }
+
+ public void setHorsePower(int horsePower) {
+ }
+
+ public String getMake() {
+ return make;
+ }
+
+ public void setMake(String make) {
+ this.make = make;
+ }
+}
+
+
Added: jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/mixedmode/MixedConfigurationTest.java
===================================================================
--- jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/mixedmode/MixedConfigurationTest.java (rev 0)
+++ jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/mixedmode/MixedConfigurationTest.java 2010-02-08 20:58:20 UTC (rev 18734)
@@ -0,0 +1,65 @@
+// $Id: MixedModeMappingTest.java 18683 2010-02-02 21:51:40Z hardy.ferentschik $
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2008, Red Hat Middleware LLC, and individual contributors
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* Licensed 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.hibernate.jpamodelgen.test.mixedmode;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.testng.annotations.Test;
+
+import org.hibernate.jpamodelgen.test.util.CompilationTest;
+import org.hibernate.jpamodelgen.test.util.TestUtil;
+
+import static org.hibernate.jpamodelgen.test.util.TestUtil.assertAbsenceOfFieldInMetamodelFor;
+import static org.hibernate.jpamodelgen.test.util.TestUtil.assertMetamodelClassGeneratedFor;
+import static org.hibernate.jpamodelgen.test.util.TestUtil.assertPresenceOfFieldInMetamodelFor;
+
+/**
+ * @author Hardy Ferentschik
+ */
+public class MixedConfigurationTest extends CompilationTest {
+ @Test
+ public void testDefaultAccessTypeApplied() {
+ assertMetamodelClassGeneratedFor( Vehicle.class );
+ assertMetamodelClassGeneratedFor( Car.class );
+ assertAbsenceOfFieldInMetamodelFor( Car.class, "horsePower" );
+ }
+
+ @Test
+ public void testExplicitXmlConfiguredAccessTypeApplied() {
+ assertMetamodelClassGeneratedFor( Vehicle.class );
+ assertMetamodelClassGeneratedFor( Truck.class );
+ assertPresenceOfFieldInMetamodelFor(
+ Truck.class, "horsePower", "Property horsePower has explicit access type and should be in metamodel"
+ );
+ }
+
+ @Override
+ protected String getPackageNameOfTestSources() {
+ return MixedConfigurationTest.class.getPackage().getName();
+ }
+
+ @Override
+ protected Collection<String> getOrmFiles() {
+ List<String> ormFiles = new ArrayList<String>();
+ ormFiles.add( TestUtil.fcnToPath( MixedConfigurationTest.class.getPackage().getName() ) + "/car.xml" );
+ ormFiles.add( TestUtil.fcnToPath( MixedConfigurationTest.class.getPackage().getName() ) + "/truck.xml" );
+ return ormFiles;
+ }
+}
\ No newline at end of file
Deleted: jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/mixedmode/MixedModeMappingTest.java
===================================================================
--- jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/mixedmode/MixedModeMappingTest.java 2010-02-08 19:27:00 UTC (rev 18733)
+++ jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/mixedmode/MixedModeMappingTest.java 2010-02-08 20:58:20 UTC (rev 18734)
@@ -1,56 +0,0 @@
-// $Id$
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2008, Red Hat Middleware LLC, and individual contributors
-* by the @authors tag. See the copyright.txt in the distribution for a
-* full listing of individual contributors.
-*
-* Licensed 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.hibernate.jpamodelgen.test.mixedmode;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.testng.annotations.Test;
-
-import org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor;
-import org.hibernate.jpamodelgen.test.util.CompilationTest;
-import org.hibernate.jpamodelgen.test.util.TestUtil;
-
-import static org.hibernate.jpamodelgen.test.util.TestUtil.assertAbsenceOfFieldInMetamodelFor;
-import static org.hibernate.jpamodelgen.test.util.TestUtil.assertMetamodelClassGeneratedFor;
-
-/**
- * @author Hardy Ferentschik
- */
-public class MixedModeMappingTest extends CompilationTest {
- @Test
- public void testXmlConfiguredEmbeddedClassGenerated() {
- assertMetamodelClassGeneratedFor( Person.class );
- assertAbsenceOfFieldInMetamodelFor( Person.class, "name" );
- }
-
- @Override
- protected String getTestPackage() {
- return MixedModeMappingTest.class.getPackage().getName();
- }
-
- @Override
- protected Map<String, String> getProcessorOptions() {
- Map<String, String> properties = new HashMap<String, String>();
- properties.put(
- JPAMetaModelEntityProcessor.ORM_XML_OPTION,
- TestUtil.fcnToPath( MixedModeMappingTest.class.getPackage().getName() ) + "/orm.xml"
- );
- return properties;
- }
-}
\ No newline at end of file
Added: jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/mixedmode/Truck.java
===================================================================
--- jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/mixedmode/Truck.java (rev 0)
+++ jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/mixedmode/Truck.java 2010-02-08 20:58:20 UTC (rev 18734)
@@ -0,0 +1,41 @@
+// $Id:$
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2009, Red Hat, Inc. and/or its affiliates, and individual contributors
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* Licensed 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.hibernate.jpamodelgen.test.mixedmode;
+
+
+/**
+ * @author Hardy Ferentschik
+ */
+public class Truck extends Vehicle {
+ private String make;
+
+ public int getHorsePower() {
+ return 0;
+ }
+
+ public void setHorsePower(int horsePower) {
+ }
+
+ public String getMake() {
+ return make;
+ }
+
+ public void setMake(String make) {
+ this.make = make;
+ }
+}
\ No newline at end of file
Added: jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/mixedmode/Vehicle.java
===================================================================
--- jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/mixedmode/Vehicle.java (rev 0)
+++ jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/mixedmode/Vehicle.java 2010-02-08 20:58:20 UTC (rev 18734)
@@ -0,0 +1,43 @@
+// $Id:$
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2009, Red Hat, Inc. and/or its affiliates, and individual contributors
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* Licensed 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.hibernate.jpamodelgen.test.mixedmode;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+
+/**
+ * @author Hardy Ferentschik
+ */
+@Entity
+public class Vehicle {
+ // default access type for classes in this hierarchy is FIELD
+ @Id
+ @GeneratedValue
+ private long id;
+
+ public long getId() {
+ return id;
+ }
+
+ public void setId(long id) {
+ this.id = id;
+ }
+}
+
+
Copied: jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/mixedmode/XmlMetaCompleteTest.java (from rev 18683, jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/mixedmode/MixedModeMappingTest.java)
===================================================================
--- jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/mixedmode/XmlMetaCompleteTest.java (rev 0)
+++ jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/mixedmode/XmlMetaCompleteTest.java 2010-02-08 20:58:20 UTC (rev 18734)
@@ -0,0 +1,53 @@
+// $Id$
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2008, Red Hat Middleware LLC, and individual contributors
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* Licensed 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.hibernate.jpamodelgen.test.mixedmode;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.testng.annotations.Test;
+
+import org.hibernate.jpamodelgen.test.util.CompilationTest;
+import org.hibernate.jpamodelgen.test.util.TestUtil;
+
+import static org.hibernate.jpamodelgen.test.util.TestUtil.assertAbsenceOfFieldInMetamodelFor;
+import static org.hibernate.jpamodelgen.test.util.TestUtil.assertMetamodelClassGeneratedFor;
+
+/**
+ * @author Hardy Ferentschik
+ */
+public class XmlMetaCompleteTest extends CompilationTest {
+ @Test
+ public void testXmlConfiguredEmbeddedClassGenerated() {
+ assertMetamodelClassGeneratedFor( Person.class );
+ assertAbsenceOfFieldInMetamodelFor( Person.class, "name" );
+ }
+
+ @Override
+ protected String getPackageNameOfTestSources() {
+ return XmlMetaCompleteTest.class.getPackage().getName();
+ }
+
+ @Override
+ protected Collection<String> getOrmFiles() {
+ List<String> ormFiles = new ArrayList<String>();
+ ormFiles.add( TestUtil.fcnToPath( XmlMetaCompleteTest.class.getPackage().getName() ) + "/orm.xml" );
+ return ormFiles;
+ }
+}
\ No newline at end of file
Property changes on: jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/mixedmode/XmlMetaCompleteTest.java
___________________________________________________________________
Name: svn:keywords
+ Id
Modified: jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/rawtypes/RawTypesTest.java
===================================================================
--- jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/rawtypes/RawTypesTest.java 2010-02-08 19:27:00 UTC (rev 18733)
+++ jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/rawtypes/RawTypesTest.java 2010-02-08 20:58:20 UTC (rev 18734)
@@ -17,9 +17,6 @@
*/
package org.hibernate.jpamodelgen.test.rawtypes;
-import java.util.Collections;
-import java.util.Map;
-
import org.testng.annotations.Test;
import org.hibernate.jpamodelgen.test.util.CompilationTest;
@@ -38,12 +35,7 @@
}
@Override
- protected String getTestPackage() {
+ protected String getPackageNameOfTestSources() {
return DeskWithRawType.class.getPackage().getName();
}
-
- @Override
- protected Map<String, String> getProcessorOptions() {
- return Collections.emptyMap();
- }
}
\ No newline at end of file
Modified: jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/util/CompilationTest.java
===================================================================
--- jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/util/CompilationTest.java 2010-02-08 19:27:00 UTC (rev 18733)
+++ jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/util/CompilationTest.java 2010-02-08 20:58:20 UTC (rev 18734)
@@ -21,6 +21,8 @@
import java.io.FilenameFilter;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
import java.util.List;
import java.util.Map;
import javax.tools.Diagnostic;
@@ -34,6 +36,8 @@
import org.slf4j.LoggerFactory;
import org.testng.annotations.BeforeClass;
+import org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor;
+
import static org.testng.FileAssert.fail;
/**
@@ -85,6 +89,7 @@
compilationUnits = fileManager.getJavaFileObjectsFromFiles(
getCompilationUnits( outBaseDir )
);
+ options.add( "-proc:none" ); // for the second compile skip the processor
compileSources( options, compiler, diagnostics, fileManager, compilationUnits );
fileManager.close();
}
@@ -104,6 +109,20 @@
options.add( "-d" );
options.add( outBaseDir );
+ // pass orm files if specified
+ if ( !getOrmFiles().isEmpty() ) {
+ StringBuilder builder = new StringBuilder();
+ builder.append( ANNOTATION_PROCESSOR_OPTION_PREFIX );
+ builder.append( JPAMetaModelEntityProcessor.ORM_XML_OPTION );
+ builder.append( "=" );
+ for ( String ormFile : getOrmFiles() ) {
+ builder.append( ormFile );
+ builder.append( "," );
+ }
+ builder.deleteCharAt( builder.length() - 1 );
+ options.add( builder.toString() );
+ }
+
// add any additional options specified by the test
for ( Map.Entry<String, String> entry : getProcessorOptions().entrySet() ) {
StringBuilder builder = new StringBuilder();
@@ -113,12 +132,13 @@
builder.append( entry.getValue() );
options.add( builder.toString() );
}
+ options.add( "-Adebug=true" );
return options;
}
private List<File> getCompilationUnits(String baseDir) {
List<File> javaFiles = new ArrayList<File>();
- String packageDirName = baseDir + PATH_SEPARATOR + getTestPackage().replace( ".", PATH_SEPARATOR );
+ String packageDirName = baseDir + PATH_SEPARATOR + getPackageNameOfTestSources().replace( ".", PATH_SEPARATOR );
File packageDir = new File( packageDirName );
FilenameFilter javaFileFilter = new FilenameFilter() {
@Override
@@ -134,9 +154,15 @@
return javaFiles;
}
- abstract protected String getTestPackage();
+ abstract protected String getPackageNameOfTestSources();
- abstract protected Map<String, String> getProcessorOptions();
+ protected Map<String, String> getProcessorOptions() {
+ return Collections.emptyMap();
+ }
+
+ protected Collection<String> getOrmFiles() {
+ return Collections.emptyList();
+ }
}
Modified: jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/util/TestUtil.java
===================================================================
--- jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/util/TestUtil.java 2010-02-08 19:27:00 UTC (rev 18733)
+++ jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/util/TestUtil.java 2010-02-08 20:58:20 UTC (rev 18734)
@@ -114,7 +114,7 @@
public static void assertAttributeTypeInMetaModelFor(Class<?> clazz, String fieldName, Class<?> expectedType, String errorString) {
Field field = getFieldFromMetamodelFor( clazz, fieldName );
- assertNotNull( field );
+ assertNotNull( field, "Field " + fieldName + " should exist." );
ParameterizedType type = ( ParameterizedType ) field.getGenericType();
Type actualType = type.getActualTypeArguments()[1];
if ( expectedType.isArray() ) {
Copied: jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/xmlmapped/IgnoreInvalidXmlTest.java (from rev 18683, jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/xmlmapped/XmlMappingTest.java)
===================================================================
--- jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/xmlmapped/IgnoreInvalidXmlTest.java (rev 0)
+++ jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/xmlmapped/IgnoreInvalidXmlTest.java 2010-02-08 20:58:20 UTC (rev 18734)
@@ -0,0 +1,57 @@
+// $Id$
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2008, Red Hat Middleware LLC, and individual contributors
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* Licensed 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.hibernate.jpamodelgen.test.xmlmapped;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.testng.annotations.Test;
+
+import org.hibernate.jpamodelgen.test.util.CompilationTest;
+import org.hibernate.jpamodelgen.test.util.TestUtil;
+
+import static org.hibernate.jpamodelgen.test.util.TestUtil.assertMetamodelClassGeneratedFor;
+
+/**
+ * @author Hardy Ferentschik
+ */
+public class IgnoreInvalidXmlTest extends CompilationTest {
+ @Test
+ public void testInvalidXmlFilesGetIgnored() {
+ // this is only a indirect test, but if the invalid xml files would cause the processor to abort the
+ // meta class would not have been generated
+ assertMetamodelClassGeneratedFor( Superhero.class );
+ }
+
+ @Override
+ protected String getPackageNameOfTestSources() {
+ return IgnoreInvalidXmlTest.class.getPackage().getName();
+ }
+
+ @Override
+ protected Collection<String> getOrmFiles() {
+ List<String> ormFiles = new ArrayList<String>();
+ String packageName = TestUtil.fcnToPath( IgnoreInvalidXmlTest.class.getPackage().getName() );
+ ormFiles.add( packageName + "/orm.xml" );
+ ormFiles.add( packageName + "/jpa1-orm.xml" );
+ ormFiles.add( packageName + "/malformed-mapping.xml" );
+ ormFiles.add( packageName + "/non-existend-class.xml" );
+ return ormFiles;
+ }
+}
\ No newline at end of file
Modified: jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/xmlmapped/LivingBeing.java
===================================================================
--- jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/xmlmapped/LivingBeing.java 2010-02-08 19:27:00 UTC (rev 18733)
+++ jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/xmlmapped/LivingBeing.java 2010-02-08 20:58:20 UTC (rev 18734)
@@ -21,14 +21,14 @@
* @author Hardy Ferentschik
*/
public class LivingBeing {
- boolean isReallyAlive;
+ boolean reallyAlive;
public boolean isReallyAlive() {
- return isReallyAlive;
+ return reallyAlive;
}
public void setReallyAlive(boolean reallyAlive) {
- isReallyAlive = reallyAlive;
+ this.reallyAlive = reallyAlive;
}
public int nonPersistent() {
Modified: jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/xmlmapped/XmlMappingTest.java
===================================================================
--- jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/xmlmapped/XmlMappingTest.java 2010-02-08 19:27:00 UTC (rev 18733)
+++ jpamodelgen/trunk/src/test/java/org/hibernate/jpamodelgen/test/xmlmapped/XmlMappingTest.java 2010-02-08 20:58:20 UTC (rev 18734)
@@ -17,12 +17,14 @@
*/
package org.hibernate.jpamodelgen.test.xmlmapped;
-import java.util.Collections;
+import java.util.HashMap;
import java.util.Map;
import org.testng.annotations.Test;
+import org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor;
import org.hibernate.jpamodelgen.test.util.CompilationTest;
+import org.hibernate.jpamodelgen.test.util.TestUtil;
import static org.hibernate.jpamodelgen.test.util.TestUtil.assertAttributeTypeInMetaModelFor;
import static org.hibernate.jpamodelgen.test.util.TestUtil.assertMetamodelClassGeneratedFor;
@@ -86,7 +88,7 @@
assertPresenceOfFieldInMetamodelFor( Boy.class, "nickNames", "nickNames field should exist" );
assertAttributeTypeInMetaModelFor( Boy.class, "nickNames", String.class, "target class overridden in xml" );
}
-
+
@Test
public void testClassHierarchy() {
assertMetamodelClassGeneratedFor( Mammal.class );
@@ -100,12 +102,17 @@
}
@Override
- protected String getTestPackage() {
+ protected String getPackageNameOfTestSources() {
return XmlMappingTest.class.getPackage().getName();
}
@Override
protected Map<String, String> getProcessorOptions() {
- return Collections.emptyMap();
+ Map<String, String> properties = new HashMap<String, String>();
+ properties.put(
+ JPAMetaModelEntityProcessor.PERSISTENCE_XML_OPTION,
+ TestUtil.fcnToPath( XmlMappingTest.class.getPackage().getName() ) + "/persistence.xml"
+ );
+ return properties;
}
}
\ No newline at end of file
Deleted: jpamodelgen/trunk/src/test/resources/META-INF/dummy.xml
===================================================================
--- jpamodelgen/trunk/src/test/resources/META-INF/dummy.xml 2010-02-08 19:27:00 UTC (rev 18733)
+++ jpamodelgen/trunk/src/test/resources/META-INF/dummy.xml 2010-02-08 20:58:20 UTC (rev 18734)
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm orm_2_0.xsd"
- version="2.0"
- >
- <package>org.hibernate.jpamodelgen.test.model</package>
- <entity class="Dummy" access="FIELD" metadata-complete="true"> <!-- Class does not exist -->
- <attributes>
- <id name="id"/>
- </attributes>
- </entity>
-</entity-mappings>
Deleted: jpamodelgen/trunk/src/test/resources/META-INF/jpa1-orm.xml
===================================================================
--- jpamodelgen/trunk/src/test/resources/META-INF/jpa1-orm.xml 2010-02-08 19:27:00 UTC (rev 18733)
+++ jpamodelgen/trunk/src/test/resources/META-INF/jpa1-orm.xml 2010-02-08 20:58:20 UTC (rev 18734)
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm orm_1_0.xsd"
- version="1.0"
- >
- <package>org.hibernate.jpamodelgen.test.model</package>
- <entity class="Airplane" metadata-complete="true" access="PROPERTY">
- <attributes>
- <id name="serialNumber"/>
- </attributes>
- </entity>
-</entity-mappings>
\ No newline at end of file
Deleted: jpamodelgen/trunk/src/test/resources/META-INF/malformed-mapping-xml.xml
===================================================================
--- jpamodelgen/trunk/src/test/resources/META-INF/malformed-mapping-xml.xml 2010-02-08 19:27:00 UTC (rev 18733)
+++ jpamodelgen/trunk/src/test/resources/META-INF/malformed-mapping-xml.xml 2010-02-08 20:58:20 UTC (rev 18734)
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm orm_2_0.xsd"
- version="2.0"
- >
- <package>org.hibernate.jpamodelgen.test.model</package>
- <entity class="Dummy" access="FIELD" metadata-complete="true"> <!-- Class does not exist -->
- <attributes>
- <id name="id"/>
- </entity>
-</entity-mappings>
Deleted: jpamodelgen/trunk/src/test/resources/META-INF/orm.xml
===================================================================
--- jpamodelgen/trunk/src/test/resources/META-INF/orm.xml 2010-02-08 19:27:00 UTC (rev 18733)
+++ jpamodelgen/trunk/src/test/resources/META-INF/orm.xml 2010-02-08 20:58:20 UTC (rev 18734)
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm orm_2_0.xsd"
- version="2.0"
- >
- <package>org.hibernate.jpamodelgen.test.accesstype</package>
- <!-- default package -->
- <entity class="Order" access="FIELD" metadata-complete="true"> <!--means ignore annotations-->
- <attributes>
- <id name="id">
- <column name="fld_id"/>
- </id>
- <basic name="filled"/>
- <basic name="date"/>
- <many-to-one name="shop"/>
- <one-to-many name="items"
- target-entity="org.hibernate.jpamodelgen.test.accesstype.Item"
- fetch="EAGER"> <!-- target-entity optional guess the type from the geenric-->
- <cascade>
- <cascade-persist/>
- </cascade>
- </one-to-many>
- <element-collection name="notes"/>
- <!-- new in JPA 2 -->
- </attributes>
- </entity>
-</entity-mappings>
Modified: jpamodelgen/trunk/src/test/resources/META-INF/persistence.xml
===================================================================
--- jpamodelgen/trunk/src/test/resources/META-INF/persistence.xml 2010-02-08 19:27:00 UTC (rev 18733)
+++ jpamodelgen/trunk/src/test/resources/META-INF/persistence.xml 2010-02-08 20:58:20 UTC (rev 18734)
@@ -1,15 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/persistence persistence.xsd" version="2.0">
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/persistence persistence.xsd" version="2.0">
<persistence-unit name="annotation-processor" transaction-type="JTA">
<description>Test persistence unit</description>
- <mapping-file>/META-INF/dummy.xml</mapping-file>
- <mapping-file>/META-INF/malformed-mapping-xml.xml</mapping-file>
- <mapping-file>/META-INF/jpa1-orm.xml</mapping-file>
- <mapping-file>/org/hibernate/jpamodelgen/test/xmlmapped/address.xml</mapping-file>
- <mapping-file>/org/hibernate/jpamodelgen/test/xmlmapped/building.xml</mapping-file>
- <mapping-file>/org/hibernate/jpamodelgen/test/xmlmapped/mammal.xml</mapping-file>
- <mapping-file>/org/hibernate/jpamodelgen/test/xmlmapped/boy.xml</mapping-file>
</persistence-unit>
</persistence>
Copied: jpamodelgen/trunk/src/test/resources/org/hibernate/jpamodelgen/test/accesstype/orm.xml (from rev 18677, jpamodelgen/trunk/src/test/resources/META-INF/orm.xml)
===================================================================
--- jpamodelgen/trunk/src/test/resources/org/hibernate/jpamodelgen/test/accesstype/orm.xml (rev 0)
+++ jpamodelgen/trunk/src/test/resources/org/hibernate/jpamodelgen/test/accesstype/orm.xml 2010-02-08 20:58:20 UTC (rev 18734)
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm orm_2_0.xsd"
+ version="2.0"
+ >
+ <package>org.hibernate.jpamodelgen.test.accesstype</package>
+ <entity class="Order" access="FIELD" metadata-complete="true"> <!--means ignore annotations-->
+ <attributes>
+ <id name="id">
+ <column name="fld_id"/>
+ </id>
+ <basic name="filled"/>
+ <basic name="date"/>
+ <many-to-one name="shop"/>
+ <one-to-many name="items"
+ target-entity="org.hibernate.jpamodelgen.test.accesstype.Item"
+ fetch="EAGER"> <!-- target-entity optional guess the type from the geenric-->
+ <cascade>
+ <cascade-persist/>
+ </cascade>
+ </one-to-many>
+ <element-collection name="notes"/>
+ </attributes>
+ </entity>
+</entity-mappings>
Property changes on: jpamodelgen/trunk/src/test/resources/org/hibernate/jpamodelgen/test/accesstype/orm.xml
___________________________________________________________________
Name: svn:keywords
+ Id
Copied: jpamodelgen/trunk/src/test/resources/org/hibernate/jpamodelgen/test/mixedmode/car.xml (from rev 18683, jpamodelgen/trunk/src/test/resources/org/hibernate/jpamodelgen/test/mixedmode/orm.xml)
===================================================================
--- jpamodelgen/trunk/src/test/resources/org/hibernate/jpamodelgen/test/mixedmode/car.xml (rev 0)
+++ jpamodelgen/trunk/src/test/resources/org/hibernate/jpamodelgen/test/mixedmode/car.xml 2010-02-08 20:58:20 UTC (rev 18734)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm orm_2_0.xsd"
+ version="2.0"
+ >
+ <!-- foo.bar should get ignored since class is fully qualified -->
+ <package>foo.bar</package>
+ <entity class="org.hibernate.jpamodelgen.test.mixedmode.Car">
+ <attributes>
+ <basic name="horsePower"/>
+ <basic name="make"/>
+ </attributes>
+ </entity>
+</entity-mappings>
+
Added: jpamodelgen/trunk/src/test/resources/org/hibernate/jpamodelgen/test/mixedmode/truck.xml
===================================================================
--- jpamodelgen/trunk/src/test/resources/org/hibernate/jpamodelgen/test/mixedmode/truck.xml (rev 0)
+++ jpamodelgen/trunk/src/test/resources/org/hibernate/jpamodelgen/test/mixedmode/truck.xml 2010-02-08 20:58:20 UTC (rev 18734)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm orm_2_0.xsd"
+ version="2.0"
+ >
+ <!-- foo.bar should get ignored since class is fully qualified -->
+ <package>foo.bar</package>
+ <entity class="org.hibernate.jpamodelgen.test.mixedmode.Truck">
+ <attributes>
+ <basic name="horsePower" access="PROPERTY"/>
+ <basic name="make"/>
+ </attributes>
+ </entity>
+</entity-mappings>
+
Copied: jpamodelgen/trunk/src/test/resources/org/hibernate/jpamodelgen/test/xmlmapped/jpa1-orm.xml (from rev 18677, jpamodelgen/trunk/src/test/resources/META-INF/jpa1-orm.xml)
===================================================================
--- jpamodelgen/trunk/src/test/resources/org/hibernate/jpamodelgen/test/xmlmapped/jpa1-orm.xml (rev 0)
+++ jpamodelgen/trunk/src/test/resources/org/hibernate/jpamodelgen/test/xmlmapped/jpa1-orm.xml 2010-02-08 20:58:20 UTC (rev 18734)
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm orm_1_0.xsd"
+ version="1.0"
+ >
+ <package>org.hibernate.jpamodelgen.test.model</package>
+ <entity class="Airplane" metadata-complete="true" access="PROPERTY">
+ <attributes>
+ <id name="serialNumber"/>
+ </attributes>
+ </entity>
+</entity-mappings>
\ No newline at end of file
Property changes on: jpamodelgen/trunk/src/test/resources/org/hibernate/jpamodelgen/test/xmlmapped/jpa1-orm.xml
___________________________________________________________________
Name: svn:keywords
+ Id
Copied: jpamodelgen/trunk/src/test/resources/org/hibernate/jpamodelgen/test/xmlmapped/malformed-mapping.xml (from rev 18677, jpamodelgen/trunk/src/test/resources/META-INF/malformed-mapping-xml.xml)
===================================================================
--- jpamodelgen/trunk/src/test/resources/org/hibernate/jpamodelgen/test/xmlmapped/malformed-mapping.xml (rev 0)
+++ jpamodelgen/trunk/src/test/resources/org/hibernate/jpamodelgen/test/xmlmapped/malformed-mapping.xml 2010-02-08 20:58:20 UTC (rev 18734)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm orm_2_0.xsd"
+ version="2.0"
+ >
+ <package>org.hibernate.jpamodelgen.test.model</package>
+ <entity class="Dummy" access="FIELD" metadata-complete="true"> <!-- Class does not exist -->
+ <attributes>
+ <id name="id"/>
+ </entity>
+</entity-mappings>
Property changes on: jpamodelgen/trunk/src/test/resources/org/hibernate/jpamodelgen/test/xmlmapped/malformed-mapping.xml
___________________________________________________________________
Name: svn:keywords
+ Id
Modified: jpamodelgen/trunk/src/test/resources/org/hibernate/jpamodelgen/test/xmlmapped/mammal.xml
===================================================================
--- jpamodelgen/trunk/src/test/resources/org/hibernate/jpamodelgen/test/xmlmapped/mammal.xml 2010-02-08 19:27:00 UTC (rev 18733)
+++ jpamodelgen/trunk/src/test/resources/org/hibernate/jpamodelgen/test/xmlmapped/mammal.xml 2010-02-08 20:58:20 UTC (rev 18734)
@@ -8,7 +8,7 @@
<package>org.hibernate.jpamodelgen.test.xmlmapped</package>
<entity class="LivingBeing" access="FIELD" metadata-complete="true">
<attributes>
- <basic name="isReallyAlive"/>
+ <basic name="reallyAlive"/>
</attributes>
</entity>
<entity class="Mammal" access="FIELD" metadata-complete="true">
Copied: jpamodelgen/trunk/src/test/resources/org/hibernate/jpamodelgen/test/xmlmapped/non-existend-class.xml (from rev 18677, jpamodelgen/trunk/src/test/resources/META-INF/dummy.xml)
===================================================================
--- jpamodelgen/trunk/src/test/resources/org/hibernate/jpamodelgen/test/xmlmapped/non-existend-class.xml (rev 0)
+++ jpamodelgen/trunk/src/test/resources/org/hibernate/jpamodelgen/test/xmlmapped/non-existend-class.xml 2010-02-08 20:58:20 UTC (rev 18734)
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm orm_2_0.xsd"
+ version="2.0"
+ >
+ <package>org.hibernate.jpamodelgen.test.model</package>
+ <entity class="Dummy" access="FIELD" metadata-complete="true"> <!-- Class does not exist -->
+ <attributes>
+ <id name="id"/>
+ </attributes>
+ </entity>
+</entity-mappings>
Property changes on: jpamodelgen/trunk/src/test/resources/org/hibernate/jpamodelgen/test/xmlmapped/non-existend-class.xml
___________________________________________________________________
Name: svn:keywords
+ Id
Copied: jpamodelgen/trunk/src/test/resources/org/hibernate/jpamodelgen/test/xmlmapped/persistence.xml (from rev 18677, jpamodelgen/trunk/src/test/resources/META-INF/persistence.xml)
===================================================================
--- jpamodelgen/trunk/src/test/resources/org/hibernate/jpamodelgen/test/xmlmapped/persistence.xml (rev 0)
+++ jpamodelgen/trunk/src/test/resources/org/hibernate/jpamodelgen/test/xmlmapped/persistence.xml 2010-02-08 20:58:20 UTC (rev 18734)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<persistence xmlns="http://java.sun.com/xml/ns/persistence"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/persistence persistence.xsd" version="2.0">
+ <persistence-unit name="annotation-processor" transaction-type="JTA">
+ <mapping-file>/org/hibernate/jpamodelgen/test/xmlmapped/address.xml</mapping-file>
+ <mapping-file>/org/hibernate/jpamodelgen/test/xmlmapped/building.xml</mapping-file>
+ <mapping-file>/org/hibernate/jpamodelgen/test/xmlmapped/mammal.xml</mapping-file>
+ <mapping-file>/org/hibernate/jpamodelgen/test/xmlmapped/boy.xml</mapping-file>
+ </persistence-unit>
+</persistence>
16 years, 2 months
Hibernate SVN: r18733 - in core/trunk: core/src/main/java/org/hibernate/event/def and 10 other directories.
by hibernate-commits@lists.jboss.org
Author: steve.ebersole(a)jboss.com
Date: 2010-02-08 14:27:00 -0500 (Mon, 08 Feb 2010)
New Revision: 18733
Modified:
core/trunk/core/src/main/java/org/hibernate/engine/Cascade.java
core/trunk/core/src/main/java/org/hibernate/engine/Collections.java
core/trunk/core/src/main/java/org/hibernate/engine/ForeignKeys.java
core/trunk/core/src/main/java/org/hibernate/event/def/DefaultDeleteEventListener.java
core/trunk/core/src/main/java/org/hibernate/event/def/DefaultFlushEntityEventListener.java
core/trunk/core/src/main/java/org/hibernate/event/def/DefaultLockEventListener.java
core/trunk/core/src/main/java/org/hibernate/event/def/DefaultMergeEventListener.java
core/trunk/core/src/main/java/org/hibernate/event/def/DefaultRefreshEventListener.java
core/trunk/core/src/main/java/org/hibernate/event/def/DefaultReplicateEventListener.java
core/trunk/core/src/main/java/org/hibernate/event/def/DefaultSaveOrUpdateEventListener.java
core/trunk/core/src/main/java/org/hibernate/id/Assigned.java
core/trunk/core/src/main/java/org/hibernate/impl/StatelessSessionImpl.java
core/trunk/core/src/main/java/org/hibernate/mapping/Component.java
core/trunk/core/src/main/java/org/hibernate/metadata/ClassMetadata.java
core/trunk/core/src/main/java/org/hibernate/persister/entity/AbstractEntityPersister.java
core/trunk/core/src/main/java/org/hibernate/persister/entity/EntityPersister.java
core/trunk/core/src/main/java/org/hibernate/tuple/entity/AbstractEntityTuplizer.java
core/trunk/core/src/main/java/org/hibernate/tuple/entity/Dom4jEntityTuplizer.java
core/trunk/core/src/main/java/org/hibernate/tuple/entity/EntityTuplizer.java
core/trunk/core/src/main/java/org/hibernate/type/CollectionType.java
core/trunk/entitymanager/src/main/java/org/hibernate/ejb/event/EJB3DeleteEventListener.java
core/trunk/envers/src/main/java/org/hibernate/envers/tools/Tools.java
core/trunk/testsuite/src/test/java/org/hibernate/test/legacy/CustomPersister.java
Log:
HHH-4704 - Pass session into EntityTuplizer#setIdentifier
Modified: core/trunk/core/src/main/java/org/hibernate/engine/Cascade.java
===================================================================
--- core/trunk/core/src/main/java/org/hibernate/engine/Cascade.java 2010-02-08 19:14:29 UTC (rev 18732)
+++ core/trunk/core/src/main/java/org/hibernate/engine/Cascade.java 2010-02-08 19:27:00 UTC (rev 18733)
@@ -251,8 +251,7 @@
if ( loadedValue != null ) {
final String entityName = entry.getPersister().getEntityName();
if ( log.isTraceEnabled() ) {
- final Serializable id = entry.getPersister()
- .getIdentifier( loadedValue, eventSource.getEntityMode() );
+ final Serializable id = entry.getPersister().getIdentifier( loadedValue, eventSource );
final String description = MessageHelper.infoString( entityName, id );
log.trace( "deleting orphaned entity instance: " + description );
}
Modified: core/trunk/core/src/main/java/org/hibernate/engine/Collections.java
===================================================================
--- core/trunk/core/src/main/java/org/hibernate/engine/Collections.java 2010-02-08 19:14:29 UTC (rev 18732)
+++ core/trunk/core/src/main/java/org/hibernate/engine/Collections.java 2010-02-08 19:27:00 UTC (rev 18733)
@@ -85,8 +85,7 @@
boolean hasOrphanDelete = loadedPersister != null &&
loadedPersister.hasOrphanDelete();
if (hasOrphanDelete) {
- Serializable ownerId = loadedPersister.getOwnerEntityPersister()
- .getIdentifier( coll.getOwner(), session.getEntityMode() );
+ Serializable ownerId = loadedPersister.getOwnerEntityPersister().getIdentifier( coll.getOwner(), session );
if ( ownerId == null ) {
// the owning entity may have been deleted and its identifier unset due to
// identifier-rollback; in which case, try to look up its identifier from
Modified: core/trunk/core/src/main/java/org/hibernate/engine/ForeignKeys.java
===================================================================
--- core/trunk/core/src/main/java/org/hibernate/engine/ForeignKeys.java 2010-02-08 19:14:29 UTC (rev 18732)
+++ core/trunk/core/src/main/java/org/hibernate/engine/ForeignKeys.java 2010-02-08 19:27:00 UTC (rev 18733)
@@ -209,8 +209,10 @@
if (assumed!=null) return assumed.booleanValue();
// hit the database, after checking the session cache for a snapshot
- Object[] snapshot = session.getPersistenceContext()
- .getDatabaseSnapshot( persister.getIdentifier( entity, session.getEntityMode() ), persister );
+ Object[] snapshot = session.getPersistenceContext().getDatabaseSnapshot(
+ persister.getIdentifier( entity, session ),
+ persister
+ );
return snapshot==null;
}
@@ -244,7 +246,7 @@
(entityName == null ? session.guessEntityName( object ) : entityName)
);
}
- id = session.getEntityPersister( entityName, object ).getIdentifier( object, session.getEntityMode() );
+ id = session.getEntityPersister( entityName, object ).getIdentifier( object, session );
}
return id;
}
Modified: core/trunk/core/src/main/java/org/hibernate/event/def/DefaultDeleteEventListener.java
===================================================================
--- core/trunk/core/src/main/java/org/hibernate/event/def/DefaultDeleteEventListener.java 2010-02-08 19:14:29 UTC (rev 18732)
+++ core/trunk/core/src/main/java/org/hibernate/event/def/DefaultDeleteEventListener.java 2010-02-08 19:27:00 UTC (rev 18733)
@@ -108,7 +108,7 @@
performDetachedEntityDeletionCheck( event );
}
- id = persister.getIdentifier( entity, source.getEntityMode() );
+ id = persister.getIdentifier( entity, source );
if ( id == null ) {
throw new TransientObjectException(
Modified: core/trunk/core/src/main/java/org/hibernate/event/def/DefaultFlushEntityEventListener.java
===================================================================
--- core/trunk/core/src/main/java/org/hibernate/event/def/DefaultFlushEntityEventListener.java 2010-02-08 19:14:29 UTC (rev 18732)
+++ core/trunk/core/src/main/java/org/hibernate/event/def/DefaultFlushEntityEventListener.java 2010-02-08 19:27:00 UTC (rev 18733)
@@ -68,7 +68,7 @@
EntityPersister persister,
Serializable id,
EntityMode entityMode,
- SessionFactoryImplementor factory) throws HibernateException {
+ SessionImplementor session) throws HibernateException {
if ( id != null && id instanceof DelayedPostInsertIdentifier ) {
// this is a situation where the entity id is assigned by a post-insert generator
@@ -78,11 +78,11 @@
if ( persister.canExtractIdOutOfEntity() ) {
- Serializable oid = persister.getIdentifier( object, entityMode );
+ Serializable oid = persister.getIdentifier( object, session );
if (id==null) {
throw new AssertionFailure("null id in " + persister.getEntityName() + " entry (don't flush the Session after an exception occurs)");
}
- if ( !persister.getIdentifierType().isEqual( id, oid, entityMode, factory ) ) {
+ if ( !persister.getIdentifierType().isEqual( id, oid, entityMode, session.getFactory() ) ) {
throw new HibernateException(
"identifier of an instance of " +
persister.getEntityName() +
@@ -174,8 +174,7 @@
EntityEntry entry,
EntityMode entityMode,
boolean mightBeDirty,
- SessionImplementor session
- ) {
+ SessionImplementor session) {
final Object[] loadedState = entry.getLoadedState();
final Status status = entry.getStatus();
final EntityPersister persister = entry.getPersister();
@@ -189,7 +188,7 @@
values = loadedState;
}
else {
- checkId( entity, persister, entry.getId(), entityMode, session.getFactory() );
+ checkId( entity, persister, entry.getId(), entityMode, session );
// grab its current state
values = persister.getPropertyValues( entity, entityMode );
Modified: core/trunk/core/src/main/java/org/hibernate/event/def/DefaultLockEventListener.java
===================================================================
--- core/trunk/core/src/main/java/org/hibernate/event/def/DefaultLockEventListener.java 2010-02-08 19:14:29 UTC (rev 18732)
+++ core/trunk/core/src/main/java/org/hibernate/event/def/DefaultLockEventListener.java 2010-02-08 19:27:00 UTC (rev 18733)
@@ -71,7 +71,7 @@
EntityEntry entry = source.getPersistenceContext().getEntry(entity);
if (entry==null) {
final EntityPersister persister = source.getEntityPersister( event.getEntityName(), entity );
- final Serializable id = persister.getIdentifier( entity, source.getEntityMode() );
+ final Serializable id = persister.getIdentifier( entity, source );
if ( !ForeignKeys.isNotTransient( event.getEntityName(), entity, Boolean.FALSE, source ) ) {
throw new TransientObjectException(
"cannot lock an unsaved transient instance: " +
Modified: core/trunk/core/src/main/java/org/hibernate/event/def/DefaultMergeEventListener.java
===================================================================
--- core/trunk/core/src/main/java/org/hibernate/event/def/DefaultMergeEventListener.java 2010-02-08 19:14:29 UTC (rev 18732)
+++ core/trunk/core/src/main/java/org/hibernate/event/def/DefaultMergeEventListener.java 2010-02-08 19:27:00 UTC (rev 18733)
@@ -209,7 +209,7 @@
EntityEntry entry = source.getPersistenceContext().getEntry( entity );
if ( entry == null ) {
EntityPersister persister = source.getEntityPersister( event.getEntityName(), entity );
- Serializable id = persister.getIdentifier( entity, source.getEntityMode() );
+ Serializable id = persister.getIdentifier( entity, source );
if ( id != null ) {
EntityKey key = new EntityKey( id, persister, source.getEntityMode() );
Object managedEntity = source.getPersistenceContext().getEntity( key );
@@ -289,7 +289,7 @@
final EntityPersister persister = source.getEntityPersister( entityName, entity );
final Serializable id = persister.hasIdentifierProperty() ?
- persister.getIdentifier( entity, source.getEntityMode() ) :
+ persister.getIdentifier( entity, source ) :
null;
if ( copyCache.containsKey( entity ) ) {
persister.setIdentifier( copyCache.get( entity ), id, source );
@@ -367,11 +367,11 @@
Serializable id = event.getRequestedId();
if ( id == null ) {
- id = persister.getIdentifier( entity, source.getEntityMode() );
+ id = persister.getIdentifier( entity, source );
}
else {
// check that entity id = requestedId
- Serializable entityId = persister.getIdentifier( entity, source.getEntityMode() );
+ Serializable entityId = persister.getIdentifier( entity, source );
if ( !persister.getIdentifierType().isEqual( id, entityId, source.getEntityMode(), source.getFactory() ) ) {
throw new HibernateException( "merge requested with id not matching id of passed entity" );
}
@@ -468,7 +468,7 @@
private boolean existsInDatabase(Object entity, EventSource source, EntityPersister persister) {
EntityEntry entry = source.getPersistenceContext().getEntry( entity );
if ( entry == null ) {
- Serializable id = persister.getIdentifier( entity, source.getEntityMode() );
+ Serializable id = persister.getIdentifier( entity, source );
if ( id != null ) {
EntityKey key = new EntityKey( id, persister, source.getEntityMode() );
Object managedEntity = source.getPersistenceContext().getEntity( key );
Modified: core/trunk/core/src/main/java/org/hibernate/event/def/DefaultRefreshEventListener.java
===================================================================
--- core/trunk/core/src/main/java/org/hibernate/event/def/DefaultRefreshEventListener.java 2010-02-08 19:14:29 UTC (rev 18732)
+++ core/trunk/core/src/main/java/org/hibernate/event/def/DefaultRefreshEventListener.java 2010-02-08 19:27:00 UTC (rev 18733)
@@ -92,7 +92,7 @@
if ( e == null ) {
persister = source.getEntityPersister(null, object); //refresh() does not pass an entityName
- id = persister.getIdentifier( object, event.getSession().getEntityMode() );
+ id = persister.getIdentifier( object, event.getSession() );
if ( log.isTraceEnabled() ) {
log.trace(
"refreshing transient " +
Modified: core/trunk/core/src/main/java/org/hibernate/event/def/DefaultReplicateEventListener.java
===================================================================
--- core/trunk/core/src/main/java/org/hibernate/event/def/DefaultReplicateEventListener.java 2010-02-08 19:14:29 UTC (rev 18732)
+++ core/trunk/core/src/main/java/org/hibernate/event/def/DefaultReplicateEventListener.java 2010-02-08 19:27:00 UTC (rev 18733)
@@ -83,7 +83,7 @@
/*if ( persister.isUnsaved(entity, source) ) {
throw new TransientObjectException("transient instance passed to replicate()");
}*/
- Serializable id = persister.getIdentifier( entity, source.getEntityMode() );
+ Serializable id = persister.getIdentifier( entity, source );
if ( id == null ) {
throw new TransientObjectException( "instance with null id passed to replicate()" );
}
Modified: core/trunk/core/src/main/java/org/hibernate/event/def/DefaultSaveOrUpdateEventListener.java
===================================================================
--- core/trunk/core/src/main/java/org/hibernate/event/def/DefaultSaveOrUpdateEventListener.java 2010-02-08 19:14:29 UTC (rev 18732)
+++ core/trunk/core/src/main/java/org/hibernate/event/def/DefaultSaveOrUpdateEventListener.java 2010-02-08 19:27:00 UTC (rev 18733)
@@ -265,7 +265,7 @@
Serializable requestedId,
SessionImplementor session) {
// use the id assigned to the instance
- Serializable id = persister.getIdentifier( entity, session.getEntityMode() );
+ Serializable id = persister.getIdentifier( entity, session );
if ( id == null ) {
// assume this is a newly instantiated transient object
// which should be saved rather than updated
Modified: core/trunk/core/src/main/java/org/hibernate/id/Assigned.java
===================================================================
--- core/trunk/core/src/main/java/org/hibernate/id/Assigned.java 2010-02-08 19:14:29 UTC (rev 18732)
+++ core/trunk/core/src/main/java/org/hibernate/id/Assigned.java 2010-02-08 19:27:00 UTC (rev 18733)
@@ -47,25 +47,20 @@
private String entityName;
public Serializable generate(SessionImplementor session, Object obj) throws HibernateException {
-
- final Serializable id = session.getEntityPersister( entityName, obj )
- //TODO: cache the persister, this shows up in yourkit
- .getIdentifier( obj, session.getEntityMode() );
-
- if (id==null) {
+ //TODO: cache the persister, this shows up in yourkit
+ final Serializable id = session.getEntityPersister( entityName, obj ).getIdentifier( obj, session );
+ if ( id == null ) {
throw new IdentifierGenerationException(
- "ids for this class must be manually assigned before calling save(): " +
- entityName
+ "ids for this class must be manually assigned before calling save(): " + entityName
);
}
return id;
}
- public void configure(Type type, Properties params, Dialect d)
- throws MappingException {
+ public void configure(Type type, Properties params, Dialect d) throws MappingException {
entityName = params.getProperty(ENTITY_NAME);
- if (entityName==null) {
+ if ( entityName == null ) {
throw new MappingException("no entity name");
}
}
Modified: core/trunk/core/src/main/java/org/hibernate/impl/StatelessSessionImpl.java
===================================================================
--- core/trunk/core/src/main/java/org/hibernate/impl/StatelessSessionImpl.java 2010-02-08 19:14:29 UTC (rev 18732)
+++ core/trunk/core/src/main/java/org/hibernate/impl/StatelessSessionImpl.java 2010-02-08 19:27:00 UTC (rev 18733)
@@ -129,7 +129,7 @@
public void delete(String entityName, Object entity) {
errorIfClosed();
EntityPersister persister = getEntityPersister(entityName, entity);
- Serializable id = persister.getIdentifier(entity, EntityMode.POJO);
+ Serializable id = persister.getIdentifier( entity, this );
Object version = persister.getVersion(entity, EntityMode.POJO);
persister.delete(id, version, entity, this);
}
@@ -145,7 +145,7 @@
public void update(String entityName, Object entity) {
errorIfClosed();
EntityPersister persister = getEntityPersister(entityName, entity);
- Serializable id = persister.getIdentifier(entity, EntityMode.POJO);
+ Serializable id = persister.getIdentifier( entity, this );
Object[] state = persister.getPropertyValues(entity, EntityMode.POJO);
Object oldVersion;
if ( persister.isVersioned() ) {
@@ -197,7 +197,7 @@
public void refresh(String entityName, Object entity, LockMode lockMode) {
final EntityPersister persister = this.getEntityPersister( entityName, entity );
- final Serializable id = persister.getIdentifier( entity, getEntityMode() );
+ final Serializable id = persister.getIdentifier( entity, this );
if ( log.isTraceEnabled() ) {
log.trace(
"refreshing transient " +
Modified: core/trunk/core/src/main/java/org/hibernate/mapping/Component.java
===================================================================
--- core/trunk/core/src/main/java/org/hibernate/mapping/Component.java 2010-02-08 19:14:29 UTC (rev 18732)
+++ core/trunk/core/src/main/java/org/hibernate/mapping/Component.java 2010-02-08 19:27:00 UTC (rev 18733)
@@ -419,8 +419,7 @@
}
public Serializable locateGenerationContext(SessionImplementor session, Object incomingObject) {
- return session.getEntityPersister( entityName, incomingObject )
- .getIdentifier( incomingObject, session.getEntityMode() );
+ return session.getEntityPersister( entityName, incomingObject ).getIdentifier( incomingObject, session );
}
}
Modified: core/trunk/core/src/main/java/org/hibernate/metadata/ClassMetadata.java
===================================================================
--- core/trunk/core/src/main/java/org/hibernate/metadata/ClassMetadata.java 2010-02-08 19:14:29 UTC (rev 18732)
+++ core/trunk/core/src/main/java/org/hibernate/metadata/ClassMetadata.java 2010-02-08 19:27:00 UTC (rev 18733)
@@ -195,10 +195,22 @@
/**
* Get the identifier of an instance (throw an exception if no identifier property)
+ * @deprecated Use {@link #getIdentifier(Object,SessionImplementor)} instead
+ * @noinspection JavaDoc
*/
- public Serializable getIdentifier(Object entity, EntityMode entityMode) throws HibernateException;
+ public Serializable getIdentifier(Object object, EntityMode entityMode) throws HibernateException;
/**
+ * Get the identifier of an instance (throw an exception if no identifier property)
+ *
+ * @param entity The entity for which to get the identifier
+ * @param session The session from which the request originated
+ *
+ * @return The identifier
+ */
+ public Serializable getIdentifier(Object entity, SessionImplementor session);
+
+ /**
* Inject the identifier value into the given entity.
* </p>
* Has no effect if the entity does not define an identifier property
Modified: core/trunk/core/src/main/java/org/hibernate/persister/entity/AbstractEntityPersister.java
===================================================================
--- core/trunk/core/src/main/java/org/hibernate/persister/entity/AbstractEntityPersister.java 2010-02-08 19:14:29 UTC (rev 18732)
+++ core/trunk/core/src/main/java/org/hibernate/persister/entity/AbstractEntityPersister.java 2010-02-08 19:27:00 UTC (rev 18733)
@@ -3514,7 +3514,7 @@
public Boolean isTransient(Object entity, SessionImplementor session) throws HibernateException {
final Serializable id;
if ( canExtractIdOutOfEntity() ) {
- id = getIdentifier( entity, session.getEntityMode() );
+ id = getIdentifier( entity, session );
}
else {
id = null;
@@ -3796,11 +3796,14 @@
return getTuplizer( entityMode ).getPropertyValue( object, propertyName );
}
- public Serializable getIdentifier(Object object, EntityMode entityMode)
- throws HibernateException {
- return getTuplizer( entityMode ).getIdentifier( object );
+ public Serializable getIdentifier(Object object, EntityMode entityMode) throws HibernateException {
+ return getTuplizer( entityMode ).getIdentifier( object, null );
}
+ public Serializable getIdentifier(Object entity, SessionImplementor session) {
+ return getTuplizer( session.getEntityMode() ).getIdentifier( entity, session );
+ }
+
/**
* {@inheritDoc}
*/
Modified: core/trunk/core/src/main/java/org/hibernate/persister/entity/EntityPersister.java
===================================================================
--- core/trunk/core/src/main/java/org/hibernate/persister/entity/EntityPersister.java 2010-02-08 19:14:29 UTC (rev 18732)
+++ core/trunk/core/src/main/java/org/hibernate/persister/entity/EntityPersister.java 2010-02-08 19:27:00 UTC (rev 18733)
@@ -652,9 +652,21 @@
/**
* Get the identifier of an instance (throw an exception if no identifier property)
+ * @deprecated Use {@link #getIdentifier(Object,SessionImplementor)} instead
+ * @noinspection JavaDoc
*/
public Serializable getIdentifier(Object object, EntityMode entityMode) throws HibernateException;
+ /**
+ * Get the identifier of an instance (throw an exception if no identifier property)
+ *
+ * @param entity The entity for which to get the identifier
+ * @param session The session from which the request originated
+ *
+ * @return The identifier
+ */
+ public Serializable getIdentifier(Object entity, SessionImplementor session);
+
/**
* Inject the identifier value into the given entity.
* </p>
Modified: core/trunk/core/src/main/java/org/hibernate/tuple/entity/AbstractEntityTuplizer.java
===================================================================
--- core/trunk/core/src/main/java/org/hibernate/tuple/entity/AbstractEntityTuplizer.java 2010-02-08 19:14:29 UTC (rev 18732)
+++ core/trunk/core/src/main/java/org/hibernate/tuple/entity/AbstractEntityTuplizer.java 2010-02-08 19:27:00 UTC (rev 18733)
@@ -28,12 +28,20 @@
import java.util.Map;
import java.util.Set;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import org.hibernate.EntityMode;
import org.hibernate.HibernateException;
import org.hibernate.MappingException;
+import org.hibernate.engine.Cascade;
+import org.hibernate.engine.EntityEntry;
import org.hibernate.engine.EntityKey;
import org.hibernate.engine.SessionFactoryImplementor;
import org.hibernate.engine.SessionImplementor;
+import org.hibernate.event.EventSource;
+import org.hibernate.event.PersistEvent;
+import org.hibernate.event.SaveOrUpdateEvent;
import org.hibernate.id.Assigned;
import org.hibernate.intercept.LazyPropertyInitializer;
import org.hibernate.mapping.Component;
@@ -42,6 +50,7 @@
import org.hibernate.persister.entity.EntityPersister;
import org.hibernate.property.Getter;
import org.hibernate.property.Setter;
+import org.hibernate.proxy.HibernateProxy;
import org.hibernate.proxy.ProxyFactory;
import org.hibernate.tuple.Instantiator;
import org.hibernate.tuple.StandardProperty;
@@ -60,6 +69,8 @@
*/
public abstract class AbstractEntityTuplizer implements EntityTuplizer {
+ private static final Logger log = LoggerFactory.getLogger( AbstractEntityTuplizer.class );
+
//TODO: currently keeps Getters and Setters (instead of PropertyAccessors) because of the way getGetter() and getSetter() are implemented currently; yuck!
private final EntityMetamodel entityMetamodel;
@@ -198,6 +209,10 @@
}
public Serializable getIdentifier(Object entity) throws HibernateException {
+ return getIdentifier( entity, null );
+ }
+
+ public Serializable getIdentifier(Object entity, SessionImplementor session) {
final Object id;
if ( entityMetamodel.getIdentifierProperty().isEmbedded() ) {
id = entity;
@@ -208,7 +223,7 @@
throw new HibernateException( "The class has no identifier property: " + getEntityName() );
}
else {
- id = mappedIdentifierValueMarshaller.getIdentifier( entity, getEntityMode(), getFactory() );
+ id = mappedIdentifierValueMarshaller.getIdentifier( entity, getEntityMode(), session );
}
}
else {
@@ -255,13 +270,13 @@
idSetter.set( entity, id, getFactory() );
}
else if ( identifierMapperType != null ) {
- mappedIdentifierValueMarshaller.setIdentifier( entity, id, session );
+ mappedIdentifierValueMarshaller.setIdentifier( entity, id, getEntityMode(), session );
}
}
private static interface MappedIdentifierValueMarshaller {
- public Object getIdentifier(Object entity, EntityMode entityMode, SessionFactoryImplementor factory);
- public void setIdentifier(Object entity, Serializable id, SessionImplementor session);
+ public Object getIdentifier(Object entity, EntityMode entityMode, SessionImplementor session);
+ public void setIdentifier(Object entity, Serializable id, EntityMode entityMode, SessionImplementor session);
}
private final MappedIdentifierValueMarshaller mappedIdentifierValueMarshaller;
@@ -304,18 +319,18 @@
this.mappedIdentifierType = mappedIdentifierType;
}
- public Object getIdentifier(Object entity, EntityMode entityMode, SessionFactoryImplementor factory) {
+ public Object getIdentifier(Object entity, EntityMode entityMode, SessionImplementor session) {
Object id = mappedIdentifierType.instantiate( entityMode );
final Object[] propertyValues = virtualIdComponent.getPropertyValues( entity, entityMode );
mappedIdentifierType.setPropertyValues( id, propertyValues, entityMode );
return id;
}
- public void setIdentifier(Object entity, Serializable id, SessionImplementor session) {
+ public void setIdentifier(Object entity, Serializable id, EntityMode entityMode, SessionImplementor session) {
virtualIdComponent.setPropertyValues(
entity,
mappedIdentifierType.getPropertyValues( id, session ),
- session.getEntityMode()
+ entityMode
);
}
}
@@ -329,47 +344,79 @@
this.mappedIdentifierType = mappedIdentifierType;
}
- public Object getIdentifier(Object entity, EntityMode entityMode, SessionFactoryImplementor factory) {
- Object id = mappedIdentifierType.instantiate( entityMode );
+ public Object getIdentifier(Object entity, EntityMode entityMode, SessionImplementor session) {
+ final Object id = mappedIdentifierType.instantiate( entityMode );
final Object[] propertyValues = virtualIdComponent.getPropertyValues( entity, entityMode );
- Type[] subTypes = virtualIdComponent.getSubtypes();
- Type[] copierSubTypes = mappedIdentifierType.getSubtypes();
+ final Type[] subTypes = virtualIdComponent.getSubtypes();
+ final Type[] copierSubTypes = mappedIdentifierType.getSubtypes();
final int length = subTypes.length;
for ( int i = 0 ; i < length; i++ ) {
if ( propertyValues[i] == null ) {
- continue;
+ throw new HibernateException( "No part of a composite identifier may be null" );
}
- //JPA 2 in @IdClass points to the pk of the entity
+ //JPA 2 @MapsId + @IdClass points to the pk of the entity
if ( subTypes[i].isAssociationType() && ! copierSubTypes[i].isAssociationType() ) {
- final String associatedEntityName = ( ( EntityType ) subTypes[i] ).getAssociatedEntityName();
- final EntityPersister entityPersister = factory.getEntityPersister( associatedEntityName );
- propertyValues[i] = entityPersister.getIdentifier( propertyValues[i], entityMode );
+ // we need a session to handle this use case
+ if ( session == null ) {
+ throw new AssertionError(
+ "Deprecated version of getIdentifier (no session) was used but session was required"
+ );
+ }
+ final Object subId;
+ if ( HibernateProxy.class.isInstance( propertyValues[i] ) ) {
+ subId = ( (HibernateProxy) propertyValues[i] ).getHibernateLazyInitializer().getIdentifier();
+ }
+ else {
+ EntityEntry pcEntry = session.getPersistenceContext().getEntry( propertyValues[i] );
+ if ( pcEntry != null ) {
+ subId = pcEntry.getId();
+ }
+ else {
+ log.debug( "Performing implicit derived identity cascade" );
+ final PersistEvent event = new PersistEvent( null, propertyValues[i], (EventSource) session );
+ for ( int x = 0; x < session.getListeners().getPersistEventListeners().length; x++ ) {
+ session.getListeners().getPersistEventListeners()[x].onPersist( event );
+
+ }
+ pcEntry = session.getPersistenceContext().getEntry( propertyValues[i] );
+ if ( pcEntry == null || pcEntry.getId() == null ) {
+ throw new HibernateException( "Unable to process implicit derived identity cascade" );
+ }
+ else {
+ subId = pcEntry.getId();
+ }
+ }
+ }
+ propertyValues[i] = subId;
}
}
mappedIdentifierType.setPropertyValues( id, propertyValues, entityMode );
return id;
}
- public void setIdentifier(Object entity, Serializable id, SessionImplementor session) {
- final Object[] extractedValues = mappedIdentifierType.getPropertyValues( id, session.getEntityMode() );
+ public void setIdentifier(Object entity, Serializable id, EntityMode entityMode, SessionImplementor session) {
+ final Object[] extractedValues = mappedIdentifierType.getPropertyValues( id, entityMode );
final Object[] injectionValues = new Object[ extractedValues.length ];
for ( int i = 0; i < virtualIdComponent.getSubtypes().length; i++ ) {
final Type virtualPropertyType = virtualIdComponent.getSubtypes()[i];
final Type idClassPropertyType = mappedIdentifierType.getSubtypes()[i];
if ( virtualPropertyType.isEntityType() && ! idClassPropertyType.isEntityType() ) {
+ if ( session == null ) {
+ throw new AssertionError(
+ "Deprecated version of getIdentifier (no session) was used but session was required"
+ );
+ }
final String associatedEntityName = ( (EntityType) virtualPropertyType ).getAssociatedEntityName();
final EntityKey entityKey = new EntityKey(
(Serializable) extractedValues[i],
session.getFactory().getEntityPersister( associatedEntityName ),
- session.getEntityMode()
+ entityMode
);
// it is conceivable there is a proxy, so check that first
- Object association = session.getPersistenceContext()
- .getProxy( entityKey );
+ Object association = session.getPersistenceContext().getProxy( entityKey );
if ( association == null ) {
// otherwise look for an initialized version
- association = session.getPersistenceContext()
- .getEntity( entityKey );
+ association = session.getPersistenceContext().getEntity( entityKey );
}
injectionValues[i] = association;
}
Modified: core/trunk/core/src/main/java/org/hibernate/tuple/entity/Dom4jEntityTuplizer.java
===================================================================
--- core/trunk/core/src/main/java/org/hibernate/tuple/entity/Dom4jEntityTuplizer.java 2010-02-08 19:14:29 UTC (rev 18732)
+++ core/trunk/core/src/main/java/org/hibernate/tuple/entity/Dom4jEntityTuplizer.java 2010-02-08 19:27:00 UTC (rev 18733)
@@ -24,6 +24,7 @@
*/
package org.hibernate.tuple.entity;
+import org.hibernate.engine.SessionImplementor;
import org.hibernate.mapping.PersistentClass;
import org.hibernate.mapping.Property;
import org.hibernate.proxy.ProxyFactory;
@@ -117,15 +118,22 @@
* {@inheritDoc}
*/
public Serializable getIdentifier(Object entityOrId) throws HibernateException {
- if (entityOrId instanceof Element) {
- return super.getIdentifier(entityOrId);
+ return getIdentifier( entityOrId, null );
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Serializable getIdentifier(Object entityOrId, SessionImplementor session) {
+ if ( entityOrId instanceof Element ) {
+ return super.getIdentifier( entityOrId, session );
}
else {
//it was not embedded, so the argument is just an id
return (Serializable) entityOrId;
}
}
-
+
/**
* {@inheritDoc}
*/
Modified: core/trunk/core/src/main/java/org/hibernate/tuple/entity/EntityTuplizer.java
===================================================================
--- core/trunk/core/src/main/java/org/hibernate/tuple/entity/EntityTuplizer.java 2010-02-08 19:14:29 UTC (rev 18732)
+++ core/trunk/core/src/main/java/org/hibernate/tuple/entity/EntityTuplizer.java 2010-02-08 19:27:00 UTC (rev 18733)
@@ -79,13 +79,27 @@
* Extract the identifier value from the given entity.
*
* @param entity The entity from which to extract the identifier value.
+ *
* @return The identifier value.
+ *
* @throws HibernateException If the entity does not define an identifier property, or an
- * error occurrs accessing its value.
+ * error occurs accessing its value.
+ *
+ * @deprecated Use {@link #getIdentifier(Object,SessionImplementor)} instead.
*/
public Serializable getIdentifier(Object entity) throws HibernateException;
/**
+ * Extract the identifier value from the given entity.
+ *
+ * @param entity The entity from which to extract the identifier value.
+ * @param session The session from which is requests originates
+ *
+ * @return The identifier value.
+ */
+ public Serializable getIdentifier(Object entity, SessionImplementor session);
+
+ /**
* Inject the identifier value into the given entity.
* </p>
* Has no effect if the entity does not define an identifier property
Modified: core/trunk/core/src/main/java/org/hibernate/type/CollectionType.java
===================================================================
--- core/trunk/core/src/main/java/org/hibernate/type/CollectionType.java 2010-02-08 19:14:29 UTC (rev 18732)
+++ core/trunk/core/src/main/java/org/hibernate/type/CollectionType.java 2010-02-08 19:27:00 UTC (rev 18733)
@@ -403,7 +403,7 @@
if ( ownerMappedClass.isAssignableFrom( keyType.getReturnedClass() ) &&
keyType.getReturnedClass().isInstance( key ) ) {
// the key is the owning entity itself, so get the ID from the key
- ownerId = ownerPersister.getIdentifier( key, session.getEntityMode() );
+ ownerId = ownerPersister.getIdentifier( key, session );
}
else {
// TODO: check if key contains the owner ID
Modified: core/trunk/entitymanager/src/main/java/org/hibernate/ejb/event/EJB3DeleteEventListener.java
===================================================================
--- core/trunk/entitymanager/src/main/java/org/hibernate/ejb/event/EJB3DeleteEventListener.java 2010-02-08 19:14:29 UTC (rev 18732)
+++ core/trunk/entitymanager/src/main/java/org/hibernate/ejb/event/EJB3DeleteEventListener.java 2010-02-08 19:27:00 UTC (rev 18733)
@@ -60,7 +60,7 @@
EventSource source = event.getSession();
String entityName = event.getEntityName();
EntityPersister persister = source.getEntityPersister( entityName, event.getObject() );
- Serializable id = persister.getIdentifier( event.getObject(), source.getEntityMode() );
+ Serializable id = persister.getIdentifier( event.getObject(), source );
entityName = entityName == null ? source.guessEntityName( event.getObject() ) : entityName;
throw new IllegalArgumentException("Removing a detached instance "+ entityName + "#" + id);
}
Modified: core/trunk/envers/src/main/java/org/hibernate/envers/tools/Tools.java
===================================================================
--- core/trunk/envers/src/main/java/org/hibernate/envers/tools/Tools.java 2010-02-08 19:14:29 UTC (rev 18732)
+++ core/trunk/envers/src/main/java/org/hibernate/envers/tools/Tools.java 2010-02-08 19:27:00 UTC (rev 18733)
@@ -64,7 +64,7 @@
}
- return session.getEntityPersister(null, obj).getIdentifier(obj, session.getEntityMode());
+ return session.getEntityPersister( null, obj ).getIdentifier( obj, session );
}
public static Object getTargetFromProxy(SessionFactoryImplementor sessionFactoryImplementor, HibernateProxy proxy) {
Modified: core/trunk/testsuite/src/test/java/org/hibernate/test/legacy/CustomPersister.java
===================================================================
--- core/trunk/testsuite/src/test/java/org/hibernate/test/legacy/CustomPersister.java 2010-02-08 19:14:29 UTC (rev 18732)
+++ core/trunk/testsuite/src/test/java/org/hibernate/test/legacy/CustomPersister.java 2010-02-08 19:27:00 UTC (rev 18733)
@@ -182,6 +182,11 @@
return ( (Custom) object ).id;
}
+ public Serializable getIdentifier(Object entity, SessionImplementor session) {
+ checkEntityMode( session );
+ return ( (Custom) entity ).id;
+ }
+
public void setIdentifier(Object object, Serializable id, EntityMode entityMode) throws HibernateException {
checkEntityMode( entityMode );
( (Custom) object ).id = (String) id;
16 years, 2 months
Hibernate SVN: r18732 - in core/trunk/annotations/src: test/java/org/hibernate/test/annotations/derivedidentities and 2 other directories.
by hibernate-commits@lists.jboss.org
Author: epbernard
Date: 2010-02-08 14:14:29 -0500 (Mon, 08 Feb 2010)
New Revision: 18732
Added:
core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e1/b2/
Removed:
core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/complex/
Modified:
core/trunk/annotations/src/main/java/org/hibernate/cfg/AnnotationBinder.java
core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e1/b2/Customer.java
core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e1/b2/CustomerInventory.java
core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e1/b2/CustomerInventoryPK.java
core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e1/b2/IdClassGeneratedValueManyToOneTest.java
core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e1/b2/Item.java
Log:
HHH-4889 if the @IdClass support the legacy approach ie the reference to the association in the IdClass (as opposed to its pk), treat it the old way
Modified: core/trunk/annotations/src/main/java/org/hibernate/cfg/AnnotationBinder.java
===================================================================
--- core/trunk/annotations/src/main/java/org/hibernate/cfg/AnnotationBinder.java 2010-02-08 18:44:26 UTC (rev 18731)
+++ core/trunk/annotations/src/main/java/org/hibernate/cfg/AnnotationBinder.java 2010-02-08 19:14:29 UTC (rev 18732)
@@ -2201,8 +2201,11 @@
+ idClassPropertyData.getPropertyName()
);
}
- if ( entityPropertyData.getProperty().isAnnotationPresent( ManyToOne.class )
- || entityPropertyData.getProperty().isAnnotationPresent( OneToOne.class ) ) {
+ final boolean hasXToOneAnnotation = entityPropertyData.getProperty()
+ .isAnnotationPresent( ManyToOne.class )
+ || entityPropertyData.getProperty().isAnnotationPresent( OneToOne.class );
+ final boolean isOfDifferentType = ! entityPropertyData.getClassOrElement().equals( idClassPropertyData.getClassOrElement() );
+ if ( hasXToOneAnnotation && isOfDifferentType ) {
//don't replace here as we need to use the actual original return type
//the annotation overriding will be dealt with by a mechanism similar to @MapsId
}
Copied: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e1/b2 (from rev 18731, core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/complex)
Modified: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e1/b2/Customer.java
===================================================================
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/complex/Customer.java 2010-02-08 18:44:26 UTC (rev 18731)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e1/b2/Customer.java 2010-02-08 19:14:29 UTC (rev 18732)
@@ -1,4 +1,4 @@
-package org.hibernate.test.annotations.derivedidentities.complex;
+package org.hibernate.test.annotations.derivedidentities.e1.b2;
import java.io.Serializable;
import java.math.BigDecimal;
@@ -6,11 +6,8 @@
import java.util.Calendar;
import java.util.List;
-import javax.persistence.AttributeOverride;
-import javax.persistence.AttributeOverrides;
import javax.persistence.CascadeType;
import javax.persistence.Column;
-import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
Modified: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e1/b2/CustomerInventory.java
===================================================================
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/complex/CustomerInventory.java 2010-02-08 18:44:26 UTC (rev 18731)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e1/b2/CustomerInventory.java 2010-02-08 19:14:29 UTC (rev 18732)
@@ -1,4 +1,4 @@
-package org.hibernate.test.annotations.derivedidentities.complex;
+package org.hibernate.test.annotations.derivedidentities.e1.b2;
import java.io.Serializable;
import java.math.BigDecimal;
@@ -20,99 +20,103 @@
import javax.persistence.Version;
@NamedQueries({
- @NamedQuery(name="CustomerInventory.selectAll",
- query="select a from CustomerInventory a")
+ @NamedQuery(name = "CustomerInventory.selectAll",
+ query = "select a from CustomerInventory a")
})
@SuppressWarnings("serial")
-@Entity
-@Table(name="O_CUSTINVENTORY")
+@Entity
+@Table(name = "O_CUSTINVENTORY")
@IdClass(CustomerInventoryPK.class)
public class CustomerInventory implements Serializable, Comparator<CustomerInventory> {
-
- @Id
- @TableGenerator(name="inventory",
- table="U_SEQUENCES",
- pkColumnName="S_ID",
- valueColumnName="S_NEXTNUM",
- pkColumnValue="inventory",
- allocationSize=1000)
- @GeneratedValue(strategy=GenerationType.TABLE,generator="inventory")
- @Column(name="CI_ID")
- private Integer id;
-
- @Id
- @ManyToOne(cascade=CascadeType.MERGE)
- @JoinColumn(name="CI_CUSTOMERID")
- private Customer customer;
+ @Id
+ @TableGenerator(name = "inventory",
+ table = "U_SEQUENCES",
+ pkColumnName = "S_ID",
+ valueColumnName = "S_NEXTNUM",
+ pkColumnValue = "inventory",
+ allocationSize = 1000)
+ @GeneratedValue(strategy = GenerationType.TABLE, generator = "inventory")
+ @Column(name = "CI_ID")
+ private Integer id;
- @ManyToOne(cascade=CascadeType.MERGE)
- @JoinColumn(name = "CI_ITEMID")
- private Item vehicle;
- @Column(name="CI_VALUE")
- private BigDecimal totalCost;
+ @Id
+ @ManyToOne(cascade = CascadeType.MERGE)
+ @JoinColumn(name = "CI_CUSTOMERID")
+ private Customer customer;
- @Column(name="CI_QUANTITY")
- private int quantity;
+ @ManyToOne(cascade = CascadeType.MERGE)
+ @JoinColumn(name = "CI_ITEMID")
+ private Item vehicle;
- @Version
- @Column(name = "CI_VERSION")
- private int version;
+ @Column(name = "CI_VALUE")
+ private BigDecimal totalCost;
- protected CustomerInventory() {
- }
+ @Column(name = "CI_QUANTITY")
+ private int quantity;
- CustomerInventory(Customer customer, Item vehicle, int quantity , BigDecimal totalValue)
- {
- this.customer = customer;
- this.vehicle = vehicle;
- this.quantity = quantity;
- this.totalCost = totalValue;
- }
+ @Version
+ @Column(name = "CI_VERSION")
+ private int version;
- public Item getVehicle() {
- return vehicle;
- }
+ protected CustomerInventory() {
+ }
- public BigDecimal getTotalCost() {
- return totalCost;
- }
+ CustomerInventory(Customer customer, Item vehicle, int quantity, BigDecimal totalValue) {
+ this.customer = customer;
+ this.vehicle = vehicle;
+ this.quantity = quantity;
+ this.totalCost = totalValue;
+ }
- public int getQuantity() {
- return quantity;
- }
+ public Item getVehicle() {
+ return vehicle;
+ }
- public Integer getId() {
- return id;
- }
+ public BigDecimal getTotalCost() {
+ return totalCost;
+ }
- public Customer getCustomer() {
- return customer;
- }
+ public int getQuantity() {
+ return quantity;
+ }
- public int getVersion() {
- return version;
- }
+ public Integer getId() {
+ return id;
+ }
- public int compare(CustomerInventory cdb1, CustomerInventory cdb2) {
- return cdb1.id.compareTo(cdb2.id);
- }
+ public Customer getCustomer() {
+ return customer;
+ }
- @Override
- public boolean equals (Object obj) {
- if (obj == this)
- return true;
- if (obj == null || !(obj instanceof CustomerInventory))
- return false;
- if (this.id == ((CustomerInventory)obj).id)
- return true;
- if (this.id != null && ((CustomerInventory)obj).id == null)
- return false;
- if (this.id == null && ((CustomerInventory)obj).id != null)
- return false;
+ public int getVersion() {
+ return version;
+ }
- return this.id.equals(((CustomerInventory)obj).id);
- }
+ public int compare(CustomerInventory cdb1, CustomerInventory cdb2) {
+ return cdb1.id.compareTo( cdb2.id );
+ }
+ @Override
+ public boolean equals(Object obj) {
+ if ( obj == this ) {
+ return true;
+ }
+ if ( obj == null || !( obj instanceof CustomerInventory ) ) {
+ return false;
+ }
+ if ( this.id == ( ( CustomerInventory ) obj ).id ) {
+ return true;
+ }
+ if ( this.id != null && ( ( CustomerInventory ) obj ).id == null ) {
+ return false;
+ }
+ if ( this.id == null && ( ( CustomerInventory ) obj ).id != null ) {
+ return false;
+ }
+
+ return this.id.equals( ( ( CustomerInventory ) obj ).id );
+ }
+
}
Modified: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e1/b2/CustomerInventoryPK.java
===================================================================
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/complex/CustomerInventoryPK.java 2010-02-08 18:44:26 UTC (rev 18731)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e1/b2/CustomerInventoryPK.java 2010-02-08 19:14:29 UTC (rev 18732)
@@ -1,45 +1,45 @@
-package org.hibernate.test.annotations.derivedidentities.complex;
+package org.hibernate.test.annotations.derivedidentities.e1.b2;
import java.io.Serializable;
public class CustomerInventoryPK implements Serializable {
- private Integer id;
+ private Integer id;
- private Customer customer;
+ private Customer customer;
- public CustomerInventoryPK() {
- }
+ public CustomerInventoryPK() {
+ }
- public CustomerInventoryPK(Integer id, Customer customer) {
- this.id = id;
- this.customer = customer;
- }
+ public CustomerInventoryPK(Integer id, Customer customer) {
+ this.id = id;
+ this.customer = customer;
+ }
- public boolean equals(Object other) {
- if (other == this) {
- return true;
- }
- if (other == null || getClass() != other.getClass()) {
- return false;
- }
- CustomerInventoryPK cip = (CustomerInventoryPK) other;
- return (getCustomer().getId() == cip.getCustomer().getId() && (id == cip.id ||
- ( id != null && id.equals(cip.id))));
- }
+ public boolean equals(Object other) {
+ if ( other == this ) {
+ return true;
+ }
+ if ( other == null || getClass() != other.getClass() ) {
+ return false;
+ }
+ CustomerInventoryPK cip = ( CustomerInventoryPK ) other;
+ return ( getCustomer().getId() == cip.getCustomer().getId() && ( id == cip.id ||
+ ( id != null && id.equals( cip.id ) ) ) );
+ }
- public int hashCode() {
- return (id == null ? 0 : id.hashCode()) ^ getCustomer().getId();
- }
+ public int hashCode() {
+ return ( id == null ? 0 : id.hashCode() ) ^ getCustomer().getId();
+ }
- public Integer getId() {
- return id;
- }
+ public Integer getId() {
+ return id;
+ }
- public Customer getCustomer() {
- return customer;
- }
+ public Customer getCustomer() {
+ return customer;
+ }
}
Modified: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e1/b2/IdClassGeneratedValueManyToOneTest.java
===================================================================
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/complex/IdClassGeneratedValueManyToOneTest.java 2010-02-08 18:44:26 UTC (rev 18731)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e1/b2/IdClassGeneratedValueManyToOneTest.java 2010-02-08 19:14:29 UTC (rev 18732)
@@ -1,70 +1,67 @@
-package org.hibernate.test.annotations.derivedidentities.complex;
+package org.hibernate.test.annotations.derivedidentities.e1.b2;
import java.math.BigDecimal;
import java.util.List;
-import org.apache.log4j.Level;
-import org.apache.log4j.Logger;
import org.hibernate.Session;
import org.hibernate.Transaction;
+import org.hibernate.junit.FailureExpected;
import org.hibernate.test.annotations.TestCase;
-import org.hibernate.junit.FailureExpected;
/**
* A test.
- *
+ *
* @author <a href="mailto:stale.pedersen@jboss.org">Stale W. Pedersen</a>
* @version $Revision: 1.1 $
*/
-public class IdClassGeneratedValueManyToOneTest extends TestCase
-{
- @FailureExpected(jiraKey="HHH-4848")
- public void testComplexIdClass()
- {
- Logger.getLogger("org.hibernate").setLevel(Level.TRACE);
- Session s = openSession();
- Transaction tx = s.beginTransaction();
-
- Customer c1 = new Customer("foo", "bar", "contact1", "100", new BigDecimal(1000),new BigDecimal(1000), new BigDecimal(1000));
+public class IdClassGeneratedValueManyToOneTest extends TestCase {
- s.persist(c1);
- Item boat = new Item();
- boat.setId("1");
- boat.setName("cruiser");
- boat.setPrice(new BigDecimal(500));
- boat.setDescription("a boat");
- boat.setCategory(42);
-
- s.persist(boat);
- s.flush();
- s.clear();
-
- c1.addInventory(boat, 10, new BigDecimal(5000));
- s.merge(c1);
- s.flush();
- s.clear();
+ @FailureExpected(jiraKey="HHH-4890")
+ public void testComplexIdClass() {
+ Session s = openSession();
+ Transaction tx = s.beginTransaction();
- Customer c2 = (Customer) s.createQuery( "select c from Customer c" ).uniqueResult();
+ Customer c1 = new Customer(
+ "foo", "bar", "contact1", "100", new BigDecimal( 1000 ), new BigDecimal( 1000 ), new BigDecimal( 1000 )
+ );
- List<CustomerInventory> inventory = c2.getInventories();
-
- assertEquals(1, inventory.size());
- assertEquals(10, inventory.get(0).getQuantity());
-
- tx.rollback();
- s.close();
-
- assertTrue(true);
- }
-
- protected Class[] getAnnotatedClasses()
- {
- return new Class[] {
- Customer.class,
- CustomerInventory.class,
- CustomerInventoryPK.class,
- Item.class
-
- };
- }
+ s.persist( c1 );
+ Item boat = new Item();
+ boat.setId( "1" );
+ boat.setName( "cruiser" );
+ boat.setPrice( new BigDecimal( 500 ) );
+ boat.setDescription( "a boat" );
+ boat.setCategory( 42 );
+
+ s.persist( boat );
+ s.flush();
+ s.clear();
+
+ c1.addInventory( boat, 10, new BigDecimal( 5000 ) );
+ s.merge( c1 );
+ s.flush();
+ s.clear();
+
+ Customer c2 = ( Customer ) s.createQuery( "select c from Customer c" ).uniqueResult();
+
+ List<CustomerInventory> inventory = c2.getInventories();
+
+ assertEquals( 1, inventory.size() );
+ assertEquals( 10, inventory.get( 0 ).getQuantity() );
+
+ tx.rollback();
+ s.close();
+
+ assertTrue( true );
+ }
+
+ protected Class[] getAnnotatedClasses() {
+ return new Class[] {
+ Customer.class,
+ CustomerInventory.class,
+ CustomerInventoryPK.class,
+ Item.class
+
+ };
+ }
}
Modified: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e1/b2/Item.java
===================================================================
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/complex/Item.java 2010-02-08 18:44:26 UTC (rev 18731)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e1/b2/Item.java 2010-02-08 19:14:29 UTC (rev 18732)
@@ -1,4 +1,4 @@
-package org.hibernate.test.annotations.derivedidentities.complex;
+package org.hibernate.test.annotations.derivedidentities.e1.b2;
import java.io.Serializable;
import java.math.BigDecimal;
16 years, 2 months
Hibernate SVN: r18731 - in core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities: complex and 1 other directory.
by hibernate-commits@lists.jboss.org
Author: stalep
Date: 2010-02-08 13:44:26 -0500 (Mon, 08 Feb 2010)
New Revision: 18731
Added:
core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/complex/
core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/complex/Customer.java
core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/complex/CustomerInventory.java
core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/complex/CustomerInventoryPK.java
core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/complex/IdClassGeneratedValueManyToOneTest.java
core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/complex/Item.java
Log:
[HHH-4848]
added an example that derive from entities not defined with component key
Added: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/complex/Customer.java
===================================================================
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/complex/Customer.java (rev 0)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/complex/Customer.java 2010-02-08 18:44:26 UTC (rev 18731)
@@ -0,0 +1,217 @@
+package org.hibernate.test.annotations.derivedidentities.complex;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.List;
+
+import javax.persistence.AttributeOverride;
+import javax.persistence.AttributeOverrides;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Embedded;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.Id;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+import javax.persistence.Version;
+
+@SuppressWarnings("serial")
+@NamedQueries({
+ @NamedQuery(name=Customer.QUERY_ALL,
+ query="select a from Customer a"),
+ @NamedQuery(name=Customer.QUERY_COUNT,
+ query="select COUNT(a) from Customer a"),
+ @NamedQuery(name=Customer.QUERY_BY_CREDIT,
+ query="SELECT c.id FROM Customer c WHERE c.creditLimit > :limit")
+})
+@Entity
+@Table(name="O_CUSTOMER")
+public class Customer implements Serializable {
+ public static final String QUERY_ALL = "Customer.selectAll";
+ public static final String QUERY_COUNT = "Customer.count";
+ public static final String QUERY_BY_CREDIT = "Customer.selectByCreditLimit";
+
+ public static final String BAD_CREDIT = "BC";
+
+ @Id
+ @Column(name="C_ID")
+ private int id;
+
+ @Column(name="C_FIRST")
+ private String firstName;
+
+ @Column(name="C_LAST")
+ private String lastName;
+
+ @Column(name="C_CONTACT")
+ private String contact;
+
+ @Column(name="C_CREDIT")
+ private String credit;
+
+ @Column(name="C_CREDIT_LIMIT")
+ private BigDecimal creditLimit;
+
+ @Column(name="C_SINCE")
+ @Temporal(TemporalType.DATE)
+ private Calendar since;
+
+ @Column(name="C_BALANCE")
+ private BigDecimal balance;
+
+ @Column(name="C_YTD_PAYMENT")
+ private BigDecimal ytdPayment;
+
+ @OneToMany(targetEntity=CustomerInventory.class, mappedBy="customer", cascade=CascadeType.ALL, fetch=FetchType.EAGER)
+ private List<CustomerInventory> customerInventories;
+
+
+ @Version
+ @Column(name = "C_VERSION")
+ private int version;
+
+ protected Customer() {
+ }
+
+ public Customer(String first, String last,
+ String contact, String credit, BigDecimal creditLimit,
+ BigDecimal balance, BigDecimal YtdPayment) {
+
+ this.firstName = first;
+ this.lastName = last;
+ this.contact = contact;
+ this.since = Calendar.getInstance();
+ this.credit = credit;
+ this.creditLimit = creditLimit;
+ this.balance = balance;
+ this.ytdPayment = YtdPayment;
+ }
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer customerId) {
+ this.id = customerId;
+ }
+
+ public String getFirstName() {
+ return firstName;
+ }
+
+ public void setFirstName(String firstName) {
+ this.firstName = firstName;
+ }
+
+ public String getLastName() {
+ return lastName;
+ }
+
+ public void setLastName(String lastName) {
+ this.lastName = lastName;
+ }
+
+ public String getContact() {
+ return contact;
+ }
+
+ public void setContact(String contact) {
+ this.contact = contact;
+ }
+
+ public String getCredit() {
+ return credit;
+ }
+
+ public void setCredit(String credit) {
+ this.credit = credit;
+ }
+
+ public BigDecimal getCreditLimit() {
+ return creditLimit;
+ }
+
+ public void setCreditLimit(BigDecimal creditLimit) {
+ this.creditLimit = creditLimit;
+ }
+
+ public Calendar getSince() {
+ return since;
+ }
+
+ public void setSince(Calendar since) {
+ this.since = since;
+ }
+
+ public BigDecimal getBalance() {
+ return balance;
+ }
+
+ public void setBalance(BigDecimal balance) {
+ this.balance = balance;
+ }
+
+ public void changeBalance(BigDecimal change) {
+ setBalance(balance.add(change).setScale(2, BigDecimal.ROUND_DOWN));
+ }
+
+ public BigDecimal getYtdPayment() {
+ return ytdPayment;
+ }
+
+ public void setYtdPayment(BigDecimal ytdPayment) {
+ this.ytdPayment = ytdPayment;
+ }
+
+ public List<CustomerInventory> getInventories() {
+ if (customerInventories == null){
+ customerInventories = new ArrayList<CustomerInventory>();
+ }
+ return customerInventories;
+ }
+
+ public CustomerInventory addInventory(Item item, int quantity,
+ BigDecimal totalValue) {
+
+ CustomerInventory inventory = new CustomerInventory(this, item,
+ quantity, totalValue);
+ getInventories().add(inventory);
+ return inventory;
+ }
+
+ public int getVersion() {
+ return version;
+ }
+
+ public boolean hasSufficientCredit(BigDecimal amount) {
+ return !BAD_CREDIT.equals(getCredit())
+ && creditLimit != null
+ && creditLimit.compareTo(amount) >= 0;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o)
+ return true;
+ if (o == null || getClass() != o.getClass())
+ return false;
+ return id == ((Customer) o).id;
+ }
+
+ @Override
+ public int hashCode() {
+ return new Integer(id).hashCode();
+ }
+
+ @Override
+ public String toString() {
+ return this.getFirstName() + " " + this.getLastName();
+ }
+}
Property changes on: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/complex/Customer.java
___________________________________________________________________
Name: svn:executable
+ *
Added: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/complex/CustomerInventory.java
===================================================================
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/complex/CustomerInventory.java (rev 0)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/complex/CustomerInventory.java 2010-02-08 18:44:26 UTC (rev 18731)
@@ -0,0 +1,118 @@
+package org.hibernate.test.annotations.derivedidentities.complex;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Comparator;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.IdClass;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.Table;
+import javax.persistence.TableGenerator;
+import javax.persistence.Version;
+
+@NamedQueries({
+ @NamedQuery(name="CustomerInventory.selectAll",
+ query="select a from CustomerInventory a")
+})
+@SuppressWarnings("serial")
+@Entity
+@Table(name="O_CUSTINVENTORY")
+(a)IdClass(CustomerInventoryPK.class)
+public class CustomerInventory implements Serializable, Comparator<CustomerInventory> {
+
+ @Id
+ @TableGenerator(name="inventory",
+ table="U_SEQUENCES",
+ pkColumnName="S_ID",
+ valueColumnName="S_NEXTNUM",
+ pkColumnValue="inventory",
+ allocationSize=1000)
+ @GeneratedValue(strategy=GenerationType.TABLE,generator="inventory")
+ @Column(name="CI_ID")
+ private Integer id;
+
+
+ @Id
+ @ManyToOne(cascade=CascadeType.MERGE)
+ @JoinColumn(name="CI_CUSTOMERID")
+ private Customer customer;
+
+ @ManyToOne(cascade=CascadeType.MERGE)
+ @JoinColumn(name = "CI_ITEMID")
+ private Item vehicle;
+
+ @Column(name="CI_VALUE")
+ private BigDecimal totalCost;
+
+ @Column(name="CI_QUANTITY")
+ private int quantity;
+
+ @Version
+ @Column(name = "CI_VERSION")
+ private int version;
+
+ protected CustomerInventory() {
+ }
+
+ CustomerInventory(Customer customer, Item vehicle, int quantity , BigDecimal totalValue)
+ {
+ this.customer = customer;
+ this.vehicle = vehicle;
+ this.quantity = quantity;
+ this.totalCost = totalValue;
+ }
+
+ public Item getVehicle() {
+ return vehicle;
+ }
+
+ public BigDecimal getTotalCost() {
+ return totalCost;
+ }
+
+ public int getQuantity() {
+ return quantity;
+ }
+
+ public Integer getId() {
+ return id;
+ }
+
+ public Customer getCustomer() {
+ return customer;
+ }
+
+ public int getVersion() {
+ return version;
+ }
+
+ public int compare(CustomerInventory cdb1, CustomerInventory cdb2) {
+ return cdb1.id.compareTo(cdb2.id);
+ }
+
+ @Override
+ public boolean equals (Object obj) {
+ if (obj == this)
+ return true;
+ if (obj == null || !(obj instanceof CustomerInventory))
+ return false;
+ if (this.id == ((CustomerInventory)obj).id)
+ return true;
+ if (this.id != null && ((CustomerInventory)obj).id == null)
+ return false;
+ if (this.id == null && ((CustomerInventory)obj).id != null)
+ return false;
+
+ return this.id.equals(((CustomerInventory)obj).id);
+ }
+
+}
Property changes on: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/complex/CustomerInventory.java
___________________________________________________________________
Name: svn:executable
+ *
Added: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/complex/CustomerInventoryPK.java
===================================================================
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/complex/CustomerInventoryPK.java (rev 0)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/complex/CustomerInventoryPK.java 2010-02-08 18:44:26 UTC (rev 18731)
@@ -0,0 +1,45 @@
+package org.hibernate.test.annotations.derivedidentities.complex;
+
+import java.io.Serializable;
+
+
+public class CustomerInventoryPK implements Serializable {
+
+ private Integer id;
+
+ private Customer customer;
+
+ public CustomerInventoryPK() {
+ }
+
+ public CustomerInventoryPK(Integer id, Customer customer) {
+ this.id = id;
+ this.customer = customer;
+ }
+
+ public boolean equals(Object other) {
+ if (other == this) {
+ return true;
+ }
+ if (other == null || getClass() != other.getClass()) {
+ return false;
+ }
+ CustomerInventoryPK cip = (CustomerInventoryPK) other;
+ return (getCustomer().getId() == cip.getCustomer().getId() && (id == cip.id ||
+ ( id != null && id.equals(cip.id))));
+ }
+
+ public int hashCode() {
+ return (id == null ? 0 : id.hashCode()) ^ getCustomer().getId();
+ }
+
+ public Integer getId() {
+ return id;
+ }
+
+ public Customer getCustomer() {
+ return customer;
+ }
+
+
+}
Property changes on: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/complex/CustomerInventoryPK.java
___________________________________________________________________
Name: svn:executable
+ *
Added: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/complex/IdClassGeneratedValueManyToOneTest.java
===================================================================
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/complex/IdClassGeneratedValueManyToOneTest.java (rev 0)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/complex/IdClassGeneratedValueManyToOneTest.java 2010-02-08 18:44:26 UTC (rev 18731)
@@ -0,0 +1,70 @@
+package org.hibernate.test.annotations.derivedidentities.complex;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+import org.apache.log4j.Level;
+import org.apache.log4j.Logger;
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+import org.hibernate.test.annotations.TestCase;
+
+import org.hibernate.junit.FailureExpected;
+/**
+ * A test.
+ *
+ * @author <a href="mailto:stale.pedersen@jboss.org">Stale W. Pedersen</a>
+ * @version $Revision: 1.1 $
+ */
+public class IdClassGeneratedValueManyToOneTest extends TestCase
+{
+ @FailureExpected(jiraKey="HHH-4848")
+ public void testComplexIdClass()
+ {
+ Logger.getLogger("org.hibernate").setLevel(Level.TRACE);
+ Session s = openSession();
+ Transaction tx = s.beginTransaction();
+
+ Customer c1 = new Customer("foo", "bar", "contact1", "100", new BigDecimal(1000),new BigDecimal(1000), new BigDecimal(1000));
+
+ s.persist(c1);
+ Item boat = new Item();
+ boat.setId("1");
+ boat.setName("cruiser");
+ boat.setPrice(new BigDecimal(500));
+ boat.setDescription("a boat");
+ boat.setCategory(42);
+
+ s.persist(boat);
+ s.flush();
+ s.clear();
+
+ c1.addInventory(boat, 10, new BigDecimal(5000));
+ s.merge(c1);
+ s.flush();
+ s.clear();
+
+ Customer c2 = (Customer) s.createQuery( "select c from Customer c" ).uniqueResult();
+
+ List<CustomerInventory> inventory = c2.getInventories();
+
+ assertEquals(1, inventory.size());
+ assertEquals(10, inventory.get(0).getQuantity());
+
+ tx.rollback();
+ s.close();
+
+ assertTrue(true);
+ }
+
+ protected Class[] getAnnotatedClasses()
+ {
+ return new Class[] {
+ Customer.class,
+ CustomerInventory.class,
+ CustomerInventoryPK.class,
+ Item.class
+
+ };
+ }
+}
Property changes on: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/complex/IdClassGeneratedValueManyToOneTest.java
___________________________________________________________________
Name: svn:executable
+ *
Added: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/complex/Item.java
===================================================================
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/complex/Item.java (rev 0)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/complex/Item.java 2010-02-08 18:44:26 UTC (rev 18731)
@@ -0,0 +1,120 @@
+package org.hibernate.test.annotations.derivedidentities.complex;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.Table;
+import javax.persistence.Version;
+
+
+
+ @NamedQueries( {
+ @NamedQuery(name = "Item.findByCategory",
+ query = "SELECT i FROM Item i WHERE i.category=:category ORDER BY i.id")})
+ @SuppressWarnings("serial")
+ @Entity
+ @Table(name = "O_ITEM")
+ public class Item implements Serializable
+ {
+
+ public static final String QUERY_BY_CATEGORY = "Item.findByCategory";
+
+ @Id
+ @Column(name = "I_ID")
+ private String id;
+
+ @Column(name = "I_NAME")
+ private String name;
+
+ @Column(name = "I_PRICE")
+ private BigDecimal price;
+
+ @Column(name = "I_DESC")
+ private String description;
+
+ @Column(name = "I_DISCOUNT")
+ private BigDecimal discount;
+
+ @Column(name = "I_CATEGORY")
+ private int category;
+
+ @Version
+ @Column(name = "I_VERSION")
+ int version;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String i) {
+ id = i;
+ }
+
+ public int getCategory() {
+ return category;
+ }
+
+ public void setCategory(int category) {
+ this.category = category;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public BigDecimal getDiscount() {
+ return discount;
+ }
+
+ public void setDiscount(BigDecimal discount) {
+ if (discount.doubleValue() < 0 || discount.doubleValue() > 100.0)
+ throw new IllegalArgumentException(this + " discount " + discount
+ + " is invalid. Must be between 0.0 and 100.0");
+ this.discount = discount;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public BigDecimal getPrice() {
+ return price;
+ }
+
+ public void setPrice(BigDecimal price) {
+ this.price = price;
+ }
+
+ public int getVersion() {
+ return version;
+ }
+
+ @Override
+ public boolean equals(Object other) {
+ if (other == null || other.getClass() != this.getClass()) {
+ return false;
+ }
+ if (other == this) {
+ return true;
+ }
+ return id.equals(((Item) other).id);
+ }
+
+ @Override
+ public int hashCode() {
+ return id.hashCode();
+ }
+}
Property changes on: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/complex/Item.java
___________________________________________________________________
Name: svn:executable
+ *
16 years, 2 months
Hibernate SVN: r18730 - core/trunk/annotations/src/main/java/org/hibernate/cfg.
by hibernate-commits@lists.jboss.org
Author: epbernard
Date: 2010-02-08 08:22:43 -0500 (Mon, 08 Feb 2010)
New Revision: 18730
Modified:
core/trunk/annotations/src/main/java/org/hibernate/cfg/AnnotationBinder.java
Log:
HHH-4887 force PERSIST cascading when @XToOne is used in a @IdClass case.
Modified: core/trunk/annotations/src/main/java/org/hibernate/cfg/AnnotationBinder.java
===================================================================
--- core/trunk/annotations/src/main/java/org/hibernate/cfg/AnnotationBinder.java 2010-02-08 11:07:39 UTC (rev 18729)
+++ core/trunk/annotations/src/main/java/org/hibernate/cfg/AnnotationBinder.java 2010-02-08 13:22:43 UTC (rev 18730)
@@ -1431,7 +1431,8 @@
);
}
else {
- final boolean isMapsId = property.isAnnotationPresent( MapsId.class );
+ final boolean forcePersist = property.isAnnotationPresent( MapsId.class )
+ || property.isAnnotationPresent( Id.class );
if ( property.isAnnotationPresent( ManyToOne.class ) ) {
ManyToOne ann = property.getAnnotation( ManyToOne.class );
@@ -1454,9 +1455,9 @@
joinColumn.setSecondaryTableName( join.getTable().getName() );
}
}
- final boolean mandatory = !ann.optional() || isMapsId;
+ final boolean mandatory = !ann.optional() || forcePersist;
bindManyToOne(
- getCascadeStrategy( ann.cascade(), hibernateCascade, false, isMapsId),
+ getCascadeStrategy( ann.cascade(), hibernateCascade, false, forcePersist),
joinColumns,
!mandatory,
ignoreNotFound, onDeleteCascade,
@@ -1492,9 +1493,9 @@
}
}
//MapsId means the columns belong to the pk => not null
- final boolean mandatory = !ann.optional() || isMapsId;
+ final boolean mandatory = !ann.optional() || forcePersist;
bindOneToOne(
- getCascadeStrategy( ann.cascade(), hibernateCascade, ann.orphanRemoval(), isMapsId),
+ getCascadeStrategy( ann.cascade(), hibernateCascade, ann.orphanRemoval(), forcePersist),
joinColumns,
!mandatory,
getFetchMode( ann.fetch() ),
@@ -1529,7 +1530,7 @@
joinColumn.setSecondaryTableName( join.getTable().getName() );
}
}
- bindAny( getCascadeStrategy( null, hibernateCascade, false, isMapsId), //@Any has not cascade attribute
+ bindAny( getCascadeStrategy( null, hibernateCascade, false, forcePersist), //@Any has not cascade attribute
joinColumns, onDeleteCascade, nullability,
propertyHolder, inferredData, entityBinder,
isIdentifierMapper, mappings );
@@ -2661,7 +2662,7 @@
private static String getCascadeStrategy(
javax.persistence.CascadeType[] ejbCascades, Cascade hibernateCascadeAnnotation,
- boolean orphanRemoval, boolean mapsId) {
+ boolean orphanRemoval, boolean forcePersist) {
EnumSet<CascadeType> hibernateCascadeSet = convertToHibernateCascadeType( ejbCascades );
CascadeType[] hibernateCascades = hibernateCascadeAnnotation == null ?
null :
@@ -2675,7 +2676,7 @@
hibernateCascadeSet.add(CascadeType.DELETE_ORPHAN);
hibernateCascadeSet.add(CascadeType.REMOVE);
}
- if (mapsId) {
+ if (forcePersist) {
hibernateCascadeSet.add(CascadeType.PERSIST);
}
16 years, 2 months