[3/3] git commit: WW-4290 Uses static map instead instance map to reduce memory consumption

2014-03-22 Thread lukaszlenart
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

2014-03-22 Thread lukaszlenart
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

2014-03-22 Thread lukaszlenart
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

2014-03-22 Thread lukaszlenart
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

2014-03-22 Thread lukaszlenart
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

2014-03-22 Thread lukaszlenart
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

2014-03-22 Thread lukaszlenart
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

2014-03-22 Thread Anonymous (Confluence)
















  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]