View Javadoc

1   /*
2    * $Id: ClasspathPackageProviderTest.java 667743 2008-06-14 04:40:02Z mrdon $
3    *
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *  http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
20   */
21  
22  package org.apache.struts2.config;
23  
24  import com.opensymphony.xwork2.config.Configuration;
25  import com.opensymphony.xwork2.config.entities.ActionConfig;
26  import com.opensymphony.xwork2.config.entities.PackageConfig;
27  import com.opensymphony.xwork2.config.entities.ResultTypeConfig;
28  import com.opensymphony.xwork2.config.impl.DefaultConfiguration;
29  import junit.framework.TestCase;
30  import org.apache.struts2.dispatcher.ServletDispatcherResult;
31  
32  import java.util.Map;
33  
34  public class ClasspathPackageProviderTest extends TestCase {
35  
36      ClasspathPackageProvider provider;
37      Configuration config;
38  
39      public void setUp() throws Exception {
40          provider = new ClasspathPackageProvider();
41          provider.setActionPackages("org.apache.struts2.config");
42          config = createNewConfiguration();
43          provider.init(config);
44          provider.loadPackages();
45      }
46  
47      private Configuration createNewConfiguration() {
48          Configuration config = new DefaultConfiguration();
49          PackageConfig strutsDefault = new PackageConfig.Builder("struts-default")
50                  .addResultTypeConfig(new ResultTypeConfig.Builder("dispatcher", ServletDispatcherResult.class.getName())
51                          .defaultResultParam("location")
52                          .build())
53                  .defaultResultType("dispatcher")
54                  .build();
55          config.addPackageConfig("struts-default", strutsDefault);
56          PackageConfig customPackage = new PackageConfig.Builder("custom-package")
57              .namespace("/custom")
58              .build();
59          config.addPackageConfig("custom-package", customPackage);
60          return config;
61      }
62  
63      public void tearDown() throws Exception {
64          provider = null;
65          config = null;
66      }
67  
68      public void testFoundRootPackages() {
69          assertEquals(7, config.getPackageConfigs().size());
70          PackageConfig pkg = config.getPackageConfig("org.apache.struts2.config");
71          assertNotNull(pkg);
72          Map configs = pkg.getActionConfigs();
73          assertNotNull(configs);
74          // assertEquals(1, configs.size());
75          ActionConfig actionConfig = (ActionConfig) configs.get("customParentPackage");
76          assertNotNull(actionConfig);
77      }
78      
79      public void testDisableScanning() {
80          provider = new ClasspathPackageProvider();
81          provider.setActionPackages("org.apache.struts2.config");
82          provider.setDisableActionScanning("true");
83          config = new DefaultConfiguration();
84          provider.init(config);
85          provider.loadPackages();
86          
87          assertEquals(0, config.getPackageConfigs().size());
88      }
89  
90      public void testParentPackage() {
91          PackageConfig pkg = config.getPackageConfig("org.apache.struts2.config");
92          // assertEquals(2, pkg.getParents().size());
93          Map configs = pkg.getActionConfigs();
94          ActionConfig config = (ActionConfig) configs.get("customParentPackage");
95          assertNotNull(config);
96          assertEquals("/custom", pkg.getNamespace());
97      }
98  
99      public void testParentPackageOnPackage() {
100         provider = new ClasspathPackageProvider();
101         provider.setActionPackages("org.apache.struts2.config.parenttest");
102         provider.init(createNewConfiguration());
103         provider.loadPackages();
104 
105 
106         PackageConfig pkg = config.getPackageConfig("org.apache.struts2.config.parenttest");
107         // assertEquals(2, pkg.getParents().size());
108         assertNotNull(pkg);
109 
110         assertEquals("custom-package", pkg.getParents().get(0).getName());
111         Map configs = pkg.getActionConfigs();
112         ActionConfig config = (ActionConfig) configs.get("some");
113         assertNotNull(config);
114     }
115 
116     public void testCustomNamespace() {
117         PackageConfig pkg = config.getPackageConfig("org.apache.struts2.config.CustomNamespaceAction");
118         Map configs = pkg.getAllActionConfigs();
119         // assertEquals(2, configs.size());
120         ActionConfig config = (ActionConfig) configs.get("customNamespace");
121         assertEquals(config.getPackageName(), pkg.getName());
122         assertEquals(1, pkg.getParents().size());
123         assertNotNull(config);
124         assertEquals("/mynamespace", pkg.getNamespace());
125         ActionConfig ac = (ActionConfig) configs.get("customParentPackage");
126         assertNotNull(ac);
127     }
128     
129     public void testCustomActionAnnotation() {
130         PackageConfig pkg = config.getPackageConfig("org.apache.struts2.config.AnnotatedAction");
131         Map configs = pkg.getAllActionConfigs();
132         // assertEquals(2, configs.size());
133         ActionConfig config = (ActionConfig) configs.get("myaction");
134         assertNotNull(config);
135     }
136     
137     public void testCustomActionAnnotationOfAnyName() {
138         PackageConfig pkg = config.getPackageConfig("org.apache.struts2.config");
139         Map configs = pkg.getAllActionConfigs();
140         // assertEquals(2, configs.size());
141         ActionConfig config = (ActionConfig) configs.get("myaction2");
142         assertNotNull(config);
143     }
144     
145     public void testResultAnnotations() {
146         PackageConfig pkg = config.getPackageConfig("org.apache.struts2.config.cltest");
147         assertEquals("/cltest", pkg.getNamespace());
148         ActionConfig acfg = pkg.getActionConfigs().get("twoResult");
149         assertNotNull(acfg);
150         assertEquals(2, acfg.getResults().size());
151         assertEquals("input.jsp", acfg.getResults().get("input").getParams().get("location"));
152         assertEquals("bob", acfg.getResults().get("chain").getParams().get("location"));
153 
154         acfg = pkg.getActionConfigs().get("oneResult");
155         assertNotNull(acfg);
156         assertEquals(1, acfg.getResults().size());
157         assertEquals("input-parent.jsp", acfg.getResults().get("input").getParams().get("location"));
158     }
159 
160     public void testActionImplementation() {
161         PackageConfig pkg = config.getPackageConfig("org.apache.struts2.config.cltest");
162         assertEquals("/cltest", pkg.getNamespace());
163         ActionConfig acfg = pkg.getActionConfigs().get("actionImpl");
164         assertNotNull(acfg);
165     }
166 }