You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by cz...@apache.org on 2007/12/26 19:27:53 UTC
svn commit: r606927 - in /cocoon/trunk/blocks/cocoon-portal:
cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/
cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/
cocoon-portal-impl/src/main/resources/org/apache/cocoo...
Author: cziegeler
Date: Wed Dec 26 10:27:51 2007
New Revision: 606927
URL: http://svn.apache.org/viewvc?rev=606927&view=rev
Log:
Add variable resolver implementation to handle skinpath variable in renderer configuration.
Added:
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/DefaultVariableResolver.java (with props)
Modified:
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PortalServiceImpl.java
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/resources/org/apache/cocoon/portal/cocoon-portal-components.xml
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-borderless-window.xml
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-column.xml
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-decorated-frame.xml
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-linktab.xml
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-nowindow.xml
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-row.xml
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-tab.xml
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-window.xml
Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PortalServiceImpl.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PortalServiceImpl.java?rev=606927&r1=606926&r2=606927&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PortalServiceImpl.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PortalServiceImpl.java Wed Dec 26 10:27:51 2007
@@ -34,7 +34,6 @@
import org.apache.cocoon.portal.services.PortalManager;
import org.apache.cocoon.portal.services.UserService;
import org.apache.cocoon.portal.services.VariableResolver;
-import org.apache.cocoon.portal.services.VariableResolver.CompiledExpression;
import org.apache.cocoon.portal.spi.RequestContextProvider;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -87,6 +86,9 @@
/** Configuration. */
protected Properties configuration;
+ /** The variable resolver. */
+ protected VariableResolver variableResolver;
+
/** By default we use the logger for this class. */
private Log logger = LogFactory.getLog(getClass());
@@ -270,36 +272,13 @@
}
/**
- * TODO Make this a real service
* @see org.apache.cocoon.portal.PortalService#getVariableResolver()
*/
public VariableResolver getVariableResolver() {
- return new VariableResolverImpl();
- }
-
- public static final class VariableResolverImpl implements VariableResolver {
-
- public CompiledExpression compile(String expression) {
- return new CompiledExpressionImpl(expression);
- }
-
- public String resolve(String expression) {
- return expression;
- }
- }
-
- public static final class CompiledExpressionImpl implements CompiledExpression {
-
- protected final String expression;
-
- public CompiledExpressionImpl(String e) {
- this.expression = e;
+ if ( this.variableResolver == null ) {
+ this.variableResolver = (VariableResolver)this.getService(VariableResolver.class.getName());
}
-
- public String resolve() {
- return this.expression;
- }
-
+ return this.variableResolver;
}
}
Added: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/DefaultVariableResolver.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/DefaultVariableResolver.java?rev=606927&view=auto
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/DefaultVariableResolver.java (added)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/DefaultVariableResolver.java Wed Dec 26 10:27:51 2007
@@ -0,0 +1,115 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.portal.services.impl;
+
+import java.util.Iterator;
+
+import org.apache.cocoon.configuration.PropertyHelper;
+import org.apache.cocoon.configuration.Settings;
+import org.apache.cocoon.portal.PortalService;
+import org.apache.cocoon.portal.om.SkinDescription;
+import org.apache.cocoon.portal.services.VariableResolver;
+import org.apache.cocoon.portal.util.AbstractBean;
+
+/**
+ * This is the default implementation of the {@link VariableResolver}.
+ * It uses the settings object to replace variables.
+ *
+ * @version $Id$
+ */
+public class DefaultVariableResolver
+ extends AbstractBean
+ implements VariableResolver {
+
+ /** TODO - we should provide a way to query the whole object model. */
+ protected static final String SKINPATH = "{skinpath}";
+
+ /** The settings object. */
+ protected Settings settings;
+
+ public void setSettings(final Settings s) {
+ this.settings = s;
+ }
+
+ /**
+ * @see org.apache.cocoon.portal.services.VariableResolver#compile(java.lang.String)
+ */
+ public CompiledExpression compile(String expression) {
+ return new CompiledExpressionImpl(PropertyHelper.replace(expression, this.settings), this.settings, this.portalService);
+ }
+
+ /**
+ * @see org.apache.cocoon.portal.services.VariableResolver#resolve(java.lang.String)
+ */
+ public String resolve(String expression) {
+ return this.compile(expression).resolve();
+ }
+
+ protected static final class CompiledExpressionImpl implements CompiledExpression {
+
+ final protected String value;
+
+ final int insertPos;
+
+ final PortalService portalService;
+
+ final Settings settings;
+
+ public CompiledExpressionImpl(final String v, final Settings s, final PortalService ps) {
+ this.insertPos = v.indexOf(SKINPATH);
+ if ( this.insertPos != -1 ) {
+ if ( this.insertPos == 0 ) {
+ this.value = v.substring(SKINPATH.length());
+ } else {
+ this.value = v.substring(0, insertPos) + v.substring(insertPos + SKINPATH.length());
+ }
+ } else {
+ this.value = v;
+ }
+ this.portalService = ps;
+ this.settings = s;
+ }
+
+ /**
+ * @see org.apache.cocoon.portal.services.VariableResolver.CompiledExpression#resolve()
+ */
+ public String resolve() {
+ if ( insertPos == -1 ) {
+ return this.value;
+ }
+ // TODO - Skin detection should be moved to the portal and user service.
+ final String skinName = this.settings.getProperty("skin");
+ // find the correct skin
+ SkinDescription desc = null;
+ final Iterator i = this.portalService.getSkinDescriptions().iterator();
+ while ( i.hasNext() && desc == null ) {
+ final SkinDescription current = (SkinDescription)i.next();
+ if ( current.getName().equals(skinName) ) {
+ desc = current;
+ }
+ }
+ String skinPath = "";
+ if ( desc != null ) {
+ skinPath = desc.getBasePath();
+ }
+ if ( insertPos == 0 ) {
+ return skinPath + this.value;
+ }
+ return this.value.substring(0, this.insertPos) + skinPath + this.value.substring(this.insertPos);
+ }
+ }
+}
Propchange: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/DefaultVariableResolver.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/DefaultVariableResolver.java
------------------------------------------------------------------------------
svn:keywords = author date id revision url
Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/resources/org/apache/cocoon/portal/cocoon-portal-components.xml
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/resources/org/apache/cocoon/portal/cocoon-portal-components.xml?rev=606927&r1=606926&r2=606927&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/resources/org/apache/cocoon/portal/cocoon-portal-components.xml (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/resources/org/apache/cocoon/portal/cocoon-portal-components.xml Wed Dec 26 10:27:51 2007
@@ -251,6 +251,17 @@
scope="singleton" init-method="init"/>
<!--+
+ | Variable Resolver.
+ |
+ +-->
+ <bean name="org.apache.cocoon.portal.services.VariableResolver"
+ class="org.apache.cocoon.portal.services.impl.DefaultVariableResolver"
+ parent="org.apache.cocoon.portal.util.AbstractBean"
+ scope="singleton">
+ <property name="settings" ref="org.apache.cocoon.configuration.Settings"/>
+ </bean>
+
+ <!--+
| Profile Manager.
|
+-->
Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-borderless-window.xml
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-borderless-window.xml?rev=606927&r1=606926&r2=606927&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-borderless-window.xml (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-borderless-window.xml Wed Dec 26 10:27:51 2007
@@ -32,7 +32,7 @@
<property name="aspectChain">
<portal:renderer-aspects>
<portal:aspect type="xslt">
- <portal:property name="style" value="{portal-skin:skin.basepath}/styles/borderless-window.xsl"/>
+ <portal:property name="style" value="{skinpath}/styles/borderless-window.xsl"/>
</portal:aspect>
<portal:aspect type="parameter">
<portal:property name="tag-name" value="window"/>
Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-column.xml
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-column.xml?rev=606927&r1=606926&r2=606927&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-column.xml (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-column.xml Wed Dec 26 10:27:51 2007
@@ -32,7 +32,7 @@
<property name="aspectChain">
<portal:renderer-aspects>
<portal:aspect type="xslt">
- <portal:property name="style" value="{portal-skin:skin.basepath}/styles/column.xsl"/>
+ <portal:property name="style" value="{skinpath}/styles/column.xsl"/>
</portal:aspect>
<portal:aspect type="parameter">
<portal:property name="tag-name" value="column-layout"/>
Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-decorated-frame.xml
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-decorated-frame.xml?rev=606927&r1=606926&r2=606927&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-decorated-frame.xml (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-decorated-frame.xml Wed Dec 26 10:27:51 2007
@@ -32,7 +32,7 @@
<property name="aspectChain">
<portal:renderer-aspects>
<portal:aspect type="xslt">
- <portal:property name="style" value="{portal-skin:skin.basepath}/styles/frame.xsl"/>
+ <portal:property name="style" value="{skinpath}/styles/frame.xsl"/>
</portal:aspect>
<portal:aspect type="parameter">
<portal:property name="tag-name" value="frame"/>
Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-linktab.xml
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-linktab.xml?rev=606927&r1=606926&r2=606927&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-linktab.xml (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-linktab.xml Wed Dec 26 10:27:51 2007
@@ -32,7 +32,7 @@
<property name="aspectChain">
<portal:renderer-aspects>
<portal:aspect type="xslt">
- <portal:property name="style" value="{portal-skin:skin.basepath}/styles/linktab.xsl"/>
+ <portal:property name="style" value="{skinpath}/styles/linktab.xsl"/>
</portal:aspect>
<portal:aspect type="parameter">
<portal:property name="tag-name" value="linktab-layout"/>
Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-nowindow.xml
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-nowindow.xml?rev=606927&r1=606926&r2=606927&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-nowindow.xml (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-nowindow.xml Wed Dec 26 10:27:51 2007
@@ -32,7 +32,7 @@
<property name="aspectChain">
<portal:renderer-aspects>
<portal:aspect type="xslt">
- <portal:property name="style" value="{portal-skin:skin.basepath}/styles/nowindow.xsl"/>
+ <portal:property name="style" value="{skinpath}/styles/nowindow.xsl"/>
</portal:aspect>
<portal:aspect type="window"/>
<portal:aspect type="coplet-cinclude"/>
Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-row.xml
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-row.xml?rev=606927&r1=606926&r2=606927&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-row.xml (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-row.xml Wed Dec 26 10:27:51 2007
@@ -32,7 +32,7 @@
<property name="aspectChain">
<portal:renderer-aspects>
<portal:aspect type="xslt">
- <portal:property name="style" value="{portal-skin:skin.basepath}/styles/row.xsl"/>
+ <portal:property name="style" value="{skinpath}/styles/row.xsl"/>
</portal:aspect>
<portal:aspect type="parameter">
<portal:property name="tag-name" value="row-layout"/>
Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-tab.xml
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-tab.xml?rev=606927&r1=606926&r2=606927&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-tab.xml (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-tab.xml Wed Dec 26 10:27:51 2007
@@ -32,7 +32,7 @@
<property name="aspectChain">
<portal:renderer-aspects>
<portal:aspect type="xslt">
- <portal:property name="style" value="{portal-skin:skin.basepath}/styles/tab.xsl"/>
+ <portal:property name="style" value="{skinpath}/styles/tab.xsl"/>
</portal:aspect>
<portal:aspect type="parameter">
<portal:property name="tag-name" value="tab-layout"/>
Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-window.xml
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-window.xml?rev=606927&r1=606926&r2=606927&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-window.xml (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-window.xml Wed Dec 26 10:27:51 2007
@@ -32,7 +32,7 @@
<property name="aspectChain">
<portal:renderer-aspects>
<portal:aspect type="xslt">
- <portal:property name="style" value="{portal-skin:skin.basepath}/styles/window.xsl"/>
+ <portal:property name="style" value="{skinpath}/styles/window.xsl"/>
</portal:aspect>
<portal:aspect type="parameter">
<portal:property name="tag-name" value="window"/>