[hibernate-commits] Hibernate SVN: r17768 - in core/trunk: entitymanager/src/main/java/org/hibernate/ejb and 6 other directories.
hibernate-commits at lists.jboss.org
hibernate-commits at lists.jboss.org
Thu Oct 15 14:50:42 EDT 2009
Author: steve.ebersole at jboss.com
Date: 2009-10-15 14:50:41 -0400 (Thu, 15 Oct 2009)
New Revision: 17768
Modified:
core/trunk/annotations/src/main/java/org/hibernate/cfg/IndexColumn.java
core/trunk/entitymanager/src/main/java/org/hibernate/ejb/AbstractQueryImpl.java
core/trunk/entitymanager/src/main/java/org/hibernate/ejb/EntityManagerFactoryImpl.java
core/trunk/entitymanager/src/main/java/org/hibernate/ejb/HibernatePersistence.java
core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/BasicCollectionJoinImpl.java
core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/BasicListJoinImpl.java
core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/BasicMapJoinImpl.java
core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/BasicSetJoinImpl.java
core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/CollectionJoinImpl.java
core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/CriteriaSubqueryImpl.java
core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/FromImpl.java
core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/JoinImpl.java
core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/JoinImplementors.java
core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/ListJoinImpl.java
core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/MapJoinImpl.java
core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/MapKeyHelpers.java
core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/QueryBuilderImpl.java
core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/RootImpl.java
core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/SetJoinImpl.java
core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/expression/CoalesceExpression.java
core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/expression/ParameterExpressionImpl.java
core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/expression/SearchedCaseExpression.java
core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/expression/SimpleCaseExpression.java
core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/expression/SubqueryComparisonModifierExpression.java
core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/expression/UnaryArithmeticOperation.java
core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/expression/function/AbsFunction.java
core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/expression/function/AggregationFunction.java
core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/expression/function/TrimFunction.java
core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/predicate/AbstractPredicateImpl.java
core/trunk/entitymanager/src/main/java/org/hibernate/ejb/metamodel/EntityTypeDelegator.java
core/trunk/entitymanager/src/main/java/org/hibernate/ejb/metamodel/ManagedTypeImpl.java
core/trunk/entitymanager/src/main/java/org/hibernate/ejb/metamodel/MetamodelImpl.java
core/trunk/parent/pom.xml
Log:
Update jpa-api to 2.0-cr-1
Modified: core/trunk/annotations/src/main/java/org/hibernate/cfg/IndexColumn.java
===================================================================
--- core/trunk/annotations/src/main/java/org/hibernate/cfg/IndexColumn.java 2009-10-15 16:26:26 UTC (rev 17767)
+++ core/trunk/annotations/src/main/java/org/hibernate/cfg/IndexColumn.java 2009-10-15 18:50:41 UTC (rev 17768)
@@ -97,9 +97,15 @@
String sqlType = BinderHelper.isDefault( ann.columnDefinition() ) ? null : ann.columnDefinition();
String name = BinderHelper.isDefault( ann.name() ) ? inferredData.getPropertyName() + "_ORDER" : ann.name();
//TODO move it to a getter based system and remove the constructor
+// The JPA OrderColumn annotation defines no table element...
+// column = new IndexColumn(
+// false, sqlType, 0, 0, 0, name, ann.nullable(),
+// false, ann.insertable(), ann.updatable(), ann.table(),
+// secondaryTables, propertyHolder, mappings
+// );
column = new IndexColumn(
false, sqlType, 0, 0, 0, name, ann.nullable(),
- false, ann.insertable(), ann.updatable(), ann.table(),
+ false, ann.insertable(), ann.updatable(), /*ann.table()*/null,
secondaryTables, propertyHolder, mappings
);
}
Modified: core/trunk/entitymanager/src/main/java/org/hibernate/ejb/AbstractQueryImpl.java
===================================================================
--- core/trunk/entitymanager/src/main/java/org/hibernate/ejb/AbstractQueryImpl.java 2009-10-15 16:26:26 UTC (rev 17767)
+++ core/trunk/entitymanager/src/main/java/org/hibernate/ejb/AbstractQueryImpl.java 2009-10-15 18:50:41 UTC (rev 17768)
@@ -269,15 +269,15 @@
private Map parameterBindings;
protected void registerParameterBinding(Parameter parameter, Object value) {
- if ( value != null && parameter.getJavaType() != null ) {
+ if ( value != null && parameter.getParameterType() != null ) {
if ( Collection.class.isInstance( value ) ) {
final Collection collection = (Collection) value;
// validate the elements...
for ( Object element : collection ) {
- if ( ! parameter.getJavaType().isInstance( element ) ) {
+ if ( ! parameter.getParameterType().isInstance( element ) ) {
throw new IllegalArgumentException(
"Parameter value [" + element + "] was not matching type [" +
- parameter.getJavaType().getName() + "]"
+ parameter.getParameterType().getName() + "]"
);
}
}
@@ -285,19 +285,19 @@
else if ( value.getClass().isArray() ) {
final Object[] array = (Object[]) value;
for ( Object element : array ) {
- if ( ! parameter.getJavaType().isInstance( element ) ) {
+ if ( ! parameter.getParameterType().isInstance( element ) ) {
throw new IllegalArgumentException(
"Parameter value [" + element + "] was not matching type [" +
- parameter.getJavaType().getName() + "]"
+ parameter.getParameterType().getName() + "]"
);
}
}
}
else {
- if ( ! parameter.getJavaType().isInstance( value ) ) {
+ if ( ! parameter.getParameterType().isInstance( value ) ) {
throw new IllegalArgumentException(
"Parameter value [" + value + "] was not matching type [" +
- parameter.getJavaType().getName() + "]"
+ parameter.getParameterType().getName() + "]"
);
}
}
Modified: core/trunk/entitymanager/src/main/java/org/hibernate/ejb/EntityManagerFactoryImpl.java
===================================================================
--- core/trunk/entitymanager/src/main/java/org/hibernate/ejb/EntityManagerFactoryImpl.java 2009-10-15 16:26:26 UTC (rev 17767)
+++ core/trunk/entitymanager/src/main/java/org/hibernate/ejb/EntityManagerFactoryImpl.java 2009-10-15 18:50:41 UTC (rev 17768)
@@ -30,7 +30,7 @@
import javax.persistence.Cache;
import javax.persistence.PersistenceUnitUtil;
import javax.persistence.metamodel.Metamodel;
-import javax.persistence.criteria.QueryBuilder;
+import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.spi.PersistenceUnitTransactionType;
import javax.persistence.spi.LoadState;
@@ -93,7 +93,7 @@
);
}
- public QueryBuilder getQueryBuilder() {
+ public CriteriaBuilder getCriteriaBuilder() {
return criteriaQueryBuilder;
}
Modified: core/trunk/entitymanager/src/main/java/org/hibernate/ejb/HibernatePersistence.java
===================================================================
--- core/trunk/entitymanager/src/main/java/org/hibernate/ejb/HibernatePersistence.java 2009-10-15 16:26:26 UTC (rev 17767)
+++ core/trunk/entitymanager/src/main/java/org/hibernate/ejb/HibernatePersistence.java 2009-10-15 18:50:41 UTC (rev 17768)
@@ -27,6 +27,7 @@
import javax.persistence.EntityManagerFactory;
import javax.persistence.spi.LoadState;
import javax.persistence.spi.PersistenceUnitInfo;
+import javax.persistence.spi.ProviderUtil;
import org.hibernate.ejb.util.PersistenceUtilHelper;
@@ -157,24 +158,30 @@
return configured != null ? configured.buildEntityManagerFactory() : null;
}
- public LoadState isLoadedWithoutReference(Object proxy, String property) {
- return PersistenceUtilHelper.isLoadedWithoutReference( proxy, property );
- }
+ private final ProviderUtil providerUtil = new ProviderUtil() {
+ public LoadState isLoadedWithoutReference(Object proxy, String property) {
+ return PersistenceUtilHelper.isLoadedWithoutReference( proxy, property );
+ }
- public LoadState isLoadedWithReference(Object proxy, String property) {
- return PersistenceUtilHelper.isLoadedWithReference( proxy, property );
- }
+ public LoadState isLoadedWithReference(Object proxy, String property) {
+ return PersistenceUtilHelper.isLoadedWithReference( proxy, property );
+ }
- public LoadState isLoaded(Object o) {
- return PersistenceUtilHelper.isLoaded(o);
+ public LoadState isLoaded(Object o) {
+ return PersistenceUtilHelper.isLoaded(o);
+ }
+ };
+
+ public ProviderUtil getProviderUtil() {
+ return providerUtil;
}
/**
* create a factory from a canonical version
* @deprecated
*/
- // This is used directly by JBoss so don't remove until further notice. bill at jboss.org
public EntityManagerFactory createEntityManagerFactory(Map properties) {
+ // This is used directly by JBoss so don't remove until further notice. bill at jboss.org
Ejb3Configuration cfg = new Ejb3Configuration();
return cfg.createEntityManagerFactory( properties );
}
Modified: core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/BasicCollectionJoinImpl.java
===================================================================
--- core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/BasicCollectionJoinImpl.java 2009-10-15 16:26:26 UTC (rev 17767)
+++ core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/BasicCollectionJoinImpl.java 2009-10-15 18:50:41 UTC (rev 17768)
@@ -24,6 +24,7 @@
package org.hibernate.ejb.criteria;
import javax.persistence.criteria.JoinType;
+import javax.persistence.criteria.From;
import javax.persistence.metamodel.CollectionAttribute;
import org.hibernate.ejb.criteria.JoinImplementors.CollectionJoinImplementor;
@@ -66,7 +67,23 @@
getJoinType()
);
correlation.defineJoinScope( subquery.getJoinScope() );
+ correlation.correlationParent = this;
return correlation;
}
+ private From<O, E> correlationParent;
+
+ /**
+ * {@inheritDoc}
+ */
+ public boolean isCorrelated() {
+ return false;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public From<O, E> getCorrelationParent() {
+ return null;
+ }
}
Modified: core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/BasicListJoinImpl.java
===================================================================
--- core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/BasicListJoinImpl.java 2009-10-15 16:26:26 UTC (rev 17767)
+++ core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/BasicListJoinImpl.java 2009-10-15 18:50:41 UTC (rev 17768)
@@ -25,6 +25,7 @@
import javax.persistence.criteria.Expression;
import javax.persistence.criteria.JoinType;
+import javax.persistence.criteria.From;
import javax.persistence.metamodel.ListAttribute;
import org.hibernate.ejb.criteria.JoinImplementors.ListJoinImplementor;
import org.hibernate.ejb.criteria.expression.ListIndexExpression;
@@ -72,7 +73,23 @@
getJoinType()
);
correlation.defineJoinScope( subquery.getJoinScope() );
+ correlation.correlationParent = this;
return correlation;
}
+ private From<O, E> correlationParent;
+
+ /**
+ * {@inheritDoc}
+ */
+ public boolean isCorrelated() {
+ return getCorrelationParent() != null;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public From<O, E> getCorrelationParent() {
+ return correlationParent;
+ }
}
Modified: core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/BasicMapJoinImpl.java
===================================================================
--- core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/BasicMapJoinImpl.java 2009-10-15 16:26:26 UTC (rev 17767)
+++ core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/BasicMapJoinImpl.java 2009-10-15 18:50:41 UTC (rev 17768)
@@ -29,6 +29,7 @@
import javax.persistence.criteria.Join;
import javax.persistence.criteria.JoinType;
import javax.persistence.criteria.Path;
+import javax.persistence.criteria.From;
import javax.persistence.metamodel.MapAttribute;
import javax.persistence.metamodel.Type.PersistenceType;
import org.hibernate.ejb.criteria.JoinImplementors.MapJoinImplementor;
@@ -47,6 +48,7 @@
extends AbstractBasicPluralJoin<O,java.util.Map<K,V>,V>
implements JoinImplementors.MapJoinImplementor<O,K,V> {
+
public BasicMapJoinImpl(
QueryBuilderImpl queryBuilder,
Class<V> javaType,
@@ -57,19 +59,6 @@
}
@Override
- public MapJoinImplementor<O, K, V> correlateTo(CriteriaSubqueryImpl subquery) {
- BasicMapJoinImpl<O,K,V> correlation = new BasicMapJoinImpl<O,K,V>(
- queryBuilder(),
- getJavaType(),
- (PathImpl<O>) getParentPath(),
- getAttribute(),
- getJoinType()
- );
- correlation.defineJoinScope( subquery.getJoinScope() );
- return correlation;
- }
-
- @Override
public MapAttribute<? super O, K, V> getAttribute() {
return (MapAttribute<? super O, K, V>) super.getAttribute();
}
@@ -148,4 +137,33 @@
return new MapKeyHelpers.MapEntryExpression( queryBuilder(), Map.Entry.class, getAttribute() );
}
+ private From<O, V> correlationParent;
+
+ @Override
+ public MapJoinImplementor<O, K, V> correlateTo(CriteriaSubqueryImpl subquery) {
+ BasicMapJoinImpl<O,K,V> correlation = new BasicMapJoinImpl<O,K,V>(
+ queryBuilder(),
+ getJavaType(),
+ (PathImpl<O>) getParentPath(),
+ getAttribute(),
+ getJoinType()
+ );
+ correlation.defineJoinScope( subquery.getJoinScope() );
+ correlation.correlationParent = this;
+ return correlation;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public boolean isCorrelated() {
+ return getCorrelationParent() != null;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public From<O, V> getCorrelationParent() {
+ return correlationParent;
+ }
}
Modified: core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/BasicSetJoinImpl.java
===================================================================
--- core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/BasicSetJoinImpl.java 2009-10-15 16:26:26 UTC (rev 17767)
+++ core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/BasicSetJoinImpl.java 2009-10-15 18:50:41 UTC (rev 17768)
@@ -24,6 +24,7 @@
package org.hibernate.ejb.criteria;
import javax.persistence.criteria.JoinType;
+import javax.persistence.criteria.From;
import javax.persistence.metamodel.SetAttribute;
import org.hibernate.ejb.criteria.JoinImplementors.SetJoinImplementor;
@@ -47,6 +48,16 @@
}
@Override
+ public SetAttribute<? super O, E> getAttribute() {
+ return (SetAttribute<? super O, E>) super.getAttribute();
+ }
+
+ @Override
+ public SetAttribute<? super O, E> getModel() {
+ return getAttribute();
+ }
+
+ @Override
public SetJoinImplementor<O, E> correlateTo(CriteriaSubqueryImpl subquery) {
BasicSetJoinImpl<O,E> correlation = new BasicSetJoinImpl<O,E>(
queryBuilder(),
@@ -56,16 +67,23 @@
getJoinType()
);
correlation.defineJoinScope( subquery.getJoinScope() );
+ correlation.correlationParent = this;
return correlation;
}
- @Override
- public SetAttribute<? super O, E> getAttribute() {
- return (SetAttribute<? super O, E>) super.getAttribute();
+ private From<O, E> correlationParent;
+
+ /**
+ * {@inheritDoc}
+ */
+ public boolean isCorrelated() {
+ return getCorrelationParent() != null;
}
- @Override
- public SetAttribute<? super O, E> getModel() {
- return getAttribute();
- }
+ /**
+ * {@inheritDoc}
+ */
+ public From<O, E> getCorrelationParent() {
+ return correlationParent;
+ }
}
Modified: core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/CollectionJoinImpl.java
===================================================================
--- core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/CollectionJoinImpl.java 2009-10-15 16:26:26 UTC (rev 17767)
+++ core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/CollectionJoinImpl.java 2009-10-15 18:50:41 UTC (rev 17768)
@@ -24,6 +24,7 @@
package org.hibernate.ejb.criteria;
import javax.persistence.criteria.JoinType;
+import javax.persistence.criteria.From;
import javax.persistence.metamodel.CollectionAttribute;
import org.hibernate.ejb.criteria.JoinImplementors.CollectionJoinImplementor;
@@ -47,6 +48,16 @@
}
@Override
+ public CollectionAttribute<? super O, E> getAttribute() {
+ return (CollectionAttribute<? super O, E>) super.getAttribute();
+ }
+
+ @Override
+ public CollectionAttribute<? super O, E> getModel() {
+ return getAttribute();
+ }
+
+ @Override
public CollectionJoinImplementor<O, E> correlateTo(CriteriaSubqueryImpl subquery) {
CollectionJoinImpl<O,E> correlation = new CollectionJoinImpl<O,E>(
queryBuilder(),
@@ -56,17 +67,24 @@
getJoinType()
);
correlation.defineJoinScope( subquery.getJoinScope() );
+ correlation.correlationParent = this;
return correlation;
}
- @Override
- public CollectionAttribute<? super O, E> getAttribute() {
- return (CollectionAttribute<? super O, E>) super.getAttribute();
+ private From<O, E> correlationParent;
+
+ /**
+ * {@inheritDoc}
+ */
+ public boolean isCorrelated() {
+ return false;
}
- @Override
- public CollectionAttribute<? super O, E> getModel() {
- return getAttribute();
- }
+ /**
+ * {@inheritDoc}
+ */
+ public From<O, E> getCorrelationParent() {
+ return null;
+ }
}
Modified: core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/CriteriaSubqueryImpl.java
===================================================================
--- core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/CriteriaSubqueryImpl.java 2009-10-15 16:26:26 UTC (rev 17767)
+++ core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/CriteriaSubqueryImpl.java 2009-10-15 18:50:41 UTC (rev 17768)
@@ -39,6 +39,7 @@
import javax.persistence.criteria.Root;
import javax.persistence.criteria.SetJoin;
import javax.persistence.criteria.Subquery;
+import javax.persistence.criteria.From;
import javax.persistence.metamodel.EntityType;
import org.hibernate.ejb.criteria.FromImpl.JoinScope;
import org.hibernate.ejb.criteria.expression.ExpressionImpl;
@@ -64,6 +65,14 @@
public void addFetch(Fetch fetch) {
throw new UnsupportedOperationException( "Cannot define fetch from a subquery correlation" );
}
+
+ public boolean isCorrelated() {
+ return true;
+ }
+
+ public From getCorrelationParent() {
+ return null;
+ }
};
public CriteriaSubqueryImpl(
Modified: core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/FromImpl.java
===================================================================
--- core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/FromImpl.java 2009-10-15 16:26:26 UTC (rev 17767)
+++ core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/FromImpl.java 2009-10-15 18:50:41 UTC (rev 17768)
@@ -67,6 +67,8 @@
public static interface JoinScope<X> {
public void addJoin(Join<X, ?> join);
public void addFetch(Fetch<X,?> fetch);
+ public boolean isCorrelated();
+ public From<?, X> getCorrelationParent();
}
private final Expression<Class<? extends X>> type;
@@ -87,13 +89,21 @@
}
fetches.add( fetch );
}
+
+ public boolean isCorrelated() {
+ return false;
+ }
+
+ public From<?, X> getCorrelationParent() {
+ return null;
+ }
};
/**
* Special constructor for {@link RootImpl}.
*
- * @param queryBuilder
- * @param entityType
+ * @param queryBuilder The query build
+ * @param entityType The entity defining this root
*/
protected FromImpl(QueryBuilderImpl queryBuilder, EntityType<X> entityType) {
super( queryBuilder, entityType.getBindableJavaType(), null, null, entityType );
Modified: core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/JoinImpl.java
===================================================================
--- core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/JoinImpl.java 2009-10-15 16:26:26 UTC (rev 17767)
+++ core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/JoinImpl.java 2009-10-15 18:50:41 UTC (rev 17768)
@@ -55,7 +55,7 @@
javaType,
lhs,
joinProperty,
- (ManagedType<X>)queryBuilder.getEntityManagerFactory().getMetamodel().type( javaType )
+ (ManagedType<X>)queryBuilder.getEntityManagerFactory().getMetamodel().managedType( javaType )
);
this.managedType = (ManagedType<X>) getModel();
this.joinType = joinType;
@@ -95,8 +95,24 @@
getJoinType()
);
correlation.defineJoinScope( subquery.getJoinScope() );
+ correlation.correlationParent = this;
return correlation;
}
+ private From<Z,X> correlationParent;
+ /**
+ * {@inheritDoc}
+ */
+ public boolean isCorrelated() {
+ return false;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public From<Z,X> getCorrelationParent() {
+ return null;
+ }
+
}
Modified: core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/JoinImplementors.java
===================================================================
--- core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/JoinImplementors.java 2009-10-15 16:26:26 UTC (rev 17767)
+++ core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/JoinImplementors.java 2009-10-15 18:50:41 UTC (rev 17768)
@@ -29,6 +29,7 @@
import javax.persistence.criteria.ListJoin;
import javax.persistence.criteria.MapJoin;
import javax.persistence.criteria.SetJoin;
+import javax.persistence.criteria.From;
/**
* Consolidates the {@link Join} and {@link Fetch} hierarchies since that is how we implement them.
Modified: core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/ListJoinImpl.java
===================================================================
--- core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/ListJoinImpl.java 2009-10-15 16:26:26 UTC (rev 17767)
+++ core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/ListJoinImpl.java 2009-10-15 18:50:41 UTC (rev 17768)
@@ -25,6 +25,7 @@
import javax.persistence.criteria.Expression;
import javax.persistence.criteria.JoinType;
+import javax.persistence.criteria.From;
import javax.persistence.metamodel.ListAttribute;
import org.hibernate.ejb.criteria.JoinImplementors.ListJoinImplementor;
import org.hibernate.ejb.criteria.expression.ListIndexExpression;
@@ -46,6 +47,23 @@
}
@Override
+ public ListAttribute<? super O, E> getAttribute() {
+ return (ListAttribute<? super O, E>) super.getAttribute();
+ }
+
+ @Override
+ public ListAttribute<? super O, E> getModel() {
+ return (ListAttribute<? super O, E>) getAttribute();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Expression<Integer> index() {
+ return new ListIndexExpression( queryBuilder(), getAttribute() );
+ }
+
+ @Override
public ListJoinImplementor<O, E> correlateTo(CriteriaSubqueryImpl subquery) {
ListJoinImpl<O,E> correlation = new ListJoinImpl<O,E>(
queryBuilder(),
@@ -55,20 +73,23 @@
getJoinType()
);
correlation.defineJoinScope( subquery.getJoinScope() );
+ correlation.correlationParent = this;
return correlation;
}
- @Override
- public ListAttribute<? super O, E> getAttribute() {
- return (ListAttribute<? super O, E>) super.getAttribute();
- }
+ private From<O, E> correlationParent;
- @Override
- public ListAttribute<? super O, E> getModel() {
- return (ListAttribute<? super O, E>) getAttribute();
+ /**
+ * {@inheritDoc}
+ */
+ public boolean isCorrelated() {
+ return getCorrelationParent() != null;
}
- public Expression<Integer> index() {
- return new ListIndexExpression( queryBuilder(), getAttribute() );
+ /**
+ * {@inheritDoc}
+ */
+ public From<O, E> getCorrelationParent() {
+ return correlationParent;
}
}
Modified: core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/MapJoinImpl.java
===================================================================
--- core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/MapJoinImpl.java 2009-10-15 16:26:26 UTC (rev 17767)
+++ core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/MapJoinImpl.java 2009-10-15 18:50:41 UTC (rev 17768)
@@ -29,6 +29,7 @@
import javax.persistence.criteria.Join;
import javax.persistence.criteria.JoinType;
import javax.persistence.criteria.Path;
+import javax.persistence.criteria.From;
import javax.persistence.metamodel.MapAttribute;
import javax.persistence.metamodel.Type.PersistenceType;
import org.hibernate.ejb.criteria.JoinImplementors.MapJoinImplementor;
@@ -53,19 +54,6 @@
}
@Override
- public MapJoinImplementor<O, K, V> correlateTo(CriteriaSubqueryImpl subquery) {
- MapJoinImpl<O, K, V> correlation = new MapJoinImpl<O, K, V>(
- queryBuilder(),
- getJavaType(),
- (PathImpl<O>) getParentPath(),
- getAttribute(),
- getJoinType()
- );
- correlation.defineJoinScope( subquery.getJoinScope() );
- return correlation;
- }
-
- @Override
public MapAttribute<? super O, K, V> getAttribute() {
return (MapAttribute<? super O, K, V>) super.getAttribute();
}
@@ -141,4 +129,34 @@
return new MapKeyHelpers.MapEntryExpression( queryBuilder(), Map.Entry.class, getAttribute() );
}
+
+ private From<O, V> correlationParent;
+
+ @Override
+ public MapJoinImplementor<O, K, V> correlateTo(CriteriaSubqueryImpl subquery) {
+ MapJoinImpl<O, K, V> correlation = new MapJoinImpl<O, K, V>(
+ queryBuilder(),
+ getJavaType(),
+ (PathImpl<O>) getParentPath(),
+ getAttribute(),
+ getJoinType()
+ );
+ correlation.defineJoinScope( subquery.getJoinScope() );
+ correlation.correlationParent = this;
+ return correlation;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public boolean isCorrelated() {
+ return getCorrelationParent() != null;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public From<O, V> getCorrelationParent() {
+ return correlationParent;
+ }
}
Modified: core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/MapKeyHelpers.java
===================================================================
--- core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/MapKeyHelpers.java 2009-10-15 16:26:26 UTC (rev 17767)
+++ core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/MapKeyHelpers.java 2009-10-15 18:50:41 UTC (rev 17768)
@@ -31,6 +31,7 @@
import javax.persistence.criteria.JoinType;
import javax.persistence.criteria.MapJoin;
import javax.persistence.criteria.Path;
+import javax.persistence.criteria.From;
import javax.persistence.metamodel.Attribute;
import javax.persistence.metamodel.Bindable.BindableType;
import javax.persistence.metamodel.ManagedType;
@@ -75,6 +76,13 @@
throw new UnsupportedOperationException( "Map key join cannot be used as a correlation" );
}
+ public boolean isCorrelated() {
+ return false;
+ }
+
+ public From<Map<K, V>, K> getCorrelationParent() {
+ return null;
+ }
}
/**
Modified: core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/QueryBuilderImpl.java
===================================================================
--- core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/QueryBuilderImpl.java 2009-10-15 16:26:26 UTC (rev 17767)
+++ core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/QueryBuilderImpl.java 2009-10-15 18:50:41 UTC (rev 17768)
@@ -31,7 +31,7 @@
import java.util.Set;
import java.math.BigDecimal;
import java.math.BigInteger;
-import javax.persistence.criteria.QueryBuilder;
+import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Selection;
import javax.persistence.criteria.CompoundSelection;
@@ -87,7 +87,7 @@
*
* @author Steve Ebersole
*/
-public class QueryBuilderImpl implements QueryBuilder, Serializable {
+public class QueryBuilderImpl implements CriteriaBuilder, Serializable {
private final EntityManagerFactoryImpl entityManagerFactory;
public QueryBuilderImpl(EntityManagerFactoryImpl entityManagerFactory) {
@@ -260,7 +260,7 @@
* {@inheritDoc}
*/
public Predicate not(Expression<Boolean> expression) {
- return wrap( expression ).negate();
+ return wrap( expression ).not();
}
/**
@@ -318,7 +318,7 @@
* {@inheritDoc}
*/
public Predicate isFalse(Expression<Boolean> x) {
- return wrap( x ).negate();
+ return wrap( x ).not();
// TODO : the correct thing here depends on response to #5 on my wiki page
// return new ExplicitTruthValueCheck( this, x, TruthValue.FALSE );
}
@@ -334,7 +334,7 @@
* {@inheritDoc}
*/
public Predicate isNotNull(Expression<?> x) {
- return isNull( x ).negate();
+ return isNull( x ).not();
}
/**
@@ -366,13 +366,13 @@
*/
public Predicate notEqual(Expression<?> x, Object y) {
//noinspection SuspiciousNameCombination
- return new ComparisonPredicate( this, ComparisonOperator.NOT_EQUAL, x, y ).negate();
+ return new ComparisonPredicate( this, ComparisonOperator.NOT_EQUAL, x, y ).not();
}
/**
* {@inheritDoc}
*/
- public <Y extends Comparable<Y>> Predicate greaterThan(Expression<? extends Y> x, Expression<? extends Y> y) {
+ public <Y extends Comparable<? super Y>> Predicate greaterThan(Expression<? extends Y> x, Expression<? extends Y> y) {
//noinspection SuspiciousNameCombination
return new ComparisonPredicate( this, ComparisonOperator.GREATER_THAN, x, y );
}
@@ -380,7 +380,7 @@
/**
* {@inheritDoc}
*/
- public <Y extends Comparable<Y>> Predicate lessThan(
+ public <Y extends Comparable<? super Y>> Predicate lessThan(
Expression<? extends Y> x,
Expression<? extends Y> y) {
//noinspection SuspiciousNameCombination
@@ -390,7 +390,7 @@
/**
* {@inheritDoc}
*/
- public <Y extends Comparable<Y>> Predicate greaterThanOrEqualTo(
+ public <Y extends Comparable<? super Y>> Predicate greaterThanOrEqualTo(
Expression<? extends Y> x,
Expression<? extends Y> y) {
//noinspection SuspiciousNameCombination
@@ -400,7 +400,7 @@
/**
* {@inheritDoc}
*/
- public <Y extends Comparable<Y>> Predicate lessThanOrEqualTo(
+ public <Y extends Comparable<? super Y>> Predicate lessThanOrEqualTo(
Expression<? extends Y> x,
Expression<? extends Y> y) {
//noinspection SuspiciousNameCombination
@@ -410,7 +410,7 @@
/**
* {@inheritDoc}
*/
- public <Y extends Comparable<Y>> Predicate greaterThan(
+ public <Y extends Comparable<? super Y>> Predicate greaterThan(
Expression<? extends Y> x,
Y y) {
//noinspection SuspiciousNameCombination
@@ -420,7 +420,7 @@
/**
* {@inheritDoc}
*/
- public <Y extends Comparable<Y>> Predicate lessThan(
+ public <Y extends Comparable<? super Y>> Predicate lessThan(
Expression<? extends Y> x,
Y y) {
//noinspection SuspiciousNameCombination
@@ -430,7 +430,7 @@
/**
* {@inheritDoc}
*/
- public <Y extends Comparable<Y>> Predicate greaterThanOrEqualTo(
+ public <Y extends Comparable<? super Y>> Predicate greaterThanOrEqualTo(
Expression<? extends Y> x,
Y y) {
//noinspection SuspiciousNameCombination
@@ -440,7 +440,7 @@
/**
* {@inheritDoc}
*/
- public <Y extends Comparable<Y>> Predicate lessThanOrEqualTo(
+ public<Y extends Comparable<? super Y>> Predicate lessThanOrEqualTo(
Expression<? extends Y> x,
Y y) {
//noinspection SuspiciousNameCombination
@@ -514,7 +514,7 @@
/**
* {@inheritDoc}
*/
- public <Y extends Comparable<Y>> Predicate between(
+ public <Y extends Comparable<? super Y>> Predicate between(
Expression<? extends Y> expression,
Y lowerBound,
Y upperBound) {
@@ -524,7 +524,7 @@
/**
* {@inheritDoc}
*/
- public <Y extends Comparable<Y>> Predicate between(
+ public <Y extends Comparable<? super Y>> Predicate between(
Expression<? extends Y> expression,
Expression<? extends Y> lowerBound,
Expression<? extends Y> upperBound) {
@@ -575,27 +575,27 @@
}
public Predicate notLike(Expression<String> matchExpression, Expression<String> pattern) {
- return like( matchExpression, pattern ).negate();
+ return like( matchExpression, pattern ).not();
}
public Predicate notLike(Expression<String> matchExpression, Expression<String> pattern, Expression<Character> escapeCharacter) {
- return like( matchExpression, pattern, escapeCharacter ).negate();
+ return like( matchExpression, pattern, escapeCharacter ).not();
}
public Predicate notLike(Expression<String> matchExpression, Expression<String> pattern, char escapeCharacter) {
- return like( matchExpression, pattern, escapeCharacter ).negate();
+ return like( matchExpression, pattern, escapeCharacter ).not();
}
public Predicate notLike(Expression<String> matchExpression, String pattern) {
- return like( matchExpression, pattern ).negate();
+ return like( matchExpression, pattern ).not();
}
public Predicate notLike(Expression<String> matchExpression, String pattern, Expression<Character> escapeCharacter) {
- return like( matchExpression, pattern, escapeCharacter ).negate();
+ return like( matchExpression, pattern, escapeCharacter ).not();
}
public Predicate notLike(Expression<String> matchExpression, String pattern, char escapeCharacter) {
- return like( matchExpression, pattern, escapeCharacter ).negate();
+ return like( matchExpression, pattern, escapeCharacter ).not();
}
@@ -622,7 +622,14 @@
return new LiteralExpression<T>( this, value );
}
+ /**
+ * {@inheritDoc}
+ */
+ public <T> Expression<T> nullLiteral(Class<T> resultClass) {
+ return new LiteralExpression<T>( this, resultClass, null );
+ }
+
// aggregate functions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/**
@@ -642,6 +649,20 @@
/**
* {@inheritDoc}
*/
+ public Expression<Long> sumAsLong(Expression<Integer> x) {
+ return new AggregationFunction.SUM<Long>( this, x, Long.class );
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Expression<Double> sumAsDouble(Expression<Float> x) {
+ return new AggregationFunction.SUM<Double>( this, x, Double.class );
+ }
+
+ /**
+ * {@inheritDoc}
+ */
public <N extends Number> Expression<N> max(Expression<N> x) {
return new AggregationFunction.MAX<N>( this, x );
}
@@ -656,15 +677,17 @@
/**
* {@inheritDoc}
*/
- public <X extends Comparable<X>> Expression<X> greatest(Expression<X> x) {
- return new AggregationFunction.GREATEST<X>( this, x );
+ @SuppressWarnings({ "unchecked" })
+ public <X extends Comparable<? super X>> Expression<X> greatest(Expression<X> x) {
+ return new AggregationFunction.GREATEST( this, x );
}
/**
* {@inheritDoc}
*/
- public <X extends Comparable<X>> Expression<X> least(Expression<X> x) {
- return new AggregationFunction.LEAST<X>( this, x );
+ @SuppressWarnings({ "unchecked" })
+ public <X extends Comparable<? super X>> Expression<X> least(Expression<X> x) {
+ return new AggregationFunction.LEAST( this, x );
}
/**
@@ -697,8 +720,6 @@
* @param name The function name.
* @param returnType The return type.
*
- * @param <T> The type of the function return.
- *
* @return The function expression
*/
public <T> Expression<T> function(String name, Class<T> returnType) {
@@ -816,6 +837,7 @@
/**
* {@inheritDoc}
*/
+ @SuppressWarnings({ "unchecked" })
public <N extends Number> Expression<N> sum(Expression<? extends N> expression1, Expression<? extends N> expression2) {
Class<N> type = (Class<N>)BinaryArithmeticOperation.determineReturnType( (Class)Number.class, (Expression)expression1 );
type = (Class<N>)BinaryArithmeticOperation.determineReturnType( type, (Expression)expression2 );
@@ -831,6 +853,7 @@
/**
* {@inheritDoc}
*/
+ @SuppressWarnings({ "unchecked" })
public <N extends Number> Expression<N> prod(Expression<? extends N> expression1, Expression<? extends N> expression2) {
Class<N> type = (Class<N>)BinaryArithmeticOperation.determineReturnType( (Class)Number.class, (Expression)expression1 );
type = (Class<N>)BinaryArithmeticOperation.determineReturnType( type, (Expression)expression2 );
@@ -846,12 +869,13 @@
/**
* {@inheritDoc}
*/
+ @SuppressWarnings({ "unchecked" })
public <N extends Number> Expression<N> diff(Expression<? extends N> expression1, Expression<? extends N> expression2) {
Class<N> type = (Class<N>)BinaryArithmeticOperation.determineReturnType( (Class)Number.class, (Expression)expression1 );
type = (Class<N>)BinaryArithmeticOperation.determineReturnType( type, (Expression)expression2 );
return new BinaryArithmeticOperation<N>(
this,
- (Class<N>) expression1.getJavaType(),
+ type,
BinaryArithmeticOperation.Operation.SUBTRACT,
expression1,
expression2
@@ -861,6 +885,7 @@
/**
* {@inheritDoc}
*/
+ @SuppressWarnings({ "unchecked" })
public <N extends Number> Expression<N> sum(Expression<? extends N> expression, N n) {
Class<N> type = (Class<N>)BinaryArithmeticOperation.determineReturnType( (Class)Number.class, (Expression)expression );
type = (Class<N>)BinaryArithmeticOperation.determineReturnType( type, n );
@@ -876,6 +901,7 @@
/**
* {@inheritDoc}
*/
+ @SuppressWarnings({ "unchecked" })
public <N extends Number> Expression<N> prod(Expression<? extends N> expression, N n) {
Class<N> type = (Class<N>)BinaryArithmeticOperation.determineReturnType( (Class)Number.class, (Expression)expression );
type = (Class<N>)BinaryArithmeticOperation.determineReturnType( type, n );
@@ -891,6 +917,7 @@
/**
* {@inheritDoc}
*/
+ @SuppressWarnings({ "unchecked" })
public <N extends Number> Expression<N> diff(Expression<? extends N> expression, N n) {
Class<N> type = (Class<N>)BinaryArithmeticOperation.determineReturnType( (Class)Number.class, (Expression)expression );
type = (Class<N>)BinaryArithmeticOperation.determineReturnType( type, n );
@@ -906,6 +933,7 @@
/**
* {@inheritDoc}
*/
+ @SuppressWarnings({ "unchecked" })
public <N extends Number> Expression<N> sum(N n, Expression<? extends N> expression) {
Class<N> type = (Class<N>)BinaryArithmeticOperation.determineReturnType( (Class)Number.class, (Expression)expression );
type = (Class<N>)BinaryArithmeticOperation.determineReturnType( type, n );
@@ -921,6 +949,7 @@
/**
* {@inheritDoc}
*/
+ @SuppressWarnings({ "unchecked" })
public <N extends Number> Expression<N> prod(N n, Expression<? extends N> expression) {
Class<N> type = (Class<N>)BinaryArithmeticOperation.determineReturnType( (Class)Number.class, (Expression)expression );
type = (Class<N>)BinaryArithmeticOperation.determineReturnType( type, n );
@@ -936,6 +965,7 @@
/**
* {@inheritDoc}
*/
+ @SuppressWarnings({ "unchecked" })
public <N extends Number> Expression<N> diff(N n, Expression<? extends N> expression) {
Class<N> type = (Class<N>)BinaryArithmeticOperation.determineReturnType( (Class)Number.class, (Expression)expression );
type = (Class<N>)BinaryArithmeticOperation.determineReturnType( type, n );
@@ -1094,7 +1124,7 @@
public <Y> Expression<Y> all(Subquery<Y> subquery) {
return new SubqueryComparisonModifierExpression<Y>(
this,
- subquery.getJavaType(),
+ (Class)subquery.getJavaType(),
subquery,
SubqueryComparisonModifierExpression.Modifier.ALL
);
@@ -1106,7 +1136,7 @@
public <Y> Expression<Y> some(Subquery<Y> subquery) {
return new SubqueryComparisonModifierExpression<Y>(
this,
- subquery.getJavaType(),
+ (Class)subquery.getJavaType(),
subquery,
SubqueryComparisonModifierExpression.Modifier.SOME
);
@@ -1118,7 +1148,7 @@
public <Y> Expression<Y> any(Subquery<Y> subquery) {
return new SubqueryComparisonModifierExpression<Y>(
this,
- subquery.getJavaType(),
+ (Class)subquery.getJavaType(),
subquery,
SubqueryComparisonModifierExpression.Modifier.ANY
);
@@ -1185,7 +1215,7 @@
* {@inheritDoc}
*/
public <Y> Expression<Y> nullif(Expression<Y> exp1, Expression<?> exp2) {
- return nullif( (Class<Y>)null, exp1, exp2 );
+ return nullif( null, exp1, exp2 );
}
public <Y> Expression<Y> nullif(Class<Y> type, Expression<Y> exp1, Expression<?> exp2) {
@@ -1196,7 +1226,7 @@
* {@inheritDoc}
*/
public <Y> Expression<Y> nullif(Expression<Y> exp1, Y exp2) {
- return nullif( (Class<Y>)null, exp1, exp2 );
+ return nullif( null, exp1, exp2 );
}
public <Y> Expression<Y> nullif(Class<Y> type, Expression<Y> exp1, Y exp2) {
@@ -1241,7 +1271,7 @@
return size( ( (LiteralExpression<C>) exp ).getLiteral() );
}
else if ( CollectionExpression.class.isInstance(exp) ) {
- return new SizeOfCollectionExpression<C>(this, (CollectionExpression<C>)null);
+ return new SizeOfCollectionExpression<C>(this, null);
}
// TODO : what other specific types? any?
throw new IllegalArgumentException("unknown collection expression type [" + exp.getClass().getName() + "]" );
@@ -1265,6 +1295,7 @@
/**
* {@inheritDoc}
*/
+ @SuppressWarnings({ "unchecked" })
public <C extends Collection<?>> Predicate isEmpty(Expression<C> collectionExpression) {
if ( CollectionExpression.class.isInstance(collectionExpression) ) {
return new IsEmptyPredicate(
@@ -1282,7 +1313,7 @@
* {@inheritDoc}
*/
public <C extends Collection<?>> Predicate isNotEmpty(Expression<C> collectionExpression) {
- return isEmpty( collectionExpression ).negate();
+ return isEmpty( collectionExpression ).not();
}
/**
@@ -1305,7 +1336,7 @@
* {@inheritDoc}
*/
public <E, C extends Collection<E>> Predicate isNotMember(E e, Expression<C> cExpression) {
- return isMember(e, cExpression).negate();
+ return isMember(e, cExpression).not();
}
/**
@@ -1328,6 +1359,6 @@
* {@inheritDoc}
*/
public <E, C extends Collection<E>> Predicate isNotMember(Expression<E> eExpression, Expression<C> cExpression) {
- return isMember(eExpression, cExpression).negate();
+ return isMember(eExpression, cExpression).not();
}
}
Modified: core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/RootImpl.java
===================================================================
--- core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/RootImpl.java 2009-10-15 16:26:26 UTC (rev 17767)
+++ core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/RootImpl.java 2009-10-15 18:50:41 UTC (rev 17768)
@@ -24,6 +24,7 @@
package org.hibernate.ejb.criteria;
import javax.persistence.criteria.Root;
+import javax.persistence.criteria.From;
import javax.persistence.metamodel.Attribute;
import javax.persistence.metamodel.EntityType;
@@ -33,6 +34,8 @@
* @author Steve Ebersole
*/
public class RootImpl<X> extends FromImpl<X,X> implements Root<X> {
+ private RootImpl<X> correlationParent;
+
public RootImpl(
QueryBuilderImpl queryBuilder,
EntityType<X> model) {
@@ -49,9 +52,18 @@
return (Attribute<X, ?>) getModel().getAttribute( name );
}
+ public boolean isCorrelated() {
+ return getCorrelationParent() != null;
+ }
+
+ public From<X, X> getCorrelationParent() {
+ return correlationParent;
+ }
+
public RootImpl<X> correlateTo(CriteriaSubqueryImpl subquery) {
RootImpl<X> correlation = new RootImpl<X>( queryBuilder(), getModel() );
correlation.defineJoinScope( subquery.getJoinScope() );
+ correlation.correlationParent = this;
return correlation;
}
}
Modified: core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/SetJoinImpl.java
===================================================================
--- core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/SetJoinImpl.java 2009-10-15 16:26:26 UTC (rev 17767)
+++ core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/SetJoinImpl.java 2009-10-15 18:50:41 UTC (rev 17768)
@@ -24,6 +24,7 @@
package org.hibernate.ejb.criteria;
import javax.persistence.criteria.JoinType;
+import javax.persistence.criteria.From;
import javax.persistence.metamodel.SetAttribute;
import org.hibernate.ejb.criteria.JoinImplementors.SetJoinImplementor;
@@ -47,6 +48,16 @@
}
@Override
+ public SetAttribute<? super O, E> getAttribute() {
+ return (SetAttribute<? super O, E>) super.getAttribute();
+ }
+
+ @Override
+ public SetAttribute<? super O, E> getModel() {
+ return getAttribute();
+ }
+
+ @Override
public SetJoinImplementor<O, E> correlateTo(CriteriaSubqueryImpl subquery) {
SetJoinImpl<O,E> correlation = new SetJoinImpl<O,E>(
queryBuilder(),
@@ -56,16 +67,23 @@
getJoinType()
);
correlation.defineJoinScope( subquery.getJoinScope() );
+ correlation.correlationParent = this;
return correlation;
}
- @Override
- public SetAttribute<? super O, E> getAttribute() {
- return (SetAttribute<? super O, E>) super.getAttribute();
+ private From<O, E> correlationParent;
+
+ /**
+ * {@inheritDoc}
+ */
+ public boolean isCorrelated() {
+ return getCorrelationParent() != null;
}
- @Override
- public SetAttribute<? super O, E> getModel() {
- return getAttribute();
+ /**
+ * {@inheritDoc}
+ */
+ public From<O, E> getCorrelationParent() {
+ return correlationParent;
}
}
Modified: core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/expression/CoalesceExpression.java
===================================================================
--- core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/expression/CoalesceExpression.java 2009-10-15 16:26:26 UTC (rev 17767)
+++ core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/expression/CoalesceExpression.java 2009-10-15 18:50:41 UTC (rev 17768)
@@ -26,8 +26,7 @@
import java.util.ArrayList;
import java.util.List;
import javax.persistence.criteria.Expression;
-import javax.persistence.criteria.QueryBuilder.Coalesce;
-import org.hibernate.ejb.criteria.ParameterContainer;
+import javax.persistence.criteria.CriteriaBuilder.Coalesce;
import org.hibernate.ejb.criteria.ParameterRegistry;
import org.hibernate.ejb.criteria.QueryBuilderImpl;
@@ -61,6 +60,7 @@
return value( new LiteralExpression<T>( queryBuilder(), value ) );
}
+ @SuppressWarnings({ "unchecked" })
public Coalesce<T> value(Expression<? extends T> value) {
expressions.add( value );
if ( javaType == null ) {
Modified: core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/expression/ParameterExpressionImpl.java
===================================================================
--- core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/expression/ParameterExpressionImpl.java 2009-10-15 16:26:26 UTC (rev 17767)
+++ core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/expression/ParameterExpressionImpl.java 2009-10-15 18:50:41 UTC (rev 17768)
@@ -72,6 +72,10 @@
return position;
}
+ public Class<T> getParameterType() {
+ return getJavaType();
+ }
+
public void registerParameters(ParameterRegistry registry) {
registry.registerParameter( this );
}
Modified: core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/expression/SearchedCaseExpression.java
===================================================================
--- core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/expression/SearchedCaseExpression.java 2009-10-15 16:26:26 UTC (rev 17767)
+++ core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/expression/SearchedCaseExpression.java 2009-10-15 18:50:41 UTC (rev 17768)
@@ -26,8 +26,7 @@
import java.util.ArrayList;
import java.util.List;
import javax.persistence.criteria.Expression;
-import javax.persistence.criteria.QueryBuilder.Case;
-import org.hibernate.ejb.criteria.ParameterContainer;
+import javax.persistence.criteria.CriteriaBuilder.Case;
import org.hibernate.ejb.criteria.ParameterRegistry;
import org.hibernate.ejb.criteria.QueryBuilderImpl;
@@ -70,10 +69,11 @@
return when( condition, buildLiteral(result) );
}
+ @SuppressWarnings({ "unchecked" })
private LiteralExpression<R> buildLiteral(R result) {
final Class<R> type = result != null
? (Class<R>) result.getClass()
- : (Class<R>) getJavaType();
+ : getJavaType();
return new LiteralExpression<R>( queryBuilder(), type, result );
}
@@ -84,6 +84,7 @@
return this;
}
+ @SuppressWarnings({ "unchecked" })
private void adjustJavaType(Expression<? extends R> exp) {
if ( javaType == null ) {
javaType = (Class<R>) exp.getJavaType();
Modified: core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/expression/SimpleCaseExpression.java
===================================================================
--- core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/expression/SimpleCaseExpression.java 2009-10-15 16:26:26 UTC (rev 17767)
+++ core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/expression/SimpleCaseExpression.java 2009-10-15 18:50:41 UTC (rev 17768)
@@ -26,8 +26,7 @@
import java.util.ArrayList;
import java.util.List;
import javax.persistence.criteria.Expression;
-import javax.persistence.criteria.QueryBuilder.SimpleCase;
-import org.hibernate.ejb.criteria.ParameterContainer;
+import javax.persistence.criteria.CriteriaBuilder.SimpleCase;
import org.hibernate.ejb.criteria.ParameterRegistry;
import org.hibernate.ejb.criteria.QueryBuilderImpl;
@@ -70,6 +69,7 @@
this.expression = expression;
}
+ @SuppressWarnings({ "unchecked" })
public Expression<C> getExpression() {
return (Expression<C>) expression;
}
@@ -78,10 +78,11 @@
return when( condition, buildLiteral(result) );
}
+ @SuppressWarnings({ "unchecked" })
private LiteralExpression<R> buildLiteral(R result) {
final Class<R> type = result != null
? (Class<R>) result.getClass()
- : (Class<R>) getJavaType();
+ : getJavaType();
return new LiteralExpression<R>( queryBuilder(), type, result );
}
@@ -92,6 +93,7 @@
return this;
}
+ @SuppressWarnings({ "unchecked" })
private void adjustJavaType(Expression<? extends R> exp) {
if ( javaType == null ) {
javaType = (Class<R>) exp.getJavaType();
Modified: core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/expression/SubqueryComparisonModifierExpression.java
===================================================================
--- core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/expression/SubqueryComparisonModifierExpression.java 2009-10-15 16:26:26 UTC (rev 17767)
+++ core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/expression/SubqueryComparisonModifierExpression.java 2009-10-15 18:50:41 UTC (rev 17768)
@@ -34,7 +34,7 @@
* @author Steve Ebersole
*/
public class SubqueryComparisonModifierExpression<Y> extends ExpressionImpl<Y> {
- public static enum Modifier { ALL, SOME, ANY };
+ public static enum Modifier { ALL, SOME, ANY }
private final Subquery<Y> subquery;
private final Modifier modifier;
Modified: core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/expression/UnaryArithmeticOperation.java
===================================================================
--- core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/expression/UnaryArithmeticOperation.java 2009-10-15 16:26:26 UTC (rev 17767)
+++ core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/expression/UnaryArithmeticOperation.java 2009-10-15 18:50:41 UTC (rev 17768)
@@ -47,7 +47,7 @@
QueryBuilderImpl queryBuilder,
Operation operation,
Expression<T> operand) {
- super( queryBuilder, operand.getJavaType() );
+ super( queryBuilder, (Class)operand.getJavaType() );
this.operation = operation;
this.operand = operand;
}
Modified: core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/expression/function/AbsFunction.java
===================================================================
--- core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/expression/function/AbsFunction.java 2009-10-15 16:26:26 UTC (rev 17767)
+++ core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/expression/function/AbsFunction.java 2009-10-15 18:50:41 UTC (rev 17768)
@@ -36,7 +36,7 @@
public static final String NAME = "abs";
- public AbsFunction(QueryBuilderImpl queryBuilder, Expression<N> expression) {
+ public AbsFunction(QueryBuilderImpl queryBuilder, Expression expression) {
super( queryBuilder, expression.getJavaType(), NAME, expression );
}
}
Modified: core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/expression/function/AggregationFunction.java
===================================================================
--- core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/expression/function/AggregationFunction.java 2009-10-15 16:26:26 UTC (rev 17767)
+++ core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/expression/function/AggregationFunction.java 2009-10-15 18:50:41 UTC (rev 17768)
@@ -41,6 +41,7 @@
* @param functionName The name of the function.
* @param argument The literal argument
*/
+ @SuppressWarnings({ "unchecked" })
public AggregationFunction(
QueryBuilderImpl queryBuilder,
Class<T> returnType,
@@ -114,9 +115,14 @@
public static class SUM<N extends Number> extends AggregationFunction<N> {
public static final String NAME = "sum";
+ @SuppressWarnings({ "unchecked" })
public SUM(QueryBuilderImpl queryBuilder, Expression<N> expression) {
- super( queryBuilder, expression.getJavaType(), NAME , expression);
+ super( queryBuilder, (Class<N>)expression.getJavaType(), NAME , expression);
}
+
+ public SUM(QueryBuilderImpl queryBuilder, Expression<? extends Number> expression, Class<N> returnType) {
+ super( queryBuilder, returnType, NAME , expression);
+ }
}
/**
@@ -128,8 +134,9 @@
public static class MIN<N extends Number> extends AggregationFunction<N> {
public static final String NAME = "min";
+ @SuppressWarnings({ "unchecked" })
public MIN(QueryBuilderImpl queryBuilder, Expression<N> expression) {
- super( queryBuilder, expression.getJavaType(), NAME , expression);
+ super( queryBuilder, ( Class<N> ) expression.getJavaType(), NAME , expression);
}
}
@@ -142,8 +149,9 @@
public static class MAX<N extends Number> extends AggregationFunction<N> {
public static final String NAME = "max";
+ @SuppressWarnings({ "unchecked" })
public MAX(QueryBuilderImpl queryBuilder, Expression<N> expression) {
- super( queryBuilder, expression.getJavaType(), NAME , expression);
+ super( queryBuilder, ( Class<N> ) expression.getJavaType(), NAME , expression);
}
}
@@ -155,8 +163,9 @@
public static class LEAST<X extends Comparable<X>> extends AggregationFunction<X> {
public static final String NAME = "min";
+ @SuppressWarnings({ "unchecked" })
public LEAST(QueryBuilderImpl queryBuilder, Expression<X> expression) {
- super( queryBuilder, expression.getJavaType(), NAME , expression);
+ super( queryBuilder, ( Class<X> ) expression.getJavaType(), NAME , expression);
}
}
@@ -168,8 +177,9 @@
public static class GREATEST<X extends Comparable<X>> extends AggregationFunction<X> {
public static final String NAME = "max";
+ @SuppressWarnings({ "unchecked" })
public GREATEST(QueryBuilderImpl queryBuilder, Expression<X> expression) {
- super( queryBuilder, expression.getJavaType(), NAME , expression);
+ super( queryBuilder, ( Class<X> ) expression.getJavaType(), NAME , expression);
}
}
}
Modified: core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/expression/function/TrimFunction.java
===================================================================
--- core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/expression/function/TrimFunction.java 2009-10-15 16:26:26 UTC (rev 17767)
+++ core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/expression/function/TrimFunction.java 2009-10-15 18:50:41 UTC (rev 17768)
@@ -24,8 +24,7 @@
package org.hibernate.ejb.criteria.expression.function;
import javax.persistence.criteria.Expression;
-import javax.persistence.criteria.QueryBuilder.Trimspec;
-import org.hibernate.ejb.criteria.ParameterContainer;
+import javax.persistence.criteria.CriteriaBuilder.Trimspec;
import org.hibernate.ejb.criteria.ParameterRegistry;
import org.hibernate.ejb.criteria.QueryBuilderImpl;
import org.hibernate.ejb.criteria.expression.LiteralExpression;
Modified: core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/predicate/AbstractPredicateImpl.java
===================================================================
--- core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/predicate/AbstractPredicateImpl.java 2009-10-15 16:26:26 UTC (rev 17767)
+++ core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/predicate/AbstractPredicateImpl.java 2009-10-15 18:50:41 UTC (rev 17768)
@@ -47,7 +47,7 @@
return negated;
}
- public Predicate negate() {
+ public Predicate not() {
negated = !negated;
return this;
}
Modified: core/trunk/entitymanager/src/main/java/org/hibernate/ejb/metamodel/EntityTypeDelegator.java
===================================================================
--- core/trunk/entitymanager/src/main/java/org/hibernate/ejb/metamodel/EntityTypeDelegator.java 2009-10-15 16:26:26 UTC (rev 17767)
+++ core/trunk/entitymanager/src/main/java/org/hibernate/ejb/metamodel/EntityTypeDelegator.java 2009-10-15 18:50:41 UTC (rev 17768)
@@ -143,12 +143,12 @@
return delegate.getDeclaredMap( name, keyType, valueType );
}
- public Set<PluralAttribute<? super X, ?, ?>> getCollections() {
- return delegate.getCollections();
+ public Set<PluralAttribute<? super X, ?, ?>> getPluralAttributes() {
+ return delegate.getPluralAttributes();
}
- public Set<PluralAttribute<X, ?, ?>> getDeclaredCollections() {
- return delegate.getDeclaredCollections();
+ public Set<PluralAttribute<X, ?, ?>> getDeclaredPluralAttributes() {
+ return delegate.getDeclaredPluralAttributes();
}
public Attribute<? super X, ?> getAttribute(String name) {
Modified: core/trunk/entitymanager/src/main/java/org/hibernate/ejb/metamodel/ManagedTypeImpl.java
===================================================================
--- core/trunk/entitymanager/src/main/java/org/hibernate/ejb/metamodel/ManagedTypeImpl.java 2009-10-15 16:26:26 UTC (rev 17767)
+++ core/trunk/entitymanager/src/main/java/org/hibernate/ejb/metamodel/ManagedTypeImpl.java 2009-10-15 18:50:41 UTC (rev 17768)
@@ -1,9 +1,11 @@
/*
- * Copyright (c) 2009, Red Hat Middleware LLC 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 Middleware LLC.
+ * Hibernate, Relational Persistence for Idiomatic Java
*
+ * Copyright (c) 2009 by Red Hat Inc and/or its affiliates or by
+ * third-party contributors as indicated by either @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.
@@ -203,11 +205,11 @@
return result;
}
- public Set<PluralAttribute<? super X, ?, ?>> getCollections() {
+ public Set<PluralAttribute<? super X, ?, ?>> getPluralAttributes() {
return null; //To change body of implemented methods use File | Settings | File Templates.
}
- public Set<PluralAttribute<X, ?, ?>> getDeclaredCollections() {
+ public Set<PluralAttribute<X, ?, ?>> getDeclaredPluralAttributes() {
return new HashSet<PluralAttribute<X,?,?>>(declaredCollections.values());
}
Modified: core/trunk/entitymanager/src/main/java/org/hibernate/ejb/metamodel/MetamodelImpl.java
===================================================================
--- core/trunk/entitymanager/src/main/java/org/hibernate/ejb/metamodel/MetamodelImpl.java 2009-10-15 16:26:26 UTC (rev 17767)
+++ core/trunk/entitymanager/src/main/java/org/hibernate/ejb/metamodel/MetamodelImpl.java 2009-10-15 18:50:41 UTC (rev 17768)
@@ -63,6 +63,10 @@
}
}
+ /**
+ * {@inheritDoc}
+ */
+ @SuppressWarnings({ "unchecked" })
public <X> EntityType<X> entity(Class<X> cls) {
final EntityType<?> entityType = entities.get( cls );
if ( entityType == null ) throw new IllegalArgumentException( "Not an entity: " + cls );
@@ -70,14 +74,21 @@
return (EntityType<X>) entityType;
}
- public <X> ManagedType<X> type(Class<X> cls) {
- ManagedType<?> type = null;
- type = entities.get( cls );
+ /**
+ * {@inheritDoc}
+ */
+ @SuppressWarnings({ "unchecked" })
+ public <X> ManagedType<X> managedType(Class<X> cls) {
+ ManagedType<?> type = entities.get( cls );
if ( type == null ) throw new IllegalArgumentException( "Not an managed type: " + cls );
//unsafe casting is our map inserts guarantee them
return (ManagedType<X>) type;
}
+ /**
+ * {@inheritDoc}
+ */
+ @SuppressWarnings({ "unchecked" })
public <X> EmbeddableType<X> embeddable(Class<X> cls) {
final EmbeddableType<?> embeddableType = embeddables.get( cls );
if ( embeddableType == null ) throw new IllegalArgumentException( "Not an entity: " + cls );
@@ -85,6 +96,9 @@
return (EmbeddableType<X>) embeddableType;
}
+ /**
+ * {@inheritDoc}
+ */
public Set<ManagedType<?>> getManagedTypes() {
final Set<ManagedType<?>> managedTypes = new HashSet<ManagedType<?>>( entities.size() + embeddables.size() );
managedTypes.addAll( entities.values() );
@@ -92,10 +106,16 @@
return managedTypes;
}
+ /**
+ * {@inheritDoc}
+ */
public Set<EntityType<?>> getEntities() {
return new HashSet<EntityType<?>>(entities.values());
}
+ /**
+ * {@inheritDoc}
+ */
public Set<EmbeddableType<?>> getEmbeddables() {
return new HashSet<EmbeddableType<?>>(embeddables.values());
}
Modified: core/trunk/parent/pom.xml
===================================================================
--- core/trunk/parent/pom.xml 2009-10-15 16:26:26 UTC (rev 17767)
+++ core/trunk/parent/pom.xml 2009-10-15 18:50:41 UTC (rev 17768)
@@ -427,7 +427,7 @@
<dependency>
<groupId>org.hibernate.java-persistence</groupId>
<artifactId>jpa-api</artifactId>
- <version>2.0.Beta-SNAPSHOT</version>
+ <version>2.0-cr-1</version>
</dependency>
<!-- Set the version of the hibernate-commons-annotations to be used throughout the the project -->
<dependency>
More information about the hibernate-commits
mailing list