From 6c698e935eba97e4c687c0cbd1b515d369e79925 Mon Sep 17 00:00:00 2001 From: bancika Date: Tue, 21 Aug 2012 14:16:19 +0000 Subject: [PATCH] Replaced deep cloning library with manual implementation --- .../diylc-core/.classpath | 6 +--- .../diylc-core/lib/cloning-1.8.1.jar | Bin 20827 -> 0 bytes .../diylc-core/lib/objenesis-1.2.jar | Bin 36046 -> 0 bytes .../src/org/diylc/common/PropertyWrapper.java | 31 ++++++++++++------ .../diylc/components/AbstractComponent.java | 4 +-- .../diylc/presenter/ComponentProcessor.java | 21 ++++++++---- .../diylc/presenter/InstantiationManager.java | 7 +--- 7 files changed, 38 insertions(+), 31 deletions(-) delete mode 100644 diy-layout-creator --username bancika@gmail.com/diylc-core/lib/cloning-1.8.1.jar delete mode 100644 diy-layout-creator --username bancika@gmail.com/diylc-core/lib/objenesis-1.2.jar diff --git a/ diy-layout-creator --username bancika@gmail.com/diylc-core/.classpath b/ diy-layout-creator --username bancika@gmail.com/diylc-core/.classpath index 5b6fba27..0d4ad847 100644 --- a/ diy-layout-creator --username bancika@gmail.com/diylc-core/.classpath +++ b/ diy-layout-creator --username bancika@gmail.com/diylc-core/.classpath @@ -6,12 +6,8 @@ - - - - - + diff --git a/ diy-layout-creator --username bancika@gmail.com/diylc-core/lib/cloning-1.8.1.jar b/ diy-layout-creator --username bancika@gmail.com/diylc-core/lib/cloning-1.8.1.jar deleted file mode 100644 index ebd2d8c24d075cfaa354077f1e9cac9e79793aa6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20827 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 diff --git a/ diy-layout-creator --username bancika@gmail.com/diylc-core/src/org/diylc/common/PropertyWrapper.java b/ diy-layout-creator --username bancika@gmail.com/diylc-core/src/org/diylc/common/PropertyWrapper.java index d07af5f4..31e5384d 100644 --- a/ diy-layout-creator --username bancika@gmail.com/diylc-core/src/org/diylc/common/PropertyWrapper.java +++ b/ diy-layout-creator --username bancika@gmail.com/diylc-core/src/org/diylc/common/PropertyWrapper.java @@ -22,8 +22,8 @@ public class PropertyWrapper implements Cloneable { private boolean unique = true; private boolean changed = false; - public PropertyWrapper(String name, Class type, String getter, String setter, - boolean defaultable, IPropertyValidator validator) { + public PropertyWrapper(String name, Class type, String getter, + String setter, boolean defaultable, IPropertyValidator validator) { super(); this.name = name; this.type = type; @@ -33,8 +33,9 @@ public class PropertyWrapper implements Cloneable { this.validator = validator; } - public void readFrom(Object object) throws IllegalArgumentException, IllegalAccessException, - InvocationTargetException, SecurityException, NoSuchMethodException { + public void readFrom(Object object) throws IllegalArgumentException, + IllegalAccessException, InvocationTargetException, + SecurityException, NoSuchMethodException { this.value = object.getClass().getMethod(getter).invoke(object); } @@ -47,8 +48,9 @@ public class PropertyWrapper implements Cloneable { // } // } - public void writeTo(Object object) throws IllegalArgumentException, IllegalAccessException, - InvocationTargetException, SecurityException, NoSuchMethodException { + public void writeTo(Object object) throws IllegalArgumentException, + IllegalAccessException, InvocationTargetException, + SecurityException, NoSuchMethodException { object.getClass().getMethod(setter, type).invoke(object, this.value); } @@ -75,19 +77,19 @@ public class PropertyWrapper implements Cloneable { public IPropertyValidator getValidator() { return validator; } - + public boolean isUnique() { return unique; } - + public void setUnique(boolean unique) { this.unique = unique; } - + public boolean isChanged() { return changed; } - + public void setChanged(boolean changed) { this.changed = changed; } @@ -102,6 +104,15 @@ public class PropertyWrapper implements Cloneable { // } // return new Property(name, type, value); // } + @Override + public Object clone() throws CloneNotSupportedException { + PropertyWrapper clone = new PropertyWrapper(this.name, this.type, this.getter, + this.setter, this.defaultable, this.validator); + clone.value = this.value; + clone.changed = this.changed; + clone.unique = this.unique; + return clone; + } @Override public int hashCode() { diff --git a/ diy-layout-creator --username bancika@gmail.com/diylc-core/src/org/diylc/components/AbstractComponent.java b/ diy-layout-creator --username bancika@gmail.com/diylc-core/src/org/diylc/components/AbstractComponent.java index 90b84bf4..1dfb2987 100644 --- a/ diy-layout-creator --username bancika@gmail.com/diylc-core/src/org/diylc/components/AbstractComponent.java +++ b/ diy-layout-creator --username bancika@gmail.com/diylc-core/src/org/diylc/components/AbstractComponent.java @@ -18,8 +18,6 @@ import org.diylc.common.VerticalAlignment; import org.diylc.core.IDIYComponent; import org.diylc.core.annotations.EditableProperty; -import com.rits.cloning.CloningException; - /** * Abstract implementation of {@link IDIYComponent} that contains component name * and toString. @@ -177,7 +175,7 @@ public abstract class AbstractComponent implements IDIYComponent { } return newInstance; } catch (Exception e) { - throw new CloningException("Could not clone the component", e); + throw new CloneNotSupportedException("Could not clone the component. Reason: " + e.getMessage()); } } } diff --git a/ diy-layout-creator --username bancika@gmail.com/diylc-core/src/org/diylc/presenter/ComponentProcessor.java b/ diy-layout-creator --username bancika@gmail.com/diylc-core/src/org/diylc/presenter/ComponentProcessor.java index d99018da..1050b478 100644 --- a/ diy-layout-creator --username bancika@gmail.com/diylc-core/src/org/diylc/presenter/ComponentProcessor.java +++ b/ diy-layout-creator --username bancika@gmail.com/diylc-core/src/org/diylc/presenter/ComponentProcessor.java @@ -24,8 +24,6 @@ import org.diylc.core.annotations.BomPolicy; import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.annotations.EditableProperty; -import com.rits.cloning.Cloner; - /** * Utility class with component processing methods. * @@ -42,8 +40,6 @@ public class ComponentProcessor { private Map propertyValidatorCache; private Map componentTypeMap; - private Cloner cloner; - public static ComponentProcessor getInstance() { if (instance == null) { instance = new ComponentProcessor(); @@ -53,7 +49,6 @@ public class ComponentProcessor { private ComponentProcessor() { super(); - this.cloner = new Cloner(); this.propertyCache = new HashMap>(); this.componentTypeMap = new HashMap(); this.propertyValidatorCache = new HashMap(); @@ -132,7 +127,7 @@ public class ComponentProcessor { */ public List extractProperties(Class clazz) { if (propertyCache.containsKey(clazz.getName())) { - return cloner.deepClone(propertyCache.get(clazz.getName())); + return cloneProperties(propertyCache.get(clazz.getName())); } List properties = new ArrayList(); for (Method method : clazz.getMethods()) { @@ -167,7 +162,19 @@ public class ComponentProcessor { } propertyCache.put(clazz.getName(), properties); - return cloner.deepClone(properties); + return cloneProperties(properties); + } + + private List cloneProperties(List properties) { + List result = new ArrayList(properties.size()); + for (PropertyWrapper propertyWrapper : properties) { + try { + result.add((PropertyWrapper) propertyWrapper.clone()); + } catch (CloneNotSupportedException e) { + throw new RuntimeException(e); + } + } + return result; } /** diff --git a/ diy-layout-creator --username bancika@gmail.com/diylc-core/src/org/diylc/presenter/InstantiationManager.java b/ diy-layout-creator --username bancika@gmail.com/diylc-core/src/org/diylc/presenter/InstantiationManager.java index bcbb3dec..a4ef95a2 100644 --- a/ diy-layout-creator --username bancika@gmail.com/diylc-core/src/org/diylc/presenter/InstantiationManager.java +++ b/ diy-layout-creator --username bancika@gmail.com/diylc-core/src/org/diylc/presenter/InstantiationManager.java @@ -16,8 +16,6 @@ import org.diylc.core.IDIYComponent; import org.diylc.core.Project; import org.diylc.core.measures.Size; -import com.rits.cloning.Cloner; - /** * Manages component instantiation. * @@ -30,15 +28,12 @@ public class InstantiationManager { public static int MAX_RECENT_COMPONENTS = 16; - private Cloner cloner; - private ComponentType componentTypeSlot; private IDIYComponent componentSlot; private Point firstControlPoint; private Point potentialControlPoint; public InstantiationManager() { - cloner = new Cloner(); } public ComponentType getComponentTypeSlot() { @@ -227,7 +222,7 @@ public class InstantiationManager { + object.getClass().getName() + ":" + property.getName(), null); if (defaultValue != null) { - property.setValue(cloner.deepClone(defaultValue)); + property.setValue(defaultValue); property.writeTo(object); } }