Hibernate SVN: r19019 - in validator/trunk/hibernate-validator/src: test/java/org/hibernate/validator/engine/groups and 1 other directory.
by hibernate-commits@lists.jboss.org
Author: hardy.ferentschik
Date: 2010-03-18 12:36:03 -0400 (Thu, 18 Mar 2010)
New Revision: 19019
Modified:
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/engine/groups/Group.java
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/engine/groups/GroupChainGenerator.java
validator/trunk/hibernate-validator/src/test/java/org/hibernate/validator/engine/groups/GroupChainGeneratorTest.java
validator/trunk/hibernate-validator/src/test/java/org/hibernate/validator/engine/groups/GroupChainTest.java
validator/trunk/hibernate-validator/src/test/java/org/hibernate/validator/engine/groups/GroupsTest.java
validator/trunk/hibernate-validator/src/test/java/org/hibernate/validator/engine/groups/Try.java
Log:
HV-288 - fixed GroupChainGenerator to also take into account inherited groups.
Modified: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/engine/groups/Group.java
===================================================================
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/engine/groups/Group.java 2010-03-18 14:02:38 UTC (rev 19018)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/engine/groups/Group.java 2010-03-18 16:36:03 UTC (rev 19019)
@@ -80,9 +80,6 @@
@Override
public String toString() {
- return "Group{" +
- "groups=" + group +
- ", sequence=" + sequence +
- '}';
+ return "Group{" + "group=" + group.getName() + '}';
}
}
Modified: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/engine/groups/GroupChainGenerator.java
===================================================================
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/engine/groups/GroupChainGenerator.java 2010-03-18 14:02:38 UTC (rev 19018)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/engine/groups/GroupChainGenerator.java 2010-03-18 16:36:03 UTC (rev 19019)
@@ -27,7 +27,7 @@
import javax.validation.ValidationException;
/**
- * Used to determine the execution order.
+ * Helper class used to resolve groups and sequences into a single chain of groups which can then be validated.
*
* @author Hardy Ferentschik
*/
@@ -35,6 +35,13 @@
private final Map<Class<?>, List<Group>> resolvedSequences = new HashMap<Class<?>, List<Group>>();
+ /**
+ * Generates a chain of groups to be validated given the specified validation groups.
+ *
+ * @param groups The groups specified at the validation call.
+ *
+ * @return an instance of {@code GroupChain} defining the order in which validation has to occur.
+ */
public GroupChain getGroupChainFor(Collection<Class<?>> groups) {
if ( groups == null || groups.size() == 0 ) {
throw new IllegalArgumentException( "At least one groups has to be specified." );
@@ -48,24 +55,34 @@
GroupChain chain = new GroupChain();
for ( Class<?> clazz : groups ) {
- if ( clazz.getAnnotation( GroupSequence.class ) == null ) {
+ if ( isGroupSequence( clazz ) ) {
+ insertSequence( clazz, chain );
+ }
+ else {
Group group = new Group( clazz );
chain.insertGroup( group );
insertInheritedGroups( clazz, chain );
}
- else {
- insertSequence( clazz, chain );
- }
}
return chain;
}
+ private boolean isGroupSequence(Class<?> clazz) {
+ return clazz.getAnnotation( GroupSequence.class ) != null;
+ }
+
+ /**
+ * Recursively add inherited groups into the group chain.
+ *
+ * @param clazz The group interface
+ * @param chain The group chain we are currently building.
+ */
private void insertInheritedGroups(Class<?> clazz, GroupChain chain) {
- for ( Class<?> extendedInterface : clazz.getInterfaces() ) {
- Group group = new Group( extendedInterface );
+ for ( Class<?> inheritedGroup : clazz.getInterfaces() ) {
+ Group group = new Group( inheritedGroup );
chain.insertGroup( group );
- insertInheritedGroups( extendedInterface, chain );
+ insertInheritedGroups( inheritedGroup, chain );
}
}
@@ -76,10 +93,34 @@
}
else {
sequence = resolveSequence( clazz, new ArrayList<Class<?>>() );
+ // we expand the inherited groups only after we determined whether the sequence is expandable
+ sequence = expandInhertitedGroups( sequence );
}
chain.insertSequence( sequence );
}
+ private List<Group> expandInhertitedGroups(List<Group> sequence) {
+ List<Group> expandedGroup = new ArrayList<Group>();
+ for ( Group group : sequence ) {
+ expandedGroup.add( group );
+ addInheritedGroups( group, expandedGroup );
+ }
+ return expandedGroup;
+ }
+
+ private void addInheritedGroups(Group group, List<Group> expandedGroups) {
+ for ( Class<?> inheritedGroup : group.getGroup().getInterfaces() ) {
+ if ( isGroupSequence( inheritedGroup ) ) {
+ throw new GroupDefinitionException(
+ "Sequence definitions are not allowed as composing parts of a sequence."
+ );
+ }
+ Group g = new Group( inheritedGroup, group.getSequence() );
+ expandedGroups.add( g );
+ addInheritedGroups( g, expandedGroups );
+ }
+ }
+
private List<Group> resolveSequence(Class<?> group, List<Class<?>> processedSequences) {
if ( processedSequences.contains( group ) ) {
throw new GroupDefinitionException( "Cyclic dependency in groups definition" );
@@ -91,24 +132,36 @@
GroupSequence sequenceAnnotation = group.getAnnotation( GroupSequence.class );
Class<?>[] sequenceArray = sequenceAnnotation.value();
for ( Class<?> clazz : sequenceArray ) {
- if ( clazz.getAnnotation( GroupSequence.class ) == null ) {
- resolvedGroupSequence.add( new Group( clazz, group ) );
+ if ( isGroupSequence( clazz ) ) {
+ List<Group> tmpSequence = resolveSequence( clazz, processedSequences );
+ addGroups( resolvedGroupSequence, tmpSequence );
}
else {
- List<Group> tmpSequence = resolveSequence( clazz, processedSequences );
- addTmpSequence( resolvedGroupSequence, tmpSequence );
+ List<Group> list = new ArrayList<Group>();
+ list.add( new Group( clazz, group ) );
+ addGroups( resolvedGroupSequence, list );
}
}
resolvedSequences.put( group, resolvedGroupSequence );
return resolvedGroupSequence;
}
- private void addTmpSequence(List<Group> resolvedGroupSequence, List<Group> tmpSequence) {
- for ( Group tmpGroup : tmpSequence ) {
- if ( resolvedGroupSequence.contains( tmpGroup ) && resolvedGroupSequence.indexOf( tmpGroup ) < resolvedGroupSequence.size() - 1 ) {
- throw new GroupDefinitionException( "Unable to expand group sequence." );
+ private void addGroups(List<Group> resolvedGroupSequence, List<Group> groups) {
+ for ( Group tmpGroup : groups ) {
+ if ( resolvedGroupSequence.contains( tmpGroup ) && resolvedGroupSequence.indexOf( tmpGroup ) < resolvedGroupSequence
+ .size() - 1 ) {
+ throw new GroupDefinitionException( "Unable to expand group sequence." );
}
resolvedGroupSequence.add( tmpGroup );
}
}
+
+ @Override
+ public String toString() {
+ final StringBuilder sb = new StringBuilder();
+ sb.append( "GroupChainGenerator" );
+ sb.append( "{resolvedSequences=" ).append( resolvedSequences );
+ sb.append( '}' );
+ return sb.toString();
+ }
}
Modified: validator/trunk/hibernate-validator/src/test/java/org/hibernate/validator/engine/groups/GroupChainGeneratorTest.java
===================================================================
--- validator/trunk/hibernate-validator/src/test/java/org/hibernate/validator/engine/groups/GroupChainGeneratorTest.java 2010-03-18 14:02:38 UTC (rev 19018)
+++ validator/trunk/hibernate-validator/src/test/java/org/hibernate/validator/engine/groups/GroupChainGeneratorTest.java 2010-03-18 16:36:03 UTC (rev 19019)
@@ -21,13 +21,16 @@
import java.util.Iterator;
import java.util.List;
import java.util.Set;
+import javax.validation.GroupDefinitionException;
+import javax.validation.GroupSequence;
import javax.validation.ValidationException;
import javax.validation.groups.Default;
-import static org.testng.Assert.assertEquals;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
+import static org.testng.Assert.assertEquals;
+
/**
* @author Hardy Ferentschik
*/
@@ -97,17 +100,28 @@
assertEquals( count, 2, "Wrong number of groups" );
}
- private int countGroups(GroupChain chain) {
- Iterator<Group> groupIterator = chain.getGroupIterator();
- int count = 0;
- while ( groupIterator.hasNext() ) {
- groupIterator.next();
- count++;
- }
- return count;
+ @Test(expectedExceptions = GroupDefinitionException.class)
+ public void testGroupDefiningSequencePartOfGroupComposingSequence() {
+ Set<Class<?>> groups = new HashSet<Class<?>>();
+ groups.add( Sequence1.class );
+ generator.getGroupChainFor( groups );
}
+ @Test(expectedExceptions = GroupDefinitionException.class)
+ public void testUnexpandableSequence() {
+ Set<Class<?>> groups = new HashSet<Class<?>>();
+ groups.add( Sequence3.class );
+ generator.getGroupChainFor( groups );
+ }
+
@Test
+ public void testExpandableSequenceWithInheritance() {
+ Set<Class<?>> groups = new HashSet<Class<?>>();
+ groups.add( Sequence4.class );
+ generator.getGroupChainFor( groups );
+ }
+
+ @Test
public void testSequenceResolution() {
Set<Class<?>> groups = new HashSet<Class<?>>();
groups.add( Address.Complete.class );
@@ -118,4 +132,40 @@
assertEquals( sequence.get( 0 ).getGroup(), Default.class, "Wrong group" );
assertEquals( sequence.get( 1 ).getGroup(), Address.HighLevelCoherence.class, "Wrong group" );
}
+
+ private int countGroups(GroupChain chain) {
+ Iterator<Group> groupIterator = chain.getGroupIterator();
+ int count = 0;
+ while ( groupIterator.hasNext() ) {
+ groupIterator.next();
+ count++;
+ }
+ return count;
+ }
+
+
+ interface GroupA extends Default {
+ }
+
+ interface GroupB {
+ }
+
+ interface GroupC extends Sequence2 {
+ }
+
+ @GroupSequence({ GroupA.class, GroupC.class })
+ interface Sequence1 {
+ }
+
+ @GroupSequence({ GroupB.class, GroupA.class })
+ interface Sequence2 {
+ }
+
+ @GroupSequence({ Sequence2.class, GroupB.class })
+ interface Sequence3 {
+ }
+
+ @GroupSequence({ Sequence2.class, GroupA.class })
+ interface Sequence4 {
+ }
}
Modified: validator/trunk/hibernate-validator/src/test/java/org/hibernate/validator/engine/groups/GroupChainTest.java
===================================================================
--- validator/trunk/hibernate-validator/src/test/java/org/hibernate/validator/engine/groups/GroupChainTest.java 2010-03-18 14:02:38 UTC (rev 19018)
+++ validator/trunk/hibernate-validator/src/test/java/org/hibernate/validator/engine/groups/GroupChainTest.java 2010-03-18 16:36:03 UTC (rev 19019)
@@ -90,7 +90,7 @@
@Test
- public void testAssertDefaulGroupSequenceIsExpandableWithDefaultAtBeginningOfSequence() {
+ public void testAssertDefaultGroupSequenceIsExpandableWithDefaultAtBeginningOfSequence() {
// create a dummy sequence
Group a = new Group( GroupA.class, TestSequence.class );
Group b = new Group( GroupB.class, TestSequence.class );
Modified: validator/trunk/hibernate-validator/src/test/java/org/hibernate/validator/engine/groups/GroupsTest.java
===================================================================
--- validator/trunk/hibernate-validator/src/test/java/org/hibernate/validator/engine/groups/GroupsTest.java 2010-03-18 14:02:38 UTC (rev 19018)
+++ validator/trunk/hibernate-validator/src/test/java/org/hibernate/validator/engine/groups/GroupsTest.java 2010-03-18 16:36:03 UTC (rev 19019)
@@ -32,6 +32,9 @@
*/
public class GroupsTest {
+ /**
+ * HV-288
+ */
@Test
public void testGroupInheritance() {
Validator validator = TestUtil.getValidator();
@@ -40,6 +43,6 @@
tryMe.field3 = "bar";
Set<ConstraintViolation<Try>> violations = validator.validate( tryMe, Try.GlobalCheck.class );
- //assertCorrectConstraintViolationMessages(violations, "field1");
+ assertCorrectConstraintViolationMessages(violations, "field1");
}
}
\ No newline at end of file
Modified: validator/trunk/hibernate-validator/src/test/java/org/hibernate/validator/engine/groups/Try.java
===================================================================
--- validator/trunk/hibernate-validator/src/test/java/org/hibernate/validator/engine/groups/Try.java 2010-03-18 14:02:38 UTC (rev 19018)
+++ validator/trunk/hibernate-validator/src/test/java/org/hibernate/validator/engine/groups/Try.java 2010-03-18 16:36:03 UTC (rev 19019)
@@ -33,7 +33,6 @@
@NotNull(message = "field3", groups = OtherComponent.class)
public String field3;
-
public interface BaseComponent {
}
14 years, 2 months
Hibernate SVN: r19017 - search/trunk/hibernate-search/src/main/java/org/hibernate/search/engine.
by hibernate-commits@lists.jboss.org
Author: sannegrinovero
Date: 2010-03-17 17:29:44 -0400 (Wed, 17 Mar 2010)
New Revision: 19017
Modified:
search/trunk/hibernate-search/src/main/java/org/hibernate/search/engine/DocumentBuilderIndexedEntity.java
Log:
HSEARCH-473 Fields for _hibernate_class and the document ID are hard-coded to be analyzed and have "norms" enabled (Dobes Vandermeer)
Modified: search/trunk/hibernate-search/src/main/java/org/hibernate/search/engine/DocumentBuilderIndexedEntity.java
===================================================================
--- search/trunk/hibernate-search/src/main/java/org/hibernate/search/engine/DocumentBuilderIndexedEntity.java 2010-03-17 17:28:48 UTC (rev 19016)
+++ search/trunk/hibernate-search/src/main/java/org/hibernate/search/engine/DocumentBuilderIndexedEntity.java 2010-03-17 21:29:44 UTC (rev 19017)
@@ -404,7 +404,7 @@
CLASS_FIELDNAME,
entityType.getName(),
Field.Store.YES,
- Field.Index.NOT_ANALYZED,
+ Field.Index.NOT_ANALYZED_NO_NORMS,
Field.TermVector.NO
);
doc.add( classField );
@@ -412,8 +412,8 @@
// now add the entity id to the document
LuceneOptions luceneOptions = new LuceneOptionsImpl(
Field.Store.YES,
- Field.Index.NOT_ANALYZED, Field.TermVector.NO, idBoost
- );
+ Field.Index.NOT_ANALYZED_NO_NORMS, Field.TermVector.NO, idBoost
+ );
idBridge.set( idKeywordName, id, doc, luceneOptions );
// finally add all other document fields
14 years, 2 months
Hibernate SVN: r19016 - in search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2: impl and 1 other directory.
by hibernate-commits@lists.jboss.org
Author: epbernard
Date: 2010-03-17 13:28:48 -0400 (Wed, 17 Mar 2010)
New Revision: 19016
Added:
search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/EntityContext.java
search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/TermCustomization.java
search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/TermFuzzy.java
search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/TermMatchingContext.java
Modified:
search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/QueryContextBuilder.java
search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/TermContext.java
search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/impl/ConnectedQueryContextBuilder.java
search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/impl/ConnectedTermContext.java
Log:
HSEARCH-414 move everything to top level class as it does not play nicely with IDE's autocompletion
Added: search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/EntityContext.java
===================================================================
--- search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/EntityContext.java (rev 0)
+++ search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/EntityContext.java 2010-03-17 17:28:48 UTC (rev 19016)
@@ -0,0 +1,13 @@
+package org.hibernate.search.query.dsl.v2;
+
+/**
+* @author Emmanuel Bernard
+*/
+public interface EntityContext {
+ EntityContext overridesForField(String field, String analyzerName);
+
+ /**
+ * return the query builder
+ */
+ QueryBuilder get();
+}
Modified: search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/QueryContextBuilder.java
===================================================================
--- search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/QueryContextBuilder.java 2010-03-17 16:57:33 UTC (rev 19015)
+++ search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/QueryContextBuilder.java 2010-03-17 17:28:48 UTC (rev 19016)
@@ -20,12 +20,4 @@
public interface QueryContextBuilder {
//TODO make a forEntities
EntityContext forEntity(Class<?> entityType);
- interface EntityContext {
- EntityContext overridesForField(String field, String analyzerName);
-
- /**
- * return the query builder
- */
- QueryBuilder get();
- }
}
Modified: search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/TermContext.java
===================================================================
--- search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/TermContext.java 2010-03-17 16:57:33 UTC (rev 19015)
+++ search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/TermContext.java 2010-03-17 17:28:48 UTC (rev 19016)
@@ -11,56 +11,4 @@
*/
TermMatchingContext on(String field);
- interface TermMatchingContext {
- /**
- * text searched in the term query (the term is pre-analyzer unless ignoreAnalyzer is called)
- */
- TermCustomization matches(String text);
- }
-
- interface TermCustomization {
- /**
- * Advanced
- * Do not execute the analyzer on the text.
- * (It is usually a good idea to apply the analyzer)
- */
- TermCustomization ignoreAnalyzer();
-
- /**
- * Use a fuzzy search approximation (aka edit distance)
- */
- TermFuzzy fuzzy();
-
- /**
- * Treat the query as a wildcard:
- * - ? represents any single character
- * - * represents any character sequence
- * For faster results, it is recommended that the query text does not
- * start with ? or *
- */
- //TODO make it mutually exclusive with fuzzy use (but that's much more complex)
- TermCustomization wildcard();
-
- /**
- * Create a Lucene query
- */
- Query createQuery();
-
- interface TermFuzzy extends TermCustomization {
- /**
- * Threshold above which two terms are considered similar enough.
- * Value between 0 and 1 (1 excluded)
- * Defaults to .5
- */
- TermFuzzy threshold(float threshold);
-
- /**
- * Size of the prefix ignored by the fuzzyness.
- * A non zero value is recommended if the index contains a huge amount of distinct terms
- *
- * Defaults to 0
- */
- TermFuzzy prefixLength(int prefixLength);
- }
- }
}
Added: search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/TermCustomization.java
===================================================================
--- search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/TermCustomization.java (rev 0)
+++ search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/TermCustomization.java 2010-03-17 17:28:48 UTC (rev 19016)
@@ -0,0 +1,36 @@
+package org.hibernate.search.query.dsl.v2;
+
+import org.apache.lucene.search.Query;
+
+/**
+* @author Emmanuel Bernard
+*/
+public interface TermCustomization {
+ /**
+ * Advanced
+ * Do not execute the analyzer on the text.
+ * (It is usually a good idea to apply the analyzer)
+ */
+ TermCustomization ignoreAnalyzer();
+
+ /**
+ * Use a fuzzy search approximation (aka edit distance)
+ */
+ TermFuzzy fuzzy();
+
+ /**
+ * Treat the query as a wildcard:
+ * - ? represents any single character
+ * - * represents any character sequence
+ * For faster results, it is recommended that the query text does not
+ * start with ? or *
+ */
+ //TODO make it mutually exclusive with fuzzy use (but that's much more complex)
+ TermCustomization wildcard();
+
+ /**
+ * Create a Lucene query
+ */
+ Query createQuery();
+
+}
Added: search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/TermFuzzy.java
===================================================================
--- search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/TermFuzzy.java (rev 0)
+++ search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/TermFuzzy.java 2010-03-17 17:28:48 UTC (rev 19016)
@@ -0,0 +1,21 @@
+package org.hibernate.search.query.dsl.v2;
+
+/**
+* @author Emmanuel Bernard
+*/
+public interface TermFuzzy extends TermCustomization {
+ /**
+ * Threshold above which two terms are considered similar enough.
+ * Value between 0 and 1 (1 excluded)
+ * Defaults to .5
+ */
+ TermFuzzy threshold(float threshold);
+
+ /**
+ * Size of the prefix ignored by the fuzzyness.
+ * A non zero value is recommended if the index contains a huge amount of distinct terms
+ *
+ * Defaults to 0
+ */
+ TermFuzzy prefixLength(int prefixLength);
+}
Added: search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/TermMatchingContext.java
===================================================================
--- search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/TermMatchingContext.java (rev 0)
+++ search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/TermMatchingContext.java 2010-03-17 17:28:48 UTC (rev 19016)
@@ -0,0 +1,11 @@
+package org.hibernate.search.query.dsl.v2;
+
+/**
+* @author Emmanuel Bernard
+*/
+public interface TermMatchingContext {
+ /**
+ * text searched in the term query (the term is pre-analyzer unless ignoreAnalyzer is called)
+ */
+ TermCustomization matches(String text);
+}
Modified: search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/impl/ConnectedQueryContextBuilder.java
===================================================================
--- search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/impl/ConnectedQueryContextBuilder.java 2010-03-17 16:57:33 UTC (rev 19015)
+++ search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/impl/ConnectedQueryContextBuilder.java 2010-03-17 17:28:48 UTC (rev 19016)
@@ -1,6 +1,7 @@
package org.hibernate.search.query.dsl.v2.impl;
import org.hibernate.search.SearchFactory;
+import org.hibernate.search.query.dsl.v2.EntityContext;
import org.hibernate.search.query.dsl.v2.QueryBuilder;
import org.hibernate.search.query.dsl.v2.QueryContextBuilder;
import org.hibernate.search.util.ScopedAnalyzer;
@@ -21,7 +22,7 @@
return new HSearchEntityContext(entityType, factory );
}
- public final class HSearchEntityContext implements QueryContextBuilder.EntityContext {
+ public final class HSearchEntityContext implements EntityContext {
private final ScopedAnalyzer queryAnalyzer;
private final SearchFactory factory;
Modified: search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/impl/ConnectedTermContext.java
===================================================================
--- search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/impl/ConnectedTermContext.java 2010-03-17 16:57:33 UTC (rev 19015)
+++ search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/impl/ConnectedTermContext.java 2010-03-17 17:28:48 UTC (rev 19016)
@@ -7,7 +7,6 @@
import java.util.List;
import org.apache.lucene.analysis.Analyzer;
-import org.apache.lucene.analysis.Token;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.tokenattributes.TermAttribute;
import org.apache.lucene.index.Term;
@@ -22,6 +21,9 @@
import org.hibernate.search.SearchException;
import org.hibernate.search.SearchFactory;
import org.hibernate.search.query.dsl.v2.TermContext;
+import org.hibernate.search.query.dsl.v2.TermCustomization;
+import org.hibernate.search.query.dsl.v2.TermFuzzy;
+import org.hibernate.search.query.dsl.v2.TermMatchingContext;
/**
* @author Emmanuel Bernard
@@ -55,7 +57,7 @@
}
}
- public static class ConnectedTermCustomization implements TermCustomization, TermCustomization.TermFuzzy {
+ public static class ConnectedTermCustomization implements TermCustomization, TermFuzzy {
private final SearchFactory factory;
private final String field;
private final String text;
14 years, 2 months
Hibernate SVN: r19015 - search/trunk/hibernate-search.
by hibernate-commits@lists.jboss.org
Author: epbernard
Date: 2010-03-17 12:57:33 -0400 (Wed, 17 Mar 2010)
New Revision: 19015
Modified:
search/trunk/hibernate-search/pom.xml
Log:
fix PDF name of the reference documentation
Modified: search/trunk/hibernate-search/pom.xml
===================================================================
--- search/trunk/hibernate-search/pom.xml 2010-03-17 16:38:45 UTC (rev 19014)
+++ search/trunk/hibernate-search/pom.xml 2010-03-17 16:57:33 UTC (rev 19015)
@@ -188,7 +188,7 @@
<format>
<formatName>pdf</formatName>
<stylesheetResource>classpath:/xslt/org/hibernate/jdocbook/xslt/pdf.xsl</stylesheetResource>
- <finalName>hibernate_reference.pdf</finalName>
+ <finalName>hibernate_search_reference.pdf</finalName>
</format>
<format>
<formatName>html_single</formatName>
14 years, 2 months
Hibernate SVN: r19014 - search/trunk.
by hibernate-commits@lists.jboss.org
Author: hardy.ferentschik
Date: 2010-03-17 12:38:45 -0400 (Wed, 17 Mar 2010)
New Revision: 19014
Modified:
search/trunk/pom.xml
Log:
fixed wrong SNAPSHOT location
Modified: search/trunk/pom.xml
===================================================================
--- search/trunk/pom.xml 2010-03-17 16:30:48 UTC (rev 19013)
+++ search/trunk/pom.xml 2010-03-17 16:38:45 UTC (rev 19014)
@@ -409,8 +409,7 @@
<snapshotRepository>
<id>snapshots.jboss.org</id>
<name>JBoss Snapshot Repository</name>
- <url>file:///Users/hardy/tmp/snapshot</url>
- <!--url>dav:https://snapshots.jboss.org/maven2</url-->
+ <url>dav:https://snapshots.jboss.org/maven2</url>
</snapshotRepository>
</distributionManagement>
14 years, 2 months
Hibernate SVN: r19013 - in search/trunk/hibernate-search/src: main/java/org/hibernate/search/impl and 3 other directories.
by hibernate-commits@lists.jboss.org
Author: epbernard
Date: 2010-03-17 12:30:48 -0400 (Wed, 17 Mar 2010)
New Revision: 19013
Added:
search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/query/dsl/DSLTest.java
search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/query/dsl/Month.java
Modified:
search/trunk/hibernate-search/src/main/java/org/hibernate/search/SearchFactory.java
search/trunk/hibernate-search/src/main/java/org/hibernate/search/impl/SearchFactoryImpl.java
search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/QueryBuilder.java
search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/QueryContextBuilder.java
search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/TermContext.java
search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/impl/ConnectedTermContext.java
Log:
HSEARCH-414 test on term, fuzzy and wildcard queries
Modified: search/trunk/hibernate-search/src/main/java/org/hibernate/search/SearchFactory.java
===================================================================
--- search/trunk/hibernate-search/src/main/java/org/hibernate/search/SearchFactory.java 2010-03-16 22:15:51 UTC (rev 19012)
+++ search/trunk/hibernate-search/src/main/java/org/hibernate/search/SearchFactory.java 2010-03-17 16:30:48 UTC (rev 19013)
@@ -25,6 +25,8 @@
package org.hibernate.search;
import org.apache.lucene.analysis.Analyzer;
+
+import org.hibernate.search.query.dsl.v2.QueryContextBuilder;
import org.hibernate.search.reader.ReaderProvider;
import org.hibernate.search.store.DirectoryProvider;
@@ -75,4 +77,9 @@
* class is not an indexed entity.
*/
Analyzer getAnalyzer(Class<?> clazz);
+
+ /**
+ * Return a query builder providing a fluent API to create Lucene queries
+ */
+ QueryContextBuilder buildQueryBuilder();
}
Modified: search/trunk/hibernate-search/src/main/java/org/hibernate/search/impl/SearchFactoryImpl.java
===================================================================
--- search/trunk/hibernate-search/src/main/java/org/hibernate/search/impl/SearchFactoryImpl.java 2010-03-16 22:15:51 UTC (rev 19012)
+++ search/trunk/hibernate-search/src/main/java/org/hibernate/search/impl/SearchFactoryImpl.java 2010-03-17 16:30:48 UTC (rev 19013)
@@ -78,6 +78,8 @@
import org.hibernate.search.filter.FilterCachingStrategy;
import org.hibernate.search.filter.MRUFilterCachingStrategy;
import org.hibernate.search.filter.ShardSensitiveOnlyFilter;
+import org.hibernate.search.query.dsl.v2.QueryContextBuilder;
+import org.hibernate.search.query.dsl.v2.impl.ConnectedQueryContextBuilder;
import org.hibernate.search.reader.ReaderProvider;
import org.hibernate.search.reader.ReaderProviderFactory;
import org.hibernate.search.store.DirectoryProvider;
@@ -476,6 +478,10 @@
return builder.getAnalyzer();
}
+ public QueryContextBuilder buildQueryBuilder() {
+ return new ConnectedQueryContextBuilder( this );
+ }
+
private void initDocumentBuilders(SearchConfiguration cfg, ReflectionManager reflectionManager) {
InitContext context = new InitContext( cfg );
Iterator<Class<?>> iter = cfg.getClassMappings();
Modified: search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/QueryBuilder.java
===================================================================
--- search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/QueryBuilder.java 2010-03-16 22:15:51 UTC (rev 19012)
+++ search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/QueryBuilder.java 2010-03-17 16:30:48 UTC (rev 19013)
@@ -1,7 +1,5 @@
package org.hibernate.search.query.dsl.v2;
-import org.hibernate.search.query.dsl.v2.TermContext;
-
/**
* @author Emmanuel Bernard
*/
Modified: search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/QueryContextBuilder.java
===================================================================
--- search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/QueryContextBuilder.java 2010-03-16 22:15:51 UTC (rev 19012)
+++ search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/QueryContextBuilder.java 2010-03-17 16:30:48 UTC (rev 19013)
@@ -1,8 +1,20 @@
package org.hibernate.search.query.dsl.v2;
-import org.apache.lucene.analysis.Analyzer;
-
/**
+ * Query builder that needs contextualization:
+ * A query builder should know which entity or analyzer it relies on.
+ *
+ * <code>
+ * QueryBuilder builder =
+ * searchFactory.buildQueryBuilder()
+ * .forEntity(Customer.class)
+ * .overridesForField("profession", "acronym-analyzer")
+ * .get();
+ * </code>
+ *
+ * overridesForField is optional (and usually not needed). This method overrides the
+ * underlying analyzer (for a given field) used to build queries.
+ *
* @author Emmanuel Bernard
*/
public interface QueryContextBuilder {
@@ -10,6 +22,10 @@
EntityContext forEntity(Class<?> entityType);
interface EntityContext {
EntityContext overridesForField(String field, String analyzerName);
+
+ /**
+ * return the query builder
+ */
QueryBuilder get();
}
}
Modified: search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/TermContext.java
===================================================================
--- search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/TermContext.java 2010-03-16 22:15:51 UTC (rev 19012)
+++ search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/TermContext.java 2010-03-17 16:30:48 UTC (rev 19013)
@@ -2,8 +2,6 @@
import org.apache.lucene.search.Query;
-import org.hibernate.search.query.dsl.v2.QueryBuilder;
-
/**
* @author Emmanuel Bernard
*/
Modified: search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/impl/ConnectedTermContext.java
===================================================================
--- search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/impl/ConnectedTermContext.java 2010-03-16 22:15:51 UTC (rev 19012)
+++ search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/impl/ConnectedTermContext.java 2010-03-17 16:30:48 UTC (rev 19013)
@@ -106,14 +106,21 @@
catch ( IOException e ) {
throw new AssertionFailure("IO exception while reading String stream??", e);
}
-
- BooleanQuery finalQuery = new BooleanQuery();
- for (String term : terms) {
- Query termQuery = createTermQuery(term);
- //termQuery.setBoost( boost );
- finalQuery.add( termQuery, BooleanClause.Occur.SHOULD );
+ if ( terms.size() == 0 ) {
+ throw new SearchException("try to search with an empty string: " + field);
}
- return finalQuery;
+ else if (terms.size() == 1 ) {
+ return createTermQuery( terms.get( 0 ) );
+ }
+ else {
+ BooleanQuery finalQuery = new BooleanQuery();
+ for (String term : terms) {
+ Query termQuery = createTermQuery(term);
+ //termQuery.setBoost( boost );
+ finalQuery.add( termQuery, BooleanClause.Occur.SHOULD );
+ }
+ return finalQuery;
+ }
}
}
Added: search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/query/dsl/DSLTest.java
===================================================================
--- search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/query/dsl/DSLTest.java (rev 0)
+++ search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/query/dsl/DSLTest.java 2010-03-17 16:30:48 UTC (rev 19013)
@@ -0,0 +1,157 @@
+package org.hibernate.search.test.query.dsl;
+
+import java.util.List;
+
+import org.apache.lucene.search.Query;
+import org.apache.solr.analysis.LowerCaseFilterFactory;
+import org.apache.solr.analysis.NGramFilterFactory;
+import org.apache.solr.analysis.SnowballPorterFilterFactory;
+import org.apache.solr.analysis.StandardFilterFactory;
+import org.apache.solr.analysis.StandardTokenizerFactory;
+import org.apache.solr.analysis.StopFilterFactory;
+
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+import org.hibernate.cfg.Configuration;
+import org.hibernate.search.Environment;
+import org.hibernate.search.FullTextSession;
+import org.hibernate.search.Search;
+import org.hibernate.search.annotations.Factory;
+import org.hibernate.search.cfg.SearchMapping;
+import org.hibernate.search.query.dsl.v2.QueryBuilder;
+import org.hibernate.search.test.SearchTestCase;
+
+/**
+ * @author Emmanuel Bernard
+ */
+public class DSLTest extends SearchTestCase {
+
+ public void testTermQueryOnAnalyzer() throws Exception {
+ Session session = openSession();
+ FullTextSession fts = Search.getFullTextSession( session );
+ Transaction transaction = fts.beginTransaction();
+ fts.persist( new Month("January", "Month of colder and whitening") );
+ fts.persist( new Month("February", "Month of snowboarding") );
+ transaction.commit();
+
+ fts.clear();
+
+ transaction = fts.beginTransaction();
+ final QueryBuilder monthQb = fts.getSearchFactory()
+ .buildQueryBuilder().forEntity( Month.class ).get();
+ Query
+ //regular term query
+ query = monthQb.term().on( "mythology" ).matches( "cold" ).createQuery();
+
+ assertEquals( 0, fts.createFullTextQuery( query, Month.class ).getResultSize() );
+
+ //term query based on several words
+ query = monthQb.term().on( "mythology" ).matches( "colder darker" ).createQuery();
+
+ assertEquals( 1, fts.createFullTextQuery( query, Month.class ).getResultSize() );
+
+ //term query applying the analyzer and generating one term per word
+ query = monthQb.term().on( "mythology_stem" ).matches( "snowboard" ).createQuery();
+
+ assertEquals( 1, fts.createFullTextQuery( query, Month.class ).getResultSize() );
+
+ //term query applying the analyzer and generating several terms per word
+ query = monthQb.term().on( "mythology_ngram" ).matches( "snobored" ).createQuery();
+
+ assertEquals( 1, fts.createFullTextQuery( query, Month.class ).getResultSize() );
+
+ //term query not using analyzers
+ query = monthQb.term().on( "mythology" ).matches( "Month" ).ignoreAnalyzer().createQuery();
+
+ assertEquals( 0, fts.createFullTextQuery( query, Month.class ).getResultSize() );
+
+ query = monthQb.term().on( "mythology" ).matches( "Month" ).createQuery();
+
+ final List<Month> results = fts.createFullTextQuery( query, Month.class ).list();
+ assertEquals( 2, results.size() );
+
+ for (Month entity : results) {
+ fts.delete( entity );
+ }
+ transaction.commit();
+ fts.close();
+ }
+
+ public void tesFuzzyAndWildcardQuery() throws Exception {
+ Session session = openSession();
+ FullTextSession fts = Search.getFullTextSession( session );
+ Transaction transaction = fts.beginTransaction();
+ fts.persist( new Month("January", "Month of colder and whitening") );
+ fts.persist( new Month("February", "Month of snowboarding") );
+ transaction.commit();
+
+ fts.clear();
+
+ transaction = fts.beginTransaction();
+ final QueryBuilder monthQb = fts.getSearchFactory()
+ .buildQueryBuilder().forEntity( Month.class ).get();
+ Query
+ //fuzzy search with custom threshold and prefix
+ query = monthQb
+ .term().on( "mythology" ).matches( "calder" )
+ .fuzzy()
+ .threshold( .8f )
+ .prefixLength( 1 )
+ .createQuery();
+
+ assertEquals( 1, fts.createFullTextQuery( query, Month.class ).getResultSize() );
+
+ //wildcard query
+ query = monthQb
+ .term().on( "mythology" ).matches( "mon*" )
+ .wildcard()
+ .createQuery();
+
+ assertEquals( 2, fts.createFullTextQuery( query, Month.class ).getResultSize() );
+
+ final List<Month> results = fts.createFullTextQuery( query, Month.class ).list();
+ assertEquals( 2, results.size() );
+
+ for (Month entity : results) {
+ fts.delete( entity );
+ }
+ transaction.commit();
+ fts.close();
+ }
+
+
+ @Override
+ protected Class<?>[] getMappings() {
+ return new Class<?>[] {
+ Month.class
+ };
+ }
+
+ @Override
+ protected void configure(Configuration cfg) {
+ super.configure( cfg );
+ cfg.getProperties().put( Environment.MODEL_MAPPING, MappingFactory.class.getName() );
+ }
+
+ public static class MappingFactory {
+ @Factory
+ public SearchMapping build() {
+ SearchMapping mapping = new SearchMapping();
+ mapping
+ .analyzerDef( "stemmer", StandardTokenizerFactory.class )
+ .filter( StandardFilterFactory.class )
+ .filter( LowerCaseFilterFactory.class )
+ .filter( StopFilterFactory.class )
+ .filter( SnowballPorterFilterFactory.class )
+ .param( "language", "English" )
+ .analyzerDef( "ngram", StandardTokenizerFactory.class )
+ .filter( StandardFilterFactory.class )
+ .filter( LowerCaseFilterFactory.class )
+ .filter( StopFilterFactory.class )
+ .filter( NGramFilterFactory.class )
+ .param( "minGramSize", "3" )
+ .param( "maxGramSize", "3" );
+ return mapping;
+ }
+ }
+}
Added: search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/query/dsl/Month.java
===================================================================
--- search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/query/dsl/Month.java (rev 0)
+++ search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/query/dsl/Month.java 2010-03-17 16:30:48 UTC (rev 19013)
@@ -0,0 +1,44 @@
+package org.hibernate.search.test.query.dsl;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+
+import org.hibernate.search.annotations.Analyzer;
+import org.hibernate.search.annotations.Field;
+import org.hibernate.search.annotations.Fields;
+import org.hibernate.search.annotations.Indexed;
+
+/**
+ * @author Emmanuel Bernard
+ */
+@Entity
+@Indexed
+public class Month {
+ public Month() {}
+
+ public Month(String name, String mythology) {
+ this.name = name;
+ this.mythology = mythology;
+ }
+
+ @Id @GeneratedValue
+ public Integer getId() { return id; }
+ public void setId(Integer id) { this.id = id; }
+ private Integer id;
+
+ @Field
+ public String getName() { return name; }
+ public void setName(String name) { this.name = name; }
+ private String name;
+
+ @Fields( {
+ @Field,
+ @Field(name="mythology_stem", analyzer = @Analyzer(definition = "stemmer") ),
+ @Field(name="mythology_ngram", analyzer = @Analyzer(definition = "ngram") )
+ })
+ public String getMythology() { return mythology; }
+ public void setMythology(String mythology) { this.mythology = mythology; }
+ private String mythology;
+}
+
14 years, 2 months
Hibernate SVN: r19012 - in search/trunk: hibernate-search and 1 other directories.
by hibernate-commits@lists.jboss.org
Author: hardy.ferentschik
Date: 2010-03-16 18:15:51 -0400 (Tue, 16 Mar 2010)
New Revision: 19012
Modified:
search/trunk/hibernate-search/pom.xml
search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/classloading/Animal.java
search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/classloading/NoAnnotationsTest.java
search/trunk/pom.xml
Log:
HSEARCH-468
Modified: search/trunk/hibernate-search/pom.xml
===================================================================
--- search/trunk/hibernate-search/pom.xml 2010-03-16 18:48:40 UTC (rev 19011)
+++ search/trunk/hibernate-search/pom.xml 2010-03-16 22:15:51 UTC (rev 19012)
@@ -26,20 +26,21 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
-
+
<parent>
<artifactId>hibernate-search-parent</artifactId>
<groupId>org.hibernate</groupId>
<version>3.2.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
-
+
<artifactId>hibernate-search</artifactId>
<name>Hibernate Search</name>
<description>Hibernate Search</description>
-
+
<dependencies>
+ <!-- REQUIRED DEPENDECIES -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
@@ -64,7 +65,67 @@
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-core</artifactId>
</dependency>
+
+ <!-- OPTIONAL DEPENDECIES -->
<dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-annotations</artifactId>
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-entitymanager</artifactId>
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.solr</groupId>
+ <artifactId>solr-common</artifactId>
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.solr</groupId>
+ <artifactId>solr-core</artifactId>
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.lucene</groupId>
+ <artifactId>lucene-snowball</artifactId>
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.lucene</groupId>
+ <artifactId>lucene-analyzers</artifactId>
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-codec</artifactId>
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-io</artifactId>
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+ <groupId>javax.jms</groupId>
+ <artifactId>jms</artifactId>
+ <scope>provided</scope>
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+ <groupId>jgroups</groupId>
+ <artifactId>jgroups</artifactId>
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+ <groupId>javax.annotation</groupId>
+ <artifactId>jsr250-api</artifactId>
+ <optional>true</optional>
+ </dependency>
+
+ <!-- TEST DEPENDECIES -->
+ <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
@@ -105,7 +166,8 @@
</property>
</systemProperties>
<excludes>
- <exclude>**/*.java</exclude>
+ <exclude>**/classloading/*.java</exclude>
+ <exclude>**/*PerfTest.java</exclude>
</excludes>
</configuration>
</plugin>
@@ -160,10 +222,6 @@
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-javadoc-plugin</artifactId>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptors>
@@ -175,7 +233,9 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<configuration>
- <goals>deploy org.jboss.maven.plugins:maven-jdocbook-plugin:2.2.0:resources org.jboss.maven.plugins:maven-jdocbook-plugin:2.2.0:generate assembly:assembly</goals>
+ <goals>deploy javadoc:javadoc org.jboss.maven.plugins:maven-jdocbook-plugin:2.2.0:resources
+ org.jboss.maven.plugins:maven-jdocbook-plugin:2.2.0:generate assembly:assembly
+ </goals>
</configuration>
</plugin>
<plugin>
@@ -215,151 +275,4 @@
</testResource>
</testResources>
</build>
-
- <profiles>
- <!-- ================================ -->
- <!-- Dependecy profiles to test w and -->
- <!-- w/o optional dependencies -->
- <!-- =============================== -->
- <profile>
- <id>with-optional-jars</id>
- <activation>
- <activeByDefault>true</activeByDefault>
- </activation>
- <dependencies>
- <!-- =============================== -->
- <!-- Optional Dependencies -->
- <!-- =============================== -->
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-annotations</artifactId>
- <optional>true</optional>
- </dependency>
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-entitymanager</artifactId>
- <optional>true</optional>
- </dependency>
- <dependency>
- <groupId>org.apache.solr</groupId>
- <artifactId>solr-common</artifactId>
- <optional>true</optional>
- </dependency>
- <dependency>
- <groupId>org.apache.solr</groupId>
- <artifactId>solr-core</artifactId>
- <optional>true</optional>
- <exclusions>
- <exclusion>
- <groupId>commons-httpclient</groupId>
- <artifactId>commons-httpclient</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.apache.solr</groupId>
- <artifactId>solr-solrj</artifactId>
- </exclusion>
- <exclusion>
- <groupId>woodstox</groupId>
- <artifactId>wstx-asl</artifactId>
- </exclusion>
- <exclusion>
- <groupId>net.java.dev.stax-utils</groupId>
- <artifactId>stax-utils</artifactId>
- </exclusion>
- <exclusion>
- <groupId>commons-logging</groupId>
- <artifactId>commons-logging</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.apache.solr</groupId>
- <artifactId>solr-lucene-core</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.apache.lucene</groupId>
- <artifactId>lucene-snowball</artifactId>
- <optional>true</optional>
- </dependency>
- <dependency>
- <groupId>org.apache.lucene</groupId>
- <artifactId>lucene-analyzers</artifactId>
- <optional>true</optional>
- </dependency>
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-codec</artifactId>
- <optional>true</optional>
- </dependency>
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-io</artifactId>
- <optional>true</optional>
- </dependency>
- <dependency>
- <groupId>javax.jms</groupId>
- <artifactId>jms</artifactId>
- <scope>provided</scope>
- <optional>true</optional>
- </dependency>
- <dependency>
- <groupId>jgroups</groupId>
- <artifactId>jgroups</artifactId>
- <optional>true</optional>
- </dependency>
- <dependency>
- <groupId>javax.annotation</groupId>
- <artifactId>jsr250-api</artifactId>
- <optional>true</optional>
- </dependency>
- </dependencies>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <configuration>
- <forkMode>once</forkMode>
- <!--argLine>-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005</argLine-->
- <redirectTestOutputToFile>true</redirectTestOutputToFile>
- <excludes>
- <exclude>**/classloading/*.java</exclude>
- <exclude>**/*PerfTest.java</exclude>
- </excludes>
- </configuration>
- </plugin>
- </plugins>
- </build>
- </profile>
- <profile>
- <id>without-optional-jars</id>
- <dependencies>
- <dependency>
- <groupId>javassist</groupId>
- <artifactId>javassist</artifactId>
- <optional>true</optional>
- </dependency>
- </dependencies>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <configuration>
- <forkMode>once</forkMode>
- <!--argLine>-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005</argLine-->
- <redirectTestOutputToFile>true</redirectTestOutputToFile>
- <excludes>
- <exclude>none</exclude>
- <exclude>**/*PerfTest.java</exclude>
- </excludes>
- <includes>
- <include>**/classloading/*Test.java</include>
- </includes>
- </configuration>
- </plugin>
- </plugins>
- </build>
- </profile>
- </profiles>
</project>
Modified: search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/classloading/Animal.java
===================================================================
--- search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/classloading/Animal.java 2010-03-16 18:48:40 UTC (rev 19011)
+++ search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/classloading/Animal.java 2010-03-16 22:15:51 UTC (rev 19012)
@@ -24,10 +24,10 @@
*/
package org.hibernate.search.test.classloading;
+import org.hibernate.search.annotations.DocumentId;
import org.hibernate.search.annotations.Field;
import org.hibernate.search.annotations.Index;
import org.hibernate.search.annotations.Indexed;
-import org.hibernate.search.annotations.DocumentId;
/**
* Test class which is configured via XML and does not depend on Hibernate Annotations.
Modified: search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/classloading/NoAnnotationsTest.java
===================================================================
--- search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/classloading/NoAnnotationsTest.java 2010-03-16 18:48:40 UTC (rev 19011)
+++ search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/classloading/NoAnnotationsTest.java 2010-03-16 22:15:51 UTC (rev 19012)
@@ -32,18 +32,24 @@
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.search.Search;
+import org.hibernate.search.jpa.FullTextEntityManager;
+import org.hibernate.search.test.TestCase;
/**
* @author Hardy Ferentschik
*/
-public class NoAnnotationsTest extends org.hibernate.search.test.TestCase {
-
+public class NoAnnotationsTest extends TestCase {
/**
* Tests that @DocumentId is optional. See HSEARCH-104.
*
* @throws Exception in case the test fails.
*/
public void testConfigurationWithoutAnnotations() throws Exception {
+ FullTextEntityManager em = org.hibernate
+ .search
+ .jpa
+ .Search
+ .getFullTextEntityManager( null );
Animal dog = new Animal();
dog.setName( "Dog" );
@@ -61,7 +67,7 @@
tx.commit();
s.close();
}
-
+
public void testFlushListenerRegistrationWithoutAnnotations() throws Exception {
// This test should pass even if the flushListener is not registered,
// as a workaround is done in code (you'll see a warning in logs).
@@ -74,7 +80,6 @@
s.clear();
Transaction tx = s.beginTransaction();
- tx = s.beginTransaction();
List results = Search.getFullTextSession( s ).createFullTextQuery(
new TermQuery( new Term( "name", "penguin" ) )
).list();
Modified: search/trunk/pom.xml
===================================================================
--- search/trunk/pom.xml 2010-03-16 18:48:40 UTC (rev 19011)
+++ search/trunk/pom.xml 2010-03-16 22:15:51 UTC (rev 19012)
@@ -325,15 +325,6 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.5</version>
- <executions>
- <execution>
- <id>make-javadoc</id>
- <phase>package</phase>
- <goals>
- <goal>javadoc</goal>
- </goals>
- </execution>
- </executions>
</plugin>
</plugins>
<pluginManagement>
14 years, 2 months
Hibernate SVN: r19011 - in search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl: v2 and 1 other directories.
by hibernate-commits@lists.jboss.org
Author: epbernard
Date: 2010-03-16 14:48:40 -0400 (Tue, 16 Mar 2010)
New Revision: 19011
Added:
search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/
search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/QueryBuilder.java
search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/QueryContextBuilder.java
search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/TermContext.java
search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/impl/
search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/impl/ConnectedQueryBuilder.java
search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/impl/ConnectedQueryContextBuilder.java
search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/impl/ConnectedTermContext.java
Log:
HSEARCH-414 first take at the query DSL (need tests)
Added: search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/QueryBuilder.java
===================================================================
--- search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/QueryBuilder.java (rev 0)
+++ search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/QueryBuilder.java 2010-03-16 18:48:40 UTC (rev 19011)
@@ -0,0 +1,13 @@
+package org.hibernate.search.query.dsl.v2;
+
+import org.hibernate.search.query.dsl.v2.TermContext;
+
+/**
+ * @author Emmanuel Bernard
+ */
+public interface QueryBuilder {
+ /**
+ * build a term query
+ */
+ TermContext term();
+}
Added: search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/QueryContextBuilder.java
===================================================================
--- search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/QueryContextBuilder.java (rev 0)
+++ search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/QueryContextBuilder.java 2010-03-16 18:48:40 UTC (rev 19011)
@@ -0,0 +1,15 @@
+package org.hibernate.search.query.dsl.v2;
+
+import org.apache.lucene.analysis.Analyzer;
+
+/**
+ * @author Emmanuel Bernard
+ */
+public interface QueryContextBuilder {
+ //TODO make a forEntities
+ EntityContext forEntity(Class<?> entityType);
+ interface EntityContext {
+ EntityContext overridesForField(String field, String analyzerName);
+ QueryBuilder get();
+ }
+}
Added: search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/TermContext.java
===================================================================
--- search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/TermContext.java (rev 0)
+++ search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/TermContext.java 2010-03-16 18:48:40 UTC (rev 19011)
@@ -0,0 +1,68 @@
+package org.hibernate.search.query.dsl.v2;
+
+import org.apache.lucene.search.Query;
+
+import org.hibernate.search.query.dsl.v2.QueryBuilder;
+
+/**
+ * @author Emmanuel Bernard
+ */
+public interface TermContext {
+ /**
+ * field / property the term query is executed on
+ */
+ TermMatchingContext on(String field);
+
+ interface TermMatchingContext {
+ /**
+ * text searched in the term query (the term is pre-analyzer unless ignoreAnalyzer is called)
+ */
+ TermCustomization matches(String text);
+ }
+
+ interface TermCustomization {
+ /**
+ * Advanced
+ * Do not execute the analyzer on the text.
+ * (It is usually a good idea to apply the analyzer)
+ */
+ TermCustomization ignoreAnalyzer();
+
+ /**
+ * Use a fuzzy search approximation (aka edit distance)
+ */
+ TermFuzzy fuzzy();
+
+ /**
+ * Treat the query as a wildcard:
+ * - ? represents any single character
+ * - * represents any character sequence
+ * For faster results, it is recommended that the query text does not
+ * start with ? or *
+ */
+ //TODO make it mutually exclusive with fuzzy use (but that's much more complex)
+ TermCustomization wildcard();
+
+ /**
+ * Create a Lucene query
+ */
+ Query createQuery();
+
+ interface TermFuzzy extends TermCustomization {
+ /**
+ * Threshold above which two terms are considered similar enough.
+ * Value between 0 and 1 (1 excluded)
+ * Defaults to .5
+ */
+ TermFuzzy threshold(float threshold);
+
+ /**
+ * Size of the prefix ignored by the fuzzyness.
+ * A non zero value is recommended if the index contains a huge amount of distinct terms
+ *
+ * Defaults to 0
+ */
+ TermFuzzy prefixLength(int prefixLength);
+ }
+ }
+}
Added: search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/impl/ConnectedQueryBuilder.java
===================================================================
--- search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/impl/ConnectedQueryBuilder.java (rev 0)
+++ search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/impl/ConnectedQueryBuilder.java 2010-03-16 18:48:40 UTC (rev 19011)
@@ -0,0 +1,26 @@
+package org.hibernate.search.query.dsl.v2.impl;
+
+import org.apache.lucene.analysis.Analyzer;
+
+import org.hibernate.search.SearchFactory;
+import org.hibernate.search.query.dsl.v2.QueryBuilder;
+import org.hibernate.search.query.dsl.v2.TermContext;
+
+/**
+ * Assuming connection with the search factory
+ *
+ * @author Emmanuel Bernard
+ */
+public class ConnectedQueryBuilder implements QueryBuilder {
+ private final Analyzer queryAnalyzer;
+ private final SearchFactory factory;
+
+ public ConnectedQueryBuilder(Analyzer queryAnalyzer, SearchFactory factory) {
+ this.queryAnalyzer = queryAnalyzer;
+ this.factory = factory;
+ }
+
+ public TermContext term() {
+ return new ConnectedTermContext( queryAnalyzer, factory);
+ }
+}
Added: search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/impl/ConnectedQueryContextBuilder.java
===================================================================
--- search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/impl/ConnectedQueryContextBuilder.java (rev 0)
+++ search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/impl/ConnectedQueryContextBuilder.java 2010-03-16 18:48:40 UTC (rev 19011)
@@ -0,0 +1,43 @@
+package org.hibernate.search.query.dsl.v2.impl;
+
+import org.hibernate.search.SearchFactory;
+import org.hibernate.search.query.dsl.v2.QueryBuilder;
+import org.hibernate.search.query.dsl.v2.QueryContextBuilder;
+import org.hibernate.search.util.ScopedAnalyzer;
+
+/**
+ * Assuming connection with the search factory
+ *
+ * @author Emmanuel Bernard
+ */
+public class ConnectedQueryContextBuilder implements QueryContextBuilder {
+ private final SearchFactory factory;
+
+ public ConnectedQueryContextBuilder(SearchFactory factory) {
+ this.factory = factory;
+ }
+
+ public EntityContext forEntity(Class<?> entityType) {
+ return new HSearchEntityContext(entityType, factory );
+ }
+
+ public final class HSearchEntityContext implements QueryContextBuilder.EntityContext {
+ private final ScopedAnalyzer queryAnalyzer;
+ private final SearchFactory factory;
+
+ public HSearchEntityContext(Class<?> entityType, SearchFactory factory) {
+ this.factory = factory;
+ queryAnalyzer = new ScopedAnalyzer();
+ queryAnalyzer.setGlobalAnalyzer( factory.getAnalyzer( entityType ) );
+ }
+
+ public EntityContext overridesForField(String field, String analyzerName) {
+ queryAnalyzer.addScopedAnalyzer( field, factory.getAnalyzer( analyzerName ) );
+ return this;
+ }
+
+ public QueryBuilder get() {
+ return new ConnectedQueryBuilder(queryAnalyzer, factory);
+ }
+ }
+}
Added: search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/impl/ConnectedTermContext.java
===================================================================
--- search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/impl/ConnectedTermContext.java (rev 0)
+++ search/trunk/hibernate-search/src/main/java/org/hibernate/search/query/dsl/v2/impl/ConnectedTermContext.java 2010-03-16 18:48:40 UTC (rev 19011)
@@ -0,0 +1,172 @@
+package org.hibernate.search.query.dsl.v2.impl;
+
+import java.io.IOException;
+import java.io.Reader;
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.lucene.analysis.Analyzer;
+import org.apache.lucene.analysis.Token;
+import org.apache.lucene.analysis.TokenStream;
+import org.apache.lucene.analysis.tokenattributes.TermAttribute;
+import org.apache.lucene.index.Term;
+import org.apache.lucene.search.BooleanClause;
+import org.apache.lucene.search.BooleanQuery;
+import org.apache.lucene.search.FuzzyQuery;
+import org.apache.lucene.search.Query;
+import org.apache.lucene.search.TermQuery;
+import org.apache.lucene.search.WildcardQuery;
+
+import org.hibernate.annotations.common.AssertionFailure;
+import org.hibernate.search.SearchException;
+import org.hibernate.search.SearchFactory;
+import org.hibernate.search.query.dsl.v2.TermContext;
+
+/**
+ * @author Emmanuel Bernard
+ */
+public class ConnectedTermContext implements TermContext {
+ private final SearchFactory factory;
+ private final Analyzer queryAnalyzer;
+
+ public ConnectedTermContext(Analyzer queryAnalyzer, SearchFactory factory) {
+ this.factory = factory;
+ this.queryAnalyzer = queryAnalyzer;
+ }
+
+ public TermMatchingContext on(String field) {
+ return new ConnectedTermMatchingContext(field, queryAnalyzer, factory);
+ }
+
+ public static class ConnectedTermMatchingContext implements TermMatchingContext {
+ private final SearchFactory factory;
+ private final String field;
+ private final Analyzer queryAnalyzer;
+
+ public ConnectedTermMatchingContext(String field, Analyzer queryAnalyzer, SearchFactory factory) {
+ this.factory = factory;
+ this.field = field;
+ this.queryAnalyzer = queryAnalyzer;
+ }
+
+ public TermCustomization matches(String text) {
+ return new ConnectedTermCustomization(text, field, queryAnalyzer, factory);
+ }
+ }
+
+ public static class ConnectedTermCustomization implements TermCustomization, TermCustomization.TermFuzzy {
+ private final SearchFactory factory;
+ private final String field;
+ private final String text;
+ private final Analyzer queryAnalyzer;
+
+ private boolean ignoreAnalyzer;
+ private Approximation approximation = Approximation.EXACT;
+ private float threshold = .5f;
+ private int prefixLength = 0;
+
+ public ConnectedTermCustomization(String text, String field, Analyzer queryAnalyzer, SearchFactory factory) {
+ this.factory = factory;
+ this.field = field;
+ this.text = text;
+ this.queryAnalyzer = queryAnalyzer;
+ }
+
+ public TermCustomization ignoreAnalyzer() {
+ ignoreAnalyzer = true;
+ return this;
+ }
+
+ public TermFuzzy fuzzy() {
+ if (approximation != Approximation.EXACT) {
+ throw new IllegalStateException( "Cannot call fuzzy() and wildcard() on the same term query" );
+ }
+ approximation = Approximation.FUZZY;
+ return this;
+ }
+
+ public TermCustomization wildcard() {
+ if (approximation != Approximation.EXACT) {
+ throw new IllegalStateException( "Cannot call fuzzy() and wildcard() on the same term query" );
+ }
+ approximation = Approximation.WILDCARD;
+ return this;
+ }
+
+ public Query createQuery() {
+ if ( ignoreAnalyzer ) {
+ return createTermQuery( text );
+ }
+ else {
+ List<String> terms;
+ try {
+ terms = getAllTermsFromText( field, text, queryAnalyzer );
+ }
+ catch ( IOException e ) {
+ throw new AssertionFailure("IO exception while reading String stream??", e);
+ }
+
+ BooleanQuery finalQuery = new BooleanQuery();
+ for (String term : terms) {
+ Query termQuery = createTermQuery(term);
+ //termQuery.setBoost( boost );
+ finalQuery.add( termQuery, BooleanClause.Occur.SHOULD );
+ }
+ return finalQuery;
+ }
+ }
+
+ private Query createTermQuery(String term) {
+ Query query;
+ switch ( approximation ) {
+ case EXACT:
+ query = new TermQuery( new Term(field, term) );
+ break;
+ case WILDCARD:
+ query = new WildcardQuery( new Term(field, term) );
+ break;
+ case FUZZY:
+ query = new FuzzyQuery( new Term(field, term), threshold, prefixLength );
+ break;
+ default:
+ throw new AssertionFailure( "Unknown approximation: " + approximation);
+
+ }
+ return query;
+ }
+
+ private List<String> getAllTermsFromText(String fieldName, String text, Analyzer analyzer) throws IOException {
+ Reader reader = new StringReader(text);
+ TokenStream stream = analyzer.reusableTokenStream( fieldName, reader);
+ TermAttribute attribute = (TermAttribute) stream.addAttribute( TermAttribute.class );
+ stream.reset();
+ List<String> terms = new ArrayList<String>();
+ while ( stream.incrementToken() ) {
+ if ( attribute.termLength() > 0 ) {
+ String term = attribute.term();
+ terms.add( term );
+ }
+ }
+ stream.end();
+ stream.close();
+ return terms;
+ }
+
+ public TermFuzzy threshold(float threshold) {
+ this.threshold = threshold;
+ return this;
+ }
+
+ public TermFuzzy prefixLength(int prefixLength) {
+ this.prefixLength = prefixLength;
+ return this;
+ }
+
+ private static enum Approximation {
+ EXACT,
+ WILDCARD,
+ FUZZY
+ }
+ }
+}
14 years, 2 months
Hibernate SVN: r19010 - in search/trunk: hibernate-search and 1 other directories.
by hibernate-commits@lists.jboss.org
Author: hardy.ferentschik
Date: 2010-03-16 14:36:37 -0400 (Tue, 16 Mar 2010)
New Revision: 19010
Modified:
search/trunk/hibernate-search/pom.xml
search/trunk/hibernate-search/src/main/assembly/dist.xml
search/trunk/pom.xml
Log:
HSEARCH-468
Modified: search/trunk/hibernate-search/pom.xml
===================================================================
--- search/trunk/hibernate-search/pom.xml 2010-03-16 18:36:12 UTC (rev 19009)
+++ search/trunk/hibernate-search/pom.xml 2010-03-16 18:36:37 UTC (rev 19010)
@@ -1,4 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Id:$ -->
<!--
* Hibernate, Relational Persistence for Idiomatic Java
*
@@ -63,6 +64,11 @@
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-core</artifactId>
</dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<build>
@@ -169,10 +175,7 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<configuration>
- <releaseProfiles>release</releaseProfiles>
- <goals>package javadoc:javadoc org.jboss.maven.plugins:maven-jdocbook-plugin:2.2.0:resources
- org.jboss.maven.plugins:maven-jdocbook-plugin:2.2.0:generate assembly:assembly
- </goals>
+ <goals>deploy org.jboss.maven.plugins:maven-jdocbook-plugin:2.2.0:resources org.jboss.maven.plugins:maven-jdocbook-plugin:2.2.0:generate assembly:assembly</goals>
</configuration>
</plugin>
<plugin>
Modified: search/trunk/hibernate-search/src/main/assembly/dist.xml
===================================================================
--- search/trunk/hibernate-search/src/main/assembly/dist.xml 2010-03-16 18:36:12 UTC (rev 19009)
+++ search/trunk/hibernate-search/src/main/assembly/dist.xml 2010-03-16 18:36:37 UTC (rev 19010)
@@ -3,7 +3,6 @@
<id>dist</id>
<formats>
<format>tar.gz</format>
- <format>tar.bz2</format>
<format>zip</format>
</formats>
@@ -19,8 +18,12 @@
<fileSet>
<directory>target</directory>
<outputDirectory>/dist</outputDirectory>
+ <excludes>
+ <exclude>*-javadoc.jar</exclude>
+ <exclude>*-sources.jar</exclude>
+ </excludes>
<includes>
- <include>*.jar</include>
+ <include>hibernate-*.jar</include>
</includes>
</fileSet>
<fileSet>
@@ -32,13 +35,23 @@
<outputDirectory>/dist/docs/manual</outputDirectory>
</fileSet>
<fileSet>
+ <directory>..</directory>
+ <outputDirectory></outputDirectory>
+ <useDefaultExcludes>true</useDefaultExcludes>
+ <includes>
+ <include>lgpl.txt</include>
+ <include>readme.txt</include>
+ <include>changelog.txt</include>
+ </includes>
+ </fileSet>
+ <fileSet>
<directory>.</directory>
<outputDirectory></outputDirectory>
<useDefaultExcludes>true</useDefaultExcludes>
- <excludes>
- <exclude>target/**</exclude>
- <exclude>hibernate-search-archetype/**</exclude>
- </excludes>
- </fileSet>
+ <includes>
+ <include>pom.xml</include>
+ <include>src/**/*</include>
+ </includes>
+ </fileSet>
</fileSets>
</assembly>
Modified: search/trunk/pom.xml
===================================================================
--- search/trunk/pom.xml 2010-03-16 18:36:12 UTC (rev 19009)
+++ search/trunk/pom.xml 2010-03-16 18:36:37 UTC (rev 19010)
@@ -1,4 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Id:$ -->
<!--
* Hibernate, Relational Persistence for Idiomatic Java
*
@@ -137,12 +138,6 @@
<version>${slf4jVersion}</version>
</dependency>
<dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>3.8.1</version>
- <scope>test</scope>
- </dependency>
- <dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4jVersion}</version>
@@ -275,7 +270,12 @@
<artifactId>javassist</artifactId>
<version>3.4.GA</version>
<optional>true</optional>
- </dependency>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>3.8.1</version>
+ </dependency>
</dependencies>
</dependencyManagement>
@@ -347,6 +347,9 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.4.3</version>
+ <configuration>
+ <redirectTestOutputToFile>true</redirectTestOutputToFile>
+ </configuration>
</plugin>
<plugin>
<groupId>org.jboss.maven.plugins</groupId>
@@ -382,6 +385,13 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.0-beta-9</version>
+ <configuration>
+ <preparationGoals>clean install</preparationGoals>
+ <autoVersionSubmodules>true</autoVersionSubmodules>
+ <allowTimestampedSnapshots>true</allowTimestampedSnapshots>
+ <remoteTagging>true</remoteTagging>
+ <goals>deploy</goals>
+ </configuration>
</plugin>
<plugin>
<groupId>org.jboss.maven.plugins</groupId>
@@ -392,15 +402,6 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.5</version>
- <executions>
- <execution>
- <id>make-javadoc</id>
- <phase>package</phase>
- <goals>
- <goal>javadoc</goal>
- </goals>
- </execution>
- </executions>
</plugin>
</plugins>
</pluginManagement>
@@ -417,7 +418,8 @@
<snapshotRepository>
<id>snapshots.jboss.org</id>
<name>JBoss Snapshot Repository</name>
- <url>dav:https://snapshots.jboss.org/maven2</url>
+ <url>file:///Users/hardy/tmp/snapshot</url>
+ <!--url>dav:https://snapshots.jboss.org/maven2</url-->
</snapshotRepository>
</distributionManagement>
14 years, 2 months
Hibernate SVN: r19009 - in search/trunk/hibernate-search-archetype: src/main and 1 other directories.
by hibernate-commits@lists.jboss.org
Author: hardy.ferentschik
Date: 2010-03-16 14:36:12 -0400 (Tue, 16 Mar 2010)
New Revision: 19009
Added:
search/trunk/hibernate-search-archetype/src/main/archetype/
search/trunk/hibernate-search-archetype/src/main/archetype/archetype.properties
Modified:
search/trunk/hibernate-search-archetype/pom.xml
Log:
HSEARCH-459
Modified: search/trunk/hibernate-search-archetype/pom.xml
===================================================================
--- search/trunk/hibernate-search-archetype/pom.xml 2010-03-16 10:48:52 UTC (rev 19008)
+++ search/trunk/hibernate-search-archetype/pom.xml 2010-03-16 18:36:12 UTC (rev 19009)
@@ -2,41 +2,41 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-search-quickstart</artifactId>
- <packaging>jar</packaging>
- <version>3.2.0-SNAPSHOT</version>
- <name>Hibernate Search Archtype</name>
- <url>http://www.myorganization.org</url>
- <properties>
- <slf4jVersion>1.5.8</slf4jVersion>
- <luceneVersion>2.9.1</luceneVersion> <!-- Remember to change code constants too: Version.LUCENE_29 -->
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- </properties>
+ <!--
+ The link to the hibernate-search parent POM only exists out of convenience.
+ If you want to continue using this quickstart proejct you should remove this
+ entry.
+ -->
+ <parent>
+ <artifactId>hibernate-search-parent</artifactId>
+ <groupId>org.hibernate</groupId>
+ <version>3.2.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <artifactId>hibernate-search-archetype</artifactId>
+ <packaging>jar</packaging>
+ <name>Hibernate Search Archetype</name>
+ <url>http://www.myorganization.org</url>
+
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-search</artifactId>
- <version>3.2.0-SNAPSHOT</version>
+ <version>${pom.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
- <version>3.5.0-Beta-4</version>
</dependency>
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-common</artifactId>
- <version>1.3.0</version>
- <optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-core</artifactId>
- <version>1.3.0</version>
- <optional>true</optional>
<exclusions>
<exclusion>
<groupId>commons-httpclient</groupId>
@@ -67,34 +67,22 @@
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-snowball</artifactId>
- <version>${luceneVersion}</version>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-analyzers</artifactId>
- <version>${luceneVersion}</version>
</dependency>
<dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- <version>${slf4jVersion}</version>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- <version>${slf4jVersion}</version>
- </dependency>
- <dependency>
<groupId>hsqldb</groupId>
<artifactId>hsqldb</artifactId>
- <version>1.8.0.10</version>
+ <version>1.8.0.2</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version>
<scope>test</scope>
- </dependency>
+ </dependency>
</dependencies>
<build>
@@ -102,12 +90,17 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
- <version>2.1</version>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
+ <plugin>
+ <artifactId>maven-deploy-plugin</artifactId>
+ <configuration>
+ <skip>true</skip>
+ </configuration>
+ </plugin>
</plugins>
</build>
</project>
Added: search/trunk/hibernate-search-archetype/src/main/archetype/archetype.properties
===================================================================
--- search/trunk/hibernate-search-archetype/src/main/archetype/archetype.properties (rev 0)
+++ search/trunk/hibernate-search-archetype/src/main/archetype/archetype.properties 2010-03-16 18:36:12 UTC (rev 19009)
@@ -0,0 +1,3 @@
+archetype.groupId=org.hibernate
+archetype.artifactId=hibernate-search-quickstart
+
Property changes on: search/trunk/hibernate-search-archetype/src/main/archetype/archetype.properties
___________________________________________________________________
Name: svn:keywords
+ Id
Name: svn:eol-style
+ native
14 years, 2 months