r1040 - in trunk/wikitty-struts/src/main: java/org/nuiton/wikitty/struts java/org/nuiton/wikitty/struts/component java/org/nuiton/wikitty/struts/tag tld
Author: mfortun Date: 2011-07-04 15:23:21 +0200 (Mon, 04 Jul 2011) New Revision: 1040 Url: http://nuiton.org/repositories/revision/wikitty/1040 Log: * allow tag to be used outside form tag, but in this case wikitty attribute and proxy must be defined Added: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/TagUseException.java Modified: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/AbstractWikittyComponent.java trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/BooleanBean.java trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/DateBean.java trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/FormTagBean.java trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/HiddenBean.java trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/SelectCriteriaBean.java trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/SelectFixedBean.java trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/TextAreaBean.java trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/TextFieldBean.java trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/tag/AbstractWikittyTag.java trunk/wikitty-struts/src/main/tld/wikitty-struts.tld Added: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/TagUseException.java =================================================================== --- trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/TagUseException.java (rev 0) +++ trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/TagUseException.java 2011-07-04 13:23:21 UTC (rev 1040) @@ -0,0 +1,25 @@ +package org.nuiton.wikitty.struts; + +public class TagUseException extends RuntimeException { + + /** + * + */ + private static final long serialVersionUID = 5985271991430090753L; + + public TagUseException() { + } + + public TagUseException(String message, Throwable cause) { + super(message, cause); + } + + public TagUseException(String message) { + super(message); + } + + public TagUseException(Throwable cause) { + super(cause); + } + +} Property changes on: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/TagUseException.java ___________________________________________________________________ Added: svn:mime-type + text/plain Modified: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/AbstractWikittyComponent.java =================================================================== --- trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/AbstractWikittyComponent.java 2011-07-04 12:57:41 UTC (rev 1039) +++ trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/AbstractWikittyComponent.java 2011-07-04 13:23:21 UTC (rev 1040) @@ -5,6 +5,9 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.struts2.components.ClosingUIBean; +import org.nuiton.wikitty.WikittyProxy; +import org.nuiton.wikitty.entities.Wikitty; +import org.nuiton.wikitty.struts.TagUseException; import org.nuiton.wikitty.struts.WikittyFieldHandler; import com.opensymphony.xwork2.util.ValueStack; @@ -18,6 +21,16 @@ protected WikittyFieldHandler handler; protected String fqFieldName; + /** + * Never used directly this attribute use the getter + */ + protected Wikitty wikitty; + + /** + * Never used directly this attribute use the getter + */ + protected WikittyProxy proxy; + protected AbstractWikittyComponent(ValueStack stack, HttpServletRequest request, HttpServletResponse response) { super(stack, request, response); @@ -25,14 +38,52 @@ handler = (WikittyFieldHandler) stack.getContext().get( WikittyFieldHandler.WIKITTY_STACK_KEY); - if (handler == null) { + if (handler == null && wikitty == null) { log.info("Handler not found in the stack"); // TODO mfortun-2011-06-29 throw exception if handler not in the // stack + + throw new TagUseException( + "Tag must declare Wikitty attribute if used outside ws:form tag"); } } + public boolean isIncluded(String fieldName) { + if (handler != null) { + return handler.isIncluded(fieldName); + } + return true; + } + + public WikittyProxy getProxy() { + if (handler != null) { + return handler.getProxy(); + } + return proxy; + } + + public Wikitty getWikitty() { + if (handler != null) { + return handler.getWikitty(); + } + return wikitty; + } + + @Override + protected void evaluateExtraParams() { + super.evaluateExtraParams(); + if (fqFieldName != null) { + addParameter("fqFieldName", fqFieldName); + } + if (isIncluded(fqFieldName)) { + if (handler != null) { + handler.addAddedField(fqFieldName); + } + } + + } + public WikittyFieldHandler getHandler() { return handler; } @@ -49,12 +100,12 @@ this.fqFieldName = fqFieldName; } - @Override - protected void evaluateExtraParams() { - super.evaluateExtraParams(); - if ( fqFieldName !=null) { - addParameter("fqFieldName", fqFieldName); - } + public void setWikitty(Wikitty wikitty) { + this.wikitty = wikitty; } + public void setProxy(WikittyProxy proxy) { + this.proxy = proxy; + } + } Modified: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/BooleanBean.java =================================================================== --- trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/BooleanBean.java 2011-07-04 12:57:41 UTC (rev 1039) +++ trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/BooleanBean.java 2011-07-04 13:23:21 UTC (rev 1040) @@ -32,8 +32,7 @@ // if field defined as inclued - if (handler.isIncluded(fqFieldName)) { - handler.addAddedField(fqFieldName); + if (isIncluded(fqFieldName)) { // parse extname and field name String[] fieldsAccess = StringUtil.split(fqFieldName, WikittyUtil.FQ_FIELD_NAME_SEPARATOR); // add parametters to be use by the template @@ -41,7 +40,7 @@ "included",true); addParameter( "value", - handler.getWikitty().getFieldAsBoolean(fieldsAccess[0], + getWikitty().getFieldAsBoolean(fieldsAccess[0], fieldsAccess[1])); } } Modified: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/DateBean.java =================================================================== --- trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/DateBean.java 2011-07-04 12:57:41 UTC (rev 1039) +++ trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/DateBean.java 2011-07-04 13:23:21 UTC (rev 1040) @@ -33,13 +33,13 @@ // if field defined as inclued - if (handler.isIncluded(fqFieldName)) { + if (isIncluded(fqFieldName)) { // parse extname and field name String[] fieldsAccess = StringUtil.split(fqFieldName, WikittyUtil.FQ_FIELD_NAME_SEPARATOR); // add parametters to be use by the template addParameter("included", true); - Object val = handler.getWikitty().getFieldAsDate(fieldsAccess[0], + Object val = getWikitty().getFieldAsDate(fieldsAccess[0], fieldsAccess[1]); val = val==null?"":val; @@ -49,7 +49,6 @@ addParameter("enableHour", enableHour); } - handler.addAddedField(fqFieldName); } Modified: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/FormTagBean.java =================================================================== --- trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/FormTagBean.java 2011-07-04 12:57:41 UTC (rev 1039) +++ trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/FormTagBean.java 2011-07-04 13:23:21 UTC (rev 1040) @@ -101,6 +101,10 @@ handler.setOrderBefore(orderBefore); } else { + // when the tag is closing remove the handler from the stack + stack.getContext().remove(WikittyFieldHandler.WIKITTY_STACK_KEY); + + handler = (WikittyFieldHandler) temp; } // add field that have to be write inside the page Modified: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/HiddenBean.java =================================================================== --- trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/HiddenBean.java 2011-07-04 12:57:41 UTC (rev 1039) +++ trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/HiddenBean.java 2011-07-04 13:23:21 UTC (rev 1040) @@ -30,15 +30,14 @@ super.evaluateExtraParams(); // if field defined as inclued - if (handler.isIncluded(fqFieldName)) { - handler.addAddedField(fqFieldName); + if (isIncluded(fqFieldName)) { // parse extname and field name String[] fieldsAccess = StringUtil.split(fqFieldName, WikittyUtil.FQ_FIELD_NAME_SEPARATOR); // add parametters to be use by the template addParameter("included", true); addParameter( "value", - handler.getWikitty().getFieldAsString(fieldsAccess[0], + getWikitty().getFieldAsString(fieldsAccess[0], fieldsAccess[1])); } Modified: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/SelectCriteriaBean.java =================================================================== --- trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/SelectCriteriaBean.java 2011-07-04 12:57:41 UTC (rev 1039) +++ trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/SelectCriteriaBean.java 2011-07-04 13:23:21 UTC (rev 1040) @@ -8,11 +8,13 @@ import org.apache.commons.logging.LogFactory; import org.apache.struts2.views.annotations.StrutsTag; import org.nuiton.util.StringUtil; +import org.nuiton.wikitty.WikittyProxy; import org.nuiton.wikitty.WikittyUtil; import org.nuiton.wikitty.entities.Wikitty; import org.nuiton.wikitty.search.Criteria; import org.nuiton.wikitty.search.PagedResult; import org.nuiton.wikitty.struts.Option; +import org.nuiton.wikitty.struts.TagUseException; import org.nuiton.wikitty.struts.WikittyFieldHandler; import com.opensymphony.xwork2.util.ValueStack; @@ -40,26 +42,28 @@ // if field defined as inclued - if (handler.isIncluded(fqFieldName)) { - - - - - handler.addAddedField(fqFieldName); - - // parse extname and field name + if (isIncluded(fqFieldName)) { + // parse extname and field name String[] fieldsAccess = StringUtil.split(fqFieldName, WikittyUtil.FQ_FIELD_NAME_SEPARATOR); // add parametters to be use by the template addParameter("included", true); addParameter( "value", - handler.getWikitty().getFieldAsString(fieldsAccess[0], + getWikitty().getFieldAsString(fieldsAccess[0], fieldsAccess[1])); List<Option> fixlist = new LinkedList<Option>(); + WikittyProxy proxy= getProxy(); + + if (proxy == null) { + throw new TagUseException( + "Tag must declare a valid proxy attribute if used outside ws:form tag"); + } + + // search for the wikitty with the criteria - PagedResult<Wikitty> wikitties = handler.getProxy() + PagedResult<Wikitty> wikitties = proxy .findAllByCriteria(criteria); String[] descriptor = StringUtil.split(descfield, WikittyFieldHandler.FIELD_SEPARATOR); Modified: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/SelectFixedBean.java =================================================================== --- trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/SelectFixedBean.java 2011-07-04 12:57:41 UTC (rev 1039) +++ trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/SelectFixedBean.java 2011-07-04 13:23:21 UTC (rev 1040) @@ -35,15 +35,15 @@ super.evaluateExtraParams(); // if field defined as inclued - if (handler.isIncluded(fqFieldName)) { - handler.addAddedField(fqFieldName); + if (isIncluded(fqFieldName)) { + // parse extname and field name String[] fieldsAccess = StringUtil.split(fqFieldName, WikittyUtil.FQ_FIELD_NAME_SEPARATOR); // add parametters to be use by the template addParameter("included", true); addParameter( "value", - handler.getWikitty().getFieldAsString(fieldsAccess[0], + getWikitty().getFieldAsString(fieldsAccess[0], fieldsAccess[1])); List<Option> fixlist = new LinkedList<Option>(); Modified: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/TextAreaBean.java =================================================================== --- trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/TextAreaBean.java 2011-07-04 12:57:41 UTC (rev 1039) +++ trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/TextAreaBean.java 2011-07-04 13:23:21 UTC (rev 1040) @@ -29,15 +29,15 @@ super.evaluateExtraParams(); // if field defined as inclued - if (handler.isIncluded(fqFieldName)) { - handler.addAddedField(fqFieldName); + if (isIncluded(fqFieldName)) { + // parse extname and field name String[] fieldsAccess = StringUtil.split(fqFieldName, WikittyUtil.FQ_FIELD_NAME_SEPARATOR); // add parametters to be use by the template addParameter("included", true); addParameter( "value", - handler.getWikitty().getFieldAsString(fieldsAccess[0], + getWikitty().getFieldAsString(fieldsAccess[0], fieldsAccess[1])); } Modified: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/TextFieldBean.java =================================================================== --- trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/TextFieldBean.java 2011-07-04 12:57:41 UTC (rev 1039) +++ trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/TextFieldBean.java 2011-07-04 13:23:21 UTC (rev 1040) @@ -30,16 +30,15 @@ // if field defined as inclued - if (handler.isIncluded(fqFieldName)) { + if (isIncluded(fqFieldName)) { // parse extname and field name String[] fieldsAccess = StringUtil.split(fqFieldName, WikittyUtil.FQ_FIELD_NAME_SEPARATOR); // add parametters to be use by the template addParameter("included", true); addParameter( "value", - handler.getWikitty().getFieldAsString(fieldsAccess[0], + getWikitty().getFieldAsString(fieldsAccess[0], fieldsAccess[1])); - handler.addAddedField(fqFieldName); } } Modified: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/tag/AbstractWikittyTag.java =================================================================== --- trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/tag/AbstractWikittyTag.java 2011-07-04 12:57:41 UTC (rev 1039) +++ trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/tag/AbstractWikittyTag.java 2011-07-04 13:23:21 UTC (rev 1040) @@ -1,6 +1,8 @@ package org.nuiton.wikitty.struts.tag; import org.apache.struts2.views.jsp.ui.AbstractClosingTag; +import org.nuiton.wikitty.WikittyProxy; +import org.nuiton.wikitty.entities.Wikitty; import org.nuiton.wikitty.struts.component.AbstractWikittyComponent; public abstract class AbstractWikittyTag extends AbstractClosingTag { @@ -8,6 +10,8 @@ private static final long serialVersionUID = -3401870606519882751L; protected String fqFieldName; + protected Wikitty wikitty; + protected WikittyProxy proxy; public String getFqFieldName() { return fqFieldName; @@ -18,11 +22,29 @@ } + public Wikitty getWikitty() { + return wikitty; + } + + public void setWikitty(Wikitty wikitty) { + this.wikitty = wikitty; + } + + public WikittyProxy getProxy() { + return proxy; + } + + public void setProxy(WikittyProxy proxy) { + this.proxy = proxy; + } + @Override protected void populateParams() { super.populateParams(); AbstractWikittyComponent wikittyComponent = (AbstractWikittyComponent) component; wikittyComponent.setFqFieldName(fqFieldName); + wikittyComponent.setWikitty(wikitty); + wikittyComponent.setProxy(proxy); } Modified: trunk/wikitty-struts/src/main/tld/wikitty-struts.tld =================================================================== --- trunk/wikitty-struts/src/main/tld/wikitty-struts.tld 2011-07-04 12:57:41 UTC (rev 1039) +++ trunk/wikitty-struts/src/main/tld/wikitty-struts.tld 2011-07-04 13:23:21 UTC (rev 1040) @@ -15,7 +15,7 @@ <attribute> <description><![CDATA[id for the field]]></description> <name>id</name> - <rtexprvalue>true</rtexprvalue> + <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <description><![CDATA[the wikitty to edit]]></description> @@ -67,8 +67,8 @@ <name>orderBefore</name> <rtexprvalue>true</rtexprvalue> </attribute> - - + + <attribute> <description><![CDATA[If a delele button must be in the form]]></description> <name>allowDelete</name> @@ -85,9 +85,19 @@ <attribute> <description><![CDATA[id for the field]]></description> <name>id</name> - <rtexprvalue>true</rtexprvalue> + <rtexprvalue>true</rtexprvalue> </attribute> <attribute> + <description><![CDATA[the wikitty to edit]]></description> + <name>wikitty</name> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description><![CDATA[the proxy from whom search for wikitty required if tag not used inside form tag]]></description> + <name>proxy</name> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> <description><![CDATA[if subtype == wikitty, use the list of wikitty found by criteria as option for select]]></description> <name>criteria</name> <rtexprvalue>true</rtexprvalue> @@ -120,9 +130,14 @@ <attribute> <description><![CDATA[id for the field]]></description> <name>id</name> - <rtexprvalue>true</rtexprvalue> + <rtexprvalue>true</rtexprvalue> </attribute> <attribute> + <description><![CDATA[the wikitty to edit]]></description> + <name>wikitty</name> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> <description><![CDATA[if subtype == fixed, use the list of fixed value as option for a select]]></description> <name>fixvalues</name> <rtexprvalue>true</rtexprvalue> @@ -149,9 +164,14 @@ <attribute> <description><![CDATA[id for the field]]></description> <name>id</name> - <rtexprvalue>true</rtexprvalue> + <rtexprvalue>true</rtexprvalue> </attribute> <attribute> + <description><![CDATA[the wikitty to edit]]></description> + <name>wikitty</name> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> <description><![CDATA[the name of the field that have to be specialize]]></description> <name>fqFieldName</name> <rtexprvalue>true</rtexprvalue> @@ -167,9 +187,14 @@ <attribute> <description><![CDATA[id for the field]]></description> <name>id</name> - <rtexprvalue>true</rtexprvalue> + <rtexprvalue>true</rtexprvalue> </attribute> <attribute> + <description><![CDATA[the wikitty to edit]]></description> + <name>wikitty</name> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> <description><![CDATA[the name of the field that have to be specialize]]></description> <name>fqFieldName</name> <rtexprvalue>true</rtexprvalue> @@ -182,7 +207,7 @@ <required>true</required> </attribute> </tag> - + <tag> <name>date</name> <tagclass>org.nuiton.wikitty.struts.tag.DateTag</tagclass> @@ -190,9 +215,14 @@ <attribute> <description><![CDATA[id for the field]]></description> <name>id</name> - <rtexprvalue>true</rtexprvalue> + <rtexprvalue>true</rtexprvalue> </attribute> <attribute> + <description><![CDATA[the wikitty to edit]]></description> + <name>wikitty</name> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> <description><![CDATA[the name of the field that have to be specialize]]></description> <name>fqFieldName</name> <rtexprvalue>true</rtexprvalue> @@ -210,8 +240,8 @@ <rtexprvalue>true</rtexprvalue> </attribute> </tag> - + <tag> <name>textArea</name> <tagclass>org.nuiton.wikitty.struts.tag.TextAreaTag</tagclass> @@ -219,9 +249,14 @@ <attribute> <description><![CDATA[id for the field]]></description> <name>id</name> - <rtexprvalue>true</rtexprvalue> + <rtexprvalue>true</rtexprvalue> </attribute> <attribute> + <description><![CDATA[the wikitty to edit]]></description> + <name>wikitty</name> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> <description><![CDATA[the name of the field that have to be specialize]]></description> <name>fqFieldName</name> <rtexprvalue>true</rtexprvalue> @@ -242,9 +277,14 @@ <attribute> <description><![CDATA[id for the field]]></description> <name>id</name> - <rtexprvalue>true</rtexprvalue> + <rtexprvalue>true</rtexprvalue> </attribute> <attribute> + <description><![CDATA[the wikitty to edit]]></description> + <name>wikitty</name> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> <description><![CDATA[the name of the field that have to be specialize]]></description> <name>fqFieldName</name> <rtexprvalue>true</rtexprvalue>
participants (1)
-
mfortun@users.nuiton.org