diff --git a/src/main/java/com/avaje/ebeaninternal/server/transaction/AutoCommitTransactionManager.java b/src/main/java/com/avaje/ebeaninternal/server/transaction/AutoCommitTransactionManager.java
index ede0fce79..11f423800 100644
--- a/src/main/java/com/avaje/ebeaninternal/server/transaction/AutoCommitTransactionManager.java
+++ b/src/main/java/com/avaje/ebeaninternal/server/transaction/AutoCommitTransactionManager.java
@@ -1,7 +1,5 @@
package com.avaje.ebeaninternal.server.transaction;
-import java.sql.Connection;
-
import com.avaje.ebean.BackgroundExecutor;
import com.avaje.ebean.config.ServerConfig;
import com.avaje.ebeaninternal.api.SpiTransaction;
@@ -9,6 +7,8 @@ import com.avaje.ebeaninternal.server.cluster.ClusterManager;
import com.avaje.ebeaninternal.server.core.BootupClasses;
import com.avaje.ebeaninternal.server.deploy.BeanDescriptorManager;
+import java.sql.Connection;
+
/**
* AutoCommit based TransactionManager.
*
@@ -17,8 +17,8 @@ import com.avaje.ebeaninternal.server.deploy.BeanDescriptorManager;
public class AutoCommitTransactionManager extends TransactionManager {
public AutoCommitTransactionManager(ClusterManager clusterManager, BackgroundExecutor backgroundExecutor,
- ServerConfig config, BeanDescriptorManager descMgr, BootupClasses bootupClasses) {
-
+ ServerConfig config, BeanDescriptorManager descMgr, BootupClasses bootupClasses) {
+
super(clusterManager, backgroundExecutor, config, descMgr, bootupClasses);
}
@@ -27,10 +27,8 @@ public class AutoCommitTransactionManager extends TransactionManager {
*/
@Override
protected SpiTransaction createTransaction(boolean explicit, Connection c, long id) {
-
+
return new AutoCommitJdbcTransaction(prefix + id, explicit, c, this);
}
-
-
}
diff --git a/src/main/java/com/avaje/ebeaninternal/server/transaction/BeanDelta.java b/src/main/java/com/avaje/ebeaninternal/server/transaction/BeanDelta.java
index 28e2bc2aa..21cb60eae 100644
--- a/src/main/java/com/avaje/ebeaninternal/server/transaction/BeanDelta.java
+++ b/src/main/java/com/avaje/ebeaninternal/server/transaction/BeanDelta.java
@@ -1,11 +1,5 @@
package com.avaje.ebeaninternal.server.transaction;
-import java.io.DataInput;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
import com.avaje.ebean.bean.EntityBean;
import com.avaje.ebeaninternal.api.SpiEbeanServer;
import com.avaje.ebeaninternal.server.cluster.BinaryMessage;
@@ -13,86 +7,92 @@ import com.avaje.ebeaninternal.server.cluster.BinaryMessageList;
import com.avaje.ebeaninternal.server.deploy.BeanDescriptor;
import com.avaje.ebeaninternal.server.deploy.BeanProperty;
+import java.io.DataInput;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
public class BeanDelta {
- private final List properties;
-
- private final BeanDescriptor> beanDescriptor;
-
- private final Object id;
-
- public BeanDelta(BeanDescriptor> beanDescriptor, Object id) {
- this.beanDescriptor = beanDescriptor;
- this.id = id;
- this.properties = new ArrayList();
+ private final List properties;
+
+ private final BeanDescriptor> beanDescriptor;
+
+ private final Object id;
+
+ public BeanDelta(BeanDescriptor> beanDescriptor, Object id) {
+ this.beanDescriptor = beanDescriptor;
+ this.id = id;
+ this.properties = new ArrayList();
+ }
+
+ public BeanDescriptor> getBeanDescriptor() {
+ return beanDescriptor;
+ }
+
+ public String toString() {
+ return "BeanDelta[" + beanDescriptor.getName() + ":" + properties + "]";
+ }
+
+ public Object getId() {
+ return id;
+ }
+
+ public void add(BeanProperty beanProperty, Object value) {
+ this.properties.add(new BeanDeltaProperty(beanProperty, value));
+ }
+
+ public void add(BeanDeltaProperty propertyDelta) {
+ this.properties.add(propertyDelta);
+ }
+
+ public void apply(EntityBean bean) {
+
+ for (int i = 0; i < properties.size(); i++) {
+ properties.get(i).apply(bean);
}
-
- public BeanDescriptor> getBeanDescriptor() {
- return beanDescriptor;
+ }
+
+ /**
+ * Read and return a BeanDelta from the binary input.
+ */
+ public static BeanDelta readBinaryMessage(SpiEbeanServer server, DataInput dataInput) throws IOException {
+
+ String descriptorId = dataInput.readUTF();
+ BeanDescriptor> desc = server.getBeanDescriptorById(descriptorId);
+ Object id = desc.getIdBinder().readData(dataInput);
+ BeanDelta bp = new BeanDelta(desc, id);
+
+ int count = dataInput.readInt();
+ for (int i = 0; i < count; i++) {
+ String propName = dataInput.readUTF();
+ BeanProperty beanProperty = desc.getBeanProperty(propName);
+ Object value = beanProperty.getScalarType().readData(dataInput);
+ bp.add(beanProperty, value);
}
-
- public String toString() {
- return "BeanDelta[" + beanDescriptor.getName() + ":" + properties + "]";
+ return bp;
+ }
+
+ /**
+ * Write this bean delta in binary message format.
+ */
+ public void writeBinaryMessage(BinaryMessageList msgList) throws IOException {
+
+ BinaryMessage m = new BinaryMessage(50);
+
+ DataOutputStream os = m.getOs();
+ os.writeInt(BinaryMessage.TYPE_BEANDELTA);
+ os.writeUTF(beanDescriptor.getDescriptorId());
+
+ beanDescriptor.getIdBinder().writeData(os, id);
+ os.writeInt(properties.size());
+
+ for (int i = 0; i < properties.size(); i++) {
+ properties.get(i).writeBinaryMessage(m);
}
- public Object getId() {
- return id;
- }
-
- public void add(BeanProperty beanProperty, Object value) {
- this.properties.add(new BeanDeltaProperty(beanProperty, value));
- }
-
- public void add(BeanDeltaProperty propertyDelta) {
- this.properties.add(propertyDelta);
- }
-
- public void apply(EntityBean bean) {
-
- for (int i = 0; i < properties.size(); i++) {
- properties.get(i).apply(bean);
- }
- }
-
- /**
- * Read and return a BeanDelta from the binary input.
- */
- public static BeanDelta readBinaryMessage(SpiEbeanServer server, DataInput dataInput) throws IOException {
-
- String descriptorId = dataInput.readUTF();
- BeanDescriptor> desc = server.getBeanDescriptorById(descriptorId);
- Object id = desc.getIdBinder().readData(dataInput);
- BeanDelta bp = new BeanDelta(desc, id);
-
- int count = dataInput.readInt();
- for (int i = 0; i < count; i++) {
- String propName = dataInput.readUTF();
- BeanProperty beanProperty = desc.getBeanProperty(propName);
- Object value = beanProperty.getScalarType().readData(dataInput);
- bp.add(beanProperty, value);
- }
- return bp;
- }
-
- /**
- * Write this bean delta in binary message format.
- */
- public void writeBinaryMessage(BinaryMessageList msgList) throws IOException {
-
- BinaryMessage m = new BinaryMessage(50);
-
- DataOutputStream os = m.getOs();
- os.writeInt(BinaryMessage.TYPE_BEANDELTA);
- os.writeUTF(beanDescriptor.getDescriptorId());
-
- beanDescriptor.getIdBinder().writeData(os, id);
- os.writeInt(properties.size());
-
- for (int i = 0; i < properties.size(); i++) {
- properties.get(i).writeBinaryMessage(m);
- }
-
- os.flush();
- msgList.add(m);
- }
+ os.flush();
+ msgList.add(m);
+ }
}
diff --git a/src/main/java/com/avaje/ebeaninternal/server/transaction/BeanDeltaList.java b/src/main/java/com/avaje/ebeaninternal/server/transaction/BeanDeltaList.java
index 6b6dccca7..d3954da85 100644
--- a/src/main/java/com/avaje/ebeaninternal/server/transaction/BeanDeltaList.java
+++ b/src/main/java/com/avaje/ebeaninternal/server/transaction/BeanDeltaList.java
@@ -1,42 +1,42 @@
package com.avaje.ebeaninternal.server.transaction;
+import com.avaje.ebeaninternal.server.cluster.BinaryMessageList;
+import com.avaje.ebeaninternal.server.deploy.BeanDescriptor;
+
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
-import com.avaje.ebeaninternal.server.cluster.BinaryMessageList;
-import com.avaje.ebeaninternal.server.deploy.BeanDescriptor;
-
public class BeanDeltaList {
- private final BeanDescriptor> beanDescriptor;
-
- private final List deltaBeans = new ArrayList();
+ private final BeanDescriptor> beanDescriptor;
- public BeanDeltaList(BeanDescriptor> beanDescriptor) {
- this.beanDescriptor = beanDescriptor;
- }
+ private final List deltaBeans = new ArrayList();
- public String toString() {
- return deltaBeans.toString();
- }
-
- public BeanDescriptor> getBeanDescriptor() {
- return beanDescriptor;
- }
+ public BeanDeltaList(BeanDescriptor> beanDescriptor) {
+ this.beanDescriptor = beanDescriptor;
+ }
- public void add(BeanDelta b) {
- deltaBeans.add(b);
- }
-
- public List getDeltaBeans() {
- return deltaBeans;
- }
+ public String toString() {
+ return deltaBeans.toString();
+ }
- public void writeBinaryMessage(BinaryMessageList msgList) throws IOException {
- for (int i = 0; i < deltaBeans.size(); i++) {
- deltaBeans.get(i).writeBinaryMessage(msgList);
- }
+ public BeanDescriptor> getBeanDescriptor() {
+ return beanDescriptor;
+ }
+
+ public void add(BeanDelta b) {
+ deltaBeans.add(b);
+ }
+
+ public List getDeltaBeans() {
+ return deltaBeans;
+ }
+
+ public void writeBinaryMessage(BinaryMessageList msgList) throws IOException {
+ for (int i = 0; i < deltaBeans.size(); i++) {
+ deltaBeans.get(i).writeBinaryMessage(msgList);
}
-
+ }
+
}
diff --git a/src/main/java/com/avaje/ebeaninternal/server/transaction/BeanDeltaMap.java b/src/main/java/com/avaje/ebeaninternal/server/transaction/BeanDeltaMap.java
index 7429081ee..e5282d049 100644
--- a/src/main/java/com/avaje/ebeaninternal/server/transaction/BeanDeltaMap.java
+++ b/src/main/java/com/avaje/ebeaninternal/server/transaction/BeanDeltaMap.java
@@ -1,48 +1,48 @@
package com.avaje.ebeaninternal.server.transaction;
+import com.avaje.ebeaninternal.server.deploy.BeanDescriptor;
+
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import com.avaje.ebeaninternal.server.deploy.BeanDescriptor;
-
public class BeanDeltaMap {
- private final Map deltaMap = new HashMap();
+ private final Map deltaMap = new HashMap();
- public BeanDeltaMap() {
+ public BeanDeltaMap() {
+ }
+
+ public BeanDeltaMap(List deltaBeans) {
+ if (deltaBeans != null) {
+ for (int i = 0; i < deltaBeans.size(); i++) {
+ BeanDelta deltaBean = deltaBeans.get(i);
+ addBeanDelta(deltaBean);
+ }
}
-
- public BeanDeltaMap(List deltaBeans) {
- if (deltaBeans != null){
- for (int i = 0; i < deltaBeans.size(); i++) {
- BeanDelta deltaBean = deltaBeans.get(i);
- addBeanDelta(deltaBean);
- }
- }
- }
-
- public String toString() {
- return deltaMap.values().toString();
- }
-
- public void addBeanDelta(BeanDelta beanDelta){
- BeanDescriptor> d = beanDelta.getBeanDescriptor();
- BeanDeltaList list = getDeltaBeanList(d);
- list.add(beanDelta);
- }
-
- public Collection deltaLists() {
- return deltaMap.values();
- }
-
- private BeanDeltaList getDeltaBeanList(BeanDescriptor> d) {
- BeanDeltaList deltaList = deltaMap.get(d.getFullName());
- if (deltaList == null){
- deltaList = new BeanDeltaList(d);
- deltaMap.put(d.getFullName(), deltaList);
- }
- return deltaList;
+ }
+
+ public String toString() {
+ return deltaMap.values().toString();
+ }
+
+ public void addBeanDelta(BeanDelta beanDelta) {
+ BeanDescriptor> d = beanDelta.getBeanDescriptor();
+ BeanDeltaList list = getDeltaBeanList(d);
+ list.add(beanDelta);
+ }
+
+ public Collection deltaLists() {
+ return deltaMap.values();
+ }
+
+ private BeanDeltaList getDeltaBeanList(BeanDescriptor> d) {
+ BeanDeltaList deltaList = deltaMap.get(d.getFullName());
+ if (deltaList == null) {
+ deltaList = new BeanDeltaList(d);
+ deltaMap.put(d.getFullName(), deltaList);
}
+ return deltaList;
+ }
}
diff --git a/src/main/java/com/avaje/ebeaninternal/server/transaction/BeanDeltaProperty.java b/src/main/java/com/avaje/ebeaninternal/server/transaction/BeanDeltaProperty.java
index eb078a370..2892832e4 100644
--- a/src/main/java/com/avaje/ebeaninternal/server/transaction/BeanDeltaProperty.java
+++ b/src/main/java/com/avaje/ebeaninternal/server/transaction/BeanDeltaProperty.java
@@ -1,12 +1,12 @@
package com.avaje.ebeaninternal.server.transaction;
-import java.io.DataOutputStream;
-import java.io.IOException;
-
import com.avaje.ebean.bean.EntityBean;
import com.avaje.ebeaninternal.server.cluster.BinaryMessage;
import com.avaje.ebeaninternal.server.deploy.BeanProperty;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
public class BeanDeltaProperty {
private final BeanProperty beanProperty;
diff --git a/src/main/java/com/avaje/ebeaninternal/server/transaction/BeanPersistIdMap.java b/src/main/java/com/avaje/ebeaninternal/server/transaction/BeanPersistIdMap.java
index b92ed0e6d..adc4180d2 100644
--- a/src/main/java/com/avaje/ebeaninternal/server/transaction/BeanPersistIdMap.java
+++ b/src/main/java/com/avaje/ebeaninternal/server/transaction/BeanPersistIdMap.java
@@ -1,50 +1,50 @@
package com.avaje.ebeaninternal.server.transaction;
+import com.avaje.ebeaninternal.server.core.PersistRequest;
+import com.avaje.ebeaninternal.server.deploy.BeanDescriptor;
+
import java.io.Serializable;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;
-import com.avaje.ebeaninternal.server.core.PersistRequest;
-import com.avaje.ebeaninternal.server.deploy.BeanDescriptor;
-
/**
* Organises the individual bean persist requests by type.
*/
public final class BeanPersistIdMap {
- private final Map beanMap = new LinkedHashMap();
-
- public String toString() {
- return beanMap.toString();
- }
+ private final Map beanMap = new LinkedHashMap();
- public boolean isEmpty() {
- return beanMap.isEmpty();
- }
+ public String toString() {
+ return beanMap.toString();
+ }
- public Collection values() {
- return beanMap.values();
- }
-
- /**
- * Add a Insert Update or Delete payload.
- */
- public void add(BeanDescriptor> desc, PersistRequest.Type type, Object id) {
-
- BeanPersistIds r = getPersistIds(desc);
- r.addId(type, (Serializable)id);
- }
-
- private BeanPersistIds getPersistIds(BeanDescriptor> desc) {
- String beanType = desc.getFullName();
- BeanPersistIds r = beanMap.get(beanType);
- if (r == null){
- r = new BeanPersistIds(desc);
- beanMap.put(beanType, r);
- }
- return r;
+ public boolean isEmpty() {
+ return beanMap.isEmpty();
+ }
+
+ public Collection values() {
+ return beanMap.values();
+ }
+
+ /**
+ * Add a Insert Update or Delete payload.
+ */
+ public void add(BeanDescriptor> desc, PersistRequest.Type type, Object id) {
+
+ BeanPersistIds r = getPersistIds(desc);
+ r.addId(type, (Serializable) id);
+ }
+
+ private BeanPersistIds getPersistIds(BeanDescriptor> desc) {
+ String beanType = desc.getFullName();
+ BeanPersistIds r = beanMap.get(beanType);
+ if (r == null) {
+ r = new BeanPersistIds(desc);
+ beanMap.put(beanType, r);
}
+ return r;
+ }
+
-
}
diff --git a/src/main/java/com/avaje/ebeaninternal/server/transaction/BeanPersistIds.java b/src/main/java/com/avaje/ebeaninternal/server/transaction/BeanPersistIds.java
index c0cfcefac..aab9156a3 100644
--- a/src/main/java/com/avaje/ebeaninternal/server/transaction/BeanPersistIds.java
+++ b/src/main/java/com/avaje/ebeaninternal/server/transaction/BeanPersistIds.java
@@ -1,12 +1,5 @@
package com.avaje.ebeaninternal.server.transaction;
-import java.io.DataInput;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-
import com.avaje.ebean.event.BeanPersistListener;
import com.avaje.ebeaninternal.api.SpiEbeanServer;
import com.avaje.ebeaninternal.server.cluster.BinaryMessage;
@@ -15,6 +8,13 @@ import com.avaje.ebeaninternal.server.core.PersistRequest;
import com.avaje.ebeaninternal.server.deploy.BeanDescriptor;
import com.avaje.ebeaninternal.server.deploy.id.IdBinder;
+import java.io.DataInput;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
/**
* Wraps the information representing a Inserted Updated or Deleted Bean.
*
@@ -30,243 +30,243 @@ import com.avaje.ebeaninternal.server.deploy.id.IdBinder;
*/
public class BeanPersistIds implements Serializable {
- private static final long serialVersionUID = 8389469180931531409L;
+ private static final long serialVersionUID = 8389469180931531409L;
- private transient BeanDescriptor> beanDescriptor;
+ private transient BeanDescriptor> beanDescriptor;
- private final String descriptorId;
+ private final String descriptorId;
- private ArrayList insertIds;
- private ArrayList updateIds;
- private ArrayList deleteIds;
+ private ArrayList insertIds;
+ private ArrayList updateIds;
+ private ArrayList deleteIds;
- /**
- * Create the payload.
- */
- public BeanPersistIds(BeanDescriptor> desc) {
- this.beanDescriptor = desc;
- this.descriptorId = desc.getDescriptorId();
+ /**
+ * Create the payload.
+ */
+ public BeanPersistIds(BeanDescriptor> desc) {
+ this.beanDescriptor = desc;
+ this.descriptorId = desc.getDescriptorId();
+ }
+
+ public static BeanPersistIds readBinaryMessage(SpiEbeanServer server, DataInput dataInput) throws IOException {
+
+ String descriptorId = dataInput.readUTF();
+ BeanDescriptor> desc = server.getBeanDescriptorById(descriptorId);
+ BeanPersistIds bp = new BeanPersistIds(desc);
+ bp.read(dataInput);
+ return bp;
+ }
+
+ private void read(DataInput dataInput) throws IOException {
+
+ IdBinder idBinder = beanDescriptor.getIdBinder();
+
+ int iudType = dataInput.readInt();
+ ArrayList idList = readIdList(dataInput, idBinder);
+
+ switch (iudType) {
+ case 0:
+ insertIds = idList;
+ break;
+ case 1:
+ updateIds = idList;
+ break;
+ case 2:
+ deleteIds = idList;
+ break;
+
+ default:
+ throw new RuntimeException("Invalid iudType " + iudType);
}
+ }
- public static BeanPersistIds readBinaryMessage(SpiEbeanServer server, DataInput dataInput) throws IOException {
+ /**
+ * Write the contents into a BinaryMessage form.
+ *
+ * For a RemoteBeanPersist with a large number of id's note that this is
+ * broken up into many BinaryMessages each with a maximum of 100 ids. This
+ * enables the contents of a large RemoteTransactionEvent to be split up
+ * across multiple Packets.
+ *
+ */
+ public void writeBinaryMessage(BinaryMessageList msgList) throws IOException {
- String descriptorId = dataInput.readUTF();
- BeanDescriptor> desc = server.getBeanDescriptorById(descriptorId);
- BeanPersistIds bp = new BeanPersistIds(desc);
- bp.read(dataInput);
- return bp;
+ writeIdList(beanDescriptor, 0, insertIds, msgList);
+ writeIdList(beanDescriptor, 1, updateIds, msgList);
+ writeIdList(beanDescriptor, 2, deleteIds, msgList);
+
+ }
+
+ private ArrayList readIdList(DataInput dataInput, IdBinder idBinder) throws IOException {
+
+ int count = dataInput.readInt();
+ if (count < 1) {
+ return null;
}
-
- private void read(DataInput dataInput) throws IOException {
-
- IdBinder idBinder = beanDescriptor.getIdBinder();
-
- int iudType = dataInput.readInt();
- ArrayList idList = readIdList(dataInput, idBinder);
-
- switch (iudType) {
- case 0:
- insertIds = idList;
- break;
- case 1:
- updateIds = idList;
- break;
- case 2:
- deleteIds = idList;
- break;
-
- default:
- throw new RuntimeException("Invalid iudType "+iudType);
- }
+ ArrayList idList = new ArrayList(count);
+ for (int i = 0; i < count; i++) {
+ Object id = idBinder.readData(dataInput);
+ idList.add((Serializable) id);
}
+ return idList;
+ }
- /**
- * Write the contents into a BinaryMessage form.
- *
- * For a RemoteBeanPersist with a large number of id's note that this is
- * broken up into many BinaryMessages each with a maximum of 100 ids. This
- * enables the contents of a large RemoteTransactionEvent to be split up
- * across multiple Packets.
- *
- */
- public void writeBinaryMessage(BinaryMessageList msgList) throws IOException {
+ /**
+ * Write a BinaryMessage containing the descriptorId, iudType and list of Id
+ * values.
+ *
+ * Note that a given BinaryMessage has a maximum of 100 Ids. This is due to
+ * the limit of UDP packet sizes. We break up the RemoteBeanPersist into
+ * potentially many smaller BinaryMessages which may be put into multiple
+ * Packets.
+ *
+ */
+ private void writeIdList(BeanDescriptor> desc, int iudType, ArrayList idList,
+ BinaryMessageList msgList) throws IOException {
- writeIdList(beanDescriptor, 0, insertIds, msgList);
- writeIdList(beanDescriptor, 1, updateIds, msgList);
- writeIdList(beanDescriptor, 2, deleteIds, msgList);
-
- }
+ IdBinder idBinder = desc.getIdBinder();
- private ArrayList readIdList(DataInput dataInput, IdBinder idBinder) throws IOException {
+ int count = idList == null ? 0 : idList.size();
+ if (count > 0) {
+ int loop = 0;
+ int i = 0;
+ int eof = idList.size();
+ do {
+ ++loop;
+ int endOfLoop = Math.min(eof, loop * 100);
- int count = dataInput.readInt();
- if (count < 1) {
- return null;
- }
- ArrayList idList = new ArrayList(count);
- for (int i = 0; i < count; i++) {
- Object id = idBinder.readData(dataInput);
- idList.add((Serializable) id);
- }
- return idList;
- }
+ BinaryMessage m = new BinaryMessage(endOfLoop * 4 + 20);
- /**
- * Write a BinaryMessage containing the descriptorId, iudType and list of Id
- * values.
- *
- * Note that a given BinaryMessage has a maximum of 100 Ids. This is due to
- * the limit of UDP packet sizes. We break up the RemoteBeanPersist into
- * potentially many smaller BinaryMessages which may be put into multiple
- * Packets.
- *
- */
- private void writeIdList(BeanDescriptor> desc, int iudType, ArrayList idList,
- BinaryMessageList msgList) throws IOException {
+ DataOutputStream os = m.getOs();
+ os.writeInt(BinaryMessage.TYPE_BEANIUD);
+ os.writeUTF(descriptorId);
+ os.writeInt(iudType);
+ os.writeInt(count);
- IdBinder idBinder = desc.getIdBinder();
-
- int count = idList == null ? 0 : idList.size();
- if (count > 0) {
- int loop = 0;
- int i = 0;
- int eof = idList.size();
- do {
- ++loop;
- int endOfLoop = Math.min(eof, loop * 100);
-
- BinaryMessage m = new BinaryMessage(endOfLoop * 4 + 20);
-
- DataOutputStream os = m.getOs();
- os.writeInt(BinaryMessage.TYPE_BEANIUD);
- os.writeUTF(descriptorId);
- os.writeInt(iudType);
- os.writeInt(count);
-
- for (; i < endOfLoop; i++) {
- Serializable idValue = idList.get(i);
- idBinder.writeData(os, idValue);
- }
-
- os.flush();
- msgList.add(m);
-
- } while (i < eof);
- }
- }
-
- public String toString() {
- StringBuilder sb = new StringBuilder();
- if (beanDescriptor != null) {
- sb.append(beanDescriptor.getFullName());
- } else {
- sb.append("descId:").append(descriptorId);
- }
- if (insertIds != null) {
- sb.append(" insertIds:").append(insertIds);
- }
- if (updateIds != null) {
- sb.append(" updateIds:").append(updateIds);
- }
- if (deleteIds != null) {
- sb.append(" deleteIds:").append(deleteIds);
- }
- return sb.toString();
- }
-
- public void addId(PersistRequest.Type type, Serializable id) {
- switch (type) {
- case INSERT:
- addInsertId(id);
- break;
- case UPDATE:
- addUpdateId(id);
- break;
- case DELETE:
- addDeleteId(id);
- break;
-
- default:
- break;
- }
- }
-
- private void addInsertId(Serializable id) {
- if (insertIds == null) {
- insertIds = new ArrayList();
- }
- insertIds.add(id);
- }
-
- private void addUpdateId(Serializable id) {
- if (updateIds == null) {
- updateIds = new ArrayList();
- }
- updateIds.add(id);
- }
-
- private void addDeleteId(Serializable id) {
- if (deleteIds == null) {
- deleteIds = new ArrayList();
- }
- deleteIds.add(id);
- }
-
- public BeanDescriptor> getBeanDescriptor() {
- return beanDescriptor;
- }
-
- public List getDeleteIds() {
- return deleteIds;
- }
-
- public void setBeanDescriptor(BeanDescriptor> beanDescriptor) {
- this.beanDescriptor = beanDescriptor;
- }
-
- /**
- * Notify the cache and local BeanPersistListener of this event that came
- * from another server in the cluster.
- */
- public void notifyCacheAndListener() {
-
- BeanPersistListener listener = beanDescriptor.getPersistListener();
-
- // any change invalidates the query cache
- beanDescriptor.queryCacheClear();
-
- if (insertIds != null) {
- if (listener != null) {
- // notify listener
- for (int i = 0; i < insertIds.size(); i++) {
- listener.remoteInsert(insertIds.get(i));
- }
- }
- }
- if (updateIds != null) {
- for (int i = 0; i < updateIds.size(); i++) {
- Serializable id = updateIds.get(i);
-
- // remove from cache
- beanDescriptor.cacheBeanRemove(id);
- if (listener != null) {
- // notify listener
- listener.remoteInsert(id);
- }
- }
- }
- if (deleteIds != null) {
- for (int i = 0; i < deleteIds.size(); i++) {
- Serializable id = deleteIds.get(i);
-
- // remove from cache
- beanDescriptor.cacheBeanRemove(id);
- if (listener != null) {
- // notify listener
- listener.remoteInsert(id);
- }
- }
+ for (; i < endOfLoop; i++) {
+ Serializable idValue = idList.get(i);
+ idBinder.writeData(os, idValue);
}
+ os.flush();
+ msgList.add(m);
+
+ } while (i < eof);
}
+ }
+
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ if (beanDescriptor != null) {
+ sb.append(beanDescriptor.getFullName());
+ } else {
+ sb.append("descId:").append(descriptorId);
+ }
+ if (insertIds != null) {
+ sb.append(" insertIds:").append(insertIds);
+ }
+ if (updateIds != null) {
+ sb.append(" updateIds:").append(updateIds);
+ }
+ if (deleteIds != null) {
+ sb.append(" deleteIds:").append(deleteIds);
+ }
+ return sb.toString();
+ }
+
+ public void addId(PersistRequest.Type type, Serializable id) {
+ switch (type) {
+ case INSERT:
+ addInsertId(id);
+ break;
+ case UPDATE:
+ addUpdateId(id);
+ break;
+ case DELETE:
+ addDeleteId(id);
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ private void addInsertId(Serializable id) {
+ if (insertIds == null) {
+ insertIds = new ArrayList();
+ }
+ insertIds.add(id);
+ }
+
+ private void addUpdateId(Serializable id) {
+ if (updateIds == null) {
+ updateIds = new ArrayList();
+ }
+ updateIds.add(id);
+ }
+
+ private void addDeleteId(Serializable id) {
+ if (deleteIds == null) {
+ deleteIds = new ArrayList();
+ }
+ deleteIds.add(id);
+ }
+
+ public BeanDescriptor> getBeanDescriptor() {
+ return beanDescriptor;
+ }
+
+ public List getDeleteIds() {
+ return deleteIds;
+ }
+
+ public void setBeanDescriptor(BeanDescriptor> beanDescriptor) {
+ this.beanDescriptor = beanDescriptor;
+ }
+
+ /**
+ * Notify the cache and local BeanPersistListener of this event that came
+ * from another server in the cluster.
+ */
+ public void notifyCacheAndListener() {
+
+ BeanPersistListener listener = beanDescriptor.getPersistListener();
+
+ // any change invalidates the query cache
+ beanDescriptor.queryCacheClear();
+
+ if (insertIds != null) {
+ if (listener != null) {
+ // notify listener
+ for (int i = 0; i < insertIds.size(); i++) {
+ listener.remoteInsert(insertIds.get(i));
+ }
+ }
+ }
+ if (updateIds != null) {
+ for (int i = 0; i < updateIds.size(); i++) {
+ Serializable id = updateIds.get(i);
+
+ // remove from cache
+ beanDescriptor.cacheBeanRemove(id);
+ if (listener != null) {
+ // notify listener
+ listener.remoteInsert(id);
+ }
+ }
+ }
+ if (deleteIds != null) {
+ for (int i = 0; i < deleteIds.size(); i++) {
+ Serializable id = deleteIds.get(i);
+
+ // remove from cache
+ beanDescriptor.cacheBeanRemove(id);
+ if (listener != null) {
+ // notify listener
+ listener.remoteInsert(id);
+ }
+ }
+ }
+
+ }
}
diff --git a/src/main/java/com/avaje/ebeaninternal/server/transaction/BulkEventListenerMap.java b/src/main/java/com/avaje/ebeaninternal/server/transaction/BulkEventListenerMap.java
index 0e299bc9e..c82d8aac6 100644
--- a/src/main/java/com/avaje/ebeaninternal/server/transaction/BulkEventListenerMap.java
+++ b/src/main/java/com/avaje/ebeaninternal/server/transaction/BulkEventListenerMap.java
@@ -1,62 +1,63 @@
package com.avaje.ebeaninternal.server.transaction;
+import com.avaje.ebean.event.BulkTableEvent;
+import com.avaje.ebean.event.BulkTableEventListener;
+
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Set;
-import com.avaje.ebean.event.BulkTableEvent;
-import com.avaje.ebean.event.BulkTableEventListener;
-
public class BulkEventListenerMap {
- private final HashMap map = new HashMap();
-
- public BulkEventListenerMap(List listeners) {
-
- if (listeners != null) {
- for (BulkTableEventListener l : listeners) {
- Set tables = l.registeredTables();
- for (String tableName : tables) {
- register(tableName, l);
- }
- }
- }
- }
-
- public boolean isEmpty() {
- return map.isEmpty();
- }
-
- public void process(BulkTableEvent event) {
-
- Entry entry = map.get(event.getTableName());
- if (entry != null){
- entry.process(event);
- }
- }
-
- private void register(String tableName, BulkTableEventListener l) {
- String upperTableName = tableName.trim().toUpperCase();
- Entry entry = map.get(upperTableName);
- if (entry == null){
- entry = new Entry();
- map.put(upperTableName, entry);
- }
- entry.add(l);
- }
+ private final HashMap map = new HashMap();
- private static class Entry {
+ public BulkEventListenerMap(List listeners) {
+
+ if (listeners != null) {
+ for (BulkTableEventListener l : listeners) {
+ Set tables = l.registeredTables();
+ for (String tableName : tables) {
+ register(tableName, l);
+ }
+ }
+ }
+ }
+
+ public boolean isEmpty() {
+ return map.isEmpty();
+ }
+
+ public void process(BulkTableEvent event) {
+
+ Entry entry = map.get(event.getTableName());
+ if (entry != null) {
+ entry.process(event);
+ }
+ }
+
+ private void register(String tableName, BulkTableEventListener l) {
+ String upperTableName = tableName.trim().toUpperCase();
+ Entry entry = map.get(upperTableName);
+ if (entry == null) {
+ entry = new Entry();
+ map.put(upperTableName, entry);
+ }
+ entry.add(l);
+ }
+
+ private static class Entry {
final List listeners = new ArrayList();
- private void add(BulkTableEventListener l) {
- listeners.add(l);
- }
-
- private void process(BulkTableEvent event){
- for (int i = 0; i < listeners.size(); i++) {
- listeners.get(i).process(event);
- }
- }
- }
+
+ private void add(BulkTableEventListener l) {
+ listeners.add(l);
+ }
+
+ private void process(BulkTableEvent event) {
+ for (int i = 0; i < listeners.size(); i++) {
+ listeners.get(i).process(event);
+ }
+ }
+ }
}
diff --git a/src/main/java/com/avaje/ebeaninternal/server/transaction/DefaultPersistenceContext.java b/src/main/java/com/avaje/ebeaninternal/server/transaction/DefaultPersistenceContext.java
index 74345a3f6..92ed02e53 100644
--- a/src/main/java/com/avaje/ebeaninternal/server/transaction/DefaultPersistenceContext.java
+++ b/src/main/java/com/avaje/ebeaninternal/server/transaction/DefaultPersistenceContext.java
@@ -1,15 +1,14 @@
package com.avaje.ebeaninternal.server.transaction;
+import com.avaje.ebean.bean.PersistenceContext;
+import com.avaje.ebeaninternal.api.Monitor;
+
+import javax.persistence.Entity;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
-import javax.persistence.Entity;
-
-import com.avaje.ebean.bean.PersistenceContext;
-import com.avaje.ebeaninternal.api.Monitor;
-
/**
* Default implementation of PersistenceContext.
*
@@ -134,7 +133,7 @@ public final class DefaultPersistenceContext implements PersistenceContext {
}
return classMap;
}
-
+
private Class> getBeanBaseType(Class> beanType) {
Class> parent = beanType.getSuperclass();
@@ -206,5 +205,5 @@ public final class DefaultPersistenceContext implements PersistenceContext {
map.remove(id);
}
}
-
+
}
diff --git a/src/main/java/com/avaje/ebeaninternal/server/transaction/DefaultTransactionThreadLocal.java b/src/main/java/com/avaje/ebeaninternal/server/transaction/DefaultTransactionThreadLocal.java
index 45cc6226a..b6834ec41 100644
--- a/src/main/java/com/avaje/ebeaninternal/server/transaction/DefaultTransactionThreadLocal.java
+++ b/src/main/java/com/avaje/ebeaninternal/server/transaction/DefaultTransactionThreadLocal.java
@@ -97,20 +97,20 @@ public final class DefaultTransactionThreadLocal {
*
* Designed to be put in a finally block instead of a rollback() in each catch
* block.
- *
+ *
*
* Ebean.beingTransaction();
* try {
* // ... perform some actions in a single transaction
- *
+ *
* Ebean.commitTransaction();
- *
+ *
* } finally {
* // ensure transaction ended. If some error occurred then rollback()
* Ebean.endTransaction();
* }
*
- *
+ *
*
*/
public static void end(String serverName) {
diff --git a/src/main/java/com/avaje/ebeaninternal/server/transaction/DeleteByIdMap.java b/src/main/java/com/avaje/ebeaninternal/server/transaction/DeleteByIdMap.java
index 0bfda8a27..9f56a3bfc 100644
--- a/src/main/java/com/avaje/ebeaninternal/server/transaction/DeleteByIdMap.java
+++ b/src/main/java/com/avaje/ebeaninternal/server/transaction/DeleteByIdMap.java
@@ -1,14 +1,14 @@
package com.avaje.ebeaninternal.server.transaction;
+import com.avaje.ebeaninternal.server.core.PersistRequest;
+import com.avaje.ebeaninternal.server.deploy.BeanDescriptor;
+
import java.io.Serializable;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
-import com.avaje.ebeaninternal.server.core.PersistRequest;
-import com.avaje.ebeaninternal.server.deploy.BeanDescriptor;
-
/**
* Beans deleted by Id used for updating L2 Cache.
*/
diff --git a/src/main/java/com/avaje/ebeaninternal/server/transaction/ExternalJdbcTransaction.java b/src/main/java/com/avaje/ebeaninternal/server/transaction/ExternalJdbcTransaction.java
index 49921844b..b5f14bab5 100644
--- a/src/main/java/com/avaje/ebeaninternal/server/transaction/ExternalJdbcTransaction.java
+++ b/src/main/java/com/avaje/ebeaninternal/server/transaction/ExternalJdbcTransaction.java
@@ -1,9 +1,8 @@
package com.avaje.ebeaninternal.server.transaction;
-import java.sql.Connection;
-
import javax.persistence.PersistenceException;
import javax.persistence.RollbackException;
+import java.sql.Connection;
/**
* Transaction based on a java.sql.Connection supplied by an external
@@ -20,65 +19,65 @@ import javax.persistence.RollbackException;
*/
public class ExternalJdbcTransaction extends JdbcTransaction {
- /**
- * Create a Transaction that will have no transaction logging support.
- *
- * You need to create with a TransactionManager to have transaction logging.
- *
- */
- public ExternalJdbcTransaction(Connection connection) {
- super(null, true, connection, null);
- }
+ /**
+ * Create a Transaction that will have no transaction logging support.
+ *
+ * You need to create with a TransactionManager to have transaction logging.
+ *
+ */
+ public ExternalJdbcTransaction(Connection connection) {
+ super(null, true, connection, null);
+ }
- /**
- * Construct will all explicit parameters.
- */
- public ExternalJdbcTransaction(String id, boolean explicit, Connection connection, TransactionManager manager) {
- super(id, explicit, connection, manager);
- }
+ /**
+ * Construct will all explicit parameters.
+ */
+ public ExternalJdbcTransaction(String id, boolean explicit, Connection connection, TransactionManager manager) {
+ super(id, explicit, connection, manager);
+ }
- /**
- * This will always throw a PersistenceException.
- *
- * Externally created connections should be committed or rolled back externally.
- *
- */
- @Override
- public void commit() throws RollbackException {
- throw new PersistenceException("This is an external transaction so must be committed externally");
- }
+ /**
+ * This will always throw a PersistenceException.
+ *
+ * Externally created connections should be committed or rolled back externally.
+ *
+ */
+ @Override
+ public void commit() throws RollbackException {
+ throw new PersistenceException("This is an external transaction so must be committed externally");
+ }
- /**
- * This will always throw a PersistenceException.
- *
- * Externally created connections should be committed or rolled back externally.
- *
- */
- @Override
- public void end() throws PersistenceException {
- throw new PersistenceException("This is an external transaction so must be committed externally");
- }
+ /**
+ * This will always throw a PersistenceException.
+ *
+ * Externally created connections should be committed or rolled back externally.
+ *
+ */
+ @Override
+ public void end() throws PersistenceException {
+ throw new PersistenceException("This is an external transaction so must be committed externally");
+ }
- /**
- * This will always throw a PersistenceException.
- *
- * Externally created connections should be committed or rolled back externally.
- *
- */
- @Override
- public void rollback() throws PersistenceException {
- throw new PersistenceException("This is an external transaction so must be rolled back externally");
- }
+ /**
+ * This will always throw a PersistenceException.
+ *
+ * Externally created connections should be committed or rolled back externally.
+ *
+ */
+ @Override
+ public void rollback() throws PersistenceException {
+ throw new PersistenceException("This is an external transaction so must be rolled back externally");
+ }
- /**
- * This will always throw a PersistenceException.
- *
- * Externally created connections should be committed or rolled back externally.
- *
- */
- @Override
- public void rollback(Throwable e) throws PersistenceException {
- throw new PersistenceException("This is an external transaction so must be rolled back externally");
- }
+ /**
+ * This will always throw a PersistenceException.
+ *
+ * Externally created connections should be committed or rolled back externally.
+ *
+ */
+ @Override
+ public void rollback(Throwable e) throws PersistenceException {
+ throw new PersistenceException("This is an external transaction so must be rolled back externally");
+ }
}
diff --git a/src/main/java/com/avaje/ebeaninternal/server/transaction/ExternalTransactionScopeManager.java b/src/main/java/com/avaje/ebeaninternal/server/transaction/ExternalTransactionScopeManager.java
index c8b6cf4d8..403af20c1 100644
--- a/src/main/java/com/avaje/ebeaninternal/server/transaction/ExternalTransactionScopeManager.java
+++ b/src/main/java/com/avaje/ebeaninternal/server/transaction/ExternalTransactionScopeManager.java
@@ -8,41 +8,41 @@ import com.avaje.ebeaninternal.api.SpiTransaction;
*/
public class ExternalTransactionScopeManager extends TransactionScopeManager {
- final ExternalTransactionManager externalManager;
-
- /**
- * Instantiates transaction scope manager.
- *
- * @param transactionManager the transaction manager
- */
- public ExternalTransactionScopeManager(TransactionManager transactionManager, ExternalTransactionManager externalManager) {
- super(transactionManager);
- this.externalManager = externalManager;
- }
+ final ExternalTransactionManager externalManager;
- public void commit() {
- DefaultTransactionThreadLocal.commit(serverName);
- }
+ /**
+ * Instantiates transaction scope manager.
+ *
+ * @param transactionManager the transaction manager
+ */
+ public ExternalTransactionScopeManager(TransactionManager transactionManager, ExternalTransactionManager externalManager) {
+ super(transactionManager);
+ this.externalManager = externalManager;
+ }
+
+ public void commit() {
+ DefaultTransactionThreadLocal.commit(serverName);
+ }
- public void end() {
- DefaultTransactionThreadLocal.end(serverName);
- }
+ public void end() {
+ DefaultTransactionThreadLocal.end(serverName);
+ }
- public SpiTransaction get() {
-
- return (SpiTransaction)externalManager.getCurrentTransaction();
- }
+ public SpiTransaction get() {
- public void replace(SpiTransaction trans) {
- DefaultTransactionThreadLocal.replace(serverName, trans);
- }
+ return (SpiTransaction) externalManager.getCurrentTransaction();
+ }
- public void rollback() {
- DefaultTransactionThreadLocal.rollback(serverName);
- }
+ public void replace(SpiTransaction trans) {
+ DefaultTransactionThreadLocal.replace(serverName, trans);
+ }
- public void set(SpiTransaction trans) {
- DefaultTransactionThreadLocal.set(serverName, trans);
- }
+ public void rollback() {
+ DefaultTransactionThreadLocal.rollback(serverName);
+ }
+
+ public void set(SpiTransaction trans) {
+ DefaultTransactionThreadLocal.set(serverName, trans);
+ }
}
diff --git a/src/main/java/com/avaje/ebeaninternal/server/transaction/NoopPersistenceContext.java b/src/main/java/com/avaje/ebeaninternal/server/transaction/NoopPersistenceContext.java
index 5a1736cef..ef2607c5e 100644
--- a/src/main/java/com/avaje/ebeaninternal/server/transaction/NoopPersistenceContext.java
+++ b/src/main/java/com/avaje/ebeaninternal/server/transaction/NoopPersistenceContext.java
@@ -4,7 +4,7 @@ import com.avaje.ebean.bean.PersistenceContext;
/**
* PersistenceContext used with scope of NONE.
- *
+ *
* When used effectively means no PersistenceContext is used at all. This is not expected to be used much and
* actually is not recommended.
*/
diff --git a/src/main/java/com/avaje/ebeaninternal/server/transaction/RemoteTransactionEvent.java b/src/main/java/com/avaje/ebeaninternal/server/transaction/RemoteTransactionEvent.java
index 1b32ad9d3..94aea43c3 100644
--- a/src/main/java/com/avaje/ebeaninternal/server/transaction/RemoteTransactionEvent.java
+++ b/src/main/java/com/avaje/ebeaninternal/server/transaction/RemoteTransactionEvent.java
@@ -10,132 +10,132 @@ import java.util.List;
public class RemoteTransactionEvent implements Runnable {
- private final List beanPersistList = new ArrayList();
-
- private List tableList;
+ private final List beanPersistList = new ArrayList();
- private List beanDeltaLists;
-
- private BeanDeltaMap beanDeltaMap;
-
- private DeleteByIdMap deleteByIdMap;
-
- private String serverName;
+ private List tableList;
- private transient SpiEbeanServer server;
-
- public RemoteTransactionEvent(String serverName) {
- this.serverName = serverName;
+ private List beanDeltaLists;
+
+ private BeanDeltaMap beanDeltaMap;
+
+ private DeleteByIdMap deleteByIdMap;
+
+ private String serverName;
+
+ private transient SpiEbeanServer server;
+
+ public RemoteTransactionEvent(String serverName) {
+ this.serverName = serverName;
+ }
+
+ public RemoteTransactionEvent(SpiEbeanServer server) {
+ this.server = server;
+ }
+
+ public void run() {
+ server.remoteTransactionEvent(this);
+ }
+
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ if (beanDeltaMap != null) {
+ sb.append(beanDeltaMap);
}
-
- public RemoteTransactionEvent(SpiEbeanServer server) {
- this.server = server;
+ sb.append(beanPersistList);
+ if (tableList != null) {
+ sb.append(tableList);
}
-
- public void run() {
- server.remoteTransactionEvent(this);
- }
-
- public String toString() {
- StringBuilder sb = new StringBuilder();
- if (beanDeltaMap != null){
- sb.append(beanDeltaMap);
- }
- sb.append(beanPersistList);
- if (tableList != null){
- sb.append(tableList);
- }
- return sb.toString();
- }
-
- public void writeBinaryMessage(BinaryMessageList msgList) throws IOException {
-
- if (tableList != null){
- for (int i = 0; i < tableList.size(); i++) {
- tableList.get(i).writeBinaryMessage(msgList);
- }
- }
-
- if (deleteByIdMap != null){
- for (BeanPersistIds deleteIds : deleteByIdMap.values()) {
- deleteIds.writeBinaryMessage(msgList);
- }
- }
-
- if (beanPersistList != null){
- for (int i = 0; i < beanPersistList.size(); i++) {
- beanPersistList.get(i).writeBinaryMessage(msgList);
- }
- }
-
- if (beanDeltaLists != null){
- for (int i = 0; i < beanDeltaLists.size(); i++) {
- beanDeltaLists.get(i).writeBinaryMessage(msgList);
- }
- }
- }
-
- public boolean isEmpty() {
- return beanPersistList.isEmpty() && (tableList == null || tableList.isEmpty());
- }
-
- public void addBeanPersistIds(BeanPersistIds beanPersist){
- beanPersistList.add(beanPersist);
+ return sb.toString();
+ }
+
+ public void writeBinaryMessage(BinaryMessageList msgList) throws IOException {
+
+ if (tableList != null) {
+ for (int i = 0; i < tableList.size(); i++) {
+ tableList.get(i).writeBinaryMessage(msgList);
+ }
}
- public void addTableIUD(TableIUD tableIud){
- if (tableList == null){
- tableList = new ArrayList(4);
- }
- tableList.add(tableIud);
- }
-
- public void addBeanDeltaList(BeanDeltaList deltaList){
- if (beanDeltaLists == null){
- beanDeltaLists = new ArrayList();
- }
- beanDeltaLists.add(deltaList);
- }
-
- public void addBeanDelta(BeanDelta beanDelta){
- if (beanDeltaMap == null){
- beanDeltaMap = new BeanDeltaMap();
- }
- beanDeltaMap.addBeanDelta(beanDelta);
- }
-
- public String getServerName() {
- return serverName;
- }
-
- public SpiEbeanServer getServer() {
- return server;
+ if (deleteByIdMap != null) {
+ for (BeanPersistIds deleteIds : deleteByIdMap.values()) {
+ deleteIds.writeBinaryMessage(msgList);
+ }
}
- public void setServer(SpiEbeanServer server) {
- this.server = server;
- }
-
- public DeleteByIdMap getDeleteByIdMap() {
- return deleteByIdMap;
+ if (beanPersistList != null) {
+ for (int i = 0; i < beanPersistList.size(); i++) {
+ beanPersistList.get(i).writeBinaryMessage(msgList);
+ }
}
- public void setDeleteByIdMap(DeleteByIdMap deleteByIdMap) {
- this.deleteByIdMap = deleteByIdMap;
+ if (beanDeltaLists != null) {
+ for (int i = 0; i < beanDeltaLists.size(); i++) {
+ beanDeltaLists.get(i).writeBinaryMessage(msgList);
+ }
}
+ }
- public List getTableIUDList() {
- return tableList;
- }
+ public boolean isEmpty() {
+ return beanPersistList.isEmpty() && (tableList == null || tableList.isEmpty());
+ }
- public List getBeanPersistList() {
- return beanPersistList;
- }
+ public void addBeanPersistIds(BeanPersistIds beanPersist) {
+ beanPersistList.add(beanPersist);
+ }
- public List getBeanDeltaLists() {
- if (beanDeltaMap != null){
- beanDeltaLists.addAll(beanDeltaMap.deltaLists());
- }
- return beanDeltaLists;
+ public void addTableIUD(TableIUD tableIud) {
+ if (tableList == null) {
+ tableList = new ArrayList(4);
}
+ tableList.add(tableIud);
+ }
+
+ public void addBeanDeltaList(BeanDeltaList deltaList) {
+ if (beanDeltaLists == null) {
+ beanDeltaLists = new ArrayList();
+ }
+ beanDeltaLists.add(deltaList);
+ }
+
+ public void addBeanDelta(BeanDelta beanDelta) {
+ if (beanDeltaMap == null) {
+ beanDeltaMap = new BeanDeltaMap();
+ }
+ beanDeltaMap.addBeanDelta(beanDelta);
+ }
+
+ public String getServerName() {
+ return serverName;
+ }
+
+ public SpiEbeanServer getServer() {
+ return server;
+ }
+
+ public void setServer(SpiEbeanServer server) {
+ this.server = server;
+ }
+
+ public DeleteByIdMap getDeleteByIdMap() {
+ return deleteByIdMap;
+ }
+
+ public void setDeleteByIdMap(DeleteByIdMap deleteByIdMap) {
+ this.deleteByIdMap = deleteByIdMap;
+ }
+
+ public List getTableIUDList() {
+ return tableList;
+ }
+
+ public List getBeanPersistList() {
+ return beanPersistList;
+ }
+
+ public List getBeanDeltaLists() {
+ if (beanDeltaMap != null) {
+ beanDeltaLists.addAll(beanDeltaMap.deltaLists());
+ }
+ return beanDeltaLists;
+ }
}
diff --git a/src/main/java/com/avaje/ebeaninternal/server/transaction/TransactionManager.java b/src/main/java/com/avaje/ebeaninternal/server/transaction/TransactionManager.java
index 59f20c76a..c382b4003 100644
--- a/src/main/java/com/avaje/ebeaninternal/server/transaction/TransactionManager.java
+++ b/src/main/java/com/avaje/ebeaninternal/server/transaction/TransactionManager.java
@@ -113,7 +113,7 @@ public class TransactionManager {
List transactionEventListeners = bootupClasses.getTransactionEventListeners();
this.transactionEventListeners = transactionEventListeners.toArray(new
- TransactionEventListener[transactionEventListeners.size()]);
+ TransactionEventListener[transactionEventListeners.size()]);
this.prefix = "";
this.externalTransPrefix = "e";
@@ -175,8 +175,7 @@ public class TransactionManager {
if (OnQueryOnly.CLOSE.equals(dbPlatformOnQueryOnly)) {
// check for read committed isolation level
if (!isReadCommittedIsolation(ds)) {
- logger.warn("Ignoring DatabasePlatform.OnQueryOnly.CLOSE as the transaction Isolation Level is not " +
- "READ_COMMITTED");
+ logger.warn("Ignoring DatabasePlatform.OnQueryOnly.CLOSE as the transaction Isolation Level is not READ_COMMITTED");
// we will just use ROLLBACK and ignore the desired optimisation
return OnQueryOnly.ROLLBACK;
} else {
diff --git a/src/main/java/com/avaje/ebeaninternal/server/transaction/TransactionMap.java b/src/main/java/com/avaje/ebeaninternal/server/transaction/TransactionMap.java
index 4dd9ce014..d02a84915 100644
--- a/src/main/java/com/avaje/ebeaninternal/server/transaction/TransactionMap.java
+++ b/src/main/java/com/avaje/ebeaninternal/server/transaction/TransactionMap.java
@@ -1,118 +1,117 @@
package com.avaje.ebeaninternal.server.transaction;
-import java.util.HashMap;
-
-import javax.persistence.PersistenceException;
-
import com.avaje.ebeaninternal.api.SpiTransaction;
+import javax.persistence.PersistenceException;
+import java.util.HashMap;
+
/**
- * Current transactions mapped by server name.
+ * Current transactions mapped by server name.
*/
public class TransactionMap {
-
- /**
- * Map of State by serverName.
- */
- private final HashMap map = new HashMap();
-
+
+ /**
+ * Map of State by serverName.
+ */
+ private final HashMap map = new HashMap();
+
+ public String toString() {
+ return map.toString();
+ }
+
+ public boolean isEmpty() {
+ return map.isEmpty();
+ }
+
+ /**
+ * Return the State for a given serverName.
+ */
+ public State getState(String serverName) {
+
+ return map.get(serverName);
+ }
+
+ /**
+ * Return the State for a given serverName.
+ */
+ public State getStateWithCreate(String serverName) {
+
+ State state = map.get(serverName);
+ if (state == null) {
+ state = new State();
+ map.put(serverName, state);
+ }
+ return state;
+ }
+
+ /**
+ * Remove and return the State for a given serverName.
+ */
+ public State removeState(String serverName) {
+ return map.remove(serverName);
+ }
+
+ /**
+ * The transaction and whether it is active.
+ */
+ public static class State {
+
+ SpiTransaction transaction;
+
public String toString() {
- return map.toString();
+ return "txn[" + transaction + "]";
}
-
- public boolean isEmpty() {
- return map.isEmpty();
+
+ public SpiTransaction get() {
+ return transaction;
}
-
+
/**
- * Return the State for a given serverName.
+ * Set the transaction. This will now be the current transaction.
*/
- public State getState(String serverName) {
-
- return map.get(serverName);
+ public void set(SpiTransaction trans) {
+
+ if (transaction != null && transaction.isActive()) {
+ String m = "The existing transaction is still active?";
+ throw new PersistenceException(m);
+ }
+ transaction = trans;
}
-
+
+
/**
- * Return the State for a given serverName.
+ * Commit the transaction.
*/
- public State getStateWithCreate(String serverName) {
-
- State state = map.get(serverName);
- if (state == null){
- state = new State();
- map.put(serverName, state);
- }
- return state;
+ public void commit() {
+ transaction.commit();
+ transaction = null;
}
-
+
/**
- * Remove and return the State for a given serverName.
+ * Rollback the transaction.
*/
- public State removeState(String serverName) {
- return map.remove(serverName);
+ public void rollback() {
+ transaction.rollback();
+ transaction = null;
}
-
+
/**
- * The transaction and whether it is active.
+ * End the transaction.
*/
- public static class State {
-
- SpiTransaction transaction;
-
- public String toString() {
- return "txn["+transaction+"]";
- }
-
- public SpiTransaction get() {
- return transaction;
- }
-
- /**
- * Set the transaction. This will now be the current transaction.
- */
- public void set(SpiTransaction trans) {
-
- if (transaction != null && transaction.isActive()){
- String m = "The existing transaction is still active?";
- throw new PersistenceException(m);
- }
- transaction = trans;
- }
-
-
- /**
- * Commit the transaction.
- */
- public void commit() {
- transaction.commit();
- transaction = null;
- }
-
- /**
- * Rollback the transaction.
- */
- public void rollback() {
- transaction.rollback();
- transaction = null;
- }
-
- /**
- * End the transaction.
- */
- public void end() {
- if (transaction != null){
- transaction.end();
- transaction = null;
- }
- }
-
- /**
- * Used to replace transaction with a proxy.
- */
- public void replace(SpiTransaction trans) {
- transaction = trans;
- }
-
+ public void end() {
+ if (transaction != null) {
+ transaction.end();
+ transaction = null;
+ }
}
+
+ /**
+ * Used to replace transaction with a proxy.
+ */
+ public void replace(SpiTransaction trans) {
+ transaction = trans;
+ }
+
+ }
}
diff --git a/src/main/java/com/avaje/ebeaninternal/server/transaction/TransactionScopeManager.java b/src/main/java/com/avaje/ebeaninternal/server/transaction/TransactionScopeManager.java
index bd7fd7531..8dc880280 100644
--- a/src/main/java/com/avaje/ebeaninternal/server/transaction/TransactionScopeManager.java
+++ b/src/main/java/com/avaje/ebeaninternal/server/transaction/TransactionScopeManager.java
@@ -8,51 +8,51 @@ import com.avaje.ebeaninternal.api.SpiTransactionScopeManager;
*/
public abstract class TransactionScopeManager implements SpiTransactionScopeManager {
- protected final TransactionManager transactionManager;
-
- protected final String serverName;
+ protected final TransactionManager transactionManager;
- public TransactionScopeManager(TransactionManager transactionManager){
- this.transactionManager = transactionManager;
- this.serverName = transactionManager.getServerName();
- }
-
- /**
- * Return the current Transaction for this serverName and Thread.
- */
- public abstract SpiTransaction get();
+ protected final String serverName;
- /**
- * Set a new Transaction for this serverName and Thread.
- */
- public abstract void set(SpiTransaction trans);
-
- /**
- * Commit the current transaction.
- */
- public abstract void commit();
+ public TransactionScopeManager(TransactionManager transactionManager) {
+ this.transactionManager = transactionManager;
+ this.serverName = transactionManager.getServerName();
+ }
- /**
- * Rollback the current transaction.
- */
- public abstract void rollback();
+ /**
+ * Return the current Transaction for this serverName and Thread.
+ */
+ public abstract SpiTransaction get();
+
+ /**
+ * Set a new Transaction for this serverName and Thread.
+ */
+ public abstract void set(SpiTransaction trans);
+
+ /**
+ * Commit the current transaction.
+ */
+ public abstract void commit();
+
+ /**
+ * Rollback the current transaction.
+ */
+ public abstract void rollback();
- /**
- * Rollback if required.
- */
- public abstract void end();
+ /**
+ * Rollback if required.
+ */
+ public abstract void end();
- /**
- * Replace the current transaction with this one.
- *
- * Used for Background fetching and Nested transaction scopes.
- *
- *
- * Used for background fetching. Replaces the current transaction with a
- * 'dummy' transaction. The current transaction is given to the background
- * thread so it can continue the fetch.
- *
- */
- public abstract void replace(SpiTransaction trans);
+ /**
+ * Replace the current transaction with this one.
+ *
+ * Used for Background fetching and Nested transaction scopes.
+ *
+ *
+ * Used for background fetching. Replaces the current transaction with a
+ * 'dummy' transaction. The current transaction is given to the background
+ * thread so it can continue the fetch.
+ *
+ */
+ public abstract void replace(SpiTransaction trans);
}
diff --git a/src/main/java/com/avaje/ebeaninternal/server/transaction/package.html b/src/main/java/com/avaje/ebeaninternal/server/transaction/package.html
index 528760f43..7863998ec 100644
--- a/src/main/java/com/avaje/ebeaninternal/server/transaction/package.html
+++ b/src/main/java/com/avaje/ebeaninternal/server/transaction/package.html
@@ -1,13 +1,13 @@
-
- Transaction implementation
+
+ Transaction implementation
Transaction implementation
-Implementation of the transaction functions.
+ Implementation of the transaction functions.