S2XWorkTigerで複数NameSpaceの指定

  • 1. org.seasar.xwork.annotation.AnnotationConfigurationProviderに下記patchをあてる
35a36,39
>     private PackageConfig nameSpacePackageConfig;
> 
>     private String nameSpace = "";
> 
39a44,45
>     private String ignoreClassPackage = "";
> 
51a58,65
>         if(this.nameSpace.length() > 0){
>             nameSpacePackageConfig = configuration.getPackageConfig(nameSpace);
>             if(nameSpacePackageConfig == null){
>                 nameSpacePackageConfig = new PackageConfig(nameSpace, "/"+nameSpace, false, null);
>                 nameSpacePackageConfig.addParent(packageConfig);
>                 configuration.addPackageConfig(nameSpace, nameSpacePackageConfig);
>             }
>         }
64a79
>         Pattern ignorePattern = Pattern.compile(ignoreClassPackage);
74a90,91
>                 if(!ignorePattern.matcher(className).matches()){
>                     if(nameSpacePackageConfig == null){
76a94,98
>                     }else{
>                         setAction(nameSpacePackageConfig, Thread.currentThread()
>                                         .getContextClassLoader().loadClass(className));
>                     }
>                 }
171a194,209
>     public void setClassPackage(String classPackage) {
>         this.classPackage = classPackage;
>     }
> 
>     public void setClassPattern(String classPattern) {
>         this.classPattern = classPattern;
>     }
> 
>     public void setIgnoreClassPackage(String ignoreClassPackage) {
>         this.ignoreClassPackage = ignoreClassPackage;
>     }
> 
>     public void setNameSpace(String nameSpace) {
>         this.nameSpace = nameSpace;
>     }
> 
  • 2. nameSpace毎に@com.opensymphony.xwork.config.ConfigurationManager@addConfigurationProviderするdiconを記載する
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN" "http://www.seasar.org/dtd/components24.dtd">
<components>
  <component class="com.opensymphony.xwork.config.providers.XmlConfigurationProvider">
    <initMethod>@com.opensymphony.xwork.config.ConfigurationManager@addConfigurationProvider(#self)</initMethod>
  </component>
  <component class="org.seasar.xwork.annotation.AnnotationConfigurationProvider">
    <initMethod>@com.opensymphony.xwork.config.ConfigurationManager@addConfigurationProvider(#self)</initMethod>
    <property name="classPackage">"com.example.action1"</property>
    <property name="nameSpace">"action1"</property>
    <property name="ignoreClassPackage">"com.example.action1.test.*"</property>
  </component>
  <component class="org.seasar.xwork.annotation.AnnotationConfigurationProvider">
    <initMethod>@com.opensymphony.xwork.config.ConfigurationManager@addConfigurationProvider(#self)</initMethod>
    <property name="classPackage">"com.example.action2"</property>
    <property name="nameSpace">"action2"</property>
  </component>
  <component class="org.seasar.xwork.annotation.AnnotationConfigurationProvider">
    <initMethod>@com.opensymphony.xwork.config.ConfigurationManager@addConfigurationProvider(#self)</initMethod>
    <property name="classPackage">"com.example.action3"</property>
    <property name="nameSpace">"action3"</property>
  </component>
  <component class="org.seasar.xwork.annotation.AnnotationConfigurationProvider">
    <initMethod>@com.opensymphony.xwork.config.ConfigurationManager@addConfigurationProvider(#self)</initMethod>
    <property name="classPackage">"com.example.action1.test"</property>
    <property name="nameSpace">"action1/test"</property>
  </component>
</components>

とりあえず動きました。