Update of /var/cvs/src/org/mmbase/bridge/implementation
In directory james.mmbase.org:/tmp/cvs-serv32202
Modified Files:
BasicTransaction.java
Log Message:
removed 'transactionName' name member and renamed transactionContext to
transactionname. The name is simply stored in super.name. transactionName is
the name of the transaction as actually used by TransactionManager. This makes
the code IMHO a bit better comprehenisble
See also: http://cvs.mmbase.org/viewcvs/src/org/mmbase/bridge/implementation
Index: BasicTransaction.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/bridge/implementation/BasicTransaction.java,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -b -r1.38 -r1.39
--- BasicTransaction.java 7 Jul 2008 11:11:36 -0000 1.38
+++ BasicTransaction.java 7 Jul 2008 12:08:38 -0000 1.39
@@ -23,23 +23,20 @@
* which means that chanegs are committed only if you commit the transaction
itself.
* This mechanism allows you to rollback changes if something goes wrong.
* @author Pierre van Rooden
- * @version $Id: BasicTransaction.java,v 1.38 2008/07/07 11:11:36 michiel Exp $
+ * @version $Id: BasicTransaction.java,v 1.39 2008/07/07 12:08:38 michiel Exp $
*/
public class BasicTransaction extends BasicCloud implements Transaction {
private static final Logger log =
Logging.getLoggerInstance(BasicTransaction.class);
/**
- * The id of the transaction for use with the transaction manager. This is
the transaction name,
- * prefixed by the account.
+ * The id of the transaction for use with the transaction manager. This is
the name as speficied
+ * by the user, prefixed by the account name.
*/
- protected String transactionContext; // not final because of
deserialization
+ protected String transactionName; // not final because of deserialization
private boolean canceled = false;
private boolean committed = false;
- /**
- * The name of the transaction as used by the user.
- */
- protected String transactionName; // not final because of deserialization
+
protected BasicCloud parentCloud; // not final because of deserialization
@@ -58,10 +55,10 @@
// XXX: the current transaction manager does not allow
multiple transactions with the
// same name for different users
// We solved this here, but this should really be handled in
the Transactionmanager.
- log.debug("using transaction " + transactionContext);
- Collection<MMObjectNode> cn =
BasicCloudContext.transactionManager.getTransactions().get(getAccount());
+ log.debug("using transaction " + transactionName);
+ Collection<MMObjectNode> cn =
BasicCloudContext.transactionManager.getTransactions().get(transactionName);
if (cn == null) {
- cn =
BasicCloudContext.transactionManager.createTransaction(getAccount());
+ cn =
BasicCloudContext.transactionManager.createTransaction(transactionName);
}
return cn;
} catch (TransactionManagerException e) {
@@ -76,22 +73,21 @@
* @param transactionName name of the transaction (assigned by the user)
* @param cloud The cloud this transaction is working on
*/
- BasicTransaction(String transactionName, BasicCloud cloud) {
- super(transactionName, cloud);
- this.transactionName = transactionName;
+ BasicTransaction(String name, BasicCloud cloud) {
+ super(name, cloud);
this.parentCloud = cloud;
// if the parent cloud is itself a transaction,
// do not create a new one, just use that context instead!
// this allows for nesting of transactions without loosing performance
// due to additional administration
if (parentCloud instanceof BasicTransaction) {
- transactionContext =
((BasicTransaction)parentCloud).transactionContext;
+ transactionName = ((BasicTransaction)parentCloud).transactionName;
} else {
// XXX: the current transaction manager does not allow multiple
transactions with the
// same name for different users
// We solved this here, but this should really be handled in the
Transactionmanager.
- transactionContext = account + "_" + transactionName;
- log.debug("using transaction " + transactionContext);
+ transactionName = account + "_" + name;
+ log.debug("using transaction " + transactionName);
getCoreNodes(); // will call 'createTransaction
}
}
@@ -99,7 +95,8 @@
/**
*/
String getAccount() {
- return transactionContext;
+ // should be something different than for normal clouds, so use the
transaction-name
+ return transactionName;
}
public NodeList getNodes() {
@@ -109,14 +106,14 @@
public synchronized boolean commit() {
if (canceled) {
- throw new BridgeException("Cannot commit transaction'" + name + "'
(" + transactionContext +"), it was already canceled.");
+ throw new BridgeException("Cannot commit transaction'" + name + "'
(" + transactionName +"), it was already canceled.");
}
if (committed) {
- throw new BridgeException("Cannot commit transaction'" + name + "'
(" + transactionContext +"), it was already committed.");
+ throw new BridgeException("Cannot commit transaction'" + name + "'
(" + transactionName +"), it was already committed.");
}
- log.debug("Committing transaction " + transactionContext);
+ log.debug("Committing transaction " + transactionName);
- parentCloud.transactions.remove(transactionName); // hmpf
+ parentCloud.transactions.remove(getName()); // hmpf
// if this is a transaction within a transaction (theoretically
possible)
// leave the committing to the 'parent' transaction
@@ -124,11 +121,11 @@
// do nothing
} else {
try {
- assert
BasicCloudContext.transactionManager.getTransaction(transactionContext).size()
== getNodes().size();
+ assert
BasicCloudContext.transactionManager.getTransaction(transactionName).size() ==
getNodes().size();
log.info("Commiting " + getNodes());
- BasicCloudContext.transactionManager.resolve(getAccount());
- BasicCloudContext.transactionManager.commit(userContext,
getAccount());
+ BasicCloudContext.transactionManager.resolve(transactionName);
+ BasicCloudContext.transactionManager.commit(userContext,
transactionName);
// This is a hack to call the commitprocessors which are only
available in the bridge.
for (Node n : getNodes()) {
@@ -166,10 +163,10 @@
public synchronized void cancel() {
if (canceled) {
- throw new BridgeException("Cannot cancel transaction'" + name + "'
(" + transactionContext +"), it was already canceled.");
+ throw new BridgeException("Cannot cancel transaction'" + name + "'
(" + transactionName +"), it was already canceled.");
}
if (committed) {
- throw new BridgeException("Cannot cancel transaction'" + name + "'
(" + transactionContext +"), it was already committed.");
+ throw new BridgeException("Cannot cancel transaction'" + name + "'
(" + transactionName +"), it was already committed.");
}
// if this is a transaction within a transaction (theoretically
possible)
@@ -179,7 +176,7 @@
} else {
try {
// BasicCloudContext.transactionManager.cancel(account,
transactionContext);
- BasicCloudContext.transactionManager.cancel(userContext,
transactionContext);
+ BasicCloudContext.transactionManager.cancel(userContext,
transactionName);
} catch (TransactionManagerException e) {
// do we drop the transaction here or delete the trans context?
throw new BridgeException(e.getMessage(), e);
@@ -192,37 +189,38 @@
/*
+ */
+ @Override
+ int add(BasicNode node) {
+ String id = "" + node.getNumber();
+ String currentObjectContext =
BasicCloudContext.tmpObjectManager.getObject(getAccount(), id);
+ // store new temporary node in transaction
+ add(currentObjectContext);
+ node.setNode(BasicCloudContext.tmpObjectManager.getNode(getAccount(),
id));
+ // check nodetype afterwards?
+ return node.getNumber();
+ }
+
+ /*
* Transaction-notification: add a new temporary node to a transaction.
* @param currentObjectContext the context of the object to add
*/
@Override
void add(String currentObjectContext) {
try {
- BasicCloudContext.transactionManager.addNode(transactionContext,
getAccount(), currentObjectContext);
+ BasicCloudContext.transactionManager.addNode(transactionName,
getAccount(), currentObjectContext);
} catch (TransactionManagerException e) {
throw new BridgeException(e.getMessage(), e);
}
}
- /*
- */
- @Override
- int add(BasicNode node) {
- int id = node.getNumber();
- String currentObjectContext =
BasicCloudContext.tmpObjectManager.getObject(getAccount(), "" + id);
- // store new temporary node in transaction
- add(currentObjectContext);
- node.setNode(BasicCloudContext.tmpObjectManager.getNode(getAccount(),
"" + id));
- // check nodetype afterwards?
- return id;
- }
@Override
void createAlias(BasicNode node, String aliasName) {
checkAlias(aliasName);
try {
String aliasContext =
BasicCloudContext.tmpObjectManager.createTmpAlias(aliasName, getAccount(), "a"
+ node.temporaryNodeId, "" + node.temporaryNodeId);
- BasicCloudContext.transactionManager.addNode(transactionContext,
getAccount(), aliasContext);
+ BasicCloudContext.transactionManager.addNode(transactionName,
getAccount(), aliasContext);
} catch (TransactionManagerException e) {
throw new BridgeException(e.getMessage(), e);
}
@@ -234,7 +232,7 @@
@Override
void remove(String currentObjectContext) {
try {
-
BasicCloudContext.transactionManager.removeNode(transactionContext, account,
currentObjectContext);
+ BasicCloudContext.transactionManager.removeNode(transactionName,
getAccount(), currentObjectContext);
} catch (TransactionManagerException e) {
throw new BridgeException(e.getMessage(), e);
}
@@ -256,7 +254,7 @@
*/
void delete(String currentObjectContext) {
try {
-
BasicCloudContext.transactionManager.deleteObject(transactionContext, account,
currentObjectContext);
+ BasicCloudContext.transactionManager.deleteObject(transactionName,
account, currentObjectContext);
} catch (TransactionManagerException e) {
throw new BridgeException(e.getMessage(), e);
}
@@ -265,11 +263,11 @@
@Override
boolean contains(MMObjectNode node) {
// additional check, so transaction can still get nodes after it has
committed.
- if (transactionContext == null) {
+ if (transactionName == null) {
return false;
}
try {
- Collection<MMObjectNode> transaction =
BasicCloudContext.transactionManager.getTransaction(transactionContext);
+ Collection<MMObjectNode> transaction =
BasicCloudContext.transactionManager.getTransaction(transactionName);
return transaction.contains(node);
} catch (TransactionManagerException tme) {
throw new BridgeException(tme.getMessage(), tme);
@@ -295,7 +293,7 @@
*/
@Override
protected void finalize() {
- if ((transactionContext != null) && !(parentCloud instanceof
Transaction)) {
+ if ((transactionName != null) && !(parentCloud instanceof
Transaction)) {
cancel();
}
}
@@ -335,20 +333,18 @@
private void readObject(ObjectInputStream in) throws IOException,
ClassNotFoundException {
_readObject(in);
- transactionContext = (String) in.readObject();
+ transactionName = (String) in.readObject();
canceled = in.readBoolean();
committed = in.readBoolean();
- transactionName = (String) in.readObject();
parentCloud = (BasicCloud) in.readObject();
}
private void writeObject(ObjectOutputStream out) throws IOException {
_writeObject(out);
- out.writeObject(transactionContext);
+ out.writeObject(transactionName);
out.writeBoolean(canceled);
out.writeBoolean(committed);
- out.writeObject(transactionName);
out.writeObject(parentCloud);
}
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs