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