blob: b75b367cd5170ec2c3d0f64dda49b4f5a9639dad [file] [log] [blame]
Ray Milkey3275ae82018-05-29 15:35:36 -07001"""
2 Copyright 2018-present Open Networking Foundation
3
4 Licensed under the Apache License, Version 2.0 (the "License");
5 you may not use this file except in compliance with the License.
6 You may obtain a copy of the License at
7
8 http://www.apache.org/licenses/LICENSE-2.0
9
10 Unless required by applicable law or agreed to in writing, software
11 distributed under the License is distributed on an "AS IS" BASIS,
12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 See the License for the specific language governing permissions and
14 limitations under the License.
15"""
16
Ray Milkey7dac7da2017-08-01 16:56:05 -070017load("//tools/build/bazel:generate_workspace.bzl", "COMPILE", "TEST")
18load("//tools/build/bazel:variables.bzl", "ONOS_VERSION")
19load("//tools/build/bazel:generate_test_rules.bzl", "generate_test_rules")
Ray Milkeyb7949e72018-06-19 18:31:02 -070020load("//tools/build/bazel:checkstyle.bzl", "checkstyle_test")
Ray Milkey7dac7da2017-08-01 16:56:05 -070021
Ray Milkey32ea35c2018-06-06 15:28:07 -070022def _all_java_sources():
Ray Milkey0bcdfd12018-05-23 14:07:19 -070023 return native.glob(["src/main/java/**/*.java"])
Ray Milkey7dac7da2017-08-01 16:56:05 -070024
Ray Milkey32ea35c2018-06-06 15:28:07 -070025def _all_java_test_sources():
Ray Milkey0bcdfd12018-05-23 14:07:19 -070026 return native.glob(["src/test/java/**/*.java"])
Ray Milkey7dac7da2017-08-01 16:56:05 -070027
Ray Milkey32ea35c2018-06-06 15:28:07 -070028def _all_test_resources():
Ray Milkey0bcdfd12018-05-23 14:07:19 -070029 return native.glob(["src/test/resources/**"])
Ray Milkey7dac7da2017-08-01 16:56:05 -070030
Ray Milkey32ea35c2018-06-06 15:28:07 -070031def _all_resources(resources_root):
Ray Milkey0bcdfd12018-05-23 14:07:19 -070032 if resources_root == None:
33 return native.glob(["src/main/resources/**"])
34 else:
35 return native.glob([resources_root + "**"])
Ray Milkey7dac7da2017-08-01 16:56:05 -070036
Ray Milkey25747d82018-06-13 14:12:51 -070037def _webapp():
Ray Milkey6b3775a2018-06-28 11:18:44 -070038 return native.glob(["src/main/webapp/WEB-INF/web.xml"])
39
40def _include_resources_to_string(include_resources):
41 result = ""
42 for (path, filename) in include_resources.items():
43 result += (path + "=" + filename)
44 return result
Ray Milkey25747d82018-06-13 14:12:51 -070045
Ray Milkey275af2c2018-06-15 13:05:08 -070046"""
47 Implementation of the rule to call bnd to make an OSGI jar file
48"""
Ray Milkey6b3775a2018-06-28 11:18:44 -070049
Ray Milkey7dac7da2017-08-01 16:56:05 -070050def _bnd_impl(ctx):
Ray Milkey3275ae82018-05-29 15:35:36 -070051 if (len(ctx.files.source) == 1):
52 input_file = ctx.files.source[0]
53 else:
54 # this is a list of inputs. The one we want is the last one
55 # in the list that isn't a source jar
56 for file in reversed(ctx.files.source):
57 if ("-src" in file.path):
58 continue
59 else:
60 input_file = file
61 break
62
63 jar = input_file.path
Ray Milkey0bcdfd12018-05-23 14:07:19 -070064 output = ctx.outputs.osgi_jar.path
Thomas Vachuska8e022a92018-07-10 14:47:38 -070065 name = ctx.attr.name
Ray Milkey275af2c2018-06-15 13:05:08 -070066 group = ctx.attr.group
Ray Milkey0bcdfd12018-05-23 14:07:19 -070067 version = ctx.attr.version
68 license = ""
Ray Milkey12ae6ca2018-06-11 15:34:30 -070069 import_packages = ctx.attr.import_packages
Ray Milkey0bcdfd12018-05-23 14:07:19 -070070 exportPackages = "*"
Ray Milkey6b3775a2018-06-28 11:18:44 -070071 include_resources = ctx.attr.include_resources
Ray Milkey25747d82018-06-13 14:12:51 -070072 web_context = ctx.attr.web_context
73 if web_context == None or web_context == "":
74 web_context = "NONE"
75 web_xml = ctx.attr.web_xml
Ray Milkey0bcdfd12018-05-23 14:07:19 -070076 dynamicimportPackages = ""
Ray Milkey3275ae82018-05-29 15:35:36 -070077 cp = ""
Ray Milkey7dac7da2017-08-01 16:56:05 -070078
Ray Milkey3275ae82018-05-29 15:35:36 -070079 inputDependencies = [input_file]
Ray Milkey7dac7da2017-08-01 16:56:05 -070080
Ray Milkey0bcdfd12018-05-23 14:07:19 -070081 # determine the dependencies and build the class path
82 for dep in ctx.attr.deps:
Ray Milkey25b785a2018-06-12 09:59:14 -070083 if java_common.provider in dep:
84 file = dep.files.to_list()[0]
Ray Milkey472d8392018-05-23 17:06:51 -070085
Ray Milkey25b785a2018-06-12 09:59:14 -070086 if cp:
87 cp += ":"
88 cp += file.path
89 inputDependencies = inputDependencies + [file]
Ray Milkey7dac7da2017-08-01 16:56:05 -070090
Ray Milkey0bcdfd12018-05-23 14:07:19 -070091 # extract the class files for use by bnd
Ray Milkey3275ae82018-05-29 15:35:36 -070092 classes = ctx.actions.declare_file("classes" + ctx.label.name.replace("/", "-"))
Ray Milkey0bcdfd12018-05-23 14:07:19 -070093 classesPath = classes.path
94 jarCommand = "mkdir -p %s && cp %s %s && cd %s && jar xf *.jar" % (classesPath, jar, classesPath, classesPath)
95 ctx.actions.run_shell(
96 inputs = inputDependencies,
97 outputs = [classes],
98 command = jarCommand,
99 progress_message = "Expanding jar file: %s" % jar,
100 )
101 inputDependencies += [classes]
Ray Milkey25747d82018-06-13 14:12:51 -0700102 web_xml_root_path = ""
103 if len(web_xml) != 0:
104 web_xml_root = web_xml[0].files.to_list()[0]
105 inputDependencies += [web_xml_root]
106 web_xml_root_path = web_xml_root.path.replace("WEB-INF/web.xml", "")
Ray Milkey7dac7da2017-08-01 16:56:05 -0700107
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700108 # call bnd to make the OSGI jar file
109 arguments = [
110 jar,
111 output,
112 cp,
113 name,
114 group,
115 version,
116 license,
Ray Milkey12ae6ca2018-06-11 15:34:30 -0700117 import_packages,
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700118 exportPackages,
Ray Milkey6b3775a2018-06-28 11:18:44 -0700119 include_resources,
Ray Milkey25747d82018-06-13 14:12:51 -0700120 web_context,
121 web_xml_root_path,
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700122 dynamicimportPackages,
123 classesPath,
124 ]
Ray Milkey12ae6ca2018-06-11 15:34:30 -0700125
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700126 ctx.actions.run(
127 inputs = inputDependencies,
128 outputs = [ctx.outputs.osgi_jar],
129 arguments = arguments,
130 progress_message = "Running bnd wrapper on: %s" % ctx.attr.name,
131 executable = ctx.executable._bnd_exe,
132 )
Ray Milkey7dac7da2017-08-01 16:56:05 -0700133
Ray Milkey25b785a2018-06-12 09:59:14 -0700134 deps = []
135 if java_common.provider in ctx.attr.source:
136 deps.append(ctx.attr.source[java_common.provider])
137 deps_provider = java_common.merge(deps)
138 return struct(
Ray Milkey15053f02018-06-13 10:00:45 -0700139 providers = [deps_provider],
Ray Milkey25b785a2018-06-12 09:59:14 -0700140 )
141
Ray Milkey275af2c2018-06-15 13:05:08 -0700142"""
143 Rule definition for calling bnd to make an OSGi jar file.
144"""
Ray Milkey32ea35c2018-06-06 15:28:07 -0700145_bnd = rule(
Ray Milkey7dac7da2017-08-01 16:56:05 -0700146 attrs = {
147 "deps": attr.label_list(),
148 "version": attr.string(),
Ray Milkey275af2c2018-06-15 13:05:08 -0700149 "group": attr.string(),
Ray Milkey3275ae82018-05-29 15:35:36 -0700150 "source": attr.label(),
Ray Milkey12ae6ca2018-06-11 15:34:30 -0700151 "import_packages": attr.string(),
Ray Milkey25747d82018-06-13 14:12:51 -0700152 "web_context": attr.string(),
153 "web_xml": attr.label_list(allow_files = True),
Ray Milkey6b3775a2018-06-28 11:18:44 -0700154 "include_resources": attr.string(),
Ray Milkey7dac7da2017-08-01 16:56:05 -0700155 "_bnd_exe": attr.label(
156 executable = True,
157 cfg = "host",
158 allow_files = True,
159 default = Label("//utils/osgiwrap:osgi-jar"),
160 ),
161 },
162 fragments = ["java"],
163 outputs = {
164 "osgi_jar": "lib%{name}.jar",
165 },
166 implementation = _bnd_impl,
167)
168
Ray Milkey275af2c2018-06-15 13:05:08 -0700169"""
170 Implementation of the rule to call swagger generator to create the registrator java class source
171"""
Ray Milkey6b3775a2018-06-28 11:18:44 -0700172
Ray Milkey275af2c2018-06-15 13:05:08 -0700173def _swagger_java_impl(ctx):
174 api_title = ctx.attr.api_title
175 api_version = ctx.attr.api_version
176 api_description = ctx.attr.api_description
177 api_package = ctx.attr.api_package
178 web_context = ctx.attr.web_context
179
180 output_java = ctx.outputs.swagger_java.path
Ray Milkey6b3775a2018-06-28 11:18:44 -0700181 output_dir = output_java[:output_java.find("generated-sources")]
Ray Milkey275af2c2018-06-15 13:05:08 -0700182
183 package_name = ctx.attr.package_name
184
185 srcs_arg = ""
186 resources_arg = ""
187 input_dependencies = []
188
189 for file in ctx.files.srcs:
190 srcs_arg += file.path + ","
191 input_dependencies.append(file)
192
193 for resource in resources_arg:
194 resources_arg += resource.path + ","
195
196 # call swagger generator to make the swagger JSON and java files
197 arguments = [
198 srcs_arg,
199 resources_arg,
200 "",
201 package_name + "/src/main/resources",
202 output_dir,
203 output_dir,
204 web_context,
205 api_title,
206 api_version,
207 api_package,
208 api_description,
209 ]
210
211 ctx.actions.run(
212 inputs = ctx.files.srcs,
213 outputs = [ctx.outputs.swagger_java],
214 arguments = arguments,
215 progress_message = "Running swagger generator on: %s" % ctx.attr.name,
216 executable = ctx.executable._swagger_generator_exe,
217 )
218
219"""
220Implementation of the rule to call swagger generator for swagger.json file
221"""
Ray Milkey6b3775a2018-06-28 11:18:44 -0700222
Ray Milkey275af2c2018-06-15 13:05:08 -0700223def _swagger_json_impl(ctx):
224 api_title = ctx.attr.api_title
225 api_version = ctx.attr.api_version
226 api_description = ctx.attr.api_description
227 api_package = ctx.attr.api_package
228 web_context = ctx.attr.web_context
229
230 output_json = ctx.outputs.swagger_json.path
231 output_dir = output_json[:output_json.find("swagger.json")]
232
233 package_name = ctx.attr.package_name
234
235 srcs_arg = ""
236 resources_arg = ""
237 input_dependencies = []
238
239 for file in ctx.files.srcs:
240 srcs_arg += file.path + ","
241 input_dependencies.append(file)
242
243 for resource in resources_arg:
244 resources_arg += resource.path + ","
245
246 # call swagger generator to make the swagger JSON and java files
247 arguments = [
248 srcs_arg,
249 resources_arg,
250 "",
251 package_name + "/src/main/resources",
252 output_dir,
253 output_dir,
254 web_context,
255 api_title,
256 api_version,
257 api_package,
258 api_description,
259 ]
260
261 ctx.actions.run(
262 inputs = ctx.files.srcs,
263 outputs = [ctx.outputs.swagger_json],
264 arguments = arguments,
265 progress_message = "Running swagger generator on: %s" % ctx.attr.name,
266 executable = ctx.executable._swagger_generator_exe,
267 )
268
269"""
270 Rule definition to call swagger generator to create the registrator java class source
271"""
272_swagger_java = rule(
273 attrs = {
274 "srcs": attr.label_list(allow_files = True),
275 "package_name": attr.string(),
276 "api_title": attr.string(),
277 "api_version": attr.string(),
278 "api_description": attr.string(),
279 "api_package": attr.string(),
280 "web_context": attr.string(),
281 "_swagger_generator_exe": attr.label(
282 executable = True,
283 cfg = "host",
284 allow_files = True,
285 default = Label("//tools/build/buck-plugin:swagger_generator"),
286 ),
287 "swagger_java": attr.output(),
288 },
289 fragments = ["java"],
290 implementation = _swagger_java_impl,
291)
292
293"""
294 Rule definition to call swagger generator to create the swagger JSON
295"""
296_swagger_json = rule(
297 attrs = {
298 "srcs": attr.label_list(allow_files = True),
299 "package_name": attr.string(),
300 "api_title": attr.string(),
301 "api_version": attr.string(),
302 "api_description": attr.string(),
303 "api_package": attr.string(),
304 "web_context": attr.string(),
305 "_swagger_generator_exe": attr.label(
306 executable = True,
307 cfg = "host",
308 allow_files = True,
309 default = Label("//tools/build/buck-plugin:swagger_generator"),
310 ),
311 "swagger_json": attr.output(),
312 },
313 fragments = ["java"],
314 implementation = _swagger_json_impl,
315)
316
317"""
318 Converts a jar file to an OSGI compatible jar file.
319
320 Args:
321 name: name of the rule to create the OSGI jar file - required
322 jar: jar file to convert - required target
323 deps: dependencies needed by the jar file - required list of targets
324 version: Version of the generated jar file. Optional, defaults to the current ONOS version
325 group: Maven group ID for the resulting jar file. Optional, defaults to 'org.onosproject'
326 import_packages: OSGI import list. Optional, comma separated list, defaults to "*"
327 visibility: Visibility of the produced jar file to other BUILDs. Optional, defaults to private
328"""
Ray Milkey6b3775a2018-06-28 11:18:44 -0700329
Ray Milkey25747d82018-06-13 14:12:51 -0700330def wrapped_osgi_jar(
331 name,
332 jar,
333 deps,
334 version = ONOS_VERSION,
Ray Milkey275af2c2018-06-15 13:05:08 -0700335 group = "org.onosproject",
Ray Milkey25747d82018-06-13 14:12:51 -0700336 import_packages = "*",
Ray Milkey25747d82018-06-13 14:12:51 -0700337 visibility = ["//visibility:private"]):
338 _bnd(
339 name = name,
340 source = jar,
341 deps = deps,
342 version = version,
Ray Milkey275af2c2018-06-15 13:05:08 -0700343 group = group,
Ray Milkey25747d82018-06-13 14:12:51 -0700344 visibility = visibility,
345 import_packages = import_packages,
Ray Milkey275af2c2018-06-15 13:05:08 -0700346 web_xml = None,
Ray Milkey25747d82018-06-13 14:12:51 -0700347 )
Ray Milkey7dac7da2017-08-01 16:56:05 -0700348
Ray Milkey275af2c2018-06-15 13:05:08 -0700349"""
350 Creates an OSGI jar and test jar file from a set of source and test files.
351 See osgi_jar() for a description of shared parameters.
352 Args:
353 test_srcs: Test source file(s) to compile. Optional list of targets, defaults to src/test/java/**/*.java
354 test_deps: Dependencies for the test jar. Optional list of targets, defaults to a common set of dependencies
355 test_resources: Resources to include in the test jar. Optional list of targets, defaults to src/test/resources/**
356 exclude_tests: Tests that should not be run. Useful for excluding things like test files without any @Test methods.
357 Optional ist of targets, defaults to []
358"""
Ray Milkey6b3775a2018-06-28 11:18:44 -0700359
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700360def osgi_jar_with_tests(
361 name = None,
362 deps = None,
363 test_deps = None,
Ray Milkey275af2c2018-06-15 13:05:08 -0700364 group = "org.onosproject",
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700365 srcs = None,
366 resources_root = None,
367 resources = None,
Ray Milkey6b3775a2018-06-28 11:18:44 -0700368 include_resources = {},
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700369 test_srcs = None,
370 exclude_tests = None,
371 test_resources = None,
372 visibility = ["//visibility:public"],
Ray Milkey12ae6ca2018-06-11 15:34:30 -0700373 version = ONOS_VERSION,
Ray Milkey25747d82018-06-13 14:12:51 -0700374 web_context = None,
375 api_title = "",
376 api_version = "",
377 api_description = "",
378 api_package = "",
Ray Milkey15053f02018-06-13 10:00:45 -0700379 import_packages = None):
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700380 if name == None:
381 name = "onos-" + native.package_name().replace("/", "-")
Ray Milkey7dac7da2017-08-01 16:56:05 -0700382 if srcs == None:
Ray Milkey32ea35c2018-06-06 15:28:07 -0700383 srcs = _all_java_sources()
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700384 if resources == None:
Ray Milkey32ea35c2018-06-06 15:28:07 -0700385 resources = _all_resources(resources_root)
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700386 if test_srcs == None:
Ray Milkey32ea35c2018-06-06 15:28:07 -0700387 test_srcs = _all_java_test_sources()
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700388 if test_resources == None:
Ray Milkey32ea35c2018-06-06 15:28:07 -0700389 test_resources = _all_test_resources()
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700390 if exclude_tests == None:
391 exclude_tests = []
Ray Milkey7dac7da2017-08-01 16:56:05 -0700392 if deps == None:
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700393 deps = COMPILE
394 if test_deps == None:
395 test_deps = TEST
Ray Milkey12ae6ca2018-06-11 15:34:30 -0700396 if import_packages == None:
397 import_packages = "*"
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700398 tests_name = name + "-tests"
399 tests_jar_deps = list(depset(deps + test_deps)) + [name]
400 all_test_deps = tests_jar_deps + [tests_name]
Ray Milkey25747d82018-06-13 14:12:51 -0700401 web_xml = _webapp()
Ray Milkey7dac7da2017-08-01 16:56:05 -0700402
Ray Milkey275af2c2018-06-15 13:05:08 -0700403 native_srcs = srcs
404 native_resources = resources
Ray Milkey6b3775a2018-06-28 11:18:44 -0700405 if web_context != None and api_title != "" and len(resources) != 0:
Ray Milkey275af2c2018-06-15 13:05:08 -0700406 # generate Swagger files if needed
407 _swagger_java(
408 name = name + "_swagger_java",
409 srcs = srcs + resources,
410 package_name = native.package_name(),
411 api_title = api_title,
412 api_version = api_version,
413 api_description = api_description,
414 web_context = web_context,
415 api_package = api_package,
416 swagger_java = ("src/main/resources/apidoc/generated-sources/" +
Ray Milkey6b3775a2018-06-28 11:18:44 -0700417 api_package.replace(".", "/") +
418 "/ApiDocRegistrator.java").replace("//", "/"),
Ray Milkey275af2c2018-06-15 13:05:08 -0700419 )
420 _swagger_json(
421 name = name + "_swagger_json",
422 srcs = srcs + resources,
423 package_name = native.package_name(),
424 api_title = api_title,
425 api_version = api_version,
426 api_description = api_description,
427 web_context = web_context,
428 api_package = api_package,
429 swagger_json = "src/main/resources/apidoc/swagger.json",
430 )
431 native_resources = []
432 for r in resources:
Ray Milkey6b3775a2018-06-28 11:18:44 -0700433 if not "definitions" in r:
Ray Milkey275af2c2018-06-15 13:05:08 -0700434 native_resources.append(r)
Ray Milkey6b3775a2018-06-28 11:18:44 -0700435 native_srcs = srcs + [name + "_swagger_java"]
436 native_resources.append(name + "_swagger_json")
Ray Milkey275af2c2018-06-15 13:05:08 -0700437
Ray Milkey25747d82018-06-13 14:12:51 -0700438 # compile the Java code
Ray Milkey275af2c2018-06-15 13:05:08 -0700439 native.java_library(name = name + "-native", srcs = native_srcs, resources = native_resources, deps = deps, visibility = visibility)
Ray Milkey25747d82018-06-13 14:12:51 -0700440
Ray Milkey32ea35c2018-06-06 15:28:07 -0700441 _bnd(
Ray Milkey25b785a2018-06-12 09:59:14 -0700442 name = name,
443 source = name + "-native",
Ray Milkey32ea35c2018-06-06 15:28:07 -0700444 deps = deps,
445 version = version,
Ray Milkey275af2c2018-06-15 13:05:08 -0700446 group = group,
Ray Milkey32ea35c2018-06-06 15:28:07 -0700447 visibility = visibility,
Ray Milkey12ae6ca2018-06-11 15:34:30 -0700448 import_packages = import_packages,
Ray Milkey25747d82018-06-13 14:12:51 -0700449 web_context = web_context,
450 web_xml = web_xml,
Ray Milkey6b3775a2018-06-28 11:18:44 -0700451 include_resources = _include_resources_to_string(include_resources),
Ray Milkey32ea35c2018-06-06 15:28:07 -0700452 )
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700453 if test_srcs != []:
454 native.java_library(
455 name = tests_name,
456 srcs = test_srcs,
457 resources = test_resources,
458 deps = tests_jar_deps,
459 visibility = visibility,
460 )
Ray Milkey7dac7da2017-08-01 16:56:05 -0700461
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700462 generate_test_rules(
463 name = name + "-tests-gen",
464 test_files = test_srcs,
465 exclude_tests = exclude_tests,
466 deps = all_test_deps,
467 )
468
Ray Milkeyb7949e72018-06-19 18:31:02 -0700469 checkstyle_test(
470 name = name + "_checkstyle_test",
471 srcs = srcs,
472 )
473
Ray Milkey275af2c2018-06-15 13:05:08 -0700474"""
475 Creates an OSGI jar file from a set of source files.
476
477 Args:
478 name: Name of the rule to generate. Optional, defaults to a name based on the location in the source tree.
479 For example apps/mcast/app becomes onos-apps-mcast-app
480 deps: Dependencies of the generated jar file. Expressed as a list of targets
481 import_packages: OSGI import list. Optional, comma separated list, defaults to "*"
482 group: Maven group ID for the resulting jar file. Optional, defaults to 'org.onosproject'
483 srcs: Source file(s) to compile. Optional list of targets, defaults to src/main/java/**/*.java
484 resources_root: Relative path to the root of the tree of resources for this jar. Optional, defaults to src/main/resources
485 resources: Resources to include in the jar file. Optional list of targets, defaults to all files beneath resources_root
486 visibility: Visibility of the produced jar file to other BUILDs. Optional, defaults to public
487 version: Version of the generated jar file. Optional, defaults to the current ONOS version
488 web_context: Web context for a WAB file if needed. Only needed if the jar file provides a REST API. Optional string
489 api_title: Swagger API title. Optional string, only used if the jar file provides a REST API and has swagger annotations
490 api_version: Swagger API version. Optional string, only used if the jar file provides a REST API and has swagger annotations
491 api_description: Swagger API description. Optional string, only used if the jar file provides a REST API and has swagger annotations
492 api_package: Swagger API package name. Optional string, only used if the jar file provides a REST API and has swagger annotations
493"""
Ray Milkey6b3775a2018-06-28 11:18:44 -0700494
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700495def osgi_jar(
496 name = None,
497 deps = None,
Ray Milkey12ae6ca2018-06-11 15:34:30 -0700498 import_packages = None,
Ray Milkey275af2c2018-06-15 13:05:08 -0700499 group = "org.onosproject",
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700500 srcs = None,
501 resources_root = None,
502 resources = None,
Ray Milkey6b3775a2018-06-28 11:18:44 -0700503 include_resources = {},
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700504 visibility = ["//visibility:public"],
Ray Milkey12ae6ca2018-06-11 15:34:30 -0700505 version = ONOS_VERSION,
Ray Milkey25747d82018-06-13 14:12:51 -0700506 web_context = None,
Ray Milkey12ae6ca2018-06-11 15:34:30 -0700507 api_title = "",
508 api_version = "",
509 api_description = "",
Ray Milkey15053f02018-06-13 10:00:45 -0700510 api_package = ""):
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700511 if srcs == None:
Ray Milkey32ea35c2018-06-06 15:28:07 -0700512 srcs = _all_java_sources()
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700513 if deps == None:
514 deps = COMPILE
515
516 osgi_jar_with_tests(
517 name = name,
518 deps = deps,
519 test_deps = [],
Ray Milkey275af2c2018-06-15 13:05:08 -0700520 group = group,
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700521 srcs = srcs,
522 resources = resources,
523 resources_root = resources_root,
524 test_srcs = [],
525 exclude_tests = [],
526 test_resources = [],
527 visibility = visibility,
528 version = version,
Ray Milkey12ae6ca2018-06-11 15:34:30 -0700529 import_packages = import_packages,
Ray Milkey275af2c2018-06-15 13:05:08 -0700530 api_title = api_title,
531 api_version = api_version,
532 api_description = api_description,
533 api_package = api_package,
Ray Milkey25747d82018-06-13 14:12:51 -0700534 web_context = web_context,
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700535 )