diff --git a/graphql-java-kickstart/bnd.bnd b/graphql-java-kickstart/bnd.bnd new file mode 100644 index 00000000..12cde62d --- /dev/null +++ b/graphql-java-kickstart/bnd.bnd @@ -0,0 +1 @@ +Export-Package: graphql.kickstart.* diff --git a/graphql-java-kickstart/build.gradle b/graphql-java-kickstart/build.gradle index cf44bc07..72dc7c6f 100644 --- a/graphql-java-kickstart/build.gradle +++ b/graphql-java-kickstart/build.gradle @@ -1,3 +1,9 @@ +apply plugin: 'biz.aQute.bnd.builder' + +jar { + bndfile = 'bnd.bnd' +} + dependencies { // GraphQL compile "com.graphql-java:graphql-java:$LIB_GRAPHQL_JAVA_VER" diff --git a/graphql-java-servlet/bnd.bnd b/graphql-java-servlet/bnd.bnd new file mode 100644 index 00000000..070b4e21 --- /dev/null +++ b/graphql-java-servlet/bnd.bnd @@ -0,0 +1,2 @@ +Export-Package: graphql.kickstart.* +Require-Capability: osgi.extender diff --git a/graphql-java-servlet/build.gradle b/graphql-java-servlet/build.gradle index c50fe2cd..9c1c794d 100644 --- a/graphql-java-servlet/build.gradle +++ b/graphql-java-servlet/build.gradle @@ -10,7 +10,7 @@ apply plugin: 'java-library-distribution' apply plugin: 'biz.aQute.bnd.builder' jar { - bnd ('Require-Capability': 'osgi.extender') + bndfile = 'bnd.bnd' } dependencies { @@ -24,7 +24,9 @@ dependencies { compileOnly 'org.osgi:org.osgi.core:6.0.0' compileOnly 'org.osgi:org.osgi.service.cm:1.5.0' compileOnly 'org.osgi:org.osgi.service.component:1.3.0' - compileOnly 'biz.aQute.bnd:biz.aQute.bndlib:4.3.1' + compileOnly 'org.osgi:org.osgi.service.component.annotations:1.3.0' + compileOnly 'org.osgi:org.osgi.service.metatype.annotations:1.3.0' + compileOnly 'org.osgi:org.osgi.annotation:6.0.0' testCompile 'io.github.graphql-java:graphql-java-annotations:5.2' diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/OsgiGraphQLHttpServlet.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/OsgiGraphQLHttpServlet.java index a6b5a087..2826a017 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/OsgiGraphQLHttpServlet.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/OsgiGraphQLHttpServlet.java @@ -3,13 +3,13 @@ import static graphql.schema.GraphQLObjectType.newObject; import static graphql.schema.GraphQLSchema.newSchema; -import aQute.bnd.component.annotations.Activate; -import aQute.bnd.component.annotations.Component; -import aQute.bnd.component.annotations.Deactivate; -import aQute.bnd.component.annotations.Reference; -import aQute.bnd.component.annotations.ReferenceCardinality; -import aQute.bnd.component.annotations.ReferencePolicy; -import aQute.bnd.component.annotations.ReferencePolicyOption; +import org.osgi.service.component.annotations.Activate; +import org.osgi.service.component.annotations.Component; +import org.osgi.service.component.annotations.Deactivate; +import org.osgi.service.component.annotations.Reference; +import org.osgi.service.component.annotations.ReferenceCardinality; +import org.osgi.service.component.annotations.ReferencePolicy; +import org.osgi.service.component.annotations.ReferencePolicyOption; import graphql.execution.preparsed.NoOpPreparsedDocumentProvider; import graphql.execution.preparsed.PreparsedDocumentProvider; import graphql.kickstart.servlet.config.DefaultGraphQLSchemaServletProvider; @@ -38,6 +38,8 @@ import graphql.kickstart.servlet.core.GraphQLServletListener; import graphql.kickstart.servlet.input.GraphQLInvocationInputFactory; import graphql.kickstart.execution.instrumentation.NoOpInstrumentationProvider; +import org.osgi.service.metatype.annotations.Designate; + import java.util.ArrayList; import java.util.HashSet; import java.util.List; @@ -49,8 +51,9 @@ @Component( service = {javax.servlet.http.HttpServlet.class, javax.servlet.Servlet.class}, - property = {"alias=/graphql", "jmx.objectname=graphql.servlet:type=graphql"} + property = {"service.description=GraphQL HTTP Servlet"} ) +@Designate(ocd = OsgiGraphQLHttpServletConfiguration.class, factory = true) public class OsgiGraphQLHttpServlet extends AbstractGraphQLHttpServlet { private final List queryProviders = new ArrayList<>(); diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/OsgiGraphQLHttpServletConfiguration.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/OsgiGraphQLHttpServletConfiguration.java new file mode 100644 index 00000000..cdb01545 --- /dev/null +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/OsgiGraphQLHttpServletConfiguration.java @@ -0,0 +1,14 @@ +package graphql.kickstart.servlet; + +import org.osgi.service.metatype.annotations.AttributeDefinition; +import org.osgi.service.metatype.annotations.ObjectClassDefinition; + +@ObjectClassDefinition(name = "GraphQL HTTP Servlet", description = "GraphQL HTTP Servlet Configuration") +@interface OsgiGraphQLHttpServletConfiguration { + + @AttributeDefinition(name = "alias", description = "Servlet alias") + String alias() default "/graphql"; + + @AttributeDefinition(name = "jmx.objectname", description = "JMX object name") + String jmx_objectname() default "graphql.servlet:type=graphql"; +}