Return-Path: Delivered-To: apmail-struts-commits-archive@locus.apache.org Received: (qmail 97772 invoked from network); 13 Jun 2006 02:34:50 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 13 Jun 2006 02:34:50 -0000 Received: (qmail 35303 invoked by uid 500); 13 Jun 2006 02:34:48 -0000 Delivered-To: apmail-struts-commits-archive@struts.apache.org Received: (qmail 34645 invoked by uid 500); 13 Jun 2006 02:34:45 -0000 Mailing-List: contact commits-help@struts.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@struts.apache.org Delivered-To: mailing list commits@struts.apache.org Received: (qmail 34636 invoked by uid 99); 13 Jun 2006 02:34:45 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 12 Jun 2006 19:34:45 -0700 X-ASF-Spam-Status: No, hits=-9.4 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received-SPF: pass (asf.osuosl.org: local policy) Received: from [140.211.166.113] (HELO eris.apache.org) (140.211.166.113) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 12 Jun 2006 19:34:43 -0700 Received: by eris.apache.org (Postfix, from userid 65534) id 88F791A983A; Mon, 12 Jun 2006 19:34:23 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r413788 - in /struts/shale/branches/mvn_reorg/shale-clay/src: main/java/org/apache/shale/clay/component/ main/java/org/apache/shale/clay/component/chain/ main/java/org/apache/shale/clay/config/ main/java/org/apache/shale/clay/config/beans/ ... Date: Tue, 13 Jun 2006 02:34:21 -0000 To: commits@struts.apache.org From: gvanmatre@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20060613023423.88F791A983A@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N Author: gvanmatre Date: Mon Jun 12 19:34:20 2006 New Revision: 413788 URL: http://svn.apache.org/viewvc?rev=413788&view=rev Log: Fix for issue SHALE-187 Added: struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/config/beans/AbstractBean.java (with props) struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/config/beans/SymbolBean.java (with props) struts/shale/branches/mvn_reorg/shale-clay/src/test/java/org/apache/shale/clay/config/DesigntimeTestCase.java (with props) Modified: struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/component/Clay.java struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/component/chain/AbstractCommand.java struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/config/ClayXmlParser.java struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/config/beans/AttributeBean.java struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/config/beans/ComponentBean.java struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/config/beans/ComponentConfigBean.java struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/parser/builder/Builder.java struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/parser/builder/ElementBuilder.java struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/parser/builder/JsfDefaultBuilder.java struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/taglib/SymbolTag.java struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/utils/ClayAmalgam.java struts/shale/branches/mvn_reorg/shale-clay/src/test/java/org/apache/shale/clay/config/SymbolsTestCase.java Modified: struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/component/Clay.java URL: http://svn.apache.org/viewvc/struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/component/Clay.java?rev=413788&r1=413787&r2=413788&view=diff ============================================================================== --- struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/component/Clay.java (original) +++ struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/component/Clay.java Mon Jun 12 19:34:20 2006 @@ -42,6 +42,7 @@ import org.apache.shale.clay.config.beans.ComponentBean; import org.apache.shale.clay.config.beans.ConfigBean; import org.apache.shale.clay.config.beans.ConfigBeanFactory; +import org.apache.shale.clay.config.beans.SymbolBean; import org.apache.shale.util.Messages; /** @@ -211,7 +212,8 @@ *

*/ public String getManagedBeanName() { - return (String) symbols.get(Globals.MANAGED_BEAN_MNEMONIC); + SymbolBean symbol = (SymbolBean) symbols.get(Globals.MANAGED_BEAN_MNEMONIC); + return ((symbol != null) ? symbol.getValue() : null); } /** @@ -221,7 +223,10 @@ *

*/ public void setManagedBeanName(String mbeanMnemonic) { - symbols.put(Globals.MANAGED_BEAN_MNEMONIC, mbeanMnemonic); + SymbolBean symbol = new SymbolBean(); + symbol.setName(Globals.MANAGED_BEAN_MNEMONIC); + symbol.setValue(mbeanMnemonic); + symbols.put(symbol.getName(), symbol); } /** Modified: struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/component/chain/AbstractCommand.java URL: http://svn.apache.org/viewvc/struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/component/chain/AbstractCommand.java?rev=413788&r1=413787&r2=413788&view=diff ============================================================================== --- struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/component/chain/AbstractCommand.java (original) +++ struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/component/chain/AbstractCommand.java Mon Jun 12 19:34:20 2006 @@ -28,6 +28,7 @@ import org.apache.commons.chain.Context; import org.apache.commons.chain.config.ConfigParser; import org.apache.shale.clay.config.Globals; +import org.apache.shale.clay.config.beans.SymbolBean; import org.apache.shale.util.Messages; /** @@ -102,8 +103,9 @@ int i = buff.indexOf("@"); replace: while (i > -1 && si.hasNext()) { Map.Entry e = (Map.Entry) si.next(); - String key = (String) e.getKey(); - String value = (String) (e.getValue() == null ? "" : e.getValue()); + SymbolBean symbol = (SymbolBean) e.getValue(); + String key = symbol.getName(); + String value = (symbol.getValue() == null ? "" : symbol.getValue()); i = (wasReplacementMade ? buff.indexOf("@") : i); if (i == -1) break replace; Modified: struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/config/ClayXmlParser.java URL: http://svn.apache.org/viewvc/struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/config/ClayXmlParser.java?rev=413788&r1=413787&r2=413788&view=diff ============================================================================== --- struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/config/ClayXmlParser.java (original) +++ struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/config/ClayXmlParser.java Mon Jun 12 19:34:20 2006 @@ -23,14 +23,11 @@ import java.net.URL; import org.apache.commons.digester.Digester; -import org.apache.commons.digester.Rule; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.shale.clay.config.beans.ComponentBean; import org.apache.shale.clay.config.beans.ComponentConfigBean; import org.apache.shale.clay.config.beans.ConfigBean; import org.apache.shale.util.Messages; -import org.xml.sax.Attributes; import org.xml.sax.InputSource; import org.xml.sax.SAXException; @@ -101,38 +98,6 @@ /** - *

This is a custom digester Rule that handles adding value pairs to - * the symbols table on the {@link ComponentBean} nodes.

- */ - private class SymbolRule extends Rule { - - /** - *

Takes a peek at the last object on the digester stack. - * It assume that it will be a {@link ComponentBean}. The - * attributes "name" and "value" are pulled - * from the Attributes sax collection and pushed - * into the {@link ComponentBean}'s symbols Map - * collection. The character '@' is prepended to the symbol - * name if not existing.

- */ - public void begin(String qname, String name, Attributes attributes) throws Exception { - ComponentBean b = (ComponentBean) super.digester.peek(); - if (b != null && attributes != null) { - String key = attributes.getValue("name"); - String value = attributes.getValue("value"); - if (name != null) { - StringBuffer tmp = new StringBuffer(key); - if (tmp.charAt(0) != '@') - tmp.insert(0, '@'); - - b.addSymbol(tmp.toString(), value); - } - } - } - - } - - /** *

Loads a configuration file from a url. The * input stream is identifed by the watchDogName.

*/ @@ -186,6 +151,11 @@ if (log.isInfoEnabled()) log.info(messages.getMessage("parser.load.rules")); + if (getConfig() instanceof ComponentConfigBean) { + if (((ComponentConfigBean) getConfig()).isDesigntime()) + digester.addBeanPropertySetter("*/description", "description"); + } + digester.addObjectCreate( "*/attributes/set", org.apache.shale.clay.config.beans.AttributeBean.class); @@ -195,7 +165,14 @@ "addAttribute", "org.apache.shale.clay.config.beans.AttributeBean"); - digester.addRule("*/symbols/set", new SymbolRule()); + digester.addObjectCreate( + "*/symbols/set", + org.apache.shale.clay.config.beans.SymbolBean.class); + digester.addSetProperties("*/symbols/set"); + digester.addSetNext( + "*/symbols/set", + "addSymbol", + "org.apache.shale.clay.config.beans.SymbolBean"); digester.addObjectCreate( "*/valueChangeListener", Added: struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/config/beans/AbstractBean.java URL: http://svn.apache.org/viewvc/struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/config/beans/AbstractBean.java?rev=413788&view=auto ============================================================================== --- struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/config/beans/AbstractBean.java (added) +++ struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/config/beans/AbstractBean.java Mon Jun 12 19:34:20 2006 @@ -0,0 +1,48 @@ +/* + * Copyright 2006 The Apache Software Foundation. + * + * Licensed 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. + * + * $Id$ + */ + + +package org.apache.shale.clay.config.beans; + +/** + *

Abstract class that provides a description property + * that is populated from the clay configuration file + * when design time tool support is enabled.

+ * + */ +public abstract class AbstractBean { + /** + *

Metadata description provided in the clay configuration.

+ */ + private String description = null; + + /** + *

Returns the description of the bean.

+ */ + public String getDescription() { + return description; + } + + /** + *

Sets the description of the bean.

+ */ + public void setDescription(String description) { + this.description = description; + } + +} Propchange: struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/config/beans/AbstractBean.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/config/beans/AbstractBean.java ------------------------------------------------------------------------------ svn:keywords = Date Author Id Revision HeadURL Modified: struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/config/beans/AttributeBean.java URL: http://svn.apache.org/viewvc/struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/config/beans/AttributeBean.java?rev=413788&r1=413787&r2=413788&view=diff ============================================================================== --- struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/config/beans/AttributeBean.java (original) +++ struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/config/beans/AttributeBean.java Mon Jun 12 19:34:20 2006 @@ -18,18 +18,17 @@ package org.apache.shale.clay.config.beans; -import java.io.Serializable; /** *

Represents a value for a component property or a tag attribute. * Instances of this class will be placed in the {@link ComponentBean} * attributes collection.

*/ -public class AttributeBean implements Comparable, Serializable { +public class AttributeBean extends SymbolBean { - private static final long serialVersionUID = 3689352130423305014L; + private static final long serialVersionUID = 3102689599088266442L; - /** + /** *

Mnemonic the signifies the a method binding expression.

*/ public static final String BINDING_TYPE_METHOD = "MB"; @@ -51,18 +50,7 @@ * be preformed.

*/ public static final String BINDING_TYPE_NONE = "None"; - - - /** - *

Name of the attribute in the target JSF object property.

- */ - private String name = null; - - /** - *

Value of the named attribute in the target JSF object property.

- */ - private String value = null; - + /** *

The parent meta component that contains this attribute in its * attributes collection. @@ -95,49 +83,11 @@ */ public String toString() { StringBuffer buff = new StringBuffer(); - buff.append("name=\"").append(name).append("\" value=\"").append(value) + buff.append("name=\"").append(getName()).append("\" value=\"").append(getValue()) .append("\" bindingType=\"").append(bindingType).append("\""); return buff.toString(); } - /** - *

Returns a name corresponding to an associated JSF object property.

- */ - public String getName() { - return name; - } - - /** - *

Returns the value of the attribute that can be a literal or a - * expression.

- */ - public String getValue() { - return value; - } - - /** - *

Sets the name of the attribute.

- */ - public void setName(String string) { - name = string; - } - - /** - *

Sets the value of the attribute.

- */ - public void setValue(String string) { - value = string; - } - - /** - *

This implementation of the Comparable interface makes - * the name property the compared key.

- */ - public int compareTo(Object obj) { - AttributeBean item = (AttributeBean) obj; - - return item.getName().compareTo(getName()); - } /** *

Returns the parent component containing this object instance.

Modified: struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/config/beans/ComponentBean.java URL: http://svn.apache.org/viewvc/struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/config/beans/ComponentBean.java?rev=413788&r1=413787&r2=413788&view=diff ============================================================================== --- struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/config/beans/ComponentBean.java (original) +++ struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/config/beans/ComponentBean.java Mon Jun 12 19:34:20 2006 @@ -42,7 +42,7 @@ * *

*/ -public class ComponentBean implements Comparable, Serializable { +public class ComponentBean extends AbstractBean implements Comparable, Serializable { private static final long serialVersionUID = 3907217039524312373L; @@ -648,12 +648,19 @@ } /** - *

Adds a symbol identified by the key - * and replacement value to the symbols - * collection.

+ *

Adds a symbol identified by the + * {@link SymbolBean} to the symbols collection.

*/ - public void addSymbol(String key, String value) { - symbols.put(key, value); + public void addSymbol(SymbolBean symbol) { + if (symbol.getName() != null && symbol.getName().length() > 0) { + StringBuffer buff = new StringBuffer(symbol.getName()); + if (buff.charAt(0) != '@') { + buff.insert(0, '@'); + symbol.setName(buff.toString()); + } + + symbols.put(symbol.getName(), symbol); + } } /** @@ -663,6 +670,22 @@ */ public Map getSymbols() { return symbols; + } + + + /** + *

Returns a {@link SymbolBean} from the symbols + * Map by name. Prepends a '@' character to the + * name if it doesn't exist.

+ */ + public SymbolBean getSymbol(String name) { + StringBuffer tmp = new StringBuffer(name); + if (tmp.charAt(0) != '@') + tmp.insert(0, '@'); + + SymbolBean symbol = (SymbolBean) symbols.get(tmp.toString()); + + return symbol; } } Modified: struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/config/beans/ComponentConfigBean.java URL: http://svn.apache.org/viewvc/struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/config/beans/ComponentConfigBean.java?rev=413788&r1=413787&r2=413788&view=diff ============================================================================== --- struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/config/beans/ComponentConfigBean.java (original) +++ struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/config/beans/ComponentConfigBean.java Mon Jun 12 19:34:20 2006 @@ -102,6 +102,32 @@ */ protected transient ServletContext context = null; + + /** + *

Flag that indicates the current mode is design time. + * In design time mode, the descriptions in the clay + * configuration files will populate the description + * property of the target {@link AbstractBean}.

+ */ + private boolean isDesigntime = false; + + /** + *

Returns true if the current mode + * is design time.

+ */ + public boolean isDesigntime() { + return isDesigntime; + } + + /** + *

Sets the design time to somthing other than + * the default false value.

+ */ + public void setDesigntime(boolean isDesigntime) { + this.isDesigntime = isDesigntime; + } + + /** *

Initialization method that is passed the ServletContext * as a parameter. Loads the sufixes for the ServletContext @@ -481,6 +507,9 @@ // inherit late binding type if (a.getBindingType() == null) a.setBindingType(a.getIsAParent().getBindingType()); + + if (a.getDescription() == null) + a.setDescription(a.getIsAParent().getDescription()); // set final indicator a.setInheritanceFinal(true); @@ -516,6 +545,9 @@ if (b.getFacetName() == null) b.setFacetName(b.getIsAParent().getFacetName()); + + if (b.getDescription() == null) + b.setDescription(b.getIsAParent().getDescription()); // inherit parents attributes Iterator pi = b.getIsAParent().getAttributeIterator(); Added: struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/config/beans/SymbolBean.java URL: http://svn.apache.org/viewvc/struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/config/beans/SymbolBean.java?rev=413788&view=auto ============================================================================== --- struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/config/beans/SymbolBean.java (added) +++ struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/config/beans/SymbolBean.java Mon Jun 12 19:34:20 2006 @@ -0,0 +1,93 @@ +/* + * Copyright 2006 The Apache Software Foundation. + * + * Licensed 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. + * + * $Id$ + */ + +package org.apache.shale.clay.config.beans; + +import java.io.Serializable; + + +/** + *

A symbol represents a variable replaced in a + * JSF binding expression. Within the expression + * symbols are identified by the '@' prefix.

+ * + */ +public class SymbolBean extends AbstractBean implements Serializable, + Comparable { + + private static final long serialVersionUID = -584466364674399355L; + + /** + *

Name of the symbol in the target JSF object property.

+ */ + private String name = null; + + /** + *

Value of the named symbol in the target JSF object property.

+ */ + private String value = null; + + + /** + *

Returns a name corresponding to an associated JSF object property.

+ */ + public String getName() { + return name; + } + + /** + *

Returns the value of the attribute that can be a literal or a + * expression.

+ */ + public String getValue() { + return value; + } + + /** + *

Sets the name of the attribute.

+ */ + public void setName(String string) { + name = string; + } + + /** + *

Sets the value of the attribute.

+ */ + public void setValue(String string) { + value = string; + } + + /** + *

This implementation of the Comparable interface makes + * the name property the compared key.

+ */ + public int compareTo(Object obj) { + SymbolBean item = (SymbolBean) obj; + + return item.getName().compareTo(getName()); + } + + + public String toString() { + StringBuffer buff = new StringBuffer(); + buff.append("name=\"").append(name).append("\" value=\"").append(value) + .append("\""); + return buff.toString(); + } + +} Propchange: struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/config/beans/SymbolBean.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/config/beans/SymbolBean.java ------------------------------------------------------------------------------ svn:keywords = Date Author Id Revision HeadURL Modified: struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/parser/builder/Builder.java URL: http://svn.apache.org/viewvc/struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/parser/builder/Builder.java?rev=413788&r1=413787&r2=413788&view=diff ============================================================================== --- struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/parser/builder/Builder.java (original) +++ struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/parser/builder/Builder.java Mon Jun 12 19:34:20 2006 @@ -28,6 +28,7 @@ import org.apache.shale.clay.config.beans.ConfigBean; import org.apache.shale.clay.config.beans.ConfigBeanFactory; import org.apache.shale.clay.config.beans.ElementBean; +import org.apache.shale.clay.config.beans.SymbolBean; import org.apache.shale.clay.parser.Node; import org.apache.shale.clay.parser.Token; import org.apache.shale.util.Messages; @@ -310,7 +311,10 @@ //any token that is not an attribute in the target becomes a symbol StringBuffer identifier = new StringBuffer((String) e.getKey()); identifier.insert(0, '@'); - target.addSymbol(identifier.toString(), valueToken.getRawText()); + SymbolBean symbol = new SymbolBean(); + symbol.setName(identifier.toString()); + symbol.setValue(valueToken.getRawText()); + target.addSymbol(symbol); } } } Modified: struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/parser/builder/ElementBuilder.java URL: http://svn.apache.org/viewvc/struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/parser/builder/ElementBuilder.java?rev=413788&r1=413787&r2=413788&view=diff ============================================================================== --- struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/parser/builder/ElementBuilder.java (original) +++ struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/parser/builder/ElementBuilder.java Mon Jun 12 19:34:20 2006 @@ -31,6 +31,7 @@ import org.apache.shale.clay.config.beans.ConfigBeanFactory; import org.apache.shale.clay.config.beans.ConverterBean; import org.apache.shale.clay.config.beans.ElementBean; +import org.apache.shale.clay.config.beans.SymbolBean; import org.apache.shale.clay.config.beans.ValidatorBean; import org.apache.shale.clay.config.beans.ValueChangeListenerBean; import org.apache.shale.clay.parser.Node; @@ -225,8 +226,16 @@ String name = (String) child.getAttributes().get("name"); String value = (String) child.getAttributes().get("value"); - if (name != null && name.length() > 0) - target.addSymbol(name, value); + if (name != null && name.length() > 0) { + SymbolBean symbol = new SymbolBean(); + StringBuffer tmp = new StringBuffer(name); + if (tmp.charAt(0) != '@') + tmp.insert(0, '@'); + + symbol.setName(tmp.toString()); + symbol.setValue(value); + target.addSymbol(symbol); + } } } } Modified: struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/parser/builder/JsfDefaultBuilder.java URL: http://svn.apache.org/viewvc/struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/parser/builder/JsfDefaultBuilder.java?rev=413788&r1=413787&r2=413788&view=diff ============================================================================== --- struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/parser/builder/JsfDefaultBuilder.java (original) +++ struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/parser/builder/JsfDefaultBuilder.java Mon Jun 12 19:34:20 2006 @@ -26,6 +26,7 @@ import org.apache.shale.clay.config.beans.ComponentBean; import org.apache.shale.clay.config.beans.ConverterBean; import org.apache.shale.clay.config.beans.ElementBean; +import org.apache.shale.clay.config.beans.SymbolBean; import org.apache.shale.clay.config.beans.ValidatorBean; import org.apache.shale.clay.config.beans.ValueChangeListenerBean; import org.apache.shale.clay.parser.Node; @@ -159,8 +160,15 @@ protected void addSymbol(Node node, ElementBean target) { String value = (String) node.getAttributes().get("value"); String name = (String) node.getAttributes().get("name"); - if (name != null) { - target.addSymbol(name, value); + if (name != null && name.length() > 0) { + SymbolBean symbol = new SymbolBean(); + StringBuffer tmp = new StringBuffer(name); + if (tmp.charAt(0) != '@') + tmp.insert(0, '@'); + + symbol.setName(tmp.toString()); + symbol.setValue(value); + target.addSymbol(symbol); } } Modified: struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/taglib/SymbolTag.java URL: http://svn.apache.org/viewvc/struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/taglib/SymbolTag.java?rev=413788&r1=413787&r2=413788&view=diff ============================================================================== --- struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/taglib/SymbolTag.java (original) +++ struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/taglib/SymbolTag.java Mon Jun 12 19:34:20 2006 @@ -21,6 +21,7 @@ import javax.servlet.jsp.tagext.TagSupport; import org.apache.shale.clay.component.Clay; +import org.apache.shale.clay.config.beans.SymbolBean; import org.apache.shale.util.Messages; /** @@ -108,7 +109,10 @@ if (tmp.charAt(0) != '@') tmp.insert(0, '@'); - clayParent.getSymbols().put(tmp.toString(), value); + SymbolBean symbol = new SymbolBean(); + symbol.setName(tmp.toString()); + symbol.setValue(value); + clayParent.getSymbols().put(symbol.getName(), symbol.getValue()); return super.doStartTag(); Modified: struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/utils/ClayAmalgam.java URL: http://svn.apache.org/viewvc/struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/utils/ClayAmalgam.java?rev=413788&r1=413787&r2=413788&view=diff ============================================================================== --- struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/utils/ClayAmalgam.java (original) +++ struts/shale/branches/mvn_reorg/shale-clay/src/main/java/org/apache/shale/clay/utils/ClayAmalgam.java Mon Jun 12 19:34:20 2006 @@ -36,6 +36,7 @@ import org.apache.shale.clay.config.beans.ConfigBean; import org.apache.shale.clay.config.beans.ConfigBeanFactory; import org.apache.shale.clay.config.beans.ElementBean; +import org.apache.shale.clay.config.beans.SymbolBean; import org.apache.shale.faces.ShaleConstants; import org.apache.shale.util.Messages; import org.apache.shale.util.Tags; @@ -408,7 +409,10 @@ //prepend the var to the generated key id.insert(0, var + "."); - target.addSymbol(Globals.MANAGED_BEAN_MNEMONIC, id.toString()); + SymbolBean symbol = new SymbolBean(); + symbol.setName(Globals.MANAGED_BEAN_MNEMONIC); + symbol.setValue(id.toString()); + target.addSymbol(symbol); namingContainer.addChild(target); Added: struts/shale/branches/mvn_reorg/shale-clay/src/test/java/org/apache/shale/clay/config/DesigntimeTestCase.java URL: http://svn.apache.org/viewvc/struts/shale/branches/mvn_reorg/shale-clay/src/test/java/org/apache/shale/clay/config/DesigntimeTestCase.java?rev=413788&view=auto ============================================================================== --- struts/shale/branches/mvn_reorg/shale-clay/src/test/java/org/apache/shale/clay/config/DesigntimeTestCase.java (added) +++ struts/shale/branches/mvn_reorg/shale-clay/src/test/java/org/apache/shale/clay/config/DesigntimeTestCase.java Mon Jun 12 19:34:20 2006 @@ -0,0 +1,131 @@ +/* + * Copyright 2006 The Apache Software Foundation. + * + * Licensed 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.shale.clay.config; + +import junit.framework.Test; +import junit.framework.TestSuite; + +import org.apache.shale.clay.config.beans.AttributeBean; +import org.apache.shale.clay.config.beans.ComponentBean; +import org.apache.shale.clay.config.beans.ComponentConfigBean; +import org.apache.shale.clay.config.beans.SymbolBean; + +public class DesigntimeTestCase extends AbstractTestCaseConfig { + + // Construct a new instance of this test case. + public DesigntimeTestCase(String name) { + super(name); + } + + // Return the tests included in this test case. + public static Test suite() { + + return (new TestSuite(DesigntimeTestCase.class)); + + } + + public void setUp() { + super.setUp(); + } + + public void testDesigntimeOn() { + ((ComponentConfigBean) standardConfigBean).setDesigntime(true); + loadConfigFiles(null, null); + + ComponentBean bean = standardConfigBean.getElement("clay"); + assertNotNull(bean); + + String description = bean.getDescription(); + assertNotNull(description); + + assertTrue(description.startsWith("This component builds a sub component tree and attaches")); + + AttributeBean attr = bean.getAttribute("managedBeanName"); + assertNotNull(attr); + + description = attr.getDescription(); + assertEquals("A symbol that is used to alias the bound backing bean.", description); + + + bean = standardConfigBean.getElement("baseHtml"); + assertNotNull(bean); + + description = bean.getDescription(); + assertNotNull(description); + + assertTrue(description.startsWith("Abstract base component definition")); + + SymbolBean symbol = (SymbolBean) bean.getSymbols().get("@class"); + assertNotNull(symbol); + + description = symbol.getDescription(); + assertNotNull(description); + + assertEquals("The default value of the styleClass attribute.", description); + + + } + + + public void testDesigntimeOff() { + ((ComponentConfigBean) standardConfigBean).setDesigntime(false); + loadConfigFiles(null, null); + + ComponentBean bean = standardConfigBean.getElement("clay"); + assertNotNull(bean); + + String description = bean.getDescription(); + assertNull(description); + + AttributeBean attr = bean.getAttribute("managedBeanName"); + assertNotNull(attr); + + description = attr.getDescription(); + assertNull(description); + + bean = standardConfigBean.getElement("baseHtml"); + assertNotNull(bean); + + description = bean.getDescription(); + assertNull(description); + + SymbolBean symbol = (SymbolBean) bean.getSymbols().get("@class"); + assertNotNull(symbol); + + description = symbol.getDescription(); + assertNull(description); + + } + + + public void testDesigntimeOnInheritance() { + ((ComponentConfigBean) standardConfigBean).setDesigntime(true); + loadConfigFiles(null, null); + + ComponentBean bean1 = standardConfigBean.getElement("f:converter"); + assertNotNull(bean1); + + assertNotNull(bean1.getDescription()); + + ComponentBean bean2 = standardConfigBean.getElement(bean1.getExtends()); + assertNotNull(bean2); + + assertNotNull(bean2.getDescription()); + assertEquals(bean2.getDescription(), bean1.getDescription()); + + } + +} Propchange: struts/shale/branches/mvn_reorg/shale-clay/src/test/java/org/apache/shale/clay/config/DesigntimeTestCase.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: struts/shale/branches/mvn_reorg/shale-clay/src/test/java/org/apache/shale/clay/config/DesigntimeTestCase.java ------------------------------------------------------------------------------ svn:keywords = Date Author Id Revision HeadURL Modified: struts/shale/branches/mvn_reorg/shale-clay/src/test/java/org/apache/shale/clay/config/SymbolsTestCase.java URL: http://svn.apache.org/viewvc/struts/shale/branches/mvn_reorg/shale-clay/src/test/java/org/apache/shale/clay/config/SymbolsTestCase.java?rev=413788&r1=413787&r2=413788&view=diff ============================================================================== --- struts/shale/branches/mvn_reorg/shale-clay/src/test/java/org/apache/shale/clay/config/SymbolsTestCase.java (original) +++ struts/shale/branches/mvn_reorg/shale-clay/src/test/java/org/apache/shale/clay/config/SymbolsTestCase.java Mon Jun 12 19:34:20 2006 @@ -29,6 +29,7 @@ import org.apache.shale.clay.config.beans.AttributeBean; import org.apache.shale.clay.config.beans.ComponentBean; import org.apache.shale.clay.config.beans.ElementBean; +import org.apache.shale.clay.config.beans.SymbolBean; import org.apache.shale.faces.ShaleConstants; import org.apache.shale.util.Tags; @@ -123,6 +124,14 @@ } + //factory method for creating a symbol bean + private SymbolBean createSymbol(String name, String value) { + SymbolBean symbol = new SymbolBean(); + symbol.setName(name); + symbol.setValue(value); + return symbol; + } + // test symbolic property replacement public void testSymbolicProperties() throws Exception { javax.faces.component.html.HtmlOutputText child = (javax.faces.component.html.HtmlOutputText) @@ -140,7 +149,7 @@ displayElement.setComponentType("javax.faces.HtmlOutputText"); displayElement.setId("testId"); displayElement.addAttribute(attr); - displayElement.addSymbol("@value", "10"); + displayElement.addSymbol(createSymbol("@value", "10")); ClayContext clayContext = new ClayContext(); clayContext.setFacesContext(facesContext); @@ -163,7 +172,7 @@ facesContext.getApplication().createComponent("javax.faces.HtmlOutputText"); assertNotNull("javax.faces.HtmlOutputText", child); - displayElement.addSymbol("@value", "#{value}"); + displayElement.addSymbol(createSymbol("@value", "#{value}")); attr.setBindingType(AttributeBean.BINDING_TYPE_EARLY); servletContext.setAttribute("value", "10"); @@ -183,7 +192,7 @@ facesContext.getApplication().createComponent("javax.faces.HtmlOutputText"); assertNotNull("javax.faces.HtmlOutputText", child); - displayElement.addSymbol("@value", null); + displayElement.addSymbol(createSymbol("@value", null)); attr.setBindingType(AttributeBean.BINDING_TYPE_EARLY); clayContext.setFacesContext(facesContext); @@ -203,7 +212,7 @@ facesContext.getApplication().createComponent("javax.faces.HtmlOutputText"); assertNotNull("javax.faces.HtmlOutputText", child); - displayElement.addSymbol("@value", ""); + displayElement.addSymbol(createSymbol("@value", "")); attr.setBindingType(AttributeBean.BINDING_TYPE_EARLY); clayContext.setFacesContext(facesContext); @@ -239,9 +248,9 @@ facesContext.getApplication().createComponent("javax.faces.HtmlOutputText"); assertNotNull("javax.faces.HtmlOutputText", child); - displayElement.addSymbol("@test1", "rock"); - displayElement.addSymbol("@test2", "stop"); - displayElement.addSymbol("@test3", "drop"); + displayElement.addSymbol(createSymbol("@test1", "rock")); + displayElement.addSymbol(createSymbol("@test2", "stop")); + displayElement.addSymbol(createSymbol("@test3", "drop")); clayContext.setFacesContext(facesContext); clayContext.setChild(child); @@ -269,7 +278,7 @@ displayElement.setJsfid("inputText"); displayElement.setComponentType("javax.faces.HtmlOutputText"); displayElement.setId("@wynn"); - displayElement.addSymbol("@wynn", "test"); + displayElement.addSymbol(createSymbol("@wynn", "test")); ClayContext clayContext = new ClayContext(); clayContext.setFacesContext(facesContext); @@ -300,7 +309,7 @@ displayElement.setJsfid("inputText"); displayElement.setComponentType("javax.faces.HtmlOutputText"); displayElement.setId("@wynn"); - displayElement.addSymbol("@wynn", null); + displayElement.addSymbol(createSymbol("@wynn", null)); clayContext = new ClayContext(); clayContext.setFacesContext(facesContext); @@ -371,8 +380,8 @@ displayElement.setComponentType("javax.faces.HtmlOutputText"); displayElement.setId("testId"); displayElement.addAttribute(attr); - displayElement.addSymbol("@[ab]", "43"); - displayElement.addSymbol("@[a]", "67"); + displayElement.addSymbol(createSymbol("@[ab]", "43")); + displayElement.addSymbol(createSymbol("@[a]", "67")); ClayContext clayContext = new ClayContext(); clayContext.setFacesContext(facesContext); @@ -397,8 +406,8 @@ assertNotNull("javax.faces.HtmlOutputText", child); attr.setValue("@{a}@{ab}"); //symbolic attribute - displayElement.addSymbol("@{ab}", "43"); - displayElement.addSymbol("@{a}", "67"); + displayElement.addSymbol(createSymbol("@{ab}", "43")); + displayElement.addSymbol(createSymbol("@{a}", "67")); clayContext.setChild(child); @@ -414,8 +423,8 @@ assertNotNull("javax.faces.HtmlOutputText", child); attr.setValue("@(a)@(ab)"); //symbolic attribute - displayElement.addSymbol("@(ab)", "43"); - displayElement.addSymbol("@(a)", "67"); + displayElement.addSymbol(createSymbol("@(ab)", "43")); + displayElement.addSymbol(createSymbol("@(a)", "67")); clayContext.setChild(child); @@ -436,25 +445,25 @@ ComponentBean bean = standardConfigBean.getElement("baseSymbolLabel"); assertNotNull(bean); //look for a base symbol definition - String symbol = (String) bean.getSymbols().get("@mystyle"); + SymbolBean symbol = (SymbolBean) bean.getSymbols().get("@mystyle"); assertNotNull(symbol); - assertEquals("@mystyle == color:blue", "color:blue", symbol); + assertEquals("@mystyle == color:blue", "color:blue", symbol.getValue()); // symbol1Label extends baseSymbolLabel bean = standardConfigBean.getElement("symbol1Label"); assertNotNull(bean); //look for inherited symbol - symbol = (String) bean.getSymbols().get("@mystyle"); + symbol = (SymbolBean) bean.getSymbols().get("@mystyle"); assertNotNull(symbol); - assertEquals("@mystyle == color:blue", "color:blue", symbol); + assertEquals("@mystyle == color:blue", "color:blue", symbol.getValue()); // symbol2Label extends symbol1Label bean = standardConfigBean.getElement("symbol2Label"); assertNotNull(bean); //look for an overridden symbol - symbol = (String) bean.getSymbols().get("@mystyle"); + symbol = (SymbolBean) bean.getSymbols().get("@mystyle"); assertNotNull(symbol); - assertEquals("@mystyle == color:red", "color:red", symbol); + assertEquals("@mystyle == color:red", "color:red", symbol.getValue()); //test nested/inner element inheritance @@ -467,14 +476,14 @@ ElementBean ebean = (ElementBean) ei.next(); if (ebean.getRenderId() == 1) { //look for inherited symbol - symbol = (String) ebean.getSymbols().get("@mystyle"); + symbol = (SymbolBean) ebean.getSymbols().get("@mystyle"); assertNotNull(symbol); - assertEquals("@mystyle == color:blue", "color:blue", symbol); + assertEquals("@mystyle == color:blue", "color:blue", symbol.getValue()); } else if (ebean.getRenderId() == 2) { //look for an overridden symbol - symbol = (String) ebean.getSymbols().get("@mystyle"); + symbol = (SymbolBean) ebean.getSymbols().get("@mystyle"); assertNotNull(symbol); - assertEquals("@mystyle == color:red", "color:red", symbol); + assertEquals("@mystyle == color:red", "color:red", symbol.getValue()); } }