You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by jb...@apache.org on 2022/10/16 08:52:10 UTC
[karaf] branch karaf-4.3.x updated: [KARAF-7565] Upgrade to Pax Web 7.3.27 & Jetty 9.4.49.v20220914
This is an automated email from the ASF dual-hosted git repository.
jbonofre pushed a commit to branch karaf-4.3.x
in repository https://gitbox.apache.org/repos/asf/karaf.git
The following commit(s) were added to refs/heads/karaf-4.3.x by this push:
new 167580ae15 [KARAF-7565] Upgrade to Pax Web 7.3.27 & Jetty 9.4.49.v20220914
new feac3d28e3 Merge pull request #1645 from jbonofre/KARAF-7565
167580ae15 is described below
commit 167580ae155bd72c6acd21a8ef7c9a1230e96c41
Author: Jean-Baptiste Onofré <jb...@apache.org>
AuthorDate: Tue Oct 11 14:44:36 2022 +0200
[KARAF-7565] Upgrade to Pax Web 7.3.27 & Jetty 9.4.49.v20220914
---
.../features/standard/src/main/feature/feature.xml | 2 +-
examples/karaf-graphql-example/README.md | 98 --------------
.../karaf-graphql-example-api/pom.xml | 43 ------
.../apache/karaf/examples/graphql/api/Book.java | 54 --------
.../karaf/examples/graphql/api/BookRepository.java | 28 ----
.../graphql/api/GraphQLSchemaProvider.java | 24 ----
.../karaf-graphql-example-commands/pom.xml | 78 -----------
.../karaf/examples/graphql/commands/Query.java | 56 --------
.../karaf-graphql-example-core/pom.xml | 59 ---------
.../examples/graphql/core/BookSchemaProvider.java | 103 ---------------
.../graphql/core/InMemoryBookRepository.java | 63 ---------
.../src/main/resources/schema.graphql | 41 ------
.../karaf-graphql-example-features/pom.xml | 79 -----------
.../src/main/feature/feature.xml | 53 --------
.../karaf-graphql-example-scr-servlet/pom.xml | 75 -----------
.../graphql/servlet/ExampleGraphQLHttpServlet.java | 41 ------
.../karaf-graphql-example-websocket/pom.xml | 73 ----------
.../graphql/websocket/GraphQLWebSocketExample.java | 92 -------------
.../graphql/websocket/GraphQLWebSocketServlet.java | 49 -------
examples/karaf-graphql-example/pom.xml | 44 ------
examples/pom.xml | 1 -
.../karaf/itests/examples/GraphQLExampleTest.java | 147 ---------------------
pom.xml | 2 +-
23 files changed, 2 insertions(+), 1303 deletions(-)
diff --git a/assemblies/features/standard/src/main/feature/feature.xml b/assemblies/features/standard/src/main/feature/feature.xml
index 243becf8b0..3756e9a3be 100644
--- a/assemblies/features/standard/src/main/feature/feature.xml
+++ b/assemblies/features/standard/src/main/feature/feature.xml
@@ -903,7 +903,7 @@ org.osgi.service.http.port=8181
<feature>pax-web-war</feature>
</feature>
- <feature name="jetty" description="Transition feature for backward compatibility" version="9.4.48.v20220622">
+ <feature name="jetty" description="Transition feature for backward compatibility" version="9.4.49.v20220914">
<feature>pax-jetty</feature>
</feature>
diff --git a/examples/karaf-graphql-example/README.md b/examples/karaf-graphql-example/README.md
deleted file mode 100644
index 0019b924ae..0000000000
--- a/examples/karaf-graphql-example/README.md
+++ /dev/null
@@ -1,98 +0,0 @@
-<!--
- 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.
--->
-# Apache Karaf GraphQL example
-
-## Abstract
-
-This example shows how to use GraphQL in Karaf.
-We demonstrate how to use GraphQL with WebSockets, with a HTTP servlet and with Karaf commands.
-
-## Build
-The build uses Apache Maven. Simply use:
-
-```
-mvn clean install
-```
-
-## Deployment
-
-On a running Karaf instance, add a feature repository and then the feature:
-```
-karaf@root()> feature:repo-add mvn:org.apache.karaf.examples/karaf-graphql-example-features/LATEST/xml
-karaf@root()> feature:install karaf-graphql-example
-```
-
-## Usage
-A HTTP server will start on the configured port in Karaf (8181 by default).
-The following endpoints can be used to test the GraphQL API:
-```
-GET http://localhost:8181/graphql?query={ bookById(id:"1") { name }}
-GET http://localhost:8181/graphql?query={ bookById(id:"2") { name id authorId pageCount}}
-
-POST http://localhost:8181/graphql
-{
- "query": "mutation { addBook(name:\"Test\", pageCount:100) { name } }"
-}
-```
-
-Additionally, a `graphql:query` command will be available. It takes a single mandatory argument
-which needs to be a valid GraphQL query in the defined GraphQL schema.
-For instance:
-```
-karaf@root()> graphql:query "{books { name id pageCount }}"
-{books=[{name=Apache Karaf Cookbook, id=1, pageCount=260}, {name=Effective Java, id=2, pageCount=416}, {name=OSGi in Action, id=3, pageCount=375}]}
-
-karaf@root()> graphql:query "{bookById(id:1) { name id pageCount }}"
-{bookById={name=Apache Karaf Cookbook, id=1, pageCount=260}}
-
-karaf@root()> graphql:query "mutation { addBook(name:\"Lord of the Rings\" pageCount:100) { id name }}"
-{addBook={id=9, name=Lord of the Rings}}
-```
-
-Finally, the `karaf-graphql-example-websocket` bundle contains a WebSocket endpoint that will publish updates
-when new data is added via GraphQL. To test, execute the following cURL command:
-```
-curl --include \
- --no-buffer \
- --header "Connection: Upgrade" \
- --header "Upgrade: websocket" \
- --header "Host: localhost:8181" \
- --header "Origin: http://localhost:8181/graphql-websocket" \
- --header "Sec-WebSocket-Key: SGVsbG8sIHdvcmxkIQ==" \
- --header "Sec-WebSocket-Version: 13" \
- http://localhost:8181/graphql-websocket
-```
-You should see a similar response:
-```
-HTTP/1.1 101 Switching Protocols
-Date: Tue, 04 Oct 2022 21:07:55 GMT
-Connection: Upgrade
-Sec-WebSocket-Accept: qGEgH3En71di5rrssAZTmtRTyFk=
-Upgrade: WebSocket
-
-```
-
-Add a new book by with the GraphQL mutation (either with a POST request or Karaf command):
-```
-karaf@root()> graphql:query "mutation { addBook(name:\"Lord of the Rings\" pageCount:123) { id name }}"
-```
-and observe the update come in real time to the terminal with cURL:
-```
-{bookCreated={id=6, name=Lord of the Rings}}
-```
\ No newline at end of file
diff --git a/examples/karaf-graphql-example/karaf-graphql-example-api/pom.xml b/examples/karaf-graphql-example/karaf-graphql-example-api/pom.xml
deleted file mode 100644
index 39d59c5d10..0000000000
--- a/examples/karaf-graphql-example/karaf-graphql-example-api/pom.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
- <!--
-
- 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.
- -->
-
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.apache.karaf.examples</groupId>
- <artifactId>karaf-graphql-example</artifactId>
- <version>4.3.8-SNAPSHOT</version>
- <relativePath>../pom.xml</relativePath>
- </parent>
-
- <artifactId>karaf-graphql-example-api</artifactId>
- <name>Apache Karaf :: Examples :: GraphQL :: API</name>
- <packaging>bundle</packaging>
-
- <dependencies>
- <dependency>
- <groupId>com.graphql-java</groupId>
- <artifactId>graphql-java</artifactId>
- <version>19.2</version>
- </dependency>
- </dependencies>
-
-</project>
diff --git a/examples/karaf-graphql-example/karaf-graphql-example-api/src/main/java/org/apache/karaf/examples/graphql/api/Book.java b/examples/karaf-graphql-example/karaf-graphql-example-api/src/main/java/org/apache/karaf/examples/graphql/api/Book.java
deleted file mode 100644
index 141f7d69df..0000000000
--- a/examples/karaf-graphql-example/karaf-graphql-example-api/src/main/java/org/apache/karaf/examples/graphql/api/Book.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * 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.
- */
-package org.apache.karaf.examples.graphql.api;
-
-public class Book {
-
- private final String name;
- private final int pageCount;
- private String id;
-
- public Book(String name, int pageCount) {
- this.name = name;
- this.pageCount = pageCount;
- }
-
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- public String getName() {
- return name;
- }
-
- public int getPageCount() {
- return pageCount;
- }
-
- @Override
- public String toString() {
- return "Book{" +
- "id='" + id + '\'' +
- ", name='" + name + '\'' +
- ", pageCount=" + pageCount +
- '}';
- }
-}
\ No newline at end of file
diff --git a/examples/karaf-graphql-example/karaf-graphql-example-api/src/main/java/org/apache/karaf/examples/graphql/api/BookRepository.java b/examples/karaf-graphql-example/karaf-graphql-example-api/src/main/java/org/apache/karaf/examples/graphql/api/BookRepository.java
deleted file mode 100644
index d73355d0fa..0000000000
--- a/examples/karaf-graphql-example/karaf-graphql-example-api/src/main/java/org/apache/karaf/examples/graphql/api/BookRepository.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * 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.
- */
-package org.apache.karaf.examples.graphql.api;
-
-import java.util.Collection;
-
-public interface BookRepository {
-
- Book storeBook(Book book);
-
- Collection<Book> getBooks();
-
- Book getBookById(String id);
-}
diff --git a/examples/karaf-graphql-example/karaf-graphql-example-api/src/main/java/org/apache/karaf/examples/graphql/api/GraphQLSchemaProvider.java b/examples/karaf-graphql-example/karaf-graphql-example-api/src/main/java/org/apache/karaf/examples/graphql/api/GraphQLSchemaProvider.java
deleted file mode 100644
index 8978ec5f3f..0000000000
--- a/examples/karaf-graphql-example/karaf-graphql-example-api/src/main/java/org/apache/karaf/examples/graphql/api/GraphQLSchemaProvider.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * 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.
- */
-package org.apache.karaf.examples.graphql.api;
-
-import graphql.schema.GraphQLSchema;
-
-public interface GraphQLSchemaProvider {
-
- GraphQLSchema createSchema();
-}
diff --git a/examples/karaf-graphql-example/karaf-graphql-example-commands/pom.xml b/examples/karaf-graphql-example/karaf-graphql-example-commands/pom.xml
deleted file mode 100644
index 49801ceead..0000000000
--- a/examples/karaf-graphql-example/karaf-graphql-example-commands/pom.xml
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
- <!--
-
- 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.
- -->
-
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.apache.karaf.examples</groupId>
- <artifactId>karaf-graphql-example</artifactId>
- <version>4.3.8-SNAPSHOT</version>
- <relativePath>../pom.xml</relativePath>
- </parent>
-
- <artifactId>karaf-graphql-example-commands</artifactId>
- <name>Apache Karaf :: Examples :: GraphQL :: Shell Commands</name>
- <packaging>bundle</packaging>
-
- <dependencies>
- <dependency>
- <groupId>org.apache.karaf.shell</groupId>
- <artifactId>org.apache.karaf.shell.core</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>com.graphql-java</groupId>
- <artifactId>graphql-java</artifactId>
- <version>19.2</version>
- </dependency>
- <dependency>
- <groupId>org.osgi</groupId>
- <artifactId>org.osgi.service.component.annotations</artifactId>
- <version>1.4.0</version>
- </dependency>
- <dependency>
- <groupId>org.apache.karaf.examples</groupId>
- <artifactId>karaf-graphql-example-api</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.osgi</groupId>
- <artifactId>osgi.annotation</artifactId>
- <version>8.0.0</version>
- <scope>provided</scope>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.felix</groupId>
- <artifactId>maven-bundle-plugin</artifactId>
- <configuration>
- <instructions>
- <Karaf-Commands>*</Karaf-Commands>
- </instructions>
- </configuration>
- </plugin>
- </plugins>
- </build>
-
-</project>
diff --git a/examples/karaf-graphql-example/karaf-graphql-example-commands/src/main/java/org/apache/karaf/examples/graphql/commands/Query.java b/examples/karaf-graphql-example/karaf-graphql-example-commands/src/main/java/org/apache/karaf/examples/graphql/commands/Query.java
deleted file mode 100644
index 683409874f..0000000000
--- a/examples/karaf-graphql-example/karaf-graphql-example-commands/src/main/java/org/apache/karaf/examples/graphql/commands/Query.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * 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.
- */
-package org.apache.karaf.examples.graphql.commands;
-
-import graphql.ExecutionResult;
-import graphql.GraphQL;
-import graphql.schema.GraphQLSchema;
-import org.apache.karaf.examples.graphql.api.GraphQLSchemaProvider;
-import org.apache.karaf.shell.api.action.Action;
-import org.apache.karaf.shell.api.action.Argument;
-import org.apache.karaf.shell.api.action.Command;
-import org.apache.karaf.shell.api.action.lifecycle.Reference;
-import org.apache.karaf.shell.api.action.lifecycle.Service;
-
-/**
- * Sample calls:
- * graphql:query "{books { name }}"
- * graphql:query "{bookById(id:\"1\") { name id pageCount }}"
- * graphql:query "mutation { addBook(name:\"Lord of the Rings\" pageCount:100) { id name }}
- */
-@Service
-@Command(scope = "graphql", name = "query", description = "Execute GraphQL query")
-public class Query implements Action {
-
- @Argument(index = 0, name = "query", required = true, multiValued = false)
- String query;
-
- @Reference
- private GraphQLSchemaProvider schemaProvider;
-
- @Override
- public Object execute() throws Exception {
- GraphQLSchema schema = schemaProvider.createSchema();
- ExecutionResult result = GraphQL.newGraphQL(schema).build().execute(query);
- if (result.getData() != null) {
- System.out.println(result.getData().toString());
- } else {
- result.getErrors().forEach(System.out::println);
- }
- return null;
- }
-}
diff --git a/examples/karaf-graphql-example/karaf-graphql-example-core/pom.xml b/examples/karaf-graphql-example/karaf-graphql-example-core/pom.xml
deleted file mode 100644
index e738088d85..0000000000
--- a/examples/karaf-graphql-example/karaf-graphql-example-core/pom.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
- <!--
-
- 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.
- -->
-
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <artifactId>karaf-graphql-example</artifactId>
- <groupId>org.apache.karaf.examples</groupId>
- <version>4.3.8-SNAPSHOT</version>
- <relativePath>../pom.xml</relativePath>
- </parent>
-
- <artifactId>karaf-graphql-example-core</artifactId>
- <name>Apache Karaf :: Examples :: GraphQL :: Core</name>
- <packaging>bundle</packaging>
-
- <dependencies>
- <dependency>
- <groupId>org.apache.karaf.examples</groupId>
- <artifactId>karaf-graphql-example-api</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.osgi</groupId>
- <artifactId>org.osgi.service.component.annotations</artifactId>
- <version>1.4.0</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>com.graphql-java</groupId>
- <artifactId>graphql-java</artifactId>
- <version>19.2</version>
- </dependency>
- <dependency>
- <groupId>io.reactivex.rxjava3</groupId>
- <artifactId>rxjava</artifactId>
- <version>3.1.5</version>
- </dependency>
- </dependencies>
-
-</project>
diff --git a/examples/karaf-graphql-example/karaf-graphql-example-core/src/main/java/org/apache/karaf/examples/graphql/core/BookSchemaProvider.java b/examples/karaf-graphql-example/karaf-graphql-example-core/src/main/java/org/apache/karaf/examples/graphql/core/BookSchemaProvider.java
deleted file mode 100644
index 8050ac198e..0000000000
--- a/examples/karaf-graphql-example/karaf-graphql-example-core/src/main/java/org/apache/karaf/examples/graphql/core/BookSchemaProvider.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * 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.
- */
-package org.apache.karaf.examples.graphql.core;
-
-import graphql.schema.DataFetcher;
-import graphql.schema.GraphQLSchema;
-import graphql.schema.idl.RuntimeWiring;
-import graphql.schema.idl.SchemaGenerator;
-import graphql.schema.idl.SchemaParser;
-import graphql.schema.idl.TypeDefinitionRegistry;
-import io.reactivex.rxjava3.core.BackpressureStrategy;
-import io.reactivex.rxjava3.observables.ConnectableObservable;
-import io.reactivex.rxjava3.subjects.PublishSubject;
-import org.apache.karaf.examples.graphql.api.Book;
-import org.apache.karaf.examples.graphql.api.BookRepository;
-import org.apache.karaf.examples.graphql.api.GraphQLSchemaProvider;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Reference;
-import org.reactivestreams.Publisher;
-
-import java.util.Collection;
-
-@Component(service = GraphQLSchemaProvider.class)
-public class BookSchemaProvider implements GraphQLSchemaProvider {
-
- @Reference(service = BookRepository.class)
- private BookRepository bookRepository;
-
- private PublishSubject<Book> subject;
-
- public void setBookRepository(InMemoryBookRepository bookRepository) {
- this.bookRepository = bookRepository;
- }
-
- @Activate
- public void activate() {
- subject = PublishSubject.create();
- }
-
- @Override
- public GraphQLSchema createSchema() {
- SchemaParser schemaParser = new SchemaParser();
- TypeDefinitionRegistry typeDefinitionRegistry = schemaParser.parse(
- this.getClass().getResourceAsStream("/schema.graphql"));
-
- RuntimeWiring runtimeWiring = RuntimeWiring.newRuntimeWiring()
- .type("Mutation", builder -> builder.dataFetcher("addBook", addBookFetcher()))
- .type("Query", builder -> builder.dataFetcher("bookById", bookByIdFetcher()))
- .type("Query", builder -> builder.dataFetcher("books", booksFetcher()))
- .type("Subscription", builder -> builder.dataFetcher("bookCreated", bookCreatedFetcher()))
- .build();
-
- SchemaGenerator schemaGenerator = new SchemaGenerator();
- return schemaGenerator.makeExecutableSchema(typeDefinitionRegistry, runtimeWiring);
- }
-
- private DataFetcher<Book> addBookFetcher() {
- return environment -> {
- String name = environment.getArgument("name");
- int pageCount = environment.getArgument("pageCount");
- Book book = bookRepository.storeBook(new Book(name, pageCount));
- subject.onNext(book);
- return book;
- };
- }
-
- private DataFetcher<Book> bookByIdFetcher() {
- return environment -> {
- String id = environment.getArgument("id");
- return bookRepository.getBookById(id);
- };
- }
-
- private DataFetcher<Collection<Book>> booksFetcher() {
- return environment -> bookRepository.getBooks();
- }
-
- private DataFetcher<Publisher<Book>> bookCreatedFetcher() {
- return environment -> getPublisher();
- }
-
- private Publisher<Book> getPublisher() {
- subject = PublishSubject.create();
- ConnectableObservable<Book> connectableObservable = subject.share().publish();
- connectableObservable.connect();
- return connectableObservable.toFlowable(BackpressureStrategy.BUFFER);
- }
-}
diff --git a/examples/karaf-graphql-example/karaf-graphql-example-core/src/main/java/org/apache/karaf/examples/graphql/core/InMemoryBookRepository.java b/examples/karaf-graphql-example/karaf-graphql-example-core/src/main/java/org/apache/karaf/examples/graphql/core/InMemoryBookRepository.java
deleted file mode 100644
index b35d7b127a..0000000000
--- a/examples/karaf-graphql-example/karaf-graphql-example-core/src/main/java/org/apache/karaf/examples/graphql/core/InMemoryBookRepository.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * 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.
- */
-package org.apache.karaf.examples.graphql.core;
-
-import org.apache.karaf.examples.graphql.api.Book;
-import org.apache.karaf.examples.graphql.api.BookRepository;
-import org.osgi.service.component.annotations.Component;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.concurrent.atomic.AtomicInteger;
-
-@Component(service = BookRepository.class)
-public class InMemoryBookRepository implements BookRepository {
-
- private final AtomicInteger idCounter = new AtomicInteger(0);
- private final Map<String, Book> booksById = new HashMap<>();
-
- public void activate() {
- createInitialBooks();
- }
-
- @Override
- public Book storeBook(Book book) {
- String id = nextId();
- book.setId(id);
- booksById.put(id, book);
- return book;
- }
-
- public Collection<Book> getBooks() {
- return booksById.values();
- }
-
- public Book getBookById(String id) {
- return booksById.get(id);
- }
-
- private void createInitialBooks() {
- storeBook(new Book("Apache Karaf Cookbook", 260));
- storeBook(new Book("Effective Java", 416));
- storeBook(new Book("OSGi in Action", 375));
- }
-
- private String nextId() {
- return Integer.toString(idCounter.incrementAndGet());
- }
-}
diff --git a/examples/karaf-graphql-example/karaf-graphql-example-core/src/main/resources/schema.graphql b/examples/karaf-graphql-example/karaf-graphql-example-core/src/main/resources/schema.graphql
deleted file mode 100644
index d70b6c7c46..0000000000
--- a/examples/karaf-graphql-example/karaf-graphql-example-core/src/main/resources/schema.graphql
+++ /dev/null
@@ -1,41 +0,0 @@
-"""
-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.
-"""
-
-schema {
- query: Query
- mutation: Mutation
- subscription: Subscription
-}
-
-type Query {
- bookById(id: ID): Book
- books: [Book]
-}
-
-type Book {
- id: ID
- name: String
- pageCount: Int
-}
-
-type Subscription {
- bookCreated: Book
-}
-
-type Mutation {
- addBook(name: String, pageCount: Int): Book
-}
diff --git a/examples/karaf-graphql-example/karaf-graphql-example-features/pom.xml b/examples/karaf-graphql-example/karaf-graphql-example-features/pom.xml
deleted file mode 100644
index f1357e54b4..0000000000
--- a/examples/karaf-graphql-example/karaf-graphql-example-features/pom.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
- <!--
-
- 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.
- -->
-
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <artifactId>karaf-graphql-example</artifactId>
- <groupId>org.apache.karaf.examples</groupId>
- <version>4.3.8-SNAPSHOT</version>
- <relativePath>../pom.xml</relativePath>
- </parent>
-
- <artifactId>karaf-graphql-example-features</artifactId>
- <name>Apache Karaf :: Examples :: GraphQL :: Features</name>
- <packaging>pom</packaging>
-
- <build>
- <resources>
- <resource>
- <directory>src/main/feature</directory>
- <filtering>true</filtering>
- <targetPath>${project.build.directory}/feature</targetPath>
- </resource>
- </resources>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-resources-plugin</artifactId>
- <executions>
- <execution>
- <goals>
- <goal>resources</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>build-helper-maven-plugin</artifactId>
- <executions>
- <execution>
- <id>attach-artifacts</id>
- <phase>package</phase>
- <goals>
- <goal>attach-artifact</goal>
- </goals>
- <configuration>
- <artifacts>
- <artifact>
- <file>target/feature/feature.xml</file>
- <type>xml</type>
- </artifact>
- </artifacts>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
-
-</project>
diff --git a/examples/karaf-graphql-example/karaf-graphql-example-features/src/main/feature/feature.xml b/examples/karaf-graphql-example/karaf-graphql-example-features/src/main/feature/feature.xml
deleted file mode 100644
index fa70ccd9fd..0000000000
--- a/examples/karaf-graphql-example/karaf-graphql-example-features/src/main/feature/feature.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
- 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.
--->
-<features name="karaf-graphql-example" xmlns="http://karaf.apache.org/xmlns/features/v1.4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.4.0">
-
- <feature name="karaf-graphql-example" version="${project.version}">
- <feature prerequisite="true">scr</feature>
- <feature prerequisite="true">http-whiteboard</feature>
- <feature prerequisite="true">http</feature>
- <feature prerequisite="true">wrap</feature>
- <feature prerequisite="true">pax-web-karaf</feature>
- <feature prerequisite="true">pax-web-jetty-websockets</feature>
-
- <bundle dependency="true">wrap:mvn:com.graphql-java/java-dataloader/3.2.0</bundle>
- <bundle dependency="true">mvn:org.reactivestreams/reactive-streams/1.0.4</bundle>
- <bundle dependency="true">wrap:mvn:com.graphql-java/graphql-java/19.2</bundle>
-
- <bundle dependency="true">mvn:com.fasterxml.jackson.core/jackson-core/${jackson.version}</bundle>
- <bundle dependency="true">mvn:com.fasterxml.jackson.core/jackson-annotations/${jackson.version}</bundle>
- <bundle dependency="true">mvn:com.fasterxml.jackson.core/jackson-databind/${jackson.version}</bundle>
- <bundle dependency="true">mvn:com.fasterxml.jackson.datatype/jackson-datatype-jdk8/${jackson.version}</bundle>
- <bundle dependency="true">mvn:javax.servlet/javax.servlet-api/4.0.1</bundle>
- <bundle dependency="true">mvn:javax.websocket/javax.websocket-api/1.1</bundle>
-
- <bundle dependency="true">mvn:com.graphql-java-kickstart/graphql-java-kickstart/14.0.0</bundle>
- <bundle dependency="true">mvn:com.graphql-java-kickstart/graphql-java-servlet/14.0.0</bundle>
-
- <bundle dependency="true">mvn:io.reactivex.rxjava3/rxjava/3.1.5</bundle>
- <bundle dependency="true">mvn:org.eclipse.jetty.websocket/websocket-server/9.4.48.v20220622</bundle>
-
- <bundle>mvn:org.apache.karaf.examples/karaf-graphql-example-api/${project.version}</bundle>
- <bundle>mvn:org.apache.karaf.examples/karaf-graphql-example-core/${project.version}</bundle>
- <bundle>mvn:org.apache.karaf.examples/karaf-graphql-example-scr-servlet/${project.version}</bundle>
- <bundle>mvn:org.apache.karaf.examples/karaf-graphql-example-commands/${project.version}</bundle>
- <bundle>mvn:org.apache.karaf.examples/karaf-graphql-example-websocket/${project.version}</bundle>
- </feature>
-
-</features>
diff --git a/examples/karaf-graphql-example/karaf-graphql-example-scr-servlet/pom.xml b/examples/karaf-graphql-example/karaf-graphql-example-scr-servlet/pom.xml
deleted file mode 100644
index 4cdcc2be00..0000000000
--- a/examples/karaf-graphql-example/karaf-graphql-example-scr-servlet/pom.xml
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
- <!--
-
- 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.
- -->
-
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <artifactId>karaf-graphql-example</artifactId>
- <groupId>org.apache.karaf.examples</groupId>
- <version>4.3.8-SNAPSHOT</version>
- <relativePath>../pom.xml</relativePath>
- </parent>
-
- <artifactId>karaf-graphql-example-scr-servlet</artifactId>
- <name>Apache Karaf :: Examples :: GraphQL :: SCR Servlet</name>
- <packaging>bundle</packaging>
-
- <dependencies>
- <dependency>
- <groupId>org.osgi</groupId>
- <artifactId>org.osgi.service.component.annotations</artifactId>
- <version>1.4.0</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>com.graphql-java</groupId>
- <artifactId>graphql-java</artifactId>
- <version>19.2</version>
- </dependency>
- <dependency>
- <groupId>com.graphql-java-kickstart</groupId>
- <artifactId>graphql-java-servlet</artifactId>
- <version>14.0.0</version>
- </dependency>
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>javax.servlet-api</artifactId>
- <version>4.0.1</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.karaf.examples</groupId>
- <artifactId>karaf-graphql-example-api</artifactId>
- <version>${project.version}</version>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.felix</groupId>
- <artifactId>maven-bundle-plugin</artifactId>
- <extensions>true</extensions>
- </plugin>
- </plugins>
- </build>
-
-</project>
diff --git a/examples/karaf-graphql-example/karaf-graphql-example-scr-servlet/src/main/java/org/apache/karaf/examples/graphql/servlet/ExampleGraphQLHttpServlet.java b/examples/karaf-graphql-example/karaf-graphql-example-scr-servlet/src/main/java/org/apache/karaf/examples/graphql/servlet/ExampleGraphQLHttpServlet.java
deleted file mode 100644
index c53ab828d5..0000000000
--- a/examples/karaf-graphql-example/karaf-graphql-example-scr-servlet/src/main/java/org/apache/karaf/examples/graphql/servlet/ExampleGraphQLHttpServlet.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * 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.
- */
-package org.apache.karaf.examples.graphql.servlet;
-
-import graphql.kickstart.servlet.GraphQLConfiguration;
-import graphql.kickstart.servlet.GraphQLHttpServlet;
-import org.apache.karaf.examples.graphql.api.GraphQLSchemaProvider;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Reference;
-
-import javax.servlet.Servlet;
-
-@Component(service = Servlet.class, property = {"alias=/graphql", "servlet-name=GraphQL"})
-public class ExampleGraphQLHttpServlet extends GraphQLHttpServlet {
-
- @Reference
- private GraphQLSchemaProvider schemaProvider;
-
- public void setSchemaProvider(GraphQLSchemaProvider schemaProvider) {
- this.schemaProvider = schemaProvider;
- }
-
- @Override
- protected GraphQLConfiguration getConfiguration() {
- return GraphQLConfiguration.with(schemaProvider.createSchema()).build();
- }
-}
diff --git a/examples/karaf-graphql-example/karaf-graphql-example-websocket/pom.xml b/examples/karaf-graphql-example/karaf-graphql-example-websocket/pom.xml
deleted file mode 100644
index 78600da935..0000000000
--- a/examples/karaf-graphql-example/karaf-graphql-example-websocket/pom.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
- <!--
-
- 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.
- -->
-
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <artifactId>karaf-graphql-example</artifactId>
- <groupId>org.apache.karaf.examples</groupId>
- <version>4.3.8-SNAPSHOT</version>
- <relativePath>../pom.xml</relativePath>
- </parent>
-
- <artifactId>karaf-graphql-example-websocket</artifactId>
- <name>Apache Karaf :: Examples :: GraphQL :: WebSocket</name>
- <packaging>bundle</packaging>
-
- <dependencies>
- <dependency>
- <groupId>org.eclipse.jetty.websocket</groupId>
- <artifactId>websocket-servlet</artifactId>
- <version>9.4.48.v20220622</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.karaf.examples</groupId>
- <artifactId>karaf-graphql-example-api</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.osgi</groupId>
- <artifactId>org.osgi.service.component.annotations</artifactId>
- <version>1.4.0</version>
- <scope>provided</scope>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <source>11</source>
- <target>11</target>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.felix</groupId>
- <artifactId>maven-bundle-plugin</artifactId>
- <extensions>true</extensions>
- </plugin>
- </plugins>
- </build>
-
-</project>
diff --git a/examples/karaf-graphql-example/karaf-graphql-example-websocket/src/main/java/org/apache/karaf/examples/graphql/websocket/GraphQLWebSocketExample.java b/examples/karaf-graphql-example/karaf-graphql-example-websocket/src/main/java/org/apache/karaf/examples/graphql/websocket/GraphQLWebSocketExample.java
deleted file mode 100644
index ce2fe6eea1..0000000000
--- a/examples/karaf-graphql-example/karaf-graphql-example-websocket/src/main/java/org/apache/karaf/examples/graphql/websocket/GraphQLWebSocketExample.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * 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.
- */
-
-package org.apache.karaf.examples.graphql.websocket;
-
-import graphql.ExecutionResult;
-import graphql.GraphQL;
-import org.eclipse.jetty.websocket.api.Session;
-import org.eclipse.jetty.websocket.api.annotations.OnWebSocketClose;
-import org.eclipse.jetty.websocket.api.annotations.OnWebSocketConnect;
-import org.eclipse.jetty.websocket.api.annotations.WebSocket;
-import org.reactivestreams.Publisher;
-import org.reactivestreams.Subscriber;
-import org.reactivestreams.Subscription;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.atomic.AtomicReference;
-
-@WebSocket
-public class GraphQLWebSocketExample {
-
- private static final List<Session> sessions = new ArrayList<>();
- private final GraphQL graphQL;
-
- public GraphQLWebSocketExample(GraphQL graphQL) {
- this.graphQL = graphQL;
- }
-
- @OnWebSocketConnect
- public void onOpen(Session session) {
- session.setIdleTimeout(-1);
- sessions.add(session);
-
- String query = "" +
- " subscription BookFeed {\n" +
- " bookCreated {\n" +
- " id\n" +
- " name\n" +
- " }\n" +
- " }\n";
-
- ExecutionResult executionResult = graphQL.execute(query);
- Publisher<ExecutionResult> bookStream = executionResult.getData();
- AtomicReference<Subscription> subscriptionRef = new AtomicReference<>();
- bookStream.subscribe(new Subscriber<>() {
- @Override
- public void onSubscribe(Subscription subscription) {
- subscriptionRef.set(subscription);
- subscription.request(1);
- }
-
- @Override
- public void onNext(ExecutionResult executionResult) {
- try {
- session.getRemote().sendString(executionResult.getData().toString());
- subscriptionRef.get().request(1);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
- @Override
- public void onError(Throwable throwable) {
- }
-
- @Override
- public void onComplete() {
- }
- });
- }
-
- @OnWebSocketClose
- public void onClose(Session session, int statusCode, String reason) {
- sessions.remove(session);
- }
-}
\ No newline at end of file
diff --git a/examples/karaf-graphql-example/karaf-graphql-example-websocket/src/main/java/org/apache/karaf/examples/graphql/websocket/GraphQLWebSocketServlet.java b/examples/karaf-graphql-example/karaf-graphql-example-websocket/src/main/java/org/apache/karaf/examples/graphql/websocket/GraphQLWebSocketServlet.java
deleted file mode 100644
index ff126b3bc2..0000000000
--- a/examples/karaf-graphql-example/karaf-graphql-example-websocket/src/main/java/org/apache/karaf/examples/graphql/websocket/GraphQLWebSocketServlet.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * 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.
- */
-
-package org.apache.karaf.examples.graphql.websocket;
-
-import graphql.GraphQL;
-import graphql.execution.SubscriptionExecutionStrategy;
-import org.apache.karaf.examples.graphql.api.GraphQLSchemaProvider;
-import org.eclipse.jetty.websocket.servlet.*;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Reference;
-
-import javax.servlet.Servlet;
-import javax.servlet.annotation.WebServlet;
-
-@WebServlet(name = "Example GraphQL WebSocket Servlet", urlPatterns = {"/graphql-websocket"})
-@Component(service = Servlet.class, property = {"osgi.http.whiteboard.servlet.pattern=/graphql-websocket"})
-public class GraphQLWebSocketServlet extends WebSocketServlet implements WebSocketCreator {
-
- @Reference(service = GraphQLSchemaProvider.class)
- private GraphQLSchemaProvider schemaProvider;
-
- @Override
- public Object createWebSocket(ServletUpgradeRequest servletUpgradeRequest, ServletUpgradeResponse servletUpgradeResponse) {
- GraphQL graphQL = GraphQL.newGraphQL(schemaProvider.createSchema())
- .subscriptionExecutionStrategy(new SubscriptionExecutionStrategy())
- .build();
- return new GraphQLWebSocketExample(graphQL);
- }
-
- @Override
- public void configure(WebSocketServletFactory factory) {
- factory.setCreator(this);
- }
-}
diff --git a/examples/karaf-graphql-example/pom.xml b/examples/karaf-graphql-example/pom.xml
deleted file mode 100644
index f73c1749a5..0000000000
--- a/examples/karaf-graphql-example/pom.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
- <!--
-
- 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.
- -->
-
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.apache.karaf.examples</groupId>
- <artifactId>apache-karaf-examples</artifactId>
- <version>4.3.8-SNAPSHOT</version>
- <relativePath>../pom.xml</relativePath>
- </parent>
-
- <artifactId>karaf-graphql-example</artifactId>
- <name>Apache Karaf :: Examples :: GraphQL Example</name>
- <packaging>pom</packaging>
-
- <modules>
- <module>karaf-graphql-example-scr-servlet</module>
- <module>karaf-graphql-example-commands</module>
- <module>karaf-graphql-example-core</module>
- <module>karaf-graphql-example-api</module>
- <module>karaf-graphql-example-websocket</module>
- <module>karaf-graphql-example-features</module>
- </modules>
-
-</project>
diff --git a/examples/pom.xml b/examples/pom.xml
index bb872a04b6..30e97e4750 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -67,7 +67,6 @@
<module>karaf-soap-example</module>
<module>karaf-websocket-example</module>
<module>karaf-war-example</module>
- <module>karaf-graphql-example</module>
</modules>
</project>
diff --git a/itests/test/src/test/java/org/apache/karaf/itests/examples/GraphQLExampleTest.java b/itests/test/src/test/java/org/apache/karaf/itests/examples/GraphQLExampleTest.java
deleted file mode 100644
index d41d994cc4..0000000000
--- a/itests/test/src/test/java/org/apache/karaf/itests/examples/GraphQLExampleTest.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * Licensed 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.
- */
-package org.apache.karaf.itests.examples;
-
-import com.fasterxml.jackson.databind.node.JsonNodeFactory;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import org.apache.karaf.itests.BaseTest;
-import org.apache.karaf.itests.util.SimpleSocket;
-import org.eclipse.jetty.websocket.client.ClientUpgradeRequest;
-import org.eclipse.jetty.websocket.client.WebSocketClient;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.ops4j.pax.exam.junit.PaxExam;
-import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy;
-import org.ops4j.pax.exam.spi.reactors.PerMethod;
-
-import java.io.BufferedReader;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.net.HttpURLConnection;
-import java.net.URI;
-import java.net.URL;
-import java.net.URLEncoder;
-import java.nio.charset.StandardCharsets;
-import java.util.concurrent.TimeUnit;
-
-import static junit.framework.TestCase.assertTrue;
-
-@RunWith(PaxExam.class)
-@ExamReactorStrategy(PerMethod.class)
-public class GraphQLExampleTest extends BaseTest {
-
- private void setUp() throws Exception {
- addFeaturesRepository("mvn:org.apache.karaf.examples/karaf-graphql-example-features/" + System.getProperty("karaf.version") + "/xml");
- installAndAssertFeature("karaf-graphql-example");
- }
-
- @Test
- public void testServlet() throws Exception {
- setUp();
-
- String getBooksQuery = "{ books { name id } }";
- String booksRequestResult = sendGetRequest(getBooksQuery);
-
- assertContains("\"name\":\"Apache Karaf Cookbook\"", booksRequestResult);
- assertContains("\"id\":\"1\"", booksRequestResult);
- assertContains("\"name\":\"Effective Java\"", booksRequestResult);
- assertContains("\"id\":\"2\"", booksRequestResult);
-
- String addBookQuery = "mutation { addBook(name:\"Lord of the Rings\" pageCount:100) { id name } }";
- String addBookRequestResult = sendPostRequest(addBookQuery);
- assertContains("id", addBookRequestResult);
- assertContains("Lord of the Rings", addBookRequestResult);
-
- String getBooksByIdQuery = "{ bookById(id:4) { name } }";
- String getBookByIdRequestResult = sendGetRequest(getBooksByIdQuery);
- assertContains("Lord of the Rings", getBookByIdRequestResult);
- }
-
- @Test
- public void testCommand() throws Exception {
- setUp();
- String getBooksQuery = "\"{ books { name id } }\"";
- String output = executeCommand("graphql:query " + getBooksQuery);
- System.out.println(output);
- }
-
- @Test
- public void testWebSocket() throws Exception {
- setUp();
-
- WebSocketClient client = new WebSocketClient();
- SimpleSocket socket = new SimpleSocket();
- client.start();
- URI uri = new URI("ws://localhost:" + getHttpPort() + "/graphql-websocket");
- ClientUpgradeRequest request = new ClientUpgradeRequest();
- client.connect(socket, uri, request);
-
- sendPostRequest("mutation { addBook(name:\"Lord of the Rings\" pageCount:100) { id name } }");
-
- socket.awaitClose(10, TimeUnit.SECONDS);
-
- assertTrue(socket.messages.size() > 0);
-
- assertContains("Lord of the Rings", socket.messages.get(0));
-
- client.stop();
- }
-
- private String sendGetRequest(String query) throws Exception {
- String encodedQuery = URLEncoder.encode(query, StandardCharsets.UTF_8.name());
- URL url = new URL("http://localhost:" + getHttpPort() + "/graphql?query=" + encodedQuery);
-
- HttpURLConnection connection = (HttpURLConnection) url.openConnection();
- connection.setRequestMethod("GET");
- connection.setDoInput(true);
- connection.setRequestProperty("Accept", "application/json");
-
- BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
- String line;
- StringBuilder buffer = new StringBuilder();
- while ((line = reader.readLine()) != null) {
- buffer.append(line);
- }
-
- return buffer.toString();
- }
-
- private String sendPostRequest(String query) throws Exception {
- URL url = new URL("http://localhost:" + getHttpPort() + "/graphql");
-
- HttpURLConnection connection = (HttpURLConnection) url.openConnection();
- connection.setRequestMethod("POST");
- connection.setDoOutput(true);
- connection.setRequestProperty("Content-Type", "application/json");
- connection.setRequestProperty("Accept", "application/json");
-
- ObjectNode node = JsonNodeFactory.instance.objectNode();
- node.put("query", query);
-
- try (OutputStream os = connection.getOutputStream()) {
- byte[] input = node.toString().getBytes(StandardCharsets.UTF_8.name());
- os.write(input, 0, input.length);
- }
-
-
- BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
- String line;
- StringBuilder buffer = new StringBuilder();
- while ((line = reader.readLine()) != null) {
- buffer.append(line);
- }
-
- return buffer.toString();
- }
-}
diff --git a/pom.xml b/pom.xml
index 83c0ce7e92..d88063fa4b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -299,7 +299,7 @@
<pax.base.version>1.5.1</pax.base.version>
<pax.swissbox.version>1.8.5</pax.swissbox.version>
<pax.url.version>2.6.12</pax.url.version>
- <pax.web.version>7.3.26</pax.web.version>
+ <pax.web.version>7.3.27</pax.web.version>
<pax.tinybundle.version>3.0.0</pax.tinybundle.version>
<pax.jdbc.version>1.5.4</pax.jdbc.version>
<pax.jms.version>1.1.1</pax.jms.version>