#5309, #5310 Add load method to retrieve user entity after create and password change
[taxeditor.git] / eu.etaxonomy.taxeditor.cdmlib / src / main / java / eu / etaxonomy / taxeditor / service / CdmServiceRequestExecutor.java
index 065a7f24de067ac0002060dabca232ece0c68cb2..d8a07325c67aef0ee3b8a773eca14d5256e9332c 100644 (file)
@@ -2,6 +2,8 @@ package eu.etaxonomy.taxeditor.service;
 
 import java.io.IOException;
 import java.io.OutputStream;
+import java.util.HashSet;
+import java.util.Set;
 
 import org.apache.log4j.Logger;
 import org.springframework.remoting.httpinvoker.HttpInvokerClientConfiguration;
@@ -23,8 +25,17 @@ public class CdmServiceRequestExecutor extends CdmAuthenticatedHttpInvokerReques
 
        private RemoteInvocation currentRemoteInvocation;
 
+       protected final static Set<String> cachableMethods = new HashSet<String>();
 
 
+
+       public CdmServiceRequestExecutor() {
+           cachableMethods.add("merge");
+           cachableMethods.add("save");
+           cachableMethods.add("findWithUpdate");
+           cachableMethods.add("loadWithUpdate");
+       }
+
        @Override
        protected void writeRemoteInvocation(RemoteInvocation invocation, OutputStream os) throws IOException {
            if(cdmEntitySessionManager == null) {
@@ -42,18 +53,12 @@ public class CdmServiceRequestExecutor extends CdmAuthenticatedHttpInvokerReques
                                        java.lang.ClassNotFoundException {
                RemoteInvocationResult rir = fromCache(currentRemoteInvocation);
 
-               // if rir is not null at this point we assume that the
-               // the object has already been loaded in the cache and
-               // does not need to be reloaded
-
                if(rir == null) {
                    logger.info("Remote invoking : " + currentRemoteInvocation.getMethodName() + "@" + config.getServiceUrl());
                        rir = super.doExecuteRequest(config, baos);
                        if(rir.getValue() != null && !rir.hasException()) {
-                if("merge".equals(currentRemoteInvocation.getMethodName()) ||
-                        "save".equals(currentRemoteInvocation.getMethodName()) ||
-                        "findWithUpdate".equals(currentRemoteInvocation.getMethodName())) {
-                            rir = new RemoteInvocationResult(cdmEntitySessionManager.load(rir.getValue(), true));
+                if(cachableMethods.contains(currentRemoteInvocation.getMethodName())) {
+                    rir = new RemoteInvocationResult(cdmEntitySessionManager.load(rir.getValue(), true));
                 } else if(rir.getValue() instanceof UpdateResult){
                     UpdateResult result = (UpdateResult)rir.getValue();
                     if(result.isOk()){