[struts] branch master updated: Minor code optimization in jasper reports result

2019-02-10 Thread jogep
This is an automated email from the ASF dual-hosted git repository.

jogep pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/struts.git


The following commit(s) were added to refs/heads/master by this push:
 new 2908d74  Minor code optimization in jasper reports result
2908d74 is described below

commit 2908d746ce2ac2a6a5298ef0ecef7bff359fabb2
Author: Johannes Geppert 
AuthorDate: Sun Feb 10 16:15:38 2019 +0100

Minor code optimization in jasper reports result
---
 .../views/jasperreports/JasperReportsResult.java   | 129 -
 .../views/jasperreports/ValueStackShadowMap.java   |  23 ++--
 2 files changed, 81 insertions(+), 71 deletions(-)

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 4eeb52d..3fbdf98 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
@@ -20,11 +20,22 @@ package org.apache.struts2.views.jasperreports;
 
 import com.opensymphony.xwork2.ActionInvocation;
 import com.opensymphony.xwork2.util.ValueStack;
-
-import net.sf.jasperreports.engine.*;
-import net.sf.jasperreports.engine.export.*;
+import net.sf.jasperreports.engine.JRException;
+import net.sf.jasperreports.engine.JRExporter;
+import net.sf.jasperreports.engine.JRExporterParameter;
+import net.sf.jasperreports.engine.JRParameter;
+import net.sf.jasperreports.engine.JasperFillManager;
+import net.sf.jasperreports.engine.JasperPrint;
+import net.sf.jasperreports.engine.JasperReport;
+import net.sf.jasperreports.engine.export.HtmlExporter;
+import net.sf.jasperreports.engine.export.JRCsvExporter;
+import net.sf.jasperreports.engine.export.JRCsvExporterParameter;
+import net.sf.jasperreports.engine.export.JRHtmlExporterParameter;
+import net.sf.jasperreports.engine.export.JRPdfExporter;
+import net.sf.jasperreports.engine.export.JRRtfExporter;
+import net.sf.jasperreports.engine.export.JRXlsExporter;
+import net.sf.jasperreports.engine.export.JRXmlExporter;
 import net.sf.jasperreports.engine.util.JRLoader;
-
 import org.apache.commons.lang3.StringUtils;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
@@ -35,7 +46,6 @@ import javax.servlet.ServletContext;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-
 import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.IOException;
@@ -112,7 +122,7 @@ import java.util.TimeZone;
  * 
  * 
  * 
- *
+ * 
  * or for pdf
  *
  * 
@@ -128,7 +138,7 @@ public class JasperReportsResult extends 
StrutsResultSupport implements JasperRe
 
 private static final long serialVersionUID = -2523174799621182907L;
 
-private final static Logger LOG = 
LogManager.getLogger(JasperReportsResult.class);
+private static final Logger LOG = 
LogManager.getLogger(JasperReportsResult.class);
 
 protected String dataSource;
 protected String format;
@@ -202,9 +212,7 @@ public class JasperReportsResult extends 
StrutsResultSupport implements JasperRe
 }
 
 /**
- * set time zone id
- *
- * @param timeZone
+ * @param timeZone set time zone id
  */
 public void setTimeZone(final String timeZone) {
 this.timeZone = timeZone;
@@ -244,8 +252,10 @@ public class JasperReportsResult extends 
StrutsResultSupport implements JasperRe
 
 LOG.debug("Creating JasperReport for dataSource = {}, format = {}", 
dataSource, format);
 
-HttpServletRequest request = (HttpServletRequest) 
invocation.getInvocationContext().get(ServletActionContext.HTTP_REQUEST);
-HttpServletResponse response = (HttpServletResponse) 
invocation.getInvocationContext().get(ServletActionContext.HTTP_RESPONSE);
+HttpServletRequest request = (HttpServletRequest) 
invocation.getInvocationContext()
+.get(ServletActionContext.HTTP_REQUEST);
+HttpServletResponse response = (HttpServletResponse) 
invocation.getInvocationContext()
+.get(ServletActionContext.HTTP_RESPONSE);
 
 // Handle IE special case: it sends a "contype" request first.
 // TODO Set content type to config settings?
@@ -265,8 +275,9 @@ public class JasperReportsResult extends 
StrutsResultSupport implements JasperRe
 ValueStackDataSource stackDataSource = null;
 
 Connection conn = (Connection) stack.findValue(connection);
-if (conn == null)
+if (conn == null) {
 stackDataSource = new ValueStackDataSource(stack, dataSource, 
wrapField);
+}
 
 if ("https".equalsIgnoreCase(request.getScheme())) {
 // set the the HTTP Header to work around IE SSL wei

[struts] branch master updated: Improve SecurityMemberAccess (#323)

2019-02-10 Thread yasserzamani
This is an automated email from the ASF dual-hosted git repository.

yasserzamani pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/struts.git


The following commit(s) were added to refs/heads/master by this push:
 new 9466b61  Improve SecurityMemberAccess (#323)
9466b61 is described below

commit 9466b615abbe4bccc5cf76ad54112128ce011e9d
Author: Aleksandr Mashchenko 
AuthorDate: Sun Feb 10 21:47:27 2019 +0200

Improve SecurityMemberAccess (#323)

* Improve SecurityMemberAccess

Move public member check to be the first performed
Remove final-s from methods to allow overriding
Split check for statics into two separate methods

* Change log level to warn
---
 .../xwork2/ognl/SecurityMemberAccess.java  | 65 ++
 1 file changed, 41 insertions(+), 24 deletions(-)

diff --git 
a/core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java 
b/core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java
index fd36972..af87056 100644
--- a/core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java
+++ b/core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java
@@ -105,19 +105,25 @@ public class SecurityMemberAccess implements MemberAccess 
{
 public boolean isAccessible(Map context, Object target, Member member, 
String propertyName) {
 LOG.debug("Checking access for [target: {}, member: {}, property: 
{}]", target, member, propertyName);
 
-if (checkEnumAccess(target, member)) {
-LOG.trace("Allowing access to enum: target [{}], member [{}]", 
target, member);
-return true;
+final int memberModifiers = member.getModifiers();
+
+if (!checkPublicMemberAccess(memberModifiers)) {
+LOG.warn("Access to non-public [{}] is blocked!", member);
+return false;
 }
 
-final int memberModifiers = member.getModifiers();
-if (!checkStaticMemberAccess(member, memberModifiers)) {
-LOG.warn("Access to static [{}] is blocked!", member);
+if (!checkStaticFieldAccess(member, memberModifiers)) {
+LOG.warn("Access to static field [{}] is blocked!", member);
 return false;
 }
 
-if (!checkPublicMemberAccess(memberModifiers)) {
-LOG.trace("Access to non-public [{}] is blocked!", member);
+if (checkEnumAccess(target, member)) {
+LOG.trace("Allowing access to enum: target [{}], member [{}]", 
target, member);
+return true;
+}
+
+if (!checkStaticMethodAccess(member, memberModifiers)) {
+LOG.warn("Access to static method [{}] is blocked!", member);
 return false;
 }
 
@@ -151,28 +157,39 @@ public class SecurityMemberAccess implements MemberAccess 
{
 }
 
 /**
- * Check access for static members (via modifiers)
- * 
- * Static non-field access result is allowStaticMethodAccess.
- * Static field access result is allowStaticFieldAccess.
+ * Check access for static method (via modifiers).
  * 
  * Note: For non-static members, the result is always true.
  * 
  * @param member
- * @param memberModifiers (minor optimization)
+ * @param memberModifiers
  * 
  * @return
  */
-protected final boolean checkStaticMemberAccess(Member member, int 
memberModifiers) {
-if (Modifier.isStatic(memberModifiers)) {
-if (member instanceof Field) {
-return allowStaticFieldAccess;
-} else {
-if (allowStaticMethodAccess) {
-LOG.debug("Support for accessing static methods [member: 
{}] is deprecated!", member);
-}
-return allowStaticMethodAccess;
+protected boolean checkStaticMethodAccess(Member member, int 
memberModifiers) {
+if (Modifier.isStatic(memberModifiers) && !(member instanceof Field)) {
+if (allowStaticMethodAccess) {
+LOG.debug("Support for accessing static methods [member: {}] 
is deprecated!", member);
 }
+return allowStaticMethodAccess;
+} else {
+return true;
+}
+}
+
+/**
+ * Check access for static field (via modifiers).
+ * 
+ * Note: For non-static members, the result is always true.
+ * 
+ * @param member
+ * @param memberModifiers
+ * 
+ * @return
+ */
+protected boolean checkStaticFieldAccess(Member member, int 
memberModifiers) {
+if (Modifier.isStatic(memberModifiers) && member instanceof Field) {
+return allowStaticFieldAccess;
 } else {
 return true;
 }
@@ -187,11 +204,11 @@ public class SecurityMemberAccess implements MemberAccess 
{
  * 
  * @return
  */
-protected final boolean checkPublicMemberAccess(int memberModifiers) {
+protected boolean che