4 # Java Application Servers
6 define_platform 'glassfish' do
8 gestalt(:platform, 'java')
10 find_filenames /\b(sun\-web|sun\-ejb\-jar|sun\-application(\-client))\.xml\b/
11 maven_dependency /^org.glassfish\b/
16 define_platform 'jboss' do
18 gestalt(:platform, 'java')
20 find_filenames /\bjboss(\-app|cmp\-jdbc|\-web|\-build|\-client)\.xml\b/
21 maven_dependency /^org.jboss\b/
26 define_platform 'weblogic' do
28 gestalt(:platform, 'java')
30 find_filenames /\bweblogic(\-ejb\-jar|\-ra|\-application|\-cmp\-rdbms\jar)\.xml\b/
31 maven_plugin /^org\.codehaus\.mojo\b/, /^weblogic\-maven\-plugin\b/
36 define_platform 'jonas' do
38 gestalt(:platform, 'java')
39 find_filenames /\bjonas\-ejb\-jar\.xml\b/
43 define_platform 'websphere' do
45 gestalt(:platform, 'java')
46 find_filenames /\bibm\-(application|web|webservices|webservicesclient)\-.+\.xmi$/
50 define_platform 'tomcat' do
52 gestalt(:platform, 'java')
54 java_import /^org\.apache\.tomcat\b/
55 maven_dependency /^org\.apache\.tomcat\b/
60 define_platform 'appserver' do
62 gestalt(:platform, 'glassfish')
63 gestalt(:platform, 'jboss')
64 gestalt(:platform, 'weblogic')
65 gestalt(:platform, 'tomcat')
66 gestalt(:platform, 'jonas')
67 gestalt(:platform, 'websphere')
71 define_platform 'ejb2' do
73 gestalt(:platform, 'java')
75 find_filenames /(.+\-)ejb\-jar\.xml\b/
76 java_keywords 'EJBHome', 'EJBRemote', 'SessionBean'
81 # Caution! The EJB platform definitions are senstive to their order -- do not reorder!
82 # The gestalt engine iterates over definitions in the order they are defined.
84 # First, look for the subset of new features that definitely indicate EJB 3.1
85 define_platform 'ejb3.1' do
87 gestalt(:platform, 'java')
89 java_keywords '@Schedule', '@Singleton', '@Asynchronous'
90 java_keywords /@EJB\(.*\bmappedName\s*=\s*"java:(global|app|module)\/.+".*\)/
91 java_keywords /\blookup\(\s*"java:(global|app|module)\/.+"\s*\)/
95 # Next, look for the basic attributes that can mean either EJB 3.0 or 3.1
96 define_platform 'ejb3+' do
98 gestalt(:platform, 'java')
100 gestalt(:platform, 'ejb3.1')
101 java_keywords '@EJB', '@Stateless', '@Statefull', '@Entity', '@Remote', '@Local', '@BusinessMethod'
102 java_import /^javax\.persistence\b/
106 # Finally, if we found EJB3+ and not EJB 3.1, then you must be using EJB 3.0 only.
107 define_platform 'ejb3.0' do
109 gestalt(:platform, 'ejb3+')
110 _not { gestalt(:platform, 'ejb3.1') }
114 define_platform 'servlet' do
116 gestalt(:platform, 'java')
118 java_import /^javax\.servlet\b/
119 maven_dependency /^javax\.servlet\b/
124 define_platform 'struts' do
126 gestalt(:platform, 'java')
128 filenames('\bstruts(\-config)?\.xml$', '\bstruts\.jar$')
129 java_import /^org\.apache\.struts\b/
130 maven_dependency /^org\.apache\.struts\b/
135 define_platform 'springframework' do
137 gestalt(:platform,'java')
139 filenames('spring\.jar$')
140 java_import /^org\.springframework\b/
141 maven_dependency /^org\.springframework\b/
146 define_platform 'jsf' do
148 gestalt(:platform, 'java')
150 java_import /^javax\.faces\b/
151 maven_dependency /^javax\.faces\b/
156 define_platform 'googlewebtoolkit' do
158 gestalt(:platform, 'java')
159 java_import /^com\.google\.gwt\b/
163 # Java Persistence Frameworks
165 define_platform 'hibernate' do
167 gestalt(:platform, 'java')
169 filenames '\bhibernate\d\.jar$'
170 java_import /^org\.hibernate\b/
171 maven_dependency 'org.hibernate'
176 define_platform 'jpa' do
178 gestalt(:platform, 'java')
179 java_import /^javax\.persistence\b/
183 define_platform 'toplink' do
185 gestalt(:platform, 'java')
186 java_import /^oracle\.toplink\b/
190 define_platform 'castor' do
192 gestalt(:platform, 'java')
193 java_import /^org\.exolab\.castor\b/
197 define_platform 'db4o' do
199 gestalt(:platform, 'java')
200 java_import /^com\.db4o\b/
204 # Java Enterprise Service Buses
206 define_platform 'openesb' do
208 gestalt(:platform, 'java')
209 java_import /^org\.openesb\b/
213 define_platform 'muleesb' do
215 gestalt(:platform, 'java')
216 java_import /^org\.mule\b/
220 define_platform 'servicemix' do
222 gestalt(:platform, 'java')
224 java_import /^org\.apache\.servicemix\b/
225 maven_dependency /^org.apache.servicemix\b/
230 define_platform 'jbossesb' do
232 gestalt(:platform, 'java')
233 java_import /^org\.jboss\.soa\.esb\b/
237 define_platform 'openesb' do
239 gestalt(:platform, 'java')
240 java_import /^org\.openesb\b/
244 # Other Java Technologies
246 define_platform 'opensso' do
248 gestalt(:platform, 'java')
250 filenames '\bopensso\.war$'
251 java_import /^com\.sun\.identity\.(authentication|agents)\b/
256 define_platform 'maven' do
258 gestalt(:platform, 'java')
259 find_filenames /\bpom\.xml$/