Author: woonsan
Date: Sat Aug 30 00:27:30 2014
New Revision: 1621403

URL: http://svn.apache.org/r1621403
Log:
JS2-1302: dependency to webcontent2; making it compilable (removing old api 
usages; not working  yet)

Removed:
    
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/sso/DefaultSSOSiteCredentialsProviderImpl.java
    
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/sso/SSOTicketPortlet.java
    
portals/jetspeed-2/applications/j2-admin/trunk/src/test/java/org/apache/jetspeed/portlets/sso/TestSSOSiteCredentialsProvider.java
Modified:
    portals/jetspeed-2/applications/j2-admin/trunk/pom.xml
    
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/content/DynamicWebContentPortlet.java
    
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/content/DynamicWebContentRewriter.java
    
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/openid/OpenIDIFramePortlet.java
    
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/sso/SSOIFramePortlet.java
    
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/sso/SSOReverseProxyIFramePortlet.java
    
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/sso/SSOWebContentPortlet.java

Modified: portals/jetspeed-2/applications/j2-admin/trunk/pom.xml
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/pom.xml?rev=1621403&r1=1621402&r2=1621403&view=diff
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/pom.xml (original)
+++ portals/jetspeed-2/applications/j2-admin/trunk/pom.xml Sat Aug 30 00:27:30 
2014
@@ -37,7 +37,7 @@
     
<org.apache.portals.bridges.frameworks.version>1.0.4</org.apache.portals.bridges.frameworks.version>
     
<org.apache.portals.bridges.portletfilter.version>1.0.4</org.apache.portals.bridges.portletfilter.version>
     
<org.apache.portals.applications.apa-gems.version>1.2-SNAPSHOT</org.apache.portals.applications.apa-gems.version>
-    
<org.apache.portals.applications.apa-webcontent.version>1.4-SNAPSHOT</org.apache.portals.applications.apa-webcontent.version>
+    
<org.apache.portals.applications.apa-webcontent2.version>2.0-SNAPSHOT</org.apache.portals.applications.apa-webcontent2.version>
     <commons-digester.version>2.1</commons-digester.version>
     <commons-configuration.version>1.10</commons-configuration.version>
     <commons-lang.version>2.6</commons-lang.version>
@@ -397,14 +397,8 @@
     </dependency>
     <dependency>
       <groupId>org.apache.portals.applications</groupId>
-      <artifactId>apa-webcontent-jar</artifactId>
-      
<version>${org.apache.portals.applications.apa-webcontent.version}</version>
-      <exclusions>
-        <exclusion>
-          <groupId>commons-logging</groupId>
-          <artifactId>commons-logging</artifactId>
-        </exclusion>
-      </exclusions>
+      <artifactId>apa-webcontent2-portlets</artifactId>
+      
<version>${org.apache.portals.applications.apa-webcontent2.version}</version>
     </dependency>
        
        <!-- test dependencies -->

Modified: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/content/DynamicWebContentPortlet.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/content/DynamicWebContentPortlet.java?rev=1621403&r1=1621402&r2=1621403&view=diff
==============================================================================
--- 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/content/DynamicWebContentPortlet.java
 (original)
+++ 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/content/DynamicWebContentPortlet.java
 Sat Aug 30 00:27:30 2014
@@ -20,6 +20,7 @@ import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.io.PrintWriter;
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -27,15 +28,25 @@ import javax.portlet.ActionRequest;
 import javax.portlet.ActionResponse;
 import javax.portlet.PortletException;
 import javax.portlet.PortletMode;
+import javax.portlet.PortletRequest;
 import javax.portlet.RenderRequest;
 import javax.portlet.RenderResponse;
 
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang.StringUtils;
+import org.apache.http.client.methods.HttpGet;
 import org.apache.jetspeed.request.RequestContext;
-import 
org.apache.portals.applications.webcontent.portlet.WebContentHistoryPage;
-import org.apache.portals.applications.webcontent.portlet.WebContentPortlet;
-import org.apache.portals.applications.webcontent.rewriter.WebContentRewriter;
+import org.apache.portals.applications.webcontent2.portlet.WebContentPortlet;
+import 
org.apache.portals.applications.webcontent2.portlet.history.WebContentPage;
+import 
org.apache.portals.applications.webcontent2.portlet.rewriter.MappingRewriterController;
+import org.apache.portals.applications.webcontent2.portlet.rewriter.Rewriter;
+import 
org.apache.portals.applications.webcontent2.portlet.rewriter.RewriterController;
+import 
org.apache.portals.applications.webcontent2.portlet.rewriter.RewriterException;
+import 
org.apache.portals.applications.webcontent2.portlet.rewriter.WebContentRewriter;
+import 
org.apache.portals.applications.webcontent2.portlet.rewriter.html.neko.NekoParserAdaptor;
+import 
org.apache.portals.applications.webcontent2.portlet.rewriter.rules.Ruleset;
+import 
org.apache.portals.applications.webcontent2.portlet.rewriter.xml.SaxParserAdaptor;
 import org.apache.portals.messaging.PortletMessaging;
-
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -66,10 +77,10 @@ public class DynamicWebContentPortlet ex
         // extract rewritten action and save in page
         String webContentURL = 
actionRequest.getParameter(WebContentRewriter.ACTION_PARAMETER_URL);
         String webContentMethod = 
actionRequest.getParameter(WebContentRewriter.ACTION_PARAMETER_METHOD);
-        Map webContentParams = new HashMap(actionRequest.getParameterMap()) ;
+        Map<String, String[]> webContentParams = new 
HashMap(actionRequest.getParameterMap()) ;
         webContentParams.remove(WebContentRewriter.ACTION_PARAMETER_URL);
         webContentParams.remove(WebContentRewriter.ACTION_PARAMETER_METHOD);
-        WebContentHistoryPage webContentPage = new 
WebContentHistoryPage(webContentURL, webContentParams, webContentMethod);
+        WebContentPage webContentPage = new WebContentPage(webContentURL, 
webContentMethod, webContentParams);
         PortletMessaging.publish(actionRequest, getClass().getName(), 
webContentPage);        
     }
     
@@ -92,14 +103,14 @@ public class DynamicWebContentPortlet ex
         // get source web content URL, parameters, and method to view
         String sourceURL = null;
         Map sourceParams = null;
-        boolean sourcePostMethod = false;
-        WebContentHistoryPage webContentPage = 
(WebContentHistoryPage)PortletMessaging.receive(request, getClass().getName());
+        String sourceMethod = null;
+        WebContentPage webContentPage = 
(WebContentPage)PortletMessaging.receive(request, getClass().getName());
         if (webContentPage != null)
         {
             // view rewritten action URL page
             sourceURL = webContentPage.getUrl();
             sourceParams = webContentPage.getParams();
-            sourcePostMethod = webContentPage.isPost();            
+            sourceMethod = 
StringUtils.defaultIfBlank(webContentPage.getMethod(), HttpGet.METHOD_NAME);
         }
         else
         {
@@ -135,38 +146,51 @@ public class DynamicWebContentPortlet ex
 
         // get web content
         byte[] content = null;
+
         try
         {
-            // initialize and lock stateful rewriter
-            String basePortalPath = rc.getPortalURL().getPageBasePath();
-            initializeRewriter(DynamicWebContentRewriter.class);
-            
((DynamicWebContentRewriter)getRewriter()).setBasePortalPath(basePortalPath);
-        
             // get and rewrite web content
             if (log.isDebugEnabled())
             {
                 log.debug("Portal request: "+rc.getPath()+", Web content: 
"+sourceURL);
             }
-            try
-            {
-                content = doWebContent(sourceURL, sourceParams, 
sourcePostMethod, request, response);
-            }
-            catch (Throwable t)
-            {
-                throw new PortletException("Error retrieveing web content: 
"+t, t);
-            }
+
+            content = doWebContent(sourceMethod, sourceURL, sourceParams, 
request, response);
+
+            // write web content to portlet writer
+            response.setContentType("text/html");
+            PrintWriter writer = response.getWriter();
+            ByteArrayInputStream bais = new ByteArrayInputStream(content);
+            IOUtils.copy(new InputStreamReader(bais, "UTF-8"), writer);
+            bais.close();
         }
-        finally
+        catch (Throwable t)
         {
-            // unlock stateful rewriter
-            freeRewriter();
+            throw new PortletException("Error retrieveing web content: "+t, t);
         }
+    }
+
+    @Override
+    protected RewriterController getRewriterController(String contextPath) 
throws Exception
+    {
+        Class[] rewriterClasses = new Class[] { 
DynamicWebContentRewriter.class, DynamicWebContentRewriter.class };
+        Class[] adaptorClasses = new Class[] { NekoParserAdaptor.class, 
SaxParserAdaptor.class };
+        RewriterController rewriterController = 
+                        new MappingRewriterController(contextPath + 
"conf/rewriter-rules-mapping.xml", 
+                                                      
Arrays.asList(rewriterClasses),
+                                                      
Arrays.asList(adaptorClasses));
+        return rewriterController;
+    }
+
+    @Override
+    protected Rewriter createRewriter(PortletRequest request, 
RewriterController rewriterController, Ruleset ruleset) throws RewriterException
+    {
+        RequestContext rc = (RequestContext) 
request.getAttribute(RequestContext.REQUEST_PORTALENV);
+        String basePortalPath = rc.getPortalURL().getPageBasePath();
+
+        DynamicWebContentRewriter rewriter = (DynamicWebContentRewriter) 
super.createRewriter(request, rewriterController, ruleset);
+        rewriter.setBasePortalPath(basePortalPath);
 
-        // write web content to portlet writer
-        response.setContentType("text/html");
-        PrintWriter writer = response.getWriter();
-        ByteArrayInputStream bais = new ByteArrayInputStream(content);
-        drain(new InputStreamReader(bais, defaultEncoding), writer);
-        bais.close();
+        return rewriter;
     }
 }

Modified: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/content/DynamicWebContentRewriter.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/content/DynamicWebContentRewriter.java?rev=1621403&r1=1621402&r2=1621403&view=diff
==============================================================================
--- 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/content/DynamicWebContentRewriter.java
 (original)
+++ 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/content/DynamicWebContentRewriter.java
 Sat Aug 30 00:27:30 2014
@@ -16,14 +16,13 @@
  */
 package org.apache.jetspeed.portlets.content;
 
-import java.util.regex.Pattern;
 import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 import javax.portlet.PortletURL;
 
-import org.apache.portals.applications.webcontent.rewriter.MutableAttributes;
-import org.apache.portals.applications.webcontent.rewriter.WebContentRewriter;
-
+import 
org.apache.portals.applications.webcontent2.portlet.rewriter.MutableAttributes;
+import 
org.apache.portals.applications.webcontent2.portlet.rewriter.WebContentRewriter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 

Modified: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/openid/OpenIDIFramePortlet.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/openid/OpenIDIFramePortlet.java?rev=1621403&r1=1621402&r2=1621403&view=diff
==============================================================================
--- 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/openid/OpenIDIFramePortlet.java
 (original)
+++ 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/openid/OpenIDIFramePortlet.java
 Sat Aug 30 00:27:30 2014
@@ -27,10 +27,7 @@ import javax.security.auth.Subject;
 
 import org.apache.jetspeed.PortalReservedParameters;
 import org.apache.jetspeed.request.RequestContext;
-import org.apache.portals.applications.webcontent.portlet.IFrameGenericPortlet;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import 
org.apache.portals.applications.webcontent2.portlet.IFrameGenericPortlet;
 
 /**
  * IFrame portlet variant that loads content only when the portal
@@ -41,7 +38,6 @@ import org.slf4j.LoggerFactory;
  */
 public class OpenIDIFramePortlet extends IFrameGenericPortlet
 {
-    private static final Logger log = 
LoggerFactory.getLogger(OpenIDLoginPortlet.class);
 
     public static final String SESSION_OPEN_ID_PROVIDER_ATTR_NAME = 
"sessionOpenIDProvider";
     public static final String REQUIRED_OPEN_ID_PROVIDER_ATTR_NAME = 
"requiredOpenIDProvider";

Modified: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/sso/SSOIFramePortlet.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/sso/SSOIFramePortlet.java?rev=1621403&r1=1621402&r2=1621403&view=diff
==============================================================================
--- 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/sso/SSOIFramePortlet.java
 (original)
+++ 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/sso/SSOIFramePortlet.java
 Sat Aug 30 00:27:30 2014
@@ -38,7 +38,7 @@ import org.apache.jetspeed.sso.SSOManage
 import org.apache.jetspeed.sso.SSOSite;
 import org.apache.jetspeed.sso.SSOUser;
 import org.apache.portals.applications.gems.browser.StatusMessage;
-import org.apache.portals.applications.webcontent.portlet.IFrameGenericPortlet;
+import 
org.apache.portals.applications.webcontent2.portlet.IFrameGenericPortlet;
 import org.apache.portals.messaging.PortletMessaging;
 
 /**

Modified: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/sso/SSOReverseProxyIFramePortlet.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/sso/SSOReverseProxyIFramePortlet.java?rev=1621403&r1=1621402&r2=1621403&view=diff
==============================================================================
--- 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/sso/SSOReverseProxyIFramePortlet.java
 (original)
+++ 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/sso/SSOReverseProxyIFramePortlet.java
 Sat Aug 30 00:27:30 2014
@@ -16,30 +16,20 @@
  */
 package org.apache.jetspeed.portlets.sso;
 
-import java.io.IOException;
 import java.net.URI;
 import java.security.AccessController;
-import java.util.ArrayList;
 import java.util.Collection;
-import java.util.List;
 
 import javax.portlet.PortletConfig;
 import javax.portlet.PortletException;
-import javax.portlet.PortletSession;
-import javax.portlet.RenderRequest;
-import javax.portlet.RenderResponse;
 import javax.security.auth.Subject;
 
-import org.apache.commons.lang.StringUtils;
 import org.apache.jetspeed.security.JSSubject;
 import org.apache.jetspeed.security.PasswordCredential;
 import org.apache.jetspeed.sso.SSOManager;
 import org.apache.jetspeed.sso.SSOSite;
 import org.apache.jetspeed.sso.SSOUser;
-import org.apache.portals.applications.webcontent.portlet.IFrameGenericPortlet;
-import 
org.apache.portals.applications.webcontent.proxy.HttpReverseProxyConstants;
-import org.apache.portals.applications.webcontent.proxy.SSOSiteCredentials;
-import 
org.apache.portals.applications.webcontent.proxy.impl.DefaultSSOSiteCredentials;
+import 
org.apache.portals.applications.webcontent2.portlet.IFrameGenericPortlet;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -68,60 +58,34 @@ public class SSOReverseProxyIFramePortle
             throw new PortletException("Failed to find SSO Provider on portlet 
initialization"); 
         }
     }
-    
-    @Override
-    public void doView(RenderRequest request, RenderResponse response) throws 
PortletException, IOException
-    {
-        List<SSOSiteCredentials> ssoSiteCredsOfSubject = 
(List<SSOSiteCredentials>) 
request.getPortletSession().getAttribute(SUBJECT_SSO_SITE_CREDS, 
PortletSession.APPLICATION_SCOPE);
-        
-        if (ssoSiteCredsOfSubject == null)
-        {
-            request.getPortletSession().setAttribute(SUBJECT_SSO_SITE_CREDS, 
createSSOSiteCredentialsOfSubject(), PortletSession.APPLICATION_SCOPE);
-            
request.getPortletSession().setAttribute(HttpReverseProxyConstants.SSO_SITE_CREDENTIALS_PROVIDER,
 new DefaultSSOSiteCredentialsProviderImpl(), PortletSession.APPLICATION_SCOPE);
-        }
-        
-        super.doView(request, response);
-    }
-    
-    private List<SSOSiteCredentials> createSSOSiteCredentialsOfSubject()
+
+    // TODO
+    private void readSSOSiteCredentialsOfSubject()
     {
-        List<SSOSiteCredentials> ssoSiteCredsOfSubject = new 
ArrayList<SSOSiteCredentials>();
-            
         try
         {
             Subject subject = 
JSSubject.getSubject(AccessController.getContext());
             Collection<SSOSite> ssoSites = 
ssoManager.getSitesForSubject(subject);
-            
+
             if (ssoSites != null)
             {
                 for (SSOSite ssoSite : ssoSites)
                 {
                     URI siteURI = URI.create(ssoSite.getURL());
                     Collection<SSOUser> ssoUsers = 
ssoManager.getRemoteUsers(ssoSite, subject);
-                    
+
                     if (ssoUsers != null)
                     {
                         for (SSOUser ssoUser : ssoUsers)
                         {
-                            DefaultSSOSiteCredentials ssoCreds = new 
DefaultSSOSiteCredentials(ssoSite.getURL(), siteURI.getHost(), 
siteURI.getPort());
-                            
-                            if (!StringUtils.isBlank(ssoSite.getRealm()))
-                            {
-                                ssoCreds.setRealm(ssoSite.getRealm());
-                            }
-                            
+                            String realm = ssoSite.getRealm();
                             PasswordCredential pwc = 
ssoManager.getCredentials(ssoUser);
-                            ssoCreds.setUsername(pwc.getUserName());
-                            ssoCreds.setPassword(pwc.getPassword());
-                            
+                            String username = pwc.getUserName();
+                            String password = pwc.getPassword();
+
                             if (ssoSite.isFormAuthentication())
                             {
-                                ssoCreds.setFormAuthentication(true);
-                                
ssoCreds.setFormUserField(ssoSite.getFormUserField());
-                                
ssoCreds.setFormPwdField(ssoSite.getFormPwdField());
                             }
-                            
-                            ssoSiteCredsOfSubject.add(ssoCreds);
                         }
                     }
                 }
@@ -134,8 +98,5 @@ public class SSOReverseProxyIFramePortle
                 log.warn("Failed to retrieve sso site credentials. {}", 
e.toString());
             }
         }
-        
-        return ssoSiteCredsOfSubject;
     }
-    
 }

Modified: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/sso/SSOWebContentPortlet.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/sso/SSOWebContentPortlet.java?rev=1621403&r1=1621402&r2=1621403&view=diff
==============================================================================
--- 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/sso/SSOWebContentPortlet.java
 (original)
+++ 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/sso/SSOWebContentPortlet.java
 Sat Aug 30 00:27:30 2014
@@ -17,12 +17,8 @@
 package org.apache.jetspeed.portlets.sso;
 
 import java.io.IOException;
-import java.security.AccessControlContext;
-import java.security.AccessController;
-import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
-import java.util.StringTokenizer;
 
 import javax.portlet.ActionRequest;
 import javax.portlet.ActionResponse;
@@ -33,19 +29,9 @@ import javax.portlet.PortletMode;
 import javax.portlet.PortletPreferences;
 import javax.portlet.RenderRequest;
 import javax.portlet.RenderResponse;
-import javax.security.auth.Subject;
 
-import org.apache.commons.codec.binary.Base64;
-import org.apache.commons.httpclient.HttpClient;
-import org.apache.commons.httpclient.HttpMethod;
-import org.apache.commons.httpclient.NameValuePair;
-import org.apache.commons.httpclient.UsernamePasswordCredentials;
-import org.apache.commons.httpclient.auth.AuthScope;
-import org.apache.commons.httpclient.auth.AuthState;
 import org.apache.commons.httpclient.auth.BasicScheme;
-import org.apache.commons.httpclient.methods.PostMethod;
 import org.apache.jetspeed.CommonPortletServices;
-import org.apache.jetspeed.security.JSSubject;
 import org.apache.jetspeed.security.JetspeedPrincipal;
 import org.apache.jetspeed.security.PasswordCredential;
 import org.apache.jetspeed.security.SecurityException;
@@ -55,8 +41,8 @@ import org.apache.jetspeed.sso.SSOExcept
 import org.apache.jetspeed.sso.SSOManager;
 import org.apache.jetspeed.sso.SSOSite;
 import org.apache.portals.applications.gems.browser.StatusMessage;
-import org.apache.portals.applications.webcontent.portlet.WebContentPortlet;
-import org.apache.portals.applications.webcontent.rewriter.WebContentRewriter;
+import org.apache.portals.applications.webcontent2.portlet.WebContentPortlet;
+import 
org.apache.portals.applications.webcontent2.portlet.rewriter.WebContentRewriter;
 import org.apache.portals.messaging.PortletMessaging;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -66,30 +52,29 @@ import org.slf4j.LoggerFactory;
  * SSOWebContentPortlet
  * 
  * @author <a href="mailto:tay...@apache.org";>David Sean Taylor</a>
- * @version $Id$
  */
 public class SSOWebContentPortlet extends WebContentPortlet
 {
     // sso.type
     public static final String SSO_TYPE = "sso.type";
-    
-    public static final String SSO_TYPE_HTTP = "http";                         
 // BOZO - depricate in favor of 'basic'
-    public static final String SSO_TYPE_BASIC = "basic";          
+
+    public static final String SSO_TYPE_HTTP = "http";
+    public static final String SSO_TYPE_BASIC = "basic";
     public static final String SSO_TYPE_BASIC_PREEMPTIVE = "basic.preemptive";
-    
+
     public static final String SSO_TYPE_FORM = "form";
     public static final String SSO_TYPE_FORM_GET = "form.get";
     public static final String SSO_TYPE_FORM_POST = "form.post";
-    
+
     public static final String SSO_TYPE_URL = "url";
     public static final String SSO_TYPE_URL_BASE64 = "url.base64";
-    
+
     public static final String SSO_TYPE_CERTIFICATE = "certificate";
-    
+
     public static final String SSO_TYPE_DEFAULT = SSO_TYPE_BASIC;  // handled 
well even if nothing but credentials are set (see: doRequestedAuthentication)
-    
+
     public static final String NO_CREDENTIALS = "<p>No credentials configured 
for current user.</p>";
-               
+
     public static final String[] SSO_TYPES = 
     {
         SSO_TYPE_BASIC,
@@ -101,412 +86,225 @@ public class SSOWebContentPortlet extend
         SSO_TYPE_URL_BASE64,
         SSO_TYPE_CERTIFICATE
     };
-    
+
     // ...standardized auth types
-    
+
     public static final String BASIC_AUTH_SCHEME_NAME = (new 
BasicScheme()).getSchemeName();
 
     // supporting parameters - for various sso types
-    
+
     // ...names of query args for sso.type=url|url.base64
-    
+
     public static final String SSO_TYPE_URL_USERNAME_PARAM = 
"sso.url.Principal";
     public static final String SSO_TYPE_URL_PASSWORD_PARAM = 
"sso.url.Credential";
-    
+
     // ...names of fields for sso.type=form|form.get|form.post
-    
+
     public static final String SSO_TYPE_FORM_ACTION_URL = "sso.form.Action";
     public static final String SSO_TYPE_FORM_ACTION_ARGS = "sso.form.Args";
     public static final String SSO_TYPE_FORM_USERNAME_FIELD = 
"sso.form.Principal";
     public static final String SSO_TYPE_FORM_PASSWORD_FIELD = 
"sso.form.Credential";
-    
+
     // ...tags for passing creditials along on the current request object
-    
+
     public static final String SSO_REQUEST_ATTRIBUTE_USERNAME = 
"sso.ra.username";
     public static final String SSO_REQUEST_ATTRIBUTE_PASSWORD = 
"sso.ra.password";
-    
+
     // ...field names for EDIT mode
-    
+
     public static final String SSO_EDIT_FIELD_PRINCIPAL = "ssoPrincipal";
     public static final String SSO_EDIT_FIELD_CREDENTIAL = "ssoCredential";
-    
+
     // SSOWebContent session variables 
 
     public static final String FORM_AUTH_STATE = 
"ssowebcontent.form.authstate" ;
-    
-    
+
     // Class Data
-    
+
     protected final static Logger log = 
LoggerFactory.getLogger(SSOWebContentPortlet.class);
-    
-    
+
     // Data Members
-    
+
     protected PortletContext context;
     protected SSOManager sso;
     protected UserManager userManager;
     protected List<String> ssoTypesList;
-    
+
     // Methods
 
     public void init(PortletConfig config) throws PortletException
     {
         super.init(config);
+
         context = getPortletContext();
-        sso = (SSOManager)context.getAttribute("cps:SSO");
-        if (null == sso)
+
+        sso = (SSOManager) context.getAttribute("cps:SSO");
+
+        if (sso == null)
         {
            throw new PortletException("Failed to find SSO Manager on portlet 
initialization");
-        }        
+        }
+
         userManager = (UserManager) 
context.getAttribute(CommonPortletServices.CPS_USER_MANAGER_COMPONENT);
+
         if (null == userManager)
         {
             throw new PortletException("Failed to find the User Manager on 
portlet initialization");
         }
+
         ssoTypesList = new LinkedList<String>();
+
         for (String s : SSO_TYPES)
+        {
             ssoTypesList.add(s);
+        }
     }
-    
-    protected JetspeedPrincipal getLocalPrincipal(String localUserName){
+
+    protected JetspeedPrincipal getLocalPrincipal(String localUserName) {
         JetspeedPrincipal localPrincipal = null;
-        
+
         try{
             localPrincipal = userManager.getUser(localUserName);
         } catch (SecurityException secex){
-            
         }
-        
+
         return localPrincipal;
     }
-    
-    public void processAction(ActionRequest actionRequest, ActionResponse 
actionResponse)
-    throws PortletException, IOException
+
+    public void processAction(ActionRequest actionRequest, ActionResponse 
actionResponse) throws PortletException, IOException
     {
         // grab parameters - they will be cleared in processing of edit 
response
         String webContentParameter = 
actionRequest.getParameter(WebContentRewriter.ACTION_PARAMETER_URL);
         String ssoPrincipalName = 
actionRequest.getParameter(SSO_EDIT_FIELD_PRINCIPAL);
-        String ssoPrincipalPassword = 
actionRequest.getParameter(SSO_EDIT_FIELD_CREDENTIAL);        
+        String ssoPrincipalPassword = 
actionRequest.getParameter(SSO_EDIT_FIELD_CREDENTIAL);
 
         // save the prefs
         super.processAction(actionRequest, actionResponse);
-  
+
         // process credentials
-        if (webContentParameter == null || actionRequest.getPortletMode() == 
PortletMode.EDIT)            
+        if (webContentParameter == null || actionRequest.getPortletMode() == 
PortletMode.EDIT)
         {
             // processPreferencesAction(request, actionResponse);
             // get the POST params -- requires HTML post params named above 
             String siteUrl = actionRequest.getPreferences().getValue("SRC", 
"");
             String localUser = actionRequest.getUserPrincipal().getName();
             SSOSite site = sso.getSiteByUrl(siteUrl);
+
             try
-            {        
+            {
                 if (!SecurityHelper.isEmpty(siteUrl) && 
!SecurityHelper.isEmpty(ssoPrincipalName) && 
!SecurityHelper.isEmpty(ssoPrincipalPassword))
                 {
                     if (site == null)
                     {
                         site = sso.newSite(siteUrl, siteUrl);
                         sso.addSite(site);
-                        SSOPortletUtil.updateUser(sso, actionRequest, site, 
ssoPrincipalName, ssoPrincipalPassword);                                        
        
+                        SSOPortletUtil.updateUser(sso, actionRequest, site, 
ssoPrincipalName, ssoPrincipalPassword);
                     }
                     else
                     {
-                        SSOPortletUtil.updateUser(sso, actionRequest, site, 
ssoPrincipalName, ssoPrincipalPassword);                                
+                        SSOPortletUtil.updateUser(sso, actionRequest, site, 
ssoPrincipalName, ssoPrincipalPassword);
                     }
                 }
             }
             catch (SSOException e)
             {
                 String errorMessage = "Failed to add remote user for the 
portal principal, " + actionRequest.getUserPrincipal().getName() + ".";
+
                 if (e.getCause() != null)
                 {
                     errorMessage += " (" + e.getCause() + ")";
                 }
+
                 StatusMessage statusMessage = new StatusMessage(errorMessage, 
StatusMessage.ERROR);
-                PortletMessaging.publish(actionRequest, "SSOWebContent", 
"status", statusMessage);            
-                actionResponse.setPortletMode(PortletMode.EDIT); // stay on 
edit                
-            }                
+                PortletMessaging.publish(actionRequest, "SSOWebContent", 
"status", statusMessage);
+                actionResponse.setPortletMode(PortletMode.EDIT); // stay on 
edit
+            }
         }
     }
-        
-    public void doView(RenderRequest request, RenderResponse response)
-    throws PortletException, IOException
+
+    public void doView(RenderRequest request, RenderResponse response) throws 
PortletException, IOException
     {
         String siteName = request.getPreferences().getValue("SRC", null);
         SSOSite site = null;
+
         if (siteName != null)
         {
             site = sso.getSiteByUrl(siteName);
         }
+
         if (site == null)
         {
             response.getWriter().print(NO_CREDENTIALS);
             return;
         }
-        else 
+        else
         {
-               PasswordCredential pwc = 
SSOPortletUtil.getCredentialsForSite(sso,siteName,request);
-               if (pwc != null)
-               {
+            PasswordCredential pwc = 
SSOPortletUtil.getCredentialsForSite(sso,siteName,request);
+
+            if (pwc != null)
+            {
                 request.setAttribute(SSO_REQUEST_ATTRIBUTE_USERNAME, 
pwc.getUserName());
                 request.setAttribute(SSO_REQUEST_ATTRIBUTE_PASSWORD, 
pwc.getPassword());
-               } else 
-               {
+            }
+            else
+            {
                 response.getWriter().print(NO_CREDENTIALS);
                 return;
-               }
+            }
         }
-        StatusMessage msg = (StatusMessage)PortletMessaging.consume(request, 
"SSOWebContent", "status");
+
+        StatusMessage msg = (StatusMessage) PortletMessaging.consume(request, 
"SSOWebContent", "status");
+
         if (msg != null)
         {
-            this.getContext(request).put("statusMsg", msg);            
-        }                          
+            this.getContext(request).put("statusMsg", msg);
+        }
+
         super.doView(request, response);
     }
-    
 
-    public void doEdit(RenderRequest request, RenderResponse response)
-    throws PortletException, IOException
+    public void doEdit(RenderRequest request, RenderResponse response) throws 
PortletException, IOException
     {
         String site = request.getPreferences().getValue("SRC", "");
-       PasswordCredential pwc = 
SSOPortletUtil.getCredentialsForSite(sso,site,request);
-       if (pwc != null)
-       {
+        PasswordCredential pwc = 
SSOPortletUtil.getCredentialsForSite(sso,site,request);
+
+        if (pwc != null)
+        {
             getContext(request).put(SSO_EDIT_FIELD_PRINCIPAL, 
pwc.getUserName());
             getContext(request).put(SSO_EDIT_FIELD_CREDENTIAL, 
pwc.getPassword());
-        } 
-       else 
-       {
+        }
+               else
+        {
             // no credentials configured in SSO store
             // switch to SSO Configure View
             getContext(request).put(SSO_EDIT_FIELD_PRINCIPAL, "");
             getContext(request).put(SSO_EDIT_FIELD_CREDENTIAL, "");
         }
+
         StatusMessage msg = (StatusMessage)PortletMessaging.consume(request, 
"SSOWebContent", "status");
-        if (msg != null)
-        {
-            this.getContext(request).put("statusMsg", msg);            
-        }     
-        this.getContext(request).put("ssoTypes", SSO_TYPES);
-        this.getContext(request).put("ssoTypeSelected", 
request.getPreferences().getValue("sso.type", SSO_TYPE_BASIC));
-        super.doEdit(request, response);
-    }
 
-    private Subject getSubject()
-    {
-        AccessControlContext context = AccessController.getContext();
-        return JSSubject.getSubject(context);         
-    }
-    
-    protected byte[] doPreemptiveAuthentication(HttpClient client,HttpMethod 
method, RenderRequest request, RenderResponse response)
-    {
-       byte[] result = super.doPreemptiveAuthentication(client, method, 
request, response);
-        if ( result != null)
+        if (msg != null)
         {
-            // already handled
-            return result ;
+            this.getContext(request).put("statusMsg", msg);
         }
-        
-        // 
System.out.println("SSOWebContentPortlet.doPreemptiveAuthentication...");
-        
-        PortletPreferences prefs = request.getPreferences();
-        String type = getSingleSignOnAuthType(prefs);
-
-        if (type.equalsIgnoreCase(SSO_TYPE_BASIC_PREEMPTIVE))
-        {
-            // Preemptive, basic authentication
-            String userName = 
(String)request.getAttribute(SSO_REQUEST_ATTRIBUTE_USERNAME);
-            if (userName == null) userName = "";
-            String password = 
(String)request.getAttribute(SSO_REQUEST_ATTRIBUTE_PASSWORD);
-            if (password == null) password = "";
-            
-            // System.out.println("...performing preemptive basic 
authentication with userName: "+userName+", and password: "+password);
-            method.setDoAuthentication(true);
-            method.getHostAuthState().setPreemptive();
-            client.getState().setCredentials(AuthScope.ANY, new 
UsernamePasswordCredentials(userName, password));
-            
-            // handled!
-            return result ;
-            
-        }
-        else if (type.startsWith(SSO_TYPE_FORM))
-        {
-            try
-            {
-                Boolean formAuth = (Boolean)PortletMessaging.receive(request, 
FORM_AUTH_STATE);
-                if (formAuth != null)
-                {
-                    // already been here, done that
-                    return (formAuth.booleanValue() ? result : null);
-                }
-                else
-                {
-                    // stop recursion, but assume failure, ...for now
-                    PortletMessaging.publish(request, FORM_AUTH_STATE, 
Boolean.FALSE);
-                }
 
-                String formAction = prefs.getValue(SSO_TYPE_FORM_ACTION_URL, 
"");
-                if (formAction == null || formAction.length() == 0)
-                {
-                    log.warn("sso.type specified as 'form', but no: 
"+SSO_TYPE_FORM_ACTION_URL+", action was specified - unable to preemptively 
authenticate by form.");
-                    return null ;
-                }
-                String userNameField = 
prefs.getValue(SSO_TYPE_FORM_USERNAME_FIELD, "");
-                if (userNameField == null || userNameField.length() == 0)
-                {
-                    log.warn("sso.type specified as 'form', but no: 
"+SSO_TYPE_FORM_USERNAME_FIELD+", username field was specified - unable to 
preemptively authenticate by form.");
-                    return null ;
-                }
-                String passwordField = 
prefs.getValue(SSO_TYPE_FORM_PASSWORD_FIELD, "password");
-                if (passwordField == null || passwordField.length() == 0)
-                {
-                    log.warn("sso.type specified as 'form', but no: 
"+SSO_TYPE_FORM_PASSWORD_FIELD+", password field was specified - unable to 
preemptively authenticate by form.");
-                    return null ;
-                }
-                
-                String userName = 
(String)request.getAttribute(SSO_REQUEST_ATTRIBUTE_USERNAME);
-                if (userName == null) userName = "";
-                String password = 
(String)request.getAttribute(SSO_REQUEST_ATTRIBUTE_PASSWORD);
-                if (password == null) password = "";
-
-                // get submit method
-                int i = type.indexOf('.');
-                boolean isPost = i > 0 ? 
type.substring(i+1).equalsIgnoreCase("post") : true ;    // default to post, 
since it is a form 
-            
-                // get parameter map
-                HashMap formParams = new HashMap();
-                formParams.put(userNameField,new String[]{ userName });
-                formParams.put(passwordField,new String[]{ password });
-                String formArgs = prefs.getValue(SSO_TYPE_FORM_ACTION_ARGS, 
"");
-                if (formArgs != null && formArgs.length() > 0)
-                {
-                    StringTokenizer iter = new StringTokenizer(formArgs, ";");
-                    while (iter.hasMoreTokens())
-                    {
-                        String pair = iter.nextToken();
-                        i = pair.indexOf('=') ;
-                        if (i > 0)
-                            formParams.put(pair.substring(0,i), new 
String[]{pair.substring(i+1)});
-                    }
-                }
+        this.getContext(request).put("ssoTypes", SSO_TYPES);
+        this.getContext(request).put("ssoTypeSelected", 
request.getPreferences().getValue("sso.type", SSO_TYPE_BASIC));
 
-                // resuse client - in case new cookies get set - but create a 
new method (for the formAction)
-                String formMethod = (isPost) ? FORM_POST_METHOD : 
FORM_GET_METHOD;                
-                method = getHttpMethod(client, getURLSource(formAction, 
formParams, request, response), formParams, formMethod, request);
-                // System.out.println("...posting credentials");
-                result = doHttpWebContent(client, method, 0, request, 
response) ;
-                // System.out.println("Result of attempted authorization: 
"+success);
-                PortletMessaging.publish(request, FORM_AUTH_STATE, 
Boolean.valueOf(result != null));
-                return result ;
-            }
-            catch (Exception ex)
-            {
-                // bad
-                log.error("Form-based authentication failed", ex);
-            }
-        }
-        else if (type.equalsIgnoreCase(SSO_TYPE_URL) || 
type.equalsIgnoreCase(SSO_TYPE_URL_BASE64))
-        {
-            // set user name and password parameters in the HttpMethod
-            String userNameParam = prefs.getValue(SSO_TYPE_URL_USERNAME_PARAM, 
"");
-            if (userNameParam == null || userNameParam.length() == 0)
-            {
-                log.warn("sso.type specified as 'url', but no: 
"+SSO_TYPE_URL_USERNAME_PARAM+", username parameter was specified - unable to 
preemptively authenticate by URL.");
-                return null ;
-            }
-            String passwordParam = prefs.getValue(SSO_TYPE_URL_PASSWORD_PARAM, 
"");
-            if (passwordParam == null || passwordParam.length() == 0)
-            {
-                log.warn("sso.type specified as 'url', but no: 
"+SSO_TYPE_URL_PASSWORD_PARAM+", password parameter was specified - unable to 
preemptively authenticate by URL.");
-                return null ;
-            }
-            String userName = 
(String)request.getAttribute(SSO_REQUEST_ATTRIBUTE_USERNAME);
-            if (userName == null) userName = "";
-            String password = 
(String)request.getAttribute(SSO_REQUEST_ATTRIBUTE_PASSWORD);
-            if (password == null) password = "";
-            if (type.equalsIgnoreCase(SSO_TYPE_URL_BASE64))
-            {
-                Base64 encoder = new Base64() ;
-                userName = new String(encoder.encode(userName.getBytes()));
-                password = new String(encoder.encode(password.getBytes()));
-            }
-            
-            // GET and POST accept args differently
-            if ( method instanceof PostMethod )
-            {
-                // add POST data
-                PostMethod postMethod = (PostMethod)method ;
-                postMethod.addParameter(userNameParam, userName);
-                postMethod.addParameter(passwordParam, password);
-            }
-            else
-            {
-                // augment GET query string
-                NameValuePair[] authPairs = new NameValuePair[]{ new 
NameValuePair(userNameParam, userName), new NameValuePair(passwordParam, 
password) } ; 
-                String existingQuery = method.getQueryString() ;
-                method.setQueryString(authPairs);
-                if (existingQuery != null && existingQuery.length() > 0)
-                {
-                    // augment existing query with new auth query
-                    existingQuery = existingQuery + '&' + 
method.getQueryString();
-                    method.setQueryString(existingQuery);
-                }
-            }
-            
-            return result ;
-        }
-        // else System.out.println("...sso.type: "+type+", no pre-emptive 
authentication");
-        
-        // not handled
-        return null ;
+        super.doEdit(request, response);
     }
 
-    protected boolean doRequestedAuthentication(HttpClient client,HttpMethod 
method, RenderRequest request, RenderResponse response)
-    {
-        if ( super.doRequestedAuthentication(client, method, request, 
response))
-        {
-            // already handled
-            return true ;
-        }
-        
-        // 
System.out.println("SSOWebContentPortlet.doRequestedAuthentication...");
-        
-        if 
(method.getHostAuthState().getAuthScheme().getSchemeName().equals(BASIC_AUTH_SCHEME_NAME))
-        {
-            // Basic authentication being requested
-            String userName = 
(String)request.getAttribute(SSO_REQUEST_ATTRIBUTE_USERNAME);
-            if (userName == null) userName = "";
-            String password = 
(String)request.getAttribute(SSO_REQUEST_ATTRIBUTE_PASSWORD);
-            if (password == null) password = "";
-            
-            // System.out.println("...providing basic authentication with 
userName: "+userName+", and password: "+password);
-            method.setDoAuthentication(true);
-            AuthState state = method.getHostAuthState();
-            AuthScope scope = new AuthScope(AuthScope.ANY_HOST, 
AuthScope.ANY_PORT, state.getRealm(), state.getAuthScheme().getSchemeName()) ;
-            client.getState().setCredentials(scope, new 
UsernamePasswordCredentials(userName, password));
-            
-            // handled!
-            return true ;
-        }
-        else
-        {
-            log.warn("SSOWebContentPortlent.doAuthenticate() - unexpected 
authentication scheme: 
"+method.getHostAuthState().getAuthScheme().getSchemeName());
-        }
-
-        // only know how to handle Basic authentication, in this context
-        return false;
-    }
-    
     protected String getSingleSignOnAuthType(PortletPreferences prefs)
     {
         String type = prefs.getValue(SSO_TYPE,SSO_TYPE_DEFAULT);
-        
+
         if (type != null && type.equalsIgnoreCase(SSO_TYPE_HTTP))
         {
             log.warn("sso.type: "+SSO_TYPE_HTTP+", has been deprecated - use: 
"+SSO_TYPE_BASIC+", or: "+SSO_TYPE_BASIC_PREEMPTIVE);
-            type = SSO_TYPE_BASIC ;
+            type = SSO_TYPE_BASIC;
         }
-        
-        return type ;
+
+        return type;
     }
+
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscr...@portals.apache.org
For additional commands, e-mail: jetspeed-dev-h...@portals.apache.org

Reply via email to