Author: mrdon Date: Tue Sep 26 22:59:22 2006 New Revision: 450330 URL: http://svn.apache.org/viewvc?view=rev&rev=450330 Log: First cut at a simple plugin framework. The config files are loaded in the following order: struts-default.xml, struts-plugin.xml, struts.xml, xwork.xml. This allows plugins to define a config file that uses core interceptors, but make their results, interceptors, etc available to application configurations. The extras and integration modules have been decomposed into their own plugins. WW-1457
Added: struts/struts2/trunk/plugins/ struts/struts2/trunk/plugins/jasperreports/ struts/struts2/trunk/plugins/jasperreports/pom.xml struts/struts2/trunk/plugins/jasperreports/src/ - copied from r450303, struts/struts2/trunk/extras/src/ struts/struts2/trunk/plugins/jasperreports/src/main/resources/ struts/struts2/trunk/plugins/jasperreports/src/main/resources/struts-plugin.xml struts/struts2/trunk/plugins/jfreechart/ struts/struts2/trunk/plugins/jfreechart/pom.xml struts/struts2/trunk/plugins/jfreechart/src/ - copied from r450303, struts/struts2/trunk/extras/src/ struts/struts2/trunk/plugins/jfreechart/src/main/resources/ struts/struts2/trunk/plugins/jfreechart/src/main/resources/struts-plugin.xml struts/struts2/trunk/plugins/pell-multipart/ struts/struts2/trunk/plugins/pell-multipart/pom.xml struts/struts2/trunk/plugins/pell-multipart/src/ - copied from r450303, struts/struts2/trunk/extras/src/ struts/struts2/trunk/plugins/pom.xml struts/struts2/trunk/plugins/struts1/ - copied from r450303, struts/struts2/trunk/integration/ struts/struts2/trunk/plugins/struts1/src/main/resources/struts-plugin.xml - copied, changed from r450288, struts/struts2/trunk/integration/src/main/resources/struts-default.xml Removed: struts/struts2/trunk/extras/ struts/struts2/trunk/integration/ struts/struts2/trunk/plugins/jasperreports/src/main/java/org/apache/struts2/dispatcher/ struts/struts2/trunk/plugins/jasperreports/src/test/java/org/ struts/struts2/trunk/plugins/jfreechart/src/main/java/org/apache/struts2/dispatcher/multipart/ struts/struts2/trunk/plugins/jfreechart/src/main/java/org/apache/struts2/views/ struts/struts2/trunk/plugins/pell-multipart/src/main/java/org/apache/struts2/dispatcher/ChartResult.java struts/struts2/trunk/plugins/pell-multipart/src/main/java/org/apache/struts2/views/ struts/struts2/trunk/plugins/pell-multipart/src/test/java/org/ struts/struts2/trunk/plugins/struts1/src/main/resources/struts-default.xml Modified: struts/struts2/trunk/apps/showcase/pom.xml struts/struts2/trunk/apps/showcase/src/main/resources/struts-integration.xml struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java struts/struts2/trunk/core/src/main/resources/struts-default.xml struts/struts2/trunk/core/src/main/resources/struts-portlet-default.xml struts/struts2/trunk/plugins/struts1/pom.xml Modified: struts/struts2/trunk/apps/showcase/pom.xml URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/showcase/pom.xml?view=diff&rev=450330&r1=450329&r2=450330 ============================================================================== --- struts/struts2/trunk/apps/showcase/pom.xml (original) +++ struts/struts2/trunk/apps/showcase/pom.xml Tue Sep 26 22:59:22 2006 @@ -26,7 +26,7 @@ <dependency> <groupId>org.apache.struts</groupId> - <artifactId>struts2-integration</artifactId> + <artifactId>struts2-struts1-plugin</artifactId> <version>${pom.version}</version> </dependency> Modified: struts/struts2/trunk/apps/showcase/src/main/resources/struts-integration.xml URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/showcase/src/main/resources/struts-integration.xml?view=diff&rev=450330&r1=450329&r2=450330 ============================================================================== --- struts/struts2/trunk/apps/showcase/src/main/resources/struts-integration.xml (original) +++ struts/struts2/trunk/apps/showcase/src/main/resources/struts-integration.xml Tue Sep 26 22:59:22 2006 @@ -5,7 +5,7 @@ "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> - <package name="integration" extends="struts-default,struts-integration-default" namespace="/integration"> + <package name="integration" extends="struts1-default" namespace="/integration"> <interceptors> <interceptor name="gangsterForm" class="com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor"> 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?view=diff&rev=450330&r1=450329&r2=450330 ============================================================================== --- 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 Tue Sep 26 22:59:22 2006 @@ -251,9 +251,9 @@ } configurationManager = new ConfigurationManager(); - String configFiles = Settings.get(StrutsConstants.STRUTS_CONFIGURATION_FILES); - if (configFiles == null) { - configFiles = "struts-default.xml,struts-plugins.xml,struts.xml"; + String configFiles = "struts-default.xml,struts-plugin.xml,struts.xml"; + if (Settings.isSet(StrutsConstants.STRUTS_CONFIGURATION_FILES)) { + configFiles = Settings.get(StrutsConstants.STRUTS_CONFIGURATION_FILES); } String[] files = configFiles.split("\\s*[,]\\s*"); for (String file : files) { 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?view=diff&rev=450330&r1=450329&r2=450330 ============================================================================== --- struts/struts2/trunk/core/src/main/resources/struts-default.xml (original) +++ struts/struts2/trunk/core/src/main/resources/struts-default.xml Tue Sep 26 22:59:22 2006 @@ -20,7 +20,6 @@ <result-type name="plaintext" class="org.apache.struts2.dispatcher.PlainTextResult" /> <!-- third party integration - <result-type name="jasper" class="org.apache.struts2.views.jasperreports.JasperReportsResult"/> <result-type name="jsf" class="org.apache.struts2.jsf.FacesResult" /> --> </result-types> Modified: struts/struts2/trunk/core/src/main/resources/struts-portlet-default.xml URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/resources/struts-portlet-default.xml?view=diff&rev=450330&r1=450329&r2=450330 ============================================================================== --- struts/struts2/trunk/core/src/main/resources/struts-portlet-default.xml (original) +++ struts/struts2/trunk/core/src/main/resources/struts-portlet-default.xml Tue Sep 26 22:59:22 2006 @@ -5,8 +5,6 @@ "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> - <include file="struts-default.xml"/> - <package name="struts-portlet-default" extends="struts-default"> <result-types> @@ -25,4 +23,4 @@ <result type="velocity" name="success">${location}</result> </action> </package> -</struts> \ No newline at end of file +</struts> Added: struts/struts2/trunk/plugins/jasperreports/pom.xml URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/jasperreports/pom.xml?view=auto&rev=450330 ============================================================================== --- struts/struts2/trunk/plugins/jasperreports/pom.xml (added) +++ struts/struts2/trunk/plugins/jasperreports/pom.xml Tue Sep 26 22:59:22 2006 @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache.struts</groupId> + <artifactId>struts2-plugins</artifactId> + <version>2.0.1-SNAPSHOT</version> + </parent> + <groupId>org.apache.struts</groupId> + <artifactId>struts2-jasperreports-plugin</artifactId> + <packaging>jar</packaging> + <name>Struts 2 Jasper Reports Plugin</name> + + <distributionManagement> + <site> + <id>apache-site</id> + <url>scp://people.apache.org/www/struts.apache.org/2.x/plugins/jasperreports</url> + </site> + </distributionManagement> + + <dependencies> + <dependency> + <groupId>jasperreports</groupId> + <artifactId>jasperreports</artifactId> + <version>1.2.1</version> + <scope>provided</scope> + </dependency> + </dependencies> +</project> Added: struts/struts2/trunk/plugins/jasperreports/src/main/resources/struts-plugin.xml URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/jasperreports/src/main/resources/struts-plugin.xml?view=auto&rev=450330 ============================================================================== --- struts/struts2/trunk/plugins/jasperreports/src/main/resources/struts-plugin.xml (added) +++ struts/struts2/trunk/plugins/jasperreports/src/main/resources/struts-plugin.xml Tue Sep 26 22:59:22 2006 @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<!DOCTYPE struts PUBLIC + "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" + "http://struts.apache.org/dtds/struts-2.0.dtd"> + +<struts> + <package name="extras-default"> + + <result-types> + <result-type name="jasper" class="org.apache.struts2.views.jasperreports.JasperReportsResult"/> + </result-types> + </package> + +</struts> Added: struts/struts2/trunk/plugins/jfreechart/pom.xml URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/jfreechart/pom.xml?view=auto&rev=450330 ============================================================================== --- struts/struts2/trunk/plugins/jfreechart/pom.xml (added) +++ struts/struts2/trunk/plugins/jfreechart/pom.xml Tue Sep 26 22:59:22 2006 @@ -0,0 +1,56 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache.struts</groupId> + <artifactId>struts2-plugins</artifactId> + <version>2.0.1-SNAPSHOT</version> + </parent> + <groupId>org.apache.struts</groupId> + <artifactId>struts2-jfreechart-plugin</artifactId> + <packaging>jar</packaging> + <name>Struts 2 JFreeChart Plugin</name> + + <distributionManagement> + <site> + <id>apache-site</id> + <url>scp://people.apache.org/www/struts.apache.org/2.x/plugins/jfreechart</url> + </site> + </distributionManagement> + + <dependencies> + <dependency> + <groupId>jfree</groupId> + <artifactId>jcommon</artifactId> + <version>[1.0.0,)</version> + <scope>provided</scope> + <exclusions> + <exclusion> + <groupId>gnujaxp</groupId> + <artifactId>gnujaxp</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>jfree</groupId> + <artifactId>jfreechart</artifactId> + <version>[1.0.0,)</version> + <scope>provided</scope> + <exclusions> + <exclusion> + <groupId>gnujaxp</groupId> + <artifactId>gnujaxp</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>mockobjects</groupId> + <artifactId>mockobjects-core</artifactId> + <version>0.09</version> + <scope>test</scope> + </dependency> + + + </dependencies> +</project> Added: struts/struts2/trunk/plugins/jfreechart/src/main/resources/struts-plugin.xml URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/jfreechart/src/main/resources/struts-plugin.xml?view=auto&rev=450330 ============================================================================== --- struts/struts2/trunk/plugins/jfreechart/src/main/resources/struts-plugin.xml (added) +++ struts/struts2/trunk/plugins/jfreechart/src/main/resources/struts-plugin.xml Tue Sep 26 22:59:22 2006 @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<!DOCTYPE struts PUBLIC + "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" + "http://struts.apache.org/dtds/struts-2.0.dtd"> + +<struts> + <package name="extras-default"> + + <result-types> + <result-type name="chart" class="org.apache.struts2.dispatcher.ChartResult"> + <param name="height">150</param> + <param name="width">200</param> + </result-type> + </result-types> + </package> + +</struts> Added: struts/struts2/trunk/plugins/pell-multipart/pom.xml URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/pell-multipart/pom.xml?view=auto&rev=450330 ============================================================================== --- struts/struts2/trunk/plugins/pell-multipart/pom.xml (added) +++ struts/struts2/trunk/plugins/pell-multipart/pom.xml Tue Sep 26 22:59:22 2006 @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache.struts</groupId> + <artifactId>struts2-plugins</artifactId> + <version>2.0.1-SNAPSHOT</version> + </parent> + <groupId>org.apache.struts</groupId> + <artifactId>struts2-pell-multipart-plugin</artifactId> + <packaging>jar</packaging> + <name>Struts 2 Pell Multipart Plugin</name> + + <distributionManagement> + <site> + <id>apache-site</id> + <url>scp://people.apache.org/www/struts.apache.org/2.x/plugins/pell-multipart</url> + </site> + </distributionManagement> + + <dependencies> + <dependency> + <groupId>opensymphony</groupId> + <artifactId>pell-multipart</artifactId> + <version>2.1.5</version> + <scope>provided</scope> + </dependency> + </dependencies> +</project> Added: struts/struts2/trunk/plugins/pom.xml URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/pom.xml?view=auto&rev=450330 ============================================================================== --- struts/struts2/trunk/plugins/pom.xml (added) +++ struts/struts2/trunk/plugins/pom.xml Tue Sep 26 22:59:22 2006 @@ -0,0 +1,57 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache.struts</groupId> + <artifactId>struts2-parent</artifactId> + <version>2.0.1-SNAPSHOT</version> + </parent> + <groupId>org.apache.struts</groupId> + <artifactId>struts2-plugins</artifactId> + <packaging>pom</packaging> + <name>Struts Plugins</name> + <modules> + <module>struts1</module> + <module>pell-multipart</module> + <module>jasperreports</module> + <module>jfreechart</module> + </modules> + + <distributionManagement> + <site> + <id>apache-site</id> + <url>scp://people.apache.org/www/struts.apache.org/2.x/plugins</url> + </site> + </distributionManagement> + + <dependencies> + + <dependency> + <groupId>org.apache.struts</groupId> + <artifactId>struts2-core</artifactId> + <version>${pom.version}</version> + </dependency> + + <!-- Test dependencies --> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <scope>compile</scope> + <version>3.8.1</version> + <!-- has to be compile for StrutsTestCase, which is part of the base package so others can write unit tests --> + <optional>true</optional> + </dependency> + + + <dependency> + <groupId>javax.servlet</groupId> + <artifactId>servlet-api</artifactId> + <version>2.4</version> + <scope>provided</scope> + </dependency> + + + </dependencies> + +</project> Modified: struts/struts2/trunk/plugins/struts1/pom.xml URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/struts1/pom.xml?view=diff&rev=450330&r1=450303&r2=450330 ============================================================================== --- struts/struts2/trunk/plugins/struts1/pom.xml (original) +++ struts/struts2/trunk/plugins/struts1/pom.xml Tue Sep 26 22:59:22 2006 @@ -4,42 +4,22 @@ <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.apache.struts</groupId> - <artifactId>struts2-parent</artifactId> + <artifactId>struts2-plugins</artifactId> <version>2.0.1-SNAPSHOT</version> </parent> <groupId>org.apache.struts</groupId> - <artifactId>struts2-integration</artifactId> + <artifactId>struts2-struts1-plugin</artifactId> <packaging>jar</packaging> - <name>Struts 2 Integration</name> + <name>Struts 2 Struts 1 Plugin</name> <distributionManagement> <site> <id>apache-site</id> - <url>scp://people.apache.org/www/struts.apache.org/2.x/struts-integration</url> + <url>scp://people.apache.org/www/struts.apache.org/2.x/plugins/struts1</url> </site> </distributionManagement> <dependencies> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <version>3.8.1</version> - <scope>test</scope> - </dependency> - - <dependency> - <groupId>javax.servlet</groupId> - <artifactId>servlet-api</artifactId> - <version>2.4</version> - <scope>provided</scope> - </dependency> - - <dependency> - <groupId>org.apache.struts</groupId> - <artifactId>struts2-core</artifactId> - <version>${pom.version}</version> - </dependency> - <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts-core</artifactId> Copied: struts/struts2/trunk/plugins/struts1/src/main/resources/struts-plugin.xml (from r450288, struts/struts2/trunk/integration/src/main/resources/struts-default.xml) URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/struts1/src/main/resources/struts-plugin.xml?view=diff&rev=450330&p1=struts/struts2/trunk/integration/src/main/resources/struts-default.xml&r1=450288&p2=struts/struts2/trunk/plugins/struts1/src/main/resources/struts-plugin.xml&r2=450330 ============================================================================== --- struts/struts2/trunk/integration/src/main/resources/struts-default.xml (original) +++ struts/struts2/trunk/plugins/struts1/src/main/resources/struts-plugin.xml Tue Sep 26 22:59:22 2006 @@ -5,12 +5,25 @@ "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> - <package name="struts-integration-default"> + <package name="struts1-default" extends="struts-default"> <interceptors> <interceptor name="actionForm-reset" class="org.apache.struts2.s1.ActionFormResetInterceptor"/> <interceptor name="actionForm-validation" class="org.apache.struts2.s1.ActionFormValidationInterceptor"/> + <interceptor name="actionForm-commonsValidation" class="org.apache.struts2.s1.ActionFormValidationInterceptor"> + <param name="pathnames">/org/apache/struts/validator/validator-rules.xml,/WEB-INF/validation.xml</param> + </interceptor> + <interceptor-stack name="struts1-default"> + <interceptor-ref name="static-params"/> + <interceptor-ref name="scoped-model-driven"/> + <interceptor-ref name="model-driven"/> + <interceptor-ref name="actionForm-reset"/> + <interceptor-ref name="basicStack"/> + <interceptor-ref name="actionForm-validation"/> + <interceptor-ref name="workflow"/> + </interceptor-stack> </interceptors> + </package> </struts>