X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.security.core%2Fsrc%2Forg%2Fargeo%2Fosgi%2Fuseradmin%2FWcXaResource.java;h=8567d0538526ed7dcfbeb65512449d160c112bee;hb=ccc4c484ae153b5c17606593724dba227f40e4ad;hp=f438a2a67e2d358c8ea370b32db79345b44bf150;hpb=935a76bdd458e4fb8502783946cb910324388da8;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.security.core/src/org/argeo/osgi/useradmin/WcXaResource.java b/org.argeo.security.core/src/org/argeo/osgi/useradmin/WcXaResource.java index f438a2a67..8567d0538 100644 --- a/org.argeo.security.core/src/org/argeo/osgi/useradmin/WcXaResource.java +++ b/org.argeo.security.core/src/org/argeo/osgi/useradmin/WcXaResource.java @@ -25,7 +25,7 @@ class WcXaResource implements XAResource { } @Override - public void start(Xid xid, int flags) throws XAException { + public synchronized void start(Xid xid, int flags) throws XAException { if (editingXid != null) throw new UserDirectoryException("Already editing " + editingXid); UserDirectoryWorkingCopy wc = workingCopies.put(xid, @@ -39,14 +39,13 @@ class WcXaResource implements XAResource { @Override public void end(Xid xid, int flags) throws XAException { checkXid(xid); - } private UserDirectoryWorkingCopy wc(Xid xid) { return workingCopies.get(xid); } - UserDirectoryWorkingCopy wc() { + synchronized UserDirectoryWorkingCopy wc() { if (editingXid == null) return null; UserDirectoryWorkingCopy wc = workingCopies.get(editingXid); @@ -56,13 +55,10 @@ class WcXaResource implements XAResource { return wc; } - private void cleanUp(Xid xid) { - // clean collections + private synchronized void cleanUp(Xid xid) { wc(xid).cleanUp(); workingCopies.remove(xid); - - // clean IDs - // userDirectory.clearEditingTransactionXid(); + editingXid = null; } @Override