You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by fm...@apache.org on 2008/08/05 23:00:54 UTC

svn commit: r682946 - in /incubator/sling/trunk/engine: pom.xml src/main/java/org/apache/sling/engine/impl/SlingHttpServletRequestImpl.java

Author: fmeschbe
Date: Tue Aug  5 14:00:52 2008
New Revision: 682946

URL: http://svn.apache.org/viewvc?rev=682946&view=rev
Log:
SLING-599 Applied patch and marked import of useradmin package
optional in case the framework has no useradmin package exported.

Modified:
    incubator/sling/trunk/engine/pom.xml
    incubator/sling/trunk/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletRequestImpl.java

Modified: incubator/sling/trunk/engine/pom.xml
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/engine/pom.xml?rev=682946&r1=682945&r2=682946&view=diff
==============================================================================
--- incubator/sling/trunk/engine/pom.xml (original)
+++ incubator/sling/trunk/engine/pom.xml Tue Aug  5 14:00:52 2008
@@ -64,6 +64,7 @@
                             org.apache.sling.engine.impl.*
                         </Private-Package>
                         <Import-Package>
+                            org.osgi.service.useradmin;
                             javax.portlet;resolution:=optional,
                             *
                         </Import-Package>

Modified: incubator/sling/trunk/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletRequestImpl.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletRequestImpl.java?rev=682946&r1=682945&r2=682946&view=diff
==============================================================================
--- incubator/sling/trunk/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletRequestImpl.java (original)
+++ incubator/sling/trunk/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletRequestImpl.java Tue Aug  5 14:00:52 2008
@@ -20,7 +20,9 @@
 
 import java.io.BufferedReader;
 import java.io.IOException;
+import java.io.Serializable;
 import java.io.UnsupportedEncodingException;
+import java.security.Principal;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Enumeration;
@@ -47,6 +49,8 @@
 import org.apache.sling.engine.impl.parameters.ParameterSupport;
 import org.apache.sling.engine.impl.request.RequestData;
 import org.apache.sling.engine.impl.request.SlingRequestDispatcher;
+import org.osgi.service.http.HttpContext;
+import org.osgi.service.useradmin.Authorization;
 
 /**
  * The <code>SlingHttpServletRequestImpl</code> TODO
@@ -248,4 +252,74 @@
             IOException {
         return this.getRequestData().getReader();
     }
+
+    /**
+     * @see javax.servlet.http.HttpServletRequestWrapper#getUserPrincipal()
+     */
+    @Override
+    public Principal getUserPrincipal() {
+        String remoteUser = getRemoteUser();
+        return (remoteUser != null) ? new UserPrincipal(remoteUser) : null;
+    }
+
+    /**
+     * @see javax.servlet.http.HttpServletRequestWrapper#isUserInRole()
+     */
+    @Override
+    @SuppressWarnings("unchecked")
+    public boolean isUserInRole(String role) {
+        Object authorization = getAttribute(HttpContext.AUTHORIZATION);
+        return (authorization instanceof Authorization)
+                ? ((Authorization) authorization).hasRole(role)
+                : false;
+    }
+
+    /**
+     * A <code>UserPrincipal</code> ...
+     */
+    private static class UserPrincipal implements Principal, Serializable {
+
+        private final String name;
+
+        /**
+         * Creates a <code>UserPrincipal</code> with the given name.
+         *
+         * @param name the name of this principal
+         * @throws IllegalArgumentException if <code>name</code> is <code>null</code>.
+         */
+        public UserPrincipal(String name) throws IllegalArgumentException {
+            if (name == null) {
+                throw new IllegalArgumentException("name can not be null");
+            }
+            this.name = name;
+        }
+
+        public String toString() {
+            return ("UserPrincipal: " + name);
+        }
+
+        public boolean equals(Object obj) {
+            if (this == obj) {
+                return true;
+            }
+            if (obj instanceof UserPrincipal) {
+                UserPrincipal other = (UserPrincipal) obj;
+                return name.equals(other.name);
+            }
+            return false;
+        }
+
+        public int hashCode() {
+            return name.hashCode();
+        }
+
+        //------------------------------------------------------------< Principal >
+        /**
+         * {@inheritDoc}
+         */
+        public String getName() {
+            return name;
+        }
+    }
+
 }