blob: becc270122d8ac04059a8939bc06c095edc98bfc [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,
Thomas Vachuskaf8c8cb92018-07-11 17:12:43 -0700368 resource_jars = [],
Ray Milkey6b3775a2018-06-28 11:18:44 -0700369 include_resources = {},
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700370 test_srcs = None,
371 exclude_tests = None,
372 test_resources = None,
373 visibility = ["//visibility:public"],
Ray Milkey12ae6ca2018-06-11 15:34:30 -0700374 version = ONOS_VERSION,
Ray Milkey25747d82018-06-13 14:12:51 -0700375 web_context = None,
376 api_title = "",
377 api_version = "",
378 api_description = "",
379 api_package = "",
Ray Milkey15053f02018-06-13 10:00:45 -0700380 import_packages = None):
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700381 if name == None:
382 name = "onos-" + native.package_name().replace("/", "-")
Ray Milkey7dac7da2017-08-01 16:56:05 -0700383 if srcs == None:
Ray Milkey32ea35c2018-06-06 15:28:07 -0700384 srcs = _all_java_sources()
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700385 if resources == None:
Ray Milkey32ea35c2018-06-06 15:28:07 -0700386 resources = _all_resources(resources_root)
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700387 if test_srcs == None:
Ray Milkey32ea35c2018-06-06 15:28:07 -0700388 test_srcs = _all_java_test_sources()
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700389 if test_resources == None:
Ray Milkey32ea35c2018-06-06 15:28:07 -0700390 test_resources = _all_test_resources()
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700391 if exclude_tests == None:
392 exclude_tests = []
Ray Milkey7dac7da2017-08-01 16:56:05 -0700393 if deps == None:
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700394 deps = COMPILE
395 if test_deps == None:
396 test_deps = TEST
Ray Milkey12ae6ca2018-06-11 15:34:30 -0700397 if import_packages == None:
398 import_packages = "*"
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700399 tests_name = name + "-tests"
400 tests_jar_deps = list(depset(deps + test_deps)) + [name]
401 all_test_deps = tests_jar_deps + [tests_name]
Ray Milkey25747d82018-06-13 14:12:51 -0700402 web_xml = _webapp()
Ray Milkey7dac7da2017-08-01 16:56:05 -0700403
Ray Milkey275af2c2018-06-15 13:05:08 -0700404 native_srcs = srcs
405 native_resources = resources
Ray Milkey6b3775a2018-06-28 11:18:44 -0700406 if web_context != None and api_title != "" and len(resources) != 0:
Ray Milkey275af2c2018-06-15 13:05:08 -0700407 # generate Swagger files if needed
408 _swagger_java(
409 name = name + "_swagger_java",
410 srcs = srcs + resources,
411 package_name = native.package_name(),
412 api_title = api_title,
413 api_version = api_version,
414 api_description = api_description,
415 web_context = web_context,
416 api_package = api_package,
417 swagger_java = ("src/main/resources/apidoc/generated-sources/" +
Ray Milkey6b3775a2018-06-28 11:18:44 -0700418 api_package.replace(".", "/") +
419 "/ApiDocRegistrator.java").replace("//", "/"),
Ray Milkey275af2c2018-06-15 13:05:08 -0700420 )
421 _swagger_json(
422 name = name + "_swagger_json",
423 srcs = srcs + resources,
424 package_name = native.package_name(),
425 api_title = api_title,
426 api_version = api_version,
427 api_description = api_description,
428 web_context = web_context,
429 api_package = api_package,
430 swagger_json = "src/main/resources/apidoc/swagger.json",
431 )
432 native_resources = []
433 for r in resources:
Ray Milkey6b3775a2018-06-28 11:18:44 -0700434 if not "definitions" in r:
Ray Milkey275af2c2018-06-15 13:05:08 -0700435 native_resources.append(r)
Ray Milkey6b3775a2018-06-28 11:18:44 -0700436 native_srcs = srcs + [name + "_swagger_java"]
437 native_resources.append(name + "_swagger_json")
Ray Milkey275af2c2018-06-15 13:05:08 -0700438
Ray Milkey25747d82018-06-13 14:12:51 -0700439 # compile the Java code
Thomas Vachuskaf8c8cb92018-07-11 17:12:43 -0700440 if len(resource_jars) > 0:
441 native.java_library(name = name + "-native", srcs = native_srcs, resource_jars = resource_jars,
442 deps = deps, visibility = visibility)
443 else:
444 native.java_library(name = name + "-native", srcs = native_srcs, resources = native_resources,
445 deps = deps, visibility = visibility)
Ray Milkey25747d82018-06-13 14:12:51 -0700446
Ray Milkey32ea35c2018-06-06 15:28:07 -0700447 _bnd(
Ray Milkey25b785a2018-06-12 09:59:14 -0700448 name = name,
449 source = name + "-native",
Ray Milkey32ea35c2018-06-06 15:28:07 -0700450 deps = deps,
451 version = version,
Ray Milkey275af2c2018-06-15 13:05:08 -0700452 group = group,
Ray Milkey32ea35c2018-06-06 15:28:07 -0700453 visibility = visibility,
Ray Milkey12ae6ca2018-06-11 15:34:30 -0700454 import_packages = import_packages,
Ray Milkey25747d82018-06-13 14:12:51 -0700455 web_context = web_context,
456 web_xml = web_xml,
Ray Milkey6b3775a2018-06-28 11:18:44 -0700457 include_resources = _include_resources_to_string(include_resources),
Ray Milkey32ea35c2018-06-06 15:28:07 -0700458 )
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700459 if test_srcs != []:
460 native.java_library(
461 name = tests_name,
462 srcs = test_srcs,
463 resources = test_resources,
464 deps = tests_jar_deps,
465 visibility = visibility,
466 )
Ray Milkey7dac7da2017-08-01 16:56:05 -0700467
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700468 generate_test_rules(
469 name = name + "-tests-gen",
470 test_files = test_srcs,
471 exclude_tests = exclude_tests,
472 deps = all_test_deps,
473 )
474
Ray Milkeyb7949e72018-06-19 18:31:02 -0700475 checkstyle_test(
476 name = name + "_checkstyle_test",
477 srcs = srcs,
478 )
479
Ray Milkey275af2c2018-06-15 13:05:08 -0700480"""
481 Creates an OSGI jar file from a set of source files.
482
483 Args:
484 name: Name of the rule to generate. Optional, defaults to a name based on the location in the source tree.
485 For example apps/mcast/app becomes onos-apps-mcast-app
486 deps: Dependencies of the generated jar file. Expressed as a list of targets
487 import_packages: OSGI import list. Optional, comma separated list, defaults to "*"
488 group: Maven group ID for the resulting jar file. Optional, defaults to 'org.onosproject'
489 srcs: Source file(s) to compile. Optional list of targets, defaults to src/main/java/**/*.java
490 resources_root: Relative path to the root of the tree of resources for this jar. Optional, defaults to src/main/resources
491 resources: Resources to include in the jar file. Optional list of targets, defaults to all files beneath resources_root
492 visibility: Visibility of the produced jar file to other BUILDs. Optional, defaults to public
493 version: Version of the generated jar file. Optional, defaults to the current ONOS version
494 web_context: Web context for a WAB file if needed. Only needed if the jar file provides a REST API. Optional string
495 api_title: Swagger API title. Optional string, only used if the jar file provides a REST API and has swagger annotations
496 api_version: Swagger API version. Optional string, only used if the jar file provides a REST API and has swagger annotations
497 api_description: Swagger API description. Optional string, only used if the jar file provides a REST API and has swagger annotations
498 api_package: Swagger API package name. Optional string, only used if the jar file provides a REST API and has swagger annotations
499"""
Ray Milkey6b3775a2018-06-28 11:18:44 -0700500
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700501def osgi_jar(
502 name = None,
503 deps = None,
Ray Milkey12ae6ca2018-06-11 15:34:30 -0700504 import_packages = None,
Ray Milkey275af2c2018-06-15 13:05:08 -0700505 group = "org.onosproject",
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700506 srcs = None,
507 resources_root = None,
508 resources = None,
Thomas Vachuskaf8c8cb92018-07-11 17:12:43 -0700509 resource_jars = [],
Ray Milkey6b3775a2018-06-28 11:18:44 -0700510 include_resources = {},
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700511 visibility = ["//visibility:public"],
Ray Milkey12ae6ca2018-06-11 15:34:30 -0700512 version = ONOS_VERSION,
Ray Milkey25747d82018-06-13 14:12:51 -0700513 web_context = None,
Ray Milkey12ae6ca2018-06-11 15:34:30 -0700514 api_title = "",
515 api_version = "",
516 api_description = "",
Ray Milkey15053f02018-06-13 10:00:45 -0700517 api_package = ""):
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700518 if srcs == None:
Ray Milkey32ea35c2018-06-06 15:28:07 -0700519 srcs = _all_java_sources()
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700520 if deps == None:
521 deps = COMPILE
522
523 osgi_jar_with_tests(
524 name = name,
525 deps = deps,
526 test_deps = [],
Ray Milkey275af2c2018-06-15 13:05:08 -0700527 group = group,
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700528 srcs = srcs,
529 resources = resources,
530 resources_root = resources_root,
Thomas Vachuskaf8c8cb92018-07-11 17:12:43 -0700531 resource_jars = resource_jars,
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700532 test_srcs = [],
533 exclude_tests = [],
534 test_resources = [],
535 visibility = visibility,
536 version = version,
Ray Milkey12ae6ca2018-06-11 15:34:30 -0700537 import_packages = import_packages,
Ray Milkey275af2c2018-06-15 13:05:08 -0700538 api_title = api_title,
539 api_version = api_version,
540 api_description = api_description,
541 api_package = api_package,
Ray Milkey25747d82018-06-13 14:12:51 -0700542 web_context = web_context,
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700543 )