Martin Peřina has uploaded a new change for review.

Change subject: restapi: Introduce current filter
......................................................................

restapi: Introduce current filter

The RESTAPI application needs to access data associated to the current
request in several places. In order to simplify this we currently use a
"Current" class that handles a map stored in a thread local. This
"Current" class populates the map before processing each request, and
cleans it after finishing processing it. To do so it is defined as a
Resteasy interceptor. This interceptor concept isn't standard, and
doesn't work the same in newer versions of Resteasy. To be able to use
other versions of Resteasy this patch replaces the interceptor with a
plain servlet filter.

Change-Id: If46bafba6e8b58624af7eb85ae231edb0cf8dc1f
Bug-Url: https://bugzilla.redhat.com/1121327
Signed-off-by: Martin Perina <mper...@redhat.com>
---
M 
backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/filters/RestApiSessionMgmtFilter.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/constants/SessionConstants.java
M 
backend/manager/modules/restapi/interface/common/jaxrs/src/main/java/org/ovirt/engine/api/common/invocation/Current.java
A 
backend/manager/modules/restapi/interface/common/jaxrs/src/main/java/org/ovirt/engine/api/common/invocation/CurrentFilter.java
A 
backend/manager/modules/restapi/interface/common/jaxrs/src/main/java/org/ovirt/engine/api/common/invocation/CurrentManager.java
D 
backend/manager/modules/restapi/interface/common/jaxrs/src/main/java/org/ovirt/engine/api/common/invocation/MetaData.java
D 
backend/manager/modules/restapi/interface/common/jaxrs/src/test/java/org/ovirt/engine/api/common/invocation/CurrentTest.java
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/BackendApplication.java
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendApiResource.java
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendAssignedPermissionsResource.java
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendClustersResource.java
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendHostsResource.java
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendResource.java
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmPoolResource.java
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BaseBackendResource.java
D 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/security/auth/SessionProcessor.java
D 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/util/SessionHelper.java
M 
backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendBaseTest.java
M 
backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendCollectionResourceTest.java
M 
backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendSubResourceTest.java
M 
backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendApiResourceTest.java
M 
backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendCapabilitiesResourceTest.java
M 
backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendCapabilityResourceTest.java
M 
backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendExportDomainDiskResourceTest.java
M 
backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendExportDomainDisksResourceTest.java
M 
backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendHostHooksResourceTest.java
M 
backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendResourceTest.java
M 
backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmApplicationResourceTest.java
M 
backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmApplicationsResourceTest.java
M 
backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmPoolResourceTest.java
M 
backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmResourceTest.java
M 
backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmSessionsResourceTest.java
M backend/manager/modules/restapi/webapp/src/main/webapp/WEB-INF/web.xml
33 files changed, 238 insertions(+), 440 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/50/40150/1

diff --git 
a/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/filters/RestApiSessionMgmtFilter.java
 
b/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/filters/RestApiSessionMgmtFilter.java
index a33860d..07c0a31 100644
--- 
a/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/filters/RestApiSessionMgmtFilter.java
+++ 
b/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/filters/RestApiSessionMgmtFilter.java
@@ -71,12 +71,10 @@
         try {
             if (FiltersHelper.isAuthenticated(req)) {
                 if ((prefer & FiltersHelper.PREFER_PERSISTENCE_AUTH) != 0) {
-                    if 
(!Boolean.TRUE.equals(request.getAttribute(SessionConstants.REQUEST_ASYNC_KEY)))
 {
-                        HttpSession session = req.getSession(false);
-                        if (session != null) {
-                            ((HttpServletResponse) 
response).addHeader(FiltersHelper.Constants.HEADER_JSESSIONID_COOKIE,
-                                    session.getId());
-                        }
+                    HttpSession session = req.getSession(false);
+                    if (session != null) {
+                        ((HttpServletResponse) 
response).addHeader(FiltersHelper.Constants.HEADER_JSESSIONID_COOKIE,
+                                session.getId());
                     }
                 } else {
                     InitialContext ctx = new InitialContext();
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/constants/SessionConstants.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/constants/SessionConstants.java
index 87c510f..dec898d 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/constants/SessionConstants.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/constants/SessionConstants.java
@@ -3,6 +3,5 @@
 public class SessionConstants {
 
     public static final String HTTP_SESSION_ENGINE_SESSION_ID_KEY = 
"ovirt_aaa_engineSessionId";
-    public static final String REQUEST_ASYNC_KEY = "ovirt_aaa_restapi_async";
 
 }
diff --git 
a/backend/manager/modules/restapi/interface/common/jaxrs/src/main/java/org/ovirt/engine/api/common/invocation/Current.java
 
b/backend/manager/modules/restapi/interface/common/jaxrs/src/main/java/org/ovirt/engine/api/common/invocation/Current.java
index 6f81ef8..6ed3ca4 100644
--- 
a/backend/manager/modules/restapi/interface/common/jaxrs/src/main/java/org/ovirt/engine/api/common/invocation/Current.java
+++ 
b/backend/manager/modules/restapi/interface/common/jaxrs/src/main/java/org/ovirt/engine/api/common/invocation/Current.java
@@ -1,11 +1,11 @@
 /*
-* Copyright (c) 2010 Red Hat, Inc.
+* Copyright (c) 2014 Red Hat, Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
-*           http://www.apache.org/licenses/LICENSE-2.0
+*   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
@@ -16,38 +16,49 @@
 
 package org.ovirt.engine.api.common.invocation;
 
-import java.util.HashMap;
-import java.util.Map;
+import org.ovirt.engine.core.common.businessentities.aaa.DbUser;
+import org.ovirt.engine.core.common.mode.ApplicationMode;
 
-import javax.ws.rs.ext.Provider;
+/**
+ * This class stores information that its scoped to the request currently 
being processed.
+ */
+public class Current {
+    /**
+     * The identifier of the backend session.
+     */
+    private String sessionId;
 
-import org.jboss.resteasy.annotations.interception.ServerInterceptor;
-import org.jboss.resteasy.core.ServerResponse;
-import org.jboss.resteasy.spi.interception.PostProcessInterceptor;
+    /**
+     * This indicates the application mode for the current request.
+     */
+    private ApplicationMode applicationMode;
 
-@Provider
-@ServerInterceptor
-public class Current implements PostProcessInterceptor {
+    /**
+     * This is a reference to the user that is performing the request.
+     */
+    private DbUser user;
 
-    private static final ThreadLocal<Map<Class<?>, Object>> currents = new 
ThreadLocal<Map<Class<?>, Object>>();
-
-    @Override
-    public void postProcess(ServerResponse response) {
-        currents.set(null);
+    public String getSessionId() {
+        return sessionId;
     }
 
-    public <T> void set(T current) {
-        getMap().put(current.getClass(), current);
+    public void setSessionId(String sessionId) {
+        this.sessionId = sessionId;
     }
 
-    public <T> T get(Class<T> clz) {
-        return clz.cast(getMap().get(clz));
+    public ApplicationMode getApplicationMode() {
+        return applicationMode;
     }
 
-    private Map<Class<?>, Object> getMap() {
-        if (currents.get() == null) {
-            currents.set(new HashMap<Class<?>, Object>(){{put(MetaData.class, 
new MetaData());}});
-        }
-        return currents.get();
+    public void setApplicationMode(ApplicationMode applicationMode) {
+        this.applicationMode = applicationMode;
+    }
+
+    public DbUser getUser() {
+        return user;
+    }
+
+    public void setUser(DbUser user) {
+        this.user = user;
     }
 }
diff --git 
a/backend/manager/modules/restapi/interface/common/jaxrs/src/main/java/org/ovirt/engine/api/common/invocation/CurrentFilter.java
 
b/backend/manager/modules/restapi/interface/common/jaxrs/src/main/java/org/ovirt/engine/api/common/invocation/CurrentFilter.java
new file mode 100644
index 0000000..9b3ec2c
--- /dev/null
+++ 
b/backend/manager/modules/restapi/interface/common/jaxrs/src/main/java/org/ovirt/engine/api/common/invocation/CurrentFilter.java
@@ -0,0 +1,103 @@
+/*
+* Copyright (c) 2014 Red Hat, Inc.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+package org.ovirt.engine.api.common.invocation;
+
+import java.io.IOException;
+import javax.ejb.EJB;
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.ovirt.engine.core.common.businessentities.aaa.DbUser;
+import org.ovirt.engine.core.common.config.ConfigCommon;
+import org.ovirt.engine.core.common.constants.SessionConstants;
+import org.ovirt.engine.core.common.interfaces.BackendLocal;
+import org.ovirt.engine.core.common.mode.ApplicationMode;
+import org.ovirt.engine.core.common.queries.ConfigurationValues;
+import org.ovirt.engine.core.common.queries.GetConfigurationValueParameters;
+import org.ovirt.engine.core.common.queries.GetValueBySessionQueryParameters;
+import org.ovirt.engine.core.common.queries.VdcQueryReturnValue;
+import org.ovirt.engine.core.common.queries.VdcQueryType;
+
+/**
+ * This filter is responsible for initializing and cleaning the information 
that is associated to the current request.
+ */
+public class CurrentFilter implements Filter {
+    /**
+     * The reference to the backend bean.
+     */
+    @SuppressWarnings("unused")
+    @EJB(lookup = 
"java:global/engine/bll/Backend!org.ovirt.engine.core.common.interfaces.BackendLocal")
+    private BackendLocal backend;
+
+    @Override
+    public void init(FilterConfig filterConfig) throws ServletException {
+    }
+
+    @Override
+    public void destroy() {
+    }
+
+    @Override
+    public void doFilter(ServletRequest request, ServletResponse response, 
FilterChain chain)
+            throws IOException, ServletException {
+        doFilter((HttpServletRequest) request, (HttpServletResponse) response, 
chain);
+    }
+
+    private void doFilter(HttpServletRequest request, HttpServletResponse 
response, FilterChain chain)
+        throws IOException, ServletException {
+
+        String sessionId = (String) 
request.getAttribute(SessionConstants.HTTP_SESSION_ENGINE_SESSION_ID_KEY);
+        if (sessionId == null) {
+            throw new ServletException("Engine session missing");
+        }
+
+        Current current = new Current();
+        current.setSessionId(sessionId);
+        current.setApplicationMode(findApplicationMode(sessionId));
+        current.setUser(findPrincipal(sessionId));
+        CurrentManager.put(current);
+
+        try {
+            chain.doFilter(request, response);
+        }
+        finally {
+            CurrentManager.remove();
+        }
+    }
+
+    private ApplicationMode findApplicationMode(String sessionId) {
+        GetConfigurationValueParameters parameters = new 
GetConfigurationValueParameters(
+            ConfigurationValues.ApplicationMode,
+            ConfigCommon.defaultConfigurationVersion
+        );
+        parameters.setSessionId(sessionId);
+        VdcQueryReturnValue result = backend.runPublicQuery( 
VdcQueryType.GetConfigurationValue, parameters);
+        return ApplicationMode.from((Integer) result.getReturnValue());
+    }
+
+    private DbUser findPrincipal(String sessionId) {
+        GetValueBySessionQueryParameters parameters = new 
GetValueBySessionQueryParameters(sessionId, "user");
+        VdcQueryReturnValue result = 
backend.runPublicQuery(VdcQueryType.GetValueBySession, parameters);
+        return result.getReturnValue();
+    }
+}
diff --git 
a/backend/manager/modules/restapi/interface/common/jaxrs/src/main/java/org/ovirt/engine/api/common/invocation/CurrentManager.java
 
b/backend/manager/modules/restapi/interface/common/jaxrs/src/main/java/org/ovirt/engine/api/common/invocation/CurrentManager.java
new file mode 100644
index 0000000..6bb8388
--- /dev/null
+++ 
b/backend/manager/modules/restapi/interface/common/jaxrs/src/main/java/org/ovirt/engine/api/common/invocation/CurrentManager.java
@@ -0,0 +1,37 @@
+/*
+* Copyright (c) 2014 Red Hat, Inc.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+package org.ovirt.engine.api.common.invocation;
+
+/**
+ * This manages the object that contains the data associated to the request 
that is currently being processed. Ideally
+ * it should be managed as a request scoped CDI bean, but we don't have CDI 
support yet.
+ */
+public class CurrentManager {
+    private static final ThreadLocal<Current> local = new ThreadLocal<>();
+
+    public static Current get() {
+        return local.get();
+    }
+
+    public static void put(Current current) {
+        local.set(current);
+    }
+
+    public static void remove() {
+        local.remove();
+    }
+}
diff --git 
a/backend/manager/modules/restapi/interface/common/jaxrs/src/main/java/org/ovirt/engine/api/common/invocation/MetaData.java
 
b/backend/manager/modules/restapi/interface/common/jaxrs/src/main/java/org/ovirt/engine/api/common/invocation/MetaData.java
deleted file mode 100644
index 8b23e8c..0000000
--- 
a/backend/manager/modules/restapi/interface/common/jaxrs/src/main/java/org/ovirt/engine/api/common/invocation/MetaData.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.ovirt.engine.api.common.invocation;
-
-import java.util.HashMap;
-import java.util.Map;
-
-public class MetaData {
-    private Map<String, Object> meta;
-
-    public MetaData() {
-        meta = new HashMap<String, Object>();
-    }
-
-    public void set(String key, Object value) {
-        meta.put(key, value);
-    }
-
-    public Object get(String key) {
-        return meta.get(key);
-    }
-
-    public boolean hasKey(String key) {
-        return meta.containsKey(key);
-    }
-
-    public void remove(String key) {
-        meta.remove(key);
-    }
-}
diff --git 
a/backend/manager/modules/restapi/interface/common/jaxrs/src/test/java/org/ovirt/engine/api/common/invocation/CurrentTest.java
 
b/backend/manager/modules/restapi/interface/common/jaxrs/src/test/java/org/ovirt/engine/api/common/invocation/CurrentTest.java
deleted file mode 100644
index 8892572..0000000
--- 
a/backend/manager/modules/restapi/interface/common/jaxrs/src/test/java/org/ovirt/engine/api/common/invocation/CurrentTest.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
-* Copyright (c) 2010 Red Hat, Inc.
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-*           http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-package org.ovirt.engine.api.common.invocation;
-
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-public class CurrentTest extends Assert {
-
-    private Current current;
-
-    @Before
-    public void setUp() {
-        current = new Current();
-    }
-
-    @Test
-    public void testPutGetSameThread() throws Exception {
-        current.set(Integer.valueOf(7));
-        current.set(Integer.valueOf(8));
-        assertEquals(current.get(Integer.class), Integer.valueOf(8));
-        assertNull(current.get(Short.class));
-    }
-
-    @Test
-    public void testPutGetMultiThread() throws Exception {
-        current.set(Integer.valueOf(7));
-        Thread setter = new Thread(new Runnable() {
-            public void run() {
-                current.set(Integer.valueOf(8));
-                current.set(Short.valueOf((short)9));
-            }
-        });
-        setter.start();
-        setter.join();
-        assertEquals(current.get(Integer.class), Integer.valueOf(7));
-        assertNull(current.get(Short.class));
-    }
-}
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/BackendApplication.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/BackendApplication.java
index 5cfb24c..6df5a00 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/BackendApplication.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/BackendApplication.java
@@ -24,7 +24,6 @@
 import javax.ws.rs.ApplicationPath;
 import javax.ws.rs.core.Application;
 
-import org.ovirt.engine.api.common.invocation.Current;
 import org.ovirt.engine.api.restapi.logging.MessageBundle;
 import org.ovirt.engine.api.restapi.logging.Messages;
 import org.ovirt.engine.api.restapi.resource.BackendApiResource;
@@ -67,9 +66,7 @@
 import 
org.ovirt.engine.api.restapi.resource.validation.MalformedIdExceptionMapper;
 import org.ovirt.engine.api.restapi.resource.validation.MappingExceptionMapper;
 import org.ovirt.engine.api.restapi.resource.validation.ValidatorLocator;
-import org.ovirt.engine.api.restapi.security.auth.SessionProcessor;
 import org.ovirt.engine.api.restapi.types.MappingLocator;
-import org.ovirt.engine.api.restapi.util.SessionHelper;
 import org.ovirt.engine.core.common.interfaces.BackendLocal;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -83,13 +80,12 @@
     private final MessageBundle messageBundle;
     private final MappingLocator mappingLocator;
     private final ValidatorLocator validatorLocator;
-    private final SessionHelper sessionHelper;
 
     // The reference to the backend bean:
     private BackendLocal backend;
 
     // The set of singletons:
-    private final Set<Object> singletons = new HashSet<Object>();
+    private final Set<Object> singletons = new HashSet<>();
 
     public BackendApplication() throws Exception {
         // Create and load the message bundle:
@@ -104,12 +100,6 @@
         // Create and populate the validator locator:
         validatorLocator = new ValidatorLocator();
         validatorLocator.populate();
-
-        // Create the session helper:
-        final Current current = new Current();
-        singletons.add(current);
-        sessionHelper = new SessionHelper();
-        sessionHelper.setCurrent(current);
 
         // Lookup the backend bean:
         try {
@@ -159,12 +149,6 @@
         addResource(new BackendOpenStackVolumeProvidersResource());
         addResource(new BackendSystemKatelloErrataResource());
 
-        final SessionProcessor processor = new SessionProcessor();
-        processor.setBackend(backend);
-        processor.setCurrent(current);
-        processor.setSessionHelper(sessionHelper);
-        singletons.add(processor);
-
         // Intercepter that maps exceptions cause by illegal guid string to 
400 status (BAD_REQUEST).
         singletons.add(new MalformedIdExceptionMapper());
         singletons.add(new JsonExceptionMapper());
@@ -175,7 +159,6 @@
     private void addResource(final BackendResource resource) {
         resource.setMessageBundle(messageBundle);
         resource.setBackend(backend);
-        resource.setSessionHelper(sessionHelper);
         resource.setMappingLocator(mappingLocator);
         resource.setValidatorLocator(validatorLocator);
         singletons.add(resource);
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendApiResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendApiResource.java
index fe349bf..45df9ca 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendApiResource.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendApiResource.java
@@ -207,7 +207,7 @@
 
     @Override
     public Response head() {
-        appMode = getCurrent().get(ApplicationMode.class);
+        appMode = getCurrent().getApplicationMode();
         API api = null;
         if(appMode == ApplicationMode.GlusterOnly) {
             api = getGlusterApi();
@@ -220,7 +220,7 @@
 
     @Override
     public Response get() {
-        appMode = getCurrent().get(ApplicationMode.class);
+        appMode = getCurrent().getApplicationMode();
         if (QueryHelper.hasConstraint(getUriInfo(), 
RSDL_CONSTRAINT_PARAMETER)) {
             try {
                 RSDL rsdl = addSystemVersion(getRSDL());
@@ -276,7 +276,7 @@
     public synchronized RSDL getRSDL() throws ClassNotFoundException, 
IOException {
         if (rsdl == null) {
             rsdl = RsdlManager.loadRsdl(
-                getCurrent().get(ApplicationMode.class),
+                getCurrent().getApplicationMode(),
                 getUriInfo().getBaseUri().getPath()
             );
         }
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendAssignedPermissionsResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendAssignedPermissionsResource.java
index 0db8de0..6f3c856 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendAssignedPermissionsResource.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendAssignedPermissionsResource.java
@@ -212,7 +212,7 @@
             User user = permission.getUser();
             DbUser dbUser = UserMapper.map(user, null);
             if (dbUser.getDomain() == null) {
-                dbUser.setDomain(getCurrent().get(DbUser.class).getDomain());
+                dbUser.setDomain(getCurrent().getUser().getDomain());
             }
             return dbUser;
         }
@@ -220,7 +220,7 @@
             Group group = permission.getGroup();
             DbGroup dbGroup = GroupMapper.map(group, null);
             if (dbGroup.getDomain() == null) {
-                dbGroup.setDomain(getCurrent().get(DbUser.class).getDomain());
+                dbGroup.setDomain(getCurrent().getUser().getDomain());
             }
             return dbGroup;
         }
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendClustersResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendClustersResource.java
index 7554829..3631ee3 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendClustersResource.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendClustersResource.java
@@ -39,7 +39,7 @@
 
     @Override
     public Clusters list() {
-        ApplicationMode appMode = getCurrent().get(ApplicationMode.class);
+        ApplicationMode appMode = getCurrent().getApplicationMode();
 
         if (appMode == ApplicationMode.VirtOnly) {
             return listVirtOnly();
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendHostsResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendHostsResource.java
index ca087ed..558a269 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendHostsResource.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendHostsResource.java
@@ -54,7 +54,7 @@
 
     @Override
     public Hosts list() {
-        ApplicationMode appMode = getCurrent().get(ApplicationMode.class);
+        ApplicationMode appMode = getCurrent().getApplicationMode();
         if (appMode == ApplicationMode.GlusterOnly) {
             return listGlusterOnly();
         }
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendResource.java
index 213519a..934b9e3 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendResource.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendResource.java
@@ -10,7 +10,6 @@
 import javax.ws.rs.GET;
 import javax.ws.rs.core.Response;
 
-import org.ovirt.engine.api.common.invocation.MetaData;
 import org.ovirt.engine.api.common.util.QueryHelper;
 import org.ovirt.engine.api.common.util.StatusUtils;
 import org.ovirt.engine.api.model.Action;
@@ -20,7 +19,6 @@
 import org.ovirt.engine.api.restapi.resource.exception.UrlParamException;
 import org.ovirt.engine.api.restapi.resource.validation.Validator;
 import org.ovirt.engine.api.restapi.util.ErrorMessageHelper;
-import org.ovirt.engine.api.restapi.util.SessionHelper;
 import org.ovirt.engine.api.utils.ExpectationHelper;
 import org.ovirt.engine.api.utils.LinkHelper;
 import org.ovirt.engine.core.common.action.VdcActionParametersBase;
@@ -198,7 +196,6 @@
     protected Response performAction(VdcActionType task, 
VdcActionParametersBase params, Action action, boolean getEntityWhenDone) {
         try {
             if (isAsync() || expectNonBlocking()) {
-                getCurrent().get(MetaData.class).set("async", true);
                 return performNonBlockingAction(task, params, action);
             } else {
                 VdcReturnValueBase actionResult = doAction(task, params);
@@ -305,19 +302,18 @@
         setCorrelationId(params);
         setJobOrStepId(params);
         ThreadPoolUtil.execute(new Runnable() {
-            SessionHelper sh = getSessionHelper();
             VdcActionParametersBase sp = sessionize(params);
-            DbUser user = getCurrent().get(DbUser.class);
+            DbUser currentUser = getCurrent().getUser();
+            VdcActionParametersBase logout = currentUser != null ? 
sessionize(new VdcActionParametersBase()) : null;
 
             @Override
             public void run() {
                 try {
                     backend.runAction(task, sp);
                 } finally {
-                    if (user != null) {
-                        backend.logoff(sh.sessionize(new 
VdcActionParametersBase()));
+                    if (currentUser != null) {
+                        backend.logoff(logout);
                     }
-                    sh.clean();
                 }
             }
         });
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmPoolResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmPoolResource.java
index 5a68441..be2633f 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmPoolResource.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmPoolResource.java
@@ -21,7 +21,6 @@
 import org.ovirt.engine.core.common.action.VmPoolUserParameters;
 import org.ovirt.engine.core.common.businessentities.VM;
 import org.ovirt.engine.core.common.businessentities.VmTemplate;
-import org.ovirt.engine.core.common.businessentities.aaa.DbUser;
 import org.ovirt.engine.core.common.businessentities.storage.DiskImage;
 import org.ovirt.engine.core.common.queries.GetPermissionsForObjectParameters;
 import org.ovirt.engine.core.common.queries.GetVmTemplateParameters;
@@ -144,7 +143,7 @@
     @Override
     public Response allocatevm(Action action) {
         return doAction(VdcActionType.AttachUserToVmFromPoolAndRun,
-                        new VmPoolUserParameters(guid,  
getCurrent().get(DbUser.class), false),
+                        new VmPoolUserParameters(guid,  
getCurrent().getUser(), false),
                         action,
                         new VmQueryIdResolver(VdcQueryType.GetVmByVmId,
                                               IdQueryParameters.class));
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BaseBackendResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BaseBackendResource.java
index d698be9..47212b5 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BaseBackendResource.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BaseBackendResource.java
@@ -15,6 +15,7 @@
 
 import org.apache.commons.lang.StringUtils;
 import org.ovirt.engine.api.common.invocation.Current;
+import org.ovirt.engine.api.common.invocation.CurrentManager;
 import org.ovirt.engine.api.common.util.CompletenessAssertor;
 import org.ovirt.engine.api.common.util.EnumValidator;
 import org.ovirt.engine.api.model.Fault;
@@ -22,7 +23,6 @@
 import org.ovirt.engine.api.restapi.logging.Messages;
 import org.ovirt.engine.api.restapi.resource.validation.ValidatorLocator;
 import org.ovirt.engine.api.restapi.types.MappingLocator;
-import org.ovirt.engine.api.restapi.util.SessionHelper;
 import org.ovirt.engine.api.restapi.utils.MalformedIdException;
 import org.ovirt.engine.core.common.action.VdcActionParametersBase;
 import org.ovirt.engine.core.common.interfaces.BackendLocal;
@@ -32,13 +32,11 @@
 import org.slf4j.LoggerFactory;
 
 public class BaseBackendResource {
-
     private static String USER_FILTER_HEADER = "Filter";
 
     private static final Logger log = 
LoggerFactory.getLogger(AbstractBackendResource.class);
 
     protected BackendLocal backend;
-    protected SessionHelper sessionHelper;
     protected MessageBundle messageBundle;
     protected UriInfo uriInfo;
     protected HttpHeaders httpHeaders;
@@ -50,7 +48,6 @@
         resource.setBackend(backend);
         resource.setMappingLocator(mappingLocator);
         resource.setValidatorLocator(validatorLocator);
-        resource.setSessionHelper(sessionHelper);
         resource.setMessageBundle(messageBundle);
         resource.setUriInfo(uriInfo);
         resource.setHttpHeaders(httpHeaders);
@@ -71,14 +68,6 @@
 
     public BackendLocal getBackend() {
         return backend;
-    }
-
-    public void setSessionHelper(SessionHelper sessionHelper) {
-        this.sessionHelper = sessionHelper;
-    }
-
-    public SessionHelper getSessionHelper() {
-        return sessionHelper;
     }
 
     public void setMessageBundle(MessageBundle messageBundle) {
@@ -108,7 +97,7 @@
     }
 
     protected Current getCurrent() {
-        return sessionHelper.getCurrent();
+        return CurrentManager.get();
     }
 
     protected ValidatorLocator getValidatorLocator() {
@@ -120,11 +109,15 @@
     }
 
     protected <P extends VdcQueryParametersBase> P sessionize(P parameters) {
-        return sessionHelper.sessionize(parameters);
+        String sessionId = getCurrent().getSessionId();
+        parameters.setSessionId(sessionId);
+        return parameters;
     }
 
     protected <P extends VdcActionParametersBase> P sessionize(P parameters) {
-        return sessionHelper.sessionize(parameters);
+        String sessionId = getCurrent().getSessionId();
+        parameters.setSessionId(sessionId);
+        return parameters;
     }
 
     protected Fault fault(String reason, String detail) {
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/security/auth/SessionProcessor.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/security/auth/SessionProcessor.java
deleted file mode 100644
index 94e1015..0000000
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/security/auth/SessionProcessor.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package org.ovirt.engine.api.restapi.security.auth;
-
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.ext.Provider;
-
-import org.jboss.resteasy.annotations.interception.Precedence;
-import org.jboss.resteasy.annotations.interception.ServerInterceptor;
-import org.jboss.resteasy.core.ResourceMethod;
-import org.jboss.resteasy.core.ServerResponse;
-import org.jboss.resteasy.spi.Failure;
-import org.jboss.resteasy.spi.HttpRequest;
-import org.jboss.resteasy.spi.interception.PostProcessInterceptor;
-import org.jboss.resteasy.spi.interception.PreProcessInterceptor;
-import org.ovirt.engine.api.common.invocation.Current;
-import org.ovirt.engine.api.common.invocation.MetaData;
-import org.ovirt.engine.api.restapi.util.SessionHelper;
-import org.ovirt.engine.core.common.config.ConfigCommon;
-import org.ovirt.engine.core.common.constants.SessionConstants;
-import org.ovirt.engine.core.common.interfaces.BackendLocal;
-import org.ovirt.engine.core.common.mode.ApplicationMode;
-import org.ovirt.engine.core.common.queries.ConfigurationValues;
-import org.ovirt.engine.core.common.queries.GetConfigurationValueParameters;
-import org.ovirt.engine.core.common.queries.GetValueBySessionQueryParameters;
-import org.ovirt.engine.core.common.queries.VdcQueryType;
-
-@Provider
-@ServerInterceptor
-@Precedence("SECURITY")
-public class SessionProcessor implements PreProcessInterceptor, 
PostProcessInterceptor {
-
-    private Current current;
-    private SessionHelper sessionHelper;
-    private BackendLocal backend;
-    private HttpRequest request;
-
-    public void setBackend(BackendLocal backend) {
-        this.backend = backend;
-    }
-
-    public void setSessionHelper(SessionHelper sessionHelper) {
-        this.sessionHelper = sessionHelper;
-    }
-
-    public void setCurrent(Current current) {
-        this.current = current;
-    }
-
-    public Current getCurrent() {
-        return current;
-    }
-
-
-    @Override
-    public ServerResponse preProcess(HttpRequest request, ResourceMethod 
method) throws Failure,
-            WebApplicationException {
-        String engineSessionId = (String) 
request.getAttribute(SessionConstants.HTTP_SESSION_ENGINE_SESSION_ID_KEY);
-        if (engineSessionId == null) {
-            throw new Failure("Engine session missing");
-        }
-        this.request = request;
-
-        sessionHelper.setSessionId(engineSessionId);
-        current.set(ApplicationMode.from((Integer) 
backend.runPublicQuery(VdcQueryType.GetConfigurationValue,
-                new 
GetConfigurationValueParameters(ConfigurationValues.ApplicationMode,
-                        
ConfigCommon.defaultConfigurationVersion)).getReturnValue()));
-        current.set(backend.runPublicQuery(
-                VdcQueryType.GetValueBySession,
-                new GetValueBySessionQueryParameters(engineSessionId, "user")
-                ).getReturnValue());
-        return null;
-    }
-
-
-    @Override
-    public void postProcess(ServerResponse response) {
-        if (current.get(MetaData.class).hasKey("async") &&
-                Boolean.TRUE.equals((Boolean) 
current.get(MetaData.class).get("async"))) {
-            request.setAttribute(SessionConstants.REQUEST_ASYNC_KEY, true);
-        }
-        sessionHelper.clean();
-    }
-
-}
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/util/SessionHelper.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/util/SessionHelper.java
deleted file mode 100644
index 1c8403e..0000000
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/util/SessionHelper.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package org.ovirt.engine.api.restapi.util;
-
-import org.ovirt.engine.api.common.invocation.Current;
-
-import org.ovirt.engine.core.common.action.VdcActionParametersBase;
-import org.ovirt.engine.core.common.queries.VdcQueryParametersBase;
-
-public class SessionHelper {
-
-    private Current current;
-    private static ThreadLocal<String> sessionIdHolder = new 
ThreadLocal<String>();
-
-    public void setCurrent(Current current) {
-        this.current = current;
-    }
-
-    public Current getCurrent() {
-        return current;
-    }
-
-    /**
-     * Setting the sessionId on the parameters
-     */
-    public <P extends VdcActionParametersBase> P sessionize(P parameters) {
-        parameters.setSessionId(getSessionId());
-        return parameters;
-    }
-
-    /**
-     * Setting the sessionId on the parameters
-     */
-    public <P extends VdcQueryParametersBase> P sessionize(P parameters){
-        parameters.setSessionId(getSessionId());
-        return parameters;
-    }
-
-    /**
-     * Clean sessionId on Logout
-     */
-    public void clean() {
-        sessionIdHolder.remove();
-    }
-
-    /**
-     * Get the sessionId
-     */
-    public String getSessionId() {
-        return sessionIdHolder.get();
-    }
-
-    /**
-     * Set the sessionId
-     */
-    public void setSessionId(String sessionId) {
-        sessionIdHolder.set(sessionId);
-    }
-}
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendBaseTest.java
 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendBaseTest.java
index d0b7d99..fec2bae 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendBaseTest.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendBaseTest.java
@@ -28,6 +28,7 @@
 import org.junit.Before;
 import org.junit.Rule;
 import org.ovirt.engine.api.common.invocation.Current;
+import org.ovirt.engine.api.common.invocation.CurrentManager;
 import org.ovirt.engine.api.model.BaseResource;
 import org.ovirt.engine.api.model.Fault;
 import org.ovirt.engine.api.model.Link;
@@ -35,7 +36,6 @@
 import org.ovirt.engine.api.restapi.resource.validation.ValidatorLocator;
 import org.ovirt.engine.api.restapi.types.Mapper;
 import org.ovirt.engine.api.restapi.types.MappingLocator;
-import org.ovirt.engine.api.restapi.util.SessionHelper;
 import org.ovirt.engine.api.restapi.utils.DirectoryEntryIdUtils;
 import org.ovirt.engine.core.common.action.VdcActionParametersBase;
 import org.ovirt.engine.core.common.action.VdcActionType;
@@ -81,7 +81,6 @@
     protected static final Guid NON_EXISTANT_GUID = new 
Guid("99999999-9999-9999-9999-999999999999");
     protected static final Guid EVERYONE = new 
Guid("EEE00000-0000-0000-0000-123456789EEE");
     protected static final String[] NAMES = { "sedna", "eris", "orcus" };
-    protected static final String[] BAD_NAMES = { "unknown" };
     protected static final String[] DESCRIPTIONS = { "top notch entity", "a 
fine example",
             "state of the art" };
     protected static final String URI_ROOT = "http://localhost:8088";;
@@ -103,15 +102,12 @@
     protected static int BAD_REQUEST = 400;
 
     protected static final String USER = "Aladdin";
-    protected static final String SECRET = "open sesame";
     protected static final String DOMAIN = "Maghreb.Maghreb.Maghreb.com";
     protected static final String NAMESPACE = "*";
 
-    protected static final String sessionId = Guid.newGuid().toString();
+    protected static final String SESSION_ID = Guid.newGuid().toString();
 
     protected BackendLocal backend;
-    protected Current current;
-    protected SessionHelper sessionHelper;
     protected MappingLocator mapperLocator;
     protected ValidatorLocator validatorLocator;
     protected Locale locale;
@@ -122,8 +118,6 @@
     protected MessageBundle messageBundle;
     protected IMocksControl control;
 
-    protected DbUser currentUser;
-
     @Rule
     public final MockConfigRule mcr = new MockConfigRule();
 
@@ -131,19 +125,19 @@
     public void setUp() {
         control = EasyMock.createNiceControl();
         backend = control.createMock(BackendLocal.class);
-        current = control.createMock(Current.class);
 
-        currentUser = new DbUser();
+        DbUser currentUser = new DbUser();
         currentUser.setFirstName(USER);
         currentUser.setLastName(USER);
         currentUser.setDomain(DOMAIN);
         currentUser.setNamespace(NAMESPACE);
         currentUser.setId(GUIDS[0]);
-        expect(current.get(DbUser.class)).andReturn(currentUser).anyTimes();
 
-        sessionHelper = new SessionHelper();
-        sessionHelper.setCurrent(current);
-        sessionHelper.setSessionId(sessionId);
+        Current current = new Current();
+        current.setUser(currentUser);
+        current.setSessionId(SESSION_ID);
+        CurrentManager.put(current);
+
         httpHeaders = control.createMock(HttpHeaders.class);
         locales = new ArrayList<Locale>();
         
expect(httpHeaders.getAcceptableLanguages()).andReturn(locales).anyTimes();
@@ -172,6 +166,7 @@
     public void tearDown() {
         Locale.setDefault(locale);
         control.verify();
+        CurrentManager.remove();
     }
 
     protected abstract void init();
@@ -573,7 +568,7 @@
         for (int i = 0; i < values.length; i++) {
             ret[i] = values[i];
         }
-        ret[values.length] = sessionHelper.getSessionId();
+        ret[values.length] = SESSION_ID;
         return ret;
     }
 
@@ -656,7 +651,6 @@
     protected void initBackendResource(BackendResource resource) {
         resource.setBackend(backend);
         resource.setValidatorLocator(validatorLocator);
-        resource.setSessionHelper(sessionHelper);
         resource.setMessageBundle(messageBundle);
         resource.setHttpHeaders(httpHeaders);
     }
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendCollectionResourceTest.java
 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendCollectionResourceTest.java
index 10b777d..b09ce19 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendCollectionResourceTest.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendCollectionResourceTest.java
@@ -134,7 +134,6 @@
                     if (rawSubResource instanceof AbstractBackendResource) {
                         AbstractBackendResource<R, Q> subResource = 
(AbstractBackendResource<R, Q>)rawSubResource;
                         assertNotNull(subResource.getBackend());
-                        assertNotNull(subResource.getSessionHelper());
                         assertNotNull(subResource.getMappingLocator());
                     }
                 }
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendSubResourceTest.java
 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendSubResourceTest.java
index 5ac65d1..aa13cae 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendSubResourceTest.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendSubResourceTest.java
@@ -56,7 +56,6 @@
                     if (rawSubResource instanceof AbstractBackendResource) {
                         AbstractBackendResource<R, Q> subResource = 
(AbstractBackendResource<R, Q>)rawSubResource;
                         assertNotNull(subResource.getBackend());
-                        assertNotNull(subResource.getSessionHelper());
                         assertNotNull(subResource.getMappingLocator());
                     }
                 }
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendApiResourceTest.java
 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendApiResourceTest.java
index cf72733..aaef4ce 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendApiResourceTest.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendApiResourceTest.java
@@ -23,11 +23,12 @@
 import org.junit.Before;
 import org.junit.Test;
 import org.ovirt.engine.api.common.invocation.Current;
+import org.ovirt.engine.api.common.invocation.CurrentManager;
 import org.ovirt.engine.api.model.API;
 import org.ovirt.engine.api.model.Link;
 import org.ovirt.engine.api.model.SpecialObjects;
 import org.ovirt.engine.api.restapi.logging.MessageBundle;
-import org.ovirt.engine.api.restapi.util.SessionHelper;
+import org.ovirt.engine.core.common.businessentities.aaa.DbUser;
 import org.ovirt.engine.core.common.interfaces.BackendLocal;
 import org.ovirt.engine.core.common.mode.ApplicationMode;
 import org.ovirt.engine.core.common.queries.GetConfigurationValueParameters;
@@ -51,20 +52,18 @@
 
     protected BackendLocal backend;
     protected Current current;
-    protected SessionHelper sessionHelper;
+    protected DbUser currentUser;
     protected HttpHeaders httpHeaders;
 
     protected static final String USER = "Aladdin";
-    protected static final String SECRET = "open sesame";
     protected static final String DOMAIN = "Maghreb";
-    protected static final String NAMESPACE = "*";
 
     protected static final String URI_ROOT = "http://localhost:8099";;
     protected static final String SLASH = "/";
     protected static final String BASE_PATH = "/ovirt-engine/api";
     protected static final String URI_BASE = URI_ROOT + BASE_PATH;
     protected static final String BUNDLE_PATH = 
"org/ovirt/engine/api/restapi/logging/Messages";
-    protected static final String sessionId = Guid.newGuid().toString();
+    protected static final String SESSION_ID = Guid.newGuid().toString();
     private static String USER_FILTER_HEADER = "Filter";
 
     protected static final int MAJOR = 11;
@@ -228,12 +227,13 @@
 
     @Before
     public void setUp() {
-        current = createMock(Current.class);
-
-        sessionHelper = new SessionHelper();
-        sessionHelper.setCurrent(current);
-        sessionHelper.setSessionId(sessionId);
-        resource.setSessionHelper(sessionHelper);
+        currentUser = new DbUser();
+        currentUser.setLoginName(USER);
+        currentUser.setDomain(DOMAIN);
+        current = new Current();
+        current.setUser(currentUser);
+        current.setSessionId(SESSION_ID);
+        CurrentManager.put(current);
 
         backend = createMock(BackendLocal.class);
         resource.setBackend(backend);
@@ -255,6 +255,7 @@
     @After
     public void tearDown() {
         verifyAll();
+        CurrentManager.remove();
     }
 
     @Test
@@ -288,7 +289,7 @@
     }
 
     private void setupExpectations(ApplicationMode appMode, String[] 
relationships) {
-        
expect(current.get(ApplicationMode.class)).andReturn(appMode).anyTimes();
+        current.setApplicationMode(appMode);
         resource.setUriInfo(setUpUriInfo(URI_BASE + "/", relationships));
         setUpGetSystemVersionExpectations();
         setUpGetSystemStatisticsExpectations();
@@ -462,24 +463,20 @@
 
     protected VdcQueryParametersBase queryProductRPMVersionParams() {
         return eqQueryParams(GetConfigurationValueParameters.class,
-                             new String[] { "SessionId"},
-                             new Object[] { getSessionId() });
+                             new String[] { "SessionId" },
+                             new Object[] { SESSION_ID });
     }
 
     protected VdcQueryParametersBase queryVdcVersionParams() {
         return eqQueryParams(GetConfigurationValueParameters.class,
-                             new String[] { "SessionId"},
-                             new Object[] { getSessionId() });
+                             new String[] { "SessionId" },
+                             new Object[] { SESSION_ID });
     }
 
     protected VdcQueryParametersBase queryParams() {
         return eqQueryParams(GetSystemStatisticsQueryParameters.class,
                              new String[] { "SessionId" },
-                             new Object[] { getSessionId() });
-    }
-
-    protected String getSessionId() {
-        return sessionHelper.getSessionId();
+                             new Object[] { SESSION_ID });
     }
 }
 
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendCapabilitiesResourceTest.java
 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendCapabilitiesResourceTest.java
index 63600c6..48cb18d 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendCapabilitiesResourceTest.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendCapabilitiesResourceTest.java
@@ -1,21 +1,12 @@
 package org.ovirt.engine.api.restapi.resource;
 
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.expect;
-
-import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
-import java.util.Locale;
 
-import javax.ws.rs.core.HttpHeaders;
 import javax.ws.rs.core.UriInfo;
 
-import org.easymock.EasyMock;
-import org.junit.Before;
 import org.junit.Ignore;
 import org.junit.Test;
-import org.ovirt.engine.api.common.invocation.Current;
 import org.ovirt.engine.api.model.BootDevice;
 import org.ovirt.engine.api.model.CPU;
 import org.ovirt.engine.api.model.Capabilities;
@@ -36,11 +27,8 @@
 import org.ovirt.engine.api.model.VersionCaps;
 import org.ovirt.engine.api.model.VmAffinities;
 import org.ovirt.engine.api.model.VmType;
-import org.ovirt.engine.api.restapi.logging.MessageBundle;
-import org.ovirt.engine.api.restapi.util.SessionHelper;
 import org.ovirt.engine.api.restapi.utils.VersionUtils;
 import org.ovirt.engine.core.common.businessentities.ActionGroup;
-import org.ovirt.engine.core.common.interfaces.BackendLocal;
 import org.ovirt.engine.core.common.queries.ConfigurationValues;
 import org.ovirt.engine.core.common.queries.GetAllServerCpuListParameters;
 import org.ovirt.engine.core.common.queries.GetConfigurationValueParameters;
@@ -356,42 +344,11 @@
         return null;
     }
 
-    protected String getSessionId() {
-        return sessionHelper.getSessionId();
-    }
-
     @Override
     protected void init() {
         resource.setBackend(backend);
         resource.setMappingLocator(mapperLocator);
-        sessionHelper.setSessionId(sessionId);
-        resource.setSessionHelper(sessionHelper);
         resource.setMessageBundle(messageBundle);
         resource.setHttpHeaders(httpHeaders);
-    }
-
-    @Override
-    @Before
-    public void setUp() {
-        control = EasyMock.createNiceControl();
-        current = createMock(Current.class);
-
-        sessionHelper = new SessionHelper();
-        sessionHelper.setCurrent(current);
-        resource.setSessionHelper(sessionHelper);
-
-        backend = createMock(BackendLocal.class);
-        resource.setBackend(backend);
-
-        MessageBundle messageBundle = new MessageBundle();
-        messageBundle.setPath(BUNDLE_PATH);
-        messageBundle.populate();
-        resource.setMessageBundle(messageBundle);
-
-        httpHeaders = createMock(HttpHeaders.class);
-        List<Locale> locales = new ArrayList<Locale>();
-        
expect(httpHeaders.getAcceptableLanguages()).andReturn(locales).anyTimes();
-        resource.setHttpHeaders(httpHeaders);
-        init();
     }
 }
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendCapabilityResourceTest.java
 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendCapabilityResourceTest.java
index 523e6ff..0fa7364 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendCapabilityResourceTest.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendCapabilityResourceTest.java
@@ -1,21 +1,12 @@
 package org.ovirt.engine.api.restapi.resource;
 
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.expect;
-
-import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
-import java.util.Locale;
 
-import javax.ws.rs.core.HttpHeaders;
 import javax.ws.rs.core.UriInfo;
 
-import org.easymock.EasyMock;
-import org.junit.Before;
 import org.junit.Ignore;
 import org.junit.Test;
-import org.ovirt.engine.api.common.invocation.Current;
 import org.ovirt.engine.api.model.BootDevice;
 import org.ovirt.engine.api.model.CPU;
 import org.ovirt.engine.api.model.Capabilities;
@@ -36,11 +27,8 @@
 import org.ovirt.engine.api.model.VersionCaps;
 import org.ovirt.engine.api.model.VmAffinities;
 import org.ovirt.engine.api.model.VmType;
-import org.ovirt.engine.api.restapi.logging.MessageBundle;
-import org.ovirt.engine.api.restapi.util.SessionHelper;
 import org.ovirt.engine.api.restapi.utils.VersionUtils;
 import org.ovirt.engine.core.common.businessentities.ActionGroup;
-import org.ovirt.engine.core.common.interfaces.BackendLocal;
 import org.ovirt.engine.core.common.queries.ConfigurationValues;
 import org.ovirt.engine.core.common.queries.GetConfigurationValueParameters;
 import org.ovirt.engine.core.common.queries.VdcQueryType;
@@ -352,42 +340,11 @@
         return null;
     }
 
-    protected String getSessionId() {
-        return sessionHelper.getSessionId();
-    }
-
     @Override
     protected void init() {
         parent.setBackend(backend);
         parent.setMappingLocator(mapperLocator);
-        sessionHelper.setSessionId(sessionId);
-        parent.setSessionHelper(sessionHelper);
         parent.setMessageBundle(messageBundle);
         resource.setHttpHeaders(httpHeaders);
-    }
-
-    @Override
-    @Before
-    public void setUp() {
-        control = EasyMock.createNiceControl();
-        current = createMock(Current.class);
-
-        sessionHelper = new SessionHelper();
-        sessionHelper.setCurrent(current);
-        parent.setSessionHelper(sessionHelper);
-
-        backend = createMock(BackendLocal.class);
-        parent.setBackend(backend);
-
-        MessageBundle messageBundle = new MessageBundle();
-        messageBundle.setPath(BUNDLE_PATH);
-        messageBundle.populate();
-        parent.setMessageBundle(messageBundle);
-
-        httpHeaders = createMock(HttpHeaders.class);
-        List<Locale> locales = new ArrayList<Locale>();
-        
expect(httpHeaders.getAcceptableLanguages()).andReturn(locales).anyTimes();
-        parent.setHttpHeaders(httpHeaders);
-        init();
     }
 }
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendExportDomainDiskResourceTest.java
 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendExportDomainDiskResourceTest.java
index 54089ed..dc35478 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendExportDomainDiskResourceTest.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendExportDomainDiskResourceTest.java
@@ -58,7 +58,6 @@
         parent.setBackend(backend);
         parent.setMappingLocator(mapperLocator);
         parent.setValidatorLocator(validatorLocator);
-        parent.setSessionHelper(sessionHelper);
         parent.setMessageBundle(messageBundle);
         parent.setHttpHeaders(httpHeaders);
     }
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendExportDomainDisksResourceTest.java
 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendExportDomainDisksResourceTest.java
index c03f2d7..5b416c2 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendExportDomainDisksResourceTest.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendExportDomainDisksResourceTest.java
@@ -63,7 +63,6 @@
         parent.setBackend(backend);
         parent.setMappingLocator(mapperLocator);
         parent.setValidatorLocator(validatorLocator);
-        parent.setSessionHelper(sessionHelper);
         parent.setMessageBundle(messageBundle);
         parent.setHttpHeaders(httpHeaders);
     }
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendHostHooksResourceTest.java
 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendHostHooksResourceTest.java
index 4bc8d48..96dd60e 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendHostHooksResourceTest.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendHostHooksResourceTest.java
@@ -45,7 +45,6 @@
         resource.setBackend(backend);
         resource.setMappingLocator(mapperLocator);
         resource.setValidatorLocator(validatorLocator);
-        resource.setSessionHelper(sessionHelper);
         resource.setMessageBundle(messageBundle);
         resource.setHttpHeaders(httpHeaders);
     }
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendResourceTest.java
 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendResourceTest.java
index 5de87c3..9b4d47b 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendResourceTest.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendResourceTest.java
@@ -35,7 +35,6 @@
         parent.setBackend(backend);
         parent.setMappingLocator(mapperLocator);
         parent.setValidatorLocator(validatorLocator);
-        parent.setSessionHelper(sessionHelper);
         parent.setMessageBundle(messageBundle);
         parent.setHttpHeaders(httpHeaders);
     }
@@ -90,7 +89,6 @@
         resource.setBackend(backend);
         resource.setMappingLocator(mapperLocator);
         resource.setValidatorLocator(validatorLocator);
-        resource.setSessionHelper(sessionHelper);
         resource.setMessageBundle(messageBundle);
         resource.setHttpHeaders(httpHeaders);
     }
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmApplicationResourceTest.java
 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmApplicationResourceTest.java
index e943b33..6eca53a 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmApplicationResourceTest.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmApplicationResourceTest.java
@@ -58,7 +58,6 @@
     private void initCollection() {
         collection.setBackend(backend);
         collection.setMappingLocator(mapperLocator);
-        collection.setSessionHelper(sessionHelper);
         collection.setMessageBundle(messageBundle);
         collection.setHttpHeaders(httpHeaders);
     }
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmApplicationsResourceTest.java
 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmApplicationsResourceTest.java
index 8d87c20..5381093 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmApplicationsResourceTest.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmApplicationsResourceTest.java
@@ -32,8 +32,6 @@
     protected void init() {
         resource.setBackend(backend);
         resource.setMappingLocator(mapperLocator);
-        sessionHelper.setSessionId(sessionId);
-        resource.setSessionHelper(sessionHelper);
         resource.setMessageBundle(messageBundle);
         resource.setHttpHeaders(httpHeaders);
     }
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmPoolResourceTest.java
 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmPoolResourceTest.java
index 677626b..4d09ca4 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmPoolResourceTest.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmPoolResourceTest.java
@@ -33,7 +33,6 @@
     protected void init() {
         super.init();
         resource.getParent().backend = backend;
-        resource.getParent().sessionHelper = sessionHelper;
         resource.getParent().mappingLocator = resource.mappingLocator;
         resource.getParent().httpHeaders = httpHeaders;
     }
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmResourceTest.java
 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmResourceTest.java
index eea77ae..5234b4d 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmResourceTest.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmResourceTest.java
@@ -98,7 +98,6 @@
     protected void init() {
         super.init();
         resource.getParent().backend = backend;
-        resource.getParent().sessionHelper = sessionHelper;
         resource.getParent().mappingLocator = resource.mappingLocator;
         resource.getParent().httpHeaders = httpHeaders;
         resource.getParent().messageBundle = messageBundle;
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmSessionsResourceTest.java
 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmSessionsResourceTest.java
index 8b64d8d..e9a5590 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmSessionsResourceTest.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmSessionsResourceTest.java
@@ -32,7 +32,6 @@
         resource.setBackend(backend);
         resource.setMappingLocator(mapperLocator);
         resource.setValidatorLocator(validatorLocator);
-        resource.setSessionHelper(sessionHelper);
         resource.setMessageBundle(messageBundle);
         resource.setHttpHeaders(httpHeaders);
     }
diff --git 
a/backend/manager/modules/restapi/webapp/src/main/webapp/WEB-INF/web.xml 
b/backend/manager/modules/restapi/webapp/src/main/webapp/WEB-INF/web.xml
index ff1470f..6086004 100644
--- a/backend/manager/modules/restapi/webapp/src/main/webapp/WEB-INF/web.xml
+++ b/backend/manager/modules/restapi/webapp/src/main/webapp/WEB-INF/web.xml
@@ -128,6 +128,15 @@
         <url-pattern>/*</url-pattern>
     </filter-mapping>
 
+    <filter>
+        <filter-name>CurrentFilter</filter-name>
+        
<filter-class>org.ovirt.engine.api.common.invocation.CurrentFilter</filter-class>
+    </filter>
+    <filter-mapping>
+        <filter-name>CurrentFilter</filter-name>
+        <url-pattern>/*</url-pattern>
+    </filter-mapping>
+
     <!-- confidentiality -->
     <security-constraint>
         <web-resource-collection>


-- 
To view, visit https://gerrit.ovirt.org/40150
To unsubscribe, visit https://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: If46bafba6e8b58624af7eb85ae231edb0cf8dc1f
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Martin Peřina <mper...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to