blob: f3bb9fb14d29cc28e28836140e300ad9022d136f [file] [log] [blame]
#
# Copyright 2017-present Open Networking Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Bucklet to create Java Code from XSD using the 'xjc' tool from the JAXB API v2.
# The genrule() creates the Java code, zips it and puts it in the output of jaxb2-xjc
# The osgi_jar_with_tests() takes the sources in this ZIP and adds them to what ever
# sources were used in the call to this method, and compiles all of them and adds
# them to a JAR file in the output folder
include_defs('//onos.defs')
include_defs('//bucklets/onos.bucklet')
def _get_name():
base_path = get_base_path()
return ONOS_ARTIFACT_BASE + base_path.replace('/', '-') #TODO Unix-separator
def jaxb2_xjc_osgi_jar(
name,
srcs,
xsd,
bindinfo=None,
destdir='.',
deps=[],
test_deps=[],
visibility = [],
**kwargs
):
if name is None:
name = _get_name()
cmd = 'xjc '+xsd
if bindinfo is not None:
cmd=cmd+' -b '+bindinfo
cmd=cmd+' -d '+destdir
genrule(
name = 'jaxb2-xjc',
srcs = glob(['src/main/resources/*.xsd','src/main/resources/*.xjb']),
bash = cmd + ' && zip $OUT -r *',
out = name+'.src.zip',
visibility = [ ],
)
osgi_jar_with_tests (
deps = [":jaxb2-xjc"] + deps,
srcs = [':jaxb2-xjc'] + srcs,
test_deps = test_deps,
do_javadocs = False,
do_checkstyle = False,
**kwargs
)