1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.plugin.ide;
20
21 import java.util.HashMap;
22 import java.util.Iterator;
23 import java.util.Map;
24
25 import org.apache.maven.project.MavenProject;
26
27 public class JeeUtils
28 {
29 public static final String ARTIFACT_MAVEN_EAR_PLUGIN = "org.apache.maven.plugins:maven-ear-plugin";
30
31 public static final String ARTIFACT_MAVEN_WAR_PLUGIN = "org.apache.maven.plugins:maven-war-plugin";
32
33 private static final Map ejbMap = new HashMap();
34
35 private static final Map jeeMap = new HashMap();
36
37 private static final Map jspMap = new HashMap();
38
39 private static final Map servletMap = new HashMap();
40
41
42
43
44 static
45 {
46 addJEE( JeeDescriptor.JEE_5_0, JeeDescriptor.EJB_3_0, JeeDescriptor.SERVLET_2_5, JeeDescriptor.JSP_2_1 );
47 addJEE( JeeDescriptor.JEE_1_4, JeeDescriptor.EJB_2_1, JeeDescriptor.SERVLET_2_4, JeeDescriptor.JSP_2_0 );
48 addJEE( JeeDescriptor.JEE_1_3, JeeDescriptor.EJB_2_0, JeeDescriptor.SERVLET_2_3, JeeDescriptor.JSP_1_2 );
49 addJEE( JeeDescriptor.JEE_1_2, JeeDescriptor.EJB_1_1, JeeDescriptor.SERVLET_2_2, JeeDescriptor.JSP_1_1 );
50
51 }
52
53
54
55
56
57
58
59 public final static JeeDescriptor getJeeDescriptorFromEjbVersion( String ejbVersion )
60 {
61 if ( ejbMap.containsKey( ejbVersion ) )
62 return (JeeDescriptor) ejbMap.get( ejbVersion );
63 else
64 return null;
65 }
66
67
68
69
70
71
72
73 public final static JeeDescriptor getJeeDescriptorFromJeeVersion( String jeeVersion )
74 {
75 if ( jeeMap.containsKey( jeeVersion ) )
76 return (JeeDescriptor) jeeMap.get( jeeVersion );
77 else
78 return null;
79 }
80
81
82
83
84
85
86
87 public final static JeeDescriptor getJeeDescriptorFromJspVersion( String jspVersion )
88 {
89 if ( jspMap.containsKey( jspVersion ) )
90 return (JeeDescriptor) jspMap.get( jspVersion );
91 else
92 return null;
93 }
94
95
96
97
98
99
100
101 public final static JeeDescriptor getJeeDescriptorFromServletVersion( String servletVersion )
102 {
103 if ( servletMap.containsKey( servletVersion ) )
104 return (JeeDescriptor) servletMap.get( servletVersion );
105 else
106 return null;
107 }
108
109
110
111
112
113
114
115
116 public static String resolveEjbVersion( MavenProject project )
117 {
118 String version = findEjbVersionInDependencies( project );
119
120 if ( version == null )
121 {
122
123
124 JeeDescriptor descriptor = getJeeDescriptorFromJeeVersion( findJeeVersionInDependencies( project ) );
125 if ( descriptor != null )
126 version = descriptor.getEjbVersion();
127 }
128 return version == null ? JeeDescriptor.EJB_2_1 : version;
129 }
130
131
132
133
134
135
136
137
138 public static String resolveJeeVersion( MavenProject project )
139 {
140
141 String version = findJeeVersionInDependencies( project );
142 if ( version == null )
143 {
144
145
146 JeeDescriptor descriptor = getJeeDescriptorFromEjbVersion( findEjbVersionInDependencies( project ) );
147 if ( descriptor != null )
148 version = descriptor.getJeeVersion();
149 }
150 if ( version == null )
151 {
152
153
154 JeeDescriptor descriptor = getJeeDescriptorFromServletVersion( findServletVersionInDependencies( project ) );
155 if ( descriptor != null )
156 version = descriptor.getJeeVersion();
157 }
158 if ( version == null )
159 {
160
161
162 JeeDescriptor descriptor = getJeeDescriptorFromJspVersion( findJspVersionInDependencies( project ) );
163 if ( descriptor != null )
164 version = descriptor.getJeeVersion();
165 }
166 return version == null ? JeeDescriptor.JEE_1_4 : version;
167 }
168
169
170
171
172
173
174
175
176
177 public static String resolveJspVersion( MavenProject project )
178 {
179 String version = findJspVersionInDependencies( project );
180
181 if ( version == null )
182 {
183
184
185 JeeDescriptor descriptor = getJeeDescriptorFromJeeVersion( findJeeVersionInDependencies( project ) );
186 if ( descriptor != null )
187 version = descriptor.getJspVersion();
188 }
189 if ( version == null )
190 {
191
192
193 JeeDescriptor descriptor = getJeeDescriptorFromServletVersion( findServletVersionInDependencies( project ) );
194 if ( descriptor != null )
195 version = descriptor.getJspVersion();
196 }
197 return version == null ? JeeDescriptor.JSP_2_0 : version;
198 }
199
200
201
202
203
204
205
206
207 public static String resolveServletVersion( MavenProject project )
208 {
209 String version = findServletVersionInDependencies( project );
210
211 if ( version == null )
212 {
213
214
215 JeeDescriptor descriptor = getJeeDescriptorFromJeeVersion( findJeeVersionInDependencies( project ) );
216 if ( descriptor != null )
217 version = descriptor.getServletVersion();
218 }
219 return version == null ? JeeDescriptor.SERVLET_2_4 : version;
220 }
221
222 private static void addJEE( String jeeVersion, String ejbVersion, String servletVersion, String jspVersion )
223 {
224 JeeDescriptor descriptor = new JeeDescriptor( jeeVersion, ejbVersion, servletVersion, jspVersion );
225 jeeMap.put( jeeVersion, descriptor );
226 ejbMap.put( ejbVersion, descriptor );
227 servletMap.put( servletVersion, descriptor );
228 jspMap.put( jspVersion, descriptor );
229 }
230
231 private static String findEjbVersionInDependencies( MavenProject project )
232 {
233
234 String version =
235 IdeUtils.getArtifactVersion( new String[] { "ejb", "ejb-api", "geronimo-spec-ejb" },
236 project.getDependencies(), 3 );
237
238 if ( version == null )
239 {
240 if ( IdeUtils.getArtifactVersion( new String[] { "geronimo-ejb_2.1_spec" }, project.getDependencies(), 3 ) != null )
241 return JeeDescriptor.EJB_2_1;
242 }
243 if ( version == null )
244 {
245 if ( IdeUtils.getArtifactVersion( new String[] { "geronimo-ejb_3.0_spec" }, project.getDependencies(), 3 ) != null )
246 return JeeDescriptor.EJB_3_0;
247 }
248
249
250 if ( version == null )
251 {
252 Iterator it = project.getProjectReferences().keySet().iterator();
253 while ( it.hasNext() )
254 {
255 Object key = it.next();
256 MavenProject refProject = (MavenProject) project.getProjectReferences().get( key );
257 version = findEjbVersionInDependencies( refProject );
258 if ( version != null )
259 {
260 break;
261 }
262 }
263 }
264 return version;
265 }
266
267 private static String findJeeVersionInDependencies( MavenProject project )
268 {
269 String version =
270 IdeUtils.getArtifactVersion( new String[] { "javaee-api", "j2ee", "geronimo-spec-j2ee" },
271 project.getDependencies(), 3 );
272
273
274 if ( version == null )
275 {
276 if ( IdeUtils.getArtifactVersion( new String[] { "geronimo-j2ee_1.4_spec" }, project.getDependencies(), 3 ) != null )
277 return JeeDescriptor.JEE_1_4;
278 }
279
280
281 if ( version == null )
282 {
283 Iterator it = project.getProjectReferences().keySet().iterator();
284 while ( it.hasNext() )
285 {
286 Object key = it.next();
287 MavenProject refProject = (MavenProject) project.getProjectReferences().get( key );
288 version = findJeeVersionInDependencies( refProject );
289 if ( version != null )
290 {
291 break;
292 }
293 }
294 }
295
296 return version;
297 }
298
299 private static String findJspVersionInDependencies( MavenProject project )
300 {
301 return null;
302 }
303
304 private static String findServletVersionInDependencies( MavenProject project )
305 {
306 String version =
307 IdeUtils.getArtifactVersion( new String[] { "servlet-api", "servletapi", "geronimo-spec-servlet" },
308 project.getDependencies(), 3 );
309
310
311 if ( version == null )
312 {
313 if ( IdeUtils.getArtifactVersion( new String[] { "geronimo-servlet_2.4_spec" }, project.getDependencies(),
314 3 ) != null )
315 return JeeDescriptor.SERVLET_2_4;
316 }
317 if ( version == null )
318 {
319 if ( IdeUtils.getArtifactVersion( new String[] { "geronimo-servlet_2.5_spec" }, project.getDependencies(),
320 3 ) != null )
321 return JeeDescriptor.SERVLET_2_5;
322 }
323
324
325 if ( version == null )
326 {
327 Iterator it = project.getProjectReferences().keySet().iterator();
328 while ( it.hasNext() )
329 {
330 Object key = it.next();
331 MavenProject refProject = (MavenProject) project.getProjectReferences().get( key );
332 version = findServletVersionInDependencies( refProject );
333 if ( version != null )
334 {
335 break;
336 }
337 }
338 }
339 return version;
340 }
341 }