Merge pull request #41 from blackducksw/ubuntu_14
[ohcount] / ruby / gestalt / java_definitions.rb
1 module Ohcount
2         module Gestalt
3
4                 # Java Application Servers
5
6                 define_platform 'glassfish' do
7                         _and do
8                                 gestalt(:platform, 'java')
9                                 _or do
10                                         find_filenames /\b(sun\-web|sun\-ejb\-jar|sun\-application(\-client))\.xml\b/
11                                         maven_dependency /^org.glassfish\b/
12                                 end
13                         end
14                 end
15
16                 define_platform 'jboss' do
17                         _and do
18                                 gestalt(:platform, 'java')
19                                 _or do
20                                         find_filenames /\bjboss(\-app|cmp\-jdbc|\-web|\-build|\-client)\.xml\b/
21                                         maven_dependency /^org.jboss\b/
22                                 end
23                         end
24                 end
25
26                 define_platform 'weblogic' do
27                         _and do
28                                 gestalt(:platform, 'java')
29                                 _or do
30                                         find_filenames /\bweblogic(\-ejb\-jar|\-ra|\-application|\-cmp\-rdbms\jar)\.xml\b/
31                                         maven_plugin /^org\.codehaus\.mojo\b/, /^weblogic\-maven\-plugin\b/
32                                 end
33                         end
34                 end
35
36                 define_platform 'jonas' do
37                         _and do
38                                 gestalt(:platform, 'java')
39                                 find_filenames /\bjonas\-ejb\-jar\.xml\b/
40                         end
41                 end
42
43                 define_platform 'websphere' do
44                         _and do
45                                 gestalt(:platform, 'java')
46                                 find_filenames /\bibm\-(application|web|webservices|webservicesclient)\-.+\.xmi$/
47                         end
48                 end
49
50                 define_platform 'tomcat' do
51                         _and do
52                                 gestalt(:platform, 'java')
53                                 _or do
54                                         java_import /^org\.apache\.tomcat\b/
55                                         maven_dependency /^org\.apache\.tomcat\b/
56                                 end
57                         end
58                 end
59
60                 define_platform 'appserver' do
61                         _or 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')
68                         end
69                 end
70
71                 define_platform 'ejb2' do
72                         _and do
73                                 gestalt(:platform, 'java')
74                                 _or do
75                                         find_filenames /(.+\-)ejb\-jar\.xml\b/
76                                         java_keywords 'EJBHome', 'EJBRemote', 'SessionBean'
77                                 end
78                         end
79                 end
80
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.
83                 #
84                 # First, look for the subset of new features that definitely indicate EJB 3.1
85                 define_platform 'ejb3.1' do
86                         _and do
87                                 gestalt(:platform, 'java')
88                                 _or do
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*\)/
92                                 end
93                         end
94                 end
95                 # Next, look for the basic attributes that can mean either EJB 3.0 or 3.1
96                 define_platform 'ejb3+' do
97                         _and do
98                                 gestalt(:platform, 'java')
99                                 _or do
100                                         gestalt(:platform, 'ejb3.1')
101                                         java_keywords '@EJB', '@Stateless', '@Statefull', '@Entity', '@Remote', '@Local', '@BusinessMethod'
102                                         java_import /^javax\.persistence\b/
103                                 end
104                         end
105                 end
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
108                         _and do
109                                 gestalt(:platform, 'ejb3+')
110                                 _not { gestalt(:platform, 'ejb3.1') }
111                         end
112                 end
113
114                 define_platform 'servlet' do
115                         _and do
116                                 gestalt(:platform, 'java')
117                                 _or do
118                                         java_import /^javax\.servlet\b/
119                                         maven_dependency /^javax\.servlet\b/
120                                 end
121                         end
122                 end
123
124                 define_platform 'struts' do
125                         _and do
126                                 gestalt(:platform, 'java')
127                                 _or do
128                                         filenames('\bstruts(\-config)?\.xml$', '\bstruts\.jar$')
129                                         java_import /^org\.apache\.struts\b/
130                                         maven_dependency /^org\.apache\.struts\b/
131                                 end
132                         end
133                 end
134
135     define_platform 'springframework' do
136       _and do
137         gestalt(:platform,'java')
138                                 _or do
139                                         filenames('spring\.jar$')
140                                         java_import /^org\.springframework\b/
141                                         maven_dependency /^org\.springframework\b/
142                                 end
143       end
144     end
145
146                 define_platform 'jsf' do
147                         _and do
148                                 gestalt(:platform, 'java')
149                                 _or do
150                                         java_import /^javax\.faces\b/
151                                         maven_dependency /^javax\.faces\b/
152                                 end
153                         end
154                 end
155
156                 define_platform 'googlewebtoolkit' do
157                         _and do
158                                 gestalt(:platform, 'java')
159                                 java_import /^com\.google\.gwt\b/
160                         end
161                 end
162
163                 # Java Persistence Frameworks
164
165                 define_platform 'hibernate' do
166                         _and do
167                                 gestalt(:platform, 'java')
168                                 _or do
169                                         filenames '\bhibernate\d\.jar$'
170                                         java_import /^org\.hibernate\b/
171                                         maven_dependency 'org.hibernate'
172                                 end
173                         end
174                 end
175
176                 define_platform 'jpa' do
177                         _and do
178                                 gestalt(:platform, 'java')
179                                 java_import /^javax\.persistence\b/
180                         end
181                 end
182
183                 define_platform 'toplink' do
184                         _and do
185                                 gestalt(:platform, 'java')
186                                 java_import /^oracle\.toplink\b/
187                         end
188                 end
189
190                 define_platform 'castor' do
191                         _and do
192                                 gestalt(:platform, 'java')
193                                 java_import /^org\.exolab\.castor\b/
194                         end
195                 end
196
197                 define_platform 'db4o' do
198                         _and do
199                                 gestalt(:platform, 'java')
200                                 java_import /^com\.db4o\b/
201                         end
202                 end
203
204                 # Java Enterprise Service Buses
205
206                 define_platform 'openesb' do
207                         _and do
208                                 gestalt(:platform, 'java')
209                                 java_import /^org\.openesb\b/
210                         end
211                 end
212
213                 define_platform 'muleesb' do
214                         _and do
215                                 gestalt(:platform, 'java')
216                                 java_import /^org\.mule\b/
217                         end
218                 end
219
220                 define_platform 'servicemix' do
221                         _and do
222                                 gestalt(:platform, 'java')
223                                 _or do
224                                         java_import /^org\.apache\.servicemix\b/
225                                         maven_dependency /^org.apache.servicemix\b/
226                                 end
227                         end
228                 end
229
230                 define_platform 'jbossesb' do
231                         _and do
232                                 gestalt(:platform, 'java')
233                                 java_import /^org\.jboss\.soa\.esb\b/
234                         end
235                 end
236
237                 define_platform 'openesb' do
238                         _and do
239                                 gestalt(:platform, 'java')
240                                 java_import /^org\.openesb\b/
241                         end
242                 end
243
244                 # Other Java Technologies
245
246                 define_platform 'opensso' do
247                         _and do
248                                 gestalt(:platform, 'java')
249                                 _or do
250                                         filenames '\bopensso\.war$'
251                                         java_import /^com\.sun\.identity\.(authentication|agents)\b/
252                                 end
253                         end
254                 end
255
256                 define_platform 'maven' do
257                         _and do
258                                 gestalt(:platform, 'java')
259                                 find_filenames /\bpom\.xml$/
260                         end
261                 end
262
263         end
264 end