4.0.0 org.apache.felix felix-parent 9 ../../pom/pom.xml Apache Felix Http Jetty This is an implementation of the R8.1 OSGi Servlet Service, the R7 OSGi Http Service and the R7 OSGi Http Whiteboard Specification org.apache.felix.http.jetty12 1.0.4 bundle scm:git:https://github.com/apache/felix-dev.git scm:git:https://github.com/apache/felix-dev.git https://gitbox.apache.org/repos/asf?p=felix-dev.git org.apache.felix.http.jetty12-1.0.4 17 12.0.8 true 4.13.3 -Xmx512M org.codehaus.gmaven groovy-maven-plugin 2.1.1 groovy-magic prepare-package execute if (artifact.getArtifactHandler().isAddedToClasspath() && !org.apache.maven.artifact.Artifact.SCOPE_TEST.equals( artifact.getScope() ) && !"org.eclipse.jetty.websocket".equals(artifact.getGroupId()) // skip the optional websocket artifacts && !"org.eclipse.jetty.ee10.websocket".equals(artifact.getGroupId()) // skip the optional websocket artifacts && !"jetty-annotations".equals(artifact.getArtifactId()) // skip the transitive artifacts from the optional websocket artifacts && !"jetty-plus".equals(artifact.getArtifactId()) && !"jetty-webapp".equals(artifact.getArtifactId())) { def jar; try { jar = new java.util.jar.JarFile(artifact.file) jar.stream().each() { entry -> if (!entry.isDirectory() && entry.name.startsWith("META-INF/services/")) { // check if we already have a file with this name def svcFile = new File(slDir, entry.name) def svcSet = new LinkedHashSet(); if (svcFile.exists()) { // found existing file, so load the items from the existing file so we can merge svcFile.eachLine { className -> className = className.trim(); if (!className.isEmpty()) { svcSet.add(className); } } } // read the content of the found entry def lineReader; try { lineReader = new BufferedReader(new InputStreamReader(jar.getInputStream(entry), java.nio.charset.StandardCharsets.UTF_8)); def className; while ( ( className = lineReader.readLine() ) != null ) { className = className.trim(); if (!className.isEmpty()) { svcSet.add(className); } } } finally { // cleanup if (lineReader != null) { lineReader.close() } } // write the merged data to the output file if (!svcSet.isEmpty()) { // make any missing folders svcFile.getParentFile().mkdirs(); svcFile.withWriter('utf-8') { writer -> svcSet.each() { item -> writer.writeLine item; } // finish up with a blank line writer.println(); } } } } } finally { // cleanup if (jar != null) { jar.close(); } } } } ]]> org.apache.felix maven-bundle-plugin 5.1.9 true ${project.artifactId} ${project.version} ${jetty.version} org.apache.felix.http.jetty.internal.JettyActivator org.osgi.service.http, org.osgi.service.http.context, org.osgi.service.http.runtime, org.osgi.service.http.runtime.dto, org.osgi.service.http.whiteboard, org.osgi.service.servlet.context, org.osgi.service.servlet.runtime, org.osgi.service.servlet.runtime.dto, org.osgi.service.servlet.whiteboard, org.eclipse.jetty.alpn.server, org.eclipse.jetty.http.*, org.eclipse.jetty.http2.*, org.eclipse.jetty.io.*, org.eclipse.jetty.jmx.*, org.eclipse.jetty.security.*, org.eclipse.jetty.session.*, org.eclipse.jetty.server.*, org.eclipse.jetty.util.*, !org.eclipse.jetty.ee10.websocket.*, org.eclipse.jetty.ee10.servlet.*, org.apache.felix.http.jetty, org.apache.felix.http.jakartawrappers, org.apache.felix.http.javaxwrappers org.apache.felix.http.base.*, org.apache.felix.http.jetty.*, org.eclipse.jetty.version org.apache.commons.* sun.misc;resolution:=optional, sun.nio.ch;resolution:=optional, javax.imageio;resolution:=optional, javax.sql;resolution:=optional, org.ietf.jgss;resolution:=optional, org.osgi.service.cm;resolution:=optional;version="[1.3,2)", org.osgi.service.event;resolution:=optional;version="[1.2,2)", org.osgi.service.log;resolution:=optional;version="[1.3,2)", org.osgi.service.metatype;resolution:=optional;version="[1.1,2)", org.osgi.service.useradmin;resolution:=optional;version="[1.1,2)", org.osgi.service.http;version="[1.2.1,1.3)", org.osgi.service.http.context;version="[1.1,1.2)", org.osgi.service.http.runtime;version="[1.1,1.2)", org.osgi.service.http.runtime.dto;version="[1.1,1.2)", org.slf4j;version="[1.0,3.0)", * org.osgi.service.cm;version="[1.3,2)", org.osgi.service.event;version="[1.2,2)", org.osgi.service.log;version="[1.3,2)", org.osgi.service.metatype;version="[1.4,2)" osgi.implementation;osgi.implementation="osgi.http";version:Version="1.1"; uses:="javax.servlet,javax.servlet.http,org.osgi.service.http.context,org.osgi.service.http.whiteboard", osgi.implementation;osgi.implementation="osgi.http";version:Version="2.0"; uses:="jakarta.servlet,jakarta.servlet.http,org.osgi.service.servlet.context,org.osgi.service.servlet.whiteboard", osgi.service;objectClass:List<String>="org.osgi.service.servlet.runtime.HttpServiceRuntime"; uses:="org.osgi.service.servlet.runtime,org.osgi.service.servlet.runtime.dto", osgi.service;objectClass:List<String>="org.osgi.service.http.runtime.HttpServiceRuntime"; uses:="org.osgi.service.http.runtime,org.osgi.service.http.runtime.dto", osgi.service;objectClass:List<String>="org.osgi.service.http.HttpService"; uses:="org.osgi.service.http", osgi.serviceloader;osgi.serviceloader="org.eclipse.jetty.http.HttpFieldPreEncoder" osgi.contract;filter:="(&(osgi.contract=JavaServlet)(version=4.0))", osgi.contract;filter:="(&(osgi.contract=JakartaServlet)(version=6.0))", osgi.extender;filter:="(osgi.extender=osgi.serviceloader.registrar)";resolution:=optional, osgi.extender;filter:="(osgi.extender=osgi.serviceloader.processor)";resolution:=optional, osgi.serviceloader;filter:="(osgi.serviceloader=org.eclipse.jetty.http.HttpFieldPreEncoder)";resolution:=optional;cardinality:=multiple, osgi.serviceloader;filter:="(osgi.serviceloader=org.eclipse.jetty.io.ssl.ALPNProcessor$Server)";resolution:=optional;cardinality:=multiple {maven-resources},${project.build.directory}/serviceloader-resources <_removeheaders> Private-Package,Conditional-Package,Include-Resource bundle package bundle baseline baseline light-bundle bundle light ${project.name} Light ${project.artifactId}.light foo org.osgi.service.http, org.osgi.service.http.context, org.osgi.service.http.runtime, org.osgi.service.http.runtime.dto, org.osgi.service.http.whiteboard, !org.osgi.service.servlet.*, org.apache.felix.http.jetty, org.apache.felix.http.javaxwrappers, org.apache.felix.http.jakartawrappers org.apache.felix.http.base.*, org.apache.felix.http.jetty.*, org.osgi.service.servlet.* org.osgi.service.cm;resolution:=optional;version="[1.3,2)", org.osgi.service.event;resolution:=optional;version="[1.2,2)", org.osgi.service.log;resolution:=optional;version="[1.3,2)", org.osgi.service.metatype;resolution:=optional;version="[1.4,2)", org.osgi.service.useradmin;resolution:=optional;version="[1.1,2)", org.osgi.service.http;version="[1.2.1,1.3)", org.osgi.service.http.context;version="[1.1,1.2)", org.osgi.service.http.runtime;version="[1.1,1.2)", org.osgi.service.http.runtime.dto;version="[1.1,1.2)", * osgi.implementation;osgi.implementation="osgi.http";version:Version="1.1"; uses:="javax.servlet,javax.servlet.http,org.osgi.service.http.context,org.osgi.service.http.whiteboard", osgi.implementation;osgi.implementation="osgi.http";version:Version="2.0"; uses:="jakarta.servlet,jakarta.servlet.http,org.osgi.service.servlet.context,org.osgi.service.servlet.whiteboard", osgi.service;objectClass:List<String>="org.osgi.service.servlet.runtime.HttpServiceRuntime"; uses:="org.osgi.service.servlet.runtime,org.osgi.service.servlet.runtime.dto", osgi.service;objectClass:List<String>="org.osgi.service.http.runtime.HttpServiceRuntime"; uses:="org.osgi.service.http.runtime,org.osgi.service.http.runtime.dto", osgi.service;objectClass:List<String>="org.osgi.service.http.HttpService"; uses:="org.osgi.service.http" osgi.contract;filter:="(&(osgi.contract=JavaServlet)(version=4.0))", osgi.contract;filter:="(&(osgi.contract=JakartaServlet)(version=6.0))" {maven-resources} <_removeheaders> X-Jetty-Version,Private-Package,Conditional-Package,Include-Resource with-jetty-ee10-websockets bundle with-jetty-ee10-websockets ${project.artifactId} ${project.version} ${jetty.version} org.apache.felix.http.jetty.internal.JettyActivator org.osgi.service.http, org.osgi.service.http.context, org.osgi.service.http.runtime, org.osgi.service.http.runtime.dto, org.osgi.service.http.whiteboard, org.osgi.service.servlet.context, org.osgi.service.servlet.runtime, org.osgi.service.servlet.runtime.dto, org.osgi.service.servlet.whiteboard, org.eclipse.jetty.alpn.server, org.eclipse.jetty.http.*, org.eclipse.jetty.http2.*, org.eclipse.jetty.io.*, org.eclipse.jetty.jmx.*, org.eclipse.jetty.security.*, org.eclipse.jetty.session.*, org.eclipse.jetty.server.*, org.eclipse.jetty.util.*, org.eclipse.jetty.ee10.servlet.*, !org.eclipse.jetty.ee10.websocket.jakarta.*, org.eclipse.jetty.ee10.websocket.*, org.eclipse.jetty.websocket.*, org.apache.felix.http.jetty, org.apache.felix.http.jakartawrappers, org.apache.felix.http.javaxwrappers org.apache.felix.http.base.*, org.apache.felix.http.jetty.*, org.eclipse.jetty.version org.apache.commons.* org.eclipse.jetty.client;resolution:=optional, sun.misc;resolution:=optional, sun.nio.ch;resolution:=optional, javax.imageio;resolution:=optional, javax.sql;resolution:=optional, org.ietf.jgss;resolution:=optional, org.osgi.service.cm;resolution:=optional;version="[1.3,2)", org.osgi.service.event;resolution:=optional;version="[1.2,2)", org.osgi.service.log;resolution:=optional;version="[1.3,2)", org.osgi.service.metatype;resolution:=optional;version="[1.1,2)", org.osgi.service.useradmin;resolution:=optional;version="[1.1,2)", org.osgi.service.http;version="[1.2.1,1.3)", org.osgi.service.http.context;version="[1.1,1.2)", org.osgi.service.http.runtime;version="[1.1,1.2)", org.osgi.service.http.runtime.dto;version="[1.1,1.2)", org.slf4j;version="[1.0,3.0)", * org.osgi.service.cm;version="[1.3,2)", org.osgi.service.event;version="[1.2,2)", org.osgi.service.log;version="[1.3,2)", org.osgi.service.metatype;version="[1.4,2)" osgi.implementation;osgi.implementation="osgi.http";version:Version="1.1"; uses:="javax.servlet,javax.servlet.http,org.osgi.service.http.context,org.osgi.service.http.whiteboard", osgi.implementation;osgi.implementation="osgi.http";version:Version="2.0"; uses:="jakarta.servlet,jakarta.servlet.http,org.osgi.service.servlet.context,org.osgi.service.servlet.whiteboard", osgi.service;objectClass:List<String>="org.osgi.service.servlet.runtime.HttpServiceRuntime"; uses:="org.osgi.service.servlet.runtime,org.osgi.service.servlet.runtime.dto", osgi.service;objectClass:List<String>="org.osgi.service.http.runtime.HttpServiceRuntime"; uses:="org.osgi.service.http.runtime,org.osgi.service.http.runtime.dto", osgi.service;objectClass:List<String>="org.osgi.service.http.HttpService"; uses:="org.osgi.service.http", osgi.serviceloader;osgi.serviceloader="org.eclipse.jetty.http.HttpFieldPreEncoder" osgi.contract;filter:="(&(osgi.contract=JavaServlet)(version=4.0))", osgi.contract;filter:="(&(osgi.contract=JakartaServlet)(version=6.0))", osgi.extender;filter:="(osgi.extender=osgi.serviceloader.registrar)";resolution:=optional, osgi.extender;filter:="(osgi.extender=osgi.serviceloader.processor)";resolution:=optional, osgi.serviceloader;filter:="(osgi.serviceloader=org.eclipse.jetty.http.HttpFieldPreEncoder)";resolution:=optional;cardinality:=multiple, osgi.serviceloader;filter:="(osgi.serviceloader=org.eclipse.jetty.io.ssl.ALPNProcessor$Server)";resolution:=optional;cardinality:=multiple {maven-resources},${project.build.directory}/serviceloader-resources <_removeheaders> Private-Package,Conditional-Package,Include-Resource with-jakarta-ee10-websockets bundle with-jakarta-ee10-websockets ${project.artifactId} ${project.version} ${jetty.version} org.apache.felix.http.jetty.internal.JettyActivator org.osgi.service.http, org.osgi.service.http.context, org.osgi.service.http.runtime, org.osgi.service.http.runtime.dto, org.osgi.service.http.whiteboard, org.osgi.service.servlet.context, org.osgi.service.servlet.runtime, org.osgi.service.servlet.runtime.dto, org.osgi.service.servlet.whiteboard, org.eclipse.jetty.alpn.server, org.eclipse.jetty.http.*, org.eclipse.jetty.http2.*, org.eclipse.jetty.io.*, org.eclipse.jetty.jmx.*, org.eclipse.jetty.security.*, org.eclipse.jetty.session.*, org.eclipse.jetty.server.*, org.eclipse.jetty.util.*, !org.eclipse.jetty.ee10.websocket.server.*, !org.eclipse.jetty.ee10.websocket.servlet.*, org.eclipse.jetty.ee10.websocket.jakarta.*, org.eclipse.jetty.ee10.servlet.*, org.eclipse.jetty.websocket.*, org.apache.felix.http.jetty, org.apache.felix.http.jakartawrappers, org.apache.felix.http.javaxwrappers org.apache.felix.http.base.*, org.apache.felix.http.jetty.*, org.eclipse.jetty.version org.apache.commons.* org.eclipse.jetty.client;resolution:=optional, sun.misc;resolution:=optional, sun.nio.ch;resolution:=optional, javax.imageio;resolution:=optional, javax.sql;resolution:=optional, org.ietf.jgss;resolution:=optional, org.osgi.service.cm;resolution:=optional;version="[1.3,2)", org.osgi.service.event;resolution:=optional;version="[1.2,2)", org.osgi.service.log;resolution:=optional;version="[1.3,2)", org.osgi.service.metatype;resolution:=optional;version="[1.1,2)", org.osgi.service.useradmin;resolution:=optional;version="[1.1,2)", org.osgi.service.http;version="[1.2.1,1.3)", org.osgi.service.http.context;version="[1.1,1.2)", org.osgi.service.http.runtime;version="[1.1,1.2)", org.osgi.service.http.runtime.dto;version="[1.1,1.2)", org.slf4j;version="[1.0,3.0)", * org.osgi.service.cm;version="[1.3,2)", org.osgi.service.event;version="[1.2,2)", org.osgi.service.log;version="[1.3,2)", org.osgi.service.metatype;version="[1.4,2)" osgi.implementation;osgi.implementation="osgi.http";version:Version="1.1"; uses:="javax.servlet,javax.servlet.http,org.osgi.service.http.context,org.osgi.service.http.whiteboard", osgi.implementation;osgi.implementation="osgi.http";version:Version="2.0"; uses:="jakarta.servlet,jakarta.servlet.http,org.osgi.service.servlet.context,org.osgi.service.servlet.whiteboard", osgi.service;objectClass:List<String>="org.osgi.service.servlet.runtime.HttpServiceRuntime"; uses:="org.osgi.service.servlet.runtime,org.osgi.service.servlet.runtime.dto", osgi.service;objectClass:List<String>="org.osgi.service.http.runtime.HttpServiceRuntime"; uses:="org.osgi.service.http.runtime,org.osgi.service.http.runtime.dto", osgi.service;objectClass:List<String>="org.osgi.service.http.HttpService"; uses:="org.osgi.service.http", osgi.serviceloader;osgi.serviceloader="org.eclipse.jetty.http.HttpFieldPreEncoder" osgi.contract;filter:="(&(osgi.contract=JavaServlet)(version=4.0))", osgi.contract;filter:="(&(osgi.contract=JakartaServlet)(version=6.0))", osgi.extender;filter:="(osgi.extender=osgi.serviceloader.registrar)";resolution:=optional, osgi.extender;filter:="(osgi.extender=osgi.serviceloader.processor)";resolution:=optional, osgi.serviceloader;filter:="(osgi.serviceloader=org.eclipse.jetty.http.HttpFieldPreEncoder)";resolution:=optional;cardinality:=multiple, osgi.serviceloader;filter:="(osgi.serviceloader=org.eclipse.jetty.io.ssl.ALPNProcessor$Server)";resolution:=optional;cardinality:=multiple {maven-resources},${project.build.directory}/serviceloader-resources <_removeheaders> Private-Package,Conditional-Package,Include-Resource maven-surefire-plugin true org.apache.maven.plugins maven-failsafe-plugin integration-test integration-test integration-test verify integration-test verify true ${jetty.version} ${basedir}/target/${project.build.finalName}.jar ${pax.vm.options} javax.servlet javax.servlet-api 3.1.0 provided org.osgi osgi.core 6.0.0 provided org.osgi org.osgi.service.cm 1.5.0 provided org.osgi org.osgi.service.event 1.3.1 provided org.osgi org.osgi.service.metatype 1.4.0 provided org.osgi org.osgi.service.useradmin 1.1.0 provided org.eclipse.jetty.ee10 jetty-ee10-servlet ${jetty.version} org.eclipse.jetty jetty-server ${jetty.version} org.eclipse.jetty jetty-util ${jetty.version} org.eclipse.jetty jetty-util-ajax ${jetty.version} org.eclipse.jetty jetty-jmx ${jetty.version} org.eclipse.jetty jetty-security ${jetty.version} org.eclipse.jetty.http2 jetty-http2-server ${jetty.version} org.eclipse.jetty.http2 jetty-http2-common ${jetty.version} org.eclipse.jetty.http2 jetty-http2-hpack ${jetty.version} org.eclipse.jetty jetty-alpn-server ${jetty.version} org.eclipse.jetty.ee10.websocket jetty-ee10-websocket-jakarta-server ${jetty.version} true org.eclipse.jetty.ee10.websocket jetty-ee10-websocket-jetty-server ${jetty.version} true org.eclipse.jetty.websocket jetty-websocket-jetty-server ${jetty.version} true org.eclipse.jetty jetty-session ${jetty.version} org.osgi org.osgi.service.servlet 2.0.0 provided org.osgi org.osgi.service.http 1.2.1 provided org.osgi org.osgi.service.http.whiteboard 1.1.0 provided org.apache.felix org.apache.felix.http.base 5.1.8 org.apache.felix org.apache.felix.http.wrappers 1.1.2 commons-fileupload commons-fileupload 1.5 true commons-io commons-io 2.11.0 junit junit 4.13.2 test org.mockito mockito-core 5.7.0 test org.osgi org.osgi.service.log 1.3.0 test org.apache.felix org.apache.felix.framework 7.0.5 test javax.inject javax.inject 1 test org.ops4j.pax.exam pax-exam ${org.ops4j.pax.exam.version} test org.ops4j.pax.exam pax-exam-cm ${org.ops4j.pax.exam.version} test org.ops4j.pax.exam pax-exam-container-forked ${org.ops4j.pax.exam.version} test org.ops4j.pax.exam pax-exam-junit4 ${org.ops4j.pax.exam.version} test org.ops4j.pax.exam pax-exam-link-mvn ${org.ops4j.pax.exam.version} test org.eclipse.jetty jetty-client ${jetty.version} test org.eclipse.jetty.websocket jetty-websocket-jetty-client ${jetty.version} test org.awaitility awaitility 4.2.1 test org.slf4j slf4j-simple 2.0.13 test