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