git commit: WW-4374 Fixes problem with accessing Enum's values() method

2014-07-29 Thread lukaszlenart
Repository: struts
Updated Branches:
  refs/heads/develop 47d1fe04d -> bf6b37f2e


WW-4374 Fixes problem with accessing Enum's values() method


Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/bf6b37f2
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/bf6b37f2
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/bf6b37f2

Branch: refs/heads/develop
Commit: bf6b37f2e31214ca9bbdac784bb864c421b7dc29
Parents: 47d1fe0
Author: Lukasz Lenart 
Authored: Tue Jul 29 09:23:44 2014 +0200
Committer: Lukasz Lenart 
Committed: Tue Jul 29 09:23:44 2014 +0200

--
 .../xwork2/ognl/SecurityMemberAccess.java   | 43 ++--
 .../xwork2/ognl/OgnlValueStackTest.java | 15 +++
 .../xwork2/ognl/SecurityMemberAccessTest.java   | 16 
 3 files changed, 61 insertions(+), 13 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/bf6b37f2/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java
--
diff --git 
a/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java
 
b/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java
index d0862e7..a172237 100644
--- 
a/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java
+++ 
b/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java
@@ -53,6 +53,13 @@ public class SecurityMemberAccess extends 
DefaultMemberAccess {
 
 @Override
 public boolean isAccessible(Map context, Object target, Member member, 
String propertyName) {
+if (checkEnumAccess(target, member)) {
+if (LOG.isTraceEnabled()) {
+LOG.trace("Allowing access to enum #0", target);
+}
+return true;
+}
+
 if (isPackageExcluded(target.getClass().getPackage(), 
member.getDeclaringClass().getPackage())) {
 if (LOG.isWarnEnabled()) {
 LOG.warn("Package of target [#0] or package of member [#1] are 
excluded!", target, member);
@@ -68,17 +75,11 @@ public class SecurityMemberAccess extends 
DefaultMemberAccess {
 }
 
 boolean allow = true;
-int modifiers = member.getModifiers();
-if (Modifier.isStatic(modifiers)) {
-if (member instanceof Method && !getAllowStaticMethodAccess()) {
-allow = false;
-if (target instanceof Class) {
-Class clazz = (Class) target;
-Method method = (Method) member;
-if (Enum.class.isAssignableFrom(clazz) && 
method.getName().equals("values"))
-allow = true;
-}
+if (!checkStaticMethodAccess(member)) {
+if (LOG.isTraceEnabled()) {
+LOG.warn("Access to static [#0] is blocked!", member);
 }
+allow = false;
 }
 
 //failed static test
@@ -86,10 +87,26 @@ public class SecurityMemberAccess extends 
DefaultMemberAccess {
 return false;
 
 // Now check for standard scope rules
-if (!super.isAccessible(context, target, member, propertyName))
-return false;
+return super.isAccessible(context, target, member, propertyName)
+&& isAcceptableProperty(propertyName);
+}
 
-return isAcceptableProperty(propertyName);
+protected boolean checkStaticMethodAccess(Member member) {
+int modifiers = member.getModifiers();
+if (Modifier.isStatic(modifiers)) {
+return allowStaticMethodAccess;
+} else {
+return true;
+}
+}
+
+protected boolean checkEnumAccess(Object target, Member member) {
+if (target instanceof Class) {
+Class clazz = (Class) target;
+if (Enum.class.isAssignableFrom(clazz) && 
member.getName().equals("values"))
+return true;
+}
+return false;
 }
 
 protected boolean isPackageExcluded(Package targetPackage, Package 
memberPackage) {

http://git-wip-us.apache.org/repos/asf/struts/blob/bf6b37f2/xwork-core/src/test/java/com/opensymphony/xwork2/ognl/OgnlValueStackTest.java
--
diff --git 
a/xwork-core/src/test/java/com/opensymphony/xwork2/ognl/OgnlValueStackTest.java 
b/xwork-core/src/test/java/com/opensymphony/xwork2/ognl/OgnlValueStackTest.java
index cb71081..e0e949c 100644
--- 
a/xwork-core/src/test/java/com/opensymphony/xwork2/ognl/OgnlValueStackTest.java
+++ 
b/xwork-core/src/test/java/com/opensymphony/xwork2/ognl/OgnlValueStackTest.java
@@ -235,6 +235,17 @@ public class OgnlValueStackTest extends XWorkTestCase {
 assertEquals("fido", 
v

git commit: WW-4064 WW-3698 Adds additional flag to cover both cases

2014-07-29 Thread lukaszlenart
Repository: struts
Updated Branches:
  refs/heads/develop bf6b37f2e -> ca50c1aed


WW-4064 WW-3698 Adds additional flag to cover both cases


Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/ca50c1ae
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/ca50c1ae
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/ca50c1ae

Branch: refs/heads/develop
Commit: ca50c1aeddf0325485224b75b3e0cf0cb816a0f2
Parents: bf6b37f
Author: Lukasz Lenart 
Authored: Tue Jul 29 10:04:18 2014 +0200
Committer: Lukasz Lenart 
Committed: Tue Jul 29 10:04:18 2014 +0200

--
 .../jasperreports/JasperReportsResult.java  |  7 ++-
 .../jasperreports/ValueStackDataSource.java | 21 +++-
 2 files changed, 18 insertions(+), 10 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/ca50c1ae/plugins/jasperreports/src/main/java/org/apache/struts2/views/jasperreports/JasperReportsResult.java
--
diff --git 
a/plugins/jasperreports/src/main/java/org/apache/struts2/views/jasperreports/JasperReportsResult.java
 
b/plugins/jasperreports/src/main/java/org/apache/struts2/views/jasperreports/JasperReportsResult.java
index 0e366a1..4cb7de6 100644
--- 
a/plugins/jasperreports/src/main/java/org/apache/struts2/views/jasperreports/JasperReportsResult.java
+++ 
b/plugins/jasperreports/src/main/java/org/apache/struts2/views/jasperreports/JasperReportsResult.java
@@ -155,6 +155,7 @@ public class JasperReportsResult extends 
StrutsResultSupport implements JasperRe
 protected String delimiter;
 protected String imageServletUrl = "/images/";
 protected String timeZone;
+protected boolean wrapField = true;
 
 /**
  * Connection which can be passed to the report
@@ -227,6 +228,10 @@ public class JasperReportsResult extends 
StrutsResultSupport implements JasperRe
 this.timeZone = timeZone;
 }
 
+public void setWrapField(boolean wrapField) {
+this.wrapField = wrapField;
+}
+
 public String getReportParameters() {
 return reportParameters;
 }
@@ -284,7 +289,7 @@ public class JasperReportsResult extends 
StrutsResultSupport implements JasperRe
 
 Connection conn = (Connection) stack.findValue(connection);
 if (conn == null)
-stackDataSource = new ValueStackDataSource(stack, dataSource);
+stackDataSource = new ValueStackDataSource(stack, dataSource, 
wrapField);
 
 if ("https".equalsIgnoreCase(request.getScheme())) {
 // set the the HTTP Header to work around IE SSL weirdness

http://git-wip-us.apache.org/repos/asf/struts/blob/ca50c1ae/plugins/jasperreports/src/main/java/org/apache/struts2/views/jasperreports/ValueStackDataSource.java
--
diff --git 
a/plugins/jasperreports/src/main/java/org/apache/struts2/views/jasperreports/ValueStackDataSource.java
 
b/plugins/jasperreports/src/main/java/org/apache/struts2/views/jasperreports/ValueStackDataSource.java
index 57986b6..6ca1a4a 100644
--- 
a/plugins/jasperreports/src/main/java/org/apache/struts2/views/jasperreports/ValueStackDataSource.java
+++ 
b/plugins/jasperreports/src/main/java/org/apache/struts2/views/jasperreports/ValueStackDataSource.java
@@ -41,12 +41,12 @@ public class ValueStackDataSource implements 
JRRewindableDataSource {
  */
 private static Logger LOG = 
LoggerFactory.getLogger(ValueStackDataSource.class);
 
+private Iterator iterator;
+private ValueStack valueStack;
+private String dataSource;
+private boolean wrapField;
 
-Iterator iterator;
-ValueStack valueStack;
-String dataSource;
-boolean firstTimeThrough = true;
-
+private boolean firstTimeThrough = true;
 
 /**
  * Create a value stack data source on the given iterable property
@@ -54,10 +54,11 @@ public class ValueStackDataSource implements 
JRRewindableDataSource {
  * @param valueStack  The value stack to base the data source on
  * @param dataSourceParam The property to iterate over for the report
  */
-public ValueStackDataSource(ValueStack valueStack, String dataSourceParam) 
{
+public ValueStackDataSource(ValueStack valueStack, String dataSourceParam, 
boolean wrapField) {
 this.valueStack = valueStack;
+this.dataSource = dataSourceParam;
+this.wrapField = wrapField;
 
-dataSource = dataSourceParam;
 Object dataSourceValue = valueStack.findValue(dataSource);
 
 if (dataSourceValue != null) {
@@ -104,9 +105,11 @@ public class ValueStackDataSource implements 
JRRewindableDataSource {
 LOG.debug("Field [#0] = [#1]", field.getName(), value);
 }
 
-if (MakeIterator.isIterable(value))

git commit: WW-4165 Excludes attributes marked with @StrutsTagAttribute Such attributes won't be used as dynamic attributes and simply will be omitted

2014-07-29 Thread lukaszlenart
Repository: struts
Updated Branches:
  refs/heads/develop ca50c1aed -> 935cd33f7


WW-4165 Excludes attributes marked with @StrutsTagAttribute
Such attributes won't be used as dynamic attributes and simply will
be omitted


Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/935cd33f
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/935cd33f
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/935cd33f

Branch: refs/heads/develop
Commit: 935cd33f7e5731e92f114062e7bfdd5a63139a59
Parents: ca50c1a
Author: Lukasz Lenart 
Authored: Tue Jul 29 20:24:01 2014 +0200
Committer: Lukasz Lenart 
Committed: Tue Jul 29 20:24:01 2014 +0200

--
 .../apache/struts2/components/Component.java| 21 
 .../struts2/views/jsp/ui/AbstractUITag.java |  4 
 .../apache/struts2/views/jsp/ui/AnchorTest.java |  5 -
 .../struts2/views/jsp/ui/ComponentTest.java | 13 
 .../apache/struts2/views/jsp/ui/RadioTest.java  |  1 +
 5 files changed, 43 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/935cd33f/core/src/main/java/org/apache/struts2/components/Component.java
--
diff --git a/core/src/main/java/org/apache/struts2/components/Component.java 
b/core/src/main/java/org/apache/struts2/components/Component.java
index 99e3aee..2db1cbc 100644
--- a/core/src/main/java/org/apache/struts2/components/Component.java
+++ b/core/src/main/java/org/apache/struts2/components/Component.java
@@ -22,14 +22,17 @@
 package org.apache.struts2.components;
 
 import com.opensymphony.xwork2.inject.Inject;
+import com.opensymphony.xwork2.util.AnnotationUtils;
 import com.opensymphony.xwork2.util.TextParseUtil;
 import com.opensymphony.xwork2.util.ValueStack;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.struts2.StrutsConstants;
 import org.apache.struts2.StrutsException;
 import org.apache.struts2.dispatcher.mapper.ActionMapper;
 import org.apache.struts2.dispatcher.mapper.ActionMapping;
 import org.apache.struts2.util.ComponentUtils;
 import org.apache.struts2.util.FastByteArrayOutputStream;
+import org.apache.struts2.views.annotations.StrutsTagAttribute;
 import org.apache.struts2.views.jsp.TagUtils;
 import org.apache.struts2.views.util.UrlHelper;
 
@@ -38,6 +41,8 @@ import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.io.Writer;
+import java.lang.reflect.Method;
+import java.util.Collection;
 import java.util.LinkedHashMap;
 import java.util.Map;
 import java.util.Stack;
@@ -490,4 +495,20 @@ public class Component {
 return false;
 }
 
+/**
+ * Checks if provided name is a valid tag's attribute
+ *
+ * @param attrName String name of attribute
+ * @return true if attribute with the same name was already defined
+ */
+public boolean isValidTagAttribute(String attrName) {
+Collection annotatedMethods = 
AnnotationUtils.getAnnotatedMethods(getClass(), StrutsTagAttribute.class);
+for (Method annotatedMethod : annotatedMethods) {
+if 
(annotatedMethod.getName().contains(StringUtils.capitalize(attrName))) {
+return true;
+}
+}
+return false;
+}
+
 }

http://git-wip-us.apache.org/repos/asf/struts/blob/935cd33f/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITag.java
--
diff --git 
a/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITag.java 
b/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITag.java
index e57932a..d12b3a1 100644
--- a/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITag.java
+++ b/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITag.java
@@ -305,6 +305,10 @@ public abstract class AbstractUITag extends 
ComponentTagSupport implements Dynam
 }
 
 public void setDynamicAttribute(String uri, String localName, Object 
value) throws JspException {
+if (component.isValidTagAttribute(localName)) {
+return;
+}
+
 if (ComponentUtils.altSyntax(getStack()) && 
ComponentUtils.isExpression(value)) {
 dynamicAttributes.put(localName, 
String.valueOf(ObjectUtils.defaultIfNull(findValue(value.toString()), value)));
 } else {

http://git-wip-us.apache.org/repos/asf/struts/blob/935cd33f/core/src/test/java/org/apache/struts2/views/jsp/ui/AnchorTest.java
--
diff --git a/core/src/test/java/org/apache/struts2/views/jsp/ui/AnchorTest.java 
b/core/src/test/java/org/apache/struts2/views/jsp/ui/AnchorTest.java
index cba1b37..6511944 100644
--- a/core/src/test/java

[CONF] Confluence Changes in the last 24 hours

2014-07-29 Thread Anonymous (Confluence)
















  Confluence Changes in the last 24 hours  




 Apache BookKeeper 

Pages

 Page: Bookie Client State Transition created by Sijie Guo [07:31 AM] 


 Apache Camel 

Pages

 Page: Rest DSL edited by Claus Ibsen [08:21 AM] (View Changes) 


 Apache Cloudstack 

Pages

 Page: Bind and PowerDNS integration by Globo DNSAPI edited by Silvano Buback [11:11 PM] (View Changes) 
 Page: 2014W30 created by Daan Hoogland [09:52 AM] 


 Apache CXF Documentation 

Pages

 Page: JAX-RS edited by Daniel Kulp [07:44 PM] (View Changes) 


 Drill Wiki 

Pages

 Page: Apache Drill Architectural Overview edited by Bridget Bevens [10:02 PM] (View Changes) 
 Home page: Apache Drill Wiki edited by Bridget Bevens [09:36 PM] (View Changes) 
 Page: Apache Drill in 10 Minutes edited by Bridget Bevens [08:59 PM] (View Changes) 
 Page: Deploying Apache Drill in a Clustered Environment edited by Bridget Bevens [08:33 PM] (View Changes) 
 Page: Planning and Execution Options created by Bob Rumsby [07:08 PM] 
 Page: EXPLAIN Commands edited by Bob Rumsby [07:03 PM] (View Changes) 


 Apache Hive 

Pages

 Page: Configuration Properties edited by Lefty Leverenz [09:29 AM] (View Changes) 
 Page: HiveWebInterface edited by Lefty Leverenz [09:16 AM] (View Changes) 


 Apache Mesos 

Pages

 Page: A beautiful direction - capitolo 1 created by Elisa Fioravanti [05:15 PM] 
 Page: ~!@~free@@@>>>watch Buffalo Vs Chicago Live stream created by md. abdul sfdsf [03:51 PM] 
 Page: NFL Live Watch: New York Giants vs Buffalo Bills Live Streaming | Giants vs Bills Live Watch created by md. abdul sfdsf [03:48 PM] 
 Page: Insured Profits Review, Wh