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

-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

#-runjdb: 8000
#-runtrace: true

-resolve.effective: resolve, active

-runrequires: \
	osgi.identity;filter:='(osgi.identity=org.apache.aries.jax.rs.itests)',\
	osgi.identity;filter:='(osgi.identity=org.apache.felix.gogo.command)'

-runsystemcapabilities: ${native_capability}
-runproperties: \
	logback.configurationFile=${fileuri;${.}/logback.xml},\
	osgi.console=, \
	org.apache.cxf.osgi.http.transport.disable=true,\
	org.apache.felix.http.host=localhost,\
	org.osgi.service.http.port=*,\
	org.apache.aries.spifly.auto.consumers=jakarta.*,\
	org.apache.aries.spifly.auto.providers=com.sun.*

-runbundles: \
	assertj-core;version='[3.19.0,3.19.1)',\
	com.fasterxml.woodstox.woodstox-core;version='[6.2.3,6.2.4)',\
	com.sun.xml.bind.jaxb-osgi;version='[2.3.3,2.3.4)',\
	jakarta.xml.bind-api;version='[2.3.3,2.3.4)',\
	org.apache.aries.jax.rs.itests;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.cxf.cxf-core;version='[3.4.2,3.4.3)',\
	org.apache.cxf.cxf-rt-frontend-jaxrs;version='[3.4.2,3.4.3)',\
	org.apache.cxf.cxf-rt-rs-client;version='[3.4.2,3.4.3)',\
	org.apache.cxf.cxf-rt-rs-security-cors;version='[3.4.2,3.4.3)',\
	org.apache.cxf.cxf-rt-rs-sse;version='[3.4.2,3.4.3)',\
	org.apache.cxf.cxf-rt-security;version='[3.4.2,3.4.3)',\
	org.apache.cxf.cxf-rt-transports-http;version='[3.4.2,3.4.3)',\
	org.apache.felix.configadmin;version='[1.9.20,1.9.21)',\
	org.apache.felix.gogo.command;version='[1.1.2,1.1.3)',\
	org.apache.felix.gogo.runtime;version='[1.1.4,1.1.5)',\
	org.apache.felix.gogo.shell;version='[1.1.4,1.1.5)',\
	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.apache.servicemix.bundles.junit;version='[4.13.0,4.13.1)',\
	org.apache.ws.xmlschema.core;version='[2.2.5,2.2.6)',\
	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)',\
	stax2-api;version='[4.2.1,4.2.2)'

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

-include: -personal.bnd
