svn commit: r1439137 - /struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java

2013-01-27 Thread lukaszlenart
Author: lukaszlenart
Date: Sun Jan 27 18:41:57 2013
New Revision: 1439137

URL: http://svn.apache.org/viewvc?rev=1439137view=rev
Log:
WW-3664 extends Dispatcher to create directory tree defined as 
struts.multipart.saveDir

Modified:

struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java

Modified: 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java?rev=1439137r1=1439136r2=1439137view=diff
==
--- 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java
 (original)
+++ 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java
 Sun Jan 27 18:41:57 2013
@@ -681,21 +681,20 @@ public class Dispatcher {
 File multipartSaveDir = new File(saveDir);
 
 if (!multipartSaveDir.exists()) {
-if (!multipartSaveDir.mkdir()) {
+if (!multipartSaveDir.mkdirs()) {
 String logMessage;
-   try {
-logMessage = Could not find create multipart save 
directory '+multipartSaveDir.getCanonicalPath()+'.;
-   } catch (IOException e) {
-logMessage = Could not find create multipart save 
directory '+multipartSaveDir.toString()+'.;
-   }
-   if(devMode) {
+try {
+logMessage = Could not find create multipart save 
directory ' + multipartSaveDir.getCanonicalPath() + '.;
+} catch (IOException e) {
+logMessage = Could not find create multipart save 
directory ' + multipartSaveDir.toString() + '.;
+}
+if (devMode) {
 LOG.error(logMessage);
-   }
-   else {
+} else {
 if (LOG.isWarnEnabled()) {
 LOG.warn(logMessage);
 }
-   }
+}
 }
 }
 }




svn commit: r1439156 - in /struts/struts2/trunk/core/src/main: java/org/apache/struts2/StrutsConstants.java java/org/apache/struts2/dispatcher/Dispatcher.java resources/struts-default.xml

2013-01-27 Thread lukaszlenart
Author: lukaszlenart
Date: Sun Jan 27 19:48:59 2013
New Revision: 1439156

URL: http://svn.apache.org/viewvc?rev=1439156view=rev
Log:
WW-3363 removes struts.multipart.handler and reference only to 
struts.multipart.parser to be consistent with the docs

Modified:

struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsConstants.java

struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java
struts/struts2/trunk/core/src/main/resources/struts-default.xml

Modified: 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsConstants.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsConstants.java?rev=1439156r1=1439155r2=1439156view=diff
==
--- 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsConstants.java 
(original)
+++ 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsConstants.java 
Sun Jan 27 19:48:59 2013
@@ -126,11 +126,6 @@ public final class StrutsConstants {
 public static final String STRUTS_MULTIPART_SAVEDIR = 
struts.multipart.saveDir;
 
 /**
- * The name of the bean that will handle multipart requests
- */
-public static final String STRUTS_MULTIPART_HANDLER = 
struts.multipart.handler;
-
-/**
  * The org.apache.struts2.dispatcher.multipart.MultiPartRequest parser 
implementation
  * for a multipart request (file upload)
  */

Modified: 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java?rev=1439156r1=1439155r2=1439156view=diff
==
--- 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java
 (original)
+++ 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java
 Sun Jan 27 19:48:59 2013
@@ -139,9 +139,9 @@ public class Dispatcher {
 private String multipartSaveDir;
 
 /**
- * Stores the value of StrutsConstants.STRUTS_MULTIPART_HANDLER setting
+ * Stores reference to instance of {@link MultiPartRequest} implementation 
defined by {@link StrutsConstants#STRUTS_MULTIPART_PARSER}
  */
-private String multipartHandlerName;
+private MultiPartRequest multipartHandler;
 
 /**
  * Provide list of default configuration files.
@@ -252,9 +252,9 @@ public class Dispatcher {
 multipartSaveDir = val;
 }
 
-@Inject(StrutsConstants.STRUTS_MULTIPART_HANDLER)
-public void setMultipartHandler(String val) {
-multipartHandlerName = val;
+@Inject
+public void setMultipartHandler(MultiPartRequest multiPartRequest) {
+this.multipartHandler = multiPartRequest;
 }
 
 @Inject
@@ -774,19 +774,8 @@ public class Dispatcher {
 
 String content_type = request.getContentType();
 if (content_type != null  
content_type.contains(multipart/form-data)) {
-MultiPartRequest mpr = null;
-//check for alternate implementations of MultiPartRequest
-SetString multiNames = 
getContainer().getInstanceNames(MultiPartRequest.class);
-for (String multiName : multiNames) {
-if (multiName.equals(multipartHandlerName)) {
-mpr = getContainer().getInstance(MultiPartRequest.class, 
multiName);
-}
-}
-if (mpr == null ) {
-mpr = getContainer().getInstance(MultiPartRequest.class);
-}
 LocaleProvider provider = 
getContainer().getInstance(LocaleProvider.class);
-request = new MultiPartRequestWrapper(mpr, request, 
getSaveDir(servletContext), provider);
+request = new MultiPartRequestWrapper(multipartHandler, request, 
getSaveDir(servletContext), provider);
 } else {
 request = new StrutsRequestWrapper(request);
 }

Modified: struts/struts2/trunk/core/src/main/resources/struts-default.xml
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/resources/struts-default.xml?rev=1439156r1=1439155r2=1439156view=diff
==
--- struts/struts2/trunk/core/src/main/resources/struts-default.xml (original)
+++ struts/struts2/trunk/core/src/main/resources/struts-default.xml Sun Jan 27 
19:48:59 2013
@@ -52,7 +52,7 @@
 
 bean type=org.apache.struts2.dispatcher.multipart.MultiPartRequest 
name=struts 
class=org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest 
scope=default/
 bean type=org.apache.struts2.dispatcher.multipart.MultiPartRequest 
name=jakarta 
class=org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest 
scope=default /
-constant name=struts.multipart.handler value=jakarta /
+

svn commit: r1439169 - in /struts/struts2/trunk/plugins/rest/src: main/java/org/apache/struts2/rest/DefaultHttpHeaders.java test/java/org/apache/struts2/rest/DefaultHttpHeadersTest.java

2013-01-27 Thread lukaszlenart
Author: lukaszlenart
Date: Sun Jan 27 20:23:06 2013
New Revision: 1439169

URL: http://svn.apache.org/viewvc?rev=1439169view=rev
Log:
WW-3492 adds proper handling of If-Modified-Since header

Modified:

struts/struts2/trunk/plugins/rest/src/main/java/org/apache/struts2/rest/DefaultHttpHeaders.java

struts/struts2/trunk/plugins/rest/src/test/java/org/apache/struts2/rest/DefaultHttpHeadersTest.java

Modified: 
struts/struts2/trunk/plugins/rest/src/main/java/org/apache/struts2/rest/DefaultHttpHeaders.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/rest/src/main/java/org/apache/struts2/rest/DefaultHttpHeaders.java?rev=1439169r1=1439168r2=1439169view=diff
==
--- 
struts/struts2/trunk/plugins/rest/src/main/java/org/apache/struts2/rest/DefaultHttpHeaders.java
 (original)
+++ 
struts/struts2/trunk/plugins/rest/src/main/java/org/apache/struts2/rest/DefaultHttpHeaders.java
 Sun Jan 27 20:23:06 2013
@@ -21,40 +21,55 @@
 
 package org.apache.struts2.rest;
 
+import com.opensymphony.xwork2.util.logging.Logger;
+import com.opensymphony.xwork2.util.logging.LoggerFactory;
+
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import static javax.servlet.http.HttpServletResponse.*;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.Date;
 
+import static javax.servlet.http.HttpServletResponse.SC_CREATED;
+import static javax.servlet.http.HttpServletResponse.SC_NOT_MODIFIED;
+import static javax.servlet.http.HttpServletResponse.SC_OK;
+
 /**
  * Default implementation of rest info that uses fluent-style construction
  */
 public class DefaultHttpHeaders implements HttpHeaders {
-String resultCode;
-int status = SC_OK;
-Object etag;
-Object locationId;
-String location;
-boolean disableCaching;
-boolean noETag = false;
-Date lastModified;
-
-public DefaultHttpHeaders() {}
-
+
+private static final Logger LOG = 
LoggerFactory.getLogger(DefaultHttpHeaders.class);
+
+private static final String IF_MODIFIED_SINCE_DATE_FORMAT = EEE, dd MMM 
 HH:mm:ss zzz;
+private static final SimpleDateFormat IF_MODIFIED_SINCE_FORMAT = new 
SimpleDateFormat(IF_MODIFIED_SINCE_DATE_FORMAT);
+
+private String resultCode;
+private int status = SC_OK;
+private Object etag;
+private Object locationId;
+private String location;
+private boolean disableCaching;
+private boolean noETag = false;
+private Date lastModified;
+
+public DefaultHttpHeaders() {
+}
+
 public DefaultHttpHeaders(String result) {
 resultCode = result;
 }
-
+
 public DefaultHttpHeaders renderResult(String code) {
 this.resultCode = code;
 return this;
 }
-
+
 public DefaultHttpHeaders withStatus(int code) {
 this.status = code;
 return this;
 }
-
+
 public DefaultHttpHeaders withETag(Object etag) {
 this.etag = etag;
 return this;
@@ -64,27 +79,27 @@ public class DefaultHttpHeaders implemen
 this.noETag = true;
 return this;
 }
-
+
 public DefaultHttpHeaders setLocationId(Object id) {
 this.locationId = id;
 return this;
 }
-
+
 public DefaultHttpHeaders setLocation(String loc) {
 this.location = loc;
 return this;
 }
-
+
 public DefaultHttpHeaders lastModified(Date date) {
 this.lastModified = date;
 return this;
 }
-
+
 public DefaultHttpHeaders disableCaching() {
 this.disableCaching = true;
 return this;
 }
-
+
 /* (non-Javadoc)
  * @see 
org.apache.struts2.rest.HttpHeaders#apply(javax.servlet.http.HttpServletRequest,
 javax.servlet.http.HttpServletResponse, java.lang.Object)
  */
@@ -108,9 +123,9 @@ public class DefaultHttpHeaders implemen
 int lastSlash = url.lastIndexOf(/);
 int lastDot = url.lastIndexOf(.);
 if (lastDot  lastSlash  lastDot  -1) {
-url = url.substring(0, 
lastDot)+/+locationId+url.substring(lastDot);
+url = url.substring(0, lastDot) + / + locationId + 
url.substring(lastDot);
 } else {
-url += /+locationId;
+url += / + locationId;
 }
 response.setHeader(Location, url);
 status = SC_CREATED;
@@ -130,16 +145,13 @@ public class DefaultHttpHeaders implemen
 }
 
 String reqLastModified = request.getHeader(If-Modified-Since);
-if (lastModified != null) {
-if 
(String.valueOf(lastModified.getTime()).equals(reqLastModified)) {
-lastModifiedNotChanged = true;
-}
-
+if (lastModified != null  reqLastModified != null) {
+lastModifiedNotChanged = 
compareIfModifiedSince(reqLastModified);
  

svn commit: r1439171 - /struts/struts2/trunk/plugins/jasperreports/src/main/java/org/apache/struts2/views/jasperreports/ValueStackDataSource.java

2013-01-27 Thread lukaszlenart
Author: lukaszlenart
Date: Sun Jan 27 20:27:04 2013
New Revision: 1439171

URL: http://svn.apache.org/viewvc?rev=1439171view=rev
Log:
WW-3698 wraps value with ValueStackDataSource if no already wrapped

Modified:

struts/struts2/trunk/plugins/jasperreports/src/main/java/org/apache/struts2/views/jasperreports/ValueStackDataSource.java

Modified: 
struts/struts2/trunk/plugins/jasperreports/src/main/java/org/apache/struts2/views/jasperreports/ValueStackDataSource.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/jasperreports/src/main/java/org/apache/struts2/views/jasperreports/ValueStackDataSource.java?rev=1439171r1=1439170r2=1439171view=diff
==
--- 
struts/struts2/trunk/plugins/jasperreports/src/main/java/org/apache/struts2/views/jasperreports/ValueStackDataSource.java
 (original)
+++ 
struts/struts2/trunk/plugins/jasperreports/src/main/java/org/apache/struts2/views/jasperreports/ValueStackDataSource.java
 Sun Jan 27 20:27:04 2013
@@ -104,8 +104,8 @@ public class ValueStackDataSource implem
 LOG.debug(field:  + field.getName() + / + value);
 }
 
-if (MakeIterator.isIterable(value)) {
-//return new ValueStackDataSource(this.valueStack, 
field.getName());
+if ((!field.getValueClass().isInstance(value)  
MakeIterator.isIterable(value))) {
+// wrap value with ValueStackDataSource if not already wrapped
 return new ValueStackDataSource(this.valueStack, expression);
 } else {
 return value;




[CONF] Confluence Changes in the last 24 hours

2013-01-27 Thread confluence
This is a daily summary of all recent changes in Confluence.

-
Updated Spaces:
-


Apache Bigtop (https://cwiki.apache.org/confluence/display/BIGTOP)

Pages
-
Building Bigtop on Ubuntu edited by  jagatsi...@gmail.com  (11:35 PM)
https://cwiki.apache.org/confluence/display/BIGTOP/Building+Bigtop+on+Ubuntu



Apache Camel (https://cwiki.apache.org/confluence/display/CAMEL)

Pages
-
Tutorial-Example-ReportIncident edited by  davsclaus  (06:20 AM)
https://cwiki.apache.org/confluence/display/CAMEL/Tutorial-Example-ReportIncident

Tutorial-Example-ReportIncident-Part5 edited by  davsclaus  (06:18 AM)
https://cwiki.apache.org/confluence/display/CAMEL/Tutorial-Example-ReportIncident-Part5

Tutorial-Example-ReportIncident-Part4 edited by  davsclaus  (06:17 AM)
https://cwiki.apache.org/confluence/display/CAMEL/Tutorial-Example-ReportIncident-Part4

Tutorial-Example-ReportIncident-Part3 edited by  davsclaus  (06:16 AM)
https://cwiki.apache.org/confluence/display/CAMEL/Tutorial-Example-ReportIncident-Part3

Tutorial-Example-ReportIncident-Part2 edited by  davsclaus  (06:16 AM)
https://cwiki.apache.org/confluence/display/CAMEL/Tutorial-Example-ReportIncident-Part2

Tutorial-Example-ReportIncident-Part1 edited by  davsclaus  (06:15 AM)
https://cwiki.apache.org/confluence/display/CAMEL/Tutorial-Example-ReportIncident-Part1

Tutorial-Example-ReportIncident-Part6 created by davsclaus (05:56 AM)
https://cwiki.apache.org/confluence/display/CAMEL/Tutorial-Example-ReportIncident-Part6



Apache Cloudstack (https://cwiki.apache.org/confluence/display/CLOUDSTACK)

Pages
-
Using Spring in CloudStack created by kelveny (06:14 PM)
https://cwiki.apache.org/confluence/display/CLOUDSTACK/Using+Spring+in+CloudStack

Apache CloudStack Weekly News - 28 January 2013 edited by  jzb  (04:45 PM)
https://cwiki.apache.org/confluence/display/CLOUDSTACK/Apache+CloudStack+Weekly+News+-+28+January+2013

Hyper-V 2012 (3.0) Support edited by  dlafferty  (02:38 PM)
https://cwiki.apache.org/confluence/display/CLOUDSTACK/Hyper-V+2012+%283.0%29+Support

IPv6 support edited by  yasker  (02:25 AM)
https://cwiki.apache.org/confluence/display/CLOUDSTACK/IPv6+support



Drill Wiki (https://cwiki.apache.org/confluence/display/DRILL)

Pages
-
Q1 Report in Progress created by ellen_friedman (03:50 PM)
https://cwiki.apache.org/confluence/display/DRILL/Q1+Report+in+Progress

Apache Drill Wiki edited by  ted.dunn...@gmail.com  (01:09 AM)
https://cwiki.apache.org/confluence/display/DRILL/Apache+Drill+Wiki



Apache Flex (https://cwiki.apache.org/confluence/display/FLEX)

Pages
-
FlexJS Status edited by  bigosma...@gmail.com  (04:54 PM)
https://cwiki.apache.org/confluence/display/FLEX/FlexJS+Status

Simulating AS3 language features in JavaScript using AMD and ES5 edited by  
fr...@jangaroo.net  (09:32 AM)
https://cwiki.apache.org/confluence/display/FLEX/Simulating+AS3+language+features+in+JavaScript+using+AMD+and+ES5



Apache OpenOffice Community 
(https://cwiki.apache.org/confluence/display/OOOUSERS)

Pages
-
AOO 3.4.1 Respin for additional languages edited by  pescetti  (10:49 AM)
https://cwiki.apache.org/confluence/display/OOOUSERS/AOO+3.4.1+Respin+for+additional+languages



Apache Tapestry (https://cwiki.apache.org/confluence/display/TAPESTRY)

Pages
-
Logging in Tapestry edited by  bobharner  (10:45 AM)
https://cwiki.apache.org/confluence/display/TAPESTRY/Logging+in+Tapestry

Logging edited by  bobharner  (10:20 AM)
https://cwiki.apache.org/confluence/display/TAPESTRY/Logging




Change your notification preferences: 
https://cwiki.apache.org/confluence/users/viewnotifications.action


svn commit: r1439265 - /struts/struts2/trunk/plugins/rest/src/test/java/org/apache/struts2/rest/RestWorkflowInterceptorTest.java

2013-01-27 Thread lukaszlenart
Author: lukaszlenart
Date: Mon Jan 28 06:14:30 2013
New Revision: 1439265

URL: http://svn.apache.org/viewvc?rev=1439265view=rev
Log:
WW-3492 uses getter instead direct field access

Modified:

struts/struts2/trunk/plugins/rest/src/test/java/org/apache/struts2/rest/RestWorkflowInterceptorTest.java

Modified: 
struts/struts2/trunk/plugins/rest/src/test/java/org/apache/struts2/rest/RestWorkflowInterceptorTest.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/rest/src/test/java/org/apache/struts2/rest/RestWorkflowInterceptorTest.java?rev=1439265r1=1439264r2=1439265view=diff
==
--- 
struts/struts2/trunk/plugins/rest/src/test/java/org/apache/struts2/rest/RestWorkflowInterceptorTest.java
 (original)
+++ 
struts/struts2/trunk/plugins/rest/src/test/java/org/apache/struts2/rest/RestWorkflowInterceptorTest.java
 Mon Jan 28 06:14:30 2013
@@ -50,12 +50,12 @@ public class RestWorkflowInterceptorTest
 mockContentTypeHandlerManager.expectAndReturn(handleResult, new 
AnyConstraintMatcher() {
 public boolean matches(Object[] args) {
 DefaultHttpHeaders headers = (DefaultHttpHeaders) args[1];
-return 666 == headers.status;
+return 666 == headers.getStatus();
 }
 }, null);
 wf.setContentTypeHandlerManager((ContentTypeHandlerManager) 
mockContentTypeHandlerManager.proxy());
 
-ActionContext.setContext(new ActionContext(new HashMap() {{
+ActionContext.setContext(new ActionContext(new HashMapString, 
Object() {{
 put(ServletActionContext.ACTION_MAPPING, new ActionMapping());
 }}));
 wf.doIntercept((ActionInvocation) mockActionInvocation.proxy());