#    Licensed to the Apache Software Foundation (ASF) under one
#    or more contributor license agreements.  See the NOTICE file
#    distributed with this work for additional information
#    regarding copyright ownership.  The ASF licenses this file
#    to you 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.

# Keep -include instruction first because order matters
-include: ${.}/target/sources/META-INF/MANIFEST.MF

Import-Package:\
	org.apache.geronimo.osgi.registry.api;resolution:=optional,\
	*

Provide-Capability:\
	osgi.contract;\
		osgi.contract=JavaJAXRS;\
		uses:="javax.ws.rs,javax.ws.rs.client,javax.ws.rs.container,javax.ws.rs.core,javax.ws.rs.ext,javax.ws.rs.sse";\
		version:List<Version>="2.1,2,1.1"

-exportcontents: javax.ws.rs.*;version='2.1'

-includeresource:\
	lib/geronimo-osgi-locator.jar=geronimo-osgi-locator-*.jar;lib:=true

-removeheaders: Archiver-Version, Created-By, Built-By, Build-Jdk
