1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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
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
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
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
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
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
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 }