[CONF] Confluence Changes in the last 24 hours

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

-
Updated Spaces:
-

OpenJPA (openjpa) http://cwiki.apache.org/confluence/display/openjpa
|
|-Pages Added or Edited in This Space
 |-- Releasing OpenJPA was last edited by [EMAIL PROTECTED] (01:32 PM).
 |   http://cwiki.apache.org/confluence/display/openjpa/Releasing+OpenJPA

Apache Directory Community & Resources (directory) 
http://cwiki.apache.org/confluence/display/directory
|
|-Pages Added or Edited in This Space
 |-- Mailing lists and IRC was last edited by szoerner (11:36 AM).
 |   http://cwiki.apache.org/confluence/display/directory/Mailing+lists+and+IRC

Apache CXF 2.0 Documentation (CXF20DOC) 
http://cwiki.apache.org/confluence/display/CXF20DOC
|
|-Pages Added or Edited in This Space
 |-- Jax-WS Java First with jms Transport was last edited by [EMAIL PROTECTED] 
(05:31 PM).
 |   
http://cwiki.apache.org/confluence/display/CXF20DOC/Jax-WS+Java+First+with+jms+Transport
 |-- Idea for new Index was last edited by jeff.yu (02:31 AM).
 |   http://cwiki.apache.org/confluence/display/CXF20DOC/Idea+for+new+Index

Apache Roller (ROLLER) http://cwiki.apache.org/confluence/display/ROLLER
 |
 |-New Comments in This Space
 |-- 
http://cwiki.apache.org/confluence/display/ROLLER/Roller+4.0+with+LDAP+and+CAS 
(1)

Apache Struts 2 Documentation (WW) http://cwiki.apache.org/confluence/display/WW
|
|-Pages Added or Edited in This Space
 |-- What are the fundamental differences between Struts and JSF was created by 
mrdon (07:11 PM).
 |   
http://cwiki.apache.org/confluence/display/WW/What+are+the+fundamental+differences+between+Struts+and+JSF
 |-- FAQs was last edited by mrdon (07:12 PM).
 |   http://cwiki.apache.org/confluence/display/WW/FAQs

Apache Wicket Website (WICKETxSITE) 
http://cwiki.apache.org/confluence/display/WICKETxSITE
|
|-Pages Added or Edited in This Space
 |-- QuickStart was last edited by almaw (06:47 AM).
 |   http://cwiki.apache.org/confluence/display/WICKETxSITE/QuickStart

Apache Tuscany (TUSCANY) http://cwiki.apache.org/confluence/display/TUSCANY
|
|-Pages Added or Edited in This Space
 |-- RDB DAS CPP - WorkingWithNameMapping was created by adriano_crestani 
(09:25 PM).
 |   
http://cwiki.apache.org/confluence/display/TUSCANY/RDB+DAS+CPP+-+WorkingWithNameMapping
 |-- RDB DAS CPP - WorkingWithConventions was created by adriano_crestani 
(09:10 PM).
 |   
http://cwiki.apache.org/confluence/display/TUSCANY/RDB+DAS+CPP+-+WorkingWithConventions
 |-- RDB DAS CPP - WorkingWithRelationships was last edited by adriano_crestani 
(10:10 PM).
 |   
http://cwiki.apache.org/confluence/display/TUSCANY/RDB+DAS+CPP+-+WorkingWithRelationships
 |-- RDB DAS CPP - WorkingWithOptimisticConcurrencyControl was last edited by 
adriano_crestani (10:09 PM).
 |   
http://cwiki.apache.org/confluence/display/TUSCANY/RDB+DAS+CPP+-+WorkingWithOptimisticConcurrencyControl
 |-- RDB DAS CPP - ConventionOverConfiguration was last edited by 
adriano_crestani (10:04 PM).
 |   
http://cwiki.apache.org/confluence/display/TUSCANY/RDB+DAS+CPP+-+ConventionOverConfiguration
 |-- RDB DAS C++ - User Guide was last edited by adriano_crestani (10:02 PM).
 |   http://cwiki.apache.org/confluence/pages/viewpage.action?pageId=69441
 |-- RDB DAS CPP - ChangeSummaryProcessing was created by adriano_crestani 
(10:01 PM).
 |   
http://cwiki.apache.org/confluence/display/TUSCANY/RDB+DAS+CPP+-+ChangeSummaryProcessing
 |-- RDB DAS CPP - ForeignKeyRepresentationAndManagement was last edited by 
adriano_crestani (09:58 PM).
 |   
http://cwiki.apache.org/confluence/display/TUSCANY/RDB+DAS+CPP+-+ForeignKeyRepresentationAndManagement
 |-- RDB DAS CPP - ResultSetDrivenDataObjectTypes was last edited by 
adriano_crestani (09:57 PM).
 |   
http://cwiki.apache.org/confluence/display/TUSCANY/RDB+DAS+CPP+-+ResultSetDrivenDataObjectTypes
 |-- RDB DAS CPP - WriteOperationOrdering was last edited by adriano_crestani 
(09:57 PM).
 |   
http://cwiki.apache.org/confluence/display/TUSCANY/RDB+DAS+CPP+-+WriteOperationOrdering
 |-- RDB DAS CPP - OptimisticConcurrencyControl was last edited by 
adriano_crestani (09:57 PM).
 |   
http://cwiki.apache.org/confluence/display/TUSCANY/RDB+DAS+CPP+-+OptimisticConcurrencyControl
 |-- RDB DAS CPP - PartialUpdate was last edited by adriano_crestani (09:56 PM).
 |   
http://cwiki.apache.org/confluence/display/TUSCANY/RDB+DAS+CPP+-+PartialUpdate
 |-- RDB DAS CPP - WorkingWithBasicCrud was last edited by adriano_crestani 
(09:56 PM).
 |   
http://cwiki.apache.org/confluence/display/TUSCANY/RDB+DAS+CPP+-+WorkingWithBasicCrud
 |-- WorkingWithNameMapping was last edited by adriano_crestani (09:19 PM).
 |   http://cwiki.apache.org/confluence/display/TUSCANY/WorkingWithNameMapping
 |-- RDB DAS CPP - WorkingWithCompoundKeys was created by adriano_crestani 
(09:17 PM).
 |   

svn commit: r589059 - in /struts/sandbox/trunk/struts2-rest-plugin: pom.xml src/main/java/org/apache/struts2/rest/ContentTypeHandlerManager.java src/main/resources/struts-plugin.xml src/test/java/org/

2007-10-27 Thread mrdon
Author: mrdon
Date: Sat Oct 27 00:41:58 2007
New Revision: 589059

URL: http://svn.apache.org/viewvc?rev=589059&view=rev
Log:
Adding ability to override handlers by specifying another alias for an extension

Added:

struts/sandbox/trunk/struts2-rest-plugin/src/test/java/org/apache/struts2/rest/ContentTypeHandlerManagerTest.java
Modified:
struts/sandbox/trunk/struts2-rest-plugin/pom.xml

struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/ContentTypeHandlerManager.java

struts/sandbox/trunk/struts2-rest-plugin/src/main/resources/struts-plugin.xml

Modified: struts/sandbox/trunk/struts2-rest-plugin/pom.xml
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-rest-plugin/pom.xml?rev=589059&r1=589058&r2=589059&view=diff
==
--- struts/sandbox/trunk/struts2-rest-plugin/pom.xml (original)
+++ struts/sandbox/trunk/struts2-rest-plugin/pom.xml Sat Oct 27 00:41:58 2007
@@ -46,6 +46,13 @@
 test
 
 
+
+mockobjects
+mockobjects-core
+0.09
+test
+
+
 
 
 

Modified: 
struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/ContentTypeHandlerManager.java
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/ContentTypeHandlerManager.java?rev=589059&r1=589058&r2=589059&view=diff
==
--- 
struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/ContentTypeHandlerManager.java
 (original)
+++ 
struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/ContentTypeHandlerManager.java
 Sat Oct 27 00:41:58 2007
@@ -20,43 +20,53 @@
  */
 package org.apache.struts2.rest;
 
+import com.opensymphony.xwork2.ModelDriven;
+import com.opensymphony.xwork2.config.entities.ActionConfig;
+import com.opensymphony.xwork2.inject.Container;
+import com.opensymphony.xwork2.inject.Inject;
+import org.apache.struts2.ServletActionContext;
+import org.apache.struts2.rest.handler.ContentTypeHandler;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import static javax.servlet.http.HttpServletResponse.SC_OK;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Set;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import static javax.servlet.http.HttpServletResponse.SC_OK;
-
-import org.apache.struts2.ServletActionContext;
-import org.apache.struts2.rest.handler.ContentTypeHandler;
-
-import com.opensymphony.xwork2.ModelDriven;
-import com.opensymphony.xwork2.config.entities.ActionConfig;
-import com.opensymphony.xwork2.inject.Container;
-import com.opensymphony.xwork2.inject.Inject;
-
 /**
  * Manages [EMAIL PROTECTED] ContentTypeHandler} instances and uses them to
  * process results
  */
 public class ContentTypeHandlerManager {
 
-private Map handlers = new 
HashMap();
-private String defaultHandlerName;
+Map handlers = new 
HashMap();
+String defaultHandlerName;
+public static final String STRUTS_REST_HANDLER_OVERRIDE_PREFIX = 
"struts.rest.handlerOverride.";
 
 @Inject("struts.rest.defaultHandlerName")
 public void setDefaultHandlerName(String name) {
 this.defaultHandlerName = name;
 }
-
+
 @Inject
 public void setContainer(Container container) {
 Set names = 
container.getInstanceNames(ContentTypeHandler.class);
 for (String name : names) {
 ContentTypeHandler handler = 
container.getInstance(ContentTypeHandler.class, name);
+
+// Check for overriding handlers for the current extension
+String overrideName = container.getInstance(String.class, 
STRUTS_REST_HANDLER_OVERRIDE_PREFIX +handler.getExtension());
+if (overrideName != null) {
+if (!handlers.containsKey(handler.getExtension())) {
+handler = container.getInstance(ContentTypeHandler.class, 
overrideName);
+} else {
+// overriding handler has already been registered
+continue;
+}
+}
 this.handlers.put(handler.getExtension(), handler);
 }
 }

Modified: 
struts/sandbox/trunk/struts2-rest-plugin/src/main/resources/struts-plugin.xml
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-rest-plugin/src/main/resources/struts-plugin.xml?rev=589059&r1=589058&r2=589059&view=diff
==
--- 
struts/sandbox/trunk/struts2-rest-plugin/src/main/resources/struts-plugin.xml 
(original)
+++ 
struts/sandbox/trunk/struts2-rest-plugin/src/main/resources/struts-plugin.xml 
Sat Oct 27 00:41:5

svn commit: r589071 - in /struts/sandbox/trunk/struts2-rest-plugin: ./ src/main/java/org/apache/struts2/rest/ src/test/java/org/apache/struts2/rest/

2007-10-27 Thread mrdon
Author: mrdon
Date: Sat Oct 27 03:47:25 2007
New Revision: 589071

URL: http://svn.apache.org/viewvc?rev=589071&view=rev
Log:
Adding automatic support for conditional gets

Added:

struts/sandbox/trunk/struts2-rest-plugin/src/test/java/org/apache/struts2/rest/DefaultHttpHeadersTest.java
Modified:
struts/sandbox/trunk/struts2-rest-plugin/pom.xml

struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/ContentTypeHandlerManager.java

struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/DefaultHttpHeaders.java

struts/sandbox/trunk/struts2-rest-plugin/src/test/java/org/apache/struts2/rest/ContentTypeHandlerManagerTest.java

Modified: struts/sandbox/trunk/struts2-rest-plugin/pom.xml
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-rest-plugin/pom.xml?rev=589071&r1=589070&r2=589071&view=diff
==
--- struts/sandbox/trunk/struts2-rest-plugin/pom.xml (original)
+++ struts/sandbox/trunk/struts2-rest-plugin/pom.xml Sat Oct 27 03:47:25 2007
@@ -53,6 +53,13 @@
 test
 
 
+
+org.springframework
+spring-mock
+1.2.8
+true
+
+
 
 
 

Modified: 
struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/ContentTypeHandlerManager.java
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/ContentTypeHandlerManager.java?rev=589071&r1=589070&r2=589071&view=diff
==
--- 
struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/ContentTypeHandlerManager.java
 (original)
+++ 
struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/ContentTypeHandlerManager.java
 Sat Oct 27 03:47:25 2007
@@ -29,6 +29,7 @@
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import static javax.servlet.http.HttpServletResponse.SC_NOT_MODIFIED;
 import static javax.servlet.http.HttpServletResponse.SC_OK;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
@@ -101,13 +102,20 @@
 if (target instanceof ModelDriven) {
 target = ((ModelDriven)target).getModel();
 }
-
+
 boolean statusNotOk = false;
 if (methodResult instanceof HttpHeaders) {
 HttpHeaders info = (HttpHeaders) methodResult;
 resultCode = info.apply(req, res, target);
 if (info.getStatus() != SC_OK) {
-statusNotOk = true;
+
+// Don't return content on a not modified
+if (info.getStatus() == SC_NOT_MODIFIED) {
+target = null;
+} else {
+statusNotOk = true;
+}
+
 }
 } else {
 resultCode = (String) methodResult;
@@ -117,20 +125,22 @@
 if (!statusNotOk && !"get".equalsIgnoreCase(req.getMethod())) {
 target = null;
 }
-
+
 ContentTypeHandler handler = getHandlerForRequest(req);
-String extCode = resultCode+"-"+handler.getExtension();
-if (actionConfig.getResults().get(extCode) != null) {
-resultCode = extCode;
-} else {
-ByteArrayOutputStream bout = new ByteArrayOutputStream();
-
-resultCode = handler.fromObject(target, resultCode, bout);
-if (bout.size() > 0) {
-res.setContentLength(bout.size());
-res.setContentType(handler.getContentType());
-res.getOutputStream().write(bout.toByteArray());
-res.getOutputStream().close();
+if (handler != null) {
+String extCode = resultCode+"-"+handler.getExtension();
+if (actionConfig.getResults().get(extCode) != null) {
+resultCode = extCode;
+} else {
+ByteArrayOutputStream bout = new ByteArrayOutputStream();
+
+resultCode = handler.fromObject(target, resultCode, bout);
+if (bout.size() > 0) {
+res.setContentLength(bout.size());
+res.setContentType(handler.getContentType());
+res.getOutputStream().write(bout.toByteArray());
+res.getOutputStream().close();
+}
 }
 }
 return resultCode;

Modified: 
struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/DefaultHttpHeaders.java
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/DefaultHttpHeaders.java?rev=589071&r1=589070&r2=589071&view=diff
==
--- 
struts/sandbox/trunk/struts2-rest-plugin/src/main/java/

svn commit: r589074 - /struts/sandbox/trunk/struts2-rest-plugin/src/test/java/org/apache/struts2/rest/DefaultHttpHeadersTest.java

2007-10-27 Thread mrdon
Author: mrdon
Date: Sat Oct 27 04:05:59 2007
New Revision: 589074

URL: http://svn.apache.org/viewvc?rev=589074&view=rev
Log:
Removing generated javadoc

Modified:

struts/sandbox/trunk/struts2-rest-plugin/src/test/java/org/apache/struts2/rest/DefaultHttpHeadersTest.java

Modified: 
struts/sandbox/trunk/struts2-rest-plugin/src/test/java/org/apache/struts2/rest/DefaultHttpHeadersTest.java
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-rest-plugin/src/test/java/org/apache/struts2/rest/DefaultHttpHeadersTest.java?rev=589074&r1=589073&r2=589074&view=diff
==
--- 
struts/sandbox/trunk/struts2-rest-plugin/src/test/java/org/apache/struts2/rest/DefaultHttpHeadersTest.java
 (original)
+++ 
struts/sandbox/trunk/struts2-rest-plugin/src/test/java/org/apache/struts2/rest/DefaultHttpHeadersTest.java
 Sat Oct 27 04:05:59 2007
@@ -27,13 +27,6 @@
 import static javax.servlet.http.HttpServletResponse.*;
 import java.util.Date;
 
-/**
- * Created by IntelliJ IDEA.
- * User: mrdon
- * Date: 27/10/2007
- * Time: 18:14:48
- * To change this template use File | Settings | File Templates.
- */
 public class DefaultHttpHeadersTest extends TestCase {
 private MockHttpServletResponse mockResponse;
 private MockHttpServletRequest mockRequest;




svn commit: r589083 - in /struts/sandbox/trunk/struts2-rest-plugin/src: main/java/org/apache/struts2/rest/ContentTypeHandlerManager.java main/resources/struts-plugin.xml test/java/org/apache/struts2/r

2007-10-27 Thread mrdon
Author: mrdon
Date: Sat Oct 27 05:05:20 2007
New Revision: 589083

URL: http://svn.apache.org/viewvc?rev=589083&view=rev
Log:
Renamed default extension variable to be more clear

Modified:

struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/ContentTypeHandlerManager.java

struts/sandbox/trunk/struts2-rest-plugin/src/main/resources/struts-plugin.xml

struts/sandbox/trunk/struts2-rest-plugin/src/test/java/org/apache/struts2/rest/ContentTypeHandlerManagerTest.java

Modified: 
struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/ContentTypeHandlerManager.java
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/ContentTypeHandlerManager.java?rev=589083&r1=589082&r2=589083&view=diff
==
--- 
struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/ContentTypeHandlerManager.java
 (original)
+++ 
struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/ContentTypeHandlerManager.java
 Sat Oct 27 05:05:20 2007
@@ -44,12 +44,12 @@
 public class ContentTypeHandlerManager {
 
 Map handlers = new 
HashMap();
-String defaultHandlerName;
+String defaultExtension;
 public static final String STRUTS_REST_HANDLER_OVERRIDE_PREFIX = 
"struts.rest.handlerOverride.";
 
-@Inject("struts.rest.defaultHandlerName")
-public void setDefaultHandlerName(String name) {
-this.defaultHandlerName = name;
+@Inject("struts.rest.defaultExtension")
+public void setDefaultExtension(String name) {
+this.defaultExtension = name;
 }
 
 @Inject
@@ -80,7 +80,7 @@
 public ContentTypeHandler getHandlerForRequest(HttpServletRequest req) {
 String extension = findExtension(req.getRequestURI());
 if (extension == null) {
-extension = defaultHandlerName;
+extension = defaultExtension;
 }
 return handlers.get(extension);
 }

Modified: 
struts/sandbox/trunk/struts2-rest-plugin/src/main/resources/struts-plugin.xml
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-rest-plugin/src/main/resources/struts-plugin.xml?rev=589083&r1=589082&r2=589083&view=diff
==
--- 
struts/sandbox/trunk/struts2-rest-plugin/src/main/resources/struts-plugin.xml 
(original)
+++ 
struts/sandbox/trunk/struts2-rest-plugin/src/main/resources/struts-plugin.xml 
Sat Oct 27 05:05:20 2007
@@ -18,7 +18,7 @@
 
 
 
-
+
 
 
 

Modified: 
struts/sandbox/trunk/struts2-rest-plugin/src/test/java/org/apache/struts2/rest/ContentTypeHandlerManagerTest.java
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-rest-plugin/src/test/java/org/apache/struts2/rest/ContentTypeHandlerManagerTest.java?rev=589083&r1=589082&r2=589083&view=diff
==
--- 
struts/sandbox/trunk/struts2-rest-plugin/src/test/java/org/apache/struts2/rest/ContentTypeHandlerManagerTest.java
 (original)
+++ 
struts/sandbox/trunk/struts2-rest-plugin/src/test/java/org/apache/struts2/rest/ContentTypeHandlerManagerTest.java
 Sat Oct 27 05:05:20 2007
@@ -78,7 +78,7 @@
 public String getExtension() { return "foo"; }
 };
 mgr.handlers.put("xml", handler);
-mgr.defaultHandlerName = "xml";
+mgr.defaultExtension = "xml";
 mgr.handleResult(new ActionConfig(), new 
DefaultHttpHeaders().withStatus(SC_OK), obj);
 
 assertEquals(obj.getBytes().length, mockResponse.getContentLength());




svn commit: r589114 - in /struts/sandbox/trunk/struts2-rest-plugin/src: main/java/org/apache/struts2/rest/RestActionMapper.java test/java/org/apache/struts2/rest/RestActionMapperTest.java

2007-10-27 Thread mrdon
Author: mrdon
Date: Sat Oct 27 07:28:10 2007
New Revision: 589114

URL: http://svn.apache.org/viewvc?rev=589114&view=rev
Log:
Adding support for Rails 2-stye 'animals/dog/edit'-style mappings where the 
last bit is interpreted as a method name

Modified:

struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/RestActionMapper.java

struts/sandbox/trunk/struts2-rest-plugin/src/test/java/org/apache/struts2/rest/RestActionMapperTest.java

Modified: 
struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/RestActionMapper.java
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/RestActionMapper.java?rev=589114&r1=589113&r2=589114&view=diff
==
--- 
struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/RestActionMapper.java
 (original)
+++ 
struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/RestActionMapper.java
 Sat Oct 27 07:28:10 2007
@@ -20,21 +20,19 @@
  */
 package org.apache.struts2.rest;
 
-import java.util.HashMap;
-import java.util.Iterator;
-
-import javax.servlet.http.HttpServletRequest;
-
-import org.apache.struts2.StrutsConstants;
-import org.apache.struts2.dispatcher.mapper.ActionMapping;
-import org.apache.struts2.dispatcher.mapper.DefaultActionMapper;
-
 import com.opensymphony.xwork2.config.Configuration;
 import com.opensymphony.xwork2.config.ConfigurationManager;
 import com.opensymphony.xwork2.config.entities.PackageConfig;
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.logging.Logger;
 import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.struts2.StrutsConstants;
+import org.apache.struts2.dispatcher.mapper.ActionMapping;
+import org.apache.struts2.dispatcher.mapper.DefaultActionMapper;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.HashMap;
+import java.util.Iterator;
 
 /**
  * 
@@ -186,8 +184,18 @@
 int lastSlashPos = fullName.lastIndexOf('/');
 String id = null;
 if (lastSlashPos > -1) {
+
+// fun trickery to parse 'actionName/id/methodName' in the 
case of 'animals/dog/edit'
+int prevSlashPos = fullName.lastIndexOf('/', lastSlashPos - 1);
+if (prevSlashPos > -1) {
+mapping.setMethod(fullName.substring(lastSlashPos+1));
+fullName = fullName.substring(0, lastSlashPos);
+lastSlashPos = prevSlashPos;
+}
 id = fullName.substring(lastSlashPos+1);
 }
+
+
 
 // If a method hasn't been explicitly named, try to guess using 
ReST-style patterns
 if (mapping.getMethod() == null) {

Modified: 
struts/sandbox/trunk/struts2-rest-plugin/src/test/java/org/apache/struts2/rest/RestActionMapperTest.java
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-rest-plugin/src/test/java/org/apache/struts2/rest/RestActionMapperTest.java?rev=589114&r1=589113&r2=589114&view=diff
==
--- 
struts/sandbox/trunk/struts2-rest-plugin/src/test/java/org/apache/struts2/rest/RestActionMapperTest.java
 (original)
+++ 
struts/sandbox/trunk/struts2-rest-plugin/src/test/java/org/apache/struts2/rest/RestActionMapperTest.java
 Sat Oct 27 07:28:10 2007
@@ -1,28 +1,30 @@
 package org.apache.struts2.rest;
 
-import java.util.HashMap;
-
-import org.apache.struts2.dispatcher.mapper.ActionMapping;
-
 import com.opensymphony.xwork2.config.Configuration;
 import com.opensymphony.xwork2.config.ConfigurationManager;
 import com.opensymphony.xwork2.config.entities.PackageConfig;
 import com.opensymphony.xwork2.config.impl.DefaultConfiguration;
-
 import junit.framework.TestCase;
+import org.apache.struts2.dispatcher.mapper.ActionMapping;
+import org.springframework.mock.web.MockHttpServletRequest;
 
 public class RestActionMapperTest extends TestCase {
 
 private RestActionMapper mapper;
 private ConfigurationManager configManager;
 private Configuration config;
+private MockHttpServletRequest req;
 
 protected void setUp() throws Exception {
 super.setUp();
+req = new MockHttpServletRequest();
+req.setContextPath("/myapp");
+req.setMethod("GET");
+
 mapper = new RestActionMapper();
 
 config = new DefaultConfiguration();
-PackageConfig pkg = new PackageConfig("myns", "/my/namespace", false, 
null);
+PackageConfig pkg = new PackageConfig("myns", "/animals", false, null);
 PackageConfig pkg2 = new PackageConfig("my", "/my", false, null);
 config.addPackageConfig("mvns", pkg);
 config.addPackageConfig("my", pkg2);
@@ -31,6 +33,93 @@
 return config;
 }
 };
+}
+
+public void testGet

svn commit: r589115 - /struts/sandbox/trunk/struts2-rest-plugin/src/test/java/org/apache/struts2/rest/RestActionMapperTest.java

2007-10-27 Thread mrdon
Author: mrdon
Date: Sat Oct 27 07:29:08 2007
New Revision: 589115

URL: http://svn.apache.org/viewvc?rev=589115&view=rev
Log:
Added test for Rails 1.2-style ;edit urls

Modified:

struts/sandbox/trunk/struts2-rest-plugin/src/test/java/org/apache/struts2/rest/RestActionMapperTest.java

Modified: 
struts/sandbox/trunk/struts2-rest-plugin/src/test/java/org/apache/struts2/rest/RestActionMapperTest.java
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-rest-plugin/src/test/java/org/apache/struts2/rest/RestActionMapperTest.java?rev=589115&r1=589114&r2=589115&view=diff
==
--- 
struts/sandbox/trunk/struts2-rest-plugin/src/test/java/org/apache/struts2/rest/RestActionMapperTest.java
 (original)
+++ 
struts/sandbox/trunk/struts2-rest-plugin/src/test/java/org/apache/struts2/rest/RestActionMapperTest.java
 Sat Oct 27 07:29:08 2007
@@ -122,6 +122,19 @@
 assertEquals("edit", mapping.getMethod());
 }
 
+public void testEditSemicolonMapping() throws Exception {
+req.setRequestURI("/myapp/animals/dog/fido;edit");
+req.setServletPath("/animals/dog/fido;edit");
+req.setMethod("GET");
+
+ActionMapping mapping = mapper.getMapping(req, configManager);
+
+assertEquals("/animals", mapping.getNamespace());
+assertEquals("dog", mapping.getName());
+assertEquals("fido", ((String[])mapping.getParams().get("id"))[0]);
+assertEquals("edit", mapping.getMethod());
+}
+
 public void testParseNameAndNamespace() {
 tryUri("/foo/23", "", "foo/23");
 tryUri("/foo/", "", "foo/");




svn commit: r589117 - /struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/RestActionMapper.java

2007-10-27 Thread mrdon
Author: mrdon
Date: Sat Oct 27 07:33:16 2007
New Revision: 589117

URL: http://svn.apache.org/viewvc?rev=589117&view=rev
Log:
Updating docs for new edit url style

Modified:

struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/RestActionMapper.java

Modified: 
struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/RestActionMapper.java
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/RestActionMapper.java?rev=589117&r1=589116&r2=589117&view=diff
==
--- 
struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/RestActionMapper.java
 (original)
+++ 
struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/RestActionMapper.java
 Sat Oct 27 07:33:16 2007
@@ -81,6 +81,7 @@
  *  GET:/movies=> method="index"
  *  GET:/movies/Thrillers  => method="show", 
id="Thrillers"
  *  GET:/movies/Thrillers;edit => method="edit", 
id="Thrillers"
+ *  GET:/movies/Thrillers/edit => method="edit", 
id="Thrillers"
  *  GET:/movies/new=> method="editNew"
  *  POST:   /movies=> method="create"
  *  PUT:/movies/Thrillers  => method="update", 
id="Thrillers"




svn commit: r589222 - /struts/sandbox/trunk/struts2-rest-plugin/src/main/resources/struts-plugin.xml

2007-10-27 Thread mrdon
Author: mrdon
Date: Sat Oct 27 14:51:20 2007
New Revision: 589222

URL: http://svn.apache.org/viewvc?rev=589222&view=rev
Log:
Fixing misnamed controller scanner

Modified:

struts/sandbox/trunk/struts2-rest-plugin/src/main/resources/struts-plugin.xml

Modified: 
struts/sandbox/trunk/struts2-rest-plugin/src/main/resources/struts-plugin.xml
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-rest-plugin/src/main/resources/struts-plugin.xml?rev=589222&r1=589221&r2=589222&view=diff
==
--- 
struts/sandbox/trunk/struts2-rest-plugin/src/main/resources/struts-plugin.xml 
(original)
+++ 
struts/sandbox/trunk/struts2-rest-plugin/src/main/resources/struts-plugin.xml 
Sat Oct 27 14:51:20 2007
@@ -9,7 +9,7 @@
 


-   
+   
 

 




svn commit: r589240 - in /struts/struts2/trunk/core/src: main/java/org/apache/struts2/interceptor/MessageStoreInterceptor.java test/java/org/apache/struts2/interceptor/MessageStoreInterceptorTest.java

2007-10-27 Thread mrdon
Author: mrdon
Date: Sat Oct 27 16:36:15 2007
New Revision: 589240

URL: http://svn.apache.org/viewvc?rev=589240&view=rev
Log:
Adding automatic mode for message store interceptor
WW-2276

Modified:

struts/struts2/trunk/core/src/main/java/org/apache/struts2/interceptor/MessageStoreInterceptor.java

struts/struts2/trunk/core/src/test/java/org/apache/struts2/interceptor/MessageStoreInterceptorTest.java

Modified: 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/interceptor/MessageStoreInterceptor.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/interceptor/MessageStoreInterceptor.java?rev=589240&r1=589239&r2=589240&view=diff
==
--- 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/interceptor/MessageStoreInterceptor.java
 (original)
+++ 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/interceptor/MessageStoreInterceptor.java
 Sat Oct 27 16:36:15 2007
@@ -25,6 +25,8 @@
 import java.util.LinkedHashMap;
 import java.util.Map;
 
+import org.apache.struts2.dispatcher.ServletRedirectResult;
+
 import com.opensymphony.xwork2.ActionContext;
 import com.opensymphony.xwork2.ActionInvocation;
 import com.opensymphony.xwork2.ValidationAware;
@@ -42,12 +44,19 @@
  * 
  *
  * In the 'STORE' mode, the interceptor will store the [EMAIL PROTECTED] 
ValidationAware} action's message / errors
- * and field errors into Http session.
+ * and field errors into HTTP session.
  *
  * 
  *
  * In the 'RETRIEVE' mode, the interceptor will retrieve the stored action's 
message / errors  and field
  * errors and put them back into the [EMAIL PROTECTED] ValidationAware} action.
+ * 
+ * 
+ *
+ * In the 'AUTOMATIC' mode, the interceptor will always retrieve the stored 
action's message / errors 
+ * and field errors and put them back into the [EMAIL PROTECTED] 
ValidationAware} action, and after Action execution, 
+ * if the [EMAIL PROTECTED] Result} is an instance of [EMAIL PROTECTED] 
ServletRedirectResult}, the action's message / errors 
+ * and field errors into automatically be stored in the HTTP session..
  *
  * 
  *
@@ -84,7 +93,7 @@
  *  requestParameterSwitch - The request parameter that will indicate 
what mode this
  *   interceptor is in. 
  *  operationMode - The operation mode this interceptor should be in
- *  (either 'STORE', 'RETRIEVE' or 'NONE'). 'NONE' 
being the default.
+ *  (either 'STORE', 'RETRIEVE', 'AUTOMATIC', or 
'NONE'). 'NONE' being the default.
  * 
  *
  * 
@@ -141,7 +150,7 @@
 
 private static final Logger LOG = 
LoggerFactory.getLogger(MessageStoreInterceptor.class);
 
-
+public static final String AUTOMATIC_MODE = "AUTOMATIC";
 public static final String STORE_MODE = "STORE";
 public static final String RETRIEVE_MODE = "RETRIEVE";
 public static final String NONE = "NONE";
@@ -209,7 +218,8 @@
 String reqOperationMode = getRequestOperationMode(invocation);
 
 if (RETRIEVE_MODE.equalsIgnoreCase(reqOperationMode) ||
-RETRIEVE_MODE.equalsIgnoreCase(operationMode)) {
+RETRIEVE_MODE.equalsIgnoreCase(operationMode) ||
+AUTOMATIC_MODE.equalsIgnoreCase(operationMode)) {
 
 Object action = invocation.getAction();
 if (action instanceof ValidationAware) {
@@ -255,8 +265,10 @@
 protected void after(ActionInvocation invocation, String result) throws 
Exception {
 
 String reqOperationMode = getRequestOperationMode(invocation);
+boolean isRedirect = invocation.getResult() instanceof 
ServletRedirectResult;
 if (STORE_MODE.equalsIgnoreCase(reqOperationMode) ||
-STORE_MODE.equalsIgnoreCase(operationMode)) {
+STORE_MODE.equalsIgnoreCase(operationMode) ||
+(AUTOMATIC_MODE.equalsIgnoreCase(operationMode) && 
isRedirect)) {
 
 Object action = invocation.getAction();
 if (action instanceof ValidationAware) {

Modified: 
struts/struts2/trunk/core/src/test/java/org/apache/struts2/interceptor/MessageStoreInterceptorTest.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/interceptor/MessageStoreInterceptorTest.java?rev=589240&r1=589239&r2=589240&view=diff
==
--- 
struts/struts2/trunk/core/src/test/java/org/apache/struts2/interceptor/MessageStoreInterceptorTest.java
 (original)
+++ 
struts/struts2/trunk/core/src/test/java/org/apache/struts2/interceptor/MessageStoreInterceptorTest.java
 Sat Oct 27 16:36:15 2007
@@ -27,6 +27,7 @@
 import java.util.Map;
 
 import org.apache.struts2.StrutsTestCase;
+import org.apache.struts2.dispatcher.ServletActionRedirectResult;
 import org.easymock.EasyMock;
 
 import com.opensymphony.xwork2.Action;
@@ -74,7 +75,9 @@
 
  

svn commit: r589244 - in /struts/sandbox/trunk/struts2-rest-plugin: showcase/src/main/java/org/apache/struts2/rest/example/ showcase/src/main/webapp/ src/main/resources/

2007-10-27 Thread mrdon
Author: mrdon
Date: Sat Oct 27 16:52:09 2007
New Revision: 589244

URL: http://svn.apache.org/viewvc?rev=589244&view=rev
Log:
Adding automatic message storing across redirect default, using
action messages across redirect to give feedback operation was 
successful

Removed:

struts/sandbox/trunk/struts2-rest-plugin/showcase/src/main/webapp/orders-success.jsp
Modified:

struts/sandbox/trunk/struts2-rest-plugin/showcase/src/main/java/org/apache/struts2/rest/example/OrdersController.java

struts/sandbox/trunk/struts2-rest-plugin/showcase/src/main/webapp/orders-index.jsp

struts/sandbox/trunk/struts2-rest-plugin/src/main/resources/struts-plugin.xml

Modified: 
struts/sandbox/trunk/struts2-rest-plugin/showcase/src/main/java/org/apache/struts2/rest/example/OrdersController.java
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-rest-plugin/showcase/src/main/java/org/apache/struts2/rest/example/OrdersController.java?rev=589244&r1=589243&r2=589244&view=diff
==
--- 
struts/sandbox/trunk/struts2-rest-plugin/showcase/src/main/java/org/apache/struts2/rest/example/OrdersController.java
 (original)
+++ 
struts/sandbox/trunk/struts2-rest-plugin/showcase/src/main/java/org/apache/struts2/rest/example/OrdersController.java
 Sat Oct 27 16:52:09 2007
@@ -6,6 +6,9 @@
 import java.util.List;
 import java.util.Map;
 
+import org.apache.struts2.config.Result;
+import org.apache.struts2.config.Results;
+import org.apache.struts2.dispatcher.ServletActionRedirectResult;
 import org.apache.struts2.interceptor.ParameterAware;
 import org.apache.struts2.rest.DefaultHttpHeaders;
 import org.apache.struts2.rest.HttpHeaders;
@@ -14,6 +17,9 @@
 import com.opensymphony.xwork2.Validateable;
 import com.opensymphony.xwork2.ValidationAwareSupport;
 
[EMAIL PROTECTED]({
+@Result(name="success", type=ServletActionRedirectResult.class, 
value="orders") 
+})
 public class OrdersController extends ValidationAwareSupport implements 
ModelDriven, ParameterAware, Validateable{
 
 private Order model = new Order();
@@ -46,11 +52,13 @@
 
 public String destroy() {
 orders.remove(model.getId());
+addActionMessage("Order removed successfully");
 return "success";
 }
 
 public HttpHeaders create() {
 orders.put(model.getId(), model);
+addActionMessage("New order created successfully");
 return new DefaultHttpHeaders()
 .setLocationId(model.getId())
 .renderResult("success");
@@ -58,6 +66,7 @@
 
 public String update() {
 orders.put(model.getId(), model);
+addActionMessage("Order updated successfully");
 return "success";
 }
 
@@ -66,7 +75,7 @@
 
 return new DefaultHttpHeaders()
 .renderResult("index")
-.withETag("2323");
+.disableCaching();
 }
 
 public Object getModel() {

Modified: 
struts/sandbox/trunk/struts2-rest-plugin/showcase/src/main/webapp/orders-index.jsp
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-rest-plugin/showcase/src/main/webapp/orders-index.jsp?rev=589244&r1=589243&r2=589244&view=diff
==
--- 
struts/sandbox/trunk/struts2-rest-plugin/showcase/src/main/webapp/orders-index.jsp
 (original)
+++ 
struts/sandbox/trunk/struts2-rest-plugin/showcase/src/main/webapp/orders-index.jsp
 Sat Oct 27 16:52:09 2007
@@ -9,6 +9,7 @@
Orders
 
 
+
 
 
 ID

Modified: 
struts/sandbox/trunk/struts2-rest-plugin/src/main/resources/struts-plugin.xml
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-rest-plugin/src/main/resources/struts-plugin.xml?rev=589244&r1=589243&r2=589244&view=diff
==
--- 
struts/sandbox/trunk/struts2-rest-plugin/src/main/resources/struts-plugin.xml 
(original)
+++ 
struts/sandbox/trunk/struts2-rest-plugin/src/main/resources/struts-plugin.xml 
Sat Oct 27 16:52:09 2007
@@ -28,6 +28,7 @@
 
 
 
+
 
 

svn commit: r589250 - in /struts/sandbox/trunk/struts2-rest-plugin: showcase/src/main/java/org/apache/struts2/rest/example/ src/main/java/org/apache/struts2/rest/

2007-10-27 Thread mrdon
Author: mrdon
Date: Sat Oct 27 17:19:11 2007
New Revision: 589250

URL: http://svn.apache.org/viewvc?rev=589250&view=rev
Log:
Changing example to return better headers, new constructors for 
DefaultHttpHeader

Modified:

struts/sandbox/trunk/struts2-rest-plugin/showcase/src/main/java/org/apache/struts2/rest/example/Order.java

struts/sandbox/trunk/struts2-rest-plugin/showcase/src/main/java/org/apache/struts2/rest/example/OrdersController.java

struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/DefaultHttpHeaders.java

Modified: 
struts/sandbox/trunk/struts2-rest-plugin/showcase/src/main/java/org/apache/struts2/rest/example/Order.java
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-rest-plugin/showcase/src/main/java/org/apache/struts2/rest/example/Order.java?rev=589250&r1=589249&r2=589250&view=diff
==
--- 
struts/sandbox/trunk/struts2-rest-plugin/showcase/src/main/java/org/apache/struts2/rest/example/Order.java
 (original)
+++ 
struts/sandbox/trunk/struts2-rest-plugin/showcase/src/main/java/org/apache/struts2/rest/example/Order.java
 Sat Oct 27 17:19:11 2007
@@ -39,6 +39,43 @@
 order.setAmount(getAmount());
 order.setClientName(getClientName());
 }
+
+@Override
+public int hashCode() {
+final int prime = 31;
+int result = 1;
+result = prime * result + amount;
+result = prime * result
++ ((clientName == null) ? 0 : clientName.hashCode());
+result = prime * result + ((id == null) ? 0 : id.hashCode());
+return result;
+}
+
+@Override
+public boolean equals(Object obj) {
+if (this == obj)
+return true;
+if (obj == null)
+return false;
+if (getClass() != obj.getClass())
+return false;
+final Order other = (Order) obj;
+if (amount != other.amount)
+return false;
+if (clientName == null) {
+if (other.clientName != null)
+return false;
+} else if (!clientName.equals(other.clientName))
+return false;
+if (id == null) {
+if (other.id != null)
+return false;
+} else if (!id.equals(other.id))
+return false;
+return true;
+}
+
+
 
 
 }

Modified: 
struts/sandbox/trunk/struts2-rest-plugin/showcase/src/main/java/org/apache/struts2/rest/example/OrdersController.java
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-rest-plugin/showcase/src/main/java/org/apache/struts2/rest/example/OrdersController.java?rev=589250&r1=589249&r2=589250&view=diff
==
--- 
struts/sandbox/trunk/struts2-rest-plugin/showcase/src/main/java/org/apache/struts2/rest/example/OrdersController.java
 (original)
+++ 
struts/sandbox/trunk/struts2-rest-plugin/showcase/src/main/java/org/apache/struts2/rest/example/OrdersController.java
 Sat Oct 27 17:19:11 2007
@@ -38,8 +38,8 @@
 }
 }
 
-public String show() {
-return "show";
+public HttpHeaders show() {
+return new DefaultHttpHeaders("show");
 }
 
 public String edit() {
@@ -73,8 +73,7 @@
 public HttpHeaders index() {
 list = new ArrayList(orders.values());
 
-return new DefaultHttpHeaders()
-.renderResult("index")
+return new DefaultHttpHeaders("index")
 .disableCaching();
 }
 

Modified: 
struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/DefaultHttpHeaders.java
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/DefaultHttpHeaders.java?rev=589250&r1=589249&r2=589250&view=diff
==
--- 
struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/DefaultHttpHeaders.java
 (original)
+++ 
struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/DefaultHttpHeaders.java
 Sat Oct 27 17:19:11 2007
@@ -39,6 +39,12 @@
 boolean noETag = false;
 Date lastModified;
 
+public DefaultHttpHeaders() {}
+
+public DefaultHttpHeaders(String result) {
+resultCode = result;
+}
+
 public DefaultHttpHeaders renderResult(String code) {
 this.resultCode = code;
 return this;