Author: aparfonov
Date: 2010-09-21 09:49:19 -0400 (Tue, 21 Sep 2010)
New Revision: 3166
Added:
ws/trunk/exo.ws.rest.core/src/main/java/org/exoplatform/services/rest/tools/SecurityContextRequest.java
Modified:
ws/trunk/exo.ws.rest.core/src/main/java/org/exoplatform/services/rest/tools/DummySecurityContext.java
ws/trunk/exo.ws.rest.core/src/main/java/org/exoplatform/services/rest/tools/ResourceLauncher.java
Log:
EXOJCR-973
Modified:
ws/trunk/exo.ws.rest.core/src/main/java/org/exoplatform/services/rest/tools/DummySecurityContext.java
===================================================================
---
ws/trunk/exo.ws.rest.core/src/main/java/org/exoplatform/services/rest/tools/DummySecurityContext.java 2010-09-21
10:22:18 UTC (rev 3165)
+++
ws/trunk/exo.ws.rest.core/src/main/java/org/exoplatform/services/rest/tools/DummySecurityContext.java 2010-09-21
13:49:19 UTC (rev 3166)
@@ -19,77 +19,60 @@
package org.exoplatform.services.rest.tools;
-import org.exoplatform.services.rest.impl.ContainerRequest;
-
-import java.io.InputStream;
-import java.net.URI;
import java.security.Principal;
import java.util.HashSet;
import java.util.Set;
-import javax.ws.rs.core.MultivaluedMap;
+import javax.ws.rs.core.SecurityContext;
/**
* @author <a href="mailto:andrew00x@gmail.com">Andrey
Parfonov</a>
* @version $Id$
*/
-class DummySecurityContext extends ContainerRequest
+public class DummySecurityContext implements SecurityContext
{
- private DummyPrincipal dummyPrincipal;
- public DummySecurityContext(String method, URI requestUri, URI baseUri, InputStream
entityStream,
- MultivaluedMap<String, String> httpHeaders)
+ private final Principal principal;
+
+ private final Set<String> userRoles;
+
+ public DummySecurityContext(Principal principal, Set<String> userRoles)
{
- super(method, requestUri, baseUri, entityStream, httpHeaders);
- dummyPrincipal = new DummyPrincipal();
+ this.principal = principal;
+ this.userRoles= new HashSet<String>(userRoles);
}
- @Override
+ /**
+ * {@inheritDoc}
+ */
public String getAuthenticationScheme()
{
// Consider as Basic Authentication
return BASIC_AUTH;
}
- @Override
+ /**
+ * {@inheritDoc}
+ */
public Principal getUserPrincipal()
{
- return dummyPrincipal;
+ return principal;
}
- @Override
+ /**
+ * {@inheritDoc}
+ */
public boolean isSecure()
{
return false;
}
- @Override
+ /**
+ * {@inheritDoc}
+ */
public boolean isUserInRole(String role)
{
- return dummyPrincipal.isUserInRole(role);
+ return userRoles.contains(role);
}
- class DummyPrincipal implements Principal
- {
-
- Set<String> roles = new HashSet<String>();
-
- public DummyPrincipal()
- {
- roles.add("administrators");
- roles.add("users");
- }
-
- public String getName()
- {
- return "root";
- }
-
- public boolean isUserInRole(String role)
- {
- return roles.contains(role);
- }
-
- }
-
}
Modified:
ws/trunk/exo.ws.rest.core/src/main/java/org/exoplatform/services/rest/tools/ResourceLauncher.java
===================================================================
---
ws/trunk/exo.ws.rest.core/src/main/java/org/exoplatform/services/rest/tools/ResourceLauncher.java 2010-09-21
10:22:18 UTC (rev 3165)
+++
ws/trunk/exo.ws.rest.core/src/main/java/org/exoplatform/services/rest/tools/ResourceLauncher.java 2010-09-21
13:49:19 UTC (rev 3166)
@@ -32,6 +32,8 @@
import java.util.List;
import java.util.Map;
+import javax.ws.rs.core.SecurityContext;
+
/**
* Request launcher. It can be useful for testing services.
*
@@ -77,10 +79,10 @@
if (writer == null)
writer = new DummyContainerResponseWriter();
- // ContainerRequest request =
- // new ContainerRequest(method, new URI(requestURI), new URI(baseURI), in,
new InputHeadersMap(headers));
+ SecurityContext sctx = (SecurityContext)env.get(SecurityContext.class);
ContainerRequest request =
- new DummySecurityContext(method, new URI(requestURI), new URI(baseURI), in, new
InputHeadersMap(headers));
+ new SecurityContextRequest(method, new URI(requestURI), new URI(baseURI), in,
new InputHeadersMap(headers),
+ sctx);
ContainerResponse response = new ContainerResponse(writer);
requestHandler.handleRequest(request, response);
return response;
Copied:
ws/trunk/exo.ws.rest.core/src/main/java/org/exoplatform/services/rest/tools/SecurityContextRequest.java
(from rev 3058,
ws/trunk/exo.ws.rest.core/src/main/java/org/exoplatform/services/rest/tools/DummySecurityContext.java)
===================================================================
---
ws/trunk/exo.ws.rest.core/src/main/java/org/exoplatform/services/rest/tools/SecurityContextRequest.java
(rev 0)
+++
ws/trunk/exo.ws.rest.core/src/main/java/org/exoplatform/services/rest/tools/SecurityContextRequest.java 2010-09-21
13:49:19 UTC (rev 3166)
@@ -0,0 +1,84 @@
+/**
+ * Copyright (C) 2010 eXo Platform SAS.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+
+package org.exoplatform.services.rest.tools;
+
+import org.exoplatform.services.rest.impl.ContainerRequest;
+
+import java.io.InputStream;
+import java.net.URI;
+import java.security.Principal;
+
+import javax.ws.rs.core.MultivaluedMap;
+import javax.ws.rs.core.SecurityContext;
+
+/**
+ * For test purposes only. Need this to emulate authenticated user.
+ *
+ * @author <a href="mailto:andrew00x@gmail.com">Andrey
Parfonov</a>
+ * @version $Id$
+ */
+class SecurityContextRequest extends ContainerRequest
+{
+ private final SecurityContext sctx;
+
+ public SecurityContextRequest(String method, URI requestUri, URI baseUri, InputStream
entityStream,
+ MultivaluedMap<String, String> httpHeaders, SecurityContext sctx)
+ {
+ super(method, requestUri, baseUri, entityStream, httpHeaders);
+ this.sctx = sctx;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public String getAuthenticationScheme()
+ {
+ return sctx != null ? sctx.getAuthenticationScheme() : null;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public Principal getUserPrincipal()
+ {
+ return sctx != null ? sctx.getUserPrincipal() : null;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean isSecure()
+ {
+ return sctx != null ? sctx.isSecure() : false;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean isUserInRole(String role)
+ {
+ return sctx != null ? sctx.isUserInRole(role) : false;
+ }
+
+}
Property changes on:
ws/trunk/exo.ws.rest.core/src/main/java/org/exoplatform/services/rest/tools/SecurityContextRequest.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Name: svn:keywords
+ Id
Name: svn:eol-style
+ native