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]