From 2fd0d4d241d6a6ce8b3e91984f33bccfa7e05fcf Mon Sep 17 00:00:00 2001 From: Strong Liu Date: Sun, 27 Jan 2013 01:26:27 +0800 Subject: [PATCH] HHH-7945 xsd element with mixed set to true may return unexpected \n --- .../hql/internal/ast/util/SyntheticAndFactory.java | 3 ++- .../main/java/org/hibernate/internal/util/StringHelper.java | 4 ++++ .../internal/source/hbm/FilterDefinitionSourceImpl.java | 6 +++++- .../metamodel/internal/source/hbm/FilterSourceImpl.java | 5 ++++- .../test/filter/hql/BasicFilteredBulkManipulationTest.java | 2 -- .../test/filter/hql/JoinedFilteredBulkManipulationTest.java | 2 -- 6 files changed, 15 insertions(+), 7 deletions(-) diff --git a/hibernate-core/src/main/java/org/hibernate/hql/internal/ast/util/SyntheticAndFactory.java b/hibernate-core/src/main/java/org/hibernate/hql/internal/ast/util/SyntheticAndFactory.java index 62cbe7edeb..88ae50ed58 100644 --- a/hibernate-core/src/main/java/org/hibernate/hql/internal/ast/util/SyntheticAndFactory.java +++ b/hibernate-core/src/main/java/org/hibernate/hql/internal/ast/util/SyntheticAndFactory.java @@ -29,6 +29,7 @@ import antlr.collections.AST; import org.jboss.logging.Logger; +import org.hibernate.Filter; import org.hibernate.hql.internal.antlr.HqlSqlTokenTypes; import org.hibernate.hql.internal.ast.HqlSqlWalker; import org.hibernate.hql.internal.ast.tree.FromElement; @@ -164,7 +165,7 @@ public void addWhereFragment( public void addDiscriminatorWhereFragment( RestrictableStatement statement, Queryable persister, - Map enabledFilters, + Map enabledFilters, String alias) { String whereFragment = persister.filterFragment( alias, enabledFilters ).trim(); if ( "".equals( whereFragment ) ) { diff --git a/hibernate-core/src/main/java/org/hibernate/internal/util/StringHelper.java b/hibernate-core/src/main/java/org/hibernate/internal/util/StringHelper.java index bf8856ec01..4cd2e5eb47 100644 --- a/hibernate-core/src/main/java/org/hibernate/internal/util/StringHelper.java +++ b/hibernate-core/src/main/java/org/hibernate/internal/util/StringHelper.java @@ -452,6 +452,10 @@ public static boolean isEmpty(String string) { return string == null || string.length() == 0; } + public static boolean isEmptyOrWhiteSpace(String string){ + return isEmpty( string ) || isEmpty( string.trim() ); + } + public static String qualify(String prefix, String name) { if ( name == null || prefix == null ) { throw new NullPointerException(); diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/FilterDefinitionSourceImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/FilterDefinitionSourceImpl.java index 9863c34c25..3de4212c11 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/FilterDefinitionSourceImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/FilterDefinitionSourceImpl.java @@ -28,6 +28,7 @@ import javax.xml.bind.JAXBElement; +import org.hibernate.internal.util.StringHelper; import org.hibernate.jaxb.spi.hbm.JaxbFilterDefElement; import org.hibernate.jaxb.spi.hbm.JaxbFilterParamElement; import org.hibernate.metamodel.spi.source.FilterDefinitionSource; @@ -55,7 +56,10 @@ public FilterDefinitionSourceImpl( final List parameterSources = new ArrayList(); for ( Object content : filterDefElement.getContent() ) { if ( String.class.isInstance( content ) ){ - conditionContent = (String) content; + final String str = content.toString(); + if ( !StringHelper.isEmptyOrWhiteSpace( str ) ) { + conditionContent = str.trim(); + } } else if ( JAXBElement.class.isInstance( content ) ) { JAXBElement jaxbElement = JAXBElement.class.cast( content ); diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/FilterSourceImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/FilterSourceImpl.java index 95f0a38d2e..55d1fd64a5 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/FilterSourceImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/internal/source/hbm/FilterSourceImpl.java @@ -57,7 +57,10 @@ public FilterSourceImpl( for ( Serializable content : filterElement.getContent() ) { if ( String.class.isInstance( content ) ) { - conditionContent = String.class.cast( content ); + final String str = content.toString(); + if ( !StringHelper.isEmptyOrWhiteSpace( str ) ) { + conditionContent = str.trim(); + } } else { final JaxbFilterAliasMappingType aliasMapping = JaxbFilterAliasMappingType.class.cast( content ); diff --git a/hibernate-core/src/test/java/org/hibernate/test/filter/hql/BasicFilteredBulkManipulationTest.java b/hibernate-core/src/test/java/org/hibernate/test/filter/hql/BasicFilteredBulkManipulationTest.java index 45cc6c2ccb..1d98bf7799 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/filter/hql/BasicFilteredBulkManipulationTest.java +++ b/hibernate-core/src/test/java/org/hibernate/test/filter/hql/BasicFilteredBulkManipulationTest.java @@ -26,7 +26,6 @@ import org.junit.Test; import org.hibernate.Session; -import org.hibernate.testing.FailureExpectedWithNewMetamodel; import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase; import static org.junit.Assert.assertEquals; @@ -36,7 +35,6 @@ * * @author Steve Ebersole */ -@FailureExpectedWithNewMetamodel public class BasicFilteredBulkManipulationTest extends BaseCoreFunctionalTestCase { @Override public String[] getMappings() { diff --git a/hibernate-core/src/test/java/org/hibernate/test/filter/hql/JoinedFilteredBulkManipulationTest.java b/hibernate-core/src/test/java/org/hibernate/test/filter/hql/JoinedFilteredBulkManipulationTest.java index e1d8c0b709..c5f03c3ded 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/filter/hql/JoinedFilteredBulkManipulationTest.java +++ b/hibernate-core/src/test/java/org/hibernate/test/filter/hql/JoinedFilteredBulkManipulationTest.java @@ -29,7 +29,6 @@ import org.junit.Test; import org.hibernate.Session; -import org.hibernate.testing.FailureExpectedWithNewMetamodel; import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase; import static org.junit.Assert.assertEquals; @@ -37,7 +36,6 @@ /** * @author Steve Ebersole */ -@FailureExpectedWithNewMetamodel @SkipForDialect( value = CUBRIDDialect.class, comment = "As of verion 8.4.1 CUBRID doesn't support temporary tables. This test fails with" +