Skip to content

Commit 77031e5

Browse files
authored
Merge pull request #237 from benfortuna/feature/osgi-servlet-config
Feature/osgi servlet config
2 parents 4dc7ac0 + 73b4025 commit 77031e5

File tree

6 files changed

+38
-10
lines changed

6 files changed

+38
-10
lines changed

graphql-java-kickstart/bnd.bnd

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Export-Package: graphql.kickstart.*

graphql-java-kickstart/build.gradle

+6
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
apply plugin: 'biz.aQute.bnd.builder'
2+
3+
jar {
4+
bndfile = 'bnd.bnd'
5+
}
6+
17
dependencies {
28
// GraphQL
39
compile "com.graphql-java:graphql-java:$LIB_GRAPHQL_JAVA_VER"

graphql-java-servlet/bnd.bnd

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Export-Package: graphql.kickstart.*
2+
Require-Capability: osgi.extender

graphql-java-servlet/build.gradle

+4-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ apply plugin: 'java-library-distribution'
1010
apply plugin: 'biz.aQute.bnd.builder'
1111

1212
jar {
13-
bnd ('Require-Capability': 'osgi.extender')
13+
bndfile = 'bnd.bnd'
1414
}
1515

1616
dependencies {
@@ -24,7 +24,9 @@ dependencies {
2424
compileOnly 'org.osgi:org.osgi.core:6.0.0'
2525
compileOnly 'org.osgi:org.osgi.service.cm:1.5.0'
2626
compileOnly 'org.osgi:org.osgi.service.component:1.3.0'
27-
compileOnly 'biz.aQute.bnd:biz.aQute.bndlib:4.3.1'
27+
compileOnly 'org.osgi:org.osgi.service.component.annotations:1.3.0'
28+
compileOnly 'org.osgi:org.osgi.service.metatype.annotations:1.3.0'
29+
compileOnly 'org.osgi:org.osgi.annotation:6.0.0'
2830

2931
testCompile 'io.github.graphql-java:graphql-java-annotations:5.2'
3032

graphql-java-servlet/src/main/java/graphql/kickstart/servlet/OsgiGraphQLHttpServlet.java

+11-8
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@
33
import static graphql.schema.GraphQLObjectType.newObject;
44
import static graphql.schema.GraphQLSchema.newSchema;
55

6-
import aQute.bnd.component.annotations.Activate;
7-
import aQute.bnd.component.annotations.Component;
8-
import aQute.bnd.component.annotations.Deactivate;
9-
import aQute.bnd.component.annotations.Reference;
10-
import aQute.bnd.component.annotations.ReferenceCardinality;
11-
import aQute.bnd.component.annotations.ReferencePolicy;
12-
import aQute.bnd.component.annotations.ReferencePolicyOption;
6+
import org.osgi.service.component.annotations.Activate;
7+
import org.osgi.service.component.annotations.Component;
8+
import org.osgi.service.component.annotations.Deactivate;
9+
import org.osgi.service.component.annotations.Reference;
10+
import org.osgi.service.component.annotations.ReferenceCardinality;
11+
import org.osgi.service.component.annotations.ReferencePolicy;
12+
import org.osgi.service.component.annotations.ReferencePolicyOption;
1313
import graphql.execution.preparsed.NoOpPreparsedDocumentProvider;
1414
import graphql.execution.preparsed.PreparsedDocumentProvider;
1515
import graphql.kickstart.servlet.config.DefaultGraphQLSchemaServletProvider;
@@ -38,6 +38,8 @@
3838
import graphql.kickstart.servlet.core.GraphQLServletListener;
3939
import graphql.kickstart.servlet.input.GraphQLInvocationInputFactory;
4040
import graphql.kickstart.execution.instrumentation.NoOpInstrumentationProvider;
41+
import org.osgi.service.metatype.annotations.Designate;
42+
4143
import java.util.ArrayList;
4244
import java.util.HashSet;
4345
import java.util.List;
@@ -49,8 +51,9 @@
4951

5052
@Component(
5153
service = {javax.servlet.http.HttpServlet.class, javax.servlet.Servlet.class},
52-
property = {"alias=/graphql", "jmx.objectname=graphql.servlet:type=graphql"}
54+
property = {"service.description=GraphQL HTTP Servlet"}
5355
)
56+
@Designate(ocd = OsgiGraphQLHttpServletConfiguration.class, factory = true)
5457
public class OsgiGraphQLHttpServlet extends AbstractGraphQLHttpServlet {
5558

5659
private final List<GraphQLQueryProvider> queryProviders = new ArrayList<>();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package graphql.kickstart.servlet;
2+
3+
import org.osgi.service.metatype.annotations.AttributeDefinition;
4+
import org.osgi.service.metatype.annotations.ObjectClassDefinition;
5+
6+
@ObjectClassDefinition(name = "GraphQL HTTP Servlet", description = "GraphQL HTTP Servlet Configuration")
7+
@interface OsgiGraphQLHttpServletConfiguration {
8+
9+
@AttributeDefinition(name = "alias", description = "Servlet alias")
10+
String alias() default "/graphql";
11+
12+
@AttributeDefinition(name = "jmx.objectname", description = "JMX object name")
13+
String jmx_objectname() default "graphql.servlet:type=graphql";
14+
}

0 commit comments

Comments
 (0)