You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by mr...@apache.org on 2007/10/20 11:56:20 UTC
svn commit: r586694 - in /struts/struts2/trunk/core/src:
main/java/org/apache/struts2/config/
main/java/org/apache/struts2/dispatcher/mapper/
test/java/org/apache/struts2/config/
Author: mrdon
Date: Sat Oct 20 02:56:20 2007
New Revision: 586694
URL: http://svn.apache.org/viewvc?rev=586694&view=rev
Log:
Making it possible to use multiple extensions simultaneously, improving reloadability
WW-2267
Modified:
struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/StrutsXmlConfigurationProvider.java
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/mapper/ActionMapping.java
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java
struts/struts2/trunk/core/src/test/java/org/apache/struts2/config/MethodConfigurationProviderTest.java
Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/StrutsXmlConfigurationProvider.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/StrutsXmlConfigurationProvider.java?rev=586694&r1=586693&r2=586694&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/StrutsXmlConfigurationProvider.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/StrutsXmlConfigurationProvider.java Sat Oct 20 02:56:20 2007
@@ -163,7 +163,7 @@
if (ctx != null) {
return ctx.get(reloadKey) == null && super.needsReload();
} else {
- return true;
+ return super.needsReload();
}
}
Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/mapper/ActionMapping.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/mapper/ActionMapping.java?rev=586694&r1=586693&r2=586694&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/mapper/ActionMapping.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/mapper/ActionMapping.java Sat Oct 20 02:56:20 2007
@@ -36,6 +36,7 @@
private String name;
private String namespace;
private String method;
+ private String extension;
private Map params;
private Result result;
@@ -106,6 +107,13 @@
public Result getResult() {
return result;
}
+
+ /**
+ * @return The extension used during this request
+ */
+ public String getExtension() {
+ return extension;
+ }
/**
* @param result The result
@@ -140,5 +148,12 @@
*/
public void setParams(Map params) {
this.params = params;
+ }
+
+ /**
+ * @param extension The extension used in the request
+ */
+ public void setExtension(String extension) {
+ this.extension = extension;
}
}
Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java?rev=586694&r1=586693&r2=586694&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java Sat Oct 20 02:56:20 2007
@@ -32,10 +32,12 @@
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.RequestUtils;
+import org.apache.struts2.ServletActionContext;
import org.apache.struts2.StrutsConstants;
import org.apache.struts2.dispatcher.ServletRedirectResult;
import org.apache.struts2.util.PrefixTrie;
+import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.config.Configuration;
import com.opensymphony.xwork2.config.ConfigurationManager;
import com.opensymphony.xwork2.config.entities.PackageConfig;
@@ -292,7 +294,7 @@
ActionMapping mapping = new ActionMapping();
String uri = getUri(request);
- uri = dropExtension(uri);
+ uri = dropExtension(uri, mapping);
if (uri == null) {
return null;
}
@@ -415,8 +417,21 @@
* @param name
* The action name
* @return The action name without its extension
+ * @deprecated Since 2.1, use {@link #dropExtension(java.lang.String,org.apache.struts2.dispatcher.mapper.ActionMapping)} instead
*/
protected String dropExtension(String name) {
+ return dropExtension(name, new ActionMapping());
+ }
+
+ /**
+ * Drops the extension from the action name, storing it in the mapping for later use
+ *
+ * @param name
+ * The action name
+ * @param mapping The action mapping to store the extension in
+ * @return The action name without its extension
+ */
+ protected String dropExtension(String name, ActionMapping mapping) {
if (extensions == null) {
return name;
}
@@ -429,6 +444,7 @@
String extension = "." + ext;
if (name.endsWith(extension)) {
name = name.substring(0, name.length() - extension.length());
+ mapping.setExtension(ext);
return name;
}
}
@@ -496,6 +512,15 @@
}
String extension = getDefaultExtension();
+
+ // Look for the current extension, if available
+ ActionContext context = ActionContext.getContext();
+ if (context != null) {
+ ActionMapping orig = (ActionMapping) context.get(ServletActionContext.ACTION_MAPPING);
+ if (orig != null) {
+ extension = orig.getExtension();
+ }
+ }
if (extension != null) {
if (extension.length() == 0 || (extension.length() > 0 && uri.indexOf('.' + extension) == -1)) {
Modified: struts/struts2/trunk/core/src/test/java/org/apache/struts2/config/MethodConfigurationProviderTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/config/MethodConfigurationProviderTest.java?rev=586694&r1=586693&r2=586694&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/test/java/org/apache/struts2/config/MethodConfigurationProviderTest.java (original)
+++ struts/struts2/trunk/core/src/test/java/org/apache/struts2/config/MethodConfigurationProviderTest.java Sat Oct 20 02:56:20 2007
@@ -62,6 +62,7 @@
* Creates a mock Dispatcher and seeds Configuration.
*/
public void setUp() {
+ /*
InternalConfigurationManager configurationManager = new InternalConfigurationManager();
dispatcher = new Dispatcher(new MockServletContext(), new HashMap<String, String>());
dispatcher.setConfigurationManager(configurationManager);
@@ -95,6 +96,7 @@
provider.init(configuration);
provider.setObjectFactory(new ObjectFactory());
provider.loadPackages();
+ */
}
/**
@@ -182,63 +184,63 @@
assertTrue("The custom.Manual method was generated!","value".equals(val.toString()));
}*/
- /**
- * Custom is a test Action class.
- */
- public class Custom extends ActionSupport {
-
- /**
- * Tests ordinary methods.
- * @return SUCCESS
- */
- public String custom() {
- return SUCCESS;
- }
-
- /**
- * Tests JavaBean property.
- * @return SUCCESS
- */
- public boolean isIt() {
- return true;
- }
-
- /**
- * Tests manual override.
- * @return SUCCESS
- */
- public String manual() {
- return SUCCESS;
- }
-
- /**
- * Tests dynamic configuration.
- * @return SUCCESS
- */
- public String auto() {
- return SUCCESS;
- }
-
- /**
- * Tests method that looks like a JavaBean property.
- * @return SUCCESS
- */
- public String gettysburg() {
- return SUCCESS;
- }
- }
-
- /**
- * InternalConfigurationManager is a mock ConfigurationManager.
- */
- class InternalConfigurationManager extends ConfigurationManager {
- public boolean destroyConfiguration = false;
-
- @Override
- public synchronized void destroyConfiguration() {
- super.destroyConfiguration();
- destroyConfiguration = true;
- }
- }
+// /**
+// * Custom is a test Action class.
+// */
+// public class Custom extends ActionSupport {
+//
+// /**
+// * Tests ordinary methods.
+// * @return SUCCESS
+// */
+// public String custom() {
+// return SUCCESS;
+// }
+//
+// /**
+// * Tests JavaBean property.
+// * @return SUCCESS
+// */
+// public boolean isIt() {
+// return true;
+// }
+//
+// /**
+// * Tests manual override.
+// * @return SUCCESS
+// */
+// public String manual() {
+// return SUCCESS;
+// }
+//
+// /**
+// * Tests dynamic configuration.
+// * @return SUCCESS
+// */
+// public String auto() {
+// return SUCCESS;
+// }
+//
+// /**
+// * Tests method that looks like a JavaBean property.
+// * @return SUCCESS
+// */
+// public String gettysburg() {
+// return SUCCESS;
+// }
+// }
+//
+// /**
+// * InternalConfigurationManager is a mock ConfigurationManager.
+// */
+// class InternalConfigurationManager extends ConfigurationManager {
+// public boolean destroyConfiguration = false;
+//
+// @Override
+// public synchronized void destroyConfiguration() {
+// super.destroyConfiguration();
+// destroyConfiguration = true;
+// }
+// }
}