#    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.

-standalone: true
-runpath: \
	ch.qos.logback.classic,\
	ch.qos.logback.core,\
	org.apache.felix.logback,\
	slf4j.api
-runsystempackages: \
	org.slf4j;version=${slf4j.version},\
	org.slf4j.event;version=${slf4j.version},\
	org.slf4j.helpers;version=${slf4j.version},\
	org.slf4j.spi;version=${slf4j.version}

-runfw: org.eclipse.osgi

-resolve.effective: resolve, active

-runrequires: \
	osgi.identity;filter:='(osgi.identity=org.apache.aries.jax.rs.openapi.resource)',\
	osgi.identity;filter:='(osgi.identity=org.apache.aries.jax.rs.openapi.itest)'

-runsystemcapabilities: ${native_capability}
-runproperties: \
	logback.configurationFile=file:${.}/logback.xml,\
	osgi.console=, \
	org.apache.felix.http.host=localhost,\
	org.osgi.service.http.port=*

-runbundles: \
	com.fasterxml.jackson.core.jackson-annotations;version='[2.10.1,2.10.2)',\
	com.fasterxml.jackson.core.jackson-core;version='[2.10.1,2.10.2)',\
	com.fasterxml.jackson.core.jackson-databind;version='[2.10.1,2.10.2)',\
	com.fasterxml.jackson.dataformat.jackson-dataformat-yaml;version='[2.10.1,2.10.2)',\
	com.fasterxml.jackson.datatype.jackson-datatype-jsr310;version='[2.10.1,2.10.2)',\
	io.github.classgraph.classgraph;version='[4.6.32,4.6.33)',\
	io.swagger.core.v3.swagger-annotations;version='[2.1.0,2.1.1)',\
	io.swagger.core.v3.swagger-core;version='[2.1.0,2.1.1)',\
	io.swagger.core.v3.swagger-integration;version='[2.1.0,2.1.1)',\
	io.swagger.core.v3.swagger-jaxrs2;version='[2.1.0,2.1.1)',\
	io.swagger.core.v3.swagger-models;version='[2.1.0,2.1.1)',\
	jakarta.xml.bind-api;version='[2.3.3,2.3.4)',\
	javax.validation.api;version='[1.1.0,1.1.1)',\
	org.apache.aries.jax.rs.openapi.itest;version='[2.0.0,2.0.1)',\
	org.apache.aries.jax.rs.openapi.resource;version='[2.0.0,2.0.1)',\
	org.apache.aries.jax.rs.whiteboard;version='[2.0.0,2.0.1)',\
	org.apache.aries.spifly.dynamic.framework.extension;version='[1.3.2,1.3.3)',\
	org.apache.commons.lang3;version='[3.11.0,3.11.1)',\
	org.apache.felix.configadmin;version='[1.9.20,1.9.21)',\
	org.apache.felix.http.jetty;version='[4.1.4,4.1.5)',\
	org.apache.felix.http.servlet-api;version='[1.1.2,1.1.3)',\
	org.apache.geronimo.specs.geronimo-annotation_1.3_spec;version='[1.3.0,1.3.1)',\
	org.apache.geronimo.specs.geronimo-jaxrs_2.1_spec;version='[1.1.0,1.1.1)',\
	org.osgi.service.jaxrs;version='[1.0.0,1.0.1)',\
	org.osgi.util.function;version='[1.1.0,1.1.1)',\
	org.osgi.util.promise;version='[1.1.1,1.1.2)',\
	org.yaml.snakeyaml;version='[1.24.0,1.24.1)',\
	osgi.enroute.hamcrest.wrapper;version='[1.3.0,1.3.1)',\
	osgi.enroute.junit.wrapper;version='[4.12.0,4.12.1)'

-runstartlevel: \
	order=sortbynameversion,\
	begin=-1

-include: -personal.bnd
