[3/3] git commit: WW-4290 Uses static map instead instance map to reduce memory consumption
WW-4290 Uses static map instead instance map to reduce memory consumption Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/49ecb5f9 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/49ecb5f9 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/49ecb5f9 Branch: refs/heads/develop Commit: 49ecb5f9f764b1b2a78072fa68b4377b8d2911fa Parents: b775b74 Author: Lukasz Lenart Authored: Sat Mar 22 09:04:15 2014 +0100 Committer: Lukasz Lenart Committed: Sat Mar 22 09:07:16 2014 +0100 -- .../xwork2/conversion/impl/DefaultTypeConverter.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/49ecb5f9/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultTypeConverter.java -- diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultTypeConverter.java b/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultTypeConverter.java index 29316d9..b1342cd 100644 --- a/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultTypeConverter.java +++ b/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultTypeConverter.java @@ -56,9 +56,9 @@ public class DefaultTypeConverter implements TypeConverter { private static final String NULL_STRING = "null"; -private final Map primitiveDefaults; +private static final Map primitiveDefaults; -public DefaultTypeConverter() { +static { Map map = new HashMap(); map.put(Boolean.TYPE, Boolean.FALSE); map.put(Byte.TYPE, Byte.valueOf((byte) 0));
[1/3] git commit: Allows pass Locale as array of parameters
Repository: struts Updated Branches: refs/heads/develop 4fbfa3b8b -> 49ecb5f9f Allows pass Locale as array of parameters Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/e99e4b28 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/e99e4b28 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/e99e4b28 Branch: refs/heads/develop Commit: e99e4b28e4bc3481aab4f80ed0943535144af4c7 Parents: 4fbfa3b Author: Lukasz Lenart Authored: Fri Mar 21 21:31:51 2014 +0100 Committer: Lukasz Lenart Committed: Fri Mar 21 21:31:51 2014 +0100 -- .../java/com/opensymphony/xwork2/interceptor/I18nInterceptor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/e99e4b28/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/I18nInterceptor.java -- diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/I18nInterceptor.java b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/I18nInterceptor.java index 2ce91ad..3deb268 100644 --- a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/I18nInterceptor.java +++ b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/I18nInterceptor.java @@ -272,7 +272,7 @@ public class I18nInterceptor extends AbstractInterceptor { protected Object findLocaleParameter(Map params, String parameterName) { Object requestedLocale = params.remove(parameterName); if (requestedLocale != null && requestedLocale.getClass().isArray() -&& ((Object[]) requestedLocale).length == 1) { +&& ((Object[]) requestedLocale).length > 0) { requestedLocale = ((Object[]) requestedLocale)[0]; if (LOG.isDebugEnabled()) {
[2/3] git commit: WW-4253 Removes duplicated class and style attribute
WW-4253 Removes duplicated class and style attribute Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/b775b74a Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/b775b74a Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/b775b74a Branch: refs/heads/develop Commit: b775b74afdf2093d746c6c108d3f580e6d08599a Parents: e99e4b2 Author: Lukasz Lenart Authored: Fri Mar 21 21:58:21 2014 +0100 Committer: Lukasz Lenart Committed: Fri Mar 21 21:58:21 2014 +0100 -- core/src/main/resources/template/simple/radiomap.ftl | 8 1 file changed, 8 deletions(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/b775b74a/core/src/main/resources/template/simple/radiomap.ftl -- diff --git a/core/src/main/resources/template/simple/radiomap.ftl b/core/src/main/resources/template/simple/radiomap.ftl index ab6d42c..34cf1b1 100644 --- a/core/src/main/resources/template/simple/radiomap.ftl +++ b/core/src/main/resources/template/simple/radiomap.ftl @@ -72,17 +72,9 @@ <#if itemCssClass?if_exists != ""> class="${itemCssClass?html}"<#rt/> -<#else> -<#if parameters.cssClass??> - class="${parameters.cssClass?html}"<#rt/> - <#if itemCssStyle?if_exists != ""> style="${itemCssStyle?html}"<#rt/> -<#else> -<#if parameters.cssStyle??> - style="${parameters.cssStyle?html}"<#rt/> - <#if itemTitle?if_exists != ""> title="${itemTitle?html}"<#rt/>
[4/4] git commit: WW-4224 finishes adding support for collection of parameters
WW-4224 finishes adding support for collection of parameters Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/da6ed911 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/da6ed911 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/da6ed911 Branch: refs/heads/develop Commit: da6ed911c9d89343d7fe83e72c2c6fcc21ffebb9 Parents: 49ecb5f 01255fa Author: Lukasz Lenart Authored: Sat Mar 22 09:43:44 2014 +0100 Committer: Lukasz Lenart Committed: Sat Mar 22 09:43:44 2014 +0100 -- .../dispatcher/ServletRedirectResult.java | 6 +- .../struts2/dispatcher/StrutsResultSupport.java | 75 + .../dispatcher/ServletRedirectResultTest.java | 109 +++ .../dispatcher/StrutsResultSupportTest.java | 31 ++ .../opensymphony/xwork2/util/TextParseUtil.java | 87 +++ .../xwork2/util/TextParseUtilTest.java | 45 +++- 6 files changed, 307 insertions(+), 46 deletions(-) --
[1/4] git commit: Extends parser to allow parse collections
Repository: struts Updated Branches: refs/heads/develop 49ecb5f9f -> da6ed911c Extends parser to allow parse collections Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/c03962c8 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/c03962c8 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/c03962c8 Branch: refs/heads/develop Commit: c03962c8c0d972c7e17a9f6d247887754fbe7f3f Parents: 49ecb5f Author: Lukasz Lenart Authored: Sat Mar 22 09:41:00 2014 +0100 Committer: Lukasz Lenart Committed: Sat Mar 22 09:41:00 2014 +0100 -- .../opensymphony/xwork2/util/TextParseUtil.java | 87 .../xwork2/util/TextParseUtilTest.java | 45 +- 2 files changed, 130 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/c03962c8/xwork-core/src/main/java/com/opensymphony/xwork2/util/TextParseUtil.java -- diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/util/TextParseUtil.java b/xwork-core/src/main/java/com/opensymphony/xwork2/util/TextParseUtil.java index 4b54e81..a3938ef 100644 --- a/xwork-core/src/main/java/com/opensymphony/xwork2/util/TextParseUtil.java +++ b/xwork-core/src/main/java/com/opensymphony/xwork2/util/TextParseUtil.java @@ -16,9 +16,13 @@ package com.opensymphony.xwork2.util; import com.opensymphony.xwork2.ActionContext; +import com.opensymphony.xwork2.conversion.impl.XWorkConverter; import com.opensymphony.xwork2.inject.Container; +import java.util.ArrayList; +import java.util.Collection; import java.util.HashSet; +import java.util.Map; import java.util.Set; @@ -168,6 +172,89 @@ public class TextParseUtil { } /** + * @see #translateVariablesCollection(char[], String, ValueStack, boolean, ParsedValueEvaluator, int) + * + * @param expression + * @param stack + * @param excludeEmptyElements + * @param evaluator + * @return + */ +public static Collection translateVariablesCollection(String expression, ValueStack stack, boolean excludeEmptyElements, ParsedValueEvaluator evaluator) { +return translateVariablesCollection(new char[]{'$', '%'}, expression, stack, excludeEmptyElements, evaluator, MAX_RECURSION); +} + +/** + * Resolves given expression on given ValueStack. If found element is a + * collection each element will be converted to String. If just a single + * object is found it is converted to String and wrapped in a collection. + * + * @param openChars + * @param expression + * @param stack + * @param excludeEmptyElements + * @param evaluator + * @param maxLoopCount + * @return + */ +public static Collection translateVariablesCollection( +char[] openChars, String expression, final ValueStack stack, boolean excludeEmptyElements, +final ParsedValueEvaluator evaluator, int maxLoopCount) { + +ParsedValueEvaluator ognlEval = new ParsedValueEvaluator() { +public Object evaluate(String parsedValue) { +return stack.findValue(parsedValue); // no asType !!! +} +}; + +Map context = stack.getContext(); +TextParser parser = ((Container)context.get(ActionContext.CONTAINER)).getInstance(TextParser.class); + +Object result = parser.evaluate(openChars, expression, ognlEval, maxLoopCount); + +XWorkConverter conv = ((Container)context.get(ActionContext.CONTAINER)).getInstance(XWorkConverter.class); + +Collection resultCol; +if (result instanceof Collection) { +@SuppressWarnings("unchecked") +Collection casted = (Collection)result; +resultCol = new ArrayList(casted.size()); +for (Object element : casted) { +String stringElement = (String)conv.convertValue(context, element, String.class); +if (shallBeIncluded(stringElement, excludeEmptyElements)) { +if (evaluator != null) { +stringElement = evaluator.evaluate(stringElement).toString(); +} +resultCol.add(stringElement); +} +} +} else { +resultCol = new ArrayList(1); +String stringResult = (String)conv.convertValue(context, result, String.class); +if (shallBeIncluded(stringResult, excludeEmptyElements)) { +if (evaluator != null) { +stringResult = evaluator.evaluate(stringResult).toString(); +} +resultCol.add(stringResult); +} +} + +return resultCol; +} + +/** + * Tests if given string is not null and not empty w
[3/4] git commit: Uses the possibility to parse parameters as collection
Uses the possibility to parse parameters as collection Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/01255fa2 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/01255fa2 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/01255fa2 Branch: refs/heads/develop Commit: 01255fa2f836b836e4868668c7be80b68854f951 Parents: a4a7edd Author: Lukasz Lenart Authored: Sat Mar 22 09:43:22 2014 +0100 Committer: Lukasz Lenart Committed: Sat Mar 22 09:43:22 2014 +0100 -- .../dispatcher/ServletRedirectResult.java | 6 +- .../dispatcher/ServletRedirectResultTest.java | 109 +++ 2 files changed, 91 insertions(+), 24 deletions(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/01255fa2/core/src/main/java/org/apache/struts2/dispatcher/ServletRedirectResult.java -- diff --git a/core/src/main/java/org/apache/struts2/dispatcher/ServletRedirectResult.java b/core/src/main/java/org/apache/struts2/dispatcher/ServletRedirectResult.java index e4347b0..ae25463 100644 --- a/core/src/main/java/org/apache/struts2/dispatcher/ServletRedirectResult.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/ServletRedirectResult.java @@ -204,9 +204,9 @@ public class ServletRedirectResult extends StrutsResultSupport implements Reflec List prohibitedResultParams = getProhibitedResultParams(); for (Map.Entry e : resultConfigParams.entrySet()) { if (!prohibitedResultParams.contains(e.getKey())) { -String potentialValue = e.getValue() == null ? "" : conditionalParse(e.getValue(), invocation); -if (!suppressEmptyParameters || ((potentialValue != null) && (potentialValue.length() > 0))) { -requestParameters.put(e.getKey(), potentialValue); +Collection values = conditionalParseCollection(e.getValue(), invocation, suppressEmptyParameters); +if (!suppressEmptyParameters || !values.isEmpty()) { +requestParameters.put(e.getKey(), values); } } } http://git-wip-us.apache.org/repos/asf/struts/blob/01255fa2/core/src/test/java/org/apache/struts2/dispatcher/ServletRedirectResultTest.java -- diff --git a/core/src/test/java/org/apache/struts2/dispatcher/ServletRedirectResultTest.java b/core/src/test/java/org/apache/struts2/dispatcher/ServletRedirectResultTest.java index 5d9bf93..6a9e871 100644 --- a/core/src/test/java/org/apache/struts2/dispatcher/ServletRedirectResultTest.java +++ b/core/src/test/java/org/apache/struts2/dispatcher/ServletRedirectResultTest.java @@ -21,16 +21,24 @@ package org.apache.struts2.dispatcher; -import com.mockobjects.dynamic.C; -import com.mockobjects.dynamic.Mock; -import com.opensymphony.xwork2.ActionContext; -import com.opensymphony.xwork2.ActionInvocation; -import com.opensymphony.xwork2.ActionProxy; -import com.opensymphony.xwork2.config.entities.ActionConfig; -import com.opensymphony.xwork2.config.entities.PackageConfig; -import com.opensymphony.xwork2.config.entities.ResultConfig; -import com.opensymphony.xwork2.mock.MockActionInvocation; +import static javax.servlet.http.HttpServletResponse.SC_SEE_OTHER; +import static org.easymock.EasyMock.createControl; +import static org.easymock.EasyMock.createNiceMock; +import static org.easymock.EasyMock.expect; +import static org.easymock.EasyMock.replay; + +import java.io.PrintWriter; +import java.io.StringWriter; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + import ognl.Ognl; + import org.apache.struts2.ServletActionContext; import org.apache.struts2.StrutsInternalTestCase; import org.apache.struts2.StrutsStatics; @@ -40,18 +48,16 @@ import org.easymock.IMocksControl; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletResponse; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.PrintWriter; -import java.io.StringWriter; -import java.util.HashMap; -import java.util.Map; - -import static javax.servlet.http.HttpServletResponse.SC_SEE_OTHER; -import static org.easymock.EasyMock.createControl; -import static org.easymock.EasyMock.createNiceMock; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.replay; +import com.mockobjects.dynamic.C; +import com.mockobjects.dynamic.Mock; +import com.opensymphony.xwork2.A
[2/4] git commit: Adds support to parse collection of parameters
Adds support to parse collection of parameters Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/a4a7edd5 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/a4a7edd5 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/a4a7edd5 Branch: refs/heads/develop Commit: a4a7edd56a3c930e18b275aeefe6fd161c73d66e Parents: c03962c Author: Lukasz Lenart Authored: Sat Mar 22 09:42:54 2014 +0100 Committer: Lukasz Lenart Committed: Sat Mar 22 09:42:54 2014 +0100 -- .../struts2/dispatcher/StrutsResultSupport.java | 75 ++-- .../dispatcher/StrutsResultSupportTest.java | 31 2 files changed, 86 insertions(+), 20 deletions(-) -- http://git-wip-us.apache.org/repos/asf/struts/blob/a4a7edd5/core/src/main/java/org/apache/struts2/dispatcher/StrutsResultSupport.java -- diff --git a/core/src/main/java/org/apache/struts2/dispatcher/StrutsResultSupport.java b/core/src/main/java/org/apache/struts2/dispatcher/StrutsResultSupport.java index 676b0b9..269ed87 100644 --- a/core/src/main/java/org/apache/struts2/dispatcher/StrutsResultSupport.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/StrutsResultSupport.java @@ -23,6 +23,8 @@ package org.apache.struts2.dispatcher; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Collection; import org.apache.struts2.StrutsStatics; @@ -195,32 +197,65 @@ public abstract class StrutsResultSupport implements Result, StrutsStatics { */ protected String conditionalParse(String param, ActionInvocation invocation) { if (parse && param != null && invocation != null) { -return TextParseUtil.translateVariables(param, invocation.getStack(), -new TextParseUtil.ParsedValueEvaluator() { -public Object evaluate(String parsedValue) { -if (encode) { -if (parsedValue != null) { -try { -// use UTF-8 as this is the recommended encoding by W3C to -// avoid incompatibilities. -return URLEncoder.encode(parsedValue, "UTF-8"); -} -catch(UnsupportedEncodingException e) { -if (LOG.isWarnEnabled()) { -LOG.warn("error while trying to encode ["+parsedValue+"]", e); -} -} -} -} -return parsedValue; -} -}); +return TextParseUtil.translateVariables( +param, +invocation.getStack(), +new EncodingParsedValueEvaluator()); } else { return param; } } /** + * As {@link #conditionalParse(String, ActionInvocation)} but does not + * convert found object into String. If found object is a collection it is + * returned if found object is not a collection it is wrapped in one. + * + * @param param + * @param invocation + * @param excludeEmptyElements + * @return + */ +protected Collection conditionalParseCollection(String param, ActionInvocation invocation, boolean excludeEmptyElements) { +if (parse && param != null && invocation != null) { +return TextParseUtil.translateVariablesCollection( +param, +invocation.getStack(), +excludeEmptyElements, +new EncodingParsedValueEvaluator()); +} else { +Collection collection = new ArrayList(1); +collection.add(param); +return collection; +} +} + +/** + * {@link com.opensymphony.xwork2.util.TextParseUtil.ParsedValueEvaluator} to do URL encoding for found values. To be + * used for single strings or collections. + * + */ +private final class EncodingParsedValueEvaluator implements TextParseUtil.ParsedValueEvaluator { +public Object evaluate(String parsedValue) { +if (encode) { +if (parsedValue != null) { +try { +// use UTF-8 as this is the recommended encoding by W3C to +// avoid incompatibilities. +return URLEncoder.encode(parsedValue, "UTF-8"); +} +catch(UnsupportedEncodingException e)
[CONF] Confluence Changes in the last 24 hours
Confluence Changes in the last 24 hours Apache Hive Pages Page: Configuration Properties edited by Lefty Leverenz [08:25 AM] (View Changes) OFBiz (Open For Business) Project Open Wiki Pages Page: Addressing Custom Requirements In OFBiz edited by Jacques Le Roux [08:02 PM] (View Changes) Apache OpenOffice Community Pages Page: AOO 4.1 Notas de la versión - Español edited by SLV-es [07:16 PM] (View Changes) Apache Roller Pages Page: WhoUsesRoller edited by Glen Mazza [07:45 PM] (View Changes) Apache Stratos Pages Page: Copy of 4.0.0 Architecture edited by Mariangela Hills [02:04 AM] (View Changes) Apache Synapse Comments Page: JMS Transport Specifications has 2 new comments [ Anonymous ] Apache TAJO Pages Home page: Apache TAJO Home edited by Hyunsik Choi [04:17 PM] (View Changes) Page: GSoC 2013 created by Hyunsik Choi [04:11 PM] Page: How To Write User Documentations created by Hyunsik Choi [04:09 PM] Page: MajorReleaseAnnouncementTemplate created by Hyunsik Choi [03:58 PM] Page: Unit Tests created by Hyunsik Choi [03:57 PM] Page: Code Style created by Hyunsik Choi [03:54 PM] Page: How To Update Tajo Site created by Hyunsik Choi [03:53 PM] Page: TPC-H Benchmark Set created by Hyunsik Choi [03:36 PM] Page: Benchmarks created by Hyunsik Choi [03:33 PM] Page: How to Contribute to Tajo created by Hyunsik Choi [03:20 PM] Page: Tajo Internal created by Hyunsik Choi [03:07 PM]