@Override public String toString() { return getChanges() != null ? getChanges().toString() : "[]"; }
@SuppressWarnings("unchecked") private ChangeSet internalBuildChangeSet(Map<Object, Map<String, Object>> savedProperties) { ChangeSet changeSet = new ChangeSet(new Change[0], local); Map<Object, Object> changeMap = new IdentityHashMap<Object, Object>(); Change[] changes = new Change[changeSet.getChanges().length+1]; System.arraycopy(changeSet.getChanges(), 0, changes, 0, changeSet.getChanges().length); changes[changeSet.getChanges().length] = change; changeSet.setChanges(changes);
if (changeSet instanceof ChangeSet && ((ChangeSet)changeSet).isLocal()) next = changeSet; Change[] changes = changeSet instanceof ChangeSet ? ((ChangeSet)changeSet).getChanges() : new Change[] { (Change)changeSet }; boolean local = changeSet instanceof ChangeSet ? ((ChangeSet)changeSet).isLocal() : ((Change)changeSet).isLocal();
@Override public String toString() { return getChanges() != null ? getChanges().toString() : "[]"; }
@Override public String toString() { return getChanges() != null ? getChanges().toString() : "[]"; }
public Object[] applyChanges(ChangeSet changeSet) { Set<Object> cache = new HashSet<Object>(); Object[] appliedChanges = new Object[changeSet.getChanges().length]; for (int i = 0; i < changeSet.getChanges().length; i++) appliedChanges[i] = applyChange(changeSet.getChanges()[i], cache); return appliedChanges; }
@Override protected boolean internalCanConvert(Object value, Type targetType) { if (value instanceof ChangeSet && targetType instanceof Class<?>) { if (((ChangeSet)value).getChanges() == null || ((ChangeSet)value).getChanges().length == 0) throw new IllegalArgumentException("Incoming ChangeSet objects must contain at least one Change"); String className = ((ChangeSet)value).getChanges()[0].getClassName(); try { Class<?> clazz = TypeUtil.forName(className); return ((Class<?>)targetType).isAssignableFrom(clazz); } catch (ClassNotFoundException e) { throw new RuntimeException("Cannot find class for ChangeSet argument " + className); } } return false; }
public Object invoke(Object object, Method method, Method method1, Object[] args) throws Exception { String name = method.getName(); if ("toString".equals(name)) { return changeSet.getChanges()[0].getClassName() + "@" + System.identityHashCode(object); } else if ("equals".equals(name)) { return proxyObject == object; } else if ("hashCode".equals(name)) { return System.identityHashCode(object); } else if ("getChangeSetProxyData".equals(name) && method.getParameterTypes().length == 0) { return changeSet; } return null; } }
for (int i = 0; i < changeSet.getChanges().length; i++) { if (isForEntity(changeSet.getChanges()[i], entity)) { pos = i; break; Change change = changeSet.getChanges()[pos]; System.arraycopy(changeSet.getChanges(), 0, changeSet.getChanges(), 1, pos); changeSet.getChanges()[0] = change;
@Override protected Object internalConvert(Object value, Type targetType) { ChangeSet changeSet = (ChangeSet)value; String className = changeSet.getChanges()[0].getClassName(); try { Class<?> clazz = TypeUtil.forName(className); Class<?> proxyClass = proxyClasses.get(clazz); if (proxyClass == null) { ProxyFactory proxyFactory = new ProxyFactory(); proxyFactory.setFilter(FINALIZE_FILTER); proxyFactory.setSuperclass(clazz); proxyFactory.setInterfaces(new Class<?>[] { ChangeSetProxy.class }); proxyClass = proxyFactory.createClass(); proxyClasses.put(clazz, proxyClass); } ProxyObject proxyObject = (ProxyObject)proxyClass.newInstance(); proxyObject.setHandler(new ChangeSetProxyHandler(proxyObject, changeSet)); return proxyObject; } catch (Exception e) { throw new RuntimeException("Cannot build proxy for Change argument " + className); } }