Author: ate
Date: Tue Feb 20 08:37:11 2007
New Revision: 509633

URL: http://svn.apache.org/viewvc?view=rev&rev=509633
Log:
This implements JS2-275 feature request: Option to make Action URLs relative or 
absolute
See: https://issues.apache.org/jira/browse/JS2-275#action_12474326

Modified:
    
portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/security/SecurityUtil.java
    
portals/jetspeed-2/trunk/components/header-resource/src/java/org/apache/jetspeed/headerresource/impl/HeaderResourceImpl.java
    
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/container/url/impl/AbstractPortalURL.java
    
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/velocity/JetspeedPowerToolImpl.java
    
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/velocity/JetspeedVelocityViewServlet.java
    
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/container/url/PortalURL.java
    
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/headerresource/HeaderResourceLib.java
    portals/jetspeed-2/trunk/src/webapp/WEB-INF/conf/jetspeed.properties

Modified: 
portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/security/SecurityUtil.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/security/SecurityUtil.java?view=diff&rev=509633&r1=509632&r2=509633
==============================================================================
--- 
portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/security/SecurityUtil.java
 (original)
+++ 
portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/security/SecurityUtil.java
 Tue Feb 20 08:37:11 2007
@@ -69,8 +69,11 @@
         RequestContext requestContext = (RequestContext) 
renderRequest.getAttribute(PortalReservedParameters.REQUEST_CONTEXT_ATTRIBUTE);
         HttpServletRequest request = requestContext.getRequest();
         StringBuffer path = new StringBuffer();
-        return 
requestContext.getResponse().encodeURL(path.append(request.getScheme()).append("://").append(request.getServerName()).append(":").append(
-                
request.getServerPort()).append(request.getContextPath()).append(request.getServletPath()).append(
+        if ( !requestContext.getPortalURL().isRelativeOnly() )
+        {
+            
path.append(request.getScheme()).append("://").append(request.getServerName()).append(":").append(request.getServerPort());
+        }
+        return 
requestContext.getResponse().encodeURL(path.append(request.getContextPath()).append(request.getServletPath()).append(
                 relativePath).toString());
     }
     

Modified: 
portals/jetspeed-2/trunk/components/header-resource/src/java/org/apache/jetspeed/headerresource/impl/HeaderResourceImpl.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/components/header-resource/src/java/org/apache/jetspeed/headerresource/impl/HeaderResourceImpl.java?view=diff&rev=509633&r1=509632&r2=509633
==============================================================================
--- 
portals/jetspeed-2/trunk/components/header-resource/src/java/org/apache/jetspeed/headerresource/impl/HeaderResourceImpl.java
 (original)
+++ 
portals/jetspeed-2/trunk/components/header-resource/src/java/org/apache/jetspeed/headerresource/impl/HeaderResourceImpl.java
 Tue Feb 20 08:37:11 2007
@@ -877,7 +877,9 @@
         StringBuffer basetagOut = new StringBuffer();
         // <script type="text/javascript" 
src='http://localhost:8080/jetspeed/javascript/dojo/dojo.js'></script>
         // 
src='$jetspeedDesktop.getPortalResourceUrl("/javascript/dojo/dojo.js")'
-        basetagOut.append( "<base href=\"" ).append( getPortalResourceUrl( 
"/", false ) ).append( "\">" );
+        String fullPortalBaseUrl = HeaderResourceLib.getPortalBaseUrl( 
this.requestContext, this.baseUrlAccess, true );
+        String href = HeaderResourceLib.getPortalResourceUrl( "/", 
fullPortalBaseUrl, false, this.requestContext );
+        basetagOut.append( "<base href=\"" ).append( href ).append( "\">" );
         return basetagOut.toString();
     }
     

Modified: 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/container/url/impl/AbstractPortalURL.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/container/url/impl/AbstractPortalURL.java?view=diff&rev=509633&r1=509632&r2=509633
==============================================================================
--- 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/container/url/impl/AbstractPortalURL.java
 (original)
+++ 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/container/url/impl/AbstractPortalURL.java
 Tue Feb 20 08:37:11 2007
@@ -47,6 +47,7 @@
     protected NavigationalState navState;
     protected BasePortalURL base = null;
     
+    protected boolean relativeOnly;
     protected String contextPath;
     protected String basePath;
     protected String path;
@@ -70,8 +71,8 @@
                 
portalContext.getConfigurationProperty("portalurl.navigationalstate.parameter.name",
 
                         DEFAULT_NAV_STATE_PARAMETER);
         }
-        
         this.navState = navState;        
+        relativeOnly = 
Boolean.valueOf(portalContext.getConfigurationProperty("portalurl.relative.only",
 "false")).booleanValue();
     }
     
     
@@ -87,6 +88,11 @@
         setRequest(request);
     }
     
+    public boolean isRelativeOnly()
+    {
+        return relativeOnly;
+    }
+    
     public static String getNavigationalStateParameterName()
     {
         return navStateParameter;
@@ -127,24 +133,31 @@
             base.setServerName(request.getServerName());
             base.setServerPort(request.getServerPort());
             base.setSecure(request.isSecure());            
-        }        
-        StringBuffer buffer;
-       
-        buffer = new StringBuffer(HTTPS);
-        buffer.append("://").append(base.getServerName());
-        if (base.getServerPort() != 443 && base.getServerPort() != 80)
-           {
-            buffer.append(":").append(base.getServerPort());
-        }
-        this.secureBaseURL = buffer.toString();
-           
-        buffer = new StringBuffer(HTTP);
-        buffer.append("://").append(base.getServerName());
-        if (base.getServerPort() != 443 && base.getServerPort() != 80)
+        }
+        if ( relativeOnly )
+        {
+            this.secureBaseURL = this.nonSecureBaseURL = "";
+        }
+        else
         {
-             buffer.append(":").append(base.getServerPort());
+            StringBuffer buffer;
+            
+            buffer = new StringBuffer(HTTPS);
+            buffer.append("://").append(base.getServerName());
+            if (base.getServerPort() != 443 && base.getServerPort() != 80)
+            {
+                buffer.append(":").append(base.getServerPort());
+            }
+            this.secureBaseURL = buffer.toString();
+            
+            buffer = new StringBuffer(HTTP);
+            buffer.append("://").append(base.getServerName());
+            if (base.getServerPort() != 443 && base.getServerPort() != 80)
+            {
+                 buffer.append(":").append(base.getServerPort());
+            }
+            this.nonSecureBaseURL = buffer.toString();
         }
-        this.nonSecureBaseURL = buffer.toString();
     }
     
     protected void decodeBasePath(HttpServletRequest request)

Modified: 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/velocity/JetspeedPowerToolImpl.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/velocity/JetspeedPowerToolImpl.java?view=diff&rev=509633&r1=509632&r2=509633
==============================================================================
--- 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/velocity/JetspeedPowerToolImpl.java
 (original)
+++ 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/velocity/JetspeedPowerToolImpl.java
 Tue Feb 20 08:37:11 2007
@@ -789,18 +789,19 @@
         {
             HttpServletRequest request = getRequestContext().getRequest();
             StringBuffer path = new StringBuffer();
-            if (this.baseUrlAccess == null)
+            if ( !getRequestContext().getPortalURL().isRelativeOnly() )
             {
-                return 
renderResponse.encodeURL(path.append(request.getScheme()).append("://").append(
-                
request.getServerName()).append(":").append(request.getServerPort()).append(
-                
request.getContextPath()).append(request.getServletPath()).append(relativePath).toString());
                
-            }
-            else
-            {
-                return 
renderResponse.encodeURL(path.append(baseUrlAccess.getServerScheme()).append("://").append(
-                        
baseUrlAccess.getServerName()).append(":").append(baseUrlAccess.getServerPort()).append(
-                        
request.getContextPath()).append(request.getServletPath()).append(relativePath).toString());
                                
+                if (this.baseUrlAccess == null)
+                {
+                    
path.append(request.getScheme()).append("://").append(request.getServerName()).append(":").append(request.getServerPort());
+                }
+                else
+                {
+                    
path.append(baseUrlAccess.getServerScheme()).append("://").append(baseUrlAccess.getServerName()).append(":").append(baseUrlAccess.getServerPort());
+                }
             }
+            return 
renderResponse.encodeURL(path.append(request.getContextPath()).append(request.getServletPath()).append(relativePath).toString());
+              
         }
         else
         {

Modified: 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/velocity/JetspeedVelocityViewServlet.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/velocity/JetspeedVelocityViewServlet.java?view=diff&rev=509633&r1=509632&r2=509633
==============================================================================
--- 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/velocity/JetspeedVelocityViewServlet.java
 (original)
+++ 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/velocity/JetspeedVelocityViewServlet.java
 Tue Feb 20 08:37:11 2007
@@ -272,9 +272,12 @@
         ctx.put("windowStateNormal", WindowState.NORMAL);
         ctx.put("windowStateMinimized", WindowState.MINIMIZED);
         ctx.put("windowStateMaximized", WindowState.MAXIMIZED);
-        StringBuffer appRoot = new 
StringBuffer(request.getScheme()).append("://")
-                                   .append(request.getServerName()).append(":")
-                                   
.append(request.getServerPort()).append(renderRequest.getContextPath());
+        StringBuffer appRoot = new StringBuffer();
+        if (!requestContext.getPortalURL().isRelativeOnly())
+        {
+            
appRoot.append(request.getScheme()).append("://").append(request.getServerName()).append(":").append(request.getServerPort());
+        }
+        appRoot.append(renderRequest.getContextPath());
         ctx.put("appRoot", appRoot.toString());        
         
         

Modified: 
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/container/url/PortalURL.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/container/url/PortalURL.java?view=diff&rev=509633&r1=509632&r2=509633
==============================================================================
--- 
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/container/url/PortalURL.java
 (original)
+++ 
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/container/url/PortalURL.java
 Tue Feb 20 08:37:11 2007
@@ -45,6 +45,11 @@
     public static final String HTTPS = "https";
     
     /**
+     * @return true if only relative urls should be generated (without scheme, 
servername, port)
+     */
+    boolean isRelativeOnly();
+    
+    /**
      * Gets the Base URL for this portal.
      * 
      * @return The Base URL of the portal.

Modified: 
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/headerresource/HeaderResourceLib.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/headerresource/HeaderResourceLib.java?view=diff&rev=509633&r1=509632&r2=509633
==============================================================================
--- 
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/headerresource/HeaderResourceLib.java
 (original)
+++ 
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/headerresource/HeaderResourceLib.java
 Tue Feb 20 08:37:11 2007
@@ -127,16 +127,40 @@
      */
     public static String getPortalBaseUrl( RequestContext requestContext, 
BasePortalURL baseUrlAccessOverride )
     {
+        return getPortalBaseUrl(requestContext, baseUrlAccessOverride, false);
+    }
+    
+    /**
+     * Portal base url ( e.g. http://localhost:8080/jetspeed )
+     * 
+     * The optional BasePortalURL argument is provided to allow the common 
BasePortalURL usage by various jetspeed components 
+     * to be properly supported in this url generation
+     * 
+     * When the fullUrl parameter is true, the scheme, servername and port 
will be provided in the baseUrl,
+     * regardless if global property portalurl.relative.only is set to true in 
jetspeed.properties.
+     * This is needed for HeaderResourceImpl.jetspeedGenerateBasetag() for 
rendering a valid base tag (for which IE requires an absolute url to work).
+     * <br/>
+     * Note: if portalurl.relative.only is set to true to support a Proxy 
based front end, better remove de (default) "header.basetag" rendering setting
+     * from assembly/headtag.xml, otherwise the desktop still won't work 
properly behind the Proxy.
+     * 
+     * @return portal base url
+     */
+    public static String getPortalBaseUrl( RequestContext requestContext, 
BasePortalURL baseUrlAccessOverride, boolean fullUrl )
+    {
         HttpServletRequest request = requestContext.getRequest();
         StringBuffer baseurl = new StringBuffer();
-        if ( baseUrlAccessOverride == null )
+        if ( fullUrl || !requestContext.getPortalURL().isRelativeOnly() )
         {
-            baseurl.append( request.getScheme() ).append( "://" ).append( 
request.getServerName() ).append( ":" ).append( request.getServerPort() 
).append( request.getContextPath() );
-        }
-        else
-        {
-            baseurl.append( baseUrlAccessOverride.getServerScheme() ).append( 
"://" ).append( baseUrlAccessOverride.getServerName() ).append( ":" ).append( 
baseUrlAccessOverride.getServerPort() ).append( request.getContextPath() );
+            if ( baseUrlAccessOverride == null )
+            {
+                baseurl.append( request.getScheme() ).append( "://" ).append( 
request.getServerName() ).append( ":" ).append( request.getServerPort() );
+            }
+            else
+            {
+                baseurl.append( baseUrlAccessOverride.getServerScheme() 
).append( "://" ).append( baseUrlAccessOverride.getServerName() ).append( ":" 
).append( baseUrlAccessOverride.getServerPort() );
+            }
         }
+        baseurl.append(request.getContextPath());
         return baseurl.toString();
     }
     

Modified: portals/jetspeed-2/trunk/src/webapp/WEB-INF/conf/jetspeed.properties
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/src/webapp/WEB-INF/conf/jetspeed.properties?view=diff&rev=509633&r1=509632&r2=509633
==============================================================================
--- portals/jetspeed-2/trunk/src/webapp/WEB-INF/conf/jetspeed.properties 
(original)
+++ portals/jetspeed-2/trunk/src/webapp/WEB-INF/conf/jetspeed.properties Tue 
Feb 20 08:37:11 2007
@@ -39,6 +39,15 @@
 
#----------------------------------------------------------------------------------
 portalurl.navigationalstate.parameter.name=_ns
 
+#----------------------------------------------------------------------------------
+# Generate all Portal URLs without schema, servername or port.
+# WARNING: Defining this to true (default = false) means requesting secure 
Portlet URLs
+#          won't have any effect anymore.
+#          But a proxy frontend (like Apache) can still be used for securing 
the whole site.
+#          See: https://issues.apache.org/jira/browse/JS2-275#action_12474326
+#----------------------------------------------------------------------------------
+portalurl.relative.only=false
+
 # -------------------------------------------------------------------
 #  Portlet Mode Support
 # -------------------------------------------------------------------



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to