diff --git a/core/api/src/main/java/com/blazebit/persistence/spi/JpaProvider.java b/core/api/src/main/java/com/blazebit/persistence/spi/JpaProvider.java index 0e3ddb0c86..0545ecb1e2 100644 --- a/core/api/src/main/java/com/blazebit/persistence/spi/JpaProvider.java +++ b/core/api/src/main/java/com/blazebit/persistence/spi/JpaProvider.java @@ -301,6 +301,14 @@ public interface JpaProvider { */ public boolean supportsForeignAssociationInOnClause(); + /** + * Indicates whether an embeddable can be set via an update queries SET clause. + * Although the JPA spec mandates this, it doesn't seem to be asserted so some providers don't support it. + * + * @return true if supported, else false + */ + public boolean supportsUpdateSetEmbeddable(); + /** * Indicates if the provider supports the use of transient entity objects as parameters. @@ -340,7 +348,6 @@ public interface JpaProvider { * The possible locations of a constraint. * * @author Christian Beikov - * @since 1.2.0 */ public static enum ConstraintType { /** diff --git a/documentation/src/main/asciidoc/entity-view/manual/en_US/11_configuration.adoc b/documentation/src/main/asciidoc/entity-view/manual/en_US/11_configuration.adoc index 9ca4b5b516..f4feb97bec 100644 --- a/documentation/src/main/asciidoc/entity-view/manual/en_US/11_configuration.adoc +++ b/documentation/src/main/asciidoc/entity-view/manual/en_US/11_configuration.adoc @@ -83,4 +83,16 @@ e.g. `com.blazebit.persistence.view.batch_correlation_values.subProperty` | Type | boolean | Default | true | Applicable | Always -|==================== \ No newline at end of file +|==================== + +==== UPDATER_EAGER_LOADING + +// TODO: document + +==== UPDATER_FLUSH_MODE + +// TODO: document + +==== UPDATER_FLUSH_STRATEGY + +// TODO: document \ No newline at end of file diff --git a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/ConfigurationProperties.java b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/ConfigurationProperties.java index 1a88e78b10..1a582e80ca 100644 --- a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/ConfigurationProperties.java +++ b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/ConfigurationProperties.java @@ -24,7 +24,7 @@ public final class ConfigurationProperties { /** - * We added a flag to make it possible to use the generated proxies with serialization. + * A boolean flag to make it possible to use the generated proxies with serialization. * When deserializing an instance the class might not have been loaded yet, so we can force loading * proxy classes on startup to avoid this problem. * By default the eager loading of proxies is disabled to have a better startup performance. @@ -34,7 +34,7 @@ public final class ConfigurationProperties { */ public static final String PROXY_EAGER_LOADING = "com.blazebit.persistence.view.proxy.eager_loading"; /** - * We added a flag to make it possible to prepare all view template caches on startup. + * A boolean flag to make it possible to prepare all view template caches on startup. * By default the eager loading of the view templates is disabled to have a better startup performance. * Valid values for this property are true or false. * @@ -42,7 +42,7 @@ public final class ConfigurationProperties { */ public static final String TEMPLATE_EAGER_LOADING = "com.blazebit.persistence.view.eager_loading"; /** - * We added a flag to make it possible to disable unsafe proxy generation. + * A boolean flag to make it possible to disable unsafe proxy generation. * By default the unsafe proxies are allowed to be able to make use of the features. * Valid values for this property are true or false. * @@ -50,7 +50,7 @@ public final class ConfigurationProperties { */ public static final String PROXY_UNSAFE_ALLOWED = "com.blazebit.persistence.view.proxy.unsafe_allowed"; /** - * We added a flag to make it possible to disable the expression validation. + * A boolean flag to make it possible to disable the expression validation. * By default the expression validation is enabled, but since the validation is not bullet proof, it can be disabled. * Valid values for this property are true or false. * @@ -79,13 +79,37 @@ public final class ConfigurationProperties { */ public static final String EXPECT_BATCH_CORRELATION_VALUES = "com.blazebit.persistence.view.batch_correlation_values"; /** - * We added a flag to make it possible to prepare the entity view updater cache on startup. + * A boolean flag to make it possible to prepare the entity view updater cache on startup. * By default the eager loading of entity view updates is disabled to have a better startup performance. * Valid values for this property are true or false. * * @since 1.2.0 */ public static final String UPDATER_EAGER_LOADING = "com.blazebit.persistence.view.updater.eager_loading"; + /** + * An override for the flush mode of updatable entity views. + * By default, the property is not set. This has the effect, that the flush modes configured for the respective updatable entity views are used. + * Valid values for this property are partial, lazy or full. + * + * To specify an override for a specific entity view, append the fully qualified entity view class name after the "flush_mode" like + * e.g. com.blazebit.persistence.view.updater.flush_mode.com.mypackage.views.MyView + * + * @since 1.2.0 + * @see com.blazebit.persistence.view.FlushMode + */ + public static final String UPDATER_FLUSH_MODE = "com.blazebit.persistence.view.updater.flush_mode"; + /** + * An override for the flush strategy of updatable entity views. + * By default, the property is not set. This has the effect, that the flush strategies configured for the respective updatable entity views are used. + * Valid values for this property are auto, entity or query. + * + * To specify an override for a specific entity view, append the fully qualified entity view class name after the "flush_strategy" like + * e.g. com.blazebit.persistence.view.updater.flush_strategy.com.mypackage.views.MyView + * + * @since 1.2.0 + * @see com.blazebit.persistence.view.FlushStrategy + */ + public static final String UPDATER_FLUSH_STRATEGY = "com.blazebit.persistence.view.updater.flush_strategy"; private ConfigurationProperties() { } diff --git a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/EntityViewManagerImpl.java b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/EntityViewManagerImpl.java index cabd6c6ce6..151229b881 100644 --- a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/EntityViewManagerImpl.java +++ b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/EntityViewManagerImpl.java @@ -116,6 +116,7 @@ public EntityViewManagerImpl(EntityViewConfigurationImpl config, CriteriaBuilder ExpressionFactory expressionFactory = cbf.getService(ExpressionFactory.class); MetamodelBuildingContext context = new MetamodelBuildingContextImpl( + config.getProperties(), new DefaultBasicUserTypeRegistry(config.getUserTypeRegistry(), cbf), cbf.getService(EntityMetamodel.class), jpaProvider, diff --git a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/entity/AbstractViewToEntityMapper.java b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/entity/AbstractViewToEntityMapper.java index 8b7e944fc9..1cdcfd488b 100644 --- a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/entity/AbstractViewToEntityMapper.java +++ b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/entity/AbstractViewToEntityMapper.java @@ -26,6 +26,7 @@ import com.blazebit.persistence.view.metamodel.FlatViewType; import com.blazebit.persistence.view.metamodel.Type; +import javax.persistence.Query; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -127,6 +128,11 @@ public , E, V> DirtyAttributeFlusher nestedGraphNode) { + return null; + } + protected Object persist(UpdateContext context, Object entity, Object view) { if (persistAllowed) { Class viewTypeClass = getViewTypeClass(view); diff --git a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/entity/UpdaterBasedViewToEntityMapper.java b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/entity/UpdaterBasedViewToEntityMapper.java index 09ef3393e4..f7ac9cc42d 100644 --- a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/entity/UpdaterBasedViewToEntityMapper.java +++ b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/entity/UpdaterBasedViewToEntityMapper.java @@ -23,6 +23,7 @@ import com.blazebit.persistence.view.impl.update.flush.DirtyAttributeFlusher; import com.blazebit.persistence.view.metamodel.Type; +import javax.persistence.Query; import java.util.Set; /** @@ -107,4 +108,15 @@ public ViewAttributeAccessor getViewIdAccessor() { public EntityAttributeAccessor getEntityIdAccessor() { return idAccessor == null ? null : ReadOnlyEntityIdAccessor.INSTANCE; } + + @Override + public Query createUpdateQuery(UpdateContext context, Object view, DirtyAttributeFlusher nestedGraphNode) { + Class viewTypeClass = getViewTypeClass(view); + EntityViewUpdater updater = updateUpdater.get(viewTypeClass); + if (updater == null) { + return null; + } + + return updater.createUpdateQuery(context, (MutableStateTrackable) view, nestedGraphNode); + } } diff --git a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/entity/ViewToEntityMapper.java b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/entity/ViewToEntityMapper.java index af1a137bec..faf643e681 100644 --- a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/entity/ViewToEntityMapper.java +++ b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/entity/ViewToEntityMapper.java @@ -20,6 +20,8 @@ import com.blazebit.persistence.view.impl.update.flush.DirtyAttributeFlusher; import com.blazebit.persistence.view.impl.update.flush.FetchGraphNode; +import javax.persistence.Query; + /** * * @author Christian Beikov @@ -37,4 +39,5 @@ public interface ViewToEntityMapper { public EntityAttributeAccessor getEntityIdAccessor(); + public Query createUpdateQuery(UpdateContext context, Object view, DirtyAttributeFlusher nestedGraphNode); } diff --git a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/metamodel/ManagedViewTypeImpl.java b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/metamodel/ManagedViewTypeImpl.java index 32c04026d8..12fa02317c 100644 --- a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/metamodel/ManagedViewTypeImpl.java +++ b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/metamodel/ManagedViewTypeImpl.java @@ -79,8 +79,8 @@ public ManagedViewTypeImpl(ViewMapping viewMapping, MetamodelBuildingContext con CreatableEntityView creatableEntityView = AnnotationUtils.findAnnotation(getJavaType(), CreatableEntityView.class); if (updatableEntityView != null) { this.updatable = true; - this.flushMode = updatableEntityView.mode(); - this.flushStrategy = updatableEntityView.strategy(); + this.flushMode = context.getFlushMode(javaType, updatableEntityView.mode()); + this.flushStrategy = context.getFlushStrategy(javaType, updatableEntityView.strategy()); } else { this.updatable = false; this.flushMode = null; diff --git a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/metamodel/MetamodelBuildingContext.java b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/metamodel/MetamodelBuildingContext.java index 6ed8592170..c6297e430f 100644 --- a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/metamodel/MetamodelBuildingContext.java +++ b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/metamodel/MetamodelBuildingContext.java @@ -20,6 +20,8 @@ import com.blazebit.persistence.impl.expression.ExpressionFactory; import com.blazebit.persistence.spi.JpaProvider; import com.blazebit.persistence.spi.JpqlFunction; +import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.impl.proxy.ProxyFactory; import com.blazebit.persistence.view.metamodel.Type; @@ -49,6 +51,10 @@ public interface MetamodelBuildingContext { public ProxyFactory getProxyFactory(); + public FlushMode getFlushMode(Class clazz, FlushMode defaultValue); + + public FlushStrategy getFlushStrategy(Class clazz, FlushStrategy defaultValue); + public void addError(String error); public boolean hasErrors(); diff --git a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/metamodel/MetamodelBuildingContextImpl.java b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/metamodel/MetamodelBuildingContextImpl.java index 746630c291..93a2def542 100644 --- a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/metamodel/MetamodelBuildingContextImpl.java +++ b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/metamodel/MetamodelBuildingContextImpl.java @@ -23,6 +23,9 @@ import com.blazebit.persistence.impl.expression.MacroFunction; import com.blazebit.persistence.spi.JpaProvider; import com.blazebit.persistence.spi.JpqlFunction; +import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; +import com.blazebit.persistence.view.impl.ConfigurationProperties; import com.blazebit.persistence.view.impl.JpqlMacroAdapter; import com.blazebit.persistence.view.impl.MacroConfigurationExpressionFactory; import com.blazebit.persistence.view.impl.macro.DefaultViewRootJpqlMacro; @@ -35,6 +38,7 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Map; +import java.util.Properties; import java.util.Set; /** @@ -54,7 +58,12 @@ public class MetamodelBuildingContextImpl implements MetamodelBuildingContext { private final Set> entityViewClasses; private final Set errors; - public MetamodelBuildingContextImpl(BasicUserTypeRegistry basicUserTypeRegistry, EntityMetamodel entityMetamodel, JpaProvider jpaProvider, Map jpqlFunctions, ExpressionFactory expressionFactory, ProxyFactory proxyFactory, Set> entityViewClasses, Set errors) { + private final FlushMode flushModeOverride; + private final Map flushModeOverrides; + private final FlushStrategy flushStrategyOverride; + private final Map flushStrategyOverrides; + + public MetamodelBuildingContextImpl(Properties properties, BasicUserTypeRegistry basicUserTypeRegistry, EntityMetamodel entityMetamodel, JpaProvider jpaProvider, Map jpqlFunctions, ExpressionFactory expressionFactory, ProxyFactory proxyFactory, Set> entityViewClasses, Set errors) { this.basicUserTypeRegistry = basicUserTypeRegistry; this.entityMetamodel = entityMetamodel; this.jpaProvider = jpaProvider; @@ -63,6 +72,80 @@ public MetamodelBuildingContextImpl(BasicUserTypeRegistry basicUserTypeRegistry, this.proxyFactory = proxyFactory; this.entityViewClasses = entityViewClasses; this.errors = errors; + this.flushModeOverride = getFlushMode(properties.getProperty(ConfigurationProperties.UPDATER_FLUSH_MODE), "global property '" + ConfigurationProperties.UPDATER_FLUSH_MODE + "'"); + this.flushModeOverrides = getFlushModeOverrides(properties); + this.flushStrategyOverride = getFlushStrategy(properties.getProperty(ConfigurationProperties.UPDATER_FLUSH_STRATEGY), "global property '" + ConfigurationProperties.UPDATER_FLUSH_STRATEGY + "'"); + this.flushStrategyOverrides = getFlushStrategyOverrides(properties); + } + + private FlushMode getFlushMode(String property, String location) { + if (property == null || property.isEmpty()) { + return null; + } + + if ("partial".equals(property)) { + return FlushMode.PARTIAL; + } else if ("lazy".equals(property)) { + return FlushMode.LAZY; + } else if ("full".equals(property)) { + return FlushMode.FULL; + } + + throw new IllegalArgumentException("Invalid flush mode defined for " + location + ": " + property); + } + + private Map getFlushModeOverrides(Properties properties) { + String prefix = ConfigurationProperties.UPDATER_FLUSH_MODE + "."; + Map flushModes = new HashMap<>(); + for (Map.Entry entry : properties.entrySet()) { + String key = (String) entry.getKey(); + if (key.startsWith(prefix) && entry.getValue() != null) { + Object value = entry.getValue(); + FlushMode mode; + if (value instanceof FlushMode) { + mode = (FlushMode) value; + } else { + mode = getFlushMode(entry.getValue().toString(), "property '" + key + "'"); + } + flushModes.put(key.substring(prefix.length()), mode); + } + } + return flushModes; + } + + private FlushStrategy getFlushStrategy(String property, String location) { + if (property == null || property.isEmpty()) { + return null; + } + + if ("auto".equals(property)) { + return FlushStrategy.AUTO; + } else if ("query".equals(property)) { + return FlushStrategy.QUERY; + } else if ("entity".equals(property)) { + return FlushStrategy.ENTITY; + } + + throw new IllegalArgumentException("Invalid flush strategy defined for " + location + ": " + property); + } + + private Map getFlushStrategyOverrides(Properties properties) { + String prefix = ConfigurationProperties.UPDATER_FLUSH_STRATEGY + "."; + Map flushStrategies = new HashMap<>(); + for (Map.Entry entry : properties.entrySet()) { + String key = (String) entry.getKey(); + if (key.startsWith(prefix) && entry.getValue() != null) { + Object value = entry.getValue(); + FlushStrategy strategy; + if (value instanceof FlushStrategy) { + strategy = (FlushStrategy) value; + } else { + strategy = getFlushStrategy(entry.getValue().toString(), "property '" + key + "'"); + } + flushStrategies.put(key.substring(prefix.length()), strategy); + } + } + return flushStrategies; } @Override @@ -120,6 +203,32 @@ public ProxyFactory getProxyFactory() { return proxyFactory; } + @Override + public FlushMode getFlushMode(Class clazz, FlushMode defaultValue) { + if (flushModeOverride != null) { + return flushModeOverride; + } + FlushMode mode = flushModeOverrides.get(clazz.getName()); + if (mode != null) { + return mode; + } else { + return defaultValue; + } + } + + @Override + public FlushStrategy getFlushStrategy(Class clazz, FlushStrategy defaultValue) { + if (flushStrategyOverride != null) { + return flushStrategyOverride; + } + FlushStrategy mode = flushStrategyOverrides.get(clazz.getName()); + if (mode != null) { + return mode; + } else { + return defaultValue; + } + } + @Override public void addError(String error) { errors.add(error); diff --git a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/metamodel/ViewMapping.java b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/metamodel/ViewMapping.java index 099b07d42a..f00bc2c6a4 100644 --- a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/metamodel/ViewMapping.java +++ b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/metamodel/ViewMapping.java @@ -144,6 +144,10 @@ public static ViewMapping initializeViewMappings(Class entityViewRootClass, C } EntityView entityView = AnnotationUtils.findAnnotation(entityViewClass, EntityView.class); + if (entityView == null) { + context.addError("No entity view annotation found on type: " + entityViewClass.getName()); + return null; + } Class entityClass = entityView.value(); ManagedType managedType = context.getEntityMetamodel().managedType(entityClass); diff --git a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/EntityViewUpdater.java b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/EntityViewUpdater.java index 51c73acd6e..2f5c88691c 100644 --- a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/EntityViewUpdater.java +++ b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/EntityViewUpdater.java @@ -21,6 +21,8 @@ import com.blazebit.persistence.view.impl.update.flush.DirtyAttributeFlusher; import com.blazebit.persistence.view.impl.update.flush.FetchGraphNode; +import javax.persistence.Query; + /** * * @author Christian Beikov @@ -37,5 +39,6 @@ public interface EntityViewUpdater { public Object executeUpdate(UpdateContext context, Object entity, MutableStateTrackable updatableProxy); public Object executePersist(UpdateContext context, MutableStateTrackable updatableProxy); - + + public Query createUpdateQuery(UpdateContext context, MutableStateTrackable view, DirtyAttributeFlusher nestedGraphNode); } diff --git a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/EntityViewUpdaterImpl.java b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/EntityViewUpdaterImpl.java index 98a8b11a3b..204963707a 100644 --- a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/EntityViewUpdaterImpl.java +++ b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/EntityViewUpdaterImpl.java @@ -21,6 +21,7 @@ import com.blazebit.persistence.impl.expression.ExpressionFactory; import com.blazebit.persistence.impl.util.JpaMetamodelUtils; import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.impl.EntityViewManagerImpl; import com.blazebit.persistence.view.impl.collection.RecordingCollection; import com.blazebit.persistence.view.impl.collection.RecordingList; @@ -79,6 +80,7 @@ import com.blazebit.persistence.view.metamodel.ViewType; import javax.persistence.EntityManager; +import javax.persistence.Query; import javax.persistence.metamodel.EntityType; import javax.persistence.metamodel.ManagedType; import javax.persistence.metamodel.SingularAttribute; @@ -99,27 +101,35 @@ */ public class EntityViewUpdaterImpl implements EntityViewUpdater { + public static final String ID_PARAM_NAME = "_id"; + private final Class entityClass; private final boolean fullFlush; private final boolean rootUpdateAllowed; private final boolean persistable; + private final FlushStrategy flushStrategy; private final EntityLoader fullEntityLoader; private final ViewAttributeAccessor viewIdAccessor; private final EntityTupleizer tupleizer; private final ObjectBuilder idViewBuilder; private final CompositeAttributeFlusher fullFlusher; + private final String updatePrefixString; + private final String updatePostfixString; + private final String fullUpdateQueryString; @SuppressWarnings({ "unchecked", "rawtypes" }) public EntityViewUpdaterImpl(EntityViewManagerImpl evm, ManagedViewTypeImpl viewType) { this.entityClass = viewType.getEntityClass(); this.fullFlush = viewType.getFlushMode() == FlushMode.FULL; - this.persistable = evm.getMetamodel().getEntityMetamodel().getEntity(entityClass) != null; + this.flushStrategy = viewType.getFlushStrategy(); + EntityType entityType = evm.getMetamodel().getEntityMetamodel().getEntity(entityClass); + this.persistable = entityType != null; if (persistable && viewType instanceof ViewType) { // To be able to invoke EntityViewManager#update on an updatable view of this type, it must have an id i.e. be a ViewType instead of a FlatViewType // Otherwise we can't load the object itself ViewType view = (ViewType) viewType; this.rootUpdateAllowed = true; - this.viewIdAccessor = new ViewIdAccessor(evm, view, false); + this.viewIdAccessor = new ViewIdAccessor(evm, (ViewType) viewType, false); if (view.getIdAttribute().isSubview()) { com.blazebit.persistence.view.metamodel.SingularAttribute viewIdAttribute = (com.blazebit.persistence.view.metamodel.SingularAttribute) view.getIdAttribute(); @@ -152,7 +162,7 @@ public EntityViewUpdaterImpl(EntityViewManagerImpl evm, ManagedViewTypeImpl v if (viewType instanceof ViewType) { idAttribute = ((ViewType) viewType).getIdAttribute(); if (idAttribute.isUpdatable()) { - idFlusher = createAttributeFlusher(evm, viewType, (AbstractMethodAttribute) idAttribute, -1); + idFlusher = createAttributeFlusher(evm, viewType, flushStrategy, (AbstractMethodAttribute) idAttribute, -1); } else { idFlusher = null; } @@ -161,18 +171,61 @@ public EntityViewUpdaterImpl(EntityViewManagerImpl evm, ManagedViewTypeImpl v idFlusher = null; } + javax.persistence.metamodel.SingularAttribute jpaIdAttribute = null; + + if (idAttribute != null) { + jpaIdAttribute = JpaMetamodelUtils.getIdAttribute(evm.getMetamodel().getEntityMetamodel().entity(entityClass)); + String mapping = ((MappingAttribute) idAttribute).getMapping(); + if (!mapping.equals(jpaIdAttribute.getName())) { + throw new IllegalArgumentException("Expected JPA id attribute [" + jpaIdAttribute.getName() + "] to match the entity view id attribute mapping [" + mapping + "] but it didn't!"); + } + } + // Flushers are ordered like the dirty and initial state array and have matching indexes // Since attributes for which pass through flushers are created are not updatable and not mutable, they must come last, as there is no dirty state index for them List> flushers = new ArrayList<>(attributes.size()); List> passThroughFlushers = null; + StringBuilder sb = null; + int clauseEndIndex = -1; + + if (flushStrategy != FlushStrategy.ENTITY) { + this.updatePrefixString = "UPDATE " + entityType.getName() + " e SET "; + this.updatePostfixString = " WHERE e." + jpaIdAttribute.getName() + " = :" + ID_PARAM_NAME; + sb = new StringBuilder(updatePrefixString.length() + updatePostfixString.length() + attributes.size() * 50); + sb.append(updatePrefixString); + clauseEndIndex = sb.length(); + } else { + this.updatePrefixString = null; + this.updatePostfixString = null; + } + + if (idFlusher != null && sb != null) { + idFlusher.appendUpdateQueryFragment(sb); + // If something was appended, we also append a comma + if (sb != null && clauseEndIndex != sb.length()) { + clauseEndIndex = sb.length(); + sb.append(", "); + } + } + for (MethodAttribute attribute : attributes) { if (attribute == idAttribute) { continue; } - DirtyAttributeFlusher flusher = createAttributeFlusher(evm, viewType, (AbstractMethodAttribute) attribute, flushers.size()); + DirtyAttributeFlusher flusher = createAttributeFlusher(evm, viewType, flushStrategy, (AbstractMethodAttribute) attribute, flushers.size()); if (flusher != null) { + if (sb != null) { + int endIndex = sb.length(); + flusher.appendUpdateQueryFragment(sb); + + // If something was appended, we also append a comma + if (endIndex != sb.length()) { + clauseEndIndex = sb.length(); + sb.append(", "); + } + } if (flusher.isPassThrough()) { if (passThroughFlushers == null) { passThroughFlushers = new ArrayList<>(); @@ -188,17 +241,17 @@ public EntityViewUpdaterImpl(EntityViewManagerImpl evm, ManagedViewTypeImpl v flushers.addAll(passThroughFlushers); } - javax.persistence.metamodel.SingularAttribute jpaIdAttribute = null; - - if (idAttribute != null) { - jpaIdAttribute = JpaMetamodelUtils.getIdAttribute(evm.getMetamodel().getEntityMetamodel().entity(entityClass)); - String mapping = ((MappingAttribute) idAttribute).getMapping(); - if (!mapping.equals(jpaIdAttribute.getName())) { - throw new IllegalArgumentException("Expected JPA id attribute [" + jpaIdAttribute.getName() + "] to match the entity view id attribute mapping [" + mapping + "] but it didn't!"); + this.fullFlusher = new CompositeAttributeFlusher(viewType.getJavaType(), entityClass, jpaIdAttribute, idFlusher, flushers.toArray(new DirtyAttributeFlusher[flushers.size()]), viewType.getFlushMode(), flushStrategy); + if (flushStrategy != FlushStrategy.ENTITY) { + if (clauseEndIndex + 2 == sb.length()) { + // Remove the last comma + sb.setLength(clauseEndIndex); } + sb.append(updatePostfixString); + this.fullUpdateQueryString = sb.toString(); + } else { + this.fullUpdateQueryString = null; } - - this.fullFlusher = new CompositeAttributeFlusher(viewType.getJavaType(), entityClass, jpaIdAttribute, idFlusher, flushers.toArray(new DirtyAttributeFlusher[flushers.size()]), viewType.getFlushMode()); } @Override @@ -234,6 +287,33 @@ public Object executeUpdate(UpdateContext context, Object entity, MutableStateTr return entity; } + @Override + public Query createUpdateQuery(UpdateContext context, MutableStateTrackable updatableProxy, DirtyAttributeFlusher flusher) { + String queryString; + if (flusher == fullFlusher) { + queryString = fullUpdateQueryString; + } else { + StringBuilder sb = new StringBuilder(updatePrefixString.length() + updatePostfixString.length() + 250); + sb.append(updatePrefixString); + int initialLength = sb.length(); + flusher.appendUpdateQueryFragment(sb); + if (sb.length() == initialLength) { + queryString = null; + } else { + sb.append(updatePostfixString); + queryString = sb.toString(); + } + } + + Query query = null; + if (queryString != null) { + query = context.getEntityManager().createQuery(queryString); + query.setParameter(ID_PARAM_NAME, updatableProxy.$$_getId()); + } + + return query; + } + private void update(UpdateContext context, Object entity, MutableStateTrackable updatableProxy) { if (!rootUpdateAllowed && entity == null) { throw new IllegalArgumentException("Updating instances of the view type [" + updatableProxy.getClass().getName() + "] is not allowed because no entity id is known!"); @@ -247,7 +327,16 @@ private void update(UpdateContext context, Object entity, MutableStateTrackable return; } - flusher.flushEntity(context, entity, updatableProxy, updatableProxy); + // TODO: Flush strategy AUTO should do flushEntity when entity is known to be fetched already + if (flushStrategy == FlushStrategy.ENTITY || !flusher.supportsQueryFlush()) { + flusher.flushEntity(context, entity, updatableProxy, updatableProxy); + } else { + Query query = createUpdateQuery(context, updatableProxy, flusher); + flusher.flushQuery(context, query, updatableProxy, updatableProxy); + if (query != null) { + query.executeUpdate(); + } + } updatableProxy.$$_setDirty(false); context.getInitialStateResetter().addUpdatedView(updatableProxy); } @@ -277,7 +366,7 @@ public Object executePersist(UpdateContext context, MutableStateTrackable updata } @SuppressWarnings("unchecked") - private static DirtyAttributeFlusher createAttributeFlusher(EntityViewManagerImpl evm, ManagedViewType viewType, AbstractMethodAttribute attribute, int dirtyStateIndex) { + private static DirtyAttributeFlusher createAttributeFlusher(EntityViewManagerImpl evm, ManagedViewType viewType, FlushStrategy flushStrategy, AbstractMethodAttribute attribute, int dirtyStateIndex) { EntityMetamodel entityMetamodel = evm.getMetamodel().getEntityMetamodel(); Class entityClass = viewType.getEntityClass(); String attributeName = attribute.getName(); @@ -303,11 +392,11 @@ private static DirtyAttributeFlusher createAttributeFlusher(EntityViewManagerImp MapViewToEntityMapper mapper = new SimpleMapViewToEntityMapper(keyDescriptor.getViewToEntityMapper(), elementDescriptor.getViewToEntityMapper()); if (mapAttribute.isSorted()) { - return new SortedMapAttributeFlusher, ?, ?>>(attributeName, attributeMapping, attributeAccessor, viewAttributeAccessor, collectionUpdatable, keyDescriptor, elementDescriptor, mapper, mapAttribute.getComparator()); + return new SortedMapAttributeFlusher, ?, ?>>(attributeName, attributeMapping, flushStrategy, attributeAccessor, viewAttributeAccessor, collectionUpdatable, keyDescriptor, elementDescriptor, mapper, mapAttribute.getComparator()); } else if (mapAttribute.isOrdered()) { - return new OrderedMapAttributeFlusher, ?, ?>>(attributeName, attributeMapping, attributeAccessor, viewAttributeAccessor, collectionUpdatable, keyDescriptor, elementDescriptor, mapper); + return new OrderedMapAttributeFlusher, ?, ?>>(attributeName, attributeMapping, flushStrategy, attributeAccessor, viewAttributeAccessor, collectionUpdatable, keyDescriptor, elementDescriptor, mapper); } else { - return new MapAttributeFlusher, ?, ?>>(attributeName, attributeMapping, attributeAccessor, viewAttributeAccessor, collectionUpdatable, keyDescriptor, elementDescriptor, mapper); + return new MapAttributeFlusher, ?, ?>>(attributeName, attributeMapping, flushStrategy, attributeAccessor, viewAttributeAccessor, collectionUpdatable, keyDescriptor, elementDescriptor, mapper); } } else { return null; @@ -347,20 +436,20 @@ private static DirtyAttributeFlusher createAttributeFlusher(EntityViewManagerImp } } if (pluralAttribute.isSorted()) { - return new SortedSetAttributeFlusher, ?>>(attributeName, attributeMapping, attributeAccessor, viewAttributeAccessor, inverseAttributeAccessor, collectionUpdatable, elementDescriptor, inverseViewToEntityMapper, inverseEntityToEntityMapper, pluralAttribute.getComparator()); + return new SortedSetAttributeFlusher, ?>>(attributeName, attributeMapping, flushStrategy, attributeAccessor, viewAttributeAccessor, inverseAttributeAccessor, collectionUpdatable, elementDescriptor, inverseViewToEntityMapper, inverseEntityToEntityMapper, pluralAttribute.getComparator()); } else if (pluralAttribute.isOrdered()) { if (pluralAttribute.getCollectionType() == PluralAttribute.CollectionType.SET) { - return new OrderedSetAttributeFlusher, ?>>(attributeName, attributeMapping, attributeAccessor, viewAttributeAccessor, inverseAttributeAccessor, collectionUpdatable, elementDescriptor, inverseViewToEntityMapper, inverseEntityToEntityMapper); + return new OrderedSetAttributeFlusher, ?>>(attributeName, attributeMapping, flushStrategy, attributeAccessor, viewAttributeAccessor, inverseAttributeAccessor, collectionUpdatable, elementDescriptor, inverseViewToEntityMapper, inverseEntityToEntityMapper); } else { - return new CollectionAttributeFlusher, ?>>(attributeName, attributeMapping, attributeAccessor, viewAttributeAccessor, inverseAttributeAccessor, collectionUpdatable, elementDescriptor, inverseViewToEntityMapper, inverseEntityToEntityMapper); + return new CollectionAttributeFlusher, ?>>(attributeName, attributeMapping, flushStrategy, attributeAccessor, viewAttributeAccessor, inverseAttributeAccessor, collectionUpdatable, elementDescriptor, inverseViewToEntityMapper, inverseEntityToEntityMapper); } } else { if (pluralAttribute.getCollectionType() == PluralAttribute.CollectionType.SET) { - return new SetAttributeFlusher, ?>>(attributeName, attributeMapping, attributeAccessor, viewAttributeAccessor, inverseAttributeAccessor, collectionUpdatable, elementDescriptor, inverseViewToEntityMapper, inverseEntityToEntityMapper); + return new SetAttributeFlusher, ?>>(attributeName, attributeMapping, flushStrategy, attributeAccessor, viewAttributeAccessor, inverseAttributeAccessor, collectionUpdatable, elementDescriptor, inverseViewToEntityMapper, inverseEntityToEntityMapper); } else if (pluralAttribute.isIndexed()) { - return new IndexedListAttributeFlusher>>(attributeName, attributeMapping, attributeAccessor, viewAttributeAccessor, inverseAttributeAccessor, collectionUpdatable, elementDescriptor, inverseViewToEntityMapper, inverseEntityToEntityMapper); + return new IndexedListAttributeFlusher>>(attributeName, attributeMapping, flushStrategy, attributeAccessor, viewAttributeAccessor, inverseAttributeAccessor, collectionUpdatable, elementDescriptor, inverseViewToEntityMapper, inverseEntityToEntityMapper); } else { - return new ListAttributeFlusher(attributeName, attributeMapping, attributeAccessor, viewAttributeAccessor, inverseAttributeAccessor, collectionUpdatable, elementDescriptor, inverseViewToEntityMapper, inverseEntityToEntityMapper); + return new ListAttributeFlusher(attributeName, attributeMapping, flushStrategy, attributeAccessor, viewAttributeAccessor, inverseAttributeAccessor, collectionUpdatable, elementDescriptor, inverseViewToEntityMapper, inverseEntityToEntityMapper); } } } else { @@ -492,7 +581,8 @@ private static DirtyAttributeFlusher createAttributeFlusher(EntityViewManagerImp viewAttributeAccessor = new DefaultViewAttributeAccessor(evm, attribute, true); } - return new BasicAttributeFlusher<>(attributeName, attributeMapping, updatable, elementDescriptor, updateFragment, parameterName, attributeAccessor, viewAttributeAccessor); + boolean supportsQueryFlush = !elementDescriptor.isJpaEmbeddable() || evm.getJpaProvider().supportsUpdateSetEmbeddable(); + return new BasicAttributeFlusher<>(attributeName, attributeMapping, supportsQueryFlush, updatable, elementDescriptor, updateFragment, parameterName, attributeAccessor, viewAttributeAccessor); } else { return null; } diff --git a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/BasicAttributeFlusher.java b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/BasicAttributeFlusher.java index fd07ca5656..96b403f067 100644 --- a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/BasicAttributeFlusher.java +++ b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/BasicAttributeFlusher.java @@ -34,6 +34,7 @@ public class BasicAttributeFlusher implements DirtyAttributeFlusher fetchGraphNode; private final boolean updatable; private final TypeDescriptor elementDescriptor; @@ -42,12 +43,14 @@ public class BasicAttributeFlusher implements DirtyAttributeFlusher original, EntityLoaderFetchGraphNode fetchGraphNode, V value, BasicFlushOperation flushOperation) { + private BasicAttributeFlusher(BasicAttributeFlusher original, EntityLoaderFetchGraphNode fetchGraphNode, V value, boolean update, BasicFlushOperation flushOperation) { this.attributeName = original.attributeName; this.mapping = original.mapping; this.fetch = fetchGraphNode != null; + this.supportsQueryFlush = original.supportsQueryFlush; this.fetchGraphNode = fetchGraphNode; this.updatable = original.updatable; this.elementDescriptor = original.elementDescriptor; @@ -71,6 +76,7 @@ private BasicAttributeFlusher(BasicAttributeFlusher original, EntityLoader this.attributeAccessor = original.attributeAccessor; this.viewAttributeAccessor = original.viewAttributeAccessor; this.value = value; + this.update = update; this.flushOperation = flushOperation; } @@ -95,13 +101,13 @@ public String getAttributeName() { } @Override - public boolean appendUpdateQueryFragment(StringBuilder sb) { - if (updateFragment != null) { - sb.append(updateFragment); - return true; + public void appendUpdateQueryFragment(StringBuilder sb) { + // It must be updatable and the value must have changed + if ((updatable || isPassThrough()) && (flushOperation == null || update)) { + if (updateFragment != null) { + sb.append(updateFragment); + } } - - return false; } @Override @@ -138,14 +144,19 @@ public FetchGraphNode mergeWith(List> fetchGraphN } @Override - public void flushQuery(UpdateContext context, Query query, V value) { - if (parameterName != null) { + public boolean supportsQueryFlush() { + return supportsQueryFlush; + } + + @Override + public void flushQuery(UpdateContext context, Query query, Object view, V value) { + value = persistOrMerge(context, null, view, value); + if (query != null && (updatable || isPassThrough()) && (flushOperation == null || update)) { query.setParameter(parameterName, value); } } - @Override - public void flushEntity(UpdateContext context, E entity, Object view, V value) { + private V persistOrMerge(UpdateContext context, E entity, Object view, V value) { if (flushOperation != null) { V finalValue = this.value; if (flushOperation == BasicFlushOperation.PERSIST) { @@ -160,10 +171,7 @@ public void flushEntity(UpdateContext context, E entity, Object view, V value) { viewAttributeAccessor.setValue(view, finalValue); } } - if (attributeAccessor != null) { - attributeAccessor.setValue(context, entity, value); - } - return; + return finalValue; } if (elementDescriptor.shouldJpaPersistOrMerge()) { boolean shouldJpaPersistOrMerge; @@ -175,7 +183,7 @@ public void flushEntity(UpdateContext context, E entity, Object view, V value) { realValue = (V) viewAttributeAccessor.getValue(view); shouldJpaPersistOrMerge = realValue != null && ( value == realValue || idEqual(value, realValue) - ) && idEqual(attributeAccessor.getValue(context, entity), realValue); + ) && (entity == null || idEqual(attributeAccessor.getValue(context, entity), realValue)); } if (shouldJpaPersistOrMerge) { @@ -184,7 +192,7 @@ public void flushEntity(UpdateContext context, E entity, Object view, V value) { if (elementDescriptor.shouldJpaPersist()) { context.getEntityManager().persist(realValue); } - value = realValue; + return realValue; } else if (elementDescriptor.shouldJpaMerge()) { if (fetchGraphNode != null) { Object id = fetchGraphNode.getEntityId(context, realValue); @@ -194,13 +202,19 @@ public void flushEntity(UpdateContext context, E entity, Object view, V value) { if (updatable && newValue != realValue) { viewAttributeAccessor.setValue(view, newValue); } - value = newValue; + return newValue; } } } else if (elementDescriptor.shouldFlushMutations()) { - value = (V) viewAttributeAccessor.getValue(view); + return (V) viewAttributeAccessor.getValue(view); } + return value; + } + + @Override + public void flushEntity(UpdateContext context, E entity, Object view, V value) { + value = persistOrMerge(context, entity, view, value); if (updatable || isPassThrough()) { attributeAccessor.setValue(context, entity, value); } @@ -229,9 +243,9 @@ public DirtyAttributeFlusher, E, V> getDirtyFlusher( if (updatable) { if (initial != current) { if (initial == null) { - return noFetchFlusher(current, true); + return noFetchFlusher(current, true, true); } else if (current == null) { - return new BasicAttributeFlusher<>(this, null, null, BasicFlushOperation.NONE); + return new BasicAttributeFlusher<>(this, null, null, true, BasicFlushOperation.NONE); } else { if (elementDescriptor.shouldFlushMutations()) { if (elementDescriptor.getBasicUserType().supportsDirtyChecking()) { @@ -242,18 +256,18 @@ public DirtyAttributeFlusher, E, V> getDirtyFlusher( // If current and initial have the same identity and current is not dirty, no need to flush at all return null; } else { - return new BasicAttributeFlusher<>(this, null, (V) current, BasicFlushOperation.NONE); + return new BasicAttributeFlusher<>(this, null, (V) current, true, BasicFlushOperation.NONE); } } else if (dirtyProperties.length == 0) { - return fetchFlusher(fetchGraphNode, current, true); + return fetchFlusher(fetchGraphNode, current, true, true); } else { - return fetchFlusher(elementDescriptor.getEntityToEntityMapper().getFetchGraph(context, dirtyProperties), current, true); + return fetchFlusher(elementDescriptor.getEntityToEntityMapper().getFetchGraph(context, dirtyProperties), current, true, true); } } else { if (elementDescriptor.getBasicUserType().isDeepEqual(initial, current)) { return null; } else { - return noFetchFlusher(current, true); + return noFetchFlusher(current, true, true); } } } else { @@ -272,7 +286,7 @@ public DirtyAttributeFlusher, E, V> getDirtyFlusher( } if (elementDescriptor.shouldFlushMutations()) { - return mutableFlusher(context, current); + return mutableFlusher(context, current, false); } else { // No need to flush anything when having an immutable or non-cascading type return null; @@ -284,7 +298,7 @@ public DirtyAttributeFlusher, E, V> getDirtyFlusher( Object newValue = viewAttributeAccessor.getValue(view); if (current == newValue || elementDescriptor.isIdentifiable() && idEqual(initial, newValue)) { - return mutableFlusher(context, current); + return mutableFlusher(context, current, false); } else { // If the value changed, but the attribute is marked as non-updatable, we are done here return null; @@ -296,57 +310,57 @@ public DirtyAttributeFlusher, E, V> getDirtyFlusher( } } - private DirtyAttributeFlusher, E, V> noFetchFlusher(Object current, boolean flushAttribute) { - return fetchFlusher(null, current, flushAttribute); + private DirtyAttributeFlusher, E, V> noFetchFlusher(Object current, boolean flushAttribute, boolean update) { + return fetchFlusher(null, current, flushAttribute, update); } - private DirtyAttributeFlusher, E, V> fetchFlusher(EntityLoaderFetchGraphNode fetchGraphNode, Object current, boolean flushAttribute) { + private DirtyAttributeFlusher, E, V> fetchFlusher(EntityLoaderFetchGraphNode fetchGraphNode, Object current, boolean flushAttribute, boolean update) { if (elementDescriptor.shouldJpaPersistOrMerge()) { if (elementDescriptor.getBasicUserType().shouldPersist(current)) { if (elementDescriptor.isCascadePersist()) { if (elementDescriptor.shouldJpaPersist()) { - return new BasicAttributeFlusher<>(this, fetchGraphNode, (V) current, BasicFlushOperation.PERSIST); + return new BasicAttributeFlusher<>(this, fetchGraphNode, (V) current, update, BasicFlushOperation.PERSIST); } else { - return new BasicAttributeFlusher<>(this, fetchGraphNode, (V) current, BasicFlushOperation.NONE); + return new BasicAttributeFlusher<>(this, fetchGraphNode, (V) current, update, BasicFlushOperation.NONE); } } else if (flushAttribute) { - return new BasicAttributeFlusher<>(this, fetchGraphNode, (V) current, BasicFlushOperation.NONE); + return new BasicAttributeFlusher<>(this, fetchGraphNode, (V) current, update, BasicFlushOperation.NONE); } else { return null; } } else { if (elementDescriptor.isCascadeUpdate()) { if (elementDescriptor.shouldJpaMerge()) { - return new BasicAttributeFlusher<>(this, fetchGraphNode, (V) current, BasicFlushOperation.MERGE); + return new BasicAttributeFlusher<>(this, fetchGraphNode, (V) current, update, BasicFlushOperation.MERGE); } else { - return new BasicAttributeFlusher<>(this, fetchGraphNode, (V) current, BasicFlushOperation.NONE); + return new BasicAttributeFlusher<>(this, fetchGraphNode, (V) current, update, BasicFlushOperation.NONE); } } else if (flushAttribute) { - return new BasicAttributeFlusher<>(this, fetchGraphNode, (V) current, BasicFlushOperation.NONE); + return new BasicAttributeFlusher<>(this, fetchGraphNode, (V) current, update, BasicFlushOperation.NONE); } else { return null; } } } else if (flushAttribute) { - return new BasicAttributeFlusher<>(this, fetchGraphNode, (V) current, BasicFlushOperation.NONE); + return new BasicAttributeFlusher<>(this, fetchGraphNode, (V) current, update, BasicFlushOperation.NONE); } else { return null; } } - protected DirtyAttributeFlusher, E, V> mutableFlusher(UpdateContext context, Object current) { + protected DirtyAttributeFlusher, E, V> mutableFlusher(UpdateContext context, Object current, boolean update) { if (elementDescriptor.getBasicUserType().supportsDirtyChecking()) { String[] dirtyProperties = elementDescriptor.getBasicUserType().getDirtyProperties(current); if (dirtyProperties == null) { // If nothing is dirty, no need to fetch or update return null; } else if (dirtyProperties.length == 0) { - return fetchFlusher(fetchGraphNode, current, false); + return fetchFlusher(fetchGraphNode, current, false, update); } else { - return fetchFlusher(elementDescriptor.getEntityToEntityMapper().getFetchGraph(context, dirtyProperties), current, false); + return fetchFlusher(elementDescriptor.getEntityToEntityMapper().getFetchGraph(context, dirtyProperties), current, false, update); } } else { - return fetchFlusher(fetchGraphNode, current, !elementDescriptor.isJpaEntity()); + return fetchFlusher(fetchGraphNode, current, !elementDescriptor.isJpaEntity(), update); } } } diff --git a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/CollectionAttributeFlusher.java b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/CollectionAttributeFlusher.java index 124981d79f..ce3f8b6eb1 100644 --- a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/CollectionAttributeFlusher.java +++ b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/CollectionAttributeFlusher.java @@ -16,6 +16,7 @@ package com.blazebit.persistence.view.impl.update.flush; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.impl.collection.CollectionAction; import com.blazebit.persistence.view.impl.collection.CollectionAddAction; import com.blazebit.persistence.view.impl.collection.CollectionRemoveAction; @@ -51,8 +52,8 @@ public class CollectionAttributeFlusher> extends Plur protected final EntityToEntityMapper inverseEntityToEntityMapper; @SuppressWarnings("unchecked") - public CollectionAttributeFlusher(String attributeName, String mapping, EntityAttributeAccessor attributeMapper, ViewAttributeAccessor viewAttributeAccessor, EntityAttributeAccessor inverseRelationAccessor, boolean collectionUpdatable, TypeDescriptor elementDescriptor, ViewToEntityMapper inverseViewToEntityMapper, EntityToEntityMapper inverseEntityToEntityMapper) { - super(attributeName, mapping, collectionUpdatable || elementDescriptor.shouldFlushMutations(), attributeMapper, viewAttributeAccessor, collectionUpdatable, elementDescriptor); + public CollectionAttributeFlusher(String attributeName, String mapping, FlushStrategy flushStrategy, EntityAttributeAccessor attributeMapper, ViewAttributeAccessor viewAttributeAccessor, EntityAttributeAccessor inverseRelationAccessor, boolean collectionUpdatable, TypeDescriptor elementDescriptor, ViewToEntityMapper inverseViewToEntityMapper, EntityToEntityMapper inverseEntityToEntityMapper) { + super(attributeName, mapping, collectionUpdatable || elementDescriptor.shouldFlushMutations(), flushStrategy, attributeMapper, viewAttributeAccessor, collectionUpdatable, elementDescriptor); this.inverseRelationAccessor = inverseRelationAccessor; this.inverseViewToEntityMapper = inverseViewToEntityMapper; this.inverseEntityToEntityMapper = inverseEntityToEntityMapper; @@ -122,7 +123,7 @@ public void flushEntity(UpdateContext context, E entity, Object view, V value) { if (elementDescriptor.isSubview()) { final ViewToEntityMapper mapper = elementDescriptor.getViewToEntityMapper(); - for (MutableStateTrackable element : (Iterable) value) { + for (Object element : value) { Object elementEntity = mapper.applyToEntity(context, null, element); if (added.containsKey(element)) { inverseRelationAccessor.setValue(context, elementEntity, entity); @@ -296,8 +297,14 @@ protected void mergeAndRequeue(UpdateContext context, RecordingCollection record @Override protected void mergeCollectionElements(UpdateContext context, Object view, E entity, V value) { if (elementFlushers != null) { - for (CollectionElementAttributeFlusher elementFlusher : elementFlushers) { - elementFlusher.flushEntity(context, entity, view, value); + if (flushStrategy == FlushStrategy.ENTITY) { + for (CollectionElementAttributeFlusher elementFlusher : elementFlushers) { + elementFlusher.flushEntity(context, entity, view, value); + } + } else { + for (CollectionElementAttributeFlusher elementFlusher : elementFlushers) { + elementFlusher.flushQuery(context, null, view, value); + } } } else { // Invocations of JPA merge can change the identity that leads to requeuing into the collection being required @@ -629,15 +636,18 @@ private List> getElementFlushersForActio List> elementFlushers = new ArrayList<>(); if (elementDescriptor.isSubview()) { final ViewToEntityMapper mapper = elementDescriptor.getViewToEntityMapper(); - for (MutableStateTrackable element : (Iterable) current) { - @SuppressWarnings("unchecked") - DirtyAttributeFlusher flusher = (DirtyAttributeFlusher) mapper.getNestedDirtyFlusher(context, element, null); - if (flusher != null) { - Object addedElement = added.remove(element); - if (addedElement != null) { - elementFlushers.add((CollectionElementAttributeFlusher) (CollectionElementAttributeFlusher) new InverseCollectionElementAttributeFlusher<>(flusher, element, inverseViewToEntityMapper, inverseRelationAccessor, InverseCollectionElementAttributeFlusher.Strategy.SET)); - } else { - elementFlushers.add(new CollectionElementAttributeFlusher<>(flusher, element)); + for (Object o : current) { + if (o instanceof MutableStateTrackable) { + MutableStateTrackable element = (MutableStateTrackable) o; + @SuppressWarnings("unchecked") + DirtyAttributeFlusher flusher = (DirtyAttributeFlusher) mapper.getNestedDirtyFlusher(context, element, null); + if (flusher != null) { + Object addedElement = added.remove(element); + if (addedElement != null) { + elementFlushers.add((CollectionElementAttributeFlusher) (CollectionElementAttributeFlusher) new InverseCollectionElementAttributeFlusher<>(flusher, element, inverseViewToEntityMapper, inverseRelationAccessor, InverseCollectionElementAttributeFlusher.Strategy.SET)); + } else { + elementFlushers.add(new CollectionElementAttributeFlusher<>(flusher, mapper, element)); + } } } } diff --git a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/CollectionElementAttributeFlusher.java b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/CollectionElementAttributeFlusher.java index 9fa8b40916..f66be9389a 100644 --- a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/CollectionElementAttributeFlusher.java +++ b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/CollectionElementAttributeFlusher.java @@ -18,6 +18,7 @@ import com.blazebit.persistence.view.impl.entity.UpdateContext; import com.blazebit.persistence.view.impl.entity.ViewAttributeAccessor; +import com.blazebit.persistence.view.impl.entity.ViewToEntityMapper; import javax.persistence.Query; @@ -28,10 +29,12 @@ */ public class CollectionElementAttributeFlusher extends CollectionElementFetchGraphNode, DirtyAttributeFlusher> implements DirtyAttributeFlusher, E, V> { + protected final ViewToEntityMapper viewToEntityMapper; protected final Object element; - public CollectionElementAttributeFlusher(DirtyAttributeFlusher nestedGraphNode, Object element) { + public CollectionElementAttributeFlusher(DirtyAttributeFlusher nestedGraphNode, ViewToEntityMapper viewToEntityMapper, Object element) { super(nestedGraphNode); + this.viewToEntityMapper = viewToEntityMapper; this.element = element; } @@ -45,13 +48,25 @@ public V cloneDeep(Object view, V oldValue, V newValue) { } @Override - public boolean appendUpdateQueryFragment(StringBuilder sb) { - return nestedGraphNode.appendUpdateQueryFragment(sb); + public void appendUpdateQueryFragment(StringBuilder sb) { + nestedGraphNode.appendUpdateQueryFragment(sb); } @Override - public void flushQuery(UpdateContext context, Query query, V value) { - throw new UnsupportedOperationException(); + public boolean supportsQueryFlush() { + return nestedGraphNode.supportsQueryFlush(); + } + + @Override + public void flushQuery(UpdateContext context, Query query, Object view, V value) { + Query q = null; + if (viewToEntityMapper != null) { + q = viewToEntityMapper.createUpdateQuery(context, element, nestedGraphNode); + } + nestedGraphNode.flushQuery(context, q, null, (V) element); + if (q != null) { + q.executeUpdate(); + } } @Override diff --git a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/CompositeAttributeFlusher.java b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/CompositeAttributeFlusher.java index b150a2435f..847659c84b 100644 --- a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/CompositeAttributeFlusher.java +++ b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/CompositeAttributeFlusher.java @@ -17,6 +17,7 @@ package com.blazebit.persistence.view.impl.update.flush; import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.impl.entity.EntityLoader; import com.blazebit.persistence.view.impl.entity.UpdateContext; import com.blazebit.persistence.view.impl.entity.FlusherBasedEntityLoader; @@ -26,6 +27,7 @@ import com.blazebit.persistence.view.impl.proxy.MutableStateTrackable; import javax.persistence.Query; +import javax.persistence.metamodel.SingularAttribute; /** * @@ -38,20 +40,36 @@ public class CompositeAttributeFlusher extends CompositeAttributeFetchGraphNode< private final javax.persistence.metamodel.SingularAttribute jpaIdAttribute; private final DirtyAttributeFlusher idFlusher; private final FlushMode flushMode; + private final FlushStrategy flushStrategy; private final EntityLoader entityLoader; + private final boolean supportsQueryFlush; private final boolean hasPassThroughFlushers; @SuppressWarnings("unchecked") - public CompositeAttributeFlusher(Class viewType, Class entityClass, javax.persistence.metamodel.SingularAttribute jpaIdAttribute, DirtyAttributeFlusher idFlusher, DirtyAttributeFlusher[] flushers, FlushMode flushMode) { + public CompositeAttributeFlusher(Class viewType, Class entityClass, SingularAttribute jpaIdAttribute, DirtyAttributeFlusher idFlusher, DirtyAttributeFlusher[] flushers, FlushMode flushMode, FlushStrategy flushStrategy) { super(viewType, flushers); this.entityClass = entityClass; this.jpaIdAttribute = jpaIdAttribute; this.idFlusher = idFlusher; this.flushMode = flushMode; + this.flushStrategy = flushStrategy; this.entityLoader = new FlusherBasedEntityLoader(entityClass, jpaIdAttribute, flushers); + this.supportsQueryFlush = flushStrategy != FlushStrategy.ENTITY && supportsQueryFlush(flushers); this.hasPassThroughFlushers = hasPassThroughFlushers(flushers); } + public CompositeAttributeFlusher(CompositeAttributeFlusher original, DirtyAttributeFlusher[] flushers) { + super(original.viewType, original.attributeIndexMapping, flushers); + this.entityClass = original.entityClass; + this.jpaIdAttribute = original.jpaIdAttribute; + this.idFlusher = original.idFlusher; + this.flushMode = original.flushMode; + this.flushStrategy = original.flushStrategy; + this.entityLoader = new FlusherBasedEntityLoader(entityClass, jpaIdAttribute, flushers); + this.supportsQueryFlush = supportsQueryFlush(flushers); + this.hasPassThroughFlushers = original.hasPassThroughFlushers; + } + private boolean hasPassThroughFlushers(DirtyAttributeFlusher[] flushers) { for (int i = 0; i < flushers.length; i++) { if (flushers[i].isPassThrough()) { @@ -62,14 +80,14 @@ private boolean hasPassThroughFlushers(DirtyAttributeFlusher[] flushers) { return false; } - public CompositeAttributeFlusher(CompositeAttributeFlusher original, DirtyAttributeFlusher[] flushers) { - super(original.viewType, original.attributeIndexMapping, flushers); - this.entityClass = original.entityClass; - this.jpaIdAttribute = original.jpaIdAttribute; - this.idFlusher = original.idFlusher; - this.flushMode = original.flushMode; - this.entityLoader = new FlusherBasedEntityLoader(entityClass, jpaIdAttribute, flushers); - this.hasPassThroughFlushers = original.hasPassThroughFlushers; + private boolean supportsQueryFlush(DirtyAttributeFlusher[] flushers) { + for (int i = 0; i < flushers.length; i++) { + if (flushers[i] != null && !flushers[i].supportsQueryFlush()) { + return false; + } + } + + return true; } @Override @@ -78,35 +96,73 @@ public Object cloneDeep(Object view, Object oldValue, Object newValue) { } @Override - public boolean appendUpdateQueryFragment(StringBuilder sb) { + public void appendUpdateQueryFragment(StringBuilder sb) { + int clauseEndIndex = sb.length(); if (idFlusher != null) { - sb.append(", "); - if (!idFlusher.appendUpdateQueryFragment(sb)) { - sb.setLength(sb.length() - 2); + idFlusher.appendUpdateQueryFragment(sb); + // If something was appended, we also append a comma + if (clauseEndIndex != sb.length()) { + clauseEndIndex = sb.length(); + sb.append(", "); } } + for (int i = 0; i < flushers.length; i++) { if (flushers[i] != null) { - sb.append(", "); - if (!flushers[i].appendUpdateQueryFragment(sb)) { - sb.setLength(sb.length() - 2); + int endIndex = sb.length(); + flushers[i].appendUpdateQueryFragment(sb); + + // If something was appended, we also append a comma + if (endIndex != sb.length()) { + clauseEndIndex = sb.length(); + sb.append(", "); } } } - // TODO: Not sure if this is correct, need to think about this again when really working on query flushing - return true; + if (clauseEndIndex + 2 == sb.length()) { + // Remove the last comma + sb.setLength(clauseEndIndex); + } } @Override - public void flushQuery(UpdateContext context, Query query, Object value) { + public boolean supportsQueryFlush() { + return supportsQueryFlush; + } + + @Override + public void flushQuery(UpdateContext context, Query query, Object view, Object value) { + if (value == null || !(value instanceof MutableStateTrackable)) { + return; + } + if (idFlusher != null && value instanceof EntityViewProxy && ((EntityViewProxy) value).$$_isNew()) { - idFlusher.flushQuery(context, query, ((EntityViewProxy) value).$$_getId()); + idFlusher.flushQuery(context, query, view, ((EntityViewProxy) value).$$_getId()); } Object[] state = ((MutableStateTrackable) value).$$_getMutableState(); - for (int i = 0; i < flushers.length; i++) { + + if (value instanceof DirtyStateTrackable) { + Object[] initialState = ((DirtyStateTrackable) value).$$_getInitialState(); + context.getInitialStateResetter().addState(initialState, initialState.clone()); + + for (int i = 0; i < state.length; i++) { + if (flushers[i] != null) { + initialState[i] = flushers[i].cloneDeep(value, initialState[i], state[i]); + flushers[i].flushQuery(context, query, view, state[i]); + } + } + } else { + for (int i = 0; i < state.length; i++) { + if (flushers[i] != null) { + flushers[i].flushQuery(context, query, view, state[i]); + } + } + } + + for (int i = state.length; i < flushers.length; i++) { if (flushers[i] != null) { - flushers[i].flushQuery(context, query, state[i]); + flushers[i].flushQuery(context, query, view, flushers[i].getAttributeAccessor().getValue(value)); } } } diff --git a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/DirtyAttributeFlusher.java b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/DirtyAttributeFlusher.java index b70a25b6be..e36414c17a 100644 --- a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/DirtyAttributeFlusher.java +++ b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/DirtyAttributeFlusher.java @@ -30,11 +30,13 @@ public interface DirtyAttributeFlusher, public DirtyAttributeFlusher getDirtyFlusher(UpdateContext context, Object view, Object initial, Object current); - public boolean appendUpdateQueryFragment(StringBuilder sb); + public void appendUpdateQueryFragment(StringBuilder sb); public void appendFetchJoinQueryFragment(String base, StringBuilder sb); + + public boolean supportsQueryFlush(); - public void flushQuery(UpdateContext context, Query query, V value); + public void flushQuery(UpdateContext context, Query query, Object view, V value); public void flushEntity(UpdateContext context, E entity, Object view, V value); diff --git a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/EmbeddableAttributeFlusher.java b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/EmbeddableAttributeFlusher.java index 3cb347da0f..fd56a13eb8 100644 --- a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/EmbeddableAttributeFlusher.java +++ b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/EmbeddableAttributeFlusher.java @@ -23,8 +23,6 @@ import com.blazebit.persistence.view.impl.proxy.MutableStateTrackable; import javax.persistence.Query; -import java.util.ArrayList; -import java.util.List; /** * @@ -66,13 +64,17 @@ public V cloneDeep(Object view, V oldValue, V newValue) { } @Override - public boolean appendUpdateQueryFragment(StringBuilder sb) { - sb.append(updateFragment); + public boolean supportsQueryFlush() { return true; } @Override - public void flushQuery(UpdateContext context, Query query, V value) { + public void appendUpdateQueryFragment(StringBuilder sb) { + sb.append(updateFragment); + } + + @Override + public void flushQuery(UpdateContext context, Query query, Object view, V value) { query.setParameter(parameterName, viewToEntityMapper.applyToEntity(context, null, value)); } diff --git a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/IndexedListAttributeFlusher.java b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/IndexedListAttributeFlusher.java index 2c38fd408c..4294c7ec47 100644 --- a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/IndexedListAttributeFlusher.java +++ b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/IndexedListAttributeFlusher.java @@ -16,6 +16,7 @@ package com.blazebit.persistence.view.impl.update.flush; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.impl.collection.CollectionAction; import com.blazebit.persistence.view.impl.collection.CollectionAddAction; import com.blazebit.persistence.view.impl.collection.ListAction; @@ -40,8 +41,8 @@ public class IndexedListAttributeFlusher> extends ListAttributeFlusher { @SuppressWarnings("unchecked") - public IndexedListAttributeFlusher(String attributeName, String mapping, EntityAttributeAccessor attributeMapper, ViewAttributeAccessor viewAttributeAccessor, EntityAttributeAccessor inverseRelationAccessor, boolean collectionUpdatable, TypeDescriptor elementDescriptor, ViewToEntityMapper inverseViewToEntityMapper, EntityToEntityMapper inverseEntityToEntityMapper) { - super(attributeName, mapping, attributeMapper, viewAttributeAccessor, inverseRelationAccessor, collectionUpdatable, elementDescriptor, inverseViewToEntityMapper, inverseEntityToEntityMapper); + public IndexedListAttributeFlusher(String attributeName, String mapping, FlushStrategy flushStrategy, EntityAttributeAccessor attributeMapper, ViewAttributeAccessor viewAttributeAccessor, EntityAttributeAccessor inverseRelationAccessor, boolean collectionUpdatable, TypeDescriptor elementDescriptor, ViewToEntityMapper inverseViewToEntityMapper, EntityToEntityMapper inverseEntityToEntityMapper) { + super(attributeName, mapping, flushStrategy, attributeMapper, viewAttributeAccessor, inverseRelationAccessor, collectionUpdatable, elementDescriptor, inverseViewToEntityMapper, inverseEntityToEntityMapper); } public IndexedListAttributeFlusher(IndexedListAttributeFlusher original, boolean fetch) { diff --git a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/InverseCollectionElementAttributeFlusher.java b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/InverseCollectionElementAttributeFlusher.java index 971b1d9257..1065c13478 100644 --- a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/InverseCollectionElementAttributeFlusher.java +++ b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/InverseCollectionElementAttributeFlusher.java @@ -27,13 +27,11 @@ */ public class InverseCollectionElementAttributeFlusher extends CollectionElementAttributeFlusher { - private final ViewToEntityMapper mapper; private final EntityAttributeAccessor inverseAttributeAccessor; private final Strategy strategy; public InverseCollectionElementAttributeFlusher(DirtyAttributeFlusher nestedGraphNode, Object element, ViewToEntityMapper mapper, EntityAttributeAccessor inverseAttributeAccessor, Strategy strategy) { - super(nestedGraphNode, element); - this.mapper = mapper; + super(nestedGraphNode, mapper, element); this.inverseAttributeAccessor = inverseAttributeAccessor; this.strategy = strategy; } @@ -42,15 +40,15 @@ public InverseCollectionElementAttributeFlusher(DirtyAttributeFlusher n @SuppressWarnings("unchecked") public void flushEntity(UpdateContext context, E entity, Object view, V value) { if (strategy == Strategy.REMOVE) { - if (mapper != null) { - context.getEntityManager().remove(mapper.applyToEntity(context, null, element)); + if (viewToEntityMapper != null) { + context.getEntityManager().remove(viewToEntityMapper.applyToEntity(context, null, element)); } else { context.getEntityManager().remove(element); } } else if (strategy != Strategy.IGNORE) { Object newValue = strategy == Strategy.SET_NULL ? null : entity; - if (mapper != null) { - inverseAttributeAccessor.setValue(context, mapper.applyToEntity(context, null, element), newValue); + if (viewToEntityMapper != null) { + inverseAttributeAccessor.setValue(context, viewToEntityMapper.applyToEntity(context, null, element), newValue); } else { inverseAttributeAccessor.setValue(context, element, newValue); } diff --git a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/ListAttributeFlusher.java b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/ListAttributeFlusher.java index d07df132ae..d8b4a373d2 100644 --- a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/ListAttributeFlusher.java +++ b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/ListAttributeFlusher.java @@ -16,6 +16,7 @@ package com.blazebit.persistence.view.impl.update.flush; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.impl.collection.CollectionAction; import com.blazebit.persistence.view.impl.collection.RecordingCollection; import com.blazebit.persistence.view.impl.collection.RecordingList; @@ -35,8 +36,8 @@ public class ListAttributeFlusher> extends CollectionAttributeFlusher { @SuppressWarnings("unchecked") - public ListAttributeFlusher(String attributeName, String mapping, EntityAttributeAccessor attributeMapper, ViewAttributeAccessor viewAttributeAccessor, EntityAttributeAccessor inverseRelationAccessor, boolean collectionUpdatable, TypeDescriptor elementDescriptor, ViewToEntityMapper inverseViewToEntityMapper, EntityToEntityMapper inverseEntityToEntityMapper) { - super(attributeName, mapping, attributeMapper, viewAttributeAccessor, inverseRelationAccessor, collectionUpdatable, elementDescriptor, inverseViewToEntityMapper, inverseEntityToEntityMapper); + public ListAttributeFlusher(String attributeName, String mapping, FlushStrategy flushStrategy, EntityAttributeAccessor attributeMapper, ViewAttributeAccessor viewAttributeAccessor, EntityAttributeAccessor inverseRelationAccessor, boolean collectionUpdatable, TypeDescriptor elementDescriptor, ViewToEntityMapper inverseViewToEntityMapper, EntityToEntityMapper inverseEntityToEntityMapper) { + super(attributeName, mapping, flushStrategy, attributeMapper, viewAttributeAccessor, inverseRelationAccessor, collectionUpdatable, elementDescriptor, inverseViewToEntityMapper, inverseEntityToEntityMapper); } public ListAttributeFlusher(ListAttributeFlusher original, boolean fetch) { diff --git a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/MapAttributeFlusher.java b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/MapAttributeFlusher.java index 6b941c9da9..4e477b39b9 100644 --- a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/MapAttributeFlusher.java +++ b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/MapAttributeFlusher.java @@ -16,6 +16,7 @@ package com.blazebit.persistence.view.impl.update.flush; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.impl.collection.MapAction; import com.blazebit.persistence.view.impl.collection.MapPutAction; import com.blazebit.persistence.view.impl.collection.MapRemoveAction; @@ -48,8 +49,8 @@ public class MapAttributeFlusher> extends PluralAttribute protected final TypeDescriptor keyDescriptor; @SuppressWarnings("unchecked") - public MapAttributeFlusher(String attributeName, String mapping, EntityAttributeAccessor attributeMapper, ViewAttributeAccessor viewAttributeAccessor, boolean collectionUpdatable, TypeDescriptor keyDescriptor, TypeDescriptor elementDescriptor, MapViewToEntityMapper mapper) { - super(attributeName, mapping, collectionUpdatable || elementDescriptor.isMutable(), attributeMapper, viewAttributeAccessor, collectionUpdatable, elementDescriptor); + public MapAttributeFlusher(String attributeName, String mapping, FlushStrategy flushStrategy, EntityAttributeAccessor attributeMapper, ViewAttributeAccessor viewAttributeAccessor, boolean collectionUpdatable, TypeDescriptor keyDescriptor, TypeDescriptor elementDescriptor, MapViewToEntityMapper mapper) { + super(attributeName, mapping, collectionUpdatable || elementDescriptor.isMutable(), flushStrategy, attributeMapper, viewAttributeAccessor, collectionUpdatable, elementDescriptor); this.keyDescriptor = keyDescriptor; this.mapper = mapper; } @@ -350,8 +351,14 @@ private void mergeAndRequeue(UpdateContext context, RecordingMap recordingCollec @Override protected void mergeCollectionElements(UpdateContext context, Object view, E entity, V value) { if (elementFlushers != null) { - for (CollectionElementAttributeFlusher elementFlusher : elementFlushers) { - elementFlusher.flushEntity(context, entity, view, value); + if (flushStrategy == FlushStrategy.ENTITY) { + for (CollectionElementAttributeFlusher elementFlusher : elementFlushers) { + elementFlusher.flushEntity(context, entity, view, value); + } + } else { + for (CollectionElementAttributeFlusher elementFlusher : elementFlushers) { + elementFlusher.flushQuery(context, null, view, value); + } } } else { // Invocations of JPA merge can change the identity that leads to requeuing into the collection being required diff --git a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/MergeCollectionElementAttributeFlusher.java b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/MergeCollectionElementAttributeFlusher.java index 6c40c1b29d..b17b91f841 100644 --- a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/MergeCollectionElementAttributeFlusher.java +++ b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/MergeCollectionElementAttributeFlusher.java @@ -29,7 +29,7 @@ public class MergeCollectionElementAttributeFlusher extends CollectionElementAttributeFlusher { public MergeCollectionElementAttributeFlusher(Object element) { - super(null, element); + super(null, null, element); } @Override @@ -42,13 +42,12 @@ public void appendFetchJoinQueryFragment(String base, StringBuilder sb) { } @Override - public boolean appendUpdateQueryFragment(StringBuilder sb) { - throw new UnsupportedOperationException(); + public void appendUpdateQueryFragment(StringBuilder sb) { } @Override - public void flushQuery(UpdateContext context, Query query, V value) { - throw new UnsupportedOperationException(); + public void flushQuery(UpdateContext context, Query query, Object view, V value) { + context.getEntityManager().merge(element); } @Override diff --git a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/OrderedMapAttributeFlusher.java b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/OrderedMapAttributeFlusher.java index 6034743794..db283b8be6 100644 --- a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/OrderedMapAttributeFlusher.java +++ b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/OrderedMapAttributeFlusher.java @@ -16,6 +16,7 @@ package com.blazebit.persistence.view.impl.update.flush; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.impl.entity.EntityAttributeAccessor; import com.blazebit.persistence.view.impl.entity.MapViewToEntityMapper; import com.blazebit.persistence.view.impl.entity.ViewAttributeAccessor; @@ -32,8 +33,8 @@ public class OrderedMapAttributeFlusher> extends MapAttributeFlusher { @SuppressWarnings("unchecked") - public OrderedMapAttributeFlusher(String attributeName, String mapping, EntityAttributeAccessor attributeMapper, ViewAttributeAccessor viewAttributeAccessor, boolean collectionUpdatable, TypeDescriptor keyDescriptor, TypeDescriptor elementDescriptor, MapViewToEntityMapper mapper) { - super(attributeName, mapping, attributeMapper, viewAttributeAccessor, collectionUpdatable, keyDescriptor, elementDescriptor, mapper); + public OrderedMapAttributeFlusher(String attributeName, String mapping, FlushStrategy flushStrategy, EntityAttributeAccessor attributeMapper, ViewAttributeAccessor viewAttributeAccessor, boolean collectionUpdatable, TypeDescriptor keyDescriptor, TypeDescriptor elementDescriptor, MapViewToEntityMapper mapper) { + super(attributeName, mapping, flushStrategy, attributeMapper, viewAttributeAccessor, collectionUpdatable, keyDescriptor, elementDescriptor, mapper); } @SuppressWarnings("unchecked") diff --git a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/OrderedSetAttributeFlusher.java b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/OrderedSetAttributeFlusher.java index 93b4ce0385..ac714fbb30 100644 --- a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/OrderedSetAttributeFlusher.java +++ b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/OrderedSetAttributeFlusher.java @@ -16,6 +16,7 @@ package com.blazebit.persistence.view.impl.update.flush; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.impl.collection.CollectionAction; import com.blazebit.persistence.view.impl.collection.RecordingCollection; import com.blazebit.persistence.view.impl.collection.RecordingSet; @@ -36,8 +37,8 @@ */ public class OrderedSetAttributeFlusher> extends SetAttributeFlusher { - public OrderedSetAttributeFlusher(String attributeName, String mapping, EntityAttributeAccessor attributeMapper, ViewAttributeAccessor viewAttributeAccessor, EntityAttributeAccessor inverseRelationAccessor, boolean collectionUpdatable, TypeDescriptor elementDescriptor, ViewToEntityMapper inverseViewToEntityMapper, EntityToEntityMapper inverseEntityToEntityMapper) { - super(attributeName, mapping, attributeMapper, viewAttributeAccessor, inverseRelationAccessor, collectionUpdatable, elementDescriptor, inverseViewToEntityMapper, inverseEntityToEntityMapper); + public OrderedSetAttributeFlusher(String attributeName, String mapping, FlushStrategy flushStrategy, EntityAttributeAccessor attributeMapper, ViewAttributeAccessor viewAttributeAccessor, EntityAttributeAccessor inverseRelationAccessor, boolean collectionUpdatable, TypeDescriptor elementDescriptor, ViewToEntityMapper inverseViewToEntityMapper, EntityToEntityMapper inverseEntityToEntityMapper) { + super(attributeName, mapping, flushStrategy, attributeMapper, viewAttributeAccessor, inverseRelationAccessor, collectionUpdatable, elementDescriptor, inverseViewToEntityMapper, inverseEntityToEntityMapper); } public OrderedSetAttributeFlusher(OrderedSetAttributeFlusher original, boolean fetch) { diff --git a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/PersistCollectionElementAttributeFlusher.java b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/PersistCollectionElementAttributeFlusher.java index c2755325f7..98e086beee 100644 --- a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/PersistCollectionElementAttributeFlusher.java +++ b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/PersistCollectionElementAttributeFlusher.java @@ -29,7 +29,7 @@ public class PersistCollectionElementAttributeFlusher extends CollectionElementAttributeFlusher { public PersistCollectionElementAttributeFlusher(Object element) { - super(null, element); + super(null, null, element); } @Override @@ -42,13 +42,12 @@ public void appendFetchJoinQueryFragment(String base, StringBuilder sb) { } @Override - public boolean appendUpdateQueryFragment(StringBuilder sb) { - throw new UnsupportedOperationException(); + public void appendUpdateQueryFragment(StringBuilder sb) { } @Override - public void flushQuery(UpdateContext context, Query query, V value) { - throw new UnsupportedOperationException(); + public void flushQuery(UpdateContext context, Query query, Object view, V value) { + context.getEntityManager().persist(element); } @Override diff --git a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/PluralAttributeFlusher.java b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/PluralAttributeFlusher.java index 6b39a803e6..4dca94c979 100644 --- a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/PluralAttributeFlusher.java +++ b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/PluralAttributeFlusher.java @@ -16,6 +16,7 @@ package com.blazebit.persistence.view.impl.update.flush; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.impl.entity.EntityAttributeAccessor; import com.blazebit.persistence.view.impl.entity.UpdateContext; import com.blazebit.persistence.view.impl.entity.ViewAttributeAccessor; @@ -35,6 +36,7 @@ */ public abstract class PluralAttributeFlusher, A, R, E, V> extends AttributeFetchGraphNode> implements DirtyAttributeFlusher { + protected final FlushStrategy flushStrategy; protected final EntityAttributeAccessor attributeMapper; protected final ViewAttributeAccessor viewAttributeAccessor; protected final boolean collectionUpdatable; @@ -44,8 +46,9 @@ public abstract class PluralAttributeFlusher> elementFlushers; @SuppressWarnings("unchecked") - public PluralAttributeFlusher(String attributeName, String mapping, boolean fetch, EntityAttributeAccessor attributeMapper, ViewAttributeAccessor viewAttributeAccessor, boolean collectionUpdatable, TypeDescriptor elementDescriptor) { + public PluralAttributeFlusher(String attributeName, String mapping, boolean fetch, FlushStrategy flushStrategy, EntityAttributeAccessor attributeMapper, ViewAttributeAccessor viewAttributeAccessor, boolean collectionUpdatable, TypeDescriptor elementDescriptor) { super(attributeName, mapping, fetch, elementDescriptor.getViewToEntityMapper() == null ? null : elementDescriptor.getViewToEntityMapper().getFullGraphNode()); + this.flushStrategy = flushStrategy; this.attributeMapper = attributeMapper; this.viewAttributeAccessor = viewAttributeAccessor; this.collectionUpdatable = collectionUpdatable; @@ -61,6 +64,7 @@ protected PluralAttributeFlusher(PluralAttributeFlusher original, boolean fetch) protected PluralAttributeFlusher(PluralAttributeFlusher original, boolean fetch, PluralFlushOperation flushOperation, List collectionActions, List> elementFlushers) { super(original.attributeName, original.mapping, fetch, elementFlushers == null ? original.nestedGraphNode : computeElementFetchGraphNode(elementFlushers)); + this.flushStrategy = original.flushStrategy; this.attributeMapper = original.attributeMapper; this.viewAttributeAccessor = original.viewAttributeAccessor; this.collectionUpdatable = original.collectionUpdatable; @@ -87,12 +91,16 @@ public V cloneDeep(Object view, V oldValue, V newValue) { } @Override - public boolean appendUpdateQueryFragment(StringBuilder sb) { + public void appendUpdateQueryFragment(StringBuilder sb) { + } + + @Override + public boolean supportsQueryFlush() { return false; } @Override - public void flushQuery(UpdateContext context, Query query, V value) { + public void flushQuery(UpdateContext context, Query query, Object view, V value) { throw new UnsupportedOperationException(); } @@ -100,16 +108,28 @@ public void flushQuery(UpdateContext context, Query query, V value) { protected void invokeFlushOperation(UpdateContext context, Object view, E entity, V value) { switch (flushOperation) { case COLLECTION_REPLAY_AND_ELEMENT: - for (CollectionElementAttributeFlusher elementFlusher : elementFlushers) { - elementFlusher.flushEntity(context, entity, view, value); + if (flushStrategy == FlushStrategy.ENTITY) { + for (CollectionElementAttributeFlusher elementFlusher : elementFlushers) { + elementFlusher.flushEntity(context, entity, view, value); + } + } else { + for (CollectionElementAttributeFlusher elementFlusher : elementFlushers) { + elementFlusher.flushQuery(context, null, view, value); + } } case COLLECTION_REPLAY_ONLY: final V targetCollection = (V) attributeMapper.getValue(context, entity); invokeCollectionAction(context, targetCollection, collectionActions); return; case COLLECTION_REPLACE_AND_ELEMENT: - for (CollectionElementAttributeFlusher elementFlusher : elementFlushers) { - elementFlusher.flushEntity(context, entity, view, value); + if (flushStrategy == FlushStrategy.ENTITY) { + for (CollectionElementAttributeFlusher elementFlusher : elementFlushers) { + elementFlusher.flushEntity(context, entity, view, value); + } + } else { + for (CollectionElementAttributeFlusher elementFlusher : elementFlushers) { + elementFlusher.flushQuery(context, null, view, value); + } } case COLLECTION_REPLACE_ONLY: replaceCollection(context, entity, value); @@ -266,21 +286,27 @@ protected final boolean determineElementFlushers(UpdateContext context, TypeDesc if (typeDescriptor.isSubview()) { final ViewToEntityMapper mapper = typeDescriptor.getViewToEntityMapper(); if (typeDescriptor.isIdentifiable()) { - for (MutableStateTrackable element : (Iterable) current) { - @SuppressWarnings("unchecked") - DirtyAttributeFlusher flusher = (DirtyAttributeFlusher) mapper.getNestedDirtyFlusher(context, element, null); - if (flusher != null) { - elementFlushers.add(new CollectionElementAttributeFlusher<>(flusher, element)); + for (Object o : current) { + if (o instanceof MutableStateTrackable) { + MutableStateTrackable element = (MutableStateTrackable) o; + @SuppressWarnings("unchecked") + DirtyAttributeFlusher flusher = (DirtyAttributeFlusher) mapper.getNestedDirtyFlusher(context, element, null); + if (flusher != null) { + elementFlushers.add(new CollectionElementAttributeFlusher<>(flusher, mapper, element)); + } } } } else { - for (MutableStateTrackable element : (Iterable) current) { - @SuppressWarnings("unchecked") - DirtyAttributeFlusher flusher = (DirtyAttributeFlusher) mapper.getNestedDirtyFlusher(context, element, null); - if (flusher != null) { - // We can't merge flat view elements separately so we need to replace the element in the collection - // This is signalled by returning null - return true; + for (Object o : current) { + if (o instanceof MutableStateTrackable) { + MutableStateTrackable element = (MutableStateTrackable) o; + @SuppressWarnings("unchecked") + DirtyAttributeFlusher flusher = (DirtyAttributeFlusher) mapper.getNestedDirtyFlusher(context, element, null); + if (flusher != null) { + // We can't merge flat view elements separately so we need to replace the element in the collection + // This is signalled by returning null + return true; + } } } diff --git a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/SetAttributeFlusher.java b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/SetAttributeFlusher.java index fbeb3ce051..11ff167ab5 100644 --- a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/SetAttributeFlusher.java +++ b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/SetAttributeFlusher.java @@ -16,6 +16,7 @@ package com.blazebit.persistence.view.impl.update.flush; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.impl.collection.CollectionAction; import com.blazebit.persistence.view.impl.collection.RecordingCollection; import com.blazebit.persistence.view.impl.collection.RecordingSet; @@ -37,8 +38,8 @@ public class SetAttributeFlusher> extends CollectionAttributeFlusher { @SuppressWarnings("unchecked") - public SetAttributeFlusher(String attributeName, String mapping, EntityAttributeAccessor attributeMapper, ViewAttributeAccessor viewAttributeAccessor, EntityAttributeAccessor inverseRelationAccessor, boolean collectionUpdatable, TypeDescriptor elementDescriptor, ViewToEntityMapper inverseViewToEntityMapper, EntityToEntityMapper inverseEntityToEntityMapper) { - super(attributeName, mapping, attributeMapper, viewAttributeAccessor, inverseRelationAccessor, collectionUpdatable, elementDescriptor, inverseViewToEntityMapper, inverseEntityToEntityMapper); + public SetAttributeFlusher(String attributeName, String mapping, FlushStrategy flushStrategy, EntityAttributeAccessor attributeMapper, ViewAttributeAccessor viewAttributeAccessor, EntityAttributeAccessor inverseRelationAccessor, boolean collectionUpdatable, TypeDescriptor elementDescriptor, ViewToEntityMapper inverseViewToEntityMapper, EntityToEntityMapper inverseEntityToEntityMapper) { + super(attributeName, mapping, flushStrategy, attributeMapper, viewAttributeAccessor, inverseRelationAccessor, collectionUpdatable, elementDescriptor, inverseViewToEntityMapper, inverseEntityToEntityMapper); } public SetAttributeFlusher(SetAttributeFlusher original, boolean fetch) { diff --git a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/SortedMapAttributeFlusher.java b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/SortedMapAttributeFlusher.java index 1c36adf1ba..0256ddc5a7 100644 --- a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/SortedMapAttributeFlusher.java +++ b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/SortedMapAttributeFlusher.java @@ -16,6 +16,7 @@ package com.blazebit.persistence.view.impl.update.flush; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.impl.entity.EntityAttributeAccessor; import com.blazebit.persistence.view.impl.entity.MapViewToEntityMapper; import com.blazebit.persistence.view.impl.entity.ViewAttributeAccessor; @@ -35,8 +36,8 @@ public class SortedMapAttributeFlusher> extends Map private final Comparator comparator; @SuppressWarnings("unchecked") - public SortedMapAttributeFlusher(String attributeName, String mapping, EntityAttributeAccessor attributeMapper, ViewAttributeAccessor viewAttributeAccessor, boolean collectionUpdatable, TypeDescriptor keyDescriptor, TypeDescriptor elementDescriptor, MapViewToEntityMapper mapper, Comparator comparator) { - super(attributeName, mapping, attributeMapper, viewAttributeAccessor, collectionUpdatable, keyDescriptor, elementDescriptor, mapper); + public SortedMapAttributeFlusher(String attributeName, String mapping, FlushStrategy flushStrategy, EntityAttributeAccessor attributeMapper, ViewAttributeAccessor viewAttributeAccessor, boolean collectionUpdatable, TypeDescriptor keyDescriptor, TypeDescriptor elementDescriptor, MapViewToEntityMapper mapper, Comparator comparator) { + super(attributeName, mapping, flushStrategy, attributeMapper, viewAttributeAccessor, collectionUpdatable, keyDescriptor, elementDescriptor, mapper); this.comparator = (Comparator) comparator; } diff --git a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/SortedSetAttributeFlusher.java b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/SortedSetAttributeFlusher.java index ce86ab8c10..4303766dac 100644 --- a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/SortedSetAttributeFlusher.java +++ b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/SortedSetAttributeFlusher.java @@ -16,6 +16,7 @@ package com.blazebit.persistence.view.impl.update.flush; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.impl.collection.CollectionAction; import com.blazebit.persistence.view.impl.collection.RecordingCollection; import com.blazebit.persistence.view.impl.collection.RecordingSortedSet; @@ -40,8 +41,8 @@ public class SortedSetAttributeFlusher> extends SetAtt private final Comparator comparator; @SuppressWarnings("unchecked") - public SortedSetAttributeFlusher(String attributeName, String mapping, EntityAttributeAccessor attributeMapper, ViewAttributeAccessor viewAttributeAccessor, EntityAttributeAccessor inverseRelationAccessor, boolean collectionUpdatable, TypeDescriptor elementDescriptor, ViewToEntityMapper inverseViewToEntityMapper, EntityToEntityMapper inverseEntityToEntityMapper, Comparator comparator) { - super(attributeName, mapping, attributeMapper, viewAttributeAccessor, inverseRelationAccessor, collectionUpdatable, elementDescriptor, inverseViewToEntityMapper, inverseEntityToEntityMapper); + public SortedSetAttributeFlusher(String attributeName, String mapping, FlushStrategy flushStrategy, EntityAttributeAccessor attributeMapper, ViewAttributeAccessor viewAttributeAccessor, EntityAttributeAccessor inverseRelationAccessor, boolean collectionUpdatable, TypeDescriptor elementDescriptor, ViewToEntityMapper inverseViewToEntityMapper, EntityToEntityMapper inverseEntityToEntityMapper, Comparator comparator) { + super(attributeName, mapping, flushStrategy, attributeMapper, viewAttributeAccessor, inverseRelationAccessor, collectionUpdatable, elementDescriptor, inverseViewToEntityMapper, inverseEntityToEntityMapper); this.comparator = (Comparator) comparator; } diff --git a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/SubviewAttributeFlusher.java b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/SubviewAttributeFlusher.java index f1f9fc1aa2..3b42c5f185 100644 --- a/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/SubviewAttributeFlusher.java +++ b/entity-view/impl/src/main/java/com/blazebit/persistence/view/impl/update/flush/SubviewAttributeFlusher.java @@ -21,6 +21,7 @@ import com.blazebit.persistence.view.impl.entity.ViewAttributeAccessor; import com.blazebit.persistence.view.impl.entity.ViewToEntityMapper; import com.blazebit.persistence.view.impl.proxy.MutableStateTrackable; +import com.blazebit.persistence.view.impl.update.EntityViewUpdaterImpl; import javax.persistence.Query; @@ -39,6 +40,7 @@ public class SubviewAttributeFlusher extends AttributeFetchGraphNode nestedFlusher) { + private SubviewAttributeFlusher(SubviewAttributeFlusher original, boolean fetch, boolean update, DirtyAttributeFlusher nestedFlusher) { super(original.attributeName, original.mapping, fetch, nestedFlusher); this.updatable = original.updatable; this.updateFragment = original.updateFragment; @@ -63,6 +66,7 @@ private SubviewAttributeFlusher(SubviewAttributeFlusher original, boolean fetch, this.viewAttributeAccessor = original.viewAttributeAccessor; this.subviewIdAccessor = original.subviewIdAccessor; this.viewToEntityMapper = original.viewToEntityMapper; + this.update = update; } @Override @@ -71,22 +75,45 @@ public V cloneDeep(Object view, V oldValue, V newValue) { } @Override - public boolean appendUpdateQueryFragment(StringBuilder sb) { - if (updatable) { + public void appendUpdateQueryFragment(StringBuilder sb) { + if (update && (updatable || isPassThrough())) { sb.append(updateFragment); - return true; } + } - return false; + @Override + public boolean supportsQueryFlush() { + return true; } @Override - public void flushQuery(UpdateContext context, Query query, V value) { - if (nestedGraphNode != null) { - nestedGraphNode.flushQuery(context, query, value); - } - if (subviewIdAccessor != null) { - query.setParameter(parameterName, subviewIdAccessor.getValue(value)); + public void flushQuery(UpdateContext context, Query query, Object view, V value) { + if (updatable || isPassThrough()) { + if (nestedGraphNode != null && nestedGraphNode != viewToEntityMapper.getFullGraphNode()) { + Query q = viewToEntityMapper.createUpdateQuery(context, value, nestedGraphNode); + nestedGraphNode.flushQuery(context, q, null, value); + if (q != null) { + q.executeUpdate(); + } + } + Object v = viewToEntityMapper.applyToEntity(context, null, value); + if (query != null && update) { + Object realValue = v == null ? null : subviewIdAccessor.getValue(value); + query.setParameter(parameterName, realValue); + } + } else { + V realValue = (V) viewAttributeAccessor.getValue(view); + if (nestedGraphNode != null && nestedGraphNode != viewToEntityMapper.getFullGraphNode()) { + Query q = viewToEntityMapper.createUpdateQuery(context, realValue, nestedGraphNode); + nestedGraphNode.flushQuery(context, q, null, realValue); + if (q != null) { + q.executeUpdate(); + } + } else { + if (realValue != null && (value == realValue || viewIdEqual(value, realValue))) { + viewToEntityMapper.applyToEntity(context, null, realValue); + } + } } } @@ -98,7 +125,9 @@ public void flushEntity(UpdateContext context, E entity, Object view, V value) { nestedGraphNode.flushEntity(context, null, null, value); } Object v = viewToEntityMapper.applyToEntity(context, null, value); - attributeAccessor.setValue(context, entity, v); + if (update) { + attributeAccessor.setValue(context, entity, v); + } } else { V realValue = (V) viewAttributeAccessor.getValue(view); if (nestedGraphNode != null && nestedGraphNode != viewToEntityMapper.getFullGraphNode()) { @@ -129,9 +158,10 @@ public DirtyAttributeFlusher, E, V> getDirtyFlushe } if (updatable) { + boolean needsUpdate = !viewIdEqual(initial, current); // If the reference changed, we don't need to load the old reference - if (initial != current && !viewIdEqual(initial, current)) { - return new SubviewAttributeFlusher<>(this, false, null); + if (initial != current && needsUpdate) { + return new SubviewAttributeFlusher<>(this, false, needsUpdate, null); } // If the initial and current reference are null, no need to do anything further @@ -143,7 +173,7 @@ public DirtyAttributeFlusher, E, V> getDirtyFlushe if (current instanceof MutableStateTrackable) { DirtyAttributeFlusher flusher = (DirtyAttributeFlusher) viewToEntityMapper.getNestedDirtyFlusher(context, (MutableStateTrackable) current, this); if (flusher != null) { - return new SubviewAttributeFlusher<>(this, true, flusher); + return new SubviewAttributeFlusher<>(this, true, needsUpdate, flusher); } } @@ -154,7 +184,7 @@ public DirtyAttributeFlusher, E, V> getDirtyFlushe if (current == newValue || viewIdEqual(initial, newValue)) { DirtyAttributeFlusher flusher = (DirtyAttributeFlusher) viewToEntityMapper.getNestedDirtyFlusher(context, (MutableStateTrackable) newValue, this); if (flusher != null) { - return new SubviewAttributeFlusher<>(this, true, flusher); + return new SubviewAttributeFlusher<>(this, true, false, flusher); } else { return null; } diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/AbstractEntityViewUpdateTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/AbstractEntityViewUpdateTest.java index be7e2e924b..eb231f4aec 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/AbstractEntityViewUpdateTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/AbstractEntityViewUpdateTest.java @@ -27,7 +27,9 @@ import com.blazebit.persistence.view.EntityViewSetting; import com.blazebit.persistence.view.EntityViews; import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.UpdatableEntityView; +import com.blazebit.persistence.view.impl.ConfigurationProperties; import com.blazebit.persistence.view.spi.EntityViewConfiguration; import com.blazebit.persistence.view.testsuite.AbstractEntityViewTest; import org.junit.Before; @@ -47,9 +49,46 @@ public abstract class AbstractEntityViewUpdateTest extends AbstractEntityViewTest { protected static final long EPOCH_2K = 946684800000L; + protected static final Object[][] MODE_STRATEGY_COMBINATIONS = { + { FlushMode.LAZY, FlushStrategy.ENTITY }, + { FlushMode.LAZY, FlushStrategy.QUERY }, + { FlushMode.LAZY, FlushStrategy.AUTO }, + + { FlushMode.PARTIAL, FlushStrategy.ENTITY }, + { FlushMode.PARTIAL, FlushStrategy.QUERY }, + { FlushMode.PARTIAL, FlushStrategy.AUTO }, + + { FlushMode.FULL, FlushStrategy.ENTITY }, + { FlushMode.FULL, FlushStrategy.QUERY }, + { FlushMode.FULL, FlushStrategy.AUTO }, + }; + protected static final Object[][] MODE_STRATEGY_TYPE_COMBINATIONS = { + { FlushMode.LAZY, FlushStrategy.ENTITY, false }, + { FlushMode.LAZY, FlushStrategy.QUERY, false }, + { FlushMode.LAZY, FlushStrategy.AUTO, false }, + { FlushMode.LAZY, FlushStrategy.ENTITY, true }, + { FlushMode.LAZY, FlushStrategy.QUERY, true }, + { FlushMode.LAZY, FlushStrategy.AUTO, true }, + + { FlushMode.PARTIAL, FlushStrategy.ENTITY, false }, + { FlushMode.PARTIAL, FlushStrategy.QUERY, false }, + { FlushMode.PARTIAL, FlushStrategy.AUTO, false }, + { FlushMode.PARTIAL, FlushStrategy.ENTITY, true }, + { FlushMode.PARTIAL, FlushStrategy.QUERY, true }, + { FlushMode.PARTIAL, FlushStrategy.AUTO, true }, + + { FlushMode.FULL, FlushStrategy.ENTITY, false }, + { FlushMode.FULL, FlushStrategy.QUERY, false }, + { FlushMode.FULL, FlushStrategy.AUTO, false }, + { FlushMode.FULL, FlushStrategy.ENTITY, true }, + { FlushMode.FULL, FlushStrategy.QUERY, true }, + { FlushMode.FULL, FlushStrategy.AUTO, true } + }; protected FlushMode mode; + protected FlushStrategy strategy; protected Class viewType; + protected Class[] views; protected Document doc1; protected Document doc2; protected Person p1; @@ -61,8 +100,22 @@ public AbstractEntityViewUpdateTest() { } public AbstractEntityViewUpdateTest(Class viewType) { - this.viewType = viewType; this.mode = AnnotationUtils.findAnnotation(viewType, UpdatableEntityView.class).mode(); + this.strategy = AnnotationUtils.findAnnotation(viewType, UpdatableEntityView.class).strategy(); + this.viewType = viewType; + this.views = new Class[0]; + } + + + public AbstractEntityViewUpdateTest(FlushMode mode, FlushStrategy strategy, Class viewType) { + this(mode, strategy, viewType, new Class[0]); + } + + public AbstractEntityViewUpdateTest(FlushMode mode, FlushStrategy strategy, Class viewType, Class... views) { + this.mode = mode; + this.strategy = strategy; + this.viewType = viewType; + this.views = views; } @Before @@ -136,6 +189,11 @@ public void work(EntityManager em) { EntityViewConfiguration cfg = EntityViews.createDefaultConfiguration(); cfg.addEntityView(viewType); + for (Class view : views) { + cfg.addEntityView(view); + } + cfg.setProperty(ConfigurationProperties.UPDATER_FLUSH_MODE, mode.name().toLowerCase()); + cfg.setProperty(ConfigurationProperties.UPDATER_FLUSH_STRATEGY, strategy.name().toLowerCase()); registerViewTypes(cfg); evm = cfg.createEntityViewManager(cbf); } @@ -187,7 +245,11 @@ protected void assertNoUpdateAndReload(T docView) { clearQueries(); update(docView); if (isFullMode()) { - fullFetch(assertQuerySequence()).validate(); + if (isQueryStrategy()) { + fullUpdate(assertQuerySequence()).validate(); + } else { + fullFetch(assertQuerySequence()).validate(); + } } else { assertQueryCount(0); } @@ -210,22 +272,38 @@ protected AssertStatementBuilder assertQueriesAfterUpdate(T docView) { protected void validateNoChange(T docView) { AssertStatementBuilder builder = assertQuerySequence(); - if (isFullMode()) { - fullFetch(builder); + if (isQueryStrategy()) { + if (isFullMode()) { + fullUpdate(builder); + } + } else { + if (isFullMode()) { + fullFetch(builder); + } } builder.validate(); AssertStatementBuilder afterBuilder = assertQueriesAfterUpdate(docView); - if (isFullMode()) { - fullFetch(afterBuilder); + if (isQueryStrategy()) { + if (isFullMode()) { + fullUpdate(afterBuilder); + } + } else { + if (isFullMode()) { + fullFetch(afterBuilder); + } } afterBuilder.validate(); } protected abstract AssertStatementBuilder fullFetch(AssertStatementBuilder builder); + protected AssertStatementBuilder fullUpdate(AssertStatementBuilder builder) { + return builder; + } + protected void update(final T docView) { transactional(new TxVoidWork() { @@ -254,6 +332,10 @@ protected boolean isFullMode() { return mode == FlushMode.FULL; } + protected boolean isQueryStrategy() { + return strategy != FlushStrategy.ENTITY; + } + protected T getDoc1View() { return getDocumentView(doc1.getId()); } diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/AbstractEntityViewUpdateBasicCollectionsTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/AbstractEntityViewUpdateBasicCollectionsTest.java index a8bf4f11d6..bdd5fb7e8c 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/AbstractEntityViewUpdateBasicCollectionsTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/AbstractEntityViewUpdateBasicCollectionsTest.java @@ -18,6 +18,8 @@ import com.blazebit.persistence.testsuite.base.category.NoDatanucleus; import com.blazebit.persistence.testsuite.base.category.NoEclipselink; +import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.testsuite.update.AbstractEntityViewUpdateTest; import com.blazebit.persistence.view.testsuite.update.basic.model.UpdatableDocumentBasicWithCollectionsViewBase; import org.junit.experimental.categories.Category; @@ -29,15 +31,15 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ @RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) public abstract class AbstractEntityViewUpdateBasicCollectionsTest extends AbstractEntityViewUpdateTest { - public AbstractEntityViewUpdateBasicCollectionsTest(Class viewType) { - super(viewType); + public AbstractEntityViewUpdateBasicCollectionsTest(FlushMode mode, FlushStrategy strategy, Class viewType) { + super(mode, strategy, viewType); } public T updateReplaceCollection() { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/AbstractEntityViewUpdateBasicMapsTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/AbstractEntityViewUpdateBasicMapsTest.java index 5a5c7a77af..1b6a86474c 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/AbstractEntityViewUpdateBasicMapsTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/AbstractEntityViewUpdateBasicMapsTest.java @@ -18,28 +18,28 @@ import com.blazebit.persistence.testsuite.base.category.NoDatanucleus; import com.blazebit.persistence.testsuite.base.category.NoEclipselink; +import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.testsuite.update.AbstractEntityViewUpdateTest; -import com.blazebit.persistence.view.testsuite.update.basic.model.UpdatableDocumentBasicWithCollectionsViewBase; import com.blazebit.persistence.view.testsuite.update.basic.model.UpdatableDocumentBasicWithMapsViewBase; import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; -import java.util.ArrayList; import java.util.HashMap; /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ @RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) public abstract class AbstractEntityViewUpdateBasicMapsTest extends AbstractEntityViewUpdateTest { - public AbstractEntityViewUpdateBasicMapsTest(Class viewType) { - super(viewType); + public AbstractEntityViewUpdateBasicMapsTest(FlushMode mode, FlushStrategy strategy, Class viewType) { + super(mode, strategy, viewType); } public T updateReplaceCollection() { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/AbstractEntityViewUpdateBasicTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/AbstractEntityViewUpdateBasicTest.java index 1f90a7ad14..67311d0af8 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/AbstractEntityViewUpdateBasicTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/AbstractEntityViewUpdateBasicTest.java @@ -18,6 +18,8 @@ import com.blazebit.persistence.testsuite.base.category.NoDatanucleus; import com.blazebit.persistence.testsuite.base.category.NoEclipselink; +import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.testsuite.update.AbstractEntityViewUpdateTest; import com.blazebit.persistence.view.testsuite.update.basic.model.UpdatableDocumentBasicViewBase; import org.junit.experimental.categories.Category; @@ -29,15 +31,15 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ @RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) public abstract class AbstractEntityViewUpdateBasicTest extends AbstractEntityViewUpdateTest { - public AbstractEntityViewUpdateBasicTest(Class viewType) { - super(viewType); + public AbstractEntityViewUpdateBasicTest(FlushMode mode, FlushStrategy strategy, Class viewType) { + super(mode, strategy, viewType); } public T simpleUpdate() { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/EntityViewUpdateCreatableBasicCollectionsTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/EntityViewUpdateCreatableBasicCollectionsTest.java index 56997eb449..ea84745fe5 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/EntityViewUpdateCreatableBasicCollectionsTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/EntityViewUpdateCreatableBasicCollectionsTest.java @@ -21,16 +21,9 @@ import com.blazebit.persistence.view.EntityViews; import com.blazebit.persistence.view.spi.EntityViewConfiguration; import com.blazebit.persistence.view.testsuite.AbstractEntityViewTest; -import com.blazebit.persistence.view.testsuite.update.basic.creatable.model.FullUpdatableDocumentBasicWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.basic.creatable.model.LazyUpdatableDocumentBasicWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.basic.creatable.model.PartialUpdatableDocumentBasicWithCollectionsView; +import com.blazebit.persistence.view.testsuite.update.basic.creatable.model.UpdatableDocumentBasicWithCollectionsView; import org.junit.Test; import org.junit.experimental.categories.Category; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; - -import java.util.Arrays; -import java.util.Collection; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; @@ -38,32 +31,16 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ -@RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) public class EntityViewUpdateCreatableBasicCollectionsTest extends AbstractEntityViewTest { - protected Class viewType; - - public EntityViewUpdateCreatableBasicCollectionsTest(Class viewType) { - this.viewType = viewType; - } - - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { LazyUpdatableDocumentBasicWithCollectionsView.class }, - { PartialUpdatableDocumentBasicWithCollectionsView.class }, - { FullUpdatableDocumentBasicWithCollectionsView.class } - }); - } - @Test public void testValidateInvalidConfiguration() { EntityViewConfiguration cfg = EntityViews.createDefaultConfiguration(); - cfg.addEntityView(viewType); + cfg.addEntityView(UpdatableDocumentBasicWithCollectionsView.class); try { evm = cfg.createEntityViewManager(cbf); fail("Expected failure because of invalid attribute definition!"); diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/EntityViewUpdateCreatableBasicMapsTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/EntityViewUpdateCreatableBasicMapsTest.java index c79585159f..c1dde7bb89 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/EntityViewUpdateCreatableBasicMapsTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/EntityViewUpdateCreatableBasicMapsTest.java @@ -21,16 +21,9 @@ import com.blazebit.persistence.view.EntityViews; import com.blazebit.persistence.view.spi.EntityViewConfiguration; import com.blazebit.persistence.view.testsuite.AbstractEntityViewTest; -import com.blazebit.persistence.view.testsuite.update.basic.creatable.model.FullUpdatableDocumentBasicWithMapsView; -import com.blazebit.persistence.view.testsuite.update.basic.creatable.model.LazyUpdatableDocumentBasicWithMapsView; -import com.blazebit.persistence.view.testsuite.update.basic.creatable.model.PartialUpdatableDocumentBasicWithMapsView; +import com.blazebit.persistence.view.testsuite.update.basic.creatable.model.UpdatableDocumentBasicWithMapsView; import org.junit.Test; import org.junit.experimental.categories.Category; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; - -import java.util.Arrays; -import java.util.Collection; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; @@ -38,32 +31,16 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ -@RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) public class EntityViewUpdateCreatableBasicMapsTest extends AbstractEntityViewTest { - protected Class viewType; - - public EntityViewUpdateCreatableBasicMapsTest(Class viewType) { - this.viewType = viewType; - } - - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { LazyUpdatableDocumentBasicWithMapsView.class }, - { PartialUpdatableDocumentBasicWithMapsView.class }, - { FullUpdatableDocumentBasicWithMapsView.class } - }); - } - @Test public void testValidateInvalidConfiguration() { EntityViewConfiguration cfg = EntityViews.createDefaultConfiguration(); - cfg.addEntityView(viewType); + cfg.addEntityView(UpdatableDocumentBasicWithMapsView.class); try { evm = cfg.createEntityViewManager(cbf); fail("Expected failure because of invalid attribute definition!"); diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/EntityViewUpdateCreatableBasicTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/EntityViewUpdateCreatableBasicTest.java index 10c9fdbdaf..8f4acc977f 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/EntityViewUpdateCreatableBasicTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/EntityViewUpdateCreatableBasicTest.java @@ -21,16 +21,9 @@ import com.blazebit.persistence.view.EntityViews; import com.blazebit.persistence.view.spi.EntityViewConfiguration; import com.blazebit.persistence.view.testsuite.AbstractEntityViewTest; -import com.blazebit.persistence.view.testsuite.update.basic.creatable.model.FullUpdatableDocumentBasicView; -import com.blazebit.persistence.view.testsuite.update.basic.creatable.model.LazyUpdatableDocumentBasicView; -import com.blazebit.persistence.view.testsuite.update.basic.creatable.model.PartialUpdatableDocumentBasicView; +import com.blazebit.persistence.view.testsuite.update.basic.creatable.model.UpdatableDocumentBasicView; import org.junit.Test; import org.junit.experimental.categories.Category; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; - -import java.util.Arrays; -import java.util.Collection; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; @@ -38,32 +31,16 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ -@RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) public class EntityViewUpdateCreatableBasicTest extends AbstractEntityViewTest { - protected Class viewType; - - public EntityViewUpdateCreatableBasicTest(Class viewType) { - this.viewType = viewType; - } - - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { LazyUpdatableDocumentBasicView.class }, - { PartialUpdatableDocumentBasicView.class }, - { FullUpdatableDocumentBasicView.class } - }); - } - @Test public void testValidateInvalidConfiguration() { EntityViewConfiguration cfg = EntityViews.createDefaultConfiguration(); - cfg.addEntityView(viewType); + cfg.addEntityView(UpdatableDocumentBasicView.class); try { evm = cfg.createEntityViewManager(cbf); fail("Expected failure because of invalid attribute definition!"); diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/model/FullUpdatableDocumentBasicView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/model/FullUpdatableDocumentBasicView.java deleted file mode 100644 index 0c8c2f81ee..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/model/FullUpdatableDocumentBasicView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.basic.creatable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentBasicView extends UpdatableDocumentBasicView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/model/FullUpdatableDocumentBasicWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/model/FullUpdatableDocumentBasicWithCollectionsView.java deleted file mode 100644 index b150f94eea..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/model/FullUpdatableDocumentBasicWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.basic.creatable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentBasicWithCollectionsView extends UpdatableDocumentBasicWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/model/FullUpdatableDocumentBasicWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/model/FullUpdatableDocumentBasicWithMapsView.java deleted file mode 100644 index 7dacd44e37..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/model/FullUpdatableDocumentBasicWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.basic.creatable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentBasicWithMapsView extends UpdatableDocumentBasicWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/model/LazyUpdatableDocumentBasicView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/model/LazyUpdatableDocumentBasicView.java deleted file mode 100644 index 771e9c0dd6..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/model/LazyUpdatableDocumentBasicView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.basic.creatable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentBasicView extends UpdatableDocumentBasicView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/model/LazyUpdatableDocumentBasicWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/model/LazyUpdatableDocumentBasicWithCollectionsView.java deleted file mode 100644 index b681df8937..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/model/LazyUpdatableDocumentBasicWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.basic.creatable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentBasicWithCollectionsView extends UpdatableDocumentBasicWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/model/LazyUpdatableDocumentBasicWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/model/LazyUpdatableDocumentBasicWithMapsView.java deleted file mode 100644 index a3ad6246d3..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/model/LazyUpdatableDocumentBasicWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.basic.creatable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentBasicWithMapsView extends UpdatableDocumentBasicWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/model/PartialUpdatableDocumentBasicView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/model/PartialUpdatableDocumentBasicView.java deleted file mode 100644 index 93c5d3f03d..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/model/PartialUpdatableDocumentBasicView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.basic.creatable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentBasicView extends UpdatableDocumentBasicView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/model/PartialUpdatableDocumentBasicWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/model/PartialUpdatableDocumentBasicWithCollectionsView.java deleted file mode 100644 index ba19f38580..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/model/PartialUpdatableDocumentBasicWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.basic.creatable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentBasicWithCollectionsView extends UpdatableDocumentBasicWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/model/PartialUpdatableDocumentBasicWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/model/PartialUpdatableDocumentBasicWithMapsView.java deleted file mode 100644 index 9e7fed14dc..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/model/PartialUpdatableDocumentBasicWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.basic.creatable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentBasicWithMapsView extends UpdatableDocumentBasicWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/model/UpdatableDocumentBasicView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/model/UpdatableDocumentBasicView.java index 33add1ec04..2af084382f 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/model/UpdatableDocumentBasicView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/model/UpdatableDocumentBasicView.java @@ -25,7 +25,7 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ public interface UpdatableDocumentBasicView extends UpdatableDocumentBasicViewBase { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/model/UpdatableDocumentBasicWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/model/UpdatableDocumentBasicWithCollectionsView.java index 64f82a8830..ebfb97ef7c 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/model/UpdatableDocumentBasicWithCollectionsView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/model/UpdatableDocumentBasicWithCollectionsView.java @@ -25,7 +25,7 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ public interface UpdatableDocumentBasicWithCollectionsView extends UpdatableDocumentBasicWithCollectionsViewBase { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/model/UpdatableDocumentBasicWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/model/UpdatableDocumentBasicWithMapsView.java index 8a7ca0c43b..c7df03dbcc 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/model/UpdatableDocumentBasicWithMapsView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatable/model/UpdatableDocumentBasicWithMapsView.java @@ -25,7 +25,7 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ public interface UpdatableDocumentBasicWithMapsView extends UpdatableDocumentBasicWithMapsViewBase { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/EntityViewUpdateCreatableOnlyBasicCollectionsTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/EntityViewUpdateCreatableOnlyBasicCollectionsTest.java index 7d39aae08a..df2a11c390 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/EntityViewUpdateCreatableOnlyBasicCollectionsTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/EntityViewUpdateCreatableOnlyBasicCollectionsTest.java @@ -21,16 +21,9 @@ import com.blazebit.persistence.view.EntityViews; import com.blazebit.persistence.view.spi.EntityViewConfiguration; import com.blazebit.persistence.view.testsuite.AbstractEntityViewTest; -import com.blazebit.persistence.view.testsuite.update.basic.creatableonly.model.FullUpdatableDocumentBasicWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.basic.creatableonly.model.LazyUpdatableDocumentBasicWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.basic.creatableonly.model.PartialUpdatableDocumentBasicWithCollectionsView; +import com.blazebit.persistence.view.testsuite.update.basic.creatableonly.model.UpdatableDocumentBasicWithCollectionsView; import org.junit.Test; import org.junit.experimental.categories.Category; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; - -import java.util.Arrays; -import java.util.Collection; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; @@ -38,32 +31,16 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ -@RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) public class EntityViewUpdateCreatableOnlyBasicCollectionsTest extends AbstractEntityViewTest { - protected Class viewType; - - public EntityViewUpdateCreatableOnlyBasicCollectionsTest(Class viewType) { - this.viewType = viewType; - } - - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { LazyUpdatableDocumentBasicWithCollectionsView.class }, - { PartialUpdatableDocumentBasicWithCollectionsView.class }, - { FullUpdatableDocumentBasicWithCollectionsView.class } - }); - } - @Test public void testValidateInvalidConfiguration() { EntityViewConfiguration cfg = EntityViews.createDefaultConfiguration(); - cfg.addEntityView(viewType); + cfg.addEntityView(UpdatableDocumentBasicWithCollectionsView.class); try { evm = cfg.createEntityViewManager(cbf); fail("Expected failure because of invalid attribute definition!"); diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/EntityViewUpdateCreatableOnlyBasicMapsTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/EntityViewUpdateCreatableOnlyBasicMapsTest.java index 463ca14d39..6e53921401 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/EntityViewUpdateCreatableOnlyBasicMapsTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/EntityViewUpdateCreatableOnlyBasicMapsTest.java @@ -21,16 +21,9 @@ import com.blazebit.persistence.view.EntityViews; import com.blazebit.persistence.view.spi.EntityViewConfiguration; import com.blazebit.persistence.view.testsuite.AbstractEntityViewTest; -import com.blazebit.persistence.view.testsuite.update.basic.creatableonly.model.FullUpdatableDocumentBasicWithMapsView; -import com.blazebit.persistence.view.testsuite.update.basic.creatableonly.model.LazyUpdatableDocumentBasicWithMapsView; -import com.blazebit.persistence.view.testsuite.update.basic.creatableonly.model.PartialUpdatableDocumentBasicWithMapsView; +import com.blazebit.persistence.view.testsuite.update.basic.creatableonly.model.UpdatableDocumentBasicWithMapsView; import org.junit.Test; import org.junit.experimental.categories.Category; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; - -import java.util.Arrays; -import java.util.Collection; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; @@ -38,32 +31,16 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ -@RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) public class EntityViewUpdateCreatableOnlyBasicMapsTest extends AbstractEntityViewTest { - protected Class viewType; - - public EntityViewUpdateCreatableOnlyBasicMapsTest(Class viewType) { - this.viewType = viewType; - } - - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { LazyUpdatableDocumentBasicWithMapsView.class }, - { PartialUpdatableDocumentBasicWithMapsView.class }, - { FullUpdatableDocumentBasicWithMapsView.class } - }); - } - @Test public void testValidateInvalidConfiguration() { EntityViewConfiguration cfg = EntityViews.createDefaultConfiguration(); - cfg.addEntityView(viewType); + cfg.addEntityView(UpdatableDocumentBasicWithMapsView.class); try { evm = cfg.createEntityViewManager(cbf); fail("Expected failure because of invalid attribute definition!"); diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/EntityViewUpdateCreatableOnlyBasicTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/EntityViewUpdateCreatableOnlyBasicTest.java index 05bb530c51..cd329256d1 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/EntityViewUpdateCreatableOnlyBasicTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/EntityViewUpdateCreatableOnlyBasicTest.java @@ -21,16 +21,9 @@ import com.blazebit.persistence.view.EntityViews; import com.blazebit.persistence.view.spi.EntityViewConfiguration; import com.blazebit.persistence.view.testsuite.AbstractEntityViewTest; -import com.blazebit.persistence.view.testsuite.update.basic.creatableonly.model.FullUpdatableDocumentBasicView; -import com.blazebit.persistence.view.testsuite.update.basic.creatableonly.model.LazyUpdatableDocumentBasicView; -import com.blazebit.persistence.view.testsuite.update.basic.creatableonly.model.PartialUpdatableDocumentBasicView; +import com.blazebit.persistence.view.testsuite.update.basic.creatableonly.model.UpdatableDocumentBasicView; import org.junit.Test; import org.junit.experimental.categories.Category; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; - -import java.util.Arrays; -import java.util.Collection; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; @@ -38,32 +31,16 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ -@RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) public class EntityViewUpdateCreatableOnlyBasicTest extends AbstractEntityViewTest { - protected Class viewType; - - public EntityViewUpdateCreatableOnlyBasicTest(Class viewType) { - this.viewType = viewType; - } - - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { LazyUpdatableDocumentBasicView.class }, - { PartialUpdatableDocumentBasicView.class }, - { FullUpdatableDocumentBasicView.class } - }); - } - @Test public void testValidateInvalidConfiguration() { EntityViewConfiguration cfg = EntityViews.createDefaultConfiguration(); - cfg.addEntityView(viewType); + cfg.addEntityView(UpdatableDocumentBasicView.class); try { evm = cfg.createEntityViewManager(cbf); fail("Expected failure because of invalid attribute definition!"); diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/model/FullUpdatableDocumentBasicView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/model/FullUpdatableDocumentBasicView.java deleted file mode 100644 index fc4821ee93..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/model/FullUpdatableDocumentBasicView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.basic.creatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentBasicView extends UpdatableDocumentBasicView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/model/FullUpdatableDocumentBasicWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/model/FullUpdatableDocumentBasicWithCollectionsView.java deleted file mode 100644 index 79a3ed5c2d..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/model/FullUpdatableDocumentBasicWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.basic.creatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentBasicWithCollectionsView extends UpdatableDocumentBasicWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/model/FullUpdatableDocumentBasicWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/model/FullUpdatableDocumentBasicWithMapsView.java deleted file mode 100644 index b51fd2b0d8..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/model/FullUpdatableDocumentBasicWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.basic.creatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentBasicWithMapsView extends UpdatableDocumentBasicWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/model/LazyUpdatableDocumentBasicView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/model/LazyUpdatableDocumentBasicView.java deleted file mode 100644 index 9263403360..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/model/LazyUpdatableDocumentBasicView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.basic.creatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentBasicView extends UpdatableDocumentBasicView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/model/LazyUpdatableDocumentBasicWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/model/LazyUpdatableDocumentBasicWithCollectionsView.java deleted file mode 100644 index bd4bad0512..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/model/LazyUpdatableDocumentBasicWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.basic.creatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentBasicWithCollectionsView extends UpdatableDocumentBasicWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/model/LazyUpdatableDocumentBasicWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/model/LazyUpdatableDocumentBasicWithMapsView.java deleted file mode 100644 index 901aaad953..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/model/LazyUpdatableDocumentBasicWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.basic.creatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentBasicWithMapsView extends UpdatableDocumentBasicWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/model/PartialUpdatableDocumentBasicView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/model/PartialUpdatableDocumentBasicView.java deleted file mode 100644 index 8988dacdb7..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/model/PartialUpdatableDocumentBasicView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.basic.creatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentBasicView extends UpdatableDocumentBasicView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/model/PartialUpdatableDocumentBasicWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/model/PartialUpdatableDocumentBasicWithCollectionsView.java deleted file mode 100644 index c43909a685..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/model/PartialUpdatableDocumentBasicWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.basic.creatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentBasicWithCollectionsView extends UpdatableDocumentBasicWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/model/PartialUpdatableDocumentBasicWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/model/PartialUpdatableDocumentBasicWithMapsView.java deleted file mode 100644 index 25e19a4fa2..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/model/PartialUpdatableDocumentBasicWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.basic.creatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentBasicWithMapsView extends UpdatableDocumentBasicWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/model/UpdatableDocumentBasicView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/model/UpdatableDocumentBasicView.java index 825c796d17..070efbacc6 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/model/UpdatableDocumentBasicView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/model/UpdatableDocumentBasicView.java @@ -25,7 +25,7 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ public interface UpdatableDocumentBasicView extends UpdatableDocumentBasicViewBase { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/model/UpdatableDocumentBasicWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/model/UpdatableDocumentBasicWithCollectionsView.java index b9b77b0381..49ac48563e 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/model/UpdatableDocumentBasicWithCollectionsView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/model/UpdatableDocumentBasicWithCollectionsView.java @@ -25,7 +25,7 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ public interface UpdatableDocumentBasicWithCollectionsView extends UpdatableDocumentBasicWithCollectionsViewBase { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/model/UpdatableDocumentBasicWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/model/UpdatableDocumentBasicWithMapsView.java index 8059c71ab9..39a16d95ff 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/model/UpdatableDocumentBasicWithMapsView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/creatableonly/model/UpdatableDocumentBasicWithMapsView.java @@ -25,7 +25,7 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ public interface UpdatableDocumentBasicWithMapsView extends UpdatableDocumentBasicWithMapsViewBase { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/model/UpdatableDocumentBasicViewBase.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/model/UpdatableDocumentBasicViewBase.java index e402d3c4a5..b3db1b0e17 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/model/UpdatableDocumentBasicViewBase.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/model/UpdatableDocumentBasicViewBase.java @@ -16,15 +16,20 @@ package com.blazebit.persistence.view.testsuite.update.basic.model; +import com.blazebit.persistence.testsuite.entity.Document; +import com.blazebit.persistence.view.EntityView; import com.blazebit.persistence.view.IdMapping; +import com.blazebit.persistence.view.UpdatableEntityView; import java.util.Date; /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ +@UpdatableEntityView +@EntityView(Document.class) public interface UpdatableDocumentBasicViewBase { @IdMapping("id") diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/model/UpdatableDocumentBasicWithCollectionsViewBase.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/model/UpdatableDocumentBasicWithCollectionsViewBase.java index 2b85e22615..68ba234267 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/model/UpdatableDocumentBasicWithCollectionsViewBase.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/model/UpdatableDocumentBasicWithCollectionsViewBase.java @@ -16,15 +16,20 @@ package com.blazebit.persistence.view.testsuite.update.basic.model; +import com.blazebit.persistence.testsuite.entity.Document; +import com.blazebit.persistence.view.EntityView; import com.blazebit.persistence.view.IdMapping; +import com.blazebit.persistence.view.UpdatableEntityView; import java.util.List; /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ +@UpdatableEntityView +@EntityView(Document.class) public interface UpdatableDocumentBasicWithCollectionsViewBase { @IdMapping("id") diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/model/UpdatableDocumentBasicWithMapsViewBase.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/model/UpdatableDocumentBasicWithMapsViewBase.java index 1aaac05df2..2d549cb6aa 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/model/UpdatableDocumentBasicWithMapsViewBase.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/model/UpdatableDocumentBasicWithMapsViewBase.java @@ -16,16 +16,20 @@ package com.blazebit.persistence.view.testsuite.update.basic.model; +import com.blazebit.persistence.testsuite.entity.Document; +import com.blazebit.persistence.view.EntityView; import com.blazebit.persistence.view.IdMapping; +import com.blazebit.persistence.view.UpdatableEntityView; -import java.util.List; import java.util.Map; /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ +@UpdatableEntityView +@EntityView(Document.class) public interface UpdatableDocumentBasicWithMapsViewBase { @IdMapping("id") diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/EntityViewUpdateMutableBasicCollectionsTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/EntityViewUpdateMutableBasicCollectionsTest.java index a3631e8f68..3abd85d6f4 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/EntityViewUpdateMutableBasicCollectionsTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/EntityViewUpdateMutableBasicCollectionsTest.java @@ -20,50 +20,40 @@ import com.blazebit.persistence.testsuite.base.category.NoDatanucleus; import com.blazebit.persistence.testsuite.base.category.NoEclipselink; import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.testsuite.update.AbstractEntityViewUpdateTest; +import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.testsuite.update.basic.AbstractEntityViewUpdateBasicCollectionsTest; -import com.blazebit.persistence.view.testsuite.update.basic.mutable.model.FullUpdatableDocumentBasicWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.basic.mutable.model.LazyUpdatableDocumentBasicWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.basic.mutable.model.PartialUpdatableDocumentBasicWithCollectionsView; import com.blazebit.persistence.view.testsuite.update.basic.mutable.model.UpdatableDocumentBasicWithCollectionsView; import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; - import static org.junit.Assert.assertEquals; /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ @RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) -public class EntityViewUpdateMutableBasicCollectionsTest extends AbstractEntityViewUpdateBasicCollectionsTest { +public class EntityViewUpdateMutableBasicCollectionsTest extends AbstractEntityViewUpdateBasicCollectionsTest { - public EntityViewUpdateMutableBasicCollectionsTest(Class viewType) { - super(viewType); + public EntityViewUpdateMutableBasicCollectionsTest(FlushMode mode, FlushStrategy strategy) { + super(mode, strategy, UpdatableDocumentBasicWithCollectionsView.class); } - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { LazyUpdatableDocumentBasicWithCollectionsView.class }, - { PartialUpdatableDocumentBasicWithCollectionsView.class }, - { FullUpdatableDocumentBasicWithCollectionsView.class } - }); + @Parameterized.Parameters(name = "{0} - {1}") + public static Object[][] combinations() { + return MODE_STRATEGY_COMBINATIONS; } @Test public void testUpdateReplaceCollection() { // Given - final T docView = updateReplaceCollection(); + final UpdatableDocumentBasicWithCollectionsView docView = updateReplaceCollection(); // Then // Assert that the document and the strings are loaded in full mode. @@ -83,7 +73,7 @@ public void testUpdateReplaceCollection() { @Test public void testUpdateAddToCollection() { // Given - final T docView = updateAddToCollection(); + final UpdatableDocumentBasicWithCollectionsView docView = updateAddToCollection(); // Then // Assert that the document and the strings are loaded, but only a relation insert is done @@ -102,7 +92,7 @@ public void testUpdateAddToCollection() { @Test public void testUpdateAddToNewCollection() { // Given - final T docView = updateAddToNewCollection(); + final UpdatableDocumentBasicWithCollectionsView docView = updateAddToNewCollection(); // Then // In partial mode, only the document is loaded. In full mode, the strings are also loaded @@ -135,6 +125,12 @@ private AssertStatementBuilder assertReplaceAnd(AssertStatementBuilder builder) .and(); } + @Override + protected boolean isQueryStrategy() { + // Collection changes always need to be applied on the entity model, can't do that via a query + return false; + } + @Override protected AssertStatementBuilder fullFetch(AssertStatementBuilder builder) { return builder.assertSelect() @@ -142,4 +138,11 @@ protected AssertStatementBuilder fullFetch(AssertStatementBuilder builder) { .fetching(Document.class, "strings") .and(); } + + @Override + protected AssertStatementBuilder fullUpdate(AssertStatementBuilder builder) { + return builder.assertUpdate() + .forEntity(Document.class) + .and(); + } } diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/EntityViewUpdateMutableBasicMapsTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/EntityViewUpdateMutableBasicMapsTest.java index 15d1e69164..fb6ca09ad2 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/EntityViewUpdateMutableBasicMapsTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/EntityViewUpdateMutableBasicMapsTest.java @@ -20,53 +20,40 @@ import com.blazebit.persistence.testsuite.base.category.NoDatanucleus; import com.blazebit.persistence.testsuite.base.category.NoEclipselink; import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.testsuite.update.basic.AbstractEntityViewUpdateBasicCollectionsTest; +import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.testsuite.update.basic.AbstractEntityViewUpdateBasicMapsTest; -import com.blazebit.persistence.view.testsuite.update.basic.mutable.model.FullUpdatableDocumentBasicWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.basic.mutable.model.FullUpdatableDocumentBasicWithMapsView; -import com.blazebit.persistence.view.testsuite.update.basic.mutable.model.LazyUpdatableDocumentBasicWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.basic.mutable.model.LazyUpdatableDocumentBasicWithMapsView; -import com.blazebit.persistence.view.testsuite.update.basic.mutable.model.PartialUpdatableDocumentBasicWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.basic.mutable.model.PartialUpdatableDocumentBasicWithMapsView; -import com.blazebit.persistence.view.testsuite.update.basic.mutable.model.UpdatableDocumentBasicWithCollectionsView; import com.blazebit.persistence.view.testsuite.update.basic.mutable.model.UpdatableDocumentBasicWithMapsView; import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; -import java.util.Arrays; -import java.util.Collection; - import static org.junit.Assert.assertEquals; /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ @RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) -public class EntityViewUpdateMutableBasicMapsTest extends AbstractEntityViewUpdateBasicMapsTest { +public class EntityViewUpdateMutableBasicMapsTest extends AbstractEntityViewUpdateBasicMapsTest { - public EntityViewUpdateMutableBasicMapsTest(Class viewType) { - super(viewType); + public EntityViewUpdateMutableBasicMapsTest(FlushMode mode, FlushStrategy strategy) { + super(mode, strategy, UpdatableDocumentBasicWithMapsView.class); } - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { LazyUpdatableDocumentBasicWithMapsView.class }, - { PartialUpdatableDocumentBasicWithMapsView.class }, - { FullUpdatableDocumentBasicWithMapsView.class } - }); + @Parameterized.Parameters(name = "{0} - {1}") + public static Object[][] combinations() { + return MODE_STRATEGY_COMBINATIONS; } @Test public void testUpdateReplaceCollection() { // Given - final T docView = updateReplaceCollection(); + final UpdatableDocumentBasicWithMapsView docView = updateReplaceCollection(); // Then // Assert that the document and the strings are loaded in full mode. @@ -86,7 +73,7 @@ public void testUpdateReplaceCollection() { @Test public void testUpdateAddToCollection() { // Given - final T docView = updateAddToCollection(); + final UpdatableDocumentBasicWithMapsView docView = updateAddToCollection(); // Then // Assert that the document and the strings are loaded, but only a relation insert is done @@ -105,7 +92,7 @@ public void testUpdateAddToCollection() { @Test public void testUpdateAddToNewCollection() { // Given - final T docView = updateAddToNewCollection(); + final UpdatableDocumentBasicWithMapsView docView = updateAddToNewCollection(); // Then // In partial mode, only the document is loaded. In full mode, the strings are also loaded @@ -138,6 +125,12 @@ private AssertStatementBuilder assertReplaceAnd(AssertStatementBuilder builder) .and(); } + @Override + protected boolean isQueryStrategy() { + // Collection changes always need to be applied on the entity model, can't do that via a query + return false; + } + @Override protected AssertStatementBuilder fullFetch(AssertStatementBuilder builder) { return builder.assertSelect() @@ -145,4 +138,11 @@ protected AssertStatementBuilder fullFetch(AssertStatementBuilder builder) { .fetching(Document.class, "stringMap") .and(); } + + @Override + protected AssertStatementBuilder fullUpdate(AssertStatementBuilder builder) { + return builder.assertUpdate() + .forEntity(Document.class) + .and(); + } } diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/EntityViewUpdateMutableBasicTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/EntityViewUpdateMutableBasicTest.java index ac38868e1a..49fafa41eb 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/EntityViewUpdateMutableBasicTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/EntityViewUpdateMutableBasicTest.java @@ -20,50 +20,40 @@ import com.blazebit.persistence.testsuite.base.category.NoDatanucleus; import com.blazebit.persistence.testsuite.base.category.NoEclipselink; import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.testsuite.update.AbstractEntityViewUpdateTest; +import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.testsuite.update.basic.AbstractEntityViewUpdateBasicTest; -import com.blazebit.persistence.view.testsuite.update.basic.mutable.model.FullUpdatableDocumentBasicView; -import com.blazebit.persistence.view.testsuite.update.basic.mutable.model.LazyUpdatableDocumentBasicView; -import com.blazebit.persistence.view.testsuite.update.basic.mutable.model.PartialUpdatableDocumentBasicView; import com.blazebit.persistence.view.testsuite.update.basic.mutable.model.UpdatableDocumentBasicView; import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; -import java.util.Arrays; -import java.util.Collection; -import java.util.Date; - import static org.junit.Assert.assertEquals; /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ @RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) -public class EntityViewUpdateMutableBasicTest extends AbstractEntityViewUpdateBasicTest { +public class EntityViewUpdateMutableBasicTest extends AbstractEntityViewUpdateBasicTest { - public EntityViewUpdateMutableBasicTest(Class viewType) { - super(viewType); + public EntityViewUpdateMutableBasicTest(FlushMode mode, FlushStrategy strategy) { + super(mode, strategy, UpdatableDocumentBasicView.class); } - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { LazyUpdatableDocumentBasicView.class }, - { PartialUpdatableDocumentBasicView.class }, - { FullUpdatableDocumentBasicView.class } - }); + @Parameterized.Parameters(name = "{0} - {1}") + public static Object[][] combinations() { + return MODE_STRATEGY_COMBINATIONS; } @Test public void testSimpleUpdate() { // Given & When - final T docView = simpleUpdate(); + final UpdatableDocumentBasicView docView = simpleUpdate(); // Then fullFetchUpdateAndReload(docView); @@ -74,7 +64,7 @@ public void testSimpleUpdate() { @Test public void testUpdateMutable() { // Given & When - final T docView = updateMutable(); + final UpdatableDocumentBasicView docView = updateMutable(); // Then fullFetchUpdateAndReload(docView); @@ -84,18 +74,20 @@ public void testUpdateMutable() { @Test public void testMutateMutable() { // Given & When - final T docView = mutateMutable(); + final UpdatableDocumentBasicView docView = mutateMutable(); // Then fullFetchUpdateAndReload(docView); assertEquals(0, doc1.getLastModified().getTime()); } - private void fullFetchUpdateAndReload(T docView) { + private void fullFetchUpdateAndReload(UpdatableDocumentBasicView docView) { // Assert that not only the document is loaded and finally also updated AssertStatementBuilder builder = assertQuerySequence(); - fullFetch(builder); + if (!isQueryStrategy()) { + fullFetch(builder); + } builder.update(Document.class) .validate(); @@ -109,4 +101,12 @@ protected AssertStatementBuilder fullFetch(AssertStatementBuilder builder) { .fetching(Document.class) .and(); } + + @Override + protected AssertStatementBuilder fullUpdate(AssertStatementBuilder builder) { + return builder.assertUpdate() + .forEntity(Document.class) + .and(); + } + } diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/model/FullUpdatableDocumentBasicView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/model/FullUpdatableDocumentBasicView.java deleted file mode 100644 index d45c0c62e9..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/model/FullUpdatableDocumentBasicView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.basic.mutable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentBasicView extends UpdatableDocumentBasicView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/model/FullUpdatableDocumentBasicWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/model/FullUpdatableDocumentBasicWithCollectionsView.java deleted file mode 100644 index dc0873fb6d..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/model/FullUpdatableDocumentBasicWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.basic.mutable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentBasicWithCollectionsView extends UpdatableDocumentBasicWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/model/FullUpdatableDocumentBasicWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/model/FullUpdatableDocumentBasicWithMapsView.java deleted file mode 100644 index 1d476902b3..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/model/FullUpdatableDocumentBasicWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.basic.mutable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentBasicWithMapsView extends UpdatableDocumentBasicWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/model/LazyUpdatableDocumentBasicView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/model/LazyUpdatableDocumentBasicView.java deleted file mode 100644 index 2dba1223e4..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/model/LazyUpdatableDocumentBasicView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.basic.mutable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentBasicView extends UpdatableDocumentBasicView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/model/LazyUpdatableDocumentBasicWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/model/LazyUpdatableDocumentBasicWithCollectionsView.java deleted file mode 100644 index 8d1fd1ff9b..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/model/LazyUpdatableDocumentBasicWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.basic.mutable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentBasicWithCollectionsView extends UpdatableDocumentBasicWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/model/LazyUpdatableDocumentBasicWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/model/LazyUpdatableDocumentBasicWithMapsView.java deleted file mode 100644 index 792499f691..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/model/LazyUpdatableDocumentBasicWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.basic.mutable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentBasicWithMapsView extends UpdatableDocumentBasicWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/model/PartialUpdatableDocumentBasicView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/model/PartialUpdatableDocumentBasicView.java deleted file mode 100644 index 0bf4469ecf..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/model/PartialUpdatableDocumentBasicView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.basic.mutable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentBasicView extends UpdatableDocumentBasicView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/model/PartialUpdatableDocumentBasicWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/model/PartialUpdatableDocumentBasicWithCollectionsView.java deleted file mode 100644 index 86da031627..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/model/PartialUpdatableDocumentBasicWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.basic.mutable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentBasicWithCollectionsView extends UpdatableDocumentBasicWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/model/PartialUpdatableDocumentBasicWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/model/PartialUpdatableDocumentBasicWithMapsView.java deleted file mode 100644 index 11e7262eca..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/model/PartialUpdatableDocumentBasicWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.basic.mutable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentBasicWithMapsView extends UpdatableDocumentBasicWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/model/UpdatableDocumentBasicView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/model/UpdatableDocumentBasicView.java index 775eab54ab..bbf594dc56 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/model/UpdatableDocumentBasicView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/model/UpdatableDocumentBasicView.java @@ -25,7 +25,7 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ public interface UpdatableDocumentBasicView extends UpdatableDocumentBasicViewBase { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/model/UpdatableDocumentBasicWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/model/UpdatableDocumentBasicWithCollectionsView.java index 6643476d99..565fc35094 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/model/UpdatableDocumentBasicWithCollectionsView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/model/UpdatableDocumentBasicWithCollectionsView.java @@ -25,7 +25,7 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ public interface UpdatableDocumentBasicWithCollectionsView extends UpdatableDocumentBasicWithCollectionsViewBase { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/model/UpdatableDocumentBasicWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/model/UpdatableDocumentBasicWithMapsView.java index e1c73d6be4..53bd3248f0 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/model/UpdatableDocumentBasicWithMapsView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutable/model/UpdatableDocumentBasicWithMapsView.java @@ -18,16 +18,14 @@ import com.blazebit.persistence.view.CascadeType; import com.blazebit.persistence.view.UpdatableMapping; -import com.blazebit.persistence.view.testsuite.update.basic.model.UpdatableDocumentBasicWithCollectionsViewBase; import com.blazebit.persistence.view.testsuite.update.basic.model.UpdatableDocumentBasicWithMapsViewBase; -import java.util.List; import java.util.Map; /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ public interface UpdatableDocumentBasicWithMapsView extends UpdatableDocumentBasicWithMapsViewBase { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/EntityViewUpdateMutableOnlyBasicCollectionsTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/EntityViewUpdateMutableOnlyBasicCollectionsTest.java index d82da3d0c2..5fc1972718 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/EntityViewUpdateMutableOnlyBasicCollectionsTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/EntityViewUpdateMutableOnlyBasicCollectionsTest.java @@ -21,16 +21,9 @@ import com.blazebit.persistence.view.EntityViews; import com.blazebit.persistence.view.spi.EntityViewConfiguration; import com.blazebit.persistence.view.testsuite.AbstractEntityViewTest; -import com.blazebit.persistence.view.testsuite.update.basic.mutableonly.model.FullUpdatableDocumentBasicWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.basic.mutableonly.model.LazyUpdatableDocumentBasicWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.basic.mutableonly.model.PartialUpdatableDocumentBasicWithCollectionsView; +import com.blazebit.persistence.view.testsuite.update.basic.mutableonly.model.UpdatableDocumentBasicWithCollectionsView; import org.junit.Test; import org.junit.experimental.categories.Category; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; - -import java.util.Arrays; -import java.util.Collection; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; @@ -38,32 +31,16 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ -@RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) public class EntityViewUpdateMutableOnlyBasicCollectionsTest extends AbstractEntityViewTest { - protected Class viewType; - - public EntityViewUpdateMutableOnlyBasicCollectionsTest(Class viewType) { - this.viewType = viewType; - } - - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { LazyUpdatableDocumentBasicWithCollectionsView.class }, - { PartialUpdatableDocumentBasicWithCollectionsView.class }, - { FullUpdatableDocumentBasicWithCollectionsView.class } - }); - } - @Test public void testValidateInvalidConfiguration() { EntityViewConfiguration cfg = EntityViews.createDefaultConfiguration(); - cfg.addEntityView(viewType); + cfg.addEntityView(UpdatableDocumentBasicWithCollectionsView.class); try { evm = cfg.createEntityViewManager(cbf); fail("Expected failure because of invalid attribute definition!"); diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/EntityViewUpdateMutableOnlyBasicMapsTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/EntityViewUpdateMutableOnlyBasicMapsTest.java index 96f3579dc9..e47ac6de4a 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/EntityViewUpdateMutableOnlyBasicMapsTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/EntityViewUpdateMutableOnlyBasicMapsTest.java @@ -21,16 +21,9 @@ import com.blazebit.persistence.view.EntityViews; import com.blazebit.persistence.view.spi.EntityViewConfiguration; import com.blazebit.persistence.view.testsuite.AbstractEntityViewTest; -import com.blazebit.persistence.view.testsuite.update.basic.mutableonly.model.FullUpdatableDocumentBasicWithMapsView; -import com.blazebit.persistence.view.testsuite.update.basic.mutableonly.model.LazyUpdatableDocumentBasicWithMapsView; -import com.blazebit.persistence.view.testsuite.update.basic.mutableonly.model.PartialUpdatableDocumentBasicWithMapsView; +import com.blazebit.persistence.view.testsuite.update.basic.mutableonly.model.UpdatableDocumentBasicWithMapsView; import org.junit.Test; import org.junit.experimental.categories.Category; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; - -import java.util.Arrays; -import java.util.Collection; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; @@ -38,32 +31,16 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ -@RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) public class EntityViewUpdateMutableOnlyBasicMapsTest extends AbstractEntityViewTest { - protected Class viewType; - - public EntityViewUpdateMutableOnlyBasicMapsTest(Class viewType) { - this.viewType = viewType; - } - - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { LazyUpdatableDocumentBasicWithMapsView.class }, - { PartialUpdatableDocumentBasicWithMapsView.class }, - { FullUpdatableDocumentBasicWithMapsView.class } - }); - } - @Test public void testValidateInvalidConfiguration() { EntityViewConfiguration cfg = EntityViews.createDefaultConfiguration(); - cfg.addEntityView(viewType); + cfg.addEntityView(UpdatableDocumentBasicWithMapsView.class); try { evm = cfg.createEntityViewManager(cbf); fail("Expected failure because of invalid attribute definition!"); diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/EntityViewUpdateMutableOnlyBasicTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/EntityViewUpdateMutableOnlyBasicTest.java index d92480d229..b0cf096f76 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/EntityViewUpdateMutableOnlyBasicTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/EntityViewUpdateMutableOnlyBasicTest.java @@ -21,16 +21,9 @@ import com.blazebit.persistence.view.EntityViews; import com.blazebit.persistence.view.spi.EntityViewConfiguration; import com.blazebit.persistence.view.testsuite.AbstractEntityViewTest; -import com.blazebit.persistence.view.testsuite.update.basic.mutableonly.model.FullUpdatableDocumentBasicView; -import com.blazebit.persistence.view.testsuite.update.basic.mutableonly.model.LazyUpdatableDocumentBasicView; -import com.blazebit.persistence.view.testsuite.update.basic.mutableonly.model.PartialUpdatableDocumentBasicView; +import com.blazebit.persistence.view.testsuite.update.basic.mutableonly.model.UpdatableDocumentBasicView; import org.junit.Test; import org.junit.experimental.categories.Category; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; - -import java.util.Arrays; -import java.util.Collection; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; @@ -38,32 +31,16 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ -@RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) public class EntityViewUpdateMutableOnlyBasicTest extends AbstractEntityViewTest { - protected Class viewType; - - public EntityViewUpdateMutableOnlyBasicTest(Class viewType) { - this.viewType = viewType; - } - - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { LazyUpdatableDocumentBasicView.class }, - { PartialUpdatableDocumentBasicView.class }, - { FullUpdatableDocumentBasicView.class } - }); - } - @Test public void testValidateInvalidConfiguration() { EntityViewConfiguration cfg = EntityViews.createDefaultConfiguration(); - cfg.addEntityView(viewType); + cfg.addEntityView(UpdatableDocumentBasicView.class); try { evm = cfg.createEntityViewManager(cbf); fail("Expected failure because of invalid attribute definition!"); diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/model/FullUpdatableDocumentBasicView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/model/FullUpdatableDocumentBasicView.java deleted file mode 100644 index e187ef44a3..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/model/FullUpdatableDocumentBasicView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.basic.mutableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentBasicView extends UpdatableDocumentBasicView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/model/FullUpdatableDocumentBasicWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/model/FullUpdatableDocumentBasicWithCollectionsView.java deleted file mode 100644 index 23e1f5b6be..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/model/FullUpdatableDocumentBasicWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.basic.mutableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentBasicWithCollectionsView extends UpdatableDocumentBasicWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/model/FullUpdatableDocumentBasicWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/model/FullUpdatableDocumentBasicWithMapsView.java deleted file mode 100644 index eb265c8edb..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/model/FullUpdatableDocumentBasicWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.basic.mutableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentBasicWithMapsView extends UpdatableDocumentBasicWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/model/LazyUpdatableDocumentBasicView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/model/LazyUpdatableDocumentBasicView.java deleted file mode 100644 index 4491e9019a..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/model/LazyUpdatableDocumentBasicView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.basic.mutableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentBasicView extends UpdatableDocumentBasicView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/model/LazyUpdatableDocumentBasicWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/model/LazyUpdatableDocumentBasicWithCollectionsView.java deleted file mode 100644 index fb549180d2..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/model/LazyUpdatableDocumentBasicWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.basic.mutableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentBasicWithCollectionsView extends UpdatableDocumentBasicWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/model/LazyUpdatableDocumentBasicWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/model/LazyUpdatableDocumentBasicWithMapsView.java deleted file mode 100644 index 677ea20821..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/model/LazyUpdatableDocumentBasicWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.basic.mutableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentBasicWithMapsView extends UpdatableDocumentBasicWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/model/PartialUpdatableDocumentBasicView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/model/PartialUpdatableDocumentBasicView.java deleted file mode 100644 index 829648efa1..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/model/PartialUpdatableDocumentBasicView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.basic.mutableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentBasicView extends UpdatableDocumentBasicView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/model/PartialUpdatableDocumentBasicWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/model/PartialUpdatableDocumentBasicWithCollectionsView.java deleted file mode 100644 index c9bfc82dc1..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/model/PartialUpdatableDocumentBasicWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.basic.mutableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentBasicWithCollectionsView extends UpdatableDocumentBasicWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/model/PartialUpdatableDocumentBasicWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/model/PartialUpdatableDocumentBasicWithMapsView.java deleted file mode 100644 index 488e7e82c1..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/model/PartialUpdatableDocumentBasicWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.basic.mutableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentBasicWithMapsView extends UpdatableDocumentBasicWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/model/UpdatableDocumentBasicView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/model/UpdatableDocumentBasicView.java index 4f86bf142c..112bc0455c 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/model/UpdatableDocumentBasicView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/model/UpdatableDocumentBasicView.java @@ -25,7 +25,7 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ public interface UpdatableDocumentBasicView extends UpdatableDocumentBasicViewBase { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/model/UpdatableDocumentBasicWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/model/UpdatableDocumentBasicWithCollectionsView.java index 84e94250fd..0a789c5f94 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/model/UpdatableDocumentBasicWithCollectionsView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/model/UpdatableDocumentBasicWithCollectionsView.java @@ -25,7 +25,7 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ public interface UpdatableDocumentBasicWithCollectionsView extends UpdatableDocumentBasicWithCollectionsViewBase { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/model/UpdatableDocumentBasicWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/model/UpdatableDocumentBasicWithMapsView.java index a8f1243c00..27c15bdb1c 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/model/UpdatableDocumentBasicWithMapsView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/mutableonly/model/UpdatableDocumentBasicWithMapsView.java @@ -25,7 +25,7 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ public interface UpdatableDocumentBasicWithMapsView extends UpdatableDocumentBasicWithMapsViewBase { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/EntityViewUpdateUpdatableOnlyBasicCollectionsTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/EntityViewUpdateUpdatableOnlyBasicCollectionsTest.java index 64f6cfe330..cf411955cc 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/EntityViewUpdateUpdatableOnlyBasicCollectionsTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/EntityViewUpdateUpdatableOnlyBasicCollectionsTest.java @@ -21,16 +21,9 @@ import com.blazebit.persistence.view.EntityViews; import com.blazebit.persistence.view.spi.EntityViewConfiguration; import com.blazebit.persistence.view.testsuite.AbstractEntityViewTest; -import com.blazebit.persistence.view.testsuite.update.basic.updatableonly.model.FullUpdatableDocumentBasicWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.basic.updatableonly.model.LazyUpdatableDocumentBasicWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.basic.updatableonly.model.PartialUpdatableDocumentBasicWithCollectionsView; +import com.blazebit.persistence.view.testsuite.update.basic.updatableonly.model.UpdatableDocumentBasicWithCollectionsView; import org.junit.Test; import org.junit.experimental.categories.Category; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; - -import java.util.Arrays; -import java.util.Collection; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; @@ -38,32 +31,16 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ -@RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) public class EntityViewUpdateUpdatableOnlyBasicCollectionsTest extends AbstractEntityViewTest { - protected Class viewType; - - public EntityViewUpdateUpdatableOnlyBasicCollectionsTest(Class viewType) { - this.viewType = viewType; - } - - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { LazyUpdatableDocumentBasicWithCollectionsView.class }, - { PartialUpdatableDocumentBasicWithCollectionsView.class }, - { FullUpdatableDocumentBasicWithCollectionsView.class } - }); - } - @Test public void testValidateInvalidConfiguration() { EntityViewConfiguration cfg = EntityViews.createDefaultConfiguration(); - cfg.addEntityView(viewType); + cfg.addEntityView(UpdatableDocumentBasicWithCollectionsView.class); try { evm = cfg.createEntityViewManager(cbf); fail("Expected failure because of invalid attribute definition!"); diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/EntityViewUpdateUpdatableOnlyBasicMapsTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/EntityViewUpdateUpdatableOnlyBasicMapsTest.java index f6b664e446..564a3d2590 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/EntityViewUpdateUpdatableOnlyBasicMapsTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/EntityViewUpdateUpdatableOnlyBasicMapsTest.java @@ -21,16 +21,9 @@ import com.blazebit.persistence.view.EntityViews; import com.blazebit.persistence.view.spi.EntityViewConfiguration; import com.blazebit.persistence.view.testsuite.AbstractEntityViewTest; -import com.blazebit.persistence.view.testsuite.update.basic.updatableonly.model.FullUpdatableDocumentBasicWithMapsView; -import com.blazebit.persistence.view.testsuite.update.basic.updatableonly.model.LazyUpdatableDocumentBasicWithMapsView; -import com.blazebit.persistence.view.testsuite.update.basic.updatableonly.model.PartialUpdatableDocumentBasicWithMapsView; +import com.blazebit.persistence.view.testsuite.update.basic.updatableonly.model.UpdatableDocumentBasicWithMapsView; import org.junit.Test; import org.junit.experimental.categories.Category; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; - -import java.util.Arrays; -import java.util.Collection; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; @@ -38,32 +31,16 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ -@RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) public class EntityViewUpdateUpdatableOnlyBasicMapsTest extends AbstractEntityViewTest { - protected Class viewType; - - public EntityViewUpdateUpdatableOnlyBasicMapsTest(Class viewType) { - this.viewType = viewType; - } - - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { LazyUpdatableDocumentBasicWithMapsView.class }, - { PartialUpdatableDocumentBasicWithMapsView.class }, - { FullUpdatableDocumentBasicWithMapsView.class } - }); - } - @Test public void testValidateInvalidConfiguration() { EntityViewConfiguration cfg = EntityViews.createDefaultConfiguration(); - cfg.addEntityView(viewType); + cfg.addEntityView(UpdatableDocumentBasicWithMapsView.class); try { evm = cfg.createEntityViewManager(cbf); fail("Expected failure because of invalid attribute definition!"); diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/EntityViewUpdateUpdatableOnlyBasicTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/EntityViewUpdateUpdatableOnlyBasicTest.java index b7b61c39d4..16a42cdca6 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/EntityViewUpdateUpdatableOnlyBasicTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/EntityViewUpdateUpdatableOnlyBasicTest.java @@ -21,16 +21,9 @@ import com.blazebit.persistence.view.EntityViews; import com.blazebit.persistence.view.spi.EntityViewConfiguration; import com.blazebit.persistence.view.testsuite.AbstractEntityViewTest; -import com.blazebit.persistence.view.testsuite.update.basic.updatableonly.model.FullUpdatableDocumentBasicView; -import com.blazebit.persistence.view.testsuite.update.basic.updatableonly.model.LazyUpdatableDocumentBasicView; -import com.blazebit.persistence.view.testsuite.update.basic.updatableonly.model.PartialUpdatableDocumentBasicView; +import com.blazebit.persistence.view.testsuite.update.basic.updatableonly.model.UpdatableDocumentBasicView; import org.junit.Test; import org.junit.experimental.categories.Category; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; - -import java.util.Arrays; -import java.util.Collection; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; @@ -38,32 +31,16 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.12.0 */ -@RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) public class EntityViewUpdateUpdatableOnlyBasicTest extends AbstractEntityViewTest { - protected Class viewType; - - public EntityViewUpdateUpdatableOnlyBasicTest(Class viewType) { - this.viewType = viewType; - } - - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { LazyUpdatableDocumentBasicView.class }, - { PartialUpdatableDocumentBasicView.class }, - { FullUpdatableDocumentBasicView.class } - }); - } - @Test public void testValidateInvalidConfiguration() { EntityViewConfiguration cfg = EntityViews.createDefaultConfiguration(); - cfg.addEntityView(viewType); + cfg.addEntityView(UpdatableDocumentBasicView.class); try { evm = cfg.createEntityViewManager(cbf); fail("Expected failure because of invalid attribute definition!"); diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/model/FullUpdatableDocumentBasicView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/model/FullUpdatableDocumentBasicView.java deleted file mode 100644 index 15c07fe9c6..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/model/FullUpdatableDocumentBasicView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.basic.updatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentBasicView extends UpdatableDocumentBasicView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/model/FullUpdatableDocumentBasicWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/model/FullUpdatableDocumentBasicWithCollectionsView.java deleted file mode 100644 index 376c73f088..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/model/FullUpdatableDocumentBasicWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.basic.updatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentBasicWithCollectionsView extends UpdatableDocumentBasicWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/model/FullUpdatableDocumentBasicWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/model/FullUpdatableDocumentBasicWithMapsView.java deleted file mode 100644 index 7886be9381..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/model/FullUpdatableDocumentBasicWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.basic.updatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentBasicWithMapsView extends UpdatableDocumentBasicWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/model/LazyUpdatableDocumentBasicView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/model/LazyUpdatableDocumentBasicView.java deleted file mode 100644 index dfc1b4c848..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/model/LazyUpdatableDocumentBasicView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.basic.updatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentBasicView extends UpdatableDocumentBasicView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/model/LazyUpdatableDocumentBasicWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/model/LazyUpdatableDocumentBasicWithCollectionsView.java deleted file mode 100644 index b35f381d53..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/model/LazyUpdatableDocumentBasicWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.basic.updatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentBasicWithCollectionsView extends UpdatableDocumentBasicWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/model/LazyUpdatableDocumentBasicWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/model/LazyUpdatableDocumentBasicWithMapsView.java deleted file mode 100644 index 00d4b45abd..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/model/LazyUpdatableDocumentBasicWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.basic.updatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentBasicWithMapsView extends UpdatableDocumentBasicWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/model/PartialUpdatableDocumentBasicView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/model/PartialUpdatableDocumentBasicView.java deleted file mode 100644 index d3bcd4ad01..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/model/PartialUpdatableDocumentBasicView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.basic.updatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentBasicView extends UpdatableDocumentBasicView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/model/PartialUpdatableDocumentBasicWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/model/PartialUpdatableDocumentBasicWithCollectionsView.java deleted file mode 100644 index 0fda5f5988..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/model/PartialUpdatableDocumentBasicWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.basic.updatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentBasicWithCollectionsView extends UpdatableDocumentBasicWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/model/PartialUpdatableDocumentBasicWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/model/PartialUpdatableDocumentBasicWithMapsView.java deleted file mode 100644 index 45bf58d4b7..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/model/PartialUpdatableDocumentBasicWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.basic.updatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentBasicWithMapsView extends UpdatableDocumentBasicWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/model/UpdatableDocumentBasicView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/model/UpdatableDocumentBasicView.java index f362a10c62..de4fe28e0c 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/model/UpdatableDocumentBasicView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/model/UpdatableDocumentBasicView.java @@ -24,7 +24,7 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ public interface UpdatableDocumentBasicView extends UpdatableDocumentBasicViewBase { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/model/UpdatableDocumentBasicWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/model/UpdatableDocumentBasicWithCollectionsView.java index ac25dd47d0..7d9e933a40 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/model/UpdatableDocumentBasicWithCollectionsView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/model/UpdatableDocumentBasicWithCollectionsView.java @@ -24,7 +24,7 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ public interface UpdatableDocumentBasicWithCollectionsView extends UpdatableDocumentBasicWithCollectionsViewBase { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/model/UpdatableDocumentBasicWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/model/UpdatableDocumentBasicWithMapsView.java index ee4f22edc3..08843515dc 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/model/UpdatableDocumentBasicWithMapsView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/basic/updatableonly/model/UpdatableDocumentBasicWithMapsView.java @@ -16,7 +16,6 @@ package com.blazebit.persistence.view.testsuite.update.basic.updatableonly.model; -import com.blazebit.persistence.view.CascadeType; import com.blazebit.persistence.view.UpdatableMapping; import com.blazebit.persistence.view.testsuite.update.basic.model.UpdatableDocumentBasicWithMapsViewBase; @@ -25,7 +24,7 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ public interface UpdatableDocumentBasicWithMapsView extends UpdatableDocumentBasicWithMapsViewBase { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/AbstractEntityViewUpdateEmbeddableCollectionsTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/AbstractEntityViewUpdateEmbeddableCollectionsTest.java index aae772e2bd..1d2ebf8927 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/AbstractEntityViewUpdateEmbeddableCollectionsTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/AbstractEntityViewUpdateEmbeddableCollectionsTest.java @@ -19,6 +19,8 @@ import com.blazebit.persistence.testsuite.base.category.NoDatanucleus; import com.blazebit.persistence.testsuite.base.category.NoEclipselink; import com.blazebit.persistence.testsuite.entity.NameObject; +import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.testsuite.update.AbstractEntityViewUpdateTest; import com.blazebit.persistence.view.testsuite.update.embeddable.model.UpdatableDocumentEmbeddableWithCollectionsViewBase; import org.junit.experimental.categories.Category; @@ -30,15 +32,15 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ @RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) public abstract class AbstractEntityViewUpdateEmbeddableCollectionsTest extends AbstractEntityViewUpdateTest { - public AbstractEntityViewUpdateEmbeddableCollectionsTest(Class viewType) { - super(viewType); + public AbstractEntityViewUpdateEmbeddableCollectionsTest(FlushMode mode, FlushStrategy strategy, Class viewType) { + super(mode, strategy, viewType); } public T updateReplaceCollection() { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/AbstractEntityViewUpdateEmbeddableMapsTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/AbstractEntityViewUpdateEmbeddableMapsTest.java index 2dd475613c..ca251d9be4 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/AbstractEntityViewUpdateEmbeddableMapsTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/AbstractEntityViewUpdateEmbeddableMapsTest.java @@ -19,28 +19,28 @@ import com.blazebit.persistence.testsuite.base.category.NoDatanucleus; import com.blazebit.persistence.testsuite.base.category.NoEclipselink; import com.blazebit.persistence.testsuite.entity.NameObject; +import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.testsuite.update.AbstractEntityViewUpdateTest; -import com.blazebit.persistence.view.testsuite.update.embeddable.model.UpdatableDocumentEmbeddableWithCollectionsViewBase; import com.blazebit.persistence.view.testsuite.update.embeddable.model.UpdatableDocumentEmbeddableWithMapsViewBase; import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; -import java.util.ArrayList; import java.util.HashMap; /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ @RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) public abstract class AbstractEntityViewUpdateEmbeddableMapsTest extends AbstractEntityViewUpdateTest { - public AbstractEntityViewUpdateEmbeddableMapsTest(Class viewType) { - super(viewType); + public AbstractEntityViewUpdateEmbeddableMapsTest(FlushMode mode, FlushStrategy strategy, Class viewType) { + super(mode, strategy, viewType); } public T updateReplaceCollection() { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/AbstractEntityViewUpdateEmbeddableTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/AbstractEntityViewUpdateEmbeddableTest.java index ea5a34a396..cd34fed901 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/AbstractEntityViewUpdateEmbeddableTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/AbstractEntityViewUpdateEmbeddableTest.java @@ -19,26 +19,26 @@ import com.blazebit.persistence.testsuite.base.category.NoDatanucleus; import com.blazebit.persistence.testsuite.base.category.NoEclipselink; import com.blazebit.persistence.testsuite.entity.NameObject; +import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.testsuite.update.AbstractEntityViewUpdateTest; import com.blazebit.persistence.view.testsuite.update.embeddable.model.UpdatableDocumentEmbeddableViewBase; import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; -import java.util.Date; - /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ @RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) public abstract class AbstractEntityViewUpdateEmbeddableTest extends AbstractEntityViewUpdateTest { - public AbstractEntityViewUpdateEmbeddableTest(Class viewType) { - super(viewType); + public AbstractEntityViewUpdateEmbeddableTest(FlushMode mode, FlushStrategy strategy, Class viewType) { + super(mode, strategy, viewType); } public T simpleUpdate() { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/EntityViewUpdateCreatableEmbeddableCollectionsTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/EntityViewUpdateCreatableEmbeddableCollectionsTest.java index ed57beccd4..f066facfbf 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/EntityViewUpdateCreatableEmbeddableCollectionsTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/EntityViewUpdateCreatableEmbeddableCollectionsTest.java @@ -21,16 +21,9 @@ import com.blazebit.persistence.view.EntityViews; import com.blazebit.persistence.view.spi.EntityViewConfiguration; import com.blazebit.persistence.view.testsuite.AbstractEntityViewTest; -import com.blazebit.persistence.view.testsuite.update.embeddable.creatable.model.FullUpdatableDocumentEmbeddableWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.embeddable.creatable.model.LazyUpdatableDocumentEmbeddableWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.embeddable.creatable.model.PartialUpdatableDocumentEmbeddableWithCollectionsView; +import com.blazebit.persistence.view.testsuite.update.embeddable.creatable.model.UpdatableDocumentEmbeddableWithCollectionsView; import org.junit.Test; import org.junit.experimental.categories.Category; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; - -import java.util.Arrays; -import java.util.Collection; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; @@ -40,30 +33,14 @@ * @author Christian Beikov * @since 1.2.0 */ -@RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) public class EntityViewUpdateCreatableEmbeddableCollectionsTest extends AbstractEntityViewTest { - protected Class viewType; - - public EntityViewUpdateCreatableEmbeddableCollectionsTest(Class viewType) { - this.viewType = viewType; - } - - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { LazyUpdatableDocumentEmbeddableWithCollectionsView.class }, - { PartialUpdatableDocumentEmbeddableWithCollectionsView.class }, - { FullUpdatableDocumentEmbeddableWithCollectionsView.class } - }); - } - @Test public void testValidateInvalidConfiguration() { EntityViewConfiguration cfg = EntityViews.createDefaultConfiguration(); - cfg.addEntityView(viewType); + cfg.addEntityView(UpdatableDocumentEmbeddableWithCollectionsView.class); try { evm = cfg.createEntityViewManager(cbf); fail("Expected failure because of invalid attribute definition!"); diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/EntityViewUpdateCreatableEmbeddableMapsTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/EntityViewUpdateCreatableEmbeddableMapsTest.java index e2a0be36ae..a756a5a377 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/EntityViewUpdateCreatableEmbeddableMapsTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/EntityViewUpdateCreatableEmbeddableMapsTest.java @@ -21,16 +21,9 @@ import com.blazebit.persistence.view.EntityViews; import com.blazebit.persistence.view.spi.EntityViewConfiguration; import com.blazebit.persistence.view.testsuite.AbstractEntityViewTest; -import com.blazebit.persistence.view.testsuite.update.embeddable.creatable.model.FullUpdatableDocumentEmbeddableWithMapsView; -import com.blazebit.persistence.view.testsuite.update.embeddable.creatable.model.LazyUpdatableDocumentEmbeddableWithMapsView; -import com.blazebit.persistence.view.testsuite.update.embeddable.creatable.model.PartialUpdatableDocumentEmbeddableWithMapsView; +import com.blazebit.persistence.view.testsuite.update.embeddable.creatable.model.UpdatableDocumentEmbeddableWithMapsView; import org.junit.Test; import org.junit.experimental.categories.Category; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; - -import java.util.Arrays; -import java.util.Collection; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; @@ -40,30 +33,14 @@ * @author Christian Beikov * @since 1.2.0 */ -@RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) public class EntityViewUpdateCreatableEmbeddableMapsTest extends AbstractEntityViewTest { - protected Class viewType; - - public EntityViewUpdateCreatableEmbeddableMapsTest(Class viewType) { - this.viewType = viewType; - } - - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { LazyUpdatableDocumentEmbeddableWithMapsView.class }, - { PartialUpdatableDocumentEmbeddableWithMapsView.class }, - { FullUpdatableDocumentEmbeddableWithMapsView.class } - }); - } - @Test public void testValidateInvalidConfiguration() { EntityViewConfiguration cfg = EntityViews.createDefaultConfiguration(); - cfg.addEntityView(viewType); + cfg.addEntityView(UpdatableDocumentEmbeddableWithMapsView.class); try { evm = cfg.createEntityViewManager(cbf); fail("Expected failure because of invalid attribute definition!"); diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/EntityViewUpdateCreatableEmbeddableTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/EntityViewUpdateCreatableEmbeddableTest.java index a866223210..da604ab8d6 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/EntityViewUpdateCreatableEmbeddableTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/EntityViewUpdateCreatableEmbeddableTest.java @@ -21,16 +21,9 @@ import com.blazebit.persistence.view.EntityViews; import com.blazebit.persistence.view.spi.EntityViewConfiguration; import com.blazebit.persistence.view.testsuite.AbstractEntityViewTest; -import com.blazebit.persistence.view.testsuite.update.embeddable.creatable.model.FullUpdatableDocumentEmbeddableView; -import com.blazebit.persistence.view.testsuite.update.embeddable.creatable.model.LazyUpdatableDocumentEmbeddableView; -import com.blazebit.persistence.view.testsuite.update.embeddable.creatable.model.PartialUpdatableDocumentEmbeddableView; +import com.blazebit.persistence.view.testsuite.update.embeddable.creatable.model.UpdatableDocumentEmbeddableView; import org.junit.Test; import org.junit.experimental.categories.Category; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; - -import java.util.Arrays; -import java.util.Collection; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; @@ -40,30 +33,14 @@ * @author Christian Beikov * @since 1.2.0 */ -@RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) public class EntityViewUpdateCreatableEmbeddableTest extends AbstractEntityViewTest { - protected Class viewType; - - public EntityViewUpdateCreatableEmbeddableTest(Class viewType) { - this.viewType = viewType; - } - - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { LazyUpdatableDocumentEmbeddableView.class }, - { PartialUpdatableDocumentEmbeddableView.class }, - { FullUpdatableDocumentEmbeddableView.class } - }); - } - @Test public void testValidateInvalidConfiguration() { EntityViewConfiguration cfg = EntityViews.createDefaultConfiguration(); - cfg.addEntityView(viewType); + cfg.addEntityView(UpdatableDocumentEmbeddableView.class); try { evm = cfg.createEntityViewManager(cbf); fail("Expected failure because of invalid attribute definition!"); diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/model/FullUpdatableDocumentEmbeddableView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/model/FullUpdatableDocumentEmbeddableView.java deleted file mode 100644 index 0fd6ef8f5e..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/model/FullUpdatableDocumentEmbeddableView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.embeddable.creatable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentEmbeddableView extends UpdatableDocumentEmbeddableView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/model/FullUpdatableDocumentEmbeddableWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/model/FullUpdatableDocumentEmbeddableWithCollectionsView.java deleted file mode 100644 index 51538cccbd..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/model/FullUpdatableDocumentEmbeddableWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.embeddable.creatable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentEmbeddableWithCollectionsView extends UpdatableDocumentEmbeddableWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/model/FullUpdatableDocumentEmbeddableWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/model/FullUpdatableDocumentEmbeddableWithMapsView.java deleted file mode 100644 index 898eda41b2..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/model/FullUpdatableDocumentEmbeddableWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.embeddable.creatable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentEmbeddableWithMapsView extends UpdatableDocumentEmbeddableWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/model/LazyUpdatableDocumentEmbeddableView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/model/LazyUpdatableDocumentEmbeddableView.java deleted file mode 100644 index 199a1cd891..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/model/LazyUpdatableDocumentEmbeddableView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.embeddable.creatable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentEmbeddableView extends UpdatableDocumentEmbeddableView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/model/LazyUpdatableDocumentEmbeddableWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/model/LazyUpdatableDocumentEmbeddableWithCollectionsView.java deleted file mode 100644 index 39323ed5e0..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/model/LazyUpdatableDocumentEmbeddableWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.embeddable.creatable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentEmbeddableWithCollectionsView extends UpdatableDocumentEmbeddableWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/model/LazyUpdatableDocumentEmbeddableWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/model/LazyUpdatableDocumentEmbeddableWithMapsView.java deleted file mode 100644 index 24950baf6d..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/model/LazyUpdatableDocumentEmbeddableWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.embeddable.creatable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentEmbeddableWithMapsView extends UpdatableDocumentEmbeddableWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/model/PartialUpdatableDocumentEmbeddableView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/model/PartialUpdatableDocumentEmbeddableView.java deleted file mode 100644 index 4836216f26..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/model/PartialUpdatableDocumentEmbeddableView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.embeddable.creatable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentEmbeddableView extends UpdatableDocumentEmbeddableView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/model/PartialUpdatableDocumentEmbeddableWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/model/PartialUpdatableDocumentEmbeddableWithCollectionsView.java deleted file mode 100644 index 6a82d49c17..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/model/PartialUpdatableDocumentEmbeddableWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.embeddable.creatable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentEmbeddableWithCollectionsView extends UpdatableDocumentEmbeddableWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/model/PartialUpdatableDocumentEmbeddableWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/model/PartialUpdatableDocumentEmbeddableWithMapsView.java deleted file mode 100644 index 5e6266726e..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/model/PartialUpdatableDocumentEmbeddableWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.embeddable.creatable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentEmbeddableWithMapsView extends UpdatableDocumentEmbeddableWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/model/UpdatableDocumentEmbeddableView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/model/UpdatableDocumentEmbeddableView.java index 6e59c4cde1..dcbac9b6f3 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/model/UpdatableDocumentEmbeddableView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/model/UpdatableDocumentEmbeddableView.java @@ -24,7 +24,7 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ public interface UpdatableDocumentEmbeddableView extends UpdatableDocumentEmbeddableViewBase { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/model/UpdatableDocumentEmbeddableWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/model/UpdatableDocumentEmbeddableWithCollectionsView.java index b3a9eddb4a..f5bdc56bea 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/model/UpdatableDocumentEmbeddableWithCollectionsView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/model/UpdatableDocumentEmbeddableWithCollectionsView.java @@ -26,7 +26,7 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ public interface UpdatableDocumentEmbeddableWithCollectionsView extends UpdatableDocumentEmbeddableWithCollectionsViewBase { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/model/UpdatableDocumentEmbeddableWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/model/UpdatableDocumentEmbeddableWithMapsView.java index 145ad676bb..f75e60a5cd 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/model/UpdatableDocumentEmbeddableWithMapsView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatable/model/UpdatableDocumentEmbeddableWithMapsView.java @@ -26,7 +26,7 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ public interface UpdatableDocumentEmbeddableWithMapsView extends UpdatableDocumentEmbeddableWithMapsViewBase { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/EntityViewUpdateCreatableOnlyEmbeddableCollectionsTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/EntityViewUpdateCreatableOnlyEmbeddableCollectionsTest.java index 8a5520ce46..4e575f8d61 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/EntityViewUpdateCreatableOnlyEmbeddableCollectionsTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/EntityViewUpdateCreatableOnlyEmbeddableCollectionsTest.java @@ -21,16 +21,9 @@ import com.blazebit.persistence.view.EntityViews; import com.blazebit.persistence.view.spi.EntityViewConfiguration; import com.blazebit.persistence.view.testsuite.AbstractEntityViewTest; -import com.blazebit.persistence.view.testsuite.update.embeddable.creatableonly.model.FullUpdatableDocumentEmbeddableWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.embeddable.creatableonly.model.LazyUpdatableDocumentEmbeddableWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.embeddable.creatableonly.model.PartialUpdatableDocumentEmbeddableWithCollectionsView; +import com.blazebit.persistence.view.testsuite.update.embeddable.creatableonly.model.UpdatableDocumentEmbeddableWithCollectionsView; import org.junit.Test; import org.junit.experimental.categories.Category; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; - -import java.util.Arrays; -import java.util.Collection; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; @@ -40,30 +33,14 @@ * @author Christian Beikov * @since 1.2.0 */ -@RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) public class EntityViewUpdateCreatableOnlyEmbeddableCollectionsTest extends AbstractEntityViewTest { - protected Class viewType; - - public EntityViewUpdateCreatableOnlyEmbeddableCollectionsTest(Class viewType) { - this.viewType = viewType; - } - - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { LazyUpdatableDocumentEmbeddableWithCollectionsView.class }, - { PartialUpdatableDocumentEmbeddableWithCollectionsView.class }, - { FullUpdatableDocumentEmbeddableWithCollectionsView.class } - }); - } - @Test public void testValidateInvalidConfiguration() { EntityViewConfiguration cfg = EntityViews.createDefaultConfiguration(); - cfg.addEntityView(viewType); + cfg.addEntityView(UpdatableDocumentEmbeddableWithCollectionsView.class); try { evm = cfg.createEntityViewManager(cbf); fail("Expected failure because of invalid attribute definition!"); diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/EntityViewUpdateCreatableOnlyEmbeddableMapsTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/EntityViewUpdateCreatableOnlyEmbeddableMapsTest.java index 49f0ba62ab..b8c5ad4d3a 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/EntityViewUpdateCreatableOnlyEmbeddableMapsTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/EntityViewUpdateCreatableOnlyEmbeddableMapsTest.java @@ -21,16 +21,9 @@ import com.blazebit.persistence.view.EntityViews; import com.blazebit.persistence.view.spi.EntityViewConfiguration; import com.blazebit.persistence.view.testsuite.AbstractEntityViewTest; -import com.blazebit.persistence.view.testsuite.update.embeddable.creatableonly.model.FullUpdatableDocumentEmbeddableWithMapsView; -import com.blazebit.persistence.view.testsuite.update.embeddable.creatableonly.model.LazyUpdatableDocumentEmbeddableWithMapsView; -import com.blazebit.persistence.view.testsuite.update.embeddable.creatableonly.model.PartialUpdatableDocumentEmbeddableWithMapsView; +import com.blazebit.persistence.view.testsuite.update.embeddable.creatableonly.model.UpdatableDocumentEmbeddableWithMapsView; import org.junit.Test; import org.junit.experimental.categories.Category; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; - -import java.util.Arrays; -import java.util.Collection; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; @@ -40,30 +33,14 @@ * @author Christian Beikov * @since 1.2.0 */ -@RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) public class EntityViewUpdateCreatableOnlyEmbeddableMapsTest extends AbstractEntityViewTest { - protected Class viewType; - - public EntityViewUpdateCreatableOnlyEmbeddableMapsTest(Class viewType) { - this.viewType = viewType; - } - - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { LazyUpdatableDocumentEmbeddableWithMapsView.class }, - { PartialUpdatableDocumentEmbeddableWithMapsView.class }, - { FullUpdatableDocumentEmbeddableWithMapsView.class } - }); - } - @Test public void testValidateInvalidConfiguration() { EntityViewConfiguration cfg = EntityViews.createDefaultConfiguration(); - cfg.addEntityView(viewType); + cfg.addEntityView(UpdatableDocumentEmbeddableWithMapsView.class); try { evm = cfg.createEntityViewManager(cbf); fail("Expected failure because of invalid attribute definition!"); diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/EntityViewUpdateCreatableOnlyEmbeddableTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/EntityViewUpdateCreatableOnlyEmbeddableTest.java index 770fcbc3cd..72d39c961f 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/EntityViewUpdateCreatableOnlyEmbeddableTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/EntityViewUpdateCreatableOnlyEmbeddableTest.java @@ -21,16 +21,9 @@ import com.blazebit.persistence.view.EntityViews; import com.blazebit.persistence.view.spi.EntityViewConfiguration; import com.blazebit.persistence.view.testsuite.AbstractEntityViewTest; -import com.blazebit.persistence.view.testsuite.update.embeddable.creatableonly.model.FullUpdatableDocumentEmbeddableView; -import com.blazebit.persistence.view.testsuite.update.embeddable.creatableonly.model.LazyUpdatableDocumentEmbeddableView; -import com.blazebit.persistence.view.testsuite.update.embeddable.creatableonly.model.PartialUpdatableDocumentEmbeddableView; +import com.blazebit.persistence.view.testsuite.update.embeddable.creatableonly.model.UpdatableDocumentEmbeddableView; import org.junit.Test; import org.junit.experimental.categories.Category; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; - -import java.util.Arrays; -import java.util.Collection; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; @@ -40,30 +33,14 @@ * @author Christian Beikov * @since 1.2.0 */ -@RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) public class EntityViewUpdateCreatableOnlyEmbeddableTest extends AbstractEntityViewTest { - protected Class viewType; - - public EntityViewUpdateCreatableOnlyEmbeddableTest(Class viewType) { - this.viewType = viewType; - } - - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { LazyUpdatableDocumentEmbeddableView.class }, - { PartialUpdatableDocumentEmbeddableView.class }, - { FullUpdatableDocumentEmbeddableView.class } - }); - } - @Test public void testValidateInvalidConfiguration() { EntityViewConfiguration cfg = EntityViews.createDefaultConfiguration(); - cfg.addEntityView(viewType); + cfg.addEntityView(UpdatableDocumentEmbeddableView.class); try { evm = cfg.createEntityViewManager(cbf); fail("Expected failure because of invalid attribute definition!"); diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/model/FullUpdatableDocumentEmbeddableView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/model/FullUpdatableDocumentEmbeddableView.java deleted file mode 100644 index 86efedcc2b..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/model/FullUpdatableDocumentEmbeddableView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.embeddable.creatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentEmbeddableView extends UpdatableDocumentEmbeddableView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/model/FullUpdatableDocumentEmbeddableWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/model/FullUpdatableDocumentEmbeddableWithCollectionsView.java deleted file mode 100644 index 5216e5f538..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/model/FullUpdatableDocumentEmbeddableWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.embeddable.creatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentEmbeddableWithCollectionsView extends UpdatableDocumentEmbeddableWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/model/FullUpdatableDocumentEmbeddableWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/model/FullUpdatableDocumentEmbeddableWithMapsView.java deleted file mode 100644 index cae973024c..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/model/FullUpdatableDocumentEmbeddableWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.embeddable.creatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentEmbeddableWithMapsView extends UpdatableDocumentEmbeddableWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/model/LazyUpdatableDocumentEmbeddableView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/model/LazyUpdatableDocumentEmbeddableView.java deleted file mode 100644 index 1bcda724da..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/model/LazyUpdatableDocumentEmbeddableView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.embeddable.creatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentEmbeddableView extends UpdatableDocumentEmbeddableView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/model/LazyUpdatableDocumentEmbeddableWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/model/LazyUpdatableDocumentEmbeddableWithCollectionsView.java deleted file mode 100644 index 8738a975ce..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/model/LazyUpdatableDocumentEmbeddableWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.embeddable.creatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentEmbeddableWithCollectionsView extends UpdatableDocumentEmbeddableWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/model/LazyUpdatableDocumentEmbeddableWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/model/LazyUpdatableDocumentEmbeddableWithMapsView.java deleted file mode 100644 index 6fb3a29338..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/model/LazyUpdatableDocumentEmbeddableWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.embeddable.creatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentEmbeddableWithMapsView extends UpdatableDocumentEmbeddableWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/model/PartialUpdatableDocumentEmbeddableView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/model/PartialUpdatableDocumentEmbeddableView.java deleted file mode 100644 index bf5dcca9b7..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/model/PartialUpdatableDocumentEmbeddableView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.embeddable.creatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentEmbeddableView extends UpdatableDocumentEmbeddableView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/model/PartialUpdatableDocumentEmbeddableWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/model/PartialUpdatableDocumentEmbeddableWithCollectionsView.java deleted file mode 100644 index 06d444b45c..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/model/PartialUpdatableDocumentEmbeddableWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.embeddable.creatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentEmbeddableWithCollectionsView extends UpdatableDocumentEmbeddableWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/model/PartialUpdatableDocumentEmbeddableWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/model/PartialUpdatableDocumentEmbeddableWithMapsView.java deleted file mode 100644 index 92f6679cf1..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/model/PartialUpdatableDocumentEmbeddableWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.embeddable.creatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentEmbeddableWithMapsView extends UpdatableDocumentEmbeddableWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/model/UpdatableDocumentEmbeddableView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/model/UpdatableDocumentEmbeddableView.java index 1a6fffcdca..0c2329ad8b 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/model/UpdatableDocumentEmbeddableView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/model/UpdatableDocumentEmbeddableView.java @@ -24,7 +24,7 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ public interface UpdatableDocumentEmbeddableView extends UpdatableDocumentEmbeddableViewBase { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/model/UpdatableDocumentEmbeddableWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/model/UpdatableDocumentEmbeddableWithCollectionsView.java index bde6d9ff3e..f1414b54dd 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/model/UpdatableDocumentEmbeddableWithCollectionsView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/model/UpdatableDocumentEmbeddableWithCollectionsView.java @@ -26,7 +26,7 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ public interface UpdatableDocumentEmbeddableWithCollectionsView extends UpdatableDocumentEmbeddableWithCollectionsViewBase { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/model/UpdatableDocumentEmbeddableWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/model/UpdatableDocumentEmbeddableWithMapsView.java index b8d00bcc7f..6f97052294 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/model/UpdatableDocumentEmbeddableWithMapsView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/creatableonly/model/UpdatableDocumentEmbeddableWithMapsView.java @@ -26,7 +26,7 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ public interface UpdatableDocumentEmbeddableWithMapsView extends UpdatableDocumentEmbeddableWithMapsViewBase { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/model/UpdatableDocumentEmbeddableViewBase.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/model/UpdatableDocumentEmbeddableViewBase.java index 80d1b36151..bec32b394a 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/model/UpdatableDocumentEmbeddableViewBase.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/model/UpdatableDocumentEmbeddableViewBase.java @@ -16,16 +16,19 @@ package com.blazebit.persistence.view.testsuite.update.embeddable.model; +import com.blazebit.persistence.testsuite.entity.Document; import com.blazebit.persistence.testsuite.entity.NameObject; +import com.blazebit.persistence.view.EntityView; import com.blazebit.persistence.view.IdMapping; - -import java.util.Date; +import com.blazebit.persistence.view.UpdatableEntityView; /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ +@UpdatableEntityView +@EntityView(Document.class) public interface UpdatableDocumentEmbeddableViewBase { @IdMapping("id") diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/model/UpdatableDocumentEmbeddableWithCollectionsViewBase.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/model/UpdatableDocumentEmbeddableWithCollectionsViewBase.java index 62fe8e6653..8309ba9698 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/model/UpdatableDocumentEmbeddableWithCollectionsViewBase.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/model/UpdatableDocumentEmbeddableWithCollectionsViewBase.java @@ -16,16 +16,21 @@ package com.blazebit.persistence.view.testsuite.update.embeddable.model; +import com.blazebit.persistence.testsuite.entity.Document; import com.blazebit.persistence.testsuite.entity.NameObject; +import com.blazebit.persistence.view.EntityView; import com.blazebit.persistence.view.IdMapping; +import com.blazebit.persistence.view.UpdatableEntityView; import java.util.List; /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ +@UpdatableEntityView +@EntityView(Document.class) public interface UpdatableDocumentEmbeddableWithCollectionsViewBase { @IdMapping("id") diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/model/UpdatableDocumentEmbeddableWithMapsViewBase.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/model/UpdatableDocumentEmbeddableWithMapsViewBase.java index 4aa2422cc3..b62e51fb17 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/model/UpdatableDocumentEmbeddableWithMapsViewBase.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/model/UpdatableDocumentEmbeddableWithMapsViewBase.java @@ -16,17 +16,21 @@ package com.blazebit.persistence.view.testsuite.update.embeddable.model; +import com.blazebit.persistence.testsuite.entity.Document; import com.blazebit.persistence.testsuite.entity.NameObject; +import com.blazebit.persistence.view.EntityView; import com.blazebit.persistence.view.IdMapping; +import com.blazebit.persistence.view.UpdatableEntityView; -import java.util.List; import java.util.Map; /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ +@UpdatableEntityView +@EntityView(Document.class) public interface UpdatableDocumentEmbeddableWithMapsViewBase { @IdMapping("id") diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/EntityViewUpdateMutableEmbeddableCollectionsTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/EntityViewUpdateMutableEmbeddableCollectionsTest.java index 1a0bd322f5..c20da959df 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/EntityViewUpdateMutableEmbeddableCollectionsTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/EntityViewUpdateMutableEmbeddableCollectionsTest.java @@ -21,22 +21,17 @@ import com.blazebit.persistence.testsuite.base.category.NoEclipselink; import com.blazebit.persistence.testsuite.entity.Document; import com.blazebit.persistence.testsuite.entity.NameObject; +import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.spi.BasicUserType; import com.blazebit.persistence.view.spi.EntityViewConfiguration; -import com.blazebit.persistence.view.testsuite.update.basic.AbstractEntityViewUpdateBasicCollectionsTest; import com.blazebit.persistence.view.testsuite.update.embeddable.AbstractEntityViewUpdateEmbeddableCollectionsTest; -import com.blazebit.persistence.view.testsuite.update.embeddable.mutable.model.FullUpdatableDocumentEmbeddableWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.embeddable.mutable.model.LazyUpdatableDocumentEmbeddableWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.embeddable.mutable.model.PartialUpdatableDocumentEmbeddableWithCollectionsView; import com.blazebit.persistence.view.testsuite.update.embeddable.mutable.model.UpdatableDocumentEmbeddableWithCollectionsView; import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; -import java.util.Arrays; -import java.util.Collection; - import static org.junit.Assert.assertEquals; /** @@ -47,25 +42,18 @@ @RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) -public class EntityViewUpdateMutableEmbeddableCollectionsTest extends AbstractEntityViewUpdateEmbeddableCollectionsTest { +public class EntityViewUpdateMutableEmbeddableCollectionsTest extends AbstractEntityViewUpdateEmbeddableCollectionsTest { private boolean registerType; - public EntityViewUpdateMutableEmbeddableCollectionsTest(Class viewType, boolean registerType) { - super(viewType); + public EntityViewUpdateMutableEmbeddableCollectionsTest(FlushMode mode, FlushStrategy strategy, boolean registerType) { + super(mode, strategy, UpdatableDocumentEmbeddableWithCollectionsView.class); this.registerType = registerType; } - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { LazyUpdatableDocumentEmbeddableWithCollectionsView.class, false }, - { PartialUpdatableDocumentEmbeddableWithCollectionsView.class, false }, - { FullUpdatableDocumentEmbeddableWithCollectionsView.class, false }, - { LazyUpdatableDocumentEmbeddableWithCollectionsView.class, true }, - { PartialUpdatableDocumentEmbeddableWithCollectionsView.class, true }, - { FullUpdatableDocumentEmbeddableWithCollectionsView.class, true } - }); + @Parameterized.Parameters(name = "{0} - {1}") + public static Object[][] combinations() { + return MODE_STRATEGY_TYPE_COMBINATIONS; } @Override @@ -118,7 +106,7 @@ public NameObject deepClone(NameObject object) { @Test public void testUpdateReplaceCollection() { // Given - final T docView = updateReplaceCollection(); + final UpdatableDocumentEmbeddableWithCollectionsView docView = updateReplaceCollection(); // Then AssertStatementBuilder builder = assertQuerySequence(); @@ -162,7 +150,7 @@ public void testUpdateReplaceCollection() { @Test public void testUpdateAddToCollection() { // Given - final T docView = updateAddToCollection(); + final UpdatableDocumentEmbeddableWithCollectionsView docView = updateAddToCollection(); // Then AssertStatementBuilder builder = assertQuerySequence(); @@ -214,7 +202,7 @@ public void testUpdateAddToCollection() { @Test public void testUpdateAddToNewCollection() { // Given - final T docView = updateAddToNewCollection(); + final UpdatableDocumentEmbeddableWithCollectionsView docView = updateAddToNewCollection(); // Then AssertStatementBuilder builder = assertQuerySequence(); @@ -272,6 +260,12 @@ private AssertStatementBuilder assertReplaceAnd(AssertStatementBuilder builder) .and(); } + @Override + protected boolean isQueryStrategy() { + // Collection changes always need to be applied on the entity model, can't do that via a query + return false; + } + @Override protected AssertStatementBuilder fullFetch(AssertStatementBuilder builder) { return builder.assertSelect() diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/EntityViewUpdateMutableEmbeddableMapsTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/EntityViewUpdateMutableEmbeddableMapsTest.java index 95cde31c7b..df1302001b 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/EntityViewUpdateMutableEmbeddableMapsTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/EntityViewUpdateMutableEmbeddableMapsTest.java @@ -21,21 +21,17 @@ import com.blazebit.persistence.testsuite.base.category.NoEclipselink; import com.blazebit.persistence.testsuite.entity.Document; import com.blazebit.persistence.testsuite.entity.NameObject; +import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.spi.BasicUserType; import com.blazebit.persistence.view.spi.EntityViewConfiguration; import com.blazebit.persistence.view.testsuite.update.embeddable.AbstractEntityViewUpdateEmbeddableMapsTest; -import com.blazebit.persistence.view.testsuite.update.embeddable.mutable.model.FullUpdatableDocumentEmbeddableWithMapsView; -import com.blazebit.persistence.view.testsuite.update.embeddable.mutable.model.LazyUpdatableDocumentEmbeddableWithMapsView; -import com.blazebit.persistence.view.testsuite.update.embeddable.mutable.model.PartialUpdatableDocumentEmbeddableWithMapsView; import com.blazebit.persistence.view.testsuite.update.embeddable.mutable.model.UpdatableDocumentEmbeddableWithMapsView; import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; -import java.util.Arrays; -import java.util.Collection; - import static org.junit.Assert.assertEquals; /** @@ -46,25 +42,18 @@ @RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) -public class EntityViewUpdateMutableEmbeddableMapsTest extends AbstractEntityViewUpdateEmbeddableMapsTest { +public class EntityViewUpdateMutableEmbeddableMapsTest extends AbstractEntityViewUpdateEmbeddableMapsTest { private boolean registerType; - public EntityViewUpdateMutableEmbeddableMapsTest(Class viewType, boolean registerType) { - super(viewType); + public EntityViewUpdateMutableEmbeddableMapsTest(FlushMode mode, FlushStrategy strategy, boolean registerType) { + super(mode, strategy, UpdatableDocumentEmbeddableWithMapsView.class); this.registerType = registerType; } - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { LazyUpdatableDocumentEmbeddableWithMapsView.class, false }, - { PartialUpdatableDocumentEmbeddableWithMapsView.class, false }, - { FullUpdatableDocumentEmbeddableWithMapsView.class, false }, - { LazyUpdatableDocumentEmbeddableWithMapsView.class, true }, - { PartialUpdatableDocumentEmbeddableWithMapsView.class, true }, - { FullUpdatableDocumentEmbeddableWithMapsView.class, true } - }); + @Parameterized.Parameters(name = "{0} - {1}") + public static Object[][] combinations() { + return MODE_STRATEGY_TYPE_COMBINATIONS; } @Override @@ -117,7 +106,7 @@ public NameObject deepClone(NameObject object) { @Test public void testUpdateReplaceCollection() { // Given - final T docView = updateReplaceCollection(); + final UpdatableDocumentEmbeddableWithMapsView docView = updateReplaceCollection(); // Then AssertStatementBuilder builder = assertQuerySequence(); @@ -161,7 +150,7 @@ public void testUpdateReplaceCollection() { @Test public void testUpdateAddToCollection() { // Given - final T docView = updateAddToCollection(); + final UpdatableDocumentEmbeddableWithMapsView docView = updateAddToCollection(); // Then AssertStatementBuilder builder = assertQuerySequence(); @@ -213,7 +202,7 @@ public void testUpdateAddToCollection() { @Test public void testUpdateAddToNewCollection() { // Given - final T docView = updateAddToNewCollection(); + final UpdatableDocumentEmbeddableWithMapsView docView = updateAddToNewCollection(); // Then AssertStatementBuilder builder = assertQuerySequence(); @@ -271,6 +260,12 @@ private AssertStatementBuilder assertReplaceAnd(AssertStatementBuilder builder) .and(); } + @Override + protected boolean isQueryStrategy() { + // Collection changes always need to be applied on the entity model, can't do that via a query + return false; + } + @Override protected AssertStatementBuilder fullFetch(AssertStatementBuilder builder) { return builder.assertSelect() diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/EntityViewUpdateMutableEmbeddableTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/EntityViewUpdateMutableEmbeddableTest.java index dd1bf0ba3f..3ab520dce0 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/EntityViewUpdateMutableEmbeddableTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/EntityViewUpdateMutableEmbeddableTest.java @@ -21,22 +21,17 @@ import com.blazebit.persistence.testsuite.base.category.NoEclipselink; import com.blazebit.persistence.testsuite.entity.Document; import com.blazebit.persistence.testsuite.entity.NameObject; +import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.spi.BasicUserType; import com.blazebit.persistence.view.spi.EntityViewConfiguration; -import com.blazebit.persistence.view.testsuite.update.basic.AbstractEntityViewUpdateBasicTest; import com.blazebit.persistence.view.testsuite.update.embeddable.AbstractEntityViewUpdateEmbeddableTest; -import com.blazebit.persistence.view.testsuite.update.embeddable.mutable.model.FullUpdatableDocumentEmbeddableView; -import com.blazebit.persistence.view.testsuite.update.embeddable.mutable.model.LazyUpdatableDocumentEmbeddableView; -import com.blazebit.persistence.view.testsuite.update.embeddable.mutable.model.PartialUpdatableDocumentEmbeddableView; import com.blazebit.persistence.view.testsuite.update.embeddable.mutable.model.UpdatableDocumentEmbeddableView; import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; -import java.util.Arrays; -import java.util.Collection; - import static org.junit.Assert.assertEquals; /** @@ -47,25 +42,18 @@ @RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) -public class EntityViewUpdateMutableEmbeddableTest extends AbstractEntityViewUpdateEmbeddableTest { +public class EntityViewUpdateMutableEmbeddableTest extends AbstractEntityViewUpdateEmbeddableTest { private final boolean registerType; - public EntityViewUpdateMutableEmbeddableTest(Class viewType, boolean registerType) { - super(viewType); + public EntityViewUpdateMutableEmbeddableTest(FlushMode mode, FlushStrategy strategy, boolean registerType) { + super(mode, strategy, UpdatableDocumentEmbeddableView.class); this.registerType = registerType; } - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { LazyUpdatableDocumentEmbeddableView.class, false }, - { PartialUpdatableDocumentEmbeddableView.class, false }, - { FullUpdatableDocumentEmbeddableView.class, false }, - { LazyUpdatableDocumentEmbeddableView.class, true }, - { PartialUpdatableDocumentEmbeddableView.class, true }, - { FullUpdatableDocumentEmbeddableView.class, true } - }); + @Parameterized.Parameters(name = "{0} - {1}") + public static Object[][] combinations() { + return MODE_STRATEGY_TYPE_COMBINATIONS; } @Override @@ -118,10 +106,32 @@ public NameObject deepClone(NameObject object) { @Test public void testSimpleUpdate() { // Given & When - final T docView = simpleUpdate(); + // We don't actually update the embeddable in a partial mode, when knowing the type and having a query strategy + final UpdatableDocumentEmbeddableView docView = simpleUpdate(); // Then - fullFetchUpdateAndReload(docView); + // Assert that not only the document is loaded and finally also updated + AssertStatementBuilder builder = assertQuerySequence(); + // In partial mode with knowing the type we can determine the embeddable didn't change + // So we can still use an update query since we don't need to include that attribute in the query + boolean canUpdateQueryOnly = super.isQueryStrategy() && ( + jpaProvider.supportsUpdateSetEmbeddable() || !isFullMode() && registerType + ); + + if (!canUpdateQueryOnly) { + fullFetch(builder); + } + + builder.update(Document.class) + .validate(); + + if (registerType) { + // When we register a type that can check for the dirtyness, we can skip the reload + assertNoUpdateAndReload(docView); + } else { + // Unfortunately we have to reload the document since we don't know if the embeddable is dirty + assertNoUpdateFullFetchAndReload(docView); + } assertEquals("newDoc", docView.getName()); assertEquals(doc1.getName(), docView.getName()); } @@ -129,7 +139,7 @@ public void testSimpleUpdate() { @Test public void testUpdateMutable() { // Given & When - final T docView = updateMutable(); + final UpdatableDocumentEmbeddableView docView = updateMutable(); // Then fullFetchUpdateAndReload(docView); @@ -140,7 +150,7 @@ public void testUpdateMutable() { @Test public void testMutateMutable() { // Given & When - final T docView = mutateMutable(); + final UpdatableDocumentEmbeddableView docView = mutateMutable(); // Then fullFetchUpdateAndReload(docView); @@ -148,11 +158,13 @@ public void testMutateMutable() { assertEquals("newSecondaryName", doc1.getNameObject().getSecondaryName()); } - private void fullFetchUpdateAndReload(T docView) { + private void fullFetchUpdateAndReload(UpdatableDocumentEmbeddableView docView) { // Assert that not only the document is loaded and finally also updated AssertStatementBuilder builder = assertQuerySequence(); - fullFetch(builder); + if (!isQueryStrategy()) { + fullFetch(builder); + } builder.update(Document.class) .validate(); @@ -166,10 +178,22 @@ private void fullFetchUpdateAndReload(T docView) { } } + @Override + protected boolean isQueryStrategy() { + return jpaProvider.supportsUpdateSetEmbeddable() && super.isQueryStrategy(); + } + @Override protected AssertStatementBuilder fullFetch(AssertStatementBuilder builder) { return builder.assertSelect() .fetching(Document.class) .and(); } + + @Override + protected AssertStatementBuilder fullUpdate(AssertStatementBuilder builder) { + return builder.assertUpdate() + .forEntity(Document.class) + .and(); + } } diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/model/FullUpdatableDocumentEmbeddableView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/model/FullUpdatableDocumentEmbeddableView.java deleted file mode 100644 index 57df19f027..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/model/FullUpdatableDocumentEmbeddableView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.embeddable.mutable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentEmbeddableView extends UpdatableDocumentEmbeddableView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/model/FullUpdatableDocumentEmbeddableWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/model/FullUpdatableDocumentEmbeddableWithCollectionsView.java deleted file mode 100644 index 2d91112d8c..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/model/FullUpdatableDocumentEmbeddableWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.embeddable.mutable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentEmbeddableWithCollectionsView extends UpdatableDocumentEmbeddableWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/model/FullUpdatableDocumentEmbeddableWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/model/FullUpdatableDocumentEmbeddableWithMapsView.java deleted file mode 100644 index d152245727..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/model/FullUpdatableDocumentEmbeddableWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.embeddable.mutable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentEmbeddableWithMapsView extends UpdatableDocumentEmbeddableWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/model/LazyUpdatableDocumentEmbeddableView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/model/LazyUpdatableDocumentEmbeddableView.java deleted file mode 100644 index afa5ac2614..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/model/LazyUpdatableDocumentEmbeddableView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.embeddable.mutable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentEmbeddableView extends UpdatableDocumentEmbeddableView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/model/LazyUpdatableDocumentEmbeddableWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/model/LazyUpdatableDocumentEmbeddableWithCollectionsView.java deleted file mode 100644 index c5e4136ad5..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/model/LazyUpdatableDocumentEmbeddableWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.embeddable.mutable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentEmbeddableWithCollectionsView extends UpdatableDocumentEmbeddableWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/model/LazyUpdatableDocumentEmbeddableWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/model/LazyUpdatableDocumentEmbeddableWithMapsView.java deleted file mode 100644 index 690e3338ef..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/model/LazyUpdatableDocumentEmbeddableWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.embeddable.mutable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentEmbeddableWithMapsView extends UpdatableDocumentEmbeddableWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/model/PartialUpdatableDocumentEmbeddableView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/model/PartialUpdatableDocumentEmbeddableView.java deleted file mode 100644 index 40896f48ff..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/model/PartialUpdatableDocumentEmbeddableView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.embeddable.mutable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentEmbeddableView extends UpdatableDocumentEmbeddableView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/model/PartialUpdatableDocumentEmbeddableWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/model/PartialUpdatableDocumentEmbeddableWithCollectionsView.java deleted file mode 100644 index 5a837a4310..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/model/PartialUpdatableDocumentEmbeddableWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.embeddable.mutable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentEmbeddableWithCollectionsView extends UpdatableDocumentEmbeddableWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/model/PartialUpdatableDocumentEmbeddableWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/model/PartialUpdatableDocumentEmbeddableWithMapsView.java deleted file mode 100644 index c6fd35946d..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/model/PartialUpdatableDocumentEmbeddableWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.embeddable.mutable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentEmbeddableWithMapsView extends UpdatableDocumentEmbeddableWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/model/UpdatableDocumentEmbeddableView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/model/UpdatableDocumentEmbeddableView.java index 1d9c6d7ede..2e801c3019 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/model/UpdatableDocumentEmbeddableView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/model/UpdatableDocumentEmbeddableView.java @@ -21,12 +21,10 @@ import com.blazebit.persistence.view.UpdatableMapping; import com.blazebit.persistence.view.testsuite.update.embeddable.model.UpdatableDocumentEmbeddableViewBase; -import java.util.Date; - /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ public interface UpdatableDocumentEmbeddableView extends UpdatableDocumentEmbeddableViewBase { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/model/UpdatableDocumentEmbeddableWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/model/UpdatableDocumentEmbeddableWithCollectionsView.java index 2c3bb0c1e0..2dcd0e5a23 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/model/UpdatableDocumentEmbeddableWithCollectionsView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/model/UpdatableDocumentEmbeddableWithCollectionsView.java @@ -26,7 +26,7 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ public interface UpdatableDocumentEmbeddableWithCollectionsView extends UpdatableDocumentEmbeddableWithCollectionsViewBase { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/model/UpdatableDocumentEmbeddableWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/model/UpdatableDocumentEmbeddableWithMapsView.java index 65b0527198..8daa2aea36 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/model/UpdatableDocumentEmbeddableWithMapsView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutable/model/UpdatableDocumentEmbeddableWithMapsView.java @@ -26,7 +26,7 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ public interface UpdatableDocumentEmbeddableWithMapsView extends UpdatableDocumentEmbeddableWithMapsViewBase { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/EntityViewUpdateMutableOnlyEmbeddableCollectionsTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/EntityViewUpdateMutableOnlyEmbeddableCollectionsTest.java index 6b3d452d1e..83fa69327d 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/EntityViewUpdateMutableOnlyEmbeddableCollectionsTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/EntityViewUpdateMutableOnlyEmbeddableCollectionsTest.java @@ -21,16 +21,9 @@ import com.blazebit.persistence.view.EntityViews; import com.blazebit.persistence.view.spi.EntityViewConfiguration; import com.blazebit.persistence.view.testsuite.AbstractEntityViewTest; -import com.blazebit.persistence.view.testsuite.update.embeddable.mutableonly.model.FullUpdatableDocumentEmbeddableWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.embeddable.mutableonly.model.LazyUpdatableDocumentEmbeddableWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.embeddable.mutableonly.model.PartialUpdatableDocumentEmbeddableWithCollectionsView; +import com.blazebit.persistence.view.testsuite.update.embeddable.mutableonly.model.UpdatableDocumentEmbeddableWithCollectionsView; import org.junit.Test; import org.junit.experimental.categories.Category; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; - -import java.util.Arrays; -import java.util.Collection; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; @@ -40,30 +33,14 @@ * @author Christian Beikov * @since 1.2.0 */ -@RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) public class EntityViewUpdateMutableOnlyEmbeddableCollectionsTest extends AbstractEntityViewTest { - protected Class viewType; - - public EntityViewUpdateMutableOnlyEmbeddableCollectionsTest(Class viewType) { - this.viewType = viewType; - } - - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { LazyUpdatableDocumentEmbeddableWithCollectionsView.class }, - { PartialUpdatableDocumentEmbeddableWithCollectionsView.class }, - { FullUpdatableDocumentEmbeddableWithCollectionsView.class } - }); - } - @Test public void testValidateInvalidConfiguration() { EntityViewConfiguration cfg = EntityViews.createDefaultConfiguration(); - cfg.addEntityView(viewType); + cfg.addEntityView(UpdatableDocumentEmbeddableWithCollectionsView.class); try { evm = cfg.createEntityViewManager(cbf); fail("Expected failure because of invalid attribute definition!"); diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/EntityViewUpdateMutableOnlyEmbeddableMapsTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/EntityViewUpdateMutableOnlyEmbeddableMapsTest.java index b178bdc5ac..82dc02738b 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/EntityViewUpdateMutableOnlyEmbeddableMapsTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/EntityViewUpdateMutableOnlyEmbeddableMapsTest.java @@ -21,16 +21,9 @@ import com.blazebit.persistence.view.EntityViews; import com.blazebit.persistence.view.spi.EntityViewConfiguration; import com.blazebit.persistence.view.testsuite.AbstractEntityViewTest; -import com.blazebit.persistence.view.testsuite.update.embeddable.mutableonly.model.FullUpdatableDocumentEmbeddableWithMapsView; -import com.blazebit.persistence.view.testsuite.update.embeddable.mutableonly.model.LazyUpdatableDocumentEmbeddableWithMapsView; -import com.blazebit.persistence.view.testsuite.update.embeddable.mutableonly.model.PartialUpdatableDocumentEmbeddableWithMapsView; +import com.blazebit.persistence.view.testsuite.update.embeddable.mutableonly.model.UpdatableDocumentEmbeddableWithMapsView; import org.junit.Test; import org.junit.experimental.categories.Category; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; - -import java.util.Arrays; -import java.util.Collection; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; @@ -40,30 +33,14 @@ * @author Christian Beikov * @since 1.2.0 */ -@RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) public class EntityViewUpdateMutableOnlyEmbeddableMapsTest extends AbstractEntityViewTest { - protected Class viewType; - - public EntityViewUpdateMutableOnlyEmbeddableMapsTest(Class viewType) { - this.viewType = viewType; - } - - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { LazyUpdatableDocumentEmbeddableWithMapsView.class }, - { PartialUpdatableDocumentEmbeddableWithMapsView.class }, - { FullUpdatableDocumentEmbeddableWithMapsView.class } - }); - } - @Test public void testValidateInvalidConfiguration() { EntityViewConfiguration cfg = EntityViews.createDefaultConfiguration(); - cfg.addEntityView(viewType); + cfg.addEntityView(UpdatableDocumentEmbeddableWithMapsView.class); try { evm = cfg.createEntityViewManager(cbf); fail("Expected failure because of invalid attribute definition!"); diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/EntityViewUpdateMutableOnlyEmbeddableTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/EntityViewUpdateMutableOnlyEmbeddableTest.java index 7869c26aba..668e075b38 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/EntityViewUpdateMutableOnlyEmbeddableTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/EntityViewUpdateMutableOnlyEmbeddableTest.java @@ -21,16 +21,9 @@ import com.blazebit.persistence.view.EntityViews; import com.blazebit.persistence.view.spi.EntityViewConfiguration; import com.blazebit.persistence.view.testsuite.AbstractEntityViewTest; -import com.blazebit.persistence.view.testsuite.update.embeddable.mutableonly.model.FullUpdatableDocumentEmbeddableView; -import com.blazebit.persistence.view.testsuite.update.embeddable.mutableonly.model.LazyUpdatableDocumentEmbeddableView; -import com.blazebit.persistence.view.testsuite.update.embeddable.mutableonly.model.PartialUpdatableDocumentEmbeddableView; +import com.blazebit.persistence.view.testsuite.update.embeddable.mutableonly.model.UpdatableDocumentEmbeddableView; import org.junit.Test; import org.junit.experimental.categories.Category; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; - -import java.util.Arrays; -import java.util.Collection; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; @@ -40,30 +33,14 @@ * @author Christian Beikov * @since 1.2.0 */ -@RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) public class EntityViewUpdateMutableOnlyEmbeddableTest extends AbstractEntityViewTest { - protected Class viewType; - - public EntityViewUpdateMutableOnlyEmbeddableTest(Class viewType) { - this.viewType = viewType; - } - - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { LazyUpdatableDocumentEmbeddableView.class }, - { PartialUpdatableDocumentEmbeddableView.class }, - { FullUpdatableDocumentEmbeddableView.class } - }); - } - @Test public void testValidateInvalidConfiguration() { EntityViewConfiguration cfg = EntityViews.createDefaultConfiguration(); - cfg.addEntityView(viewType); + cfg.addEntityView(UpdatableDocumentEmbeddableView.class); try { evm = cfg.createEntityViewManager(cbf); fail("Expected failure because of invalid attribute definition!"); diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/model/FullUpdatableDocumentEmbeddableView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/model/FullUpdatableDocumentEmbeddableView.java deleted file mode 100644 index ca2748641e..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/model/FullUpdatableDocumentEmbeddableView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.embeddable.mutableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentEmbeddableView extends UpdatableDocumentEmbeddableView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/model/FullUpdatableDocumentEmbeddableWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/model/FullUpdatableDocumentEmbeddableWithCollectionsView.java deleted file mode 100644 index c6cfd23a59..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/model/FullUpdatableDocumentEmbeddableWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.embeddable.mutableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentEmbeddableWithCollectionsView extends UpdatableDocumentEmbeddableWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/model/FullUpdatableDocumentEmbeddableWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/model/FullUpdatableDocumentEmbeddableWithMapsView.java deleted file mode 100644 index 22c6930555..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/model/FullUpdatableDocumentEmbeddableWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.embeddable.mutableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentEmbeddableWithMapsView extends UpdatableDocumentEmbeddableWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/model/LazyUpdatableDocumentEmbeddableView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/model/LazyUpdatableDocumentEmbeddableView.java deleted file mode 100644 index 5727ea80a2..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/model/LazyUpdatableDocumentEmbeddableView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.embeddable.mutableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentEmbeddableView extends UpdatableDocumentEmbeddableView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/model/LazyUpdatableDocumentEmbeddableWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/model/LazyUpdatableDocumentEmbeddableWithCollectionsView.java deleted file mode 100644 index 6927e0085e..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/model/LazyUpdatableDocumentEmbeddableWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.embeddable.mutableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentEmbeddableWithCollectionsView extends UpdatableDocumentEmbeddableWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/model/LazyUpdatableDocumentEmbeddableWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/model/LazyUpdatableDocumentEmbeddableWithMapsView.java deleted file mode 100644 index 0cc01361e3..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/model/LazyUpdatableDocumentEmbeddableWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.embeddable.mutableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentEmbeddableWithMapsView extends UpdatableDocumentEmbeddableWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/model/PartialUpdatableDocumentEmbeddableView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/model/PartialUpdatableDocumentEmbeddableView.java deleted file mode 100644 index 3ff5da7890..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/model/PartialUpdatableDocumentEmbeddableView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.embeddable.mutableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentEmbeddableView extends UpdatableDocumentEmbeddableView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/model/PartialUpdatableDocumentEmbeddableWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/model/PartialUpdatableDocumentEmbeddableWithCollectionsView.java deleted file mode 100644 index 5e6cca4468..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/model/PartialUpdatableDocumentEmbeddableWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.embeddable.mutableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentEmbeddableWithCollectionsView extends UpdatableDocumentEmbeddableWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/model/PartialUpdatableDocumentEmbeddableWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/model/PartialUpdatableDocumentEmbeddableWithMapsView.java deleted file mode 100644 index 45b1e3fd0b..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/model/PartialUpdatableDocumentEmbeddableWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.embeddable.mutableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentEmbeddableWithMapsView extends UpdatableDocumentEmbeddableWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/model/UpdatableDocumentEmbeddableView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/model/UpdatableDocumentEmbeddableView.java index 1060df6561..1001d4d37c 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/model/UpdatableDocumentEmbeddableView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/model/UpdatableDocumentEmbeddableView.java @@ -24,7 +24,7 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ public interface UpdatableDocumentEmbeddableView extends UpdatableDocumentEmbeddableViewBase { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/model/UpdatableDocumentEmbeddableWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/model/UpdatableDocumentEmbeddableWithCollectionsView.java index 38c4c57075..157dc29480 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/model/UpdatableDocumentEmbeddableWithCollectionsView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/model/UpdatableDocumentEmbeddableWithCollectionsView.java @@ -26,7 +26,7 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ public interface UpdatableDocumentEmbeddableWithCollectionsView extends UpdatableDocumentEmbeddableWithCollectionsViewBase { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/model/UpdatableDocumentEmbeddableWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/model/UpdatableDocumentEmbeddableWithMapsView.java index f0987b9fc5..f496469dca 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/model/UpdatableDocumentEmbeddableWithMapsView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/mutableonly/model/UpdatableDocumentEmbeddableWithMapsView.java @@ -26,7 +26,7 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ public interface UpdatableDocumentEmbeddableWithMapsView extends UpdatableDocumentEmbeddableWithMapsViewBase { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/EntityViewUpdateUpdatableOnlyEmbeddableCollectionsTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/EntityViewUpdateUpdatableOnlyEmbeddableCollectionsTest.java index a809a16e78..33752cb3e6 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/EntityViewUpdateUpdatableOnlyEmbeddableCollectionsTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/EntityViewUpdateUpdatableOnlyEmbeddableCollectionsTest.java @@ -21,16 +21,9 @@ import com.blazebit.persistence.view.EntityViews; import com.blazebit.persistence.view.spi.EntityViewConfiguration; import com.blazebit.persistence.view.testsuite.AbstractEntityViewTest; -import com.blazebit.persistence.view.testsuite.update.embeddable.updatableonly.model.FullUpdatableDocumentEmbeddableWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.embeddable.updatableonly.model.LazyUpdatableDocumentEmbeddableWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.embeddable.updatableonly.model.PartialUpdatableDocumentEmbeddableWithCollectionsView; +import com.blazebit.persistence.view.testsuite.update.embeddable.updatableonly.model.UpdatableDocumentEmbeddableWithCollectionsView; import org.junit.Test; import org.junit.experimental.categories.Category; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; - -import java.util.Arrays; -import java.util.Collection; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; @@ -40,30 +33,14 @@ * @author Christian Beikov * @since 1.2.0 */ -@RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) public class EntityViewUpdateUpdatableOnlyEmbeddableCollectionsTest extends AbstractEntityViewTest { - protected Class viewType; - - public EntityViewUpdateUpdatableOnlyEmbeddableCollectionsTest(Class viewType) { - this.viewType = viewType; - } - - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { LazyUpdatableDocumentEmbeddableWithCollectionsView.class }, - { PartialUpdatableDocumentEmbeddableWithCollectionsView.class }, - { FullUpdatableDocumentEmbeddableWithCollectionsView.class } - }); - } - @Test public void testValidateInvalidConfiguration() { EntityViewConfiguration cfg = EntityViews.createDefaultConfiguration(); - cfg.addEntityView(viewType); + cfg.addEntityView(UpdatableDocumentEmbeddableWithCollectionsView.class); try { evm = cfg.createEntityViewManager(cbf); fail("Expected failure because of invalid attribute definition!"); diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/EntityViewUpdateUpdatableOnlyEmbeddableMapsTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/EntityViewUpdateUpdatableOnlyEmbeddableMapsTest.java index 377cf85f7c..11b0b1479e 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/EntityViewUpdateUpdatableOnlyEmbeddableMapsTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/EntityViewUpdateUpdatableOnlyEmbeddableMapsTest.java @@ -21,16 +21,9 @@ import com.blazebit.persistence.view.EntityViews; import com.blazebit.persistence.view.spi.EntityViewConfiguration; import com.blazebit.persistence.view.testsuite.AbstractEntityViewTest; -import com.blazebit.persistence.view.testsuite.update.embeddable.updatableonly.model.FullUpdatableDocumentEmbeddableWithMapsView; -import com.blazebit.persistence.view.testsuite.update.embeddable.updatableonly.model.LazyUpdatableDocumentEmbeddableWithMapsView; -import com.blazebit.persistence.view.testsuite.update.embeddable.updatableonly.model.PartialUpdatableDocumentEmbeddableWithMapsView; +import com.blazebit.persistence.view.testsuite.update.embeddable.updatableonly.model.UpdatableDocumentEmbeddableWithMapsView; import org.junit.Test; import org.junit.experimental.categories.Category; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; - -import java.util.Arrays; -import java.util.Collection; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; @@ -40,30 +33,14 @@ * @author Christian Beikov * @since 1.2.0 */ -@RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) public class EntityViewUpdateUpdatableOnlyEmbeddableMapsTest extends AbstractEntityViewTest { - protected Class viewType; - - public EntityViewUpdateUpdatableOnlyEmbeddableMapsTest(Class viewType) { - this.viewType = viewType; - } - - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { LazyUpdatableDocumentEmbeddableWithMapsView.class }, - { PartialUpdatableDocumentEmbeddableWithMapsView.class }, - { FullUpdatableDocumentEmbeddableWithMapsView.class } - }); - } - @Test public void testValidateInvalidConfiguration() { EntityViewConfiguration cfg = EntityViews.createDefaultConfiguration(); - cfg.addEntityView(viewType); + cfg.addEntityView(UpdatableDocumentEmbeddableWithMapsView.class); try { evm = cfg.createEntityViewManager(cbf); fail("Expected failure because of invalid attribute definition!"); diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/EntityViewUpdateUpdatableOnlyEmbeddableTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/EntityViewUpdateUpdatableOnlyEmbeddableTest.java index b3a9c12d26..6514f9be37 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/EntityViewUpdateUpdatableOnlyEmbeddableTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/EntityViewUpdateUpdatableOnlyEmbeddableTest.java @@ -21,16 +21,9 @@ import com.blazebit.persistence.view.EntityViews; import com.blazebit.persistence.view.spi.EntityViewConfiguration; import com.blazebit.persistence.view.testsuite.AbstractEntityViewTest; -import com.blazebit.persistence.view.testsuite.update.embeddable.updatableonly.model.FullUpdatableDocumentEmbeddableView; -import com.blazebit.persistence.view.testsuite.update.embeddable.updatableonly.model.LazyUpdatableDocumentEmbeddableView; -import com.blazebit.persistence.view.testsuite.update.embeddable.updatableonly.model.PartialUpdatableDocumentEmbeddableView; +import com.blazebit.persistence.view.testsuite.update.embeddable.updatableonly.model.UpdatableDocumentEmbeddableView; import org.junit.Test; import org.junit.experimental.categories.Category; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; - -import java.util.Arrays; -import java.util.Collection; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; @@ -40,30 +33,14 @@ * @author Christian Beikov * @since 1.2.0 */ -@RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) public class EntityViewUpdateUpdatableOnlyEmbeddableTest extends AbstractEntityViewTest { - protected Class viewType; - - public EntityViewUpdateUpdatableOnlyEmbeddableTest(Class viewType) { - this.viewType = viewType; - } - - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { LazyUpdatableDocumentEmbeddableView.class }, - { PartialUpdatableDocumentEmbeddableView.class }, - { FullUpdatableDocumentEmbeddableView.class } - }); - } - @Test public void testValidateInvalidConfiguration() { EntityViewConfiguration cfg = EntityViews.createDefaultConfiguration(); - cfg.addEntityView(viewType); + cfg.addEntityView(UpdatableDocumentEmbeddableView.class); try { evm = cfg.createEntityViewManager(cbf); fail("Expected failure because of invalid attribute definition!"); diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/model/FullUpdatableDocumentEmbeddableView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/model/FullUpdatableDocumentEmbeddableView.java deleted file mode 100644 index 57eb8d5369..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/model/FullUpdatableDocumentEmbeddableView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.embeddable.updatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentEmbeddableView extends UpdatableDocumentEmbeddableView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/model/FullUpdatableDocumentEmbeddableWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/model/FullUpdatableDocumentEmbeddableWithCollectionsView.java deleted file mode 100644 index 1b28dd05df..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/model/FullUpdatableDocumentEmbeddableWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.embeddable.updatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentEmbeddableWithCollectionsView extends UpdatableDocumentEmbeddableWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/model/FullUpdatableDocumentEmbeddableWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/model/FullUpdatableDocumentEmbeddableWithMapsView.java deleted file mode 100644 index 40d100447e..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/model/FullUpdatableDocumentEmbeddableWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.embeddable.updatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentEmbeddableWithMapsView extends UpdatableDocumentEmbeddableWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/model/LazyUpdatableDocumentEmbeddableView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/model/LazyUpdatableDocumentEmbeddableView.java deleted file mode 100644 index 380d9e5c60..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/model/LazyUpdatableDocumentEmbeddableView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.embeddable.updatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentEmbeddableView extends UpdatableDocumentEmbeddableView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/model/LazyUpdatableDocumentEmbeddableWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/model/LazyUpdatableDocumentEmbeddableWithCollectionsView.java deleted file mode 100644 index ac6f787bcd..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/model/LazyUpdatableDocumentEmbeddableWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.embeddable.updatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentEmbeddableWithCollectionsView extends UpdatableDocumentEmbeddableWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/model/LazyUpdatableDocumentEmbeddableWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/model/LazyUpdatableDocumentEmbeddableWithMapsView.java deleted file mode 100644 index 6160a08ee1..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/model/LazyUpdatableDocumentEmbeddableWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.embeddable.updatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentEmbeddableWithMapsView extends UpdatableDocumentEmbeddableWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/model/PartialUpdatableDocumentEmbeddableView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/model/PartialUpdatableDocumentEmbeddableView.java deleted file mode 100644 index 6433154afb..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/model/PartialUpdatableDocumentEmbeddableView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.embeddable.updatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentEmbeddableView extends UpdatableDocumentEmbeddableView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/model/PartialUpdatableDocumentEmbeddableWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/model/PartialUpdatableDocumentEmbeddableWithCollectionsView.java deleted file mode 100644 index 3c57047b60..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/model/PartialUpdatableDocumentEmbeddableWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.embeddable.updatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentEmbeddableWithCollectionsView extends UpdatableDocumentEmbeddableWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/model/PartialUpdatableDocumentEmbeddableWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/model/PartialUpdatableDocumentEmbeddableWithMapsView.java deleted file mode 100644 index 6d892c0313..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/model/PartialUpdatableDocumentEmbeddableWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.embeddable.updatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentEmbeddableWithMapsView extends UpdatableDocumentEmbeddableWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/model/UpdatableDocumentEmbeddableView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/model/UpdatableDocumentEmbeddableView.java index ff1a47132a..4d26431f74 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/model/UpdatableDocumentEmbeddableView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/model/UpdatableDocumentEmbeddableView.java @@ -17,14 +17,13 @@ package com.blazebit.persistence.view.testsuite.update.embeddable.updatableonly.model; import com.blazebit.persistence.testsuite.entity.NameObject; -import com.blazebit.persistence.view.CascadeType; import com.blazebit.persistence.view.UpdatableMapping; import com.blazebit.persistence.view.testsuite.update.embeddable.model.UpdatableDocumentEmbeddableViewBase; /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ public interface UpdatableDocumentEmbeddableView extends UpdatableDocumentEmbeddableViewBase { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/model/UpdatableDocumentEmbeddableWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/model/UpdatableDocumentEmbeddableWithCollectionsView.java index 46e301d3b8..969559e90c 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/model/UpdatableDocumentEmbeddableWithCollectionsView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/model/UpdatableDocumentEmbeddableWithCollectionsView.java @@ -17,7 +17,6 @@ package com.blazebit.persistence.view.testsuite.update.embeddable.updatableonly.model; import com.blazebit.persistence.testsuite.entity.NameObject; -import com.blazebit.persistence.view.CascadeType; import com.blazebit.persistence.view.UpdatableMapping; import com.blazebit.persistence.view.testsuite.update.embeddable.model.UpdatableDocumentEmbeddableWithCollectionsViewBase; @@ -26,7 +25,7 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ public interface UpdatableDocumentEmbeddableWithCollectionsView extends UpdatableDocumentEmbeddableWithCollectionsViewBase { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/model/UpdatableDocumentEmbeddableWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/model/UpdatableDocumentEmbeddableWithMapsView.java index f51203eebd..20961f1cc6 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/model/UpdatableDocumentEmbeddableWithMapsView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/embeddable/updatableonly/model/UpdatableDocumentEmbeddableWithMapsView.java @@ -17,7 +17,6 @@ package com.blazebit.persistence.view.testsuite.update.embeddable.updatableonly.model; import com.blazebit.persistence.testsuite.entity.NameObject; -import com.blazebit.persistence.view.CascadeType; import com.blazebit.persistence.view.UpdatableMapping; import com.blazebit.persistence.view.testsuite.update.embeddable.model.UpdatableDocumentEmbeddableWithMapsViewBase; @@ -26,7 +25,7 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ public interface UpdatableDocumentEmbeddableWithMapsView extends UpdatableDocumentEmbeddableWithMapsViewBase { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/AbstractEntityViewUpdateEntityCollectionsTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/AbstractEntityViewUpdateEntityCollectionsTest.java index d920a3c987..e8c67970dd 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/AbstractEntityViewUpdateEntityCollectionsTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/AbstractEntityViewUpdateEntityCollectionsTest.java @@ -17,20 +17,28 @@ package com.blazebit.persistence.view.testsuite.update.entity; import com.blazebit.persistence.testsuite.entity.Person; +import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.testsuite.update.AbstractEntityViewUpdateTest; import com.blazebit.persistence.view.testsuite.update.entity.model.UpdatableDocumentEntityWithCollectionsViewBase; +import org.junit.runners.Parameterized; import java.util.ArrayList; /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ public abstract class AbstractEntityViewUpdateEntityCollectionsTest extends AbstractEntityViewUpdateTest { - public AbstractEntityViewUpdateEntityCollectionsTest(Class viewType) { - super(viewType); + public AbstractEntityViewUpdateEntityCollectionsTest(FlushMode mode, FlushStrategy strategy, Class viewType) { + super(mode, strategy, viewType); + } + + @Parameterized.Parameters(name = "{0} - {1}") + public static Object[][] combinations() { + return MODE_STRATEGY_COMBINATIONS; } public T replaceCollection() { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/AbstractEntityViewUpdateEntityMapsTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/AbstractEntityViewUpdateEntityMapsTest.java index c4cc3f4c2d..35a7763fd1 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/AbstractEntityViewUpdateEntityMapsTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/AbstractEntityViewUpdateEntityMapsTest.java @@ -17,20 +17,28 @@ package com.blazebit.persistence.view.testsuite.update.entity; import com.blazebit.persistence.testsuite.entity.Person; +import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.testsuite.update.AbstractEntityViewUpdateTest; import com.blazebit.persistence.view.testsuite.update.entity.model.UpdatableDocumentEntityWithMapsViewBase; +import org.junit.runners.Parameterized; import java.util.HashMap; /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ public abstract class AbstractEntityViewUpdateEntityMapsTest extends AbstractEntityViewUpdateTest { - public AbstractEntityViewUpdateEntityMapsTest(Class viewType) { - super(viewType); + public AbstractEntityViewUpdateEntityMapsTest(FlushMode mode, FlushStrategy strategy, Class viewType) { + super(mode, strategy, viewType); + } + + @Parameterized.Parameters(name = "{0} - {1}") + public static Object[][] combinations() { + return MODE_STRATEGY_COMBINATIONS; } public T replaceCollection() { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/AbstractEntityViewUpdateEntityTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/AbstractEntityViewUpdateEntityTest.java index 463515d46f..9be23946c9 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/AbstractEntityViewUpdateEntityTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/AbstractEntityViewUpdateEntityTest.java @@ -17,18 +17,26 @@ package com.blazebit.persistence.view.testsuite.update.entity; import com.blazebit.persistence.testsuite.entity.Person; +import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.testsuite.update.AbstractEntityViewUpdateTest; import com.blazebit.persistence.view.testsuite.update.entity.model.UpdatableDocumentEntityViewBase; +import org.junit.runners.Parameterized; /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ public abstract class AbstractEntityViewUpdateEntityTest extends AbstractEntityViewUpdateTest { - public AbstractEntityViewUpdateEntityTest(Class viewType) { - super(viewType); + public AbstractEntityViewUpdateEntityTest(FlushMode mode, FlushStrategy strategy, Class viewType) { + super(mode, strategy, viewType); + } + + @Parameterized.Parameters(name = "{0} - {1}") + public static Object[][] combinations() { + return MODE_STRATEGY_COMBINATIONS; } public T simpleUpdate() { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/EntityViewUpdateCreatableEntityCollectionsTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/EntityViewUpdateCreatableEntityCollectionsTest.java index afd10edfd3..61f5b09f32 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/EntityViewUpdateCreatableEntityCollectionsTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/EntityViewUpdateCreatableEntityCollectionsTest.java @@ -21,18 +21,15 @@ import com.blazebit.persistence.testsuite.base.category.NoEclipselink; import com.blazebit.persistence.testsuite.entity.Document; import com.blazebit.persistence.testsuite.entity.Person; +import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.testsuite.update.entity.AbstractEntityViewUpdateEntityCollectionsTest; -import com.blazebit.persistence.view.testsuite.update.entity.creatable.model.FullUpdatableDocumentEntityWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.entity.creatable.model.LazyUpdatableDocumentEntityWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.entity.creatable.model.PartialUpdatableDocumentEntityWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.entity.model.UpdatableDocumentEntityWithCollectionsViewBase; +import com.blazebit.persistence.view.testsuite.update.entity.creatable.model.UpdatableDocumentEntityWithCollectionsView; import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; -import java.util.Arrays; -import java.util.Collection; import java.util.Iterator; import static org.junit.Assert.assertEquals; @@ -41,30 +38,21 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ @RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) -public class EntityViewUpdateCreatableEntityCollectionsTest extends AbstractEntityViewUpdateEntityCollectionsTest { +public class EntityViewUpdateCreatableEntityCollectionsTest extends AbstractEntityViewUpdateEntityCollectionsTest { - public EntityViewUpdateCreatableEntityCollectionsTest(Class viewType) { - super(viewType); - } - - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { LazyUpdatableDocumentEntityWithCollectionsView.class }, - { PartialUpdatableDocumentEntityWithCollectionsView.class }, - { FullUpdatableDocumentEntityWithCollectionsView.class } - }); + public EntityViewUpdateCreatableEntityCollectionsTest(FlushMode mode, FlushStrategy strategy) { + super(mode, strategy, UpdatableDocumentEntityWithCollectionsView.class); } @Test public void testUpdateReplaceCollection() { // Given & When - final T docView = replaceCollection(); + final UpdatableDocumentEntityWithCollectionsView docView = replaceCollection(); // Then // We only fetch the document and the collection in full mode @@ -85,7 +73,7 @@ public void testUpdateReplaceCollection() { @Test public void testUpdateAddToCollection() { // Given & When - final T docView = addToCollection(); + final UpdatableDocumentEntityWithCollectionsView docView = addToCollection(); // Then // Assert that the document and the people are loaded i.e. a full fetch @@ -104,7 +92,7 @@ public void testUpdateAddToCollection() { @Test public void testUpdateAddToNewCollection() { // Given & When - final T docView = addToNewCollection(); + final UpdatableDocumentEntityWithCollectionsView docView = addToNewCollection(); // Then // Assert that the document and the people are loaded i.e. a full fetch @@ -124,7 +112,7 @@ public void testUpdateAddToNewCollection() { @Test public void testUpdateAddToCollectionAndModifyEntity() { // Given & When - final T docView = addToCollectionAndModifyEntity(); + final UpdatableDocumentEntityWithCollectionsView docView = addToCollectionAndModifyEntity(); // Then // Assert that the document and the people are loaded i.e. a full fetch @@ -144,7 +132,7 @@ public void testUpdateAddToCollectionAndModifyEntity() { @Test public void testUpdateAddToNewCollectionAndModifyEntity() { // Given & When - final T docView = addToNewCollectionAndModifyEntity(); + final UpdatableDocumentEntityWithCollectionsView docView = addToNewCollectionAndModifyEntity(); // Then // Assert that the document and the people are loaded i.e. a full fetch @@ -165,7 +153,7 @@ public void testUpdateAddToNewCollectionAndModifyEntity() { @Test public void testUpdateModifyEntityInCollection() { // Given & When - final T docView = modifyEntityInCollection(); + final UpdatableDocumentEntityWithCollectionsView docView = modifyEntityInCollection(); // Then // Assert that the document and the people are loaded i.e. a full fetch @@ -178,7 +166,7 @@ public void testUpdateModifyEntityInCollection() { @Test public void testUpdateAddNullToCollection() { // Given & When - final T docView = addNullToCollection(); + final UpdatableDocumentEntityWithCollectionsView docView = addNullToCollection(); // Then // Assert that the document and the people are loaded i.e. a full fetch @@ -206,7 +194,7 @@ public void testUpdateAddNullToCollection() { @Test public void testUpdateSetCollectionToNull() { // Given & When - final T docView = setCollectionToNull(); + final UpdatableDocumentEntityWithCollectionsView docView = setCollectionToNull(); // Then // Assert that only the document is loaded @@ -232,7 +220,7 @@ public void testUpdateSetCollectionToNull() { @Test public void testUpdateAddNewEntityToCollection() { // Given & When - final T docView = addNewEntityToCollection(); + final UpdatableDocumentEntityWithCollectionsView docView = addNewEntityToCollection(); // Then // Assert that the document and the people are loaded i.e. a full fetch @@ -260,6 +248,12 @@ public void testUpdateAddNewEntityToCollection() { } } + @Override + protected boolean isQueryStrategy() { + // Collection changes always need to be applied on the entity model, can't do that via a query + return false; + } + @Override protected AssertStatementBuilder fullFetch(AssertStatementBuilder builder) { return builder.assertSelect() diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/EntityViewUpdateCreatableEntityMapsTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/EntityViewUpdateCreatableEntityMapsTest.java index 724eda09a8..0078cb8d9f 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/EntityViewUpdateCreatableEntityMapsTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/EntityViewUpdateCreatableEntityMapsTest.java @@ -21,50 +21,36 @@ import com.blazebit.persistence.testsuite.base.category.NoEclipselink; import com.blazebit.persistence.testsuite.entity.Document; import com.blazebit.persistence.testsuite.entity.Person; +import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.testsuite.update.entity.AbstractEntityViewUpdateEntityMapsTest; -import com.blazebit.persistence.view.testsuite.update.entity.creatable.model.FullUpdatableDocumentEntityWithMapsView; -import com.blazebit.persistence.view.testsuite.update.entity.creatable.model.LazyUpdatableDocumentEntityWithMapsView; -import com.blazebit.persistence.view.testsuite.update.entity.creatable.model.PartialUpdatableDocumentEntityWithMapsView; -import com.blazebit.persistence.view.testsuite.update.entity.model.UpdatableDocumentEntityWithMapsViewBase; +import com.blazebit.persistence.view.testsuite.update.entity.creatable.model.UpdatableDocumentEntityWithMapsView; import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; -import java.util.Arrays; -import java.util.Collection; -import java.util.Iterator; - import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ @RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) -public class EntityViewUpdateCreatableEntityMapsTest extends AbstractEntityViewUpdateEntityMapsTest { - - public EntityViewUpdateCreatableEntityMapsTest(Class viewType) { - super(viewType); - } +public class EntityViewUpdateCreatableEntityMapsTest extends AbstractEntityViewUpdateEntityMapsTest { - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { LazyUpdatableDocumentEntityWithMapsView.class }, - { PartialUpdatableDocumentEntityWithMapsView.class }, - { FullUpdatableDocumentEntityWithMapsView.class } - }); + public EntityViewUpdateCreatableEntityMapsTest(FlushMode mode, FlushStrategy strategy) { + super(mode, strategy, UpdatableDocumentEntityWithMapsView.class); } @Test public void testUpdateReplaceCollection() { // Given & When - final T docView = replaceCollection(); + final UpdatableDocumentEntityWithMapsView docView = replaceCollection(); // Then // We only fetch the document and the collection in full mode @@ -85,7 +71,7 @@ public void testUpdateReplaceCollection() { @Test public void testUpdateAddToCollection() { // Given & When - final T docView = addToCollection(); + final UpdatableDocumentEntityWithMapsView docView = addToCollection(); // Then // Assert that the document and the people are loaded i.e. a full fetch @@ -104,7 +90,7 @@ public void testUpdateAddToCollection() { @Test public void testUpdateAddToNewCollection() { // Given & When - final T docView = addToNewCollection(); + final UpdatableDocumentEntityWithMapsView docView = addToNewCollection(); // Then // Assert that the document and the people are loaded i.e. a full fetch @@ -124,7 +110,7 @@ public void testUpdateAddToNewCollection() { @Test public void testUpdateAddToCollectionAndModifyEntity() { // Given & When - final T docView = addToCollectionAndModifyEntity(); + final UpdatableDocumentEntityWithMapsView docView = addToCollectionAndModifyEntity(); // Then // Assert that the document and the people are loaded i.e. a full fetch @@ -144,7 +130,7 @@ public void testUpdateAddToCollectionAndModifyEntity() { @Test public void testUpdateAddToNewCollectionAndModifyEntity() { // Given & When - final T docView = addToNewCollectionAndModifyEntity(); + final UpdatableDocumentEntityWithMapsView docView = addToNewCollectionAndModifyEntity(); // Then // Assert that the document and the people are loaded i.e. a full fetch @@ -165,7 +151,7 @@ public void testUpdateAddToNewCollectionAndModifyEntity() { @Test public void testUpdateModifyEntityInCollection() { // Given & When - final T docView = modifyEntityInCollection(); + final UpdatableDocumentEntityWithMapsView docView = modifyEntityInCollection(); // Then // Assert that the document and the people are loaded i.e. a full fetch @@ -178,7 +164,7 @@ public void testUpdateModifyEntityInCollection() { @Test public void testUpdateAddNullToCollection() { // Given & When - final T docView = addNullToCollection(); + final UpdatableDocumentEntityWithMapsView docView = addNullToCollection(); // Then // Assert that the document and the people are loaded i.e. a full fetch @@ -206,7 +192,7 @@ public void testUpdateAddNullToCollection() { @Test public void testUpdateSetCollectionToNull() { // Given & When - final T docView = setCollectionToNull(); + final UpdatableDocumentEntityWithMapsView docView = setCollectionToNull(); // Then // Assert that only the document is loaded @@ -232,7 +218,7 @@ public void testUpdateSetCollectionToNull() { @Test public void testUpdateAddNewEntityToCollection() { // Given & When - final T docView = addNewEntityToCollection(); + final UpdatableDocumentEntityWithMapsView docView = addNewEntityToCollection(); // Then // Assert that the document and the people are loaded i.e. a full fetch @@ -251,6 +237,12 @@ public void testUpdateAddNewEntityToCollection() { assertEquals(doc1.getContacts(), docView.getContacts()); } + @Override + protected boolean isQueryStrategy() { + // Collection changes always need to be applied on the entity model, can't do that via a query + return false; + } + @Override protected AssertStatementBuilder fullFetch(AssertStatementBuilder builder) { return builder.assertSelect() diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/EntityViewUpdateCreatableEntityTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/EntityViewUpdateCreatableEntityTest.java index e2b07b6208..566bd44e36 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/EntityViewUpdateCreatableEntityTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/EntityViewUpdateCreatableEntityTest.java @@ -21,55 +21,44 @@ import com.blazebit.persistence.testsuite.base.category.NoEclipselink; import com.blazebit.persistence.testsuite.entity.Document; import com.blazebit.persistence.testsuite.entity.Person; +import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.testsuite.update.entity.AbstractEntityViewUpdateEntityTest; -import com.blazebit.persistence.view.testsuite.update.entity.creatable.model.FullUpdatableDocumentEntityView; -import com.blazebit.persistence.view.testsuite.update.entity.creatable.model.LazyUpdatableDocumentEntityView; -import com.blazebit.persistence.view.testsuite.update.entity.creatable.model.PartialUpdatableDocumentEntityView; -import com.blazebit.persistence.view.testsuite.update.entity.model.UpdatableDocumentEntityViewBase; +import com.blazebit.persistence.view.testsuite.update.entity.creatable.model.UpdatableDocumentEntityView; import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; -import java.util.Arrays; -import java.util.Collection; - import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ @RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) -public class EntityViewUpdateCreatableEntityTest extends AbstractEntityViewUpdateEntityTest { - - public EntityViewUpdateCreatableEntityTest(Class viewType) { - super(viewType); - } +public class EntityViewUpdateCreatableEntityTest extends AbstractEntityViewUpdateEntityTest { - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { LazyUpdatableDocumentEntityView.class }, - { PartialUpdatableDocumentEntityView.class }, - { FullUpdatableDocumentEntityView.class } - }); + public EntityViewUpdateCreatableEntityTest(FlushMode mode, FlushStrategy strategy) { + super(mode, strategy, UpdatableDocumentEntityView.class); } @Test public void testSimpleUpdate() { // Given & When - final T docView = simpleUpdate(); + final UpdatableDocumentEntityView docView = simpleUpdate(); // Then // Assert that not only the document is loaded AssertStatementBuilder builder = assertQuerySequence(); - fullFetch(builder); + if (!isQueryStrategy()) { + fullFetch(builder); + } builder.update(Document.class) .validate(); @@ -82,17 +71,19 @@ public void testSimpleUpdate() { @Test public void testUpdateWithEntity() { // Given & When - final T docView = updateWithEntity(); + final UpdatableDocumentEntityView docView = updateWithEntity(); // Then // Since the responsiblePerson changed we don't need to load the old responsiblePerson // Unfortunately, the new responsiblePerson has to be loaded by the JPA provider since it has to be merged AssertStatementBuilder builder = assertQuerySequence(); - if (isFullMode()) { - fullFetch(builder); - } else { - builder.select(Document.class); + if (!isQueryStrategy()) { + if (isFullMode()) { + fullFetch(builder); + } else { + builder.select(Document.class); + } } builder.update(Document.class) @@ -106,17 +97,19 @@ public void testUpdateWithEntity() { @Test public void testUpdateWithModifyEntity() { // Given & When - final T docView = updateWithModifyEntity(); + final UpdatableDocumentEntityView docView = updateWithModifyEntity(); // Then // Since the responsiblePerson changed we don't need to load the old responsiblePerson // Unfortunately, the new responsiblePerson has to be loaded by the JPA provider since it has to be merged AssertStatementBuilder builder = assertQuerySequence(); - if (isFullMode()) { - fullFetch(builder); - } else { - builder.select(Document.class); + if (!isQueryStrategy()) { + if (isFullMode()) { + fullFetch(builder); + } else { + builder.select(Document.class); + } } builder.update(Document.class) @@ -131,14 +124,20 @@ public void testUpdateWithModifyEntity() { @Test public void testUpdateWithModifyExisting() { // Given & When - final T docView = updateWithModifyExisting(); + final UpdatableDocumentEntityView docView = updateWithModifyExisting(); // Then // Since we update the old responsiblePerson, load it along with the document for updating it later AssertStatementBuilder builder = assertQuerySequence(); - if (isFullMode()) { - fullFetch(builder); + if (isQueryStrategy()) { + if (isFullMode()) { + fullUpdate(builder); + } + } else { + if (isFullMode()) { + fullFetch(builder); + } } builder.validate(); @@ -151,17 +150,19 @@ public void testUpdateWithModifyExisting() { @Test public void testUpdateToNull() { // Given & When - final T docView = updateToNull(); + final UpdatableDocumentEntityView docView = updateToNull(); // Then // Since the responsiblePerson changed we don't need to load the old responsiblePerson // Since the new responsiblePerson is null, we don't need to do anything further AssertStatementBuilder builder = assertQuerySequence(); - if (isFullMode()) { - fullFetch(builder); - } else { - builder.select(Document.class); + if (!isQueryStrategy()) { + if (isFullMode()) { + fullFetch(builder); + } else { + builder.select(Document.class); + } } builder.update(Document.class) @@ -174,17 +175,19 @@ public void testUpdateToNull() { @Test public void testUpdateToNewPerson() { // Given & When - final T docView = updateToNewPerson(); + final UpdatableDocumentEntityView docView = updateToNewPerson(); // Then // Since the responsiblePerson changed we don't need to load the old responsiblePerson // The new responsiblePerson will be persisted AssertStatementBuilder builder = assertQuerySequence(); - if (isFullMode()) { - fullFetch(builder); - } else { - builder.select(Document.class); + if (!isQueryStrategy()) { + if (isFullMode()) { + fullFetch(builder); + } else { + builder.select(Document.class); + } } builder.insert(Person.class) @@ -194,17 +197,29 @@ public void testUpdateToNewPerson() { // We always have to do a full fetch because the entity might be dirty AssertStatementBuilder afterBuilder = assertQueriesAfterUpdate(docView); - if (isFullMode()) { - fullFetch(afterBuilder); + if (isQueryStrategy()) { + if (isFullMode()) { + fullUpdate(afterBuilder); + } + } else { + if (isFullMode()) { + fullFetch(afterBuilder); + } } afterBuilder.validate(); assertEquals(docView.getResponsiblePerson().getId(), doc1.getResponsiblePerson().getId()); assertEquals("newPerson", doc1.getResponsiblePerson().getName()); } + @Override protected AssertStatementBuilder fullFetch(AssertStatementBuilder builder) { return builder.assertSelect() .fetching(Document.class) .and(); } + + @Override + protected AssertStatementBuilder fullUpdate(AssertStatementBuilder builder) { + return builder.update(Document.class); + } } diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/model/FullUpdatableDocumentEntityView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/model/FullUpdatableDocumentEntityView.java deleted file mode 100644 index d418a0bd68..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/model/FullUpdatableDocumentEntityView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.entity.creatable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentEntityView extends UpdatableDocumentEntityView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/model/FullUpdatableDocumentEntityWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/model/FullUpdatableDocumentEntityWithCollectionsView.java deleted file mode 100644 index 730683fcec..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/model/FullUpdatableDocumentEntityWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.entity.creatable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentEntityWithCollectionsView extends UpdatableDocumentEntityWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/model/FullUpdatableDocumentEntityWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/model/FullUpdatableDocumentEntityWithMapsView.java deleted file mode 100644 index 3dd18e9346..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/model/FullUpdatableDocumentEntityWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.entity.creatable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentEntityWithMapsView extends UpdatableDocumentEntityWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/model/LazyUpdatableDocumentEntityView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/model/LazyUpdatableDocumentEntityView.java deleted file mode 100644 index c1707ee014..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/model/LazyUpdatableDocumentEntityView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.entity.creatable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentEntityView extends UpdatableDocumentEntityView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/model/LazyUpdatableDocumentEntityWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/model/LazyUpdatableDocumentEntityWithCollectionsView.java deleted file mode 100644 index 23ee4f6526..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/model/LazyUpdatableDocumentEntityWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.entity.creatable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentEntityWithCollectionsView extends UpdatableDocumentEntityWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/model/LazyUpdatableDocumentEntityWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/model/LazyUpdatableDocumentEntityWithMapsView.java deleted file mode 100644 index aef16745ce..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/model/LazyUpdatableDocumentEntityWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.entity.creatable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentEntityWithMapsView extends UpdatableDocumentEntityWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/model/PartialUpdatableDocumentEntityView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/model/PartialUpdatableDocumentEntityView.java deleted file mode 100644 index e77d50db99..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/model/PartialUpdatableDocumentEntityView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.entity.creatable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentEntityView extends UpdatableDocumentEntityView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/model/PartialUpdatableDocumentEntityWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/model/PartialUpdatableDocumentEntityWithCollectionsView.java deleted file mode 100644 index 5503c76100..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/model/PartialUpdatableDocumentEntityWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.entity.creatable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentEntityWithCollectionsView extends UpdatableDocumentEntityWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/model/PartialUpdatableDocumentEntityWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/model/PartialUpdatableDocumentEntityWithMapsView.java deleted file mode 100644 index 1488ac5afa..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/model/PartialUpdatableDocumentEntityWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.entity.creatable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentEntityWithMapsView extends UpdatableDocumentEntityWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/model/UpdatableDocumentEntityView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/model/UpdatableDocumentEntityView.java index 97796a087e..f6e143896c 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/model/UpdatableDocumentEntityView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/model/UpdatableDocumentEntityView.java @@ -24,7 +24,7 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ public interface UpdatableDocumentEntityView extends UpdatableDocumentEntityViewBase { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/model/UpdatableDocumentEntityWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/model/UpdatableDocumentEntityWithCollectionsView.java index e76c34508c..2ed15fff23 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/model/UpdatableDocumentEntityWithCollectionsView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/model/UpdatableDocumentEntityWithCollectionsView.java @@ -26,7 +26,7 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ public interface UpdatableDocumentEntityWithCollectionsView extends UpdatableDocumentEntityWithCollectionsViewBase { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/model/UpdatableDocumentEntityWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/model/UpdatableDocumentEntityWithMapsView.java index eac23ed0ff..d6806b67d7 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/model/UpdatableDocumentEntityWithMapsView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatable/model/UpdatableDocumentEntityWithMapsView.java @@ -26,7 +26,7 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ public interface UpdatableDocumentEntityWithMapsView extends UpdatableDocumentEntityWithMapsViewBase { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/EntityViewUpdateCreatableOnlyEntityCollectionsTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/EntityViewUpdateCreatableOnlyEntityCollectionsTest.java index f8ac0856f6..5a164ef726 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/EntityViewUpdateCreatableOnlyEntityCollectionsTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/EntityViewUpdateCreatableOnlyEntityCollectionsTest.java @@ -21,51 +21,35 @@ import com.blazebit.persistence.testsuite.base.category.NoEclipselink; import com.blazebit.persistence.testsuite.entity.Document; import com.blazebit.persistence.testsuite.entity.Person; +import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.testsuite.update.entity.AbstractEntityViewUpdateEntityCollectionsTest; -import com.blazebit.persistence.view.testsuite.update.entity.creatableonly.model.FullUpdatableDocumentEntityWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.entity.creatableonly.model.LazyUpdatableDocumentEntityWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.entity.creatableonly.model.PartialUpdatableDocumentEntityWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.entity.model.UpdatableDocumentEntityWithCollectionsViewBase; +import com.blazebit.persistence.view.testsuite.update.entity.creatableonly.model.UpdatableDocumentEntityWithCollectionsView; import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; -import java.util.Arrays; -import java.util.Collection; -import java.util.Iterator; - import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ @RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) -public class EntityViewUpdateCreatableOnlyEntityCollectionsTest extends AbstractEntityViewUpdateEntityCollectionsTest { - - public EntityViewUpdateCreatableOnlyEntityCollectionsTest(Class viewType) { - super(viewType); - } +public class EntityViewUpdateCreatableOnlyEntityCollectionsTest extends AbstractEntityViewUpdateEntityCollectionsTest { - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { LazyUpdatableDocumentEntityWithCollectionsView.class }, - { PartialUpdatableDocumentEntityWithCollectionsView.class }, - { FullUpdatableDocumentEntityWithCollectionsView.class } - }); + public EntityViewUpdateCreatableOnlyEntityCollectionsTest(FlushMode mode, FlushStrategy strategy) { + super(mode, strategy, UpdatableDocumentEntityWithCollectionsView.class); } @Test public void testUpdateReplaceCollection() { // Given & When - final T docView = replaceCollection(); + final UpdatableDocumentEntityWithCollectionsView docView = replaceCollection(); // Then // Since only new entities are persisted, nothing happens @@ -76,7 +60,7 @@ public void testUpdateReplaceCollection() { @Test public void testUpdateAddToCollection() { // Given & When - final T docView = addToCollection(); + final UpdatableDocumentEntityWithCollectionsView docView = addToCollection(); // Then // Since only new entities are persisted, nothing happens @@ -87,7 +71,7 @@ public void testUpdateAddToCollection() { @Test public void testUpdateAddToNewCollection() { // Given & When - final T docView = addToNewCollection(); + final UpdatableDocumentEntityWithCollectionsView docView = addToNewCollection(); // Then // Since only new entities are persisted, nothing happens @@ -98,7 +82,7 @@ public void testUpdateAddToNewCollection() { @Test public void testUpdateAddToCollectionAndModifyEntity() { // Given & When - final T docView = addToCollectionAndModifyEntity(); + final UpdatableDocumentEntityWithCollectionsView docView = addToCollectionAndModifyEntity(); // Then // Since only new entities are persisted, nothing happens @@ -110,7 +94,7 @@ public void testUpdateAddToCollectionAndModifyEntity() { @Test public void testUpdateAddToNewCollectionAndModifyEntity() { // Given & When - final T docView = addToNewCollectionAndModifyEntity(); + final UpdatableDocumentEntityWithCollectionsView docView = addToNewCollectionAndModifyEntity(); // Then // Since only new entities are persisted, nothing happens @@ -122,7 +106,7 @@ public void testUpdateAddToNewCollectionAndModifyEntity() { @Test public void testUpdateModifyEntityInCollection() { // Given & When - final T docView = modifyEntityInCollection(); + final UpdatableDocumentEntityWithCollectionsView docView = modifyEntityInCollection(); // Then // Since only new entities are persisted, nothing happens @@ -134,7 +118,7 @@ public void testUpdateModifyEntityInCollection() { @Test public void testUpdateAddNullToCollection() { // Given & When - final T docView = addNullToCollection(); + final UpdatableDocumentEntityWithCollectionsView docView = addNullToCollection(); // Then // Since only new entities are persisted, nothing happens @@ -145,7 +129,7 @@ public void testUpdateAddNullToCollection() { @Test public void testUpdateSetCollectionToNull() { // Given & When - final T docView = setCollectionToNull(); + final UpdatableDocumentEntityWithCollectionsView docView = setCollectionToNull(); // Then // Nothing happens since the collection is not updatable but was nulled @@ -156,7 +140,7 @@ public void testUpdateSetCollectionToNull() { @Test public void testUpdateAddNewEntityToCollection() { // Given & When - final T docView = addNewEntityToCollection(); + final UpdatableDocumentEntityWithCollectionsView docView = addNewEntityToCollection(); // Then // Assert that the document and the people are loaded i.e. a full fetch @@ -175,6 +159,12 @@ public void testUpdateAddNewEntityToCollection() { assertNoUpdateAndReload(docView); } + @Override + protected boolean isQueryStrategy() { + // Collection changes always need to be applied on the entity model, can't do that via a query + return false; + } + @Override protected AssertStatementBuilder fullFetch(AssertStatementBuilder builder) { return builder.assertSelect() diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/EntityViewUpdateCreatableOnlyEntityMapsTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/EntityViewUpdateCreatableOnlyEntityMapsTest.java index cf61c7db4c..6a659b81af 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/EntityViewUpdateCreatableOnlyEntityMapsTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/EntityViewUpdateCreatableOnlyEntityMapsTest.java @@ -21,49 +21,35 @@ import com.blazebit.persistence.testsuite.base.category.NoEclipselink; import com.blazebit.persistence.testsuite.entity.Document; import com.blazebit.persistence.testsuite.entity.Person; -import com.blazebit.persistence.view.testsuite.update.entity.AbstractEntityViewUpdateEntityCollectionsTest; +import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.testsuite.update.entity.AbstractEntityViewUpdateEntityMapsTest; -import com.blazebit.persistence.view.testsuite.update.entity.creatableonly.model.FullUpdatableDocumentEntityWithMapsView; -import com.blazebit.persistence.view.testsuite.update.entity.creatableonly.model.LazyUpdatableDocumentEntityWithMapsView; -import com.blazebit.persistence.view.testsuite.update.entity.creatableonly.model.PartialUpdatableDocumentEntityWithMapsView; -import com.blazebit.persistence.view.testsuite.update.entity.model.UpdatableDocumentEntityWithMapsViewBase; +import com.blazebit.persistence.view.testsuite.update.entity.creatableonly.model.UpdatableDocumentEntityWithMapsView; import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; -import java.util.Arrays; -import java.util.Collection; - import static org.junit.Assert.assertEquals; /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ @RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) -public class EntityViewUpdateCreatableOnlyEntityMapsTest extends AbstractEntityViewUpdateEntityMapsTest { - - public EntityViewUpdateCreatableOnlyEntityMapsTest(Class viewType) { - super(viewType); - } +public class EntityViewUpdateCreatableOnlyEntityMapsTest extends AbstractEntityViewUpdateEntityMapsTest { - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { LazyUpdatableDocumentEntityWithMapsView.class }, - { PartialUpdatableDocumentEntityWithMapsView.class }, - { FullUpdatableDocumentEntityWithMapsView.class } - }); + public EntityViewUpdateCreatableOnlyEntityMapsTest(FlushMode mode, FlushStrategy strategy) { + super(mode, strategy, UpdatableDocumentEntityWithMapsView.class); } @Test public void testUpdateReplaceCollection() { // Given & When - final T docView = replaceCollection(); + final UpdatableDocumentEntityWithMapsView docView = replaceCollection(); // Then // Since only new entities are persisted, nothing happens @@ -74,7 +60,7 @@ public void testUpdateReplaceCollection() { @Test public void testUpdateAddToCollection() { // Given & When - final T docView = addToCollection(); + final UpdatableDocumentEntityWithMapsView docView = addToCollection(); // Then // Since only new entities are persisted, nothing happens @@ -85,7 +71,7 @@ public void testUpdateAddToCollection() { @Test public void testUpdateAddToNewCollection() { // Given & When - final T docView = addToNewCollection(); + final UpdatableDocumentEntityWithMapsView docView = addToNewCollection(); // Then // Since only new entities are persisted, nothing happens @@ -96,7 +82,7 @@ public void testUpdateAddToNewCollection() { @Test public void testUpdateAddToCollectionAndModifyEntity() { // Given & When - final T docView = addToCollectionAndModifyEntity(); + final UpdatableDocumentEntityWithMapsView docView = addToCollectionAndModifyEntity(); // Then // Since only new entities are persisted, nothing happens @@ -108,7 +94,7 @@ public void testUpdateAddToCollectionAndModifyEntity() { @Test public void testUpdateAddToNewCollectionAndModifyEntity() { // Given & When - final T docView = addToNewCollectionAndModifyEntity(); + final UpdatableDocumentEntityWithMapsView docView = addToNewCollectionAndModifyEntity(); // Then // Since only new entities are persisted, nothing happens @@ -120,7 +106,7 @@ public void testUpdateAddToNewCollectionAndModifyEntity() { @Test public void testUpdateModifyEntityInCollection() { // Given & When - final T docView = modifyEntityInCollection(); + final UpdatableDocumentEntityWithMapsView docView = modifyEntityInCollection(); // Then // Since only new entities are persisted, nothing happens @@ -132,7 +118,7 @@ public void testUpdateModifyEntityInCollection() { @Test public void testUpdateAddNullToCollection() { // Given & When - final T docView = addNullToCollection(); + final UpdatableDocumentEntityWithMapsView docView = addNullToCollection(); // Then // Since only new entities are persisted, nothing happens @@ -143,7 +129,7 @@ public void testUpdateAddNullToCollection() { @Test public void testUpdateSetCollectionToNull() { // Given & When - final T docView = setCollectionToNull(); + final UpdatableDocumentEntityWithMapsView docView = setCollectionToNull(); // Then // Nothing happens since the collection is not updatable but was nulled @@ -154,7 +140,7 @@ public void testUpdateSetCollectionToNull() { @Test public void testUpdateAddNewEntityToCollection() { // Given & When - final T docView = addNewEntityToCollection(); + final UpdatableDocumentEntityWithMapsView docView = addNewEntityToCollection(); // Then // Assert that the document and the people are loaded i.e. a full fetch @@ -173,6 +159,12 @@ public void testUpdateAddNewEntityToCollection() { assertNoUpdateAndReload(docView); } + @Override + protected boolean isQueryStrategy() { + // Collection changes always need to be applied on the entity model, can't do that via a query + return false; + } + @Override protected AssertStatementBuilder fullFetch(AssertStatementBuilder builder) { return builder.assertSelect() diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/EntityViewUpdateCreatableOnlyEntityTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/EntityViewUpdateCreatableOnlyEntityTest.java index ccfecb6c12..81f1f55f74 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/EntityViewUpdateCreatableOnlyEntityTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/EntityViewUpdateCreatableOnlyEntityTest.java @@ -20,50 +20,35 @@ import com.blazebit.persistence.testsuite.base.category.NoDatanucleus; import com.blazebit.persistence.testsuite.base.category.NoEclipselink; import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.testsuite.entity.Person; +import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.testsuite.update.entity.AbstractEntityViewUpdateEntityTest; -import com.blazebit.persistence.view.testsuite.update.entity.creatableonly.model.FullUpdatableDocumentEntityView; -import com.blazebit.persistence.view.testsuite.update.entity.creatableonly.model.LazyUpdatableDocumentEntityView; -import com.blazebit.persistence.view.testsuite.update.entity.creatableonly.model.PartialUpdatableDocumentEntityView; -import com.blazebit.persistence.view.testsuite.update.entity.model.UpdatableDocumentEntityViewBase; +import com.blazebit.persistence.view.testsuite.update.entity.creatableonly.model.UpdatableDocumentEntityView; import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; -import java.util.Arrays; -import java.util.Collection; - import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ @RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) -public class EntityViewUpdateCreatableOnlyEntityTest extends AbstractEntityViewUpdateEntityTest { - - public EntityViewUpdateCreatableOnlyEntityTest(Class viewType) { - super(viewType); - } +public class EntityViewUpdateCreatableOnlyEntityTest extends AbstractEntityViewUpdateEntityTest { - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { LazyUpdatableDocumentEntityView.class }, - { PartialUpdatableDocumentEntityView.class }, - { FullUpdatableDocumentEntityView.class } - }); + public EntityViewUpdateCreatableOnlyEntityTest(FlushMode mode, FlushStrategy strategy) { + super(mode, strategy, UpdatableDocumentEntityView.class); } @Test public void testSimpleUpdate() { // Given & When - final T docView = simpleUpdate(); + final UpdatableDocumentEntityView docView = simpleUpdate(); // Then // Assert that not only the document is loaded, but also always the responsiblePerson @@ -71,7 +56,9 @@ public void testSimpleUpdate() { // but since we don't know if entities are dirty, we need to be conservative and load the object AssertStatementBuilder builder = assertQuerySequence(); - fullFetch(builder); + if (!isQueryStrategy()) { + fullFetch(builder); + } builder.update(Document.class) .validate(); @@ -84,7 +71,7 @@ public void testSimpleUpdate() { @Test public void testUpdateWithEntity() { // Given & When - final T docView = updateWithEntity(); + final UpdatableDocumentEntityView docView = updateWithEntity(); // Then // Nothing to do here as the responsiblePerson is not updatable @@ -95,7 +82,7 @@ public void testUpdateWithEntity() { @Test public void testUpdateWithModifyEntity() { // Given & When - final T docView = updateWithModifyEntity(); + final UpdatableDocumentEntityView docView = updateWithModifyEntity(); // Then // Nothing to do here as the responsiblePerson is not updatable @@ -106,7 +93,7 @@ public void testUpdateWithModifyEntity() { @Test public void testUpdateWithModifyExisting() { // Given & When - final T docView = updateWithModifyExisting(); + final UpdatableDocumentEntityView docView = updateWithModifyExisting(); // Then // Nothing to do here as the responsiblePerson is not updatable @@ -117,7 +104,7 @@ public void testUpdateWithModifyExisting() { @Test public void testUpdateToNull() { // Given & When - final T docView = updateToNull(); + final UpdatableDocumentEntityView docView = updateToNull(); // Then // Nothing to do here as the responsiblePerson is not updatable @@ -128,7 +115,7 @@ public void testUpdateToNull() { @Test public void testUpdateToNewPerson() { // Given & When - final T docView = updateToNewPerson(); + final UpdatableDocumentEntityView docView = updateToNewPerson(); // Then // Nothing to do here as the responsiblePerson is not updatable @@ -136,9 +123,15 @@ public void testUpdateToNewPerson() { assertEquals(p1.getId(), doc1.getResponsiblePerson().getId()); } + @Override protected AssertStatementBuilder fullFetch(AssertStatementBuilder builder) { return builder.assertSelect() .fetching(Document.class) .and(); } + + @Override + protected AssertStatementBuilder fullUpdate(AssertStatementBuilder builder) { + return builder.update(Document.class); + } } diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/model/FullUpdatableDocumentEntityView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/model/FullUpdatableDocumentEntityView.java deleted file mode 100644 index 374077d2d8..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/model/FullUpdatableDocumentEntityView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.entity.creatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentEntityView extends UpdatableDocumentEntityView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/model/FullUpdatableDocumentEntityWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/model/FullUpdatableDocumentEntityWithCollectionsView.java deleted file mode 100644 index 7fb724c9eb..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/model/FullUpdatableDocumentEntityWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.entity.creatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentEntityWithCollectionsView extends UpdatableDocumentEntityWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/model/FullUpdatableDocumentEntityWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/model/FullUpdatableDocumentEntityWithMapsView.java deleted file mode 100644 index 4cfc0b1a7b..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/model/FullUpdatableDocumentEntityWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.entity.creatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentEntityWithMapsView extends UpdatableDocumentEntityWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/model/LazyUpdatableDocumentEntityView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/model/LazyUpdatableDocumentEntityView.java deleted file mode 100644 index 3f8ff8f40a..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/model/LazyUpdatableDocumentEntityView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.entity.creatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentEntityView extends UpdatableDocumentEntityView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/model/LazyUpdatableDocumentEntityWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/model/LazyUpdatableDocumentEntityWithCollectionsView.java deleted file mode 100644 index 8ecaa44f8e..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/model/LazyUpdatableDocumentEntityWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.entity.creatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentEntityWithCollectionsView extends UpdatableDocumentEntityWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/model/LazyUpdatableDocumentEntityWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/model/LazyUpdatableDocumentEntityWithMapsView.java deleted file mode 100644 index ac5f727e9f..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/model/LazyUpdatableDocumentEntityWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.entity.creatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentEntityWithMapsView extends UpdatableDocumentEntityWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/model/PartialUpdatableDocumentEntityView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/model/PartialUpdatableDocumentEntityView.java deleted file mode 100644 index a7be4e3f54..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/model/PartialUpdatableDocumentEntityView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.entity.creatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentEntityView extends UpdatableDocumentEntityView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/model/PartialUpdatableDocumentEntityWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/model/PartialUpdatableDocumentEntityWithCollectionsView.java deleted file mode 100644 index 91abcd4e24..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/model/PartialUpdatableDocumentEntityWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.entity.creatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentEntityWithCollectionsView extends UpdatableDocumentEntityWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/model/PartialUpdatableDocumentEntityWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/model/PartialUpdatableDocumentEntityWithMapsView.java deleted file mode 100644 index 7e0770ac6f..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/model/PartialUpdatableDocumentEntityWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.entity.creatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentEntityWithMapsView extends UpdatableDocumentEntityWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/model/UpdatableDocumentEntityView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/model/UpdatableDocumentEntityView.java index 392ab7e060..2c3f0e2d62 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/model/UpdatableDocumentEntityView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/model/UpdatableDocumentEntityView.java @@ -24,7 +24,7 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ public interface UpdatableDocumentEntityView extends UpdatableDocumentEntityViewBase { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/model/UpdatableDocumentEntityWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/model/UpdatableDocumentEntityWithCollectionsView.java index 3bd8947d4a..4654110d88 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/model/UpdatableDocumentEntityWithCollectionsView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/model/UpdatableDocumentEntityWithCollectionsView.java @@ -26,7 +26,7 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ public interface UpdatableDocumentEntityWithCollectionsView extends UpdatableDocumentEntityWithCollectionsViewBase { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/model/UpdatableDocumentEntityWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/model/UpdatableDocumentEntityWithMapsView.java index bd355c8e5c..7f88d7fda1 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/model/UpdatableDocumentEntityWithMapsView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/creatableonly/model/UpdatableDocumentEntityWithMapsView.java @@ -26,7 +26,7 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ public interface UpdatableDocumentEntityWithMapsView extends UpdatableDocumentEntityWithMapsViewBase { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/model/UpdatableDocumentEntityViewBase.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/model/UpdatableDocumentEntityViewBase.java index 080bec9457..03a919fb5e 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/model/UpdatableDocumentEntityViewBase.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/model/UpdatableDocumentEntityViewBase.java @@ -16,16 +16,21 @@ package com.blazebit.persistence.view.testsuite.update.entity.model; +import com.blazebit.persistence.testsuite.entity.Document; import com.blazebit.persistence.testsuite.entity.Person; +import com.blazebit.persistence.view.EntityView; import com.blazebit.persistence.view.IdMapping; +import com.blazebit.persistence.view.UpdatableEntityView; import java.util.Date; /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ +@UpdatableEntityView +@EntityView(Document.class) public interface UpdatableDocumentEntityViewBase { @IdMapping("id") diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/model/UpdatableDocumentEntityWithCollectionsViewBase.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/model/UpdatableDocumentEntityWithCollectionsViewBase.java index 7b03e63f46..b7903f97a4 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/model/UpdatableDocumentEntityWithCollectionsViewBase.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/model/UpdatableDocumentEntityWithCollectionsViewBase.java @@ -16,16 +16,21 @@ package com.blazebit.persistence.view.testsuite.update.entity.model; +import com.blazebit.persistence.testsuite.entity.Document; import com.blazebit.persistence.testsuite.entity.Person; +import com.blazebit.persistence.view.EntityView; import com.blazebit.persistence.view.IdMapping; +import com.blazebit.persistence.view.UpdatableEntityView; import java.util.List; /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ +@UpdatableEntityView +@EntityView(Document.class) public interface UpdatableDocumentEntityWithCollectionsViewBase { @IdMapping("id") diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/model/UpdatableDocumentEntityWithMapsViewBase.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/model/UpdatableDocumentEntityWithMapsViewBase.java index 95fdd50490..bbf61670ea 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/model/UpdatableDocumentEntityWithMapsViewBase.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/model/UpdatableDocumentEntityWithMapsViewBase.java @@ -16,17 +16,21 @@ package com.blazebit.persistence.view.testsuite.update.entity.model; +import com.blazebit.persistence.testsuite.entity.Document; import com.blazebit.persistence.testsuite.entity.Person; +import com.blazebit.persistence.view.EntityView; import com.blazebit.persistence.view.IdMapping; +import com.blazebit.persistence.view.UpdatableEntityView; -import java.util.List; import java.util.Map; /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ +@UpdatableEntityView +@EntityView(Document.class) public interface UpdatableDocumentEntityWithMapsViewBase { @IdMapping("id") diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/EntityViewUpdateMutableEntityCollectionsTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/EntityViewUpdateMutableEntityCollectionsTest.java index 76ad2ed84e..2b68679fcb 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/EntityViewUpdateMutableEntityCollectionsTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/EntityViewUpdateMutableEntityCollectionsTest.java @@ -21,18 +21,15 @@ import com.blazebit.persistence.testsuite.base.category.NoEclipselink; import com.blazebit.persistence.testsuite.entity.Document; import com.blazebit.persistence.testsuite.entity.Person; +import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.testsuite.update.entity.AbstractEntityViewUpdateEntityCollectionsTest; -import com.blazebit.persistence.view.testsuite.update.entity.model.UpdatableDocumentEntityWithCollectionsViewBase; -import com.blazebit.persistence.view.testsuite.update.entity.mutable.model.FullUpdatableDocumentEntityWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.entity.mutable.model.LazyUpdatableDocumentEntityWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.entity.mutable.model.PartialUpdatableDocumentEntityWithCollectionsView; +import com.blazebit.persistence.view.testsuite.update.entity.mutable.model.UpdatableDocumentEntityWithCollectionsView; import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; -import java.util.Arrays; -import java.util.Collection; import java.util.Iterator; import static org.junit.Assert.assertEquals; @@ -41,30 +38,21 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ @RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) -public class EntityViewUpdateMutableEntityCollectionsTest extends AbstractEntityViewUpdateEntityCollectionsTest { +public class EntityViewUpdateMutableEntityCollectionsTest extends AbstractEntityViewUpdateEntityCollectionsTest { - public EntityViewUpdateMutableEntityCollectionsTest(Class viewType) { - super(viewType); - } - - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { LazyUpdatableDocumentEntityWithCollectionsView.class }, - { PartialUpdatableDocumentEntityWithCollectionsView.class }, - { FullUpdatableDocumentEntityWithCollectionsView.class } - }); + public EntityViewUpdateMutableEntityCollectionsTest(FlushMode mode, FlushStrategy strategy) { + super(mode, strategy, UpdatableDocumentEntityWithCollectionsView.class); } @Test public void testUpdateReplaceCollection() { // Given & When - final T docView = replaceCollection(); + final UpdatableDocumentEntityWithCollectionsView docView = replaceCollection(); // Then // Since entities are mutable, assert that the document and the people are loaded always loaded. @@ -82,7 +70,7 @@ public void testUpdateReplaceCollection() { @Test public void testUpdateAddToCollection() { // Given & When - final T docView = addToCollection(); + final UpdatableDocumentEntityWithCollectionsView docView = addToCollection(); // Then // Assert that the document and the people are loaded i.e. a full fetch @@ -104,7 +92,7 @@ public void testUpdateAddToCollection() { @Test public void testUpdateAddToNewCollection() { // Given & When - final T docView = addToNewCollection(); + final UpdatableDocumentEntityWithCollectionsView docView = addToNewCollection(); // Then // Assert that the document and the people are loaded i.e. a full fetch @@ -126,7 +114,7 @@ public void testUpdateAddToNewCollection() { @Test public void testUpdateAddToCollectionAndModifyEntity() { // Given & When - final T docView = addToCollectionAndModifyEntity(); + final UpdatableDocumentEntityWithCollectionsView docView = addToCollectionAndModifyEntity(); // Then // Assert that the document and the people are loaded i.e. a full fetch @@ -151,7 +139,7 @@ public void testUpdateAddToCollectionAndModifyEntity() { @Test public void testUpdateAddToNewCollectionAndModifyEntity() { // Given & When - final T docView = addToNewCollectionAndModifyEntity(); + final UpdatableDocumentEntityWithCollectionsView docView = addToNewCollectionAndModifyEntity(); // Then // Assert that the document and the people are loaded i.e. a full fetch @@ -176,7 +164,7 @@ public void testUpdateAddToNewCollectionAndModifyEntity() { @Test public void testUpdateModifyEntityInCollection() { // Given & When - final T docView = modifyEntityInCollection(); + final UpdatableDocumentEntityWithCollectionsView docView = modifyEntityInCollection(); // Then // Assert that the document and the people are loaded i.e. a full fetch @@ -197,7 +185,7 @@ public void testUpdateModifyEntityInCollection() { @Test public void testUpdateAddNullToCollection() { // Given & When - final T docView = addNullToCollection(); + final UpdatableDocumentEntityWithCollectionsView docView = addNullToCollection(); // Then // Assert that the document and the people are loaded i.e. a full fetch @@ -226,7 +214,7 @@ public void testUpdateAddNullToCollection() { @Test public void testUpdateSetCollectionToNull() { // Given & When - final T docView = setCollectionToNull(); + final UpdatableDocumentEntityWithCollectionsView docView = setCollectionToNull(); // Then // Assert that only the document is loaded @@ -258,7 +246,7 @@ public void testUpdateSetCollectionToNull() { @Test public void testUpdateAddNewEntityToCollection() { // Given & When - final T docView = addNewEntityToCollection(); + final UpdatableDocumentEntityWithCollectionsView docView = addNewEntityToCollection(); // Then // Assert that the document and the people are loaded i.e. a full fetch @@ -296,6 +284,12 @@ public void testUpdateAddNewEntityToCollection() { } } + @Override + protected boolean isQueryStrategy() { + // Collection changes always need to be applied on the entity model, can't do that via a query + return false; + } + @Override protected AssertStatementBuilder fullFetch(AssertStatementBuilder builder) { return builder.assertSelect() diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/EntityViewUpdateMutableEntityMapsTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/EntityViewUpdateMutableEntityMapsTest.java index fee99dcf69..de39e6cac8 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/EntityViewUpdateMutableEntityMapsTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/EntityViewUpdateMutableEntityMapsTest.java @@ -21,50 +21,36 @@ import com.blazebit.persistence.testsuite.base.category.NoEclipselink; import com.blazebit.persistence.testsuite.entity.Document; import com.blazebit.persistence.testsuite.entity.Person; +import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.testsuite.update.entity.AbstractEntityViewUpdateEntityMapsTest; -import com.blazebit.persistence.view.testsuite.update.entity.model.UpdatableDocumentEntityWithMapsViewBase; -import com.blazebit.persistence.view.testsuite.update.entity.mutable.model.FullUpdatableDocumentEntityWithMapsView; -import com.blazebit.persistence.view.testsuite.update.entity.mutable.model.LazyUpdatableDocumentEntityWithMapsView; -import com.blazebit.persistence.view.testsuite.update.entity.mutable.model.PartialUpdatableDocumentEntityWithMapsView; +import com.blazebit.persistence.view.testsuite.update.entity.mutable.model.UpdatableDocumentEntityWithMapsView; import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; -import java.util.Arrays; -import java.util.Collection; -import java.util.Iterator; - import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ @RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) -public class EntityViewUpdateMutableEntityMapsTest extends AbstractEntityViewUpdateEntityMapsTest { - - public EntityViewUpdateMutableEntityMapsTest(Class viewType) { - super(viewType); - } +public class EntityViewUpdateMutableEntityMapsTest extends AbstractEntityViewUpdateEntityMapsTest { - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { LazyUpdatableDocumentEntityWithMapsView.class }, - { PartialUpdatableDocumentEntityWithMapsView.class }, - { FullUpdatableDocumentEntityWithMapsView.class } - }); + public EntityViewUpdateMutableEntityMapsTest(FlushMode mode, FlushStrategy strategy) { + super(mode, strategy, UpdatableDocumentEntityWithMapsView.class); } @Test public void testUpdateReplaceCollection() { // Given & When - final T docView = replaceCollection(); + final UpdatableDocumentEntityWithMapsView docView = replaceCollection(); // Then // Since entities are mutable, assert that the document and the people are loaded always loaded. @@ -82,7 +68,7 @@ public void testUpdateReplaceCollection() { @Test public void testUpdateAddToCollection() { // Given & When - final T docView = addToCollection(); + final UpdatableDocumentEntityWithMapsView docView = addToCollection(); // Then // Assert that the document and the people are loaded i.e. a full fetch @@ -104,7 +90,7 @@ public void testUpdateAddToCollection() { @Test public void testUpdateAddToNewCollection() { // Given & When - final T docView = addToNewCollection(); + final UpdatableDocumentEntityWithMapsView docView = addToNewCollection(); // Then // Assert that the document and the people are loaded i.e. a full fetch @@ -126,7 +112,7 @@ public void testUpdateAddToNewCollection() { @Test public void testUpdateAddToCollectionAndModifyEntity() { // Given & When - final T docView = addToCollectionAndModifyEntity(); + final UpdatableDocumentEntityWithMapsView docView = addToCollectionAndModifyEntity(); // Then // Assert that the document and the people are loaded i.e. a full fetch @@ -151,7 +137,7 @@ public void testUpdateAddToCollectionAndModifyEntity() { @Test public void testUpdateAddToNewCollectionAndModifyEntity() { // Given & When - final T docView = addToNewCollectionAndModifyEntity(); + final UpdatableDocumentEntityWithMapsView docView = addToNewCollectionAndModifyEntity(); // Then // Assert that the document and the people are loaded i.e. a full fetch @@ -176,7 +162,7 @@ public void testUpdateAddToNewCollectionAndModifyEntity() { @Test public void testUpdateModifyEntityInCollection() { // Given & When - final T docView = modifyEntityInCollection(); + final UpdatableDocumentEntityWithMapsView docView = modifyEntityInCollection(); // Then // Assert that the document and the people are loaded i.e. a full fetch @@ -197,7 +183,7 @@ public void testUpdateModifyEntityInCollection() { @Test public void testUpdateAddNullToCollection() { // Given & When - final T docView = addNullToCollection(); + final UpdatableDocumentEntityWithMapsView docView = addNullToCollection(); // Then // Assert that the document and the people are loaded i.e. a full fetch @@ -226,7 +212,7 @@ public void testUpdateAddNullToCollection() { @Test public void testUpdateSetCollectionToNull() { // Given & When - final T docView = setCollectionToNull(); + final UpdatableDocumentEntityWithMapsView docView = setCollectionToNull(); // Then // Assert that only the document is loaded @@ -258,7 +244,7 @@ public void testUpdateSetCollectionToNull() { @Test public void testUpdateAddNewEntityToCollection() { // Given & When - final T docView = addNewEntityToCollection(); + final UpdatableDocumentEntityWithMapsView docView = addNewEntityToCollection(); // Then // Assert that the document and the people are loaded i.e. a full fetch @@ -287,6 +273,12 @@ public void testUpdateAddNewEntityToCollection() { assertEquals(doc1.getContacts(), docView.getContacts()); } + @Override + protected boolean isQueryStrategy() { + // Collection changes always need to be applied on the entity model, can't do that via a query + return false; + } + @Override protected AssertStatementBuilder fullFetch(AssertStatementBuilder builder) { return builder.assertSelect() diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/EntityViewUpdateMutableEntityTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/EntityViewUpdateMutableEntityTest.java index e9e17e41ba..f27be03e71 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/EntityViewUpdateMutableEntityTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/EntityViewUpdateMutableEntityTest.java @@ -21,49 +21,36 @@ import com.blazebit.persistence.testsuite.base.category.NoEclipselink; import com.blazebit.persistence.testsuite.entity.Document; import com.blazebit.persistence.testsuite.entity.Person; +import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.testsuite.update.entity.AbstractEntityViewUpdateEntityTest; -import com.blazebit.persistence.view.testsuite.update.entity.model.UpdatableDocumentEntityViewBase; -import com.blazebit.persistence.view.testsuite.update.entity.mutable.model.FullUpdatableDocumentEntityView; -import com.blazebit.persistence.view.testsuite.update.entity.mutable.model.LazyUpdatableDocumentEntityView; -import com.blazebit.persistence.view.testsuite.update.entity.mutable.model.PartialUpdatableDocumentEntityView; +import com.blazebit.persistence.view.testsuite.update.entity.mutable.model.UpdatableDocumentEntityView; import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; -import java.util.Arrays; -import java.util.Collection; - import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ @RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) -public class EntityViewUpdateMutableEntityTest extends AbstractEntityViewUpdateEntityTest { - - public EntityViewUpdateMutableEntityTest(Class viewType) { - super(viewType); - } +public class EntityViewUpdateMutableEntityTest extends AbstractEntityViewUpdateEntityTest { - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { LazyUpdatableDocumentEntityView.class }, - { PartialUpdatableDocumentEntityView.class }, - { FullUpdatableDocumentEntityView.class } - }); + public EntityViewUpdateMutableEntityTest(FlushMode mode, FlushStrategy strategy) { + super(mode, strategy, UpdatableDocumentEntityView.class); } @Test public void testSimpleUpdate() { // Given & When - final T docView = simpleUpdate(); + final UpdatableDocumentEntityView docView = simpleUpdate(); // Then // Assert that not only the document is loaded, but also always the responsiblePerson @@ -71,15 +58,35 @@ public void testSimpleUpdate() { // but since we don't know if entities are dirty, we need to be conservative and load the object AssertStatementBuilder builder = assertQuerySequence(); - fullFetch(builder); + if (isQueryStrategy()) { + builder.assertSelect() + .fetching(Person.class) + .and(); + } else { + fullFetch(builder); + } - builder.update(Document.class) - .validate(); + builder.update(Document.class); + builder.validate(); // Unfortunately, even after an update, we have to reload the entity to merge again - assertQueriesAfterUpdate(docView) - .assertSelect().fetching(Document.class, Person.class) - .validate(); + AssertStatementBuilder afterBuilder = assertQueriesAfterUpdate(docView); + + if (isQueryStrategy()) { + afterBuilder.assertSelect() + .fetching(Person.class) + .and(); + + if (isFullMode()) { + afterBuilder.update(Document.class); + } + } else { + afterBuilder.assertSelect() + .fetching(Document.class, Person.class) + .and(); + } + + afterBuilder.validate(); assertEquals("newDoc", docView.getName()); assertEquals(doc1.getName(), docView.getName()); } @@ -87,17 +94,19 @@ public void testSimpleUpdate() { @Test public void testUpdateWithEntity() { // Given & When - final T docView = updateWithEntity(); + final UpdatableDocumentEntityView docView = updateWithEntity(); // Then // Since the responsiblePerson changed we don't need to load the old responsiblePerson // Unfortunately, the new responsiblePerson has to be loaded by the JPA provider since it has to be merged AssertStatementBuilder builder = assertQuerySequence(); - if (isFullMode()) { - fullFetch(builder); - } else { - builder.select(Document.class); + if (!isQueryStrategy()) { + if (isFullMode()) { + fullFetch(builder); + } else { + builder.select(Document.class); + } } builder.select(Person.class) @@ -105,9 +114,17 @@ public void testUpdateWithEntity() { .validate(); // Unfortunately, even after an update, we have to reload the entity to merge again - assertQueriesAfterUpdate(docView) - .assertSelect().fetching(Document.class, Person.class) - .validate(); + AssertStatementBuilder afterBuilder = assertQueriesAfterUpdate(docView); + + if (isQueryStrategy()) { + builder.assertSelect() + .fetching(Person.class) + .and(); + } else { + afterBuilder.assertSelect() + .fetching(Document.class, Person.class) + .validate(); + } assertEquals(p2.getId(), docView.getResponsiblePerson().getId()); assertEquals(doc1.getResponsiblePerson().getId(), docView.getResponsiblePerson().getId()); } @@ -115,17 +132,19 @@ public void testUpdateWithEntity() { @Test public void testUpdateWithModifyEntity() { // Given & When - final T docView = updateWithModifyEntity(); + final UpdatableDocumentEntityView docView = updateWithModifyEntity(); // Then // Since the responsiblePerson changed we don't need to load the old responsiblePerson // Unfortunately, the new responsiblePerson has to be loaded by the JPA provider since it has to be merged AssertStatementBuilder builder = assertQuerySequence(); - if (isFullMode()) { - fullFetch(builder); - } else { - builder.select(Document.class); + if (!isQueryStrategy()) { + if (isFullMode()) { + fullFetch(builder); + } else { + builder.select(Document.class); + } } builder.select(Person.class) @@ -133,10 +152,20 @@ public void testUpdateWithModifyEntity() { .update(Person.class) .validate(); - // Unfortunately, even after an update, we have to reload the entity to merge again - assertQueriesAfterUpdate(docView) - .assertSelect().fetching(Document.class, Person.class) - .validate(); + + AssertStatementBuilder afterBuilder = assertQueriesAfterUpdate(docView); + + if (isQueryStrategy()) { + afterBuilder.assertSelect() + .fetching(Person.class) + .and(); + } else { + // Unfortunately, even after an update, we have to reload the entity to merge again + afterBuilder.assertSelect() + .fetching(Document.class, Person.class) + .and(); + } + assertEquals(p2.getId(), docView.getResponsiblePerson().getId()); assertEquals(doc1.getResponsiblePerson().getId(), docView.getResponsiblePerson().getId()); assertEquals("newOwner", doc1.getResponsiblePerson().getName()); @@ -145,21 +174,48 @@ public void testUpdateWithModifyEntity() { @Test public void testUpdateWithModifyExisting() { // Given & When - final T docView = updateWithModifyExisting(); + final UpdatableDocumentEntityView docView = updateWithModifyExisting(); // Then // Since we update the old responsiblePerson, load it along with the document for updating it later AssertStatementBuilder builder = assertQuerySequence(); - fullFetch(builder); + if (isQueryStrategy()) { + builder.assertSelect() + .fetching(Person.class) + .and(); + } else { + fullFetch(builder); + } - builder.update(Person.class) - .validate(); + if (isQueryStrategy() && isFullMode()) { + builder.update(Document.class); + } - // Unfortunately, even after an update, we have to reload the entity to merge again - assertQueriesAfterUpdate(docView) - .assertSelect().fetching(Document.class, Person.class) - .validate(); + builder.update(Person.class); + + builder.validate(); + + AssertStatementBuilder afterBuilder = assertQueriesAfterUpdate(docView); + + if (isQueryStrategy()) { + afterBuilder.assertSelect() + .fetching(Person.class) + .and(); + } else { + // Unfortunately, even after an update, we have to reload the entity to merge again + afterBuilder.assertSelect() + .fetching(Document.class, Person.class) + .and(); + } + + if (isQueryStrategy()) { + if (isFullMode()) { + afterBuilder.update(Document.class); + } + } + + afterBuilder.validate(); assertEquals(doc1.getResponsiblePerson().getId(), docView.getResponsiblePerson().getId()); assertEquals("newOwner", doc1.getResponsiblePerson().getName()); } @@ -167,17 +223,19 @@ public void testUpdateWithModifyExisting() { @Test public void testUpdateToNull() { // Given & When - final T docView = updateToNull(); + final UpdatableDocumentEntityView docView = updateToNull(); // Then // Since the responsiblePerson changed we don't need to load the old responsiblePerson // Since the new responsiblePerson is null, we don't need to do anything further AssertStatementBuilder builder = assertQuerySequence(); - if (isFullMode()) { - fullFetch(builder); - } else { - builder.select(Document.class); + if (!isQueryStrategy()) { + if (isFullMode()) { + fullFetch(builder); + } else { + builder.select(Document.class); + } } builder.update(Document.class) @@ -186,8 +244,14 @@ public void testUpdateToNull() { // Updating to null thankfully does not require reloading the relation AssertStatementBuilder afterBuilder = assertQueriesAfterUpdate(docView); - if (isFullMode()) { - fullFetch(afterBuilder); + if (isQueryStrategy()) { + if (isFullMode()) { + afterBuilder.update(Document.class); + } + } else { + if (isFullMode()) { + fullFetch(afterBuilder); + } } afterBuilder.validate(); assertNull(doc1.getResponsiblePerson()); @@ -196,17 +260,19 @@ public void testUpdateToNull() { @Test public void testUpdateToNewPerson() { // Given & When - final T docView = updateToNewPerson(); + final UpdatableDocumentEntityView docView = updateToNewPerson(); // Then // Since the responsiblePerson changed we don't need to load the old responsiblePerson // The new responsiblePerson will be persisted AssertStatementBuilder builder = assertQuerySequence(); - if (isFullMode()) { - fullFetch(builder); - } else { - builder.select(Document.class); + if (!isQueryStrategy()) { + if (isFullMode()) { + fullFetch(builder); + } else { + builder.select(Document.class); + } } builder.insert(Person.class) @@ -216,9 +282,15 @@ public void testUpdateToNewPerson() { // We always have to do a full fetch because the entity might be dirty AssertStatementBuilder afterBuilder = assertQueriesAfterUpdate(docView); + if (isQueryStrategy()) { + afterBuilder.assertSelect() + .fetching(Person.class) + .and(); + } else { + fullFetch(afterBuilder); + } // Unfortunately, Hibernate has to fetch all non-inverse collections and merge changes - fullFetch(afterBuilder) - .assertSelect() + afterBuilder.assertSelect() .fetching(Person.class, "favoriteDocuments") .fetching(Document.class) .and() @@ -226,14 +298,31 @@ public void testUpdateToNewPerson() { .fetching(Person.class, "localized") .and(); + if (isQueryStrategy()) { + if (isFullMode()) { + afterBuilder.update(Document.class); + } + } + afterBuilder.validate(); assertEquals("newPerson", doc1.getResponsiblePerson().getName()); } + @Override protected AssertStatementBuilder fullFetch(AssertStatementBuilder builder) { return builder.assertSelect() .fetching(Document.class) .fetching(Person.class) .and(); } + + @Override + protected AssertStatementBuilder fullUpdate(AssertStatementBuilder builder) { + return builder.assertUpdate() + .forEntity(Document.class) + .and() + .assertUpdate() + .forEntity(Person.class) + .and(); + } } diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/model/FullUpdatableDocumentEntityView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/model/FullUpdatableDocumentEntityView.java deleted file mode 100644 index 173b5be815..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/model/FullUpdatableDocumentEntityView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.entity.mutable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentEntityView extends UpdatableDocumentEntityView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/model/FullUpdatableDocumentEntityWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/model/FullUpdatableDocumentEntityWithCollectionsView.java deleted file mode 100644 index d3bf500a77..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/model/FullUpdatableDocumentEntityWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.entity.mutable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentEntityWithCollectionsView extends UpdatableDocumentEntityWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/model/FullUpdatableDocumentEntityWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/model/FullUpdatableDocumentEntityWithMapsView.java deleted file mode 100644 index 6d13cf1c95..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/model/FullUpdatableDocumentEntityWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.entity.mutable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentEntityWithMapsView extends UpdatableDocumentEntityWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/model/LazyUpdatableDocumentEntityView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/model/LazyUpdatableDocumentEntityView.java deleted file mode 100644 index fe522ce952..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/model/LazyUpdatableDocumentEntityView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.entity.mutable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentEntityView extends UpdatableDocumentEntityView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/model/LazyUpdatableDocumentEntityWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/model/LazyUpdatableDocumentEntityWithCollectionsView.java deleted file mode 100644 index b5f302d0e1..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/model/LazyUpdatableDocumentEntityWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.entity.mutable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentEntityWithCollectionsView extends UpdatableDocumentEntityWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/model/LazyUpdatableDocumentEntityWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/model/LazyUpdatableDocumentEntityWithMapsView.java deleted file mode 100644 index ccb4f9ee7d..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/model/LazyUpdatableDocumentEntityWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.entity.mutable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentEntityWithMapsView extends UpdatableDocumentEntityWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/model/PartialUpdatableDocumentEntityView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/model/PartialUpdatableDocumentEntityView.java deleted file mode 100644 index a9ae7f2625..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/model/PartialUpdatableDocumentEntityView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.entity.mutable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentEntityView extends UpdatableDocumentEntityView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/model/PartialUpdatableDocumentEntityWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/model/PartialUpdatableDocumentEntityWithCollectionsView.java deleted file mode 100644 index bb421f0967..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/model/PartialUpdatableDocumentEntityWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.entity.mutable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentEntityWithCollectionsView extends UpdatableDocumentEntityWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/model/PartialUpdatableDocumentEntityWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/model/PartialUpdatableDocumentEntityWithMapsView.java deleted file mode 100644 index 12f782864f..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/model/PartialUpdatableDocumentEntityWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.entity.mutable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentEntityWithMapsView extends UpdatableDocumentEntityWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/model/UpdatableDocumentEntityView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/model/UpdatableDocumentEntityView.java index db5acf5846..502c722644 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/model/UpdatableDocumentEntityView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/model/UpdatableDocumentEntityView.java @@ -24,7 +24,7 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ public interface UpdatableDocumentEntityView extends UpdatableDocumentEntityViewBase { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/model/UpdatableDocumentEntityWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/model/UpdatableDocumentEntityWithCollectionsView.java index 02ea405211..da5204a365 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/model/UpdatableDocumentEntityWithCollectionsView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/model/UpdatableDocumentEntityWithCollectionsView.java @@ -18,7 +18,6 @@ import com.blazebit.persistence.testsuite.entity.Person; import com.blazebit.persistence.view.CascadeType; -import com.blazebit.persistence.view.IdMapping; import com.blazebit.persistence.view.UpdatableMapping; import com.blazebit.persistence.view.testsuite.update.entity.model.UpdatableDocumentEntityWithCollectionsViewBase; @@ -27,7 +26,7 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ public interface UpdatableDocumentEntityWithCollectionsView extends UpdatableDocumentEntityWithCollectionsViewBase { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/model/UpdatableDocumentEntityWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/model/UpdatableDocumentEntityWithMapsView.java index 5913bb52e8..a2c0f19c68 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/model/UpdatableDocumentEntityWithMapsView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutable/model/UpdatableDocumentEntityWithMapsView.java @@ -21,13 +21,12 @@ import com.blazebit.persistence.view.UpdatableMapping; import com.blazebit.persistence.view.testsuite.update.entity.model.UpdatableDocumentEntityWithMapsViewBase; -import java.util.List; import java.util.Map; /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ public interface UpdatableDocumentEntityWithMapsView extends UpdatableDocumentEntityWithMapsViewBase { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/EntityViewUpdateMutableOnlyEntityCollectionsTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/EntityViewUpdateMutableOnlyEntityCollectionsTest.java index d7a85c12be..25633c17b3 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/EntityViewUpdateMutableOnlyEntityCollectionsTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/EntityViewUpdateMutableOnlyEntityCollectionsTest.java @@ -21,50 +21,37 @@ import com.blazebit.persistence.testsuite.base.category.NoEclipselink; import com.blazebit.persistence.testsuite.entity.Document; import com.blazebit.persistence.testsuite.entity.Person; +import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.testsuite.update.entity.AbstractEntityViewUpdateEntityCollectionsTest; -import com.blazebit.persistence.view.testsuite.update.entity.model.UpdatableDocumentEntityWithCollectionsViewBase; -import com.blazebit.persistence.view.testsuite.update.entity.mutableonly.model.FullUpdatableDocumentEntityWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.entity.mutableonly.model.LazyUpdatableDocumentEntityWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.entity.mutableonly.model.PartialUpdatableDocumentEntityWithCollectionsView; +import com.blazebit.persistence.view.testsuite.update.entity.mutableonly.model.UpdatableDocumentEntityWithCollectionsView; import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; -import java.util.Arrays; -import java.util.Collection; import java.util.Iterator; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ @RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) -public class EntityViewUpdateMutableOnlyEntityCollectionsTest extends AbstractEntityViewUpdateEntityCollectionsTest { +public class EntityViewUpdateMutableOnlyEntityCollectionsTest extends AbstractEntityViewUpdateEntityCollectionsTest { - public EntityViewUpdateMutableOnlyEntityCollectionsTest(Class viewType) { - super(viewType); - } - - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { LazyUpdatableDocumentEntityWithCollectionsView.class }, - { PartialUpdatableDocumentEntityWithCollectionsView.class }, - { FullUpdatableDocumentEntityWithCollectionsView.class } - }); + public EntityViewUpdateMutableOnlyEntityCollectionsTest(FlushMode mode, FlushStrategy strategy) { + super(mode, strategy, UpdatableDocumentEntityWithCollectionsView.class); } @Test public void testUpdateReplaceCollection() { // Given & When - final T docView = replaceCollection(); + final UpdatableDocumentEntityWithCollectionsView docView = replaceCollection(); // Then // Since the collection changed yet this relation is not updatable, only the full mode will load @@ -76,7 +63,7 @@ public void testUpdateReplaceCollection() { @Test public void testUpdateAddToCollection() { // Given & When - final T docView = addToCollection(); + final UpdatableDocumentEntityWithCollectionsView docView = addToCollection(); // Then // The changes to the collection are not propagated, yet the elements are merged @@ -95,7 +82,7 @@ public void testUpdateAddToCollection() { @Test public void testUpdateAddToNewCollection() { // Given & When - final T docView = addToNewCollection(); + final UpdatableDocumentEntityWithCollectionsView docView = addToNewCollection(); // Then // Since the collection changed yet this relation is not updatable, only the full mode will load @@ -107,7 +94,7 @@ public void testUpdateAddToNewCollection() { @Test public void testUpdateAddToCollectionAndModifyEntity() { // Given & When - final T docView = addToCollectionAndModifyEntity(); + final UpdatableDocumentEntityWithCollectionsView docView = addToCollectionAndModifyEntity(); // Then // The changes to the collection are not propagated, yet the elements are merged @@ -127,7 +114,7 @@ public void testUpdateAddToCollectionAndModifyEntity() { @Test public void testUpdateAddToNewCollectionAndModifyEntity() { // Given & When - final T docView = addToNewCollectionAndModifyEntity(); + final UpdatableDocumentEntityWithCollectionsView docView = addToNewCollectionAndModifyEntity(); // Then // Since the collection changed yet this relation is not updatable, only the full mode will load @@ -140,7 +127,7 @@ public void testUpdateAddToNewCollectionAndModifyEntity() { @Test public void testUpdateModifyEntityInCollection() { // Given & When - final T docView = modifyEntityInCollection(); + final UpdatableDocumentEntityWithCollectionsView docView = modifyEntityInCollection(); // Then // Assert that the document and the people are loaded i.e. a full fetch @@ -161,7 +148,7 @@ public void testUpdateModifyEntityInCollection() { @Test public void testUpdateAddNullToCollection() { // Given & When - final T docView = addNullToCollection(); + final UpdatableDocumentEntityWithCollectionsView docView = addNullToCollection(); // Then // The changes to the collection are not propagated, yet we load the full document since we don't know what has been added to the collection @@ -179,7 +166,7 @@ public void testUpdateAddNullToCollection() { @Test public void testUpdateSetCollectionToNull() { // Given & When - final T docView = setCollectionToNull(); + final UpdatableDocumentEntityWithCollectionsView docView = setCollectionToNull(); // Then // Since the collection changed yet this relation is not updatable, only the full mode will load @@ -191,7 +178,7 @@ public void testUpdateSetCollectionToNull() { @Test public void testUpdateAddNewEntityToCollection() { // Given & When - final T docView = addNewEntityToCollection(); + final UpdatableDocumentEntityWithCollectionsView docView = addNewEntityToCollection(); // Then // The changes to the collection are not propagated, yet the elements are merged @@ -215,6 +202,12 @@ public void testUpdateAddNewEntityToCollection() { } } + @Override + protected boolean isQueryStrategy() { + // Collection changes always need to be applied on the entity model, can't do that via a query + return false; + } + @Override protected AssertStatementBuilder fullFetch(AssertStatementBuilder builder) { return builder.assertSelect() diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/EntityViewUpdateMutableOnlyEntityMapsTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/EntityViewUpdateMutableOnlyEntityMapsTest.java index 0c88c155b6..12ff0b79c7 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/EntityViewUpdateMutableOnlyEntityMapsTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/EntityViewUpdateMutableOnlyEntityMapsTest.java @@ -21,49 +21,35 @@ import com.blazebit.persistence.testsuite.base.category.NoEclipselink; import com.blazebit.persistence.testsuite.entity.Document; import com.blazebit.persistence.testsuite.entity.Person; +import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.testsuite.update.entity.AbstractEntityViewUpdateEntityMapsTest; -import com.blazebit.persistence.view.testsuite.update.entity.model.UpdatableDocumentEntityWithMapsViewBase; -import com.blazebit.persistence.view.testsuite.update.entity.mutableonly.model.FullUpdatableDocumentEntityWithMapsView; -import com.blazebit.persistence.view.testsuite.update.entity.mutableonly.model.LazyUpdatableDocumentEntityWithMapsView; -import com.blazebit.persistence.view.testsuite.update.entity.mutableonly.model.PartialUpdatableDocumentEntityWithMapsView; +import com.blazebit.persistence.view.testsuite.update.entity.mutableonly.model.UpdatableDocumentEntityWithMapsView; import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; -import java.util.Arrays; -import java.util.Collection; -import java.util.Iterator; - import static org.junit.Assert.assertEquals; /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ @RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) -public class EntityViewUpdateMutableOnlyEntityMapsTest extends AbstractEntityViewUpdateEntityMapsTest { - - public EntityViewUpdateMutableOnlyEntityMapsTest(Class viewType) { - super(viewType); - } +public class EntityViewUpdateMutableOnlyEntityMapsTest extends AbstractEntityViewUpdateEntityMapsTest { - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { LazyUpdatableDocumentEntityWithMapsView.class }, - { PartialUpdatableDocumentEntityWithMapsView.class }, - { FullUpdatableDocumentEntityWithMapsView.class } - }); + public EntityViewUpdateMutableOnlyEntityMapsTest(FlushMode mode, FlushStrategy strategy) { + super(mode, strategy, UpdatableDocumentEntityWithMapsView.class); } @Test public void testUpdateReplaceCollection() { // Given & When - final T docView = replaceCollection(); + final UpdatableDocumentEntityWithMapsView docView = replaceCollection(); // Then // Since the collection changed yet this relation is not updatable, only the full mode will load @@ -75,7 +61,7 @@ public void testUpdateReplaceCollection() { @Test public void testUpdateAddToCollection() { // Given & When - final T docView = addToCollection(); + final UpdatableDocumentEntityWithMapsView docView = addToCollection(); // Then // The changes to the collection are not propagated, yet the elements are merged @@ -94,7 +80,7 @@ public void testUpdateAddToCollection() { @Test public void testUpdateAddToNewCollection() { // Given & When - final T docView = addToNewCollection(); + final UpdatableDocumentEntityWithMapsView docView = addToNewCollection(); // Then // Since the collection changed yet this relation is not updatable, only the full mode will load @@ -106,7 +92,7 @@ public void testUpdateAddToNewCollection() { @Test public void testUpdateAddToCollectionAndModifyEntity() { // Given & When - final T docView = addToCollectionAndModifyEntity(); + final UpdatableDocumentEntityWithMapsView docView = addToCollectionAndModifyEntity(); // Then // The changes to the collection are not propagated, yet the elements are merged @@ -126,7 +112,7 @@ public void testUpdateAddToCollectionAndModifyEntity() { @Test public void testUpdateAddToNewCollectionAndModifyEntity() { // Given & When - final T docView = addToNewCollectionAndModifyEntity(); + final UpdatableDocumentEntityWithMapsView docView = addToNewCollectionAndModifyEntity(); // Then // Since the collection changed yet this relation is not updatable, only the full mode will load @@ -139,7 +125,7 @@ public void testUpdateAddToNewCollectionAndModifyEntity() { @Test public void testUpdateModifyEntityInCollection() { // Given & When - final T docView = modifyEntityInCollection(); + final UpdatableDocumentEntityWithMapsView docView = modifyEntityInCollection(); // Then // Assert that the document and the people are loaded i.e. a full fetch @@ -160,7 +146,7 @@ public void testUpdateModifyEntityInCollection() { @Test public void testUpdateAddNullToCollection() { // Given & When - final T docView = addNullToCollection(); + final UpdatableDocumentEntityWithMapsView docView = addNullToCollection(); // Then // The changes to the collection are not propagated, yet we load the full document since we don't know what has been added to the collection @@ -178,7 +164,7 @@ public void testUpdateAddNullToCollection() { @Test public void testUpdateSetCollectionToNull() { // Given & When - final T docView = setCollectionToNull(); + final UpdatableDocumentEntityWithMapsView docView = setCollectionToNull(); // Then // Since the collection changed yet this relation is not updatable, only the full mode will load @@ -190,7 +176,7 @@ public void testUpdateSetCollectionToNull() { @Test public void testUpdateAddNewEntityToCollection() { // Given & When - final T docView = addNewEntityToCollection(); + final UpdatableDocumentEntityWithMapsView docView = addNewEntityToCollection(); // Then // The changes to the collection are not propagated, yet the elements are merged @@ -206,6 +192,12 @@ public void testUpdateAddNewEntityToCollection() { assertEquals(p1.getId(), doc1.getContacts().get(1).getId()); } + @Override + protected boolean isQueryStrategy() { + // Collection changes always need to be applied on the entity model, can't do that via a query + return false; + } + @Override protected AssertStatementBuilder fullFetch(AssertStatementBuilder builder) { return builder.assertSelect() diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/EntityViewUpdateMutableOnlyEntityTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/EntityViewUpdateMutableOnlyEntityTest.java index 32904b3d9c..9aebbaa19d 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/EntityViewUpdateMutableOnlyEntityTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/EntityViewUpdateMutableOnlyEntityTest.java @@ -21,49 +21,35 @@ import com.blazebit.persistence.testsuite.base.category.NoEclipselink; import com.blazebit.persistence.testsuite.entity.Document; import com.blazebit.persistence.testsuite.entity.Person; +import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.testsuite.update.entity.AbstractEntityViewUpdateEntityTest; -import com.blazebit.persistence.view.testsuite.update.entity.model.UpdatableDocumentEntityViewBase; -import com.blazebit.persistence.view.testsuite.update.entity.mutableonly.model.FullUpdatableDocumentEntityView; -import com.blazebit.persistence.view.testsuite.update.entity.mutableonly.model.LazyUpdatableDocumentEntityView; -import com.blazebit.persistence.view.testsuite.update.entity.mutableonly.model.PartialUpdatableDocumentEntityView; +import com.blazebit.persistence.view.testsuite.update.entity.mutableonly.model.UpdatableDocumentEntityView; import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; -import java.util.Arrays; -import java.util.Collection; - import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ @RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) -public class EntityViewUpdateMutableOnlyEntityTest extends AbstractEntityViewUpdateEntityTest { - - public EntityViewUpdateMutableOnlyEntityTest(Class viewType) { - super(viewType); - } +public class EntityViewUpdateMutableOnlyEntityTest extends AbstractEntityViewUpdateEntityTest { - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { LazyUpdatableDocumentEntityView.class }, - { PartialUpdatableDocumentEntityView.class }, - { FullUpdatableDocumentEntityView.class } - }); + public EntityViewUpdateMutableOnlyEntityTest(FlushMode mode, FlushStrategy strategy) { + super(mode, strategy, UpdatableDocumentEntityView.class); } @Test public void testSimpleUpdate() { // Given & When - final T docView = simpleUpdate(); + final UpdatableDocumentEntityView docView = simpleUpdate(); // Then // Assert that not only the document is loaded, but also always the responsiblePerson @@ -71,15 +57,32 @@ public void testSimpleUpdate() { // but since we don't know if entities are dirty, we need to be conservative and load the object AssertStatementBuilder builder = assertQuerySequence(); - fullFetch(builder); + if (isQueryStrategy()) { + builder.assertSelect() + .fetching(Person.class) + .and(); + } else { + fullFetch(builder); + } builder.update(Document.class) .validate(); // Unfortunately, even after an update, we have to reload the entity to merge again - assertQueriesAfterUpdate(docView) - .assertSelect().fetching(Document.class, Person.class) - .validate(); + AssertStatementBuilder afterBuilder = assertQueriesAfterUpdate(docView); + if (isQueryStrategy()) { + afterBuilder.assertSelect() + .fetching(Person.class) + .and(); + if (isFullMode()) { + afterBuilder.update(Document.class); + } + } else { + afterBuilder.assertSelect() + .fetching(Document.class, Person.class) + .and(); + } + afterBuilder.validate(); assertEquals("newDoc", docView.getName()); assertEquals(doc1.getName(), docView.getName()); } @@ -87,7 +90,7 @@ public void testSimpleUpdate() { @Test public void testUpdateWithEntity() { // Given & When - final T docView = updateWithEntity(); + final UpdatableDocumentEntityView docView = updateWithEntity(); // Then // Since the responsiblePerson changed yet this relation is not updatable, only the full mode will load @@ -100,7 +103,7 @@ public void testUpdateWithEntity() { @Test public void testUpdateWithModifyEntity() { // Given & When - final T docView = updateWithModifyEntity(); + final UpdatableDocumentEntityView docView = updateWithModifyEntity(); // Then // Since the responsiblePerson changed yet this relation is not updatable, only the full mode will load @@ -116,21 +119,40 @@ public void testUpdateWithModifyEntity() { @Test public void testUpdateWithModifyExisting() { // Given & When - final T docView = updateWithModifyExisting(); + final UpdatableDocumentEntityView docView = updateWithModifyExisting(); // Then // Since we update the old responsiblePerson, load it along with the document for updating it later AssertStatementBuilder builder = assertQuerySequence(); - fullFetch(builder); + if (isQueryStrategy()) { + builder.assertSelect() + .fetching(Person.class) + .and(); + if (isFullMode()) { + builder.update(Document.class); + } + } else { + fullFetch(builder); + } builder.update(Person.class) .validate(); - // Unfortunately, even after an update, we have to reload the entity to merge again - assertQueriesAfterUpdate(docView) - .assertSelect().fetching(Document.class, Person.class) - .validate(); + AssertStatementBuilder afterBuilder = assertQueriesAfterUpdate(docView); + if (isQueryStrategy()) { + afterBuilder.assertSelect() + .fetching(Person.class) + .and(); + if (isFullMode()) { + afterBuilder.update(Document.class); + } + } else { + afterBuilder.assertSelect() + .fetching(Document.class, Person.class) + .and(); + } + afterBuilder.validate(); assertEquals(doc1.getResponsiblePerson().getId(), docView.getResponsiblePerson().getId()); assertEquals("newOwner", doc1.getResponsiblePerson().getName()); } @@ -138,7 +160,7 @@ public void testUpdateWithModifyExisting() { @Test public void testUpdateToNull() { // Given & When - final T docView = updateToNull(); + final UpdatableDocumentEntityView docView = updateToNull(); // Then // Since the responsiblePerson changed yet this relation is not updatable, only the full mode will load @@ -151,7 +173,7 @@ public void testUpdateToNull() { @Test public void testUpdateToNewPerson() { // Given & When - final T docView = updateToNewPerson(); + final UpdatableDocumentEntityView docView = updateToNewPerson(); // Then // Since the responsiblePerson changed yet this relation is not updatable, only the full mode will load @@ -168,4 +190,9 @@ protected AssertStatementBuilder fullFetch(AssertStatementBuilder builder) { .fetching(Person.class) .and(); } + + @Override + protected AssertStatementBuilder fullUpdate(AssertStatementBuilder builder) { + return builder.update(Document.class); + } } diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/model/FullUpdatableDocumentEntityView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/model/FullUpdatableDocumentEntityView.java deleted file mode 100644 index 4d1c580e7a..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/model/FullUpdatableDocumentEntityView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.entity.mutableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentEntityView extends UpdatableDocumentEntityView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/model/FullUpdatableDocumentEntityWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/model/FullUpdatableDocumentEntityWithCollectionsView.java deleted file mode 100644 index 11528e79a4..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/model/FullUpdatableDocumentEntityWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.entity.mutableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentEntityWithCollectionsView extends UpdatableDocumentEntityWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/model/FullUpdatableDocumentEntityWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/model/FullUpdatableDocumentEntityWithMapsView.java deleted file mode 100644 index c2d1356326..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/model/FullUpdatableDocumentEntityWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.entity.mutableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentEntityWithMapsView extends UpdatableDocumentEntityWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/model/LazyUpdatableDocumentEntityView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/model/LazyUpdatableDocumentEntityView.java deleted file mode 100644 index 06a2edbdac..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/model/LazyUpdatableDocumentEntityView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.entity.mutableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentEntityView extends UpdatableDocumentEntityView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/model/LazyUpdatableDocumentEntityWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/model/LazyUpdatableDocumentEntityWithCollectionsView.java deleted file mode 100644 index 06936c0dc1..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/model/LazyUpdatableDocumentEntityWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.entity.mutableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentEntityWithCollectionsView extends UpdatableDocumentEntityWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/model/LazyUpdatableDocumentEntityWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/model/LazyUpdatableDocumentEntityWithMapsView.java deleted file mode 100644 index 3afa3a4495..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/model/LazyUpdatableDocumentEntityWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.entity.mutableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentEntityWithMapsView extends UpdatableDocumentEntityWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/model/PartialUpdatableDocumentEntityView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/model/PartialUpdatableDocumentEntityView.java deleted file mode 100644 index 193e6a54e1..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/model/PartialUpdatableDocumentEntityView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.entity.mutableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentEntityView extends UpdatableDocumentEntityView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/model/PartialUpdatableDocumentEntityWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/model/PartialUpdatableDocumentEntityWithCollectionsView.java deleted file mode 100644 index 6dc8edf453..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/model/PartialUpdatableDocumentEntityWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.entity.mutableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentEntityWithCollectionsView extends UpdatableDocumentEntityWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/model/PartialUpdatableDocumentEntityWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/model/PartialUpdatableDocumentEntityWithMapsView.java deleted file mode 100644 index 64bc62857b..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/model/PartialUpdatableDocumentEntityWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.entity.mutableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentEntityWithMapsView extends UpdatableDocumentEntityWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/model/UpdatableDocumentEntityView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/model/UpdatableDocumentEntityView.java index 48b821f144..58a902ff89 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/model/UpdatableDocumentEntityView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/model/UpdatableDocumentEntityView.java @@ -18,16 +18,13 @@ import com.blazebit.persistence.testsuite.entity.Person; import com.blazebit.persistence.view.CascadeType; -import com.blazebit.persistence.view.IdMapping; import com.blazebit.persistence.view.UpdatableMapping; import com.blazebit.persistence.view.testsuite.update.entity.model.UpdatableDocumentEntityViewBase; -import java.util.Date; - /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ public interface UpdatableDocumentEntityView extends UpdatableDocumentEntityViewBase { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/model/UpdatableDocumentEntityWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/model/UpdatableDocumentEntityWithCollectionsView.java index b76e5cebbb..9b40b3a77a 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/model/UpdatableDocumentEntityWithCollectionsView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/model/UpdatableDocumentEntityWithCollectionsView.java @@ -18,7 +18,6 @@ import com.blazebit.persistence.testsuite.entity.Person; import com.blazebit.persistence.view.CascadeType; -import com.blazebit.persistence.view.IdMapping; import com.blazebit.persistence.view.UpdatableMapping; import com.blazebit.persistence.view.testsuite.update.entity.model.UpdatableDocumentEntityWithCollectionsViewBase; @@ -27,7 +26,7 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ public interface UpdatableDocumentEntityWithCollectionsView extends UpdatableDocumentEntityWithCollectionsViewBase { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/model/UpdatableDocumentEntityWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/model/UpdatableDocumentEntityWithMapsView.java index 85b5e61439..89292f11f4 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/model/UpdatableDocumentEntityWithMapsView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/mutableonly/model/UpdatableDocumentEntityWithMapsView.java @@ -26,7 +26,7 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ public interface UpdatableDocumentEntityWithMapsView extends UpdatableDocumentEntityWithMapsViewBase { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/EntityViewUpdateUpdatableOnlyEntityCollectionsTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/EntityViewUpdateUpdatableOnlyEntityCollectionsTest.java index c6af298ece..4cde87b288 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/EntityViewUpdateUpdatableOnlyEntityCollectionsTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/EntityViewUpdateUpdatableOnlyEntityCollectionsTest.java @@ -21,50 +21,37 @@ import com.blazebit.persistence.testsuite.base.category.NoEclipselink; import com.blazebit.persistence.testsuite.entity.Document; import com.blazebit.persistence.testsuite.entity.Person; +import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.testsuite.update.entity.AbstractEntityViewUpdateEntityCollectionsTest; -import com.blazebit.persistence.view.testsuite.update.entity.model.UpdatableDocumentEntityWithCollectionsViewBase; -import com.blazebit.persistence.view.testsuite.update.entity.updatableonly.model.FullUpdatableDocumentEntityWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.entity.updatableonly.model.LazyUpdatableDocumentEntityWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.entity.updatableonly.model.PartialUpdatableDocumentEntityWithCollectionsView; +import com.blazebit.persistence.view.testsuite.update.entity.updatableonly.model.UpdatableDocumentEntityWithCollectionsView; import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import javax.persistence.PersistenceException; -import java.util.Arrays; -import java.util.Collection; -import java.util.Iterator; import static org.junit.Assert.*; /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ @RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) -public class EntityViewUpdateUpdatableOnlyEntityCollectionsTest extends AbstractEntityViewUpdateEntityCollectionsTest { +public class EntityViewUpdateUpdatableOnlyEntityCollectionsTest extends AbstractEntityViewUpdateEntityCollectionsTest { - public EntityViewUpdateUpdatableOnlyEntityCollectionsTest(Class viewType) { - super(viewType); - } - - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { LazyUpdatableDocumentEntityWithCollectionsView.class }, - { PartialUpdatableDocumentEntityWithCollectionsView.class }, - { FullUpdatableDocumentEntityWithCollectionsView.class } - }); + public EntityViewUpdateUpdatableOnlyEntityCollectionsTest(FlushMode mode, FlushStrategy strategy) { + super(mode, strategy, UpdatableDocumentEntityWithCollectionsView.class); } @Test public void testUpdateReplaceCollection() { // Given & When - final T docView = replaceCollection(); + final UpdatableDocumentEntityWithCollectionsView docView = replaceCollection(); // Then // Since entities are not mutable we can detect nothing changed @@ -83,7 +70,7 @@ public void testUpdateReplaceCollection() { @Test public void testUpdateAddToCollection() { // Given & When - final T docView = addToCollection(); + final UpdatableDocumentEntityWithCollectionsView docView = addToCollection(); // Then // Assert that the document and the people are loaded i.e. a full fetch @@ -108,7 +95,7 @@ public void testUpdateAddToCollection() { @Test public void testUpdateAddToNewCollection() { // Given & When - final T docView = addToNewCollection(); + final UpdatableDocumentEntityWithCollectionsView docView = addToNewCollection(); // Then // Assert that the document and the people are loaded in full mode i.e. a full fetch @@ -144,7 +131,7 @@ public void testUpdateAddToNewCollection() { @Test public void testUpdateAddToCollectionAndModifyEntity() { // Given & When - final T docView = addToCollectionAndModifyEntity(); + final UpdatableDocumentEntityWithCollectionsView docView = addToCollectionAndModifyEntity(); // Then // Assert that the document and the people are loaded i.e. a full fetch @@ -163,7 +150,7 @@ public void testUpdateAddToCollectionAndModifyEntity() { @Test public void testUpdateAddToNewCollectionAndModifyEntity() { // Given & When - final T docView = addToNewCollectionAndModifyEntity(); + final UpdatableDocumentEntityWithCollectionsView docView = addToNewCollectionAndModifyEntity(); // Then // Assert that the document and the people are loaded in full mode i.e. a full fetch @@ -200,7 +187,7 @@ public void testUpdateAddToNewCollectionAndModifyEntity() { @Test public void testUpdateModifyEntityInCollection() { // Given & When - final T docView = modifyEntityInCollection(); + final UpdatableDocumentEntityWithCollectionsView docView = modifyEntityInCollection(); // Then // Assert that the document and the people are loaded in full mode i.e. a full fetch @@ -220,7 +207,7 @@ public void testUpdateModifyEntityInCollection() { @Test public void testUpdateAddNullToCollection() { // Given & When - final T docView = addNullToCollection(); + final UpdatableDocumentEntityWithCollectionsView docView = addNullToCollection(); // Then // Assert that the document and the people are loaded i.e. a full fetch @@ -249,7 +236,7 @@ public void testUpdateAddNullToCollection() { @Test public void testUpdateSetCollectionToNull() { // Given & When - final T docView = setCollectionToNull(); + final UpdatableDocumentEntityWithCollectionsView docView = setCollectionToNull(); // Then // Assert that only the document is loaded @@ -295,6 +282,12 @@ public void testUpdateAddNewEntityToCollection() { } } + @Override + protected boolean isQueryStrategy() { + // Collection changes always need to be applied on the entity model, can't do that via a query + return false; + } + @Override protected AssertStatementBuilder fullFetch(AssertStatementBuilder builder) { return builder.assertSelect() diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/EntityViewUpdateUpdatableOnlyEntityMapsTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/EntityViewUpdateUpdatableOnlyEntityMapsTest.java index 0ffc5124a7..b9ec86434e 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/EntityViewUpdateUpdatableOnlyEntityMapsTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/EntityViewUpdateUpdatableOnlyEntityMapsTest.java @@ -21,49 +21,37 @@ import com.blazebit.persistence.testsuite.base.category.NoEclipselink; import com.blazebit.persistence.testsuite.entity.Document; import com.blazebit.persistence.testsuite.entity.Person; +import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.testsuite.update.entity.AbstractEntityViewUpdateEntityMapsTest; -import com.blazebit.persistence.view.testsuite.update.entity.model.UpdatableDocumentEntityWithMapsViewBase; -import com.blazebit.persistence.view.testsuite.update.entity.updatableonly.model.FullUpdatableDocumentEntityWithMapsView; -import com.blazebit.persistence.view.testsuite.update.entity.updatableonly.model.LazyUpdatableDocumentEntityWithMapsView; -import com.blazebit.persistence.view.testsuite.update.entity.updatableonly.model.PartialUpdatableDocumentEntityWithMapsView; +import com.blazebit.persistence.view.testsuite.update.entity.updatableonly.model.UpdatableDocumentEntityWithMapsView; import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import javax.persistence.PersistenceException; -import java.util.Arrays; -import java.util.Collection; import static org.junit.Assert.*; /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ @RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) -public class EntityViewUpdateUpdatableOnlyEntityMapsTest extends AbstractEntityViewUpdateEntityMapsTest { +public class EntityViewUpdateUpdatableOnlyEntityMapsTest extends AbstractEntityViewUpdateEntityMapsTest { - public EntityViewUpdateUpdatableOnlyEntityMapsTest(Class viewType) { - super(viewType); - } - - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { LazyUpdatableDocumentEntityWithMapsView.class }, - { PartialUpdatableDocumentEntityWithMapsView.class }, - { FullUpdatableDocumentEntityWithMapsView.class } - }); + public EntityViewUpdateUpdatableOnlyEntityMapsTest(FlushMode mode, FlushStrategy strategy) { + super(mode, strategy, UpdatableDocumentEntityWithMapsView.class); } @Test public void testUpdateReplaceCollection() { // Given & When - final T docView = replaceCollection(); + final UpdatableDocumentEntityWithMapsView docView = replaceCollection(); // Then // Since entities are not mutable we can detect nothing changed @@ -82,7 +70,7 @@ public void testUpdateReplaceCollection() { @Test public void testUpdateAddToCollection() { // Given & When - final T docView = addToCollection(); + final UpdatableDocumentEntityWithMapsView docView = addToCollection(); // Then // Assert that the document and the people are loaded i.e. a full fetch @@ -107,7 +95,7 @@ public void testUpdateAddToCollection() { @Test public void testUpdateAddToNewCollection() { // Given & When - final T docView = addToNewCollection(); + final UpdatableDocumentEntityWithMapsView docView = addToNewCollection(); // Then // Assert that the document and the people are loaded in full mode i.e. a full fetch @@ -143,7 +131,7 @@ public void testUpdateAddToNewCollection() { @Test public void testUpdateAddToCollectionAndModifyEntity() { // Given & When - final T docView = addToCollectionAndModifyEntity(); + final UpdatableDocumentEntityWithMapsView docView = addToCollectionAndModifyEntity(); // Then // Assert that the document and the people are loaded i.e. a full fetch @@ -162,7 +150,7 @@ public void testUpdateAddToCollectionAndModifyEntity() { @Test public void testUpdateAddToNewCollectionAndModifyEntity() { // Given & When - final T docView = addToNewCollectionAndModifyEntity(); + final UpdatableDocumentEntityWithMapsView docView = addToNewCollectionAndModifyEntity(); // Then // Assert that the document and the people are loaded in full mode i.e. a full fetch @@ -199,7 +187,7 @@ public void testUpdateAddToNewCollectionAndModifyEntity() { @Test public void testUpdateModifyEntityInCollection() { // Given & When - final T docView = modifyEntityInCollection(); + final UpdatableDocumentEntityWithMapsView docView = modifyEntityInCollection(); // Then // Assert that the document and the people are loaded in full mode i.e. a full fetch @@ -219,7 +207,7 @@ public void testUpdateModifyEntityInCollection() { @Test public void testUpdateAddNullToCollection() { // Given & When - final T docView = addNullToCollection(); + final UpdatableDocumentEntityWithMapsView docView = addNullToCollection(); // Then // Assert that the document and the people are loaded i.e. a full fetch @@ -248,7 +236,7 @@ public void testUpdateAddNullToCollection() { @Test public void testUpdateSetCollectionToNull() { // Given & When - final T docView = setCollectionToNull(); + final UpdatableDocumentEntityWithMapsView docView = setCollectionToNull(); // Then // Assert that only the document is loaded @@ -294,6 +282,12 @@ public void testUpdateAddNewEntityToCollection() { } } + @Override + protected boolean isQueryStrategy() { + // Collection changes always need to be applied on the entity model, can't do that via a query + return false; + } + @Override protected AssertStatementBuilder fullFetch(AssertStatementBuilder builder) { return builder.assertSelect() diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/EntityViewUpdateUpdatableOnlyEntityTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/EntityViewUpdateUpdatableOnlyEntityTest.java index 41faeb5c8b..922d5bf3f7 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/EntityViewUpdateUpdatableOnlyEntityTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/EntityViewUpdateUpdatableOnlyEntityTest.java @@ -20,56 +20,45 @@ import com.blazebit.persistence.testsuite.base.category.NoDatanucleus; import com.blazebit.persistence.testsuite.base.category.NoEclipselink; import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.testsuite.entity.Person; +import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.testsuite.update.entity.AbstractEntityViewUpdateEntityTest; -import com.blazebit.persistence.view.testsuite.update.entity.model.UpdatableDocumentEntityViewBase; -import com.blazebit.persistence.view.testsuite.update.entity.updatableonly.model.FullUpdatableDocumentEntityView; -import com.blazebit.persistence.view.testsuite.update.entity.updatableonly.model.LazyUpdatableDocumentEntityView; -import com.blazebit.persistence.view.testsuite.update.entity.updatableonly.model.PartialUpdatableDocumentEntityView; +import com.blazebit.persistence.view.testsuite.update.entity.updatableonly.model.UpdatableDocumentEntityView; import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import javax.persistence.PersistenceException; -import java.util.Arrays; -import java.util.Collection; import static org.junit.Assert.*; /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ @RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) -public class EntityViewUpdateUpdatableOnlyEntityTest extends AbstractEntityViewUpdateEntityTest { +public class EntityViewUpdateUpdatableOnlyEntityTest extends AbstractEntityViewUpdateEntityTest { - public EntityViewUpdateUpdatableOnlyEntityTest(Class viewType) { - super(viewType); - } - - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { LazyUpdatableDocumentEntityView.class }, - { PartialUpdatableDocumentEntityView.class }, - { FullUpdatableDocumentEntityView.class } - }); + public EntityViewUpdateUpdatableOnlyEntityTest(FlushMode mode, FlushStrategy strategy) { + super(mode, strategy, UpdatableDocumentEntityView.class); } @Test public void testSimpleUpdate() { // Given & When - final T docView = simpleUpdate(); + final UpdatableDocumentEntityView docView = simpleUpdate(); // Then // Assert that not only the document is loaded AssertStatementBuilder builder = assertQuerySequence(); - fullFetch(builder); + if (!isQueryStrategy()) { + fullFetch(builder); + } builder.update(Document.class) .validate(); @@ -82,12 +71,16 @@ public void testSimpleUpdate() { @Test public void testUpdateWithEntity() { // Given & When - final T docView = updateWithEntity(); + final UpdatableDocumentEntityView docView = updateWithEntity(); // Then // Since the responsiblePerson changed we don't need to load the old responsiblePerson AssertStatementBuilder builder = assertQuerySequence(); - fullFetch(builder); + + if (!isQueryStrategy()) { + fullFetch(builder); + } + builder.update(Document.class) .validate(); @@ -99,12 +92,16 @@ public void testUpdateWithEntity() { @Test public void testUpdateWithModifyEntity() { // Given & When - final T docView = updateWithModifyEntity(); + final UpdatableDocumentEntityView docView = updateWithModifyEntity(); // Then // Since the responsiblePerson changed we don't need to load the old responsiblePerson AssertStatementBuilder builder = assertQuerySequence(); - fullFetch(builder); + + if (!isQueryStrategy()) { + fullFetch(builder); + } + builder.update(Document.class) .validate(); @@ -118,14 +115,20 @@ public void testUpdateWithModifyEntity() { @Test public void testUpdateWithModifyExisting() { // Given & When - final T docView = updateWithModifyExisting(); + final UpdatableDocumentEntityView docView = updateWithModifyExisting(); // Then // Since updates aren't cascaded, the responsiblePerson does not need to be loaded AssertStatementBuilder builder = assertQuerySequence(); - if (isFullMode()) { - fullFetch(builder); + if (isQueryStrategy()) { + if (isFullMode()) { + fullUpdate(builder); + } + } else { + if (isFullMode()) { + fullFetch(builder); + } } builder.validate(); @@ -138,14 +141,16 @@ public void testUpdateWithModifyExisting() { @Test public void testUpdateToNull() { // Given & When - final T docView = updateToNull(); + final UpdatableDocumentEntityView docView = updateToNull(); // Then // Since the responsiblePerson changed we don't need to load the old responsiblePerson // Since the new responsiblePerson is null, we don't need to do anything further AssertStatementBuilder builder = assertQuerySequence(); - fullFetch(builder); + if (!isQueryStrategy()) { + fullFetch(builder); + } builder.update(Document.class) .validate(); @@ -153,8 +158,14 @@ public void testUpdateToNull() { // Updating to null thankfully does not require reloading the relation AssertStatementBuilder afterBuilder = assertQueriesAfterUpdate(docView); - if (isFullMode()) { - fullFetch(afterBuilder); + if (isQueryStrategy()) { + if (isFullMode()) { + fullUpdate(afterBuilder); + } + } else { + if (isFullMode()) { + fullFetch(afterBuilder); + } } afterBuilder.validate(); assertNull(doc1.getResponsiblePerson()); @@ -164,17 +175,19 @@ public void testUpdateToNull() { public void testUpdateToNewPerson() { try { // Given & When - final T docView = updateToNewPerson(); + final UpdatableDocumentEntityView docView = updateToNewPerson(); fail("Expected a transient reference error for the new person!"); } catch (PersistenceException | IllegalStateException ex) { // Then assertTrue(ex.getMessage().contains("transient")); AssertStatementBuilder builder = assertQuerySequence(); - if (isFullMode()) { - fullFetch(builder); - } else { - builder.select(Document.class); + if (!isQueryStrategy()) { + if (isFullMode()) { + fullFetch(builder); + } else { + builder.select(Document.class); + } } builder.validate(); @@ -183,9 +196,15 @@ public void testUpdateToNewPerson() { } } + @Override protected AssertStatementBuilder fullFetch(AssertStatementBuilder builder) { return builder.assertSelect() .fetching(Document.class) .and(); } + + @Override + protected AssertStatementBuilder fullUpdate(AssertStatementBuilder builder) { + return builder.update(Document.class); + } } diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/model/FullUpdatableDocumentEntityView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/model/FullUpdatableDocumentEntityView.java deleted file mode 100644 index 332e0e6099..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/model/FullUpdatableDocumentEntityView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.entity.updatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentEntityView extends UpdatableDocumentEntityView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/model/FullUpdatableDocumentEntityWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/model/FullUpdatableDocumentEntityWithCollectionsView.java deleted file mode 100644 index a6b7b084c9..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/model/FullUpdatableDocumentEntityWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.entity.updatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentEntityWithCollectionsView extends UpdatableDocumentEntityWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/model/FullUpdatableDocumentEntityWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/model/FullUpdatableDocumentEntityWithMapsView.java deleted file mode 100644 index dd9c2406d2..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/model/FullUpdatableDocumentEntityWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.entity.updatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentEntityWithMapsView extends UpdatableDocumentEntityWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/model/LazyUpdatableDocumentEntityView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/model/LazyUpdatableDocumentEntityView.java deleted file mode 100644 index 8bb46fb233..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/model/LazyUpdatableDocumentEntityView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.entity.updatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentEntityView extends UpdatableDocumentEntityView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/model/LazyUpdatableDocumentEntityWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/model/LazyUpdatableDocumentEntityWithCollectionsView.java deleted file mode 100644 index e422fb7e63..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/model/LazyUpdatableDocumentEntityWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.entity.updatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentEntityWithCollectionsView extends UpdatableDocumentEntityWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/model/LazyUpdatableDocumentEntityWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/model/LazyUpdatableDocumentEntityWithMapsView.java deleted file mode 100644 index 52fe88a443..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/model/LazyUpdatableDocumentEntityWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.entity.updatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentEntityWithMapsView extends UpdatableDocumentEntityWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/model/PartialUpdatableDocumentEntityView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/model/PartialUpdatableDocumentEntityView.java deleted file mode 100644 index 1fd7a18b41..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/model/PartialUpdatableDocumentEntityView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.entity.updatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentEntityView extends UpdatableDocumentEntityView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/model/PartialUpdatableDocumentEntityWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/model/PartialUpdatableDocumentEntityWithCollectionsView.java deleted file mode 100644 index a912c885c9..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/model/PartialUpdatableDocumentEntityWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.entity.updatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentEntityWithCollectionsView extends UpdatableDocumentEntityWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/model/PartialUpdatableDocumentEntityWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/model/PartialUpdatableDocumentEntityWithMapsView.java deleted file mode 100644 index 0aa7729af6..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/model/PartialUpdatableDocumentEntityWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.entity.updatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentEntityWithMapsView extends UpdatableDocumentEntityWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/model/UpdatableDocumentEntityView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/model/UpdatableDocumentEntityView.java index af58b321cb..ac3eb10da9 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/model/UpdatableDocumentEntityView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/model/UpdatableDocumentEntityView.java @@ -23,7 +23,7 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ public interface UpdatableDocumentEntityView extends UpdatableDocumentEntityViewBase { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/model/UpdatableDocumentEntityWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/model/UpdatableDocumentEntityWithCollectionsView.java index 4bc9846d0d..ac47bddf1f 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/model/UpdatableDocumentEntityWithCollectionsView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/model/UpdatableDocumentEntityWithCollectionsView.java @@ -25,7 +25,7 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ public interface UpdatableDocumentEntityWithCollectionsView extends UpdatableDocumentEntityWithCollectionsViewBase { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/model/UpdatableDocumentEntityWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/model/UpdatableDocumentEntityWithMapsView.java index c6fe8dda2e..60efc39290 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/model/UpdatableDocumentEntityWithMapsView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/entity/updatableonly/model/UpdatableDocumentEntityWithMapsView.java @@ -17,7 +17,6 @@ package com.blazebit.persistence.view.testsuite.update.entity.updatableonly.model; import com.blazebit.persistence.testsuite.entity.Person; -import com.blazebit.persistence.view.CascadeType; import com.blazebit.persistence.view.UpdatableMapping; import com.blazebit.persistence.view.testsuite.update.entity.model.UpdatableDocumentEntityWithMapsViewBase; @@ -26,7 +25,7 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ public interface UpdatableDocumentEntityWithMapsView extends UpdatableDocumentEntityWithMapsViewBase { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/rollback/EntityViewUpdateRollbackCollectionsTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/rollback/EntityViewUpdateRollbackCollectionsTest.java index d6a2bedaa6..e89b183369 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/rollback/EntityViewUpdateRollbackCollectionsTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/rollback/EntityViewUpdateRollbackCollectionsTest.java @@ -20,10 +20,9 @@ import com.blazebit.persistence.testsuite.base.category.NoDatanucleus; import com.blazebit.persistence.testsuite.base.category.NoEclipselink; import com.blazebit.persistence.testsuite.entity.Document; +import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.testsuite.update.AbstractEntityViewUpdateTest; -import com.blazebit.persistence.view.testsuite.update.rollback.model.FullUpdatableDocumentRollbackWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.rollback.model.LazyUpdatableDocumentRollbackWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.rollback.model.PartialUpdatableDocumentRollbackWithCollectionsView; import com.blazebit.persistence.view.testsuite.update.rollback.model.UpdatableDocumentRollbackWithCollectionsView; import org.junit.Test; import org.junit.experimental.categories.Category; @@ -31,38 +30,32 @@ import org.junit.runners.Parameterized; import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; import static org.junit.Assert.assertEquals; /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ @RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) -public class EntityViewUpdateRollbackCollectionsTest extends AbstractEntityViewUpdateTest { +public class EntityViewUpdateRollbackCollectionsTest extends AbstractEntityViewUpdateTest { - public EntityViewUpdateRollbackCollectionsTest(Class viewType) { - super(viewType); + public EntityViewUpdateRollbackCollectionsTest(FlushMode mode, FlushStrategy strategy) { + super(mode, strategy, UpdatableDocumentRollbackWithCollectionsView.class); } @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { LazyUpdatableDocumentRollbackWithCollectionsView.class }, - { PartialUpdatableDocumentRollbackWithCollectionsView.class }, - { FullUpdatableDocumentRollbackWithCollectionsView.class } - }); + public static Object[][] combinations() { + return MODE_STRATEGY_COMBINATIONS; } @Test public void testUpdateAddToCollection() { // Given - final T docView = getDoc1View(); + final UpdatableDocumentRollbackWithCollectionsView docView = getDoc1View(); clearQueries(); // When 1 @@ -94,7 +87,7 @@ public void testUpdateAddToCollection() { @Test public void testUpdateAddToNewCollection() { // Given - final T docView = getDoc1View(); + final UpdatableDocumentRollbackWithCollectionsView docView = getDoc1View(); clearQueries(); // When diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/rollback/EntityViewUpdateRollbackTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/rollback/EntityViewUpdateRollbackTest.java index 3c03cc5b5b..b31a1a6786 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/rollback/EntityViewUpdateRollbackTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/rollback/EntityViewUpdateRollbackTest.java @@ -20,18 +20,14 @@ import com.blazebit.persistence.testsuite.base.category.NoDatanucleus; import com.blazebit.persistence.testsuite.base.category.NoEclipselink; import com.blazebit.persistence.testsuite.entity.Document; +import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.testsuite.update.AbstractEntityViewUpdateTest; -import com.blazebit.persistence.view.testsuite.update.rollback.model.FullUpdatableDocumentRollbackView; -import com.blazebit.persistence.view.testsuite.update.rollback.model.LazyUpdatableDocumentRollbackView; -import com.blazebit.persistence.view.testsuite.update.rollback.model.PartialUpdatableDocumentRollbackView; import com.blazebit.persistence.view.testsuite.update.rollback.model.UpdatableDocumentRollbackView; import org.junit.Test; import org.junit.experimental.categories.Category; -import org.junit.runner.RunWith; import org.junit.runners.Parameterized; -import java.util.Arrays; -import java.util.Collection; import java.util.Date; import static org.junit.Assert.assertEquals; @@ -39,30 +35,25 @@ /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ -@RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) -public class EntityViewUpdateRollbackTest extends AbstractEntityViewUpdateTest { +public class EntityViewUpdateRollbackTest extends AbstractEntityViewUpdateTest { - public EntityViewUpdateRollbackTest(Class viewType) { - super(viewType); + public EntityViewUpdateRollbackTest(FlushMode mode, FlushStrategy strategy) { + super(mode, strategy, UpdatableDocumentRollbackView.class); } @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { LazyUpdatableDocumentRollbackView.class }, - { PartialUpdatableDocumentRollbackView.class }, - { FullUpdatableDocumentRollbackView.class } - }); + public static Object[][] combinations() { + return MODE_STRATEGY_COMBINATIONS; } @Test public void testUpdateRollbacked() { // Given - final T docView = getDoc1View(); + final UpdatableDocumentRollbackView docView = getDoc1View(); // When 1 docView.setName("newDoc"); @@ -85,7 +76,7 @@ public void testUpdateRollbacked() { @Test public void testModifyAndUpdateRollbacked() { // Given - final T docView = getDoc1View(); + final UpdatableDocumentRollbackView docView = getDoc1View(); // When docView.setName("newDoc"); diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/rollback/model/FullUpdatableDocumentRollbackView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/rollback/model/FullUpdatableDocumentRollbackView.java deleted file mode 100644 index 65b581e624..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/rollback/model/FullUpdatableDocumentRollbackView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.rollback.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentRollbackView extends UpdatableDocumentRollbackView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/rollback/model/FullUpdatableDocumentRollbackWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/rollback/model/FullUpdatableDocumentRollbackWithCollectionsView.java deleted file mode 100644 index 96d18030c1..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/rollback/model/FullUpdatableDocumentRollbackWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.rollback.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentRollbackWithCollectionsView extends UpdatableDocumentRollbackWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/rollback/model/LazyUpdatableDocumentRollbackView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/rollback/model/LazyUpdatableDocumentRollbackView.java deleted file mode 100644 index 15cafd2549..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/rollback/model/LazyUpdatableDocumentRollbackView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.rollback.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentRollbackView extends UpdatableDocumentRollbackView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/rollback/model/LazyUpdatableDocumentRollbackWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/rollback/model/LazyUpdatableDocumentRollbackWithCollectionsView.java deleted file mode 100644 index bcf36ff81d..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/rollback/model/LazyUpdatableDocumentRollbackWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.rollback.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentRollbackWithCollectionsView extends UpdatableDocumentRollbackWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/rollback/model/PartialUpdatableDocumentRollbackView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/rollback/model/PartialUpdatableDocumentRollbackView.java deleted file mode 100644 index e672762f9e..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/rollback/model/PartialUpdatableDocumentRollbackView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.rollback.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentRollbackView extends UpdatableDocumentRollbackView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/rollback/model/PartialUpdatableDocumentRollbackWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/rollback/model/PartialUpdatableDocumentRollbackWithCollectionsView.java deleted file mode 100644 index 9bd03b92f8..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/rollback/model/PartialUpdatableDocumentRollbackWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.rollback.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.1.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentRollbackWithCollectionsView extends UpdatableDocumentRollbackWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/rollback/model/UpdatableDocumentRollbackView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/rollback/model/UpdatableDocumentRollbackView.java index d736bac515..af9ed7ad77 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/rollback/model/UpdatableDocumentRollbackView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/rollback/model/UpdatableDocumentRollbackView.java @@ -16,15 +16,20 @@ package com.blazebit.persistence.view.testsuite.update.rollback.model; +import com.blazebit.persistence.testsuite.entity.Document; +import com.blazebit.persistence.view.EntityView; import com.blazebit.persistence.view.IdMapping; +import com.blazebit.persistence.view.UpdatableEntityView; import java.util.Date; /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ +@UpdatableEntityView +@EntityView(Document.class) public interface UpdatableDocumentRollbackView { @IdMapping("id") diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/rollback/model/UpdatableDocumentRollbackWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/rollback/model/UpdatableDocumentRollbackWithCollectionsView.java index 05d02c5b44..f7f5489001 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/rollback/model/UpdatableDocumentRollbackWithCollectionsView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/rollback/model/UpdatableDocumentRollbackWithCollectionsView.java @@ -16,15 +16,20 @@ package com.blazebit.persistence.view.testsuite.update.rollback.model; +import com.blazebit.persistence.testsuite.entity.Document; +import com.blazebit.persistence.view.EntityView; import com.blazebit.persistence.view.IdMapping; +import com.blazebit.persistence.view.UpdatableEntityView; import java.util.List; /** * * @author Christian Beikov - * @since 1.1.0 + * @since 1.2.0 */ +@UpdatableEntityView +@EntityView(Document.class) public interface UpdatableDocumentRollbackWithCollectionsView { @IdMapping("id") diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/creatable/EntityViewUpdateSimpleCreatableSubviewCollectionsTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/creatable/EntityViewUpdateSimpleCreatableSubviewCollectionsTest.java index 770d1f4030..fa45667649 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/creatable/EntityViewUpdateSimpleCreatableSubviewCollectionsTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/creatable/EntityViewUpdateSimpleCreatableSubviewCollectionsTest.java @@ -21,17 +21,12 @@ import com.blazebit.persistence.testsuite.base.category.NoEclipselink; import com.blazebit.persistence.testsuite.entity.Document; import com.blazebit.persistence.testsuite.entity.Person; +import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.spi.EntityViewConfiguration; import com.blazebit.persistence.view.testsuite.update.AbstractEntityViewUpdateTest; -import com.blazebit.persistence.view.testsuite.update.subview.simple.creatable.model.FullUpdatableDocumentView; -import com.blazebit.persistence.view.testsuite.update.subview.simple.creatable.model.FullUpdatableDocumentWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.subview.simple.creatable.model.LazyUpdatableDocumentView; -import com.blazebit.persistence.view.testsuite.update.subview.simple.creatable.model.LazyUpdatableDocumentWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.subview.simple.creatable.model.PartialUpdatableDocumentView; -import com.blazebit.persistence.view.testsuite.update.subview.simple.creatable.model.PartialUpdatableDocumentWithCollectionsView; import com.blazebit.persistence.view.testsuite.update.subview.simple.creatable.model.PersonCreateView; import com.blazebit.persistence.view.testsuite.update.subview.simple.creatable.model.PersonView; -import com.blazebit.persistence.view.testsuite.update.subview.simple.creatable.model.UpdatableDocumentView; import com.blazebit.persistence.view.testsuite.update.subview.simple.creatable.model.UpdatableDocumentWithCollectionsView; import org.junit.Assert; import org.junit.Test; @@ -39,7 +34,6 @@ import org.junit.runner.RunWith; import org.junit.runners.Parameterized; -import java.util.Arrays; import java.util.Collection; import static org.junit.Assert.*; @@ -52,19 +46,15 @@ @RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) -public class EntityViewUpdateSimpleCreatableSubviewCollectionsTest extends AbstractEntityViewUpdateTest { +public class EntityViewUpdateSimpleCreatableSubviewCollectionsTest extends AbstractEntityViewUpdateTest { - public EntityViewUpdateSimpleCreatableSubviewCollectionsTest(Class viewType) { - super(viewType); + public EntityViewUpdateSimpleCreatableSubviewCollectionsTest(FlushMode mode, FlushStrategy strategy) { + super(mode, strategy, UpdatableDocumentWithCollectionsView.class); } - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { PartialUpdatableDocumentWithCollectionsView.class }, - { LazyUpdatableDocumentWithCollectionsView.class }, - { FullUpdatableDocumentWithCollectionsView.class } - }); + @Parameterized.Parameters(name = "{0} - {1}") + public static Object[][] combinations() { + return MODE_STRATEGY_COMBINATIONS; } @Override @@ -75,7 +65,7 @@ protected void registerViewTypes(EntityViewConfiguration cfg) { @Test public void testUpdateWithPersonCreateView() { - final T docView = getDoc1View(); + final UpdatableDocumentWithCollectionsView docView = getDoc1View(); clearQueries(); // When @@ -131,6 +121,12 @@ public static void assertSubviewEquals(Collection persons, Collection extends AbstractEntityViewUpdateTest { +public class EntityViewUpdateSimpleCreatableSubviewMapsTest extends AbstractEntityViewUpdateTest { - public EntityViewUpdateSimpleCreatableSubviewMapsTest(Class viewType) { - super(viewType); + public EntityViewUpdateSimpleCreatableSubviewMapsTest(FlushMode mode, FlushStrategy strategy) { + super(mode, strategy, UpdatableDocumentWithMapsView.class); } - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { PartialUpdatableDocumentWithMapsView.class }, - { LazyUpdatableDocumentWithMapsView.class }, - { FullUpdatableDocumentWithMapsView.class } - }); + @Parameterized.Parameters(name = "{0} - {1}") + public static Object[][] combinations() { + return MODE_STRATEGY_COMBINATIONS; } @Override @@ -72,7 +65,7 @@ protected void registerViewTypes(EntityViewConfiguration cfg) { @Test public void testUpdateWithPersonCreateView() { - final T docView = getDoc1View(); + final UpdatableDocumentWithMapsView docView = getDoc1View(); clearQueries(); // When @@ -130,6 +123,12 @@ public static void assertSubviewEquals(Map persons, Map extends AbstractEntityViewUpdateTest { +public class EntityViewUpdateSimpleCreatableSubviewTest extends AbstractEntityViewUpdateTest { - public EntityViewUpdateSimpleCreatableSubviewTest(Class viewType) { - super(viewType); + public EntityViewUpdateSimpleCreatableSubviewTest(FlushMode mode, FlushStrategy strategy) { + super(mode, strategy, UpdatableDocumentView.class); } - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { PartialUpdatableDocumentView.class }, - { LazyUpdatableDocumentView.class }, - { FullUpdatableDocumentView.class } - }); + @Parameterized.Parameters(name = "{0} - {1}") + public static Object[][] combinations() { + return MODE_STRATEGY_COMBINATIONS; } @Override @@ -72,7 +65,7 @@ protected void registerViewTypes(EntityViewConfiguration cfg) { @Test public void testSimpleUpdate() { // Given - final T docView = getDoc1View(); + final UpdatableDocumentView docView = getDoc1View(); clearQueries(); // When @@ -83,10 +76,12 @@ public void testSimpleUpdate() { // Assert that only the document is loaded and finally also updated AssertStatementBuilder builder = assertQuerySequence(); - if (isFullMode()) { - fullFetch(builder); - } else { - builder.select(Document.class); + if (!isQueryStrategy()) { + if (isFullMode()) { + fullFetch(builder); + } else { + builder.select(Document.class); + } } builder.update(Document.class) @@ -100,7 +95,7 @@ public void testSimpleUpdate() { @Test public void testUpdateWithSubview() { // Given - final T docView = getDoc1View(); + final UpdatableDocumentView docView = getDoc1View(); PersonView newPerson = getP2View(PersonView.class); clearQueries(); @@ -113,10 +108,12 @@ public void testUpdateWithSubview() { // There is no need to actually load the person AssertStatementBuilder builder = assertQuerySequence(); - if (isFullMode()) { - fullFetch(builder); - } else { - builder.select(Document.class); + if (!isQueryStrategy()) { + if (isFullMode()) { + fullFetch(builder); + } else { + builder.select(Document.class); + } } builder.update(Document.class) @@ -129,7 +126,7 @@ public void testUpdateWithSubview() { @Test public void testUpdateWithModifySubview() { // Given - final T docView = getDoc1View(); + final UpdatableDocumentView docView = getDoc1View(); PersonView newPerson = getP2View(PersonView.class); clearQueries(); @@ -141,7 +138,9 @@ public void testUpdateWithModifySubview() { // Then AssertStatementBuilder builder = assertQuerySequence(); - fullFetch(builder); + if (!isQueryStrategy()) { + fullFetch(builder); + } builder.update(Document.class) .validate(); @@ -154,7 +153,7 @@ public void testUpdateWithModifySubview() { @Test public void testUpdateWithModifyExisting() { // Given - final T docView = getDoc1View(); + final UpdatableDocumentView docView = getDoc1View(); clearQueries(); // When @@ -164,8 +163,14 @@ public void testUpdateWithModifyExisting() { // Then AssertStatementBuilder builder = assertQuerySequence(); - if (isFullMode()) { - fullFetch(builder); + if (isQueryStrategy()) { + if (isFullMode()) { + fullUpdate(builder); + } + } else { + if (isFullMode()) { + fullFetch(builder); + } } builder.validate(); @@ -178,7 +183,7 @@ public void testUpdateWithModifyExisting() { @Test public void testUpdateToNull() { // Given - final T docView = getDoc1View(); + final UpdatableDocumentView docView = getDoc1View(); clearQueries(); // When @@ -189,10 +194,12 @@ public void testUpdateToNull() { // Assert that only the document is loaded and finally also updated AssertStatementBuilder builder = assertQuerySequence(); - if (isFullMode()) { - fullFetch(builder); - } else { - builder.select(Document.class); + if (!isQueryStrategy()) { + if (isFullMode()) { + fullFetch(builder); + } else { + builder.select(Document.class); + } } builder.update(Document.class) @@ -204,7 +211,7 @@ public void testUpdateToNull() { @Test public void testUpdateWithPersonCreateView() { - final T docView = getDoc1View(); + final UpdatableDocumentView docView = getDoc1View(); final Person oldResponsiblePerson = doc1.getResponsiblePerson(); clearQueries(); @@ -218,10 +225,12 @@ public void testUpdateWithPersonCreateView() { // Assert that only the document is loaded, as we don't need to load the old person AssertStatementBuilder builder = assertQuerySequence(); - if (isFullMode()) { - fullFetch(builder); - } else { - builder.select(Document.class); + if (!isQueryStrategy()) { + if (isFullMode()) { + fullFetch(builder); + } else { + builder.select(Document.class); + } } builder.insert(Person.class) @@ -240,4 +249,9 @@ protected AssertStatementBuilder fullFetch(AssertStatementBuilder builder) { .fetching(Document.class) .and(); } + + @Override + protected AssertStatementBuilder fullUpdate(AssertStatementBuilder builder) { + return builder.update(Document.class); + } } diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/creatable/model/FullUpdatableDocumentView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/creatable/model/FullUpdatableDocumentView.java deleted file mode 100644 index 9f0c8cf743..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/creatable/model/FullUpdatableDocumentView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.creatable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public abstract class FullUpdatableDocumentView extends UpdatableDocumentView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/creatable/model/FullUpdatableDocumentWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/creatable/model/FullUpdatableDocumentWithCollectionsView.java deleted file mode 100644 index 0668d7b30a..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/creatable/model/FullUpdatableDocumentWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.creatable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public abstract class FullUpdatableDocumentWithCollectionsView extends UpdatableDocumentWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/creatable/model/FullUpdatableDocumentWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/creatable/model/FullUpdatableDocumentWithMapsView.java deleted file mode 100644 index 4f6d71f212..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/creatable/model/FullUpdatableDocumentWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.creatable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public abstract class FullUpdatableDocumentWithMapsView extends UpdatableDocumentWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/creatable/model/LazyUpdatableDocumentView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/creatable/model/LazyUpdatableDocumentView.java deleted file mode 100644 index 8d8342c0ae..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/creatable/model/LazyUpdatableDocumentView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.creatable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public abstract class LazyUpdatableDocumentView extends UpdatableDocumentView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/creatable/model/LazyUpdatableDocumentWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/creatable/model/LazyUpdatableDocumentWithCollectionsView.java deleted file mode 100644 index f1c84ad119..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/creatable/model/LazyUpdatableDocumentWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.creatable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public abstract class LazyUpdatableDocumentWithCollectionsView extends UpdatableDocumentWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/creatable/model/LazyUpdatableDocumentWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/creatable/model/LazyUpdatableDocumentWithMapsView.java deleted file mode 100644 index 98f9a97e79..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/creatable/model/LazyUpdatableDocumentWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.creatable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public abstract class LazyUpdatableDocumentWithMapsView extends UpdatableDocumentWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/creatable/model/PartialUpdatableDocumentView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/creatable/model/PartialUpdatableDocumentView.java deleted file mode 100644 index 181506a3bf..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/creatable/model/PartialUpdatableDocumentView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.creatable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public abstract class PartialUpdatableDocumentView extends UpdatableDocumentView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/creatable/model/PartialUpdatableDocumentWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/creatable/model/PartialUpdatableDocumentWithCollectionsView.java deleted file mode 100644 index ad827b2ddc..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/creatable/model/PartialUpdatableDocumentWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.creatable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public abstract class PartialUpdatableDocumentWithCollectionsView extends UpdatableDocumentWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/creatable/model/PartialUpdatableDocumentWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/creatable/model/PartialUpdatableDocumentWithMapsView.java deleted file mode 100644 index db69f55ae7..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/creatable/model/PartialUpdatableDocumentWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.creatable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public abstract class PartialUpdatableDocumentWithMapsView extends UpdatableDocumentWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/creatable/model/UpdatableDocumentView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/creatable/model/UpdatableDocumentView.java index d78581596b..682c75fcbe 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/creatable/model/UpdatableDocumentView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/creatable/model/UpdatableDocumentView.java @@ -16,8 +16,11 @@ package com.blazebit.persistence.view.testsuite.update.subview.simple.creatable.model; +import com.blazebit.persistence.testsuite.entity.Document; import com.blazebit.persistence.view.CascadeType; +import com.blazebit.persistence.view.EntityView; import com.blazebit.persistence.view.IdMapping; +import com.blazebit.persistence.view.UpdatableEntityView; import com.blazebit.persistence.view.UpdatableMapping; import java.util.Date; @@ -27,6 +30,8 @@ * @author Christian Beikov * @since 1.2.0 */ +@UpdatableEntityView +@EntityView(Document.class) public abstract class UpdatableDocumentView { @IdMapping("id") diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/creatable/model/UpdatableDocumentWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/creatable/model/UpdatableDocumentWithCollectionsView.java index 98c84b6095..e576e7a9cf 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/creatable/model/UpdatableDocumentWithCollectionsView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/creatable/model/UpdatableDocumentWithCollectionsView.java @@ -16,8 +16,11 @@ package com.blazebit.persistence.view.testsuite.update.subview.simple.creatable.model; +import com.blazebit.persistence.testsuite.entity.Document; import com.blazebit.persistence.view.CascadeType; +import com.blazebit.persistence.view.EntityView; import com.blazebit.persistence.view.IdMapping; +import com.blazebit.persistence.view.UpdatableEntityView; import com.blazebit.persistence.view.UpdatableMapping; import java.util.Date; @@ -28,6 +31,8 @@ * @author Christian Beikov * @since 1.2.0 */ +@UpdatableEntityView +@EntityView(Document.class) public abstract class UpdatableDocumentWithCollectionsView { @IdMapping("id") diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/creatable/model/UpdatableDocumentWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/creatable/model/UpdatableDocumentWithMapsView.java index c78e5dc586..69549a2a99 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/creatable/model/UpdatableDocumentWithMapsView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/creatable/model/UpdatableDocumentWithMapsView.java @@ -16,8 +16,11 @@ package com.blazebit.persistence.view.testsuite.update.subview.simple.creatable.model; +import com.blazebit.persistence.testsuite.entity.Document; import com.blazebit.persistence.view.CascadeType; +import com.blazebit.persistence.view.EntityView; import com.blazebit.persistence.view.IdMapping; +import com.blazebit.persistence.view.UpdatableEntityView; import com.blazebit.persistence.view.UpdatableMapping; import java.util.Date; @@ -29,6 +32,8 @@ * @author Christian Beikov * @since 1.2.0 */ +@UpdatableEntityView +@EntityView(Document.class) public abstract class UpdatableDocumentWithMapsView { @IdMapping("id") diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/EntityViewUpdateSimpleImmutableSubviewCollectionsTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/EntityViewUpdateSimpleImmutableSubviewCollectionsTest.java index 0d7262b603..e531d39f8c 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/EntityViewUpdateSimpleImmutableSubviewCollectionsTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/EntityViewUpdateSimpleImmutableSubviewCollectionsTest.java @@ -21,11 +21,10 @@ import com.blazebit.persistence.testsuite.base.category.NoEclipselink; import com.blazebit.persistence.testsuite.entity.Document; import com.blazebit.persistence.testsuite.entity.Person; +import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.spi.EntityViewConfiguration; import com.blazebit.persistence.view.testsuite.update.AbstractEntityViewUpdateTest; -import com.blazebit.persistence.view.testsuite.update.subview.simple.immutable.model.FullUpdatableDocumentWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.subview.simple.immutable.model.LazyUpdatableDocumentWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.subview.simple.immutable.model.PartialUpdatableDocumentWithCollectionsView; import com.blazebit.persistence.view.testsuite.update.subview.simple.immutable.model.PersonView; import com.blazebit.persistence.view.testsuite.update.subview.simple.immutable.model.UpdatableDocumentWithCollectionsView; import org.junit.Assert; @@ -35,7 +34,6 @@ import org.junit.runners.Parameterized; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collection; import static org.junit.Assert.*; @@ -48,19 +46,15 @@ @RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) -public class EntityViewUpdateSimpleImmutableSubviewCollectionsTest extends AbstractEntityViewUpdateTest { +public class EntityViewUpdateSimpleImmutableSubviewCollectionsTest extends AbstractEntityViewUpdateTest { - public EntityViewUpdateSimpleImmutableSubviewCollectionsTest(Class viewType) { - super(viewType); + public EntityViewUpdateSimpleImmutableSubviewCollectionsTest(FlushMode mode, FlushStrategy strategy) { + super(mode, strategy, UpdatableDocumentWithCollectionsView.class); } - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { PartialUpdatableDocumentWithCollectionsView.class }, - { LazyUpdatableDocumentWithCollectionsView.class }, - { FullUpdatableDocumentWithCollectionsView.class } - }); + @Parameterized.Parameters(name = "{0} - {1}") + public static Object[][] combinations() { + return MODE_STRATEGY_COMBINATIONS; } @Override @@ -71,7 +65,7 @@ protected void registerViewTypes(EntityViewConfiguration cfg) { @Test public void testUpdateReplaceCollection() { // Given - final T docView = getDoc1View(); + final UpdatableDocumentWithCollectionsView docView = getDoc1View(); clearQueries(); // When @@ -97,7 +91,7 @@ public void testUpdateReplaceCollection() { @Test public void testUpdateAddToCollection() { // Given - final T docView = getDoc1View(); + final UpdatableDocumentWithCollectionsView docView = getDoc1View(); PersonView newPerson = getP2View(PersonView.class); clearQueries(); @@ -122,7 +116,7 @@ public void testUpdateAddToCollection() { @Test public void testUpdateAddToNewCollection() { // Given - final T docView = getDoc1View(); + final UpdatableDocumentWithCollectionsView docView = getDoc1View(); PersonView newPerson = getP2View(PersonView.class); clearQueries(); @@ -185,6 +179,13 @@ private AssertStatementBuilder assertReplaceAnd(AssertStatementBuilder builder) .and(); } + @Override + protected boolean isQueryStrategy() { + // Collection changes always need to be applied on the entity model, can't do that via a query + return false; + } + + @Override protected AssertStatementBuilder fullFetch(AssertStatementBuilder builder) { return builder.assertSelect() .fetching(Document.class) diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/EntityViewUpdateSimpleImmutableSubviewMapsTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/EntityViewUpdateSimpleImmutableSubviewMapsTest.java index b26c2ac293..86887efa8e 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/EntityViewUpdateSimpleImmutableSubviewMapsTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/EntityViewUpdateSimpleImmutableSubviewMapsTest.java @@ -21,11 +21,10 @@ import com.blazebit.persistence.testsuite.base.category.NoEclipselink; import com.blazebit.persistence.testsuite.entity.Document; import com.blazebit.persistence.testsuite.entity.Person; +import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.spi.EntityViewConfiguration; import com.blazebit.persistence.view.testsuite.update.AbstractEntityViewUpdateTest; -import com.blazebit.persistence.view.testsuite.update.subview.simple.immutable.model.FullUpdatableDocumentWithMapsView; -import com.blazebit.persistence.view.testsuite.update.subview.simple.immutable.model.LazyUpdatableDocumentWithMapsView; -import com.blazebit.persistence.view.testsuite.update.subview.simple.immutable.model.PartialUpdatableDocumentWithMapsView; import com.blazebit.persistence.view.testsuite.update.subview.simple.immutable.model.PersonView; import com.blazebit.persistence.view.testsuite.update.subview.simple.immutable.model.UpdatableDocumentWithMapsView; import org.junit.Assert; @@ -34,9 +33,6 @@ import org.junit.runner.RunWith; import org.junit.runners.Parameterized; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; import java.util.HashMap; import java.util.Map; @@ -50,19 +46,15 @@ @RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) -public class EntityViewUpdateSimpleImmutableSubviewMapsTest extends AbstractEntityViewUpdateTest { +public class EntityViewUpdateSimpleImmutableSubviewMapsTest extends AbstractEntityViewUpdateTest { - public EntityViewUpdateSimpleImmutableSubviewMapsTest(Class viewType) { - super(viewType); + public EntityViewUpdateSimpleImmutableSubviewMapsTest(FlushMode mode, FlushStrategy strategy) { + super(mode, strategy, UpdatableDocumentWithMapsView.class); } - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { PartialUpdatableDocumentWithMapsView.class }, - { LazyUpdatableDocumentWithMapsView.class }, - { FullUpdatableDocumentWithMapsView.class } - }); + @Parameterized.Parameters(name = "{0} - {1}") + public static Object[][] combinations() { + return MODE_STRATEGY_COMBINATIONS; } @Override @@ -73,7 +65,7 @@ protected void registerViewTypes(EntityViewConfiguration cfg) { @Test public void testUpdateReplaceCollection() { // Given - final T docView = getDoc1View(); + final UpdatableDocumentWithMapsView docView = getDoc1View(); clearQueries(); // When @@ -99,7 +91,7 @@ public void testUpdateReplaceCollection() { @Test public void testUpdateAddToCollection() { // Given - final T docView = getDoc1View(); + final UpdatableDocumentWithMapsView docView = getDoc1View(); PersonView newPerson = getP2View(PersonView.class); clearQueries(); @@ -124,7 +116,7 @@ public void testUpdateAddToCollection() { @Test public void testUpdateAddToNewCollection() { // Given - final T docView = getDoc1View(); + final UpdatableDocumentWithMapsView docView = getDoc1View(); PersonView newPerson = getP2View(PersonView.class); clearQueries(); @@ -189,6 +181,13 @@ private AssertStatementBuilder assertReplaceAnd(AssertStatementBuilder builder) .and(); } + @Override + protected boolean isQueryStrategy() { + // Collection changes always need to be applied on the entity model, can't do that via a query + return false; + } + + @Override protected AssertStatementBuilder fullFetch(AssertStatementBuilder builder) { return builder.assertSelect() .fetching(Document.class) diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/EntityViewUpdateSimpleImmutableSubviewTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/EntityViewUpdateSimpleImmutableSubviewTest.java index 025d374771..3c275913e4 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/EntityViewUpdateSimpleImmutableSubviewTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/EntityViewUpdateSimpleImmutableSubviewTest.java @@ -20,11 +20,10 @@ import com.blazebit.persistence.testsuite.base.category.NoDatanucleus; import com.blazebit.persistence.testsuite.base.category.NoEclipselink; import com.blazebit.persistence.testsuite.entity.Document; +import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.spi.EntityViewConfiguration; import com.blazebit.persistence.view.testsuite.update.AbstractEntityViewUpdateTest; -import com.blazebit.persistence.view.testsuite.update.subview.simple.immutable.model.FullUpdatableDocumentView; -import com.blazebit.persistence.view.testsuite.update.subview.simple.immutable.model.LazyUpdatableDocumentView; -import com.blazebit.persistence.view.testsuite.update.subview.simple.immutable.model.PartialUpdatableDocumentView; import com.blazebit.persistence.view.testsuite.update.subview.simple.immutable.model.PersonView; import com.blazebit.persistence.view.testsuite.update.subview.simple.immutable.model.UpdatableDocumentView; import org.junit.Assert; @@ -33,9 +32,6 @@ import org.junit.runner.RunWith; import org.junit.runners.Parameterized; -import java.util.Arrays; -import java.util.Collection; - import static org.junit.Assert.assertEquals; /** @@ -46,19 +42,15 @@ @RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) -public class EntityViewUpdateSimpleImmutableSubviewTest extends AbstractEntityViewUpdateTest { +public class EntityViewUpdateSimpleImmutableSubviewTest extends AbstractEntityViewUpdateTest { - public EntityViewUpdateSimpleImmutableSubviewTest(Class viewType) { - super(viewType); + public EntityViewUpdateSimpleImmutableSubviewTest(FlushMode mode, FlushStrategy strategy) { + super(mode, strategy, UpdatableDocumentView.class); } - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { PartialUpdatableDocumentView.class }, - { LazyUpdatableDocumentView.class }, - { FullUpdatableDocumentView.class } - }); + @Parameterized.Parameters(name = "{0} - {1}") + public static Object[][] combinations() { + return MODE_STRATEGY_COMBINATIONS; } @Override @@ -69,7 +61,7 @@ protected void registerViewTypes(EntityViewConfiguration cfg) { @Test public void testSimpleUpdate() { // Given - final T docView = getDoc1View(); + final UpdatableDocumentView docView = getDoc1View(); clearQueries(); // When @@ -80,7 +72,10 @@ public void testSimpleUpdate() { // Assert that only the document is loaded and finally also updated AssertStatementBuilder builder = assertQuerySequence(); - fullFetch(builder); + if (!isQueryStrategy()) { + fullFetch(builder); + } + builder.update(Document.class) .validate(); @@ -92,7 +87,7 @@ public void testSimpleUpdate() { @Test public void testUpdateWithSubview() { // Given - final T docView = getDoc1View(); + final UpdatableDocumentView docView = getDoc1View(); PersonView newPerson = getP2View(PersonView.class); clearQueries(); @@ -105,7 +100,10 @@ public void testUpdateWithSubview() { // There is no need to actually load the person AssertStatementBuilder builder = assertQuerySequence(); - fullFetch(builder); + if (!isQueryStrategy()) { + fullFetch(builder); + } + builder.update(Document.class) .validate(); @@ -116,7 +114,7 @@ public void testUpdateWithSubview() { @Test public void testUpdateWithModifySubview() { // Given - final T docView = getDoc1View(); + final UpdatableDocumentView docView = getDoc1View(); PersonView newPerson = getP2View(PersonView.class); clearQueries(); @@ -128,7 +126,9 @@ public void testUpdateWithModifySubview() { // Then AssertStatementBuilder builder = assertQuerySequence(); - fullFetch(builder); + if (!isQueryStrategy()) { + fullFetch(builder); + } builder.update(Document.class) .validate(); @@ -141,7 +141,7 @@ public void testUpdateWithModifySubview() { @Test public void testUpdateWithModifyExisting() { // Given - final T docView = getDoc1View(); + final UpdatableDocumentView docView = getDoc1View(); clearQueries(); // When @@ -151,8 +151,14 @@ public void testUpdateWithModifyExisting() { // Then AssertStatementBuilder builder = assertQuerySequence(); - if (isFullMode()) { - fullFetch(builder); + if (isQueryStrategy()) { + if (isFullMode()) { + fullUpdate(builder); + } + } else { + if (isFullMode()) { + fullFetch(builder); + } } builder.validate(); @@ -165,7 +171,7 @@ public void testUpdateWithModifyExisting() { @Test public void testUpdateToNull() { // Given - final T docView = getDoc1View(); + final UpdatableDocumentView docView = getDoc1View(); clearQueries(); // When @@ -176,7 +182,10 @@ public void testUpdateToNull() { // Assert that only the document is loaded and finally also updated AssertStatementBuilder builder = assertQuerySequence(); - fullFetch(builder); + if (!isQueryStrategy()) { + fullFetch(builder); + } + builder.update(Document.class) .validate(); @@ -190,4 +199,9 @@ protected AssertStatementBuilder fullFetch(AssertStatementBuilder builder) { .fetching(Document.class) .and(); } + + @Override + protected AssertStatementBuilder fullUpdate(AssertStatementBuilder builder) { + return builder.update(Document.class); + } } diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/model/FullUpdatableDocumentView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/model/FullUpdatableDocumentView.java deleted file mode 100644 index 368476fa4e..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/model/FullUpdatableDocumentView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.immutable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentView extends UpdatableDocumentView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/model/FullUpdatableDocumentWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/model/FullUpdatableDocumentWithCollectionsView.java deleted file mode 100644 index 511e3efc55..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/model/FullUpdatableDocumentWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.immutable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentWithCollectionsView extends UpdatableDocumentWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/model/FullUpdatableDocumentWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/model/FullUpdatableDocumentWithMapsView.java deleted file mode 100644 index 4d0fc90896..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/model/FullUpdatableDocumentWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.immutable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentWithMapsView extends UpdatableDocumentWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/model/LazyUpdatableDocumentView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/model/LazyUpdatableDocumentView.java deleted file mode 100644 index 91a46f8d90..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/model/LazyUpdatableDocumentView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.immutable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentView extends UpdatableDocumentView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/model/LazyUpdatableDocumentWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/model/LazyUpdatableDocumentWithCollectionsView.java deleted file mode 100644 index 6eed458359..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/model/LazyUpdatableDocumentWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.immutable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentWithCollectionsView extends UpdatableDocumentWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/model/LazyUpdatableDocumentWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/model/LazyUpdatableDocumentWithMapsView.java deleted file mode 100644 index 715eadfb84..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/model/LazyUpdatableDocumentWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.immutable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentWithMapsView extends UpdatableDocumentWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/model/PartialUpdatableDocumentView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/model/PartialUpdatableDocumentView.java deleted file mode 100644 index 547ff087ab..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/model/PartialUpdatableDocumentView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.immutable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentView extends UpdatableDocumentView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/model/PartialUpdatableDocumentWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/model/PartialUpdatableDocumentWithCollectionsView.java deleted file mode 100644 index 6e00b0e902..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/model/PartialUpdatableDocumentWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.immutable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentWithCollectionsView extends UpdatableDocumentWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/model/PartialUpdatableDocumentWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/model/PartialUpdatableDocumentWithMapsView.java deleted file mode 100644 index 80798a6d1d..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/model/PartialUpdatableDocumentWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.immutable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentWithMapsView extends UpdatableDocumentWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/model/UpdatableDocumentView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/model/UpdatableDocumentView.java index e5d43d0f1f..8055019cc0 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/model/UpdatableDocumentView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/model/UpdatableDocumentView.java @@ -16,7 +16,10 @@ package com.blazebit.persistence.view.testsuite.update.subview.simple.immutable.model; +import com.blazebit.persistence.testsuite.entity.Document; +import com.blazebit.persistence.view.EntityView; import com.blazebit.persistence.view.IdMapping; +import com.blazebit.persistence.view.UpdatableEntityView; import java.util.Date; @@ -25,6 +28,8 @@ * @author Christian Beikov * @since 1.2.0 */ +@UpdatableEntityView +@EntityView(Document.class) public interface UpdatableDocumentView { @IdMapping("id") diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/model/UpdatableDocumentWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/model/UpdatableDocumentWithCollectionsView.java index 652bb0de01..2c8a74e73a 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/model/UpdatableDocumentWithCollectionsView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/model/UpdatableDocumentWithCollectionsView.java @@ -16,7 +16,10 @@ package com.blazebit.persistence.view.testsuite.update.subview.simple.immutable.model; +import com.blazebit.persistence.testsuite.entity.Document; +import com.blazebit.persistence.view.EntityView; import com.blazebit.persistence.view.IdMapping; +import com.blazebit.persistence.view.UpdatableEntityView; import java.util.List; @@ -25,6 +28,8 @@ * @author Christian Beikov * @since 1.2.0 */ +@UpdatableEntityView +@EntityView(Document.class) public interface UpdatableDocumentWithCollectionsView { @IdMapping("id") diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/model/UpdatableDocumentWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/model/UpdatableDocumentWithMapsView.java index 4fcb8aaac1..b6258b8b37 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/model/UpdatableDocumentWithMapsView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/immutable/model/UpdatableDocumentWithMapsView.java @@ -16,7 +16,10 @@ package com.blazebit.persistence.view.testsuite.update.subview.simple.immutable.model; +import com.blazebit.persistence.testsuite.entity.Document; +import com.blazebit.persistence.view.EntityView; import com.blazebit.persistence.view.IdMapping; +import com.blazebit.persistence.view.UpdatableEntityView; import java.util.List; import java.util.Map; @@ -26,6 +29,8 @@ * @author Christian Beikov * @since 1.2.0 */ +@UpdatableEntityView +@EntityView(Document.class) public interface UpdatableDocumentWithMapsView { @IdMapping("id") diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/EntityViewUpdateSimpleMutableSubviewCollectionsTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/EntityViewUpdateSimpleMutableSubviewCollectionsTest.java index fce8ca9ef3..2cd7de1b24 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/EntityViewUpdateSimpleMutableSubviewCollectionsTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/EntityViewUpdateSimpleMutableSubviewCollectionsTest.java @@ -21,14 +21,10 @@ import com.blazebit.persistence.testsuite.base.category.NoEclipselink; import com.blazebit.persistence.testsuite.entity.Document; import com.blazebit.persistence.testsuite.entity.Person; +import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.spi.EntityViewConfiguration; import com.blazebit.persistence.view.testsuite.update.AbstractEntityViewUpdateTest; -import com.blazebit.persistence.view.testsuite.update.subview.simple.mutable.model.FullUpdatableDocumentWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.subview.simple.mutable.model.FullUpdatablePersonView; -import com.blazebit.persistence.view.testsuite.update.subview.simple.mutable.model.LazyUpdatableDocumentWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.subview.simple.mutable.model.LazyUpdatablePersonView; -import com.blazebit.persistence.view.testsuite.update.subview.simple.mutable.model.PartialUpdatableDocumentWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.subview.simple.mutable.model.PartialUpdatablePersonView; import com.blazebit.persistence.view.testsuite.update.subview.simple.mutable.model.UpdatableDocumentWithCollectionsView; import com.blazebit.persistence.view.testsuite.update.subview.simple.mutable.model.UpdatablePersonView; import org.junit.Assert; @@ -38,7 +34,6 @@ import org.junit.runners.Parameterized; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collection; import static org.junit.Assert.*; @@ -51,34 +46,26 @@ @RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) -public class EntityViewUpdateSimpleMutableSubviewCollectionsTest

> extends AbstractEntityViewUpdateTest { +public class EntityViewUpdateSimpleMutableSubviewCollectionsTest extends AbstractEntityViewUpdateTest { - private Class

personViewType; - - public EntityViewUpdateSimpleMutableSubviewCollectionsTest(Class viewType, Class

personViewType) { - super(viewType); - this.personViewType = personViewType; + public EntityViewUpdateSimpleMutableSubviewCollectionsTest(FlushMode mode, FlushStrategy strategy) { + super(mode, strategy, UpdatableDocumentWithCollectionsView.class); } - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { PartialUpdatableDocumentWithCollectionsView.class, PartialUpdatablePersonView.class }, - { LazyUpdatableDocumentWithCollectionsView.class, LazyUpdatablePersonView.class }, - { FullUpdatableDocumentWithCollectionsView.class, FullUpdatablePersonView.class } - }); + @Parameterized.Parameters(name = "{0} - {1}") + public static Object[][] combinations() { + return MODE_STRATEGY_COMBINATIONS; } @Override protected void registerViewTypes(EntityViewConfiguration cfg) { cfg.addEntityView(UpdatablePersonView.class); - cfg.addEntityView(personViewType); } @Test public void testUpdateReplaceCollection() { // Given - final T docView = getDoc1View(); + final UpdatableDocumentWithCollectionsView docView = getDoc1View(); clearQueries(); // When @@ -93,19 +80,33 @@ public void testUpdateReplaceCollection() { if (isFullMode()) { fullFetch(builder); + if (isQueryStrategy()) { + builder.update(Person.class); + } } builder.validate(); - assertNoUpdateAndReload(docView); + AssertStatementBuilder afterBuilder = assertQueriesAfterUpdate(docView); + if (isQueryStrategy()) { + if (isFullMode()) { + fullFetch(afterBuilder) + .update(Person.class); + } + } else { + if (isFullMode()) { + fullFetch(afterBuilder); + } + } + afterBuilder.validate(); assertSubviewEquals(doc1.getPeople(), docView.getPeople()); } @Test public void testUpdateAddToCollection() { // Given - final T docView = getDoc1View(); - P newPerson = getP2View(personViewType); + final UpdatableDocumentWithCollectionsView docView = getDoc1View(); + UpdatablePersonView newPerson = getP2View(UpdatablePersonView.class); clearQueries(); // When @@ -121,7 +122,13 @@ public void testUpdateAddToCollection() { fullFetch(builder); if (isFullMode()) { - builder.select(Person.class); + if (isQueryStrategy()) { + builder.update(Person.class) + .update(Person.class) + .update(Person.class); + } else { + builder.select(Person.class); + } } builder.assertInsert() @@ -135,8 +142,8 @@ public void testUpdateAddToCollection() { @Test public void testUpdateAddToNewCollection() { // Given - final T docView = getDoc1View(); - P newPerson = getP2View(personViewType); + final UpdatableDocumentWithCollectionsView docView = getDoc1View(); + UpdatablePersonView newPerson = getP2View(UpdatablePersonView.class); clearQueries(); // When @@ -153,7 +160,13 @@ public void testUpdateAddToNewCollection() { fullFetch(builder); if (isFullMode()) { - builder.select(Person.class); + if (isQueryStrategy()) { + builder.update(Person.class) + .update(Person.class) + .update(Person.class); + } else { + builder.select(Person.class); + } } builder.assertInsert() @@ -167,8 +180,8 @@ public void testUpdateAddToNewCollection() { @Test public void testUpdateAddToCollectionAndModify() { // Given - final T docView = getDoc1View(); - P newPerson = getP2View(personViewType); + final UpdatableDocumentWithCollectionsView docView = getDoc1View(); + UpdatablePersonView newPerson = getP2View(UpdatablePersonView.class); clearQueries(); // When @@ -182,10 +195,18 @@ public void testUpdateAddToCollectionAndModify() { // Finally a single relation insert is done and an update to the person is done AssertStatementBuilder builder = assertQuerySequence(); - fullFetch(builder) - .select(Person.class) - .update(Person.class) - .assertInsert() + fullFetch(builder); + + if (isQueryStrategy() && isFullMode()) { + builder.update(Person.class) + .update(Person.class) + .update(Person.class); + } else { + builder.select(Person.class) + .update(Person.class); + } + + builder.assertInsert() .forRelation(Document.class, "people") .validate(); @@ -197,8 +218,8 @@ public void testUpdateAddToCollectionAndModify() { @Test public void testUpdateAddToNewCollectionAndModify() { // Given - final T docView = getDoc1View(); - P newPerson = getP2View(personViewType); + final UpdatableDocumentWithCollectionsView docView = getDoc1View(); + UpdatablePersonView newPerson = getP2View(UpdatablePersonView.class); clearQueries(); // When @@ -213,10 +234,18 @@ public void testUpdateAddToNewCollectionAndModify() { // Finally a single relation insert is done and an update to the person is done AssertStatementBuilder builder = assertQuerySequence(); - fullFetch(builder) - .select(Person.class) - .update(Person.class) - .assertInsert() + fullFetch(builder); + + if (isQueryStrategy() && isFullMode()) { + builder.update(Person.class) + .update(Person.class) + .update(Person.class); + } else { + builder.select(Person.class) + .update(Person.class); + } + + builder.assertInsert() .forRelation(Document.class, "people") .validate(); @@ -225,7 +254,7 @@ public void testUpdateAddToNewCollectionAndModify() { assertEquals("newPerson", p2.getName()); } - public void assertSubviewEquals(Collection persons, Collection

personSubviews) { + public void assertSubviewEquals(Collection persons, Collection personSubviews) { if (persons == null) { assertNull(personSubviews); return; @@ -256,4 +285,11 @@ protected AssertStatementBuilder fullFetch(AssertStatementBuilder builder) { .fetching(Person.class) .and(); } + + @Override + protected AssertStatementBuilder fullUpdate(AssertStatementBuilder builder) { + return fullFetch(builder) + .update(Person.class) + .update(Person.class); + } } diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/EntityViewUpdateSimpleMutableSubviewMapsTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/EntityViewUpdateSimpleMutableSubviewMapsTest.java index 0b13049dbd..ddfd801399 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/EntityViewUpdateSimpleMutableSubviewMapsTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/EntityViewUpdateSimpleMutableSubviewMapsTest.java @@ -21,14 +21,10 @@ import com.blazebit.persistence.testsuite.base.category.NoEclipselink; import com.blazebit.persistence.testsuite.entity.Document; import com.blazebit.persistence.testsuite.entity.Person; +import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.spi.EntityViewConfiguration; import com.blazebit.persistence.view.testsuite.update.AbstractEntityViewUpdateTest; -import com.blazebit.persistence.view.testsuite.update.subview.simple.mutable.model.FullUpdatableDocumentWithMapsView; -import com.blazebit.persistence.view.testsuite.update.subview.simple.mutable.model.FullUpdatablePersonView; -import com.blazebit.persistence.view.testsuite.update.subview.simple.mutable.model.LazyUpdatableDocumentWithMapsView; -import com.blazebit.persistence.view.testsuite.update.subview.simple.mutable.model.LazyUpdatablePersonView; -import com.blazebit.persistence.view.testsuite.update.subview.simple.mutable.model.PartialUpdatableDocumentWithMapsView; -import com.blazebit.persistence.view.testsuite.update.subview.simple.mutable.model.PartialUpdatablePersonView; import com.blazebit.persistence.view.testsuite.update.subview.simple.mutable.model.UpdatableDocumentWithMapsView; import com.blazebit.persistence.view.testsuite.update.subview.simple.mutable.model.UpdatablePersonView; import org.junit.Assert; @@ -37,9 +33,6 @@ import org.junit.runner.RunWith; import org.junit.runners.Parameterized; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; import java.util.HashMap; import java.util.Map; @@ -53,33 +46,26 @@ @RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) -public class EntityViewUpdateSimpleMutableSubviewMapsTest

> extends AbstractEntityViewUpdateTest { +public class EntityViewUpdateSimpleMutableSubviewMapsTest extends AbstractEntityViewUpdateTest { - private Class

personViewType; - - public EntityViewUpdateSimpleMutableSubviewMapsTest(Class viewType, Class

personViewType) { - super(viewType); - this.personViewType = personViewType; + public EntityViewUpdateSimpleMutableSubviewMapsTest(FlushMode mode, FlushStrategy strategy) { + super(mode, strategy, UpdatableDocumentWithMapsView.class); } - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { PartialUpdatableDocumentWithMapsView.class, PartialUpdatablePersonView.class }, - { LazyUpdatableDocumentWithMapsView.class, LazyUpdatablePersonView.class }, - { FullUpdatableDocumentWithMapsView.class, FullUpdatablePersonView.class } - }); + @Parameterized.Parameters(name = "{0} - {1}") + public static Object[][] combinations() { + return MODE_STRATEGY_COMBINATIONS; } @Override protected void registerViewTypes(EntityViewConfiguration cfg) { - cfg.addEntityView(personViewType); + cfg.addEntityView(UpdatablePersonView.class); } @Test public void testUpdateReplaceCollection() { // Given - final T docView = getDoc1View(); + final UpdatableDocumentWithMapsView docView = getDoc1View(); clearQueries(); // When @@ -90,23 +76,15 @@ public void testUpdateReplaceCollection() { // Assert that the document and the people are loaded in full mode. // During dirty detection we should be able to figure out that nothing changed // So partial modes wouldn't load anything and both won't cause any updates - AssertStatementBuilder builder = assertQuerySequence(); - - if (isFullMode()) { - fullFetch(builder); - } - - builder.validate(); - - assertNoUpdateAndReload(docView); + validateNoChange(docView); assertSubviewEquals(doc1.getContacts(), docView.getContacts()); } @Test public void testUpdateAddToCollection() { // Given - final T docView = getDoc1View(); - P newPerson = getP2View(personViewType); + final UpdatableDocumentWithMapsView docView = getDoc1View(); + UpdatablePersonView newPerson = getP2View(UpdatablePersonView.class); clearQueries(); // When @@ -121,8 +99,15 @@ public void testUpdateAddToCollection() { AssertStatementBuilder builder = assertQuerySequence(); fullFetch(builder); - if (isFullMode()) { - builder.select(Person.class); + if (isQueryStrategy()) { + if (isFullMode()) { + builder.update(Person.class) + .update(Person.class); + } + } else { + if (isFullMode()) { + builder.select(Person.class); + } } builder.assertInsert() @@ -136,8 +121,8 @@ public void testUpdateAddToCollection() { @Test public void testUpdateAddToNewCollection() { // Given - final T docView = getDoc1View(); - P newPerson = getP2View(personViewType); + final UpdatableDocumentWithMapsView docView = getDoc1View(); + UpdatablePersonView newPerson = getP2View(UpdatablePersonView.class); clearQueries(); // When @@ -153,8 +138,15 @@ public void testUpdateAddToNewCollection() { AssertStatementBuilder builder = assertQuerySequence(); fullFetch(builder); - if (isFullMode()) { - builder.select(Person.class); + if (isQueryStrategy()) { + if (isFullMode()) { + builder.update(Person.class) + .update(Person.class); + } + } else { + if (isFullMode()) { + builder.select(Person.class); + } } builder.assertInsert() @@ -168,8 +160,8 @@ public void testUpdateAddToNewCollection() { @Test public void testUpdateAddToCollectionAndModify() { // Given - final T docView = getDoc1View(); - P newPerson = getP2View(personViewType); + final UpdatableDocumentWithMapsView docView = getDoc1View(); + UpdatablePersonView newPerson = getP2View(UpdatablePersonView.class); clearQueries(); // When @@ -183,9 +175,16 @@ public void testUpdateAddToCollectionAndModify() { // Finally a single relation insert is done and an update to the person is done AssertStatementBuilder builder = assertQuerySequence(); - fullFetch(builder) - .select(Person.class) - .update(Person.class) + fullFetch(builder); + if (isQueryStrategy()) { + if (isFullMode()) { + builder.update(Person.class) + .update(Person.class); + } + } else { + builder.select(Person.class); + } + builder.update(Person.class) .assertInsert() .forRelation(Document.class, "contacts") .validate(); @@ -198,8 +197,8 @@ public void testUpdateAddToCollectionAndModify() { @Test public void testUpdateAddToNewCollectionAndModify() { // Given - final T docView = getDoc1View(); - P newPerson = getP2View(personViewType); + final UpdatableDocumentWithMapsView docView = getDoc1View(); + UpdatablePersonView newPerson = getP2View(UpdatablePersonView.class); clearQueries(); // When @@ -214,9 +213,17 @@ public void testUpdateAddToNewCollectionAndModify() { // Finally a single relation insert is done and an update to the person is done AssertStatementBuilder builder = assertQuerySequence(); - fullFetch(builder) - .select(Person.class) - .update(Person.class) + fullFetch(builder); + if (isQueryStrategy()) { + if (isFullMode()) { + builder.update(Person.class) + .update(Person.class); + } + } else { + builder.select(Person.class); + } + + builder.update(Person.class) .assertInsert() .forRelation(Document.class, "contacts") .validate(); diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/EntityViewUpdateSimpleMutableSubviewTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/EntityViewUpdateSimpleMutableSubviewTest.java index e8c2ba2d41..7b43dbeee6 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/EntityViewUpdateSimpleMutableSubviewTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/EntityViewUpdateSimpleMutableSubviewTest.java @@ -21,14 +21,10 @@ import com.blazebit.persistence.testsuite.base.category.NoEclipselink; import com.blazebit.persistence.testsuite.entity.Document; import com.blazebit.persistence.testsuite.entity.Person; +import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.spi.EntityViewConfiguration; import com.blazebit.persistence.view.testsuite.update.AbstractEntityViewUpdateTest; -import com.blazebit.persistence.view.testsuite.update.subview.simple.mutable.model.FullUpdatableDocumentView; -import com.blazebit.persistence.view.testsuite.update.subview.simple.mutable.model.FullUpdatablePersonView; -import com.blazebit.persistence.view.testsuite.update.subview.simple.mutable.model.LazyUpdatableDocumentView; -import com.blazebit.persistence.view.testsuite.update.subview.simple.mutable.model.LazyUpdatablePersonView; -import com.blazebit.persistence.view.testsuite.update.subview.simple.mutable.model.PartialUpdatableDocumentView; -import com.blazebit.persistence.view.testsuite.update.subview.simple.mutable.model.PartialUpdatablePersonView; import com.blazebit.persistence.view.testsuite.update.subview.simple.mutable.model.UpdatableDocumentView; import com.blazebit.persistence.view.testsuite.update.subview.simple.mutable.model.UpdatablePersonView; import org.junit.Assert; @@ -37,9 +33,6 @@ import org.junit.runner.RunWith; import org.junit.runners.Parameterized; -import java.util.Arrays; -import java.util.Collection; - import static org.junit.Assert.assertEquals; /** @@ -50,34 +43,26 @@ @RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) -public class EntityViewUpdateSimpleMutableSubviewTest

> extends AbstractEntityViewUpdateTest { - - private Class

personViewType; +public class EntityViewUpdateSimpleMutableSubviewTest extends AbstractEntityViewUpdateTest { - public EntityViewUpdateSimpleMutableSubviewTest(Class viewType, Class

personViewType) { - super(viewType); - this.personViewType = personViewType; + public EntityViewUpdateSimpleMutableSubviewTest(FlushMode mode, FlushStrategy strategy) { + super(mode, strategy, UpdatableDocumentView.class); } - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { PartialUpdatableDocumentView.class, PartialUpdatablePersonView.class }, - { LazyUpdatableDocumentView.class, LazyUpdatablePersonView.class }, - { FullUpdatableDocumentView.class, FullUpdatablePersonView.class } - }); + @Parameterized.Parameters(name = "{0} - {1}") + public static Object[][] combinations() { + return MODE_STRATEGY_COMBINATIONS; } @Override protected void registerViewTypes(EntityViewConfiguration cfg) { cfg.addEntityView(UpdatablePersonView.class); - cfg.addEntityView(personViewType); } @Test public void testSimpleUpdate() { // Given - final T docView = getDoc1View(); + final UpdatableDocumentView docView = getDoc1View(); clearQueries(); // When @@ -89,10 +74,16 @@ public void testSimpleUpdate() { // Just assert the update is properly done AssertStatementBuilder builder = assertQuerySequence(); - if (isFullMode()) { - fullFetch(builder); + if (isQueryStrategy()) { + if (isFullMode()) { + builder.update(Person.class); + } } else { - builder.select(Document.class); + if (isFullMode()) { + fullFetch(builder); + } else { + builder.select(Document.class); + } } builder.update(Document.class) @@ -106,8 +97,8 @@ public void testSimpleUpdate() { @Test public void testUpdateWithSubview() { // Given - final T docView = getDoc1View(); - P newOwner = getP2View(personViewType); + final UpdatableDocumentView docView = getDoc1View(); + UpdatablePersonView newOwner = getP2View(UpdatablePersonView.class); clearQueries(); // When @@ -119,11 +110,17 @@ public void testUpdateWithSubview() { // The new owner also doesn't have to be loaded, except in full mode AssertStatementBuilder builder = assertQuerySequence();; - if (isFullMode()) { - fullFetch(builder) - .select(Person.class); + if (isQueryStrategy()) { + if (isFullMode()) { + builder.update(Person.class); + } } else { - builder.select(Document.class); + if (isFullMode()) { + fullFetch(builder) + .select(Person.class); + } else { + builder.select(Document.class); + } } builder.update(Document.class) @@ -136,8 +133,8 @@ public void testUpdateWithSubview() { @Test public void testUpdateWithModifySubview() { // Given - final T docView = getDoc1View(); - P newOwner = getP2View(personViewType); + final UpdatableDocumentView docView = getDoc1View(); + UpdatablePersonView newOwner = getP2View(UpdatablePersonView.class); clearQueries(); // When @@ -150,16 +147,21 @@ public void testUpdateWithModifySubview() { // Now the new owner has to be loaded as it is updated as well AssertStatementBuilder builder = assertQuerySequence(); - if (isFullMode()) { - fullFetch(builder); + if (isQueryStrategy()) { + builder.update(Person.class) + .update(Document.class); } else { - builder.select(Document.class); + if (isFullMode()) { + fullFetch(builder); + } else { + builder.select(Document.class); + } + builder.select(Person.class) + .update(Document.class) + .update(Person.class); } - builder.select(Person.class) - .update(Document.class) - .update(Person.class) - .validate(); + builder.validate(); assertNoUpdateAndReload(docView); assertEquals(p2.getId(), doc1.getResponsiblePerson().getId()); @@ -169,7 +171,7 @@ public void testUpdateWithModifySubview() { @Test public void testUpdateWithModifyExisting() { // Given - final T docView = getDoc1View(); + final UpdatableDocumentView docView = getDoc1View(); clearQueries(); // When @@ -180,10 +182,16 @@ public void testUpdateWithModifyExisting() { // Since we update the old responsiblePerson, load it along with the document for updating it later AssertStatementBuilder builder = assertQuerySequence(); - fullFetch(builder); + if (isQueryStrategy()) { + builder.update(Person.class); + if (isFullMode()) { + builder.update(Document.class); + } + } else { + fullFetch(builder).update(Person.class); + } - builder.update(Person.class) - .validate(); + builder.validate(); assertNoUpdateAndReload(docView); assertEquals("newPerson", doc1.getResponsiblePerson().getName()); @@ -192,7 +200,7 @@ public void testUpdateWithModifyExisting() { @Test public void testUpdateToNull() { // Given - final T docView = getDoc1View(); + final UpdatableDocumentView docView = getDoc1View(); clearQueries(); // When @@ -203,15 +211,26 @@ public void testUpdateToNull() { // Assert that only the document is loaded and finally also updated AssertStatementBuilder builder = assertQuerySequence(); - if (isFullMode()) { - fullFetch(builder); - } else { - builder.select(Document.class); + if (!isQueryStrategy()) { + if (isFullMode()) { + fullFetch(builder); + } else { + builder.select(Document.class); + } } builder.update(Document.class) .validate(); - assertNoUpdateAndReload(docView); + AssertStatementBuilder afterBuilder = assertQueriesAfterUpdate(docView); + + if (isFullMode()) { + if (isQueryStrategy()) { + afterBuilder.update(Document.class); + } else { + fullFetch(afterBuilder); + } + } + afterBuilder.validate(); Assert.assertNull(doc1.getResponsiblePerson()); } @@ -222,4 +241,10 @@ protected AssertStatementBuilder fullFetch(AssertStatementBuilder builder) { .fetching(Person.class) .and(); } + + @Override + protected AssertStatementBuilder fullUpdate(AssertStatementBuilder builder) { + return builder.update(Person.class) + .update(Document.class); + } } diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/FullUpdatableDocumentView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/FullUpdatableDocumentView.java deleted file mode 100644 index 3fe0a11fc0..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/FullUpdatableDocumentView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.mutable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentView extends UpdatableDocumentView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/FullUpdatableDocumentWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/FullUpdatableDocumentWithCollectionsView.java deleted file mode 100644 index 30fc0d5552..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/FullUpdatableDocumentWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.mutable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentWithCollectionsView extends UpdatableDocumentWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/FullUpdatableDocumentWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/FullUpdatableDocumentWithMapsView.java deleted file mode 100644 index 312881da1a..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/FullUpdatableDocumentWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.mutable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentWithMapsView extends UpdatableDocumentWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/FullUpdatablePersonView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/FullUpdatablePersonView.java deleted file mode 100644 index 784f0f2137..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/FullUpdatablePersonView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.mutable.model; - -import com.blazebit.persistence.testsuite.entity.Person; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Person.class) -public interface FullUpdatablePersonView extends UpdatablePersonView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/LazyUpdatableDocumentView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/LazyUpdatableDocumentView.java deleted file mode 100644 index 7265ab38ac..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/LazyUpdatableDocumentView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.mutable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentView extends UpdatableDocumentView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/LazyUpdatableDocumentWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/LazyUpdatableDocumentWithCollectionsView.java deleted file mode 100644 index 03beca0165..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/LazyUpdatableDocumentWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.mutable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentWithCollectionsView extends UpdatableDocumentWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/LazyUpdatableDocumentWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/LazyUpdatableDocumentWithMapsView.java deleted file mode 100644 index f5971a9a11..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/LazyUpdatableDocumentWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.mutable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentWithMapsView extends UpdatableDocumentWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/LazyUpdatablePersonView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/LazyUpdatablePersonView.java deleted file mode 100644 index 4e4fa6083d..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/LazyUpdatablePersonView.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.mutable.model; - -import com.blazebit.persistence.testsuite.entity.Person; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Person.class) -public interface LazyUpdatablePersonView extends UpdatablePersonView { -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/PartialUpdatableDocumentView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/PartialUpdatableDocumentView.java deleted file mode 100644 index 32eb40dad0..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/PartialUpdatableDocumentView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.mutable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentView extends UpdatableDocumentView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/PartialUpdatableDocumentWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/PartialUpdatableDocumentWithCollectionsView.java deleted file mode 100644 index 6825b0d51a..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/PartialUpdatableDocumentWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.mutable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentWithCollectionsView extends UpdatableDocumentWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/PartialUpdatableDocumentWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/PartialUpdatableDocumentWithMapsView.java deleted file mode 100644 index 014db3445f..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/PartialUpdatableDocumentWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.mutable.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentWithMapsView extends UpdatableDocumentWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/PartialUpdatablePersonView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/PartialUpdatablePersonView.java deleted file mode 100644 index 5b1536fa09..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/PartialUpdatablePersonView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.mutable.model; - -import com.blazebit.persistence.testsuite.entity.Person; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Person.class) -public interface PartialUpdatablePersonView extends UpdatablePersonView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/UpdatableDocumentView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/UpdatableDocumentView.java index dc783f7352..27b093a723 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/UpdatableDocumentView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/UpdatableDocumentView.java @@ -16,7 +16,10 @@ package com.blazebit.persistence.view.testsuite.update.subview.simple.mutable.model; +import com.blazebit.persistence.testsuite.entity.Document; +import com.blazebit.persistence.view.EntityView; import com.blazebit.persistence.view.IdMapping; +import com.blazebit.persistence.view.UpdatableEntityView; import java.util.Date; @@ -25,7 +28,9 @@ * @author Christian Beikov * @since 1.2.0 */ -public interface UpdatableDocumentView { +@UpdatableEntityView +@EntityView(Document.class) +public interface UpdatableDocumentView { @IdMapping("id") public Long getId(); @@ -38,8 +43,8 @@ public interface UpdatableDocumentView { public void setLastModified(Date date); - public T getResponsiblePerson(); + public UpdatablePersonView getResponsiblePerson(); - public void setResponsiblePerson(T responsiblePerson); + public void setResponsiblePerson(UpdatablePersonView responsiblePerson); } diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/UpdatableDocumentWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/UpdatableDocumentWithCollectionsView.java index 1de47aa5c6..833ef24508 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/UpdatableDocumentWithCollectionsView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/UpdatableDocumentWithCollectionsView.java @@ -16,7 +16,10 @@ package com.blazebit.persistence.view.testsuite.update.subview.simple.mutable.model; +import com.blazebit.persistence.testsuite.entity.Document; +import com.blazebit.persistence.view.EntityView; import com.blazebit.persistence.view.IdMapping; +import com.blazebit.persistence.view.UpdatableEntityView; import java.util.List; @@ -25,7 +28,9 @@ * @author Christian Beikov * @since 1.2.0 */ -public interface UpdatableDocumentWithCollectionsView { +@UpdatableEntityView +@EntityView(Document.class) +public interface UpdatableDocumentWithCollectionsView { @IdMapping("id") public Long getId(); @@ -34,8 +39,8 @@ public interface UpdatableDocumentWithCollectionsView getPeople(); + public List getPeople(); - public void setPeople(List people); + public void setPeople(List people); } diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/UpdatableDocumentWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/UpdatableDocumentWithMapsView.java index de71ec7e8a..94d2b4c296 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/UpdatableDocumentWithMapsView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/UpdatableDocumentWithMapsView.java @@ -16,7 +16,10 @@ package com.blazebit.persistence.view.testsuite.update.subview.simple.mutable.model; +import com.blazebit.persistence.testsuite.entity.Document; +import com.blazebit.persistence.view.EntityView; import com.blazebit.persistence.view.IdMapping; +import com.blazebit.persistence.view.UpdatableEntityView; import java.util.List; import java.util.Map; @@ -26,7 +29,9 @@ * @author Christian Beikov * @since 1.2.0 */ -public interface UpdatableDocumentWithMapsView { +@UpdatableEntityView +@EntityView(Document.class) +public interface UpdatableDocumentWithMapsView { @IdMapping("id") public Long getId(); @@ -35,8 +40,8 @@ public interface UpdatableDocumentWithMapsView { public void setName(String name); - public Map getContacts(); + public Map getContacts(); - public void setContacts(Map people); + public void setContacts(Map people); } diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/UpdatablePersonView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/UpdatablePersonView.java index c1b2f39b04..e02f8d6182 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/UpdatablePersonView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutable/model/UpdatablePersonView.java @@ -18,6 +18,7 @@ import com.blazebit.persistence.testsuite.entity.Person; import com.blazebit.persistence.view.EntityView; +import com.blazebit.persistence.view.UpdatableEntityView; import com.blazebit.persistence.view.testsuite.basic.model.IdHolderView; /** @@ -25,6 +26,7 @@ * @author Christian Beikov * @since 1.2.0 */ +@UpdatableEntityView @EntityView(Person.class) public interface UpdatablePersonView extends IdHolderView { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/EntityViewUpdateSimpleMutableOnlySubviewCollectionsTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/EntityViewUpdateSimpleMutableOnlySubviewCollectionsTest.java index 3d4694bf83..e0a2fe146a 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/EntityViewUpdateSimpleMutableOnlySubviewCollectionsTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/EntityViewUpdateSimpleMutableOnlySubviewCollectionsTest.java @@ -21,14 +21,10 @@ import com.blazebit.persistence.testsuite.base.category.NoEclipselink; import com.blazebit.persistence.testsuite.entity.Document; import com.blazebit.persistence.testsuite.entity.Person; +import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.spi.EntityViewConfiguration; import com.blazebit.persistence.view.testsuite.update.AbstractEntityViewUpdateTest; -import com.blazebit.persistence.view.testsuite.update.subview.simple.mutableonly.model.FullUpdatableDocumentWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.subview.simple.mutableonly.model.FullUpdatablePersonView; -import com.blazebit.persistence.view.testsuite.update.subview.simple.mutableonly.model.LazyUpdatableDocumentWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.subview.simple.mutableonly.model.LazyUpdatablePersonView; -import com.blazebit.persistence.view.testsuite.update.subview.simple.mutableonly.model.PartialUpdatableDocumentWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.subview.simple.mutableonly.model.PartialUpdatablePersonView; import com.blazebit.persistence.view.testsuite.update.subview.simple.mutableonly.model.UpdatableDocumentWithCollectionsView; import com.blazebit.persistence.view.testsuite.update.subview.simple.mutableonly.model.UpdatablePersonView; import org.junit.Assert; @@ -38,7 +34,6 @@ import org.junit.runners.Parameterized; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collection; import static org.junit.Assert.*; @@ -51,34 +46,26 @@ @RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) -public class EntityViewUpdateSimpleMutableOnlySubviewCollectionsTest

> extends AbstractEntityViewUpdateTest { +public class EntityViewUpdateSimpleMutableOnlySubviewCollectionsTest extends AbstractEntityViewUpdateTest { - private Class

personViewType; - - public EntityViewUpdateSimpleMutableOnlySubviewCollectionsTest(Class viewType, Class

personViewType) { - super(viewType); - this.personViewType = personViewType; + public EntityViewUpdateSimpleMutableOnlySubviewCollectionsTest(FlushMode mode, FlushStrategy strategy) { + super(mode, strategy, UpdatableDocumentWithCollectionsView.class); } - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { PartialUpdatableDocumentWithCollectionsView.class, PartialUpdatablePersonView.class }, - { LazyUpdatableDocumentWithCollectionsView.class, LazyUpdatablePersonView.class }, - { FullUpdatableDocumentWithCollectionsView.class, FullUpdatablePersonView.class } - }); + @Parameterized.Parameters(name = "{0} - {1}") + public static Object[][] combinations() { + return MODE_STRATEGY_COMBINATIONS; } @Override protected void registerViewTypes(EntityViewConfiguration cfg) { cfg.addEntityView(UpdatablePersonView.class); - cfg.addEntityView(personViewType); } @Test public void testUpdateReplaceCollection() { // Given - final T docView = getDoc1View(); + final UpdatableDocumentWithCollectionsView docView = getDoc1View(); clearQueries(); // When @@ -86,47 +73,67 @@ public void testUpdateReplaceCollection() { update(docView); // Then - // Assert that the document and the people are loaded in full mode. - // During dirty detection we should be able to figure out that nothing changed - // So partial modes wouldn't load anything and both won't cause any updates - AssertStatementBuilder builder = assertQuerySequence(); + // Since the collection changed yet this relation is not updatable, only the full mode will load + validateMutableOnlyNoChange(docView); + assertSubviewEquals(doc1.getPeople(), docView.getPeople()); + } + private void validateMutableOnlyNoChange(UpdatableDocumentWithCollectionsView docView) { + AssertStatementBuilder builder = assertQuerySequence(); if (isFullMode()) { fullFetch(builder); } builder.validate(); - assertNoUpdateAndReload(docView); - assertSubviewEquals(doc1.getPeople(), docView.getPeople()); + AssertStatementBuilder afterBuilder = assertQueriesAfterUpdate(docView); + if (isFullMode()) { + fullFetch(afterBuilder); + } + afterBuilder.validate(); } @Test public void testUpdateAddToCollection() { // Given - final T docView = getDoc1View(); - P newPerson = getP2View(personViewType); + final UpdatableDocumentWithCollectionsView docView = getDoc1View(); + UpdatablePersonView newPerson = getP2View(UpdatablePersonView.class); clearQueries(); // When - docView.getPeople().add(newPerson); update(docView); // Then AssertStatementBuilder builder = assertQuerySequence(); - if (isFullMode()) { - fullFetch(builder) - .select(Person.class); + if (isQueryStrategy()) { + if (isFullMode()) { + fullFetch(builder); + builder.update(Person.class) + .update(Person.class); + } + } else { + if (isFullMode()) { + fullFetch(builder) + .select(Person.class); + } } builder.validate(); AssertStatementBuilder afterBuilder = assertQueriesAfterUpdate(docView); - if (isFullMode()) { - fullFetch(afterBuilder) - .select(Person.class); + if (isQueryStrategy()) { + if (isFullMode()) { + fullFetch(afterBuilder) + .update(Person.class) + .update(Person.class); + } + } else { + if (isFullMode()) { + fullFetch(afterBuilder) + .select(Person.class); + } } afterBuilder.validate(); assertEquals(doc1.getPeople().size() + 1, docView.getPeople().size()); @@ -135,8 +142,8 @@ public void testUpdateAddToCollection() { @Test public void testUpdateAddToNewCollection() { // Given - final T docView = getDoc1View(); - P newPerson = getP2View(personViewType); + final UpdatableDocumentWithCollectionsView docView = getDoc1View(); + UpdatablePersonView newPerson = getP2View(UpdatablePersonView.class); clearQueries(); // When @@ -145,23 +152,16 @@ public void testUpdateAddToNewCollection() { update(docView); // Then - AssertStatementBuilder builder = assertQuerySequence(); - - if (isFullMode()) { - fullFetch(builder); - } - - builder.validate(); - - assertNoUpdateAndReload(docView); + // Since the collection changed yet this relation is not updatable, only the full mode will load + validateMutableOnlyNoChange(docView); assertEquals(doc1.getPeople().size() + 1, docView.getPeople().size()); } @Test public void testUpdateAddToCollectionAndModify() { // Given - final T docView = getDoc1View(); - P newPerson = getP2View(personViewType); + final UpdatableDocumentWithCollectionsView docView = getDoc1View(); + UpdatablePersonView newPerson = getP2View(UpdatablePersonView.class); clearQueries(); // When @@ -172,15 +172,30 @@ public void testUpdateAddToCollectionAndModify() { // Then AssertStatementBuilder builder = assertQuerySequence(); - fullFetch(builder) - .select(Person.class) - .update(Person.class); + fullFetch(builder); + + if (isQueryStrategy()) { + builder.update(Person.class); + if (isFullMode()) { + builder.update(Person.class); + } + } else { + builder.select(Person.class) + .update(Person.class); + } builder.validate(); AssertStatementBuilder afterBuilder = assertQueriesAfterUpdate(docView); - if (isFullMode()) { - fullFetch(afterBuilder) - .select(Person.class); + if (isQueryStrategy()) { + if (isFullMode()) { + fullUpdate(afterBuilder) + .update(Person.class); + } + } else { + if (isFullMode()) { + fullFetch(afterBuilder) + .select(Person.class); + } } afterBuilder.validate(); assertEquals(doc1.getPeople().size() + 1, docView.getPeople().size()); @@ -190,8 +205,8 @@ public void testUpdateAddToCollectionAndModify() { @Test public void testUpdateAddToNewCollectionAndModify() { // Given - final T docView = getDoc1View(); - P newPerson = getP2View(personViewType); + final UpdatableDocumentWithCollectionsView docView = getDoc1View(); + UpdatablePersonView newPerson = getP2View(UpdatablePersonView.class); clearQueries(); // When @@ -202,13 +217,13 @@ public void testUpdateAddToNewCollectionAndModify() { // Then // Since the collection changed yet this relation is not updatable, only the full mode will load - validateNoChange(docView); + validateMutableOnlyNoChange(docView); assertEquals(doc1.getPeople().size() + 1, docView.getPeople().size()); assertEquals("pers2", p2.getName()); } - public void assertSubviewEquals(Collection persons, Collection

personSubviews) { + public void assertSubviewEquals(Collection persons, Collection personSubviews) { if (persons == null) { assertNull(personSubviews); return; @@ -239,4 +254,9 @@ protected AssertStatementBuilder fullFetch(AssertStatementBuilder builder) { .fetching(Person.class) .and(); } + + @Override + protected AssertStatementBuilder fullUpdate(AssertStatementBuilder builder) { + return fullFetch(builder).update(Person.class); + } } diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/EntityViewUpdateSimpleMutableOnlySubviewMapsTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/EntityViewUpdateSimpleMutableOnlySubviewMapsTest.java index 0d74fa0676..c332917d10 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/EntityViewUpdateSimpleMutableOnlySubviewMapsTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/EntityViewUpdateSimpleMutableOnlySubviewMapsTest.java @@ -21,14 +21,10 @@ import com.blazebit.persistence.testsuite.base.category.NoEclipselink; import com.blazebit.persistence.testsuite.entity.Document; import com.blazebit.persistence.testsuite.entity.Person; +import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.spi.EntityViewConfiguration; import com.blazebit.persistence.view.testsuite.update.AbstractEntityViewUpdateTest; -import com.blazebit.persistence.view.testsuite.update.subview.simple.mutableonly.model.FullUpdatableDocumentWithMapsView; -import com.blazebit.persistence.view.testsuite.update.subview.simple.mutableonly.model.FullUpdatablePersonView; -import com.blazebit.persistence.view.testsuite.update.subview.simple.mutableonly.model.LazyUpdatableDocumentWithMapsView; -import com.blazebit.persistence.view.testsuite.update.subview.simple.mutableonly.model.LazyUpdatablePersonView; -import com.blazebit.persistence.view.testsuite.update.subview.simple.mutableonly.model.PartialUpdatableDocumentWithMapsView; -import com.blazebit.persistence.view.testsuite.update.subview.simple.mutableonly.model.PartialUpdatablePersonView; import com.blazebit.persistence.view.testsuite.update.subview.simple.mutableonly.model.UpdatableDocumentWithMapsView; import com.blazebit.persistence.view.testsuite.update.subview.simple.mutableonly.model.UpdatablePersonView; import org.junit.Assert; @@ -37,9 +33,6 @@ import org.junit.runner.RunWith; import org.junit.runners.Parameterized; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; import java.util.HashMap; import java.util.Map; @@ -53,34 +46,26 @@ @RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) -public class EntityViewUpdateSimpleMutableOnlySubviewMapsTest

> extends AbstractEntityViewUpdateTest { +public class EntityViewUpdateSimpleMutableOnlySubviewMapsTest extends AbstractEntityViewUpdateTest { - private Class

personViewType; - - public EntityViewUpdateSimpleMutableOnlySubviewMapsTest(Class viewType, Class

personViewType) { - super(viewType); - this.personViewType = personViewType; + public EntityViewUpdateSimpleMutableOnlySubviewMapsTest(FlushMode mode, FlushStrategy strategy) { + super(mode, strategy, UpdatableDocumentWithMapsView.class); } - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { PartialUpdatableDocumentWithMapsView.class, PartialUpdatablePersonView.class }, - { LazyUpdatableDocumentWithMapsView.class, LazyUpdatablePersonView.class }, - { FullUpdatableDocumentWithMapsView.class, FullUpdatablePersonView.class } - }); + @Parameterized.Parameters(name = "{0} - {1}") + public static Object[][] combinations() { + return MODE_STRATEGY_COMBINATIONS; } @Override protected void registerViewTypes(EntityViewConfiguration cfg) { cfg.addEntityView(UpdatablePersonView.class); - cfg.addEntityView(personViewType); } @Test public void testUpdateReplaceCollection() { // Given - final T docView = getDoc1View(); + final UpdatableDocumentWithMapsView docView = getDoc1View(); clearQueries(); // When @@ -88,26 +73,41 @@ public void testUpdateReplaceCollection() { update(docView); // Then - // Assert that the document and the people are loaded in full mode. - // During dirty detection we should be able to figure out that nothing changed - // So partial modes wouldn't load anything and both won't cause any updates + // Since the collection changed yet this relation is not updatable, only the full mode will load AssertStatementBuilder builder = assertQuerySequence(); - if (isFullMode()) { - fullFetch(builder); + if (isQueryStrategy()) { + if (isFullMode()) { + fullUpdate(builder); + } + } else { + if (isFullMode()) { + fullFetch(builder); + } } builder.validate(); - assertNoUpdateAndReload(docView); + AssertStatementBuilder afterBuilder = assertQueriesAfterUpdate(docView); + + if (isQueryStrategy()) { + if (isFullMode()) { + fullUpdate(afterBuilder); + } + } else { + if (isFullMode()) { + fullFetch(afterBuilder); + } + } + afterBuilder.validate(); assertSubviewEquals(doc1.getContacts(), docView.getContacts()); } @Test public void testUpdateAddToCollection() { // Given - final T docView = getDoc1View(); - P newPerson = getP2View(personViewType); + final UpdatableDocumentWithMapsView docView = getDoc1View(); + UpdatablePersonView newPerson = getP2View(UpdatablePersonView.class); clearQueries(); // When @@ -119,16 +119,28 @@ public void testUpdateAddToCollection() { AssertStatementBuilder builder = assertQuerySequence(); if (isFullMode()) { - fullFetch(builder) - .select(Person.class); + fullFetch(builder); + + if (isQueryStrategy()) { + builder.update(Person.class) + .update(Person.class); + } else { + builder.select(Person.class); + } } builder.validate(); AssertStatementBuilder afterBuilder = assertQueriesAfterUpdate(docView); if (isFullMode()) { - fullFetch(afterBuilder) - .select(Person.class); + fullFetch(afterBuilder); + + if (isQueryStrategy()) { + afterBuilder.update(Person.class) + .update(Person.class); + } else { + afterBuilder.select(Person.class); + } } afterBuilder.validate(); assertEquals(doc1.getContacts().size() + 1, docView.getContacts().size()); @@ -137,8 +149,8 @@ public void testUpdateAddToCollection() { @Test public void testUpdateAddToNewCollection() { // Given - final T docView = getDoc1View(); - P newPerson = getP2View(personViewType); + final UpdatableDocumentWithMapsView docView = getDoc1View(); + UpdatablePersonView newPerson = getP2View(UpdatablePersonView.class); clearQueries(); // When @@ -147,23 +159,41 @@ public void testUpdateAddToNewCollection() { update(docView); // Then + // Since the collection changed yet this relation is not updatable, only the full mode will load AssertStatementBuilder builder = assertQuerySequence(); - if (isFullMode()) { - fullFetch(builder); + if (isQueryStrategy()) { + if (isFullMode()) { + fullUpdate(builder); + } + } else { + if (isFullMode()) { + fullFetch(builder); + } } builder.validate(); - assertNoUpdateAndReload(docView); + AssertStatementBuilder afterBuilder = assertQueriesAfterUpdate(docView); + + if (isQueryStrategy()) { + if (isFullMode()) { + fullUpdate(afterBuilder); + } + } else { + if (isFullMode()) { + fullFetch(afterBuilder); + } + } + afterBuilder.validate(); assertEquals(doc1.getContacts().size() + 1, docView.getContacts().size()); } @Test public void testUpdateAddToCollectionAndModify() { // Given - final T docView = getDoc1View(); - P newPerson = getP2View(personViewType); + final UpdatableDocumentWithMapsView docView = getDoc1View(); + UpdatablePersonView newPerson = getP2View(UpdatablePersonView.class); clearQueries(); // When @@ -174,15 +204,34 @@ public void testUpdateAddToCollectionAndModify() { // Then AssertStatementBuilder builder = assertQuerySequence(); - fullFetch(builder) - .select(Person.class) - .update(Person.class); + if (isQueryStrategy()) { + if (isFullMode()) { + fullUpdate(builder) + .update(Person.class); + } else { + fullFetch(builder) + .select(Person.class) + .update(Person.class); + } + } else { + fullFetch(builder) + .select(Person.class) + .update(Person.class); + } + builder.validate(); AssertStatementBuilder afterBuilder = assertQueriesAfterUpdate(docView); - if (isFullMode()) { - fullFetch(afterBuilder) - .select(Person.class); + if (isQueryStrategy()) { + if (isFullMode()) { + fullUpdate(afterBuilder) + .update(Person.class); + } + } else { + if (isFullMode()) { + fullFetch(afterBuilder) + .select(Person.class); + } } afterBuilder.validate(); assertEquals(doc1.getContacts().size() + 1, docView.getContacts().size()); @@ -192,8 +241,8 @@ public void testUpdateAddToCollectionAndModify() { @Test public void testUpdateAddToNewCollectionAndModify() { // Given - final T docView = getDoc1View(); - P newPerson = getP2View(personViewType); + final UpdatableDocumentWithMapsView docView = getDoc1View(); + UpdatablePersonView newPerson = getP2View(UpdatablePersonView.class); clearQueries(); // When @@ -204,7 +253,32 @@ public void testUpdateAddToNewCollectionAndModify() { // Then // Since the collection changed yet this relation is not updatable, only the full mode will load - validateNoChange(docView); + AssertStatementBuilder builder = assertQuerySequence(); + + if (isQueryStrategy()) { + if (isFullMode()) { + fullUpdate(builder); + } + } else { + if (isFullMode()) { + fullFetch(builder); + } + } + + builder.validate(); + + AssertStatementBuilder afterBuilder = assertQueriesAfterUpdate(docView); + + if (isQueryStrategy()) { + if (isFullMode()) { + fullUpdate(afterBuilder); + } + } else { + if (isFullMode()) { + fullFetch(afterBuilder); + } + } + afterBuilder.validate(); assertEquals(doc1.getContacts().size() + 1, docView.getContacts().size()); assertEquals("pers2", p2.getName()); @@ -243,4 +317,10 @@ protected AssertStatementBuilder fullFetch(AssertStatementBuilder builder) { .fetching(Person.class) .and(); } + + @Override + protected AssertStatementBuilder fullUpdate(AssertStatementBuilder builder) { + return fullFetch(builder) + .update(Person.class); + } } diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/EntityViewUpdateSimpleMutableOnlySubviewTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/EntityViewUpdateSimpleMutableOnlySubviewTest.java index a9ef776d4a..6b8fffea9e 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/EntityViewUpdateSimpleMutableOnlySubviewTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/EntityViewUpdateSimpleMutableOnlySubviewTest.java @@ -21,27 +21,18 @@ import com.blazebit.persistence.testsuite.base.category.NoEclipselink; import com.blazebit.persistence.testsuite.entity.Document; import com.blazebit.persistence.testsuite.entity.Person; +import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.spi.EntityViewConfiguration; import com.blazebit.persistence.view.testsuite.update.AbstractEntityViewUpdateTest; -import com.blazebit.persistence.view.testsuite.update.subview.simple.mutableonly.model.FullUpdatableDocumentView; -import com.blazebit.persistence.view.testsuite.update.subview.simple.mutableonly.model.FullUpdatablePersonView; -import com.blazebit.persistence.view.testsuite.update.subview.simple.mutableonly.model.LazyUpdatableDocumentView; -import com.blazebit.persistence.view.testsuite.update.subview.simple.mutableonly.model.LazyUpdatablePersonView; -import com.blazebit.persistence.view.testsuite.update.subview.simple.mutableonly.model.PartialUpdatableDocumentView; -import com.blazebit.persistence.view.testsuite.update.subview.simple.mutableonly.model.PartialUpdatablePersonView; import com.blazebit.persistence.view.testsuite.update.subview.simple.mutableonly.model.UpdatableDocumentView; import com.blazebit.persistence.view.testsuite.update.subview.simple.mutableonly.model.UpdatablePersonView; -import org.junit.Assert; import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; -import java.util.Arrays; -import java.util.Collection; - import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; /** * @@ -51,34 +42,26 @@ @RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) -public class EntityViewUpdateSimpleMutableOnlySubviewTest

> extends AbstractEntityViewUpdateTest { - - private Class

personViewType; +public class EntityViewUpdateSimpleMutableOnlySubviewTest extends AbstractEntityViewUpdateTest { - public EntityViewUpdateSimpleMutableOnlySubviewTest(Class viewType, Class

personViewType) { - super(viewType); - this.personViewType = personViewType; + public EntityViewUpdateSimpleMutableOnlySubviewTest(FlushMode mode, FlushStrategy strategy) { + super(mode, strategy, UpdatableDocumentView.class); } - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { PartialUpdatableDocumentView.class, PartialUpdatablePersonView.class }, - { LazyUpdatableDocumentView.class, LazyUpdatablePersonView.class }, - { FullUpdatableDocumentView.class, FullUpdatablePersonView.class } - }); + @Parameterized.Parameters(name = "{0} - {1}") + public static Object[][] combinations() { + return MODE_STRATEGY_COMBINATIONS; } @Override protected void registerViewTypes(EntityViewConfiguration cfg) { cfg.addEntityView(UpdatablePersonView.class); - cfg.addEntityView(personViewType); } @Test public void testSimpleUpdate() { // Given - final T docView = getDoc1View(); + final UpdatableDocumentView docView = getDoc1View(); clearQueries(); // When @@ -90,10 +73,16 @@ public void testSimpleUpdate() { // Just assert the update is properly done AssertStatementBuilder builder = assertQuerySequence(); - if (isFullMode()) { - fullFetch(builder); + if (isQueryStrategy()) { + if (isFullMode()) { + builder.update(Person.class); + } } else { - builder.select(Document.class); + if (isFullMode()) { + fullFetch(builder); + } else { + builder.select(Document.class); + } } builder.update(Document.class) @@ -107,8 +96,8 @@ public void testSimpleUpdate() { @Test public void testUpdateWithSubview() { // Given - final T docView = getDoc1View(); - P newOwner = getP2View(personViewType); + final UpdatableDocumentView docView = getDoc1View(); + UpdatablePersonView newOwner = getP2View(UpdatablePersonView.class); clearQueries(); // When @@ -119,21 +108,27 @@ public void testUpdateWithSubview() { // Mutable only means we don't change the "owner" relation AssertStatementBuilder builder = assertQuerySequence(); - if (isFullMode()) { - fullFetch(builder); + if (isQueryStrategy()) { + if (isFullMode()) { + builder.update(Document.class); + } + } else { + if (isFullMode()) { + fullFetch(builder); + } } builder.validate(); - assertNoUpdateAndReload(docView); + assertNoUpdateForChangedRelationAndReload(docView); assertEquals(p1.getId(), doc1.getResponsiblePerson().getId()); } @Test public void testUpdateWithModifySubview() { // Given - final T docView = getDoc1View(); - P newOwner = getP2View(personViewType); + final UpdatableDocumentView docView = getDoc1View(); + UpdatablePersonView newOwner = getP2View(UpdatablePersonView.class); clearQueries(); // When @@ -145,13 +140,19 @@ public void testUpdateWithModifySubview() { // Mutable only means we don't change the "owner" relation AssertStatementBuilder builder = assertQuerySequence(); - if (isFullMode()) { - fullFetch(builder); + if (isQueryStrategy()) { + if (isFullMode()) { + builder.update(Document.class); + } + } else { + if (isFullMode()) { + fullFetch(builder); + } } builder.validate(); - assertNoUpdateAndReload(docView); + assertNoUpdateForChangedRelationAndReload(docView); assertEquals(p1.getId(), doc1.getResponsiblePerson().getId()); assertEquals("pers2", p2.getName()); } @@ -159,7 +160,7 @@ public void testUpdateWithModifySubview() { @Test public void testUpdateWithModifyExisting() { // Given - final T docView = getDoc1View(); + final UpdatableDocumentView docView = getDoc1View(); clearQueries(); // When @@ -170,10 +171,16 @@ public void testUpdateWithModifyExisting() { // Since we update the old responsiblePerson, load it along with the document for updating it later AssertStatementBuilder builder = assertQuerySequence(); - fullFetch(builder); + if (isQueryStrategy()) { + builder.update(Person.class); + if (isFullMode()) { + builder.update(Document.class); + } + } else { + fullFetch(builder).update(Person.class); + } - builder.update(Person.class) - .validate(); + builder.validate(); assertNoUpdateAndReload(docView); assertEquals("newPerson", doc1.getResponsiblePerson().getName()); @@ -182,7 +189,7 @@ public void testUpdateWithModifyExisting() { @Test public void testUpdateToNull() { // Given - final T docView = getDoc1View(); + final UpdatableDocumentView docView = getDoc1View(); clearQueries(); // When @@ -192,16 +199,38 @@ public void testUpdateToNull() { // Then // Nothing is updated as the relation is mutable only but was updated AssertStatementBuilder builder = assertQuerySequence(); - if (isFullMode()) { - fullFetch(builder); + + if (isQueryStrategy()) { + if (isFullMode()) { + builder.update(Document.class); + } + } else { + if (isFullMode()) { + fullFetch(builder); + } } builder.validate(); - assertNoUpdateAndReload(docView); + assertNoUpdateForChangedRelationAndReload(docView); assertEquals(p1.getId(), doc1.getResponsiblePerson().getId()); } + protected void assertNoUpdateForChangedRelationAndReload(UpdatableDocumentView docView) { + AssertStatementBuilder afterBuilder = assertQueriesAfterUpdate(docView); + + if (isQueryStrategy()) { + if (isFullMode()) { + afterBuilder.update(Document.class); + } + } else { + if (isFullMode()) { + fullFetch(afterBuilder); + } + } + afterBuilder.validate(); + } + @Override protected AssertStatementBuilder fullFetch(AssertStatementBuilder builder) { return builder.assertSelect() @@ -209,4 +238,10 @@ protected AssertStatementBuilder fullFetch(AssertStatementBuilder builder) { .fetching(Person.class) .and(); } + + @Override + protected AssertStatementBuilder fullUpdate(AssertStatementBuilder builder) { + return builder.update(Person.class) + .update(Document.class); + } } diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/FullUpdatableDocumentView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/FullUpdatableDocumentView.java deleted file mode 100644 index ca421d6d6e..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/FullUpdatableDocumentView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.mutableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentView extends UpdatableDocumentView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/FullUpdatableDocumentWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/FullUpdatableDocumentWithCollectionsView.java deleted file mode 100644 index 962bc7039e..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/FullUpdatableDocumentWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.mutableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentWithCollectionsView extends UpdatableDocumentWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/FullUpdatableDocumentWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/FullUpdatableDocumentWithMapsView.java deleted file mode 100644 index 1d221aba72..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/FullUpdatableDocumentWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.mutableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentWithMapsView extends UpdatableDocumentWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/FullUpdatablePersonView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/FullUpdatablePersonView.java deleted file mode 100644 index 82960e4457..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/FullUpdatablePersonView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.mutableonly.model; - -import com.blazebit.persistence.testsuite.entity.Person; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Person.class) -public interface FullUpdatablePersonView extends UpdatablePersonView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/LazyUpdatableDocumentView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/LazyUpdatableDocumentView.java deleted file mode 100644 index 181f58c4c5..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/LazyUpdatableDocumentView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.mutableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentView extends UpdatableDocumentView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/LazyUpdatableDocumentWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/LazyUpdatableDocumentWithCollectionsView.java deleted file mode 100644 index 3bb973d3e1..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/LazyUpdatableDocumentWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.mutableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentWithCollectionsView extends UpdatableDocumentWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/LazyUpdatableDocumentWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/LazyUpdatableDocumentWithMapsView.java deleted file mode 100644 index 25e6002ac1..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/LazyUpdatableDocumentWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.mutableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentWithMapsView extends UpdatableDocumentWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/LazyUpdatablePersonView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/LazyUpdatablePersonView.java deleted file mode 100644 index 379e834978..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/LazyUpdatablePersonView.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.mutableonly.model; - -import com.blazebit.persistence.testsuite.entity.Person; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Person.class) -public interface LazyUpdatablePersonView extends UpdatablePersonView { -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/PartialUpdatableDocumentView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/PartialUpdatableDocumentView.java deleted file mode 100644 index 8cf282433e..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/PartialUpdatableDocumentView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.mutableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentView extends UpdatableDocumentView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/PartialUpdatableDocumentWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/PartialUpdatableDocumentWithCollectionsView.java deleted file mode 100644 index f894c64f4a..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/PartialUpdatableDocumentWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.mutableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentWithCollectionsView extends UpdatableDocumentWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/PartialUpdatableDocumentWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/PartialUpdatableDocumentWithMapsView.java deleted file mode 100644 index 5762863045..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/PartialUpdatableDocumentWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.mutableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentWithMapsView extends UpdatableDocumentWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/PartialUpdatablePersonView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/PartialUpdatablePersonView.java deleted file mode 100644 index 73cf6f7956..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/PartialUpdatablePersonView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.mutableonly.model; - -import com.blazebit.persistence.testsuite.entity.Person; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Person.class) -public interface PartialUpdatablePersonView extends UpdatablePersonView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/UpdatableDocumentView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/UpdatableDocumentView.java index 948562ca35..1b4dc5fcab 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/UpdatableDocumentView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/UpdatableDocumentView.java @@ -16,8 +16,11 @@ package com.blazebit.persistence.view.testsuite.update.subview.simple.mutableonly.model; +import com.blazebit.persistence.testsuite.entity.Document; import com.blazebit.persistence.view.CascadeType; +import com.blazebit.persistence.view.EntityView; import com.blazebit.persistence.view.IdMapping; +import com.blazebit.persistence.view.UpdatableEntityView; import com.blazebit.persistence.view.UpdatableMapping; import java.util.Date; @@ -27,7 +30,9 @@ * @author Christian Beikov * @since 1.2.0 */ -public interface UpdatableDocumentView { +@UpdatableEntityView +@EntityView(Document.class) +public interface UpdatableDocumentView { @IdMapping("id") public Long getId(); @@ -41,8 +46,8 @@ public interface UpdatableDocumentView { public void setLastModified(Date date); @UpdatableMapping(updatable = false, cascade = { CascadeType.UPDATE }) - public T getResponsiblePerson(); + public UpdatablePersonView getResponsiblePerson(); - public void setResponsiblePerson(T responsiblePerson); + public void setResponsiblePerson(UpdatablePersonView responsiblePerson); } diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/UpdatableDocumentWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/UpdatableDocumentWithCollectionsView.java index 254967f813..71c8098a4b 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/UpdatableDocumentWithCollectionsView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/UpdatableDocumentWithCollectionsView.java @@ -16,8 +16,11 @@ package com.blazebit.persistence.view.testsuite.update.subview.simple.mutableonly.model; +import com.blazebit.persistence.testsuite.entity.Document; import com.blazebit.persistence.view.CascadeType; +import com.blazebit.persistence.view.EntityView; import com.blazebit.persistence.view.IdMapping; +import com.blazebit.persistence.view.UpdatableEntityView; import com.blazebit.persistence.view.UpdatableMapping; import java.util.List; @@ -27,7 +30,9 @@ * @author Christian Beikov * @since 1.2.0 */ -public interface UpdatableDocumentWithCollectionsView { +@UpdatableEntityView +@EntityView(Document.class) +public interface UpdatableDocumentWithCollectionsView { @IdMapping("id") public Long getId(); @@ -37,8 +42,8 @@ public interface UpdatableDocumentWithCollectionsView getPeople(); + public List getPeople(); - public void setPeople(List people); + public void setPeople(List people); } diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/UpdatableDocumentWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/UpdatableDocumentWithMapsView.java index 0442ff739d..2599a21498 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/UpdatableDocumentWithMapsView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/UpdatableDocumentWithMapsView.java @@ -16,8 +16,11 @@ package com.blazebit.persistence.view.testsuite.update.subview.simple.mutableonly.model; +import com.blazebit.persistence.testsuite.entity.Document; import com.blazebit.persistence.view.CascadeType; +import com.blazebit.persistence.view.EntityView; import com.blazebit.persistence.view.IdMapping; +import com.blazebit.persistence.view.UpdatableEntityView; import com.blazebit.persistence.view.UpdatableMapping; import java.util.List; @@ -28,7 +31,9 @@ * @author Christian Beikov * @since 1.2.0 */ -public interface UpdatableDocumentWithMapsView { +@UpdatableEntityView +@EntityView(Document.class) +public interface UpdatableDocumentWithMapsView { @IdMapping("id") public Long getId(); @@ -38,8 +43,8 @@ public interface UpdatableDocumentWithMapsView { public void setName(String name); @UpdatableMapping(updatable = false, cascade = { CascadeType.UPDATE }) - public Map getContacts(); + public Map getContacts(); - public void setContacts(Map contacts); + public void setContacts(Map contacts); } diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/UpdatablePersonView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/UpdatablePersonView.java index bb53e36276..da21594a9e 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/UpdatablePersonView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/mutableonly/model/UpdatablePersonView.java @@ -18,6 +18,7 @@ import com.blazebit.persistence.testsuite.entity.Person; import com.blazebit.persistence.view.EntityView; +import com.blazebit.persistence.view.UpdatableEntityView; import com.blazebit.persistence.view.testsuite.basic.model.IdHolderView; /** @@ -25,6 +26,7 @@ * @author Christian Beikov * @since 1.2.0 */ +@UpdatableEntityView @EntityView(Person.class) public interface UpdatablePersonView extends IdHolderView { diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/EntityViewUpdateSimpleUpdatableOnlySubviewCollectionsTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/EntityViewUpdateSimpleUpdatableOnlySubviewCollectionsTest.java index 71ac65285a..8696a2f119 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/EntityViewUpdateSimpleUpdatableOnlySubviewCollectionsTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/EntityViewUpdateSimpleUpdatableOnlySubviewCollectionsTest.java @@ -21,11 +21,10 @@ import com.blazebit.persistence.testsuite.base.category.NoEclipselink; import com.blazebit.persistence.testsuite.entity.Document; import com.blazebit.persistence.testsuite.entity.Person; +import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.spi.EntityViewConfiguration; import com.blazebit.persistence.view.testsuite.update.AbstractEntityViewUpdateTest; -import com.blazebit.persistence.view.testsuite.update.subview.simple.updatableonly.model.FullUpdatableDocumentWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.subview.simple.updatableonly.model.LazyUpdatableDocumentWithCollectionsView; -import com.blazebit.persistence.view.testsuite.update.subview.simple.updatableonly.model.PartialUpdatableDocumentWithCollectionsView; import com.blazebit.persistence.view.testsuite.update.subview.simple.updatableonly.model.PersonView; import com.blazebit.persistence.view.testsuite.update.subview.simple.updatableonly.model.UpdatableDocumentWithCollectionsView; import org.junit.Assert; @@ -35,7 +34,6 @@ import org.junit.runners.Parameterized; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collection; import static org.junit.Assert.*; @@ -48,19 +46,15 @@ @RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) -public class EntityViewUpdateSimpleUpdatableOnlySubviewCollectionsTest extends AbstractEntityViewUpdateTest { +public class EntityViewUpdateSimpleUpdatableOnlySubviewCollectionsTest extends AbstractEntityViewUpdateTest { - public EntityViewUpdateSimpleUpdatableOnlySubviewCollectionsTest(Class viewType) { - super(viewType); + public EntityViewUpdateSimpleUpdatableOnlySubviewCollectionsTest(FlushMode mode, FlushStrategy strategy) { + super(mode, strategy, UpdatableDocumentWithCollectionsView.class); } - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { PartialUpdatableDocumentWithCollectionsView.class }, - { LazyUpdatableDocumentWithCollectionsView.class }, - { FullUpdatableDocumentWithCollectionsView.class } - }); + @Parameterized.Parameters(name = "{0} - {1}") + public static Object[][] combinations() { + return MODE_STRATEGY_COMBINATIONS; } @Override @@ -71,7 +65,7 @@ protected void registerViewTypes(EntityViewConfiguration cfg) { @Test public void testUpdateReplaceCollection() { // Given - final T docView = getDoc1View(); + final UpdatableDocumentWithCollectionsView docView = getDoc1View(); clearQueries(); // When @@ -97,7 +91,7 @@ public void testUpdateReplaceCollection() { @Test public void testUpdateAddToCollection() { // Given - final T docView = getDoc1View(); + final UpdatableDocumentWithCollectionsView docView = getDoc1View(); PersonView newPerson = getP2View(PersonView.class); clearQueries(); @@ -122,7 +116,7 @@ public void testUpdateAddToCollection() { @Test public void testUpdateAddToNewCollection() { // Given - final T docView = getDoc1View(); + final UpdatableDocumentWithCollectionsView docView = getDoc1View(); PersonView newPerson = getP2View(PersonView.class); clearQueries(); @@ -156,7 +150,7 @@ public void testUpdateAddToNewCollection() { @Test public void testUpdateAddToCollectionAndModifySubview() { // Given - final T docView = getDoc1View(); + final UpdatableDocumentWithCollectionsView docView = getDoc1View(); PersonView newPerson = getP2View(PersonView.class); clearQueries(); @@ -191,7 +185,7 @@ public void testUpdateAddToCollectionAndModifySubview() { @Test public void testUpdateAddToNewCollectionAndModifySubview() { // Given - final T docView = getDoc1View(); + final UpdatableDocumentWithCollectionsView docView = getDoc1View(); PersonView newPerson = getP2View(PersonView.class); clearQueries(); @@ -227,7 +221,7 @@ public void testUpdateAddToNewCollectionAndModifySubview() { @Test public void testUpdateModifySubviewInCollection() { // Given - final T docView = getDoc1View(); + final UpdatableDocumentWithCollectionsView docView = getDoc1View(); clearQueries(); // When @@ -279,6 +273,13 @@ private AssertStatementBuilder assertReplaceAnd(AssertStatementBuilder builder) .and(); } + @Override + protected boolean isQueryStrategy() { + // Collection changes always need to be applied on the entity model, can't do that via a query + return false; + } + + @Override protected AssertStatementBuilder fullFetch(AssertStatementBuilder builder) { return builder.assertSelect() .fetching(Document.class) diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/EntityViewUpdateSimpleUpdatableOnlySubviewMapsTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/EntityViewUpdateSimpleUpdatableOnlySubviewMapsTest.java index e749fd6b4a..d541871301 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/EntityViewUpdateSimpleUpdatableOnlySubviewMapsTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/EntityViewUpdateSimpleUpdatableOnlySubviewMapsTest.java @@ -21,11 +21,10 @@ import com.blazebit.persistence.testsuite.base.category.NoEclipselink; import com.blazebit.persistence.testsuite.entity.Document; import com.blazebit.persistence.testsuite.entity.Person; +import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.spi.EntityViewConfiguration; import com.blazebit.persistence.view.testsuite.update.AbstractEntityViewUpdateTest; -import com.blazebit.persistence.view.testsuite.update.subview.simple.updatableonly.model.FullUpdatableDocumentWithMapsView; -import com.blazebit.persistence.view.testsuite.update.subview.simple.updatableonly.model.LazyUpdatableDocumentWithMapsView; -import com.blazebit.persistence.view.testsuite.update.subview.simple.updatableonly.model.PartialUpdatableDocumentWithMapsView; import com.blazebit.persistence.view.testsuite.update.subview.simple.updatableonly.model.PersonView; import com.blazebit.persistence.view.testsuite.update.subview.simple.updatableonly.model.UpdatableDocumentWithMapsView; import org.junit.Assert; @@ -34,9 +33,6 @@ import org.junit.runner.RunWith; import org.junit.runners.Parameterized; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; import java.util.HashMap; import java.util.Map; @@ -50,19 +46,15 @@ @RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) -public class EntityViewUpdateSimpleUpdatableOnlySubviewMapsTest extends AbstractEntityViewUpdateTest { +public class EntityViewUpdateSimpleUpdatableOnlySubviewMapsTest extends AbstractEntityViewUpdateTest { - public EntityViewUpdateSimpleUpdatableOnlySubviewMapsTest(Class viewType) { - super(viewType); + public EntityViewUpdateSimpleUpdatableOnlySubviewMapsTest(FlushMode mode, FlushStrategy strategy) { + super(mode, strategy, UpdatableDocumentWithMapsView.class); } - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { PartialUpdatableDocumentWithMapsView.class }, - { LazyUpdatableDocumentWithMapsView.class }, - { FullUpdatableDocumentWithMapsView.class } - }); + @Parameterized.Parameters(name = "{0} - {1}") + public static Object[][] combinations() { + return MODE_STRATEGY_COMBINATIONS; } @Override @@ -73,7 +65,7 @@ protected void registerViewTypes(EntityViewConfiguration cfg) { @Test public void testUpdateReplaceCollection() { // Given - final T docView = getDoc1View(); + final UpdatableDocumentWithMapsView docView = getDoc1View(); clearQueries(); // When @@ -99,7 +91,7 @@ public void testUpdateReplaceCollection() { @Test public void testUpdateAddToCollection() { // Given - final T docView = getDoc1View(); + final UpdatableDocumentWithMapsView docView = getDoc1View(); PersonView newPerson = getP2View(PersonView.class); clearQueries(); @@ -124,7 +116,7 @@ public void testUpdateAddToCollection() { @Test public void testUpdateAddToNewCollection() { // Given - final T docView = getDoc1View(); + final UpdatableDocumentWithMapsView docView = getDoc1View(); PersonView newPerson = getP2View(PersonView.class); clearQueries(); @@ -158,7 +150,7 @@ public void testUpdateAddToNewCollection() { @Test public void testUpdateAddToCollectionAndModifySubview() { // Given - final T docView = getDoc1View(); + final UpdatableDocumentWithMapsView docView = getDoc1View(); PersonView newPerson = getP2View(PersonView.class); clearQueries(); @@ -193,7 +185,7 @@ public void testUpdateAddToCollectionAndModifySubview() { @Test public void testUpdateAddToNewCollectionAndModifySubview() { // Given - final T docView = getDoc1View(); + final UpdatableDocumentWithMapsView docView = getDoc1View(); PersonView newPerson = getP2View(PersonView.class); clearQueries(); @@ -229,7 +221,7 @@ public void testUpdateAddToNewCollectionAndModifySubview() { @Test public void testUpdateModifySubviewInCollection() { // Given - final T docView = getDoc1View(); + final UpdatableDocumentWithMapsView docView = getDoc1View(); clearQueries(); // When @@ -283,6 +275,13 @@ private AssertStatementBuilder assertReplaceAnd(AssertStatementBuilder builder) .and(); } + @Override + protected boolean isQueryStrategy() { + // Collection changes always need to be applied on the entity model, can't do that via a query + return false; + } + + @Override protected AssertStatementBuilder fullFetch(AssertStatementBuilder builder) { return builder.assertSelect() .fetching(Document.class) diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/EntityViewUpdateSimpleUpdatableOnlySubviewTest.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/EntityViewUpdateSimpleUpdatableOnlySubviewTest.java index d412f1576b..4877d00cd6 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/EntityViewUpdateSimpleUpdatableOnlySubviewTest.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/EntityViewUpdateSimpleUpdatableOnlySubviewTest.java @@ -20,11 +20,10 @@ import com.blazebit.persistence.testsuite.base.category.NoDatanucleus; import com.blazebit.persistence.testsuite.base.category.NoEclipselink; import com.blazebit.persistence.testsuite.entity.Document; +import com.blazebit.persistence.view.FlushMode; +import com.blazebit.persistence.view.FlushStrategy; import com.blazebit.persistence.view.spi.EntityViewConfiguration; import com.blazebit.persistence.view.testsuite.update.AbstractEntityViewUpdateTest; -import com.blazebit.persistence.view.testsuite.update.subview.simple.updatableonly.model.FullUpdatableDocumentView; -import com.blazebit.persistence.view.testsuite.update.subview.simple.updatableonly.model.LazyUpdatableDocumentView; -import com.blazebit.persistence.view.testsuite.update.subview.simple.updatableonly.model.PartialUpdatableDocumentView; import com.blazebit.persistence.view.testsuite.update.subview.simple.updatableonly.model.PersonView; import com.blazebit.persistence.view.testsuite.update.subview.simple.updatableonly.model.UpdatableDocumentView; import org.junit.Assert; @@ -33,9 +32,6 @@ import org.junit.runner.RunWith; import org.junit.runners.Parameterized; -import java.util.Arrays; -import java.util.Collection; - import static org.junit.Assert.assertEquals; /** @@ -46,19 +42,15 @@ @RunWith(Parameterized.class) // NOTE: No Datanucleus support yet @Category({ NoDatanucleus.class, NoEclipselink.class}) -public class EntityViewUpdateSimpleUpdatableOnlySubviewTest extends AbstractEntityViewUpdateTest { +public class EntityViewUpdateSimpleUpdatableOnlySubviewTest extends AbstractEntityViewUpdateTest { - public EntityViewUpdateSimpleUpdatableOnlySubviewTest(Class viewType) { - super(viewType); + public EntityViewUpdateSimpleUpdatableOnlySubviewTest(FlushMode mode, FlushStrategy strategy) { + super(mode, strategy, UpdatableDocumentView.class); } - @Parameterized.Parameters - public static Collection entityViewCombinations() { - return Arrays.asList(new Object[][]{ - { PartialUpdatableDocumentView.class }, - { LazyUpdatableDocumentView.class }, - { FullUpdatableDocumentView.class } - }); + @Parameterized.Parameters(name = "{0} - {1}") + public static Object[][] combinations() { + return MODE_STRATEGY_COMBINATIONS; } @Override @@ -69,7 +61,7 @@ protected void registerViewTypes(EntityViewConfiguration cfg) { @Test public void testSimpleUpdate() { // Given - final T docView = getDoc1View(); + final UpdatableDocumentView docView = getDoc1View(); clearQueries(); // When @@ -80,7 +72,10 @@ public void testSimpleUpdate() { // Assert that only the document is loaded and finally also updated AssertStatementBuilder builder = assertQuerySequence(); - fullFetch(builder); + if (!isQueryStrategy()) { + fullFetch(builder); + } + builder.update(Document.class) .validate(); @@ -92,7 +87,7 @@ public void testSimpleUpdate() { @Test public void testUpdateWithSubview() { // Given - final T docView = getDoc1View(); + final UpdatableDocumentView docView = getDoc1View(); PersonView newPerson = getP2View(PersonView.class); clearQueries(); @@ -105,7 +100,10 @@ public void testUpdateWithSubview() { // There is no need to actually load the person AssertStatementBuilder builder = assertQuerySequence(); - fullFetch(builder); + if (!isQueryStrategy()) { + fullFetch(builder); + } + builder.update(Document.class) .validate(); @@ -116,7 +114,7 @@ public void testUpdateWithSubview() { @Test public void testUpdateWithModifySubview() { // Given - final T docView = getDoc1View(); + final UpdatableDocumentView docView = getDoc1View(); PersonView newPerson = getP2View(PersonView.class); clearQueries(); @@ -130,7 +128,10 @@ public void testUpdateWithModifySubview() { // But the person is not updated AssertStatementBuilder builder = assertQuerySequence(); - fullFetch(builder); + if (!isQueryStrategy()) { + fullFetch(builder); + } + builder.update(Document.class) .validate(); @@ -142,7 +143,7 @@ public void testUpdateWithModifySubview() { @Test public void testUpdateWithModifyExisting() { // Given - final T docView = getDoc1View(); + final UpdatableDocumentView docView = getDoc1View(); clearQueries(); // When @@ -153,8 +154,12 @@ public void testUpdateWithModifyExisting() { // Nothing is loaded since nothing that should be cascaded changed AssertStatementBuilder builder = assertQuerySequence(); - if (isFullMode()) { - fullFetch(builder); + if (isQueryStrategy()) { + fullUpdate(builder); + } else { + if (isFullMode()) { + fullFetch(builder); + } } builder.validate(); @@ -165,7 +170,7 @@ public void testUpdateWithModifyExisting() { @Test public void testUpdateToNull() { // Given - final T docView = getDoc1View(); + final UpdatableDocumentView docView = getDoc1View(); clearQueries(); // When @@ -176,7 +181,10 @@ public void testUpdateToNull() { // Assert that only the document is loaded and finally also updated AssertStatementBuilder builder = assertQuerySequence(); - fullFetch(builder); + if (!isQueryStrategy()) { + fullFetch(builder); + } + builder.update(Document.class) .validate(); @@ -190,4 +198,9 @@ protected AssertStatementBuilder fullFetch(AssertStatementBuilder builder) { .fetching(Document.class) .and(); } + + @Override + protected AssertStatementBuilder fullUpdate(AssertStatementBuilder builder) { + return builder.update(Document.class); + } } diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/model/FullUpdatableDocumentView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/model/FullUpdatableDocumentView.java deleted file mode 100644 index a20c249e0e..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/model/FullUpdatableDocumentView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.updatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentView extends UpdatableDocumentView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/model/FullUpdatableDocumentWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/model/FullUpdatableDocumentWithCollectionsView.java deleted file mode 100644 index 188578cb3b..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/model/FullUpdatableDocumentWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.updatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentWithCollectionsView extends UpdatableDocumentWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/model/FullUpdatableDocumentWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/model/FullUpdatableDocumentWithMapsView.java deleted file mode 100644 index 9790542e86..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/model/FullUpdatableDocumentWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.updatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.FULL) -@EntityView(Document.class) -public interface FullUpdatableDocumentWithMapsView extends UpdatableDocumentWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/model/LazyUpdatableDocumentView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/model/LazyUpdatableDocumentView.java deleted file mode 100644 index 9c397d58b3..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/model/LazyUpdatableDocumentView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.updatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentView extends UpdatableDocumentView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/model/LazyUpdatableDocumentWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/model/LazyUpdatableDocumentWithCollectionsView.java deleted file mode 100644 index 7a931f439e..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/model/LazyUpdatableDocumentWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.updatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentWithCollectionsView extends UpdatableDocumentWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/model/LazyUpdatableDocumentWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/model/LazyUpdatableDocumentWithMapsView.java deleted file mode 100644 index 94d4f07c11..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/model/LazyUpdatableDocumentWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.updatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.LAZY) -@EntityView(Document.class) -public interface LazyUpdatableDocumentWithMapsView extends UpdatableDocumentWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/model/PartialUpdatableDocumentView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/model/PartialUpdatableDocumentView.java deleted file mode 100644 index 0899aa8e5f..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/model/PartialUpdatableDocumentView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.updatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentView extends UpdatableDocumentView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/model/PartialUpdatableDocumentWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/model/PartialUpdatableDocumentWithCollectionsView.java deleted file mode 100644 index 6863fa79f9..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/model/PartialUpdatableDocumentWithCollectionsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.updatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentWithCollectionsView extends UpdatableDocumentWithCollectionsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/model/PartialUpdatableDocumentWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/model/PartialUpdatableDocumentWithMapsView.java deleted file mode 100644 index 09e743a134..0000000000 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/model/PartialUpdatableDocumentWithMapsView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 - 2017 Blazebit. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.blazebit.persistence.view.testsuite.update.subview.simple.updatableonly.model; - -import com.blazebit.persistence.testsuite.entity.Document; -import com.blazebit.persistence.view.EntityView; -import com.blazebit.persistence.view.FlushMode; -import com.blazebit.persistence.view.UpdatableEntityView; - -/** - * - * @author Christian Beikov - * @since 1.2.0 - */ -@UpdatableEntityView(mode = FlushMode.PARTIAL) -@EntityView(Document.class) -public interface PartialUpdatableDocumentWithMapsView extends UpdatableDocumentWithMapsView { - -} diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/model/UpdatableDocumentView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/model/UpdatableDocumentView.java index 9a9216d271..ad0c384e0a 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/model/UpdatableDocumentView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/model/UpdatableDocumentView.java @@ -16,7 +16,10 @@ package com.blazebit.persistence.view.testsuite.update.subview.simple.updatableonly.model; +import com.blazebit.persistence.testsuite.entity.Document; +import com.blazebit.persistence.view.EntityView; import com.blazebit.persistence.view.IdMapping; +import com.blazebit.persistence.view.UpdatableEntityView; import com.blazebit.persistence.view.UpdatableMapping; import java.util.Date; @@ -26,6 +29,8 @@ * @author Christian Beikov * @since 1.2.0 */ +@UpdatableEntityView +@EntityView(Document.class) public interface UpdatableDocumentView { @IdMapping("id") diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/model/UpdatableDocumentWithCollectionsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/model/UpdatableDocumentWithCollectionsView.java index bec3782fdd..e9bde4fc92 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/model/UpdatableDocumentWithCollectionsView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/model/UpdatableDocumentWithCollectionsView.java @@ -16,7 +16,10 @@ package com.blazebit.persistence.view.testsuite.update.subview.simple.updatableonly.model; +import com.blazebit.persistence.testsuite.entity.Document; +import com.blazebit.persistence.view.EntityView; import com.blazebit.persistence.view.IdMapping; +import com.blazebit.persistence.view.UpdatableEntityView; import com.blazebit.persistence.view.UpdatableMapping; import java.util.List; @@ -26,6 +29,8 @@ * @author Christian Beikov * @since 1.2.0 */ +@UpdatableEntityView +@EntityView(Document.class) public interface UpdatableDocumentWithCollectionsView { @IdMapping("id") diff --git a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/model/UpdatableDocumentWithMapsView.java b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/model/UpdatableDocumentWithMapsView.java index 840f6ee64a..edc98792ba 100644 --- a/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/model/UpdatableDocumentWithMapsView.java +++ b/entity-view/testsuite/src/test/java/com/blazebit/persistence/view/testsuite/update/subview/simple/updatableonly/model/UpdatableDocumentWithMapsView.java @@ -16,7 +16,10 @@ package com.blazebit.persistence.view.testsuite.update.subview.simple.updatableonly.model; +import com.blazebit.persistence.testsuite.entity.Document; +import com.blazebit.persistence.view.EntityView; import com.blazebit.persistence.view.IdMapping; +import com.blazebit.persistence.view.UpdatableEntityView; import com.blazebit.persistence.view.UpdatableMapping; import java.util.List; @@ -27,6 +30,8 @@ * @author Christian Beikov * @since 1.2.0 */ +@UpdatableEntityView +@EntityView(Document.class) public interface UpdatableDocumentWithMapsView { @IdMapping("id") diff --git a/integration/datanucleus/src/main/java/com/blazebit/persistence/impl/datanucleus/DataNucleusJpaProvider.java b/integration/datanucleus/src/main/java/com/blazebit/persistence/impl/datanucleus/DataNucleusJpaProvider.java index 38df6305b8..ce8d400e26 100644 --- a/integration/datanucleus/src/main/java/com/blazebit/persistence/impl/datanucleus/DataNucleusJpaProvider.java +++ b/integration/datanucleus/src/main/java/com/blazebit/persistence/impl/datanucleus/DataNucleusJpaProvider.java @@ -273,6 +273,11 @@ public boolean supportsForeignAssociationInOnClause() { return true; } + @Override + public boolean supportsUpdateSetEmbeddable() { + return true; + } + @Override public boolean supportsTransientEntityAsParameter() { return false; diff --git a/integration/eclipselink/src/main/java/com/blazebit/persistence/impl/eclipselink/EclipseLinkJpaProvider.java b/integration/eclipselink/src/main/java/com/blazebit/persistence/impl/eclipselink/EclipseLinkJpaProvider.java index 030f408726..a7f6f5919a 100644 --- a/integration/eclipselink/src/main/java/com/blazebit/persistence/impl/eclipselink/EclipseLinkJpaProvider.java +++ b/integration/eclipselink/src/main/java/com/blazebit/persistence/impl/eclipselink/EclipseLinkJpaProvider.java @@ -273,6 +273,11 @@ public boolean supportsForeignAssociationInOnClause() { return true; } + @Override + public boolean supportsUpdateSetEmbeddable() { + return true; + } + @Override public boolean supportsTransientEntityAsParameter() { return true; diff --git a/integration/hibernate-base/src/main/java/com/blazebit/persistence/impl/hibernate/HibernateJpaProvider.java b/integration/hibernate-base/src/main/java/com/blazebit/persistence/impl/hibernate/HibernateJpaProvider.java index 7ede789e64..acb0127e33 100644 --- a/integration/hibernate-base/src/main/java/com/blazebit/persistence/impl/hibernate/HibernateJpaProvider.java +++ b/integration/hibernate-base/src/main/java/com/blazebit/persistence/impl/hibernate/HibernateJpaProvider.java @@ -485,6 +485,12 @@ public boolean supportsForeignAssociationInOnClause() { return false; } + @Override + public boolean supportsUpdateSetEmbeddable() { + // Tried it, but the SQL generation seems to mess up... + return false; + } + @Override public boolean supportsTransientEntityAsParameter() { return true; diff --git a/integration/openjpa/src/main/java/com/blazebit/persistence/impl/openjpa/OpenJPAJpaProvider.java b/integration/openjpa/src/main/java/com/blazebit/persistence/impl/openjpa/OpenJPAJpaProvider.java index 485dc2e1be..0e44711ca4 100644 --- a/integration/openjpa/src/main/java/com/blazebit/persistence/impl/openjpa/OpenJPAJpaProvider.java +++ b/integration/openjpa/src/main/java/com/blazebit/persistence/impl/openjpa/OpenJPAJpaProvider.java @@ -191,6 +191,11 @@ public boolean supportsForeignAssociationInOnClause() { return true; } + @Override + public boolean supportsUpdateSetEmbeddable() { + return true; + } + @Override public boolean supportsTransientEntityAsParameter() { return true;