From 06dc1e5dba4108ad16ebdd04923d21231fa1e037 Mon Sep 17 00:00:00 2001 From: Oliver Gierke Date: Fri, 20 Apr 2012 13:20:14 +0200 Subject: [PATCH] DATACMNS-156 - Removed deprecated persistence package. --- ...AbstractConstructorEntityInstantiator.java | 156 ------------------ .../data/persistence/EntityInstantiator.java | 31 ---- .../data/persistence/StateBackedCreator.java | 16 -- .../data/persistence/StateProvider.java | 29 ---- .../data/persistence/package-info.java | 6 - 5 files changed, 238 deletions(-) delete mode 100644 spring-data-commons-core/src/main/java/org/springframework/data/persistence/AbstractConstructorEntityInstantiator.java delete mode 100644 spring-data-commons-core/src/main/java/org/springframework/data/persistence/EntityInstantiator.java delete mode 100644 spring-data-commons-core/src/main/java/org/springframework/data/persistence/StateBackedCreator.java delete mode 100644 spring-data-commons-core/src/main/java/org/springframework/data/persistence/StateProvider.java delete mode 100644 spring-data-commons-core/src/main/java/org/springframework/data/persistence/package-info.java diff --git a/spring-data-commons-core/src/main/java/org/springframework/data/persistence/AbstractConstructorEntityInstantiator.java b/spring-data-commons-core/src/main/java/org/springframework/data/persistence/AbstractConstructorEntityInstantiator.java deleted file mode 100644 index 96e893c5e..000000000 --- a/spring-data-commons-core/src/main/java/org/springframework/data/persistence/AbstractConstructorEntityInstantiator.java +++ /dev/null @@ -1,156 +0,0 @@ -package org.springframework.data.persistence; - -import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; -import java.util.HashMap; -import java.util.Map; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.springframework.util.ClassUtils; - -import sun.reflect.ReflectionFactory; - -/** - * Try for a constructor taking state: failing that, try a no-arg constructor and then setUnderlyingNode(). - * - * @deprecated use {@link org.springframework.data.convert.EntityInstantiator} abstraction instead. - * @author Rod Johnson - */ -@Deprecated -public abstract class AbstractConstructorEntityInstantiator implements - EntityInstantiator { - - private final Log log = LogFactory.getLog(getClass()); - private final Map, StateBackedCreator> cache = new HashMap, StateBackedCreator>(); - - public T createEntityFromState(STATE n, Class c) { - try { - StateBackedCreator creator = (StateBackedCreator) cache.get(c); - if (creator != null) - return creator.create(n, c); - synchronized (cache) { - creator = (StateBackedCreator) cache.get(c); - if (creator != null) - return creator.create(n, c); - Class stateClass = (Class) n.getClass(); - creator = createInstantiator(c, stateClass); - cache.put(c, creator); - return creator.create(n, c); - } - } catch (IllegalArgumentException e) { - throw e; - } catch (InvocationTargetException e) { - throw new IllegalArgumentException(e.getTargetException()); - } catch (Exception e) { - throw new IllegalArgumentException(e); - } - } - - public void setInstantiators( - Map, StateBackedCreator> instantiators) { - this.cache.putAll(instantiators); - } - - protected StateBackedCreator createInstantiator(Class type, - final Class stateType) { - StateBackedCreator creator = stateTakingConstructorInstantiator(type, stateType); - if (creator != null) - return creator; - creator = emptyConstructorStateSettingInstantiator(type, stateType); - if (creator != null) - return creator; - return createFailingInstantiator(stateType); - } - - protected StateBackedCreator createFailingInstantiator( - final Class stateType) { - return new StateBackedCreator() { - public T create(STATE n, Class c) throws Exception { - throw new IllegalArgumentException(getFailingMessageForClass(c, stateType)); - } - }; - } - - protected String getFailingMessageForClass(Class entityClass, Class stateClass) { - return getClass().getSimpleName() + ": entity " + entityClass + " must have either a constructor taking [" - + stateClass + "] or a no-arg constructor and state setter."; - } - - private StateBackedCreator emptyConstructorStateSettingInstantiator( - Class type, Class stateType) { - final Constructor constructor = getNoArgConstructor(type); - if (constructor == null) - return null; - - log.info("Using " + type + " no-arg constructor"); - - return new StateBackedCreator() { - public T create(STATE state, Class c) throws Exception { - try { - StateProvider.setUnderlyingState(state); - T newInstance = constructor.newInstance(); - setState(newInstance, state); - return newInstance; - } finally { - StateProvider.retrieveState(); - } - } - }; - } - - protected StateBackedCreator createWithoutConstructorInvocation( - final Class type, Class stateType) { - ReflectionFactory rf = ReflectionFactory.getReflectionFactory(); - Constructor objectConstructor = getDeclaredConstructor(Object.class); - final Constructor serializationConstructor = rf.newConstructorForSerialization(type, objectConstructor); - return new StateBackedCreator() { - public T create(STATE state, Class c) throws Exception { - final T result = type.cast(serializationConstructor.newInstance()); - setState(result, state); - return result; - } - }; - } - - protected Constructor getNoArgConstructor(Class type) { - Constructor constructor = ClassUtils.getConstructorIfAvailable(type); - if (constructor != null) - return constructor; - return getDeclaredConstructor(type); - } - - protected StateBackedCreator stateTakingConstructorInstantiator( - Class type, Class stateType) { - Class stateInterface = (Class) stateType.getInterfaces()[0]; - final Constructor constructor = ClassUtils.getConstructorIfAvailable(type, stateInterface); - if (constructor == null) - return null; - - log.info("Using " + type + " constructor taking " + stateInterface); - return new StateBackedCreator() { - public T create(STATE n, Class c) throws Exception { - return constructor.newInstance(n); - } - }; - } - - protected Constructor getDeclaredConstructor(Class c) { - try { - final Constructor declaredConstructor = c.getDeclaredConstructor(); - declaredConstructor.setAccessible(true); - return declaredConstructor; - } catch (NoSuchMethodException e) { - return null; - } - } - - /** - * Subclasses must implement to set state - * - * @param entity - * @param s - */ - protected abstract void setState(BACKING_INTERFACE entity, STATE s); - -} diff --git a/spring-data-commons-core/src/main/java/org/springframework/data/persistence/EntityInstantiator.java b/spring-data-commons-core/src/main/java/org/springframework/data/persistence/EntityInstantiator.java deleted file mode 100644 index 18ca24afe..000000000 --- a/spring-data-commons-core/src/main/java/org/springframework/data/persistence/EntityInstantiator.java +++ /dev/null @@ -1,31 +0,0 @@ -package org.springframework.data.persistence; - -/** - * Interface to be implemented by classes that can instantiate and configure entities. The framework must do this when - * creating objects resulting from finders, even when there may be no no-arg constructor supplied by the user. - * - * @deprecated use {@link org.springframework.data.convert.EntityInstantiator} abstraction instead. - * @author Rod Johnson - */ -@Deprecated -public interface EntityInstantiator { - - /* - * The best solution if available is to add a constructor that takes Node - * to each GraphEntity. This means generating an aspect beside every - * class as Roo presently does. - * - * An alternative that does not require Roo - * is a user-authored constructor taking Node and calling setUnderlyingNode() - * but this is less elegant and pollutes the domain object. - * - * If the user supplies a no-arg constructor, instantiation can occur by invoking it - * prior to calling setUnderlyingNode(). - * - * If the user does NOT supply a no-arg constructor, we must rely on Sun-specific - * code to instantiate entities without invoking a constructor. - */ - - T createEntityFromState(STATE s, Class c); - -} diff --git a/spring-data-commons-core/src/main/java/org/springframework/data/persistence/StateBackedCreator.java b/spring-data-commons-core/src/main/java/org/springframework/data/persistence/StateBackedCreator.java deleted file mode 100644 index ed55d3629..000000000 --- a/spring-data-commons-core/src/main/java/org/springframework/data/persistence/StateBackedCreator.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.springframework.data.persistence; - -import org.springframework.data.convert.EntityInstantiator; - -/** - * encapsulates the instantiator of state-backed classes and populating them with the provided state. - *

- * Can be implemented and registered with the concrete AbstractConstructorEntityInstantiator to provide non reflection - * bases instantiaton for domain classes - * - * @deprecated use {@link EntityInstantiator} abstraction instead. - */ -@Deprecated -public interface StateBackedCreator { - T create(STATE n, Class c) throws Exception; -} diff --git a/spring-data-commons-core/src/main/java/org/springframework/data/persistence/StateProvider.java b/spring-data-commons-core/src/main/java/org/springframework/data/persistence/StateProvider.java deleted file mode 100644 index de0e7d6dc..000000000 --- a/spring-data-commons-core/src/main/java/org/springframework/data/persistence/StateProvider.java +++ /dev/null @@ -1,29 +0,0 @@ -package org.springframework.data.persistence; - -import org.springframework.data.convert.EntityInstantiator; - -/** - * @author Michael Hunger - * @since 24.09.2010 - * @deprecated use {@link EntityInstantiator} abstraction instead - */ -@Deprecated -public abstract class StateProvider { - private final static ThreadLocal stateHolder = new ThreadLocal(); - - private StateProvider() { - } - - public static void setUnderlyingState(STATE state) { - if (stateHolder.get() != null) - throw new IllegalStateException("StateHolder already contains state " + stateHolder.get() + " in thread " - + Thread.currentThread()); - stateHolder.set(state); - } - - public static STATE retrieveState() { - STATE result = (STATE) stateHolder.get(); - stateHolder.remove(); - return result; - } -} diff --git a/spring-data-commons-core/src/main/java/org/springframework/data/persistence/package-info.java b/spring-data-commons-core/src/main/java/org/springframework/data/persistence/package-info.java deleted file mode 100644 index 8966054f3..000000000 --- a/spring-data-commons-core/src/main/java/org/springframework/data/persistence/package-info.java +++ /dev/null @@ -1,6 +0,0 @@ -/** - * Deprecated entity instantiation API. - * - * @deprecated Use entity instantation API around {@link org.springframework.data.convert.EntityInstantiator} instead. - */ -package org.springframework.data.persistence; \ No newline at end of file