diff --git a/module/api/graphql/build.gradle.kts b/module/api/graphql/build.gradle.kts index e17370e6e3..da062d47d8 100644 --- a/module/api/graphql/build.gradle.kts +++ b/module/api/graphql/build.gradle.kts @@ -1,5 +1,3 @@ -import org.gradle.internal.impldep.org.junit.experimental.categories.Categories.CategoryFilter.exclude - plugins { id("org.openbase.bco") id("org.springframework.boot") @@ -20,8 +18,8 @@ dependencies { api(Spring.boot.webflux) api("org.springframework:spring-webmvc:_") - api( rootProject.files("lib/external/rejoiner-0.5.0-bco.jar")) - api( rootProject.files("lib/external/rejoiner-guice-0.5.0-bco.jar")) + api(rootProject.files("lib/external/rejoiner-0.5.0-bco.jar")) + api(rootProject.files("lib/external/rejoiner-guice-0.5.0-bco.jar")) // disabled since rejoiner is linked locally. // api("com.google.api.graphql:rejoiner-guice:_") { // exclude(group = "com.google.inject", module = "guice") diff --git a/module/api/graphql/src/main/java/org/openbase/bco/api/graphql/BcoGraphQlApiSpringBootApplication.java b/module/api/graphql/src/main/java/org/openbase/bco/api/graphql/BcoGraphQlApiSpringBootApplication.java index 8739fab36c..558fb6fd16 100644 --- a/module/api/graphql/src/main/java/org/openbase/bco/api/graphql/BcoGraphQlApiSpringBootApplication.java +++ b/module/api/graphql/src/main/java/org/openbase/bco/api/graphql/BcoGraphQlApiSpringBootApplication.java @@ -33,7 +33,7 @@ import graphql.Scalars; import graphql.execution.instrumentation.Instrumentation; import graphql.kickstart.execution.context.DefaultGraphQLContext; -import graphql.kickstart.execution.context.GraphQLContext; +import graphql.kickstart.execution.context.GraphQLKickstartContext; import graphql.kickstart.servlet.context.GraphQLServletContextBuilder; import graphql.schema.*; import org.dataloader.DataLoader; @@ -58,11 +58,7 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; -import org.springframework.web.cors.CorsConfiguration; -import org.springframework.web.cors.UrlBasedCorsConfigurationSource; -import org.springframework.web.filter.CorsFilter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -78,6 +74,8 @@ public class BcoGraphQlApiSpringBootApplication { private static Logger LOGGER = LoggerFactory.getLogger(BcoGraphQlApiSpringBootApplication.class); private final Injector injector; + @Value("${graphql.url:/graphql}") + private String graphqlurl; { injector = Guice.createInjector( @@ -93,23 +91,6 @@ public class BcoGraphQlApiSpringBootApplication { ); } - @Value("${graphql.url:/graphql}") - private String graphqlurl; - - @Bean - public FilterRegistrationBean corsFilter() { - UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); - CorsConfiguration config = new CorsConfiguration(); - config.setAllowCredentials(false); - config.addAllowedOrigin("*"); - config.addAllowedHeader("*"); - config.addAllowedMethod("*"); - source.registerCorsConfiguration(graphqlurl, config); - FilterRegistrationBean bean = new FilterRegistrationBean<>(new CorsFilter(source)); - bean.setOrder(0); - return bean; - } - @Bean GraphQLSchema schema() { GraphQLSchema schema = injector.getInstance(Key.get(GraphQLSchema.class, Schema.class)); @@ -264,18 +245,18 @@ public GraphQLServletContextBuilder contextBuilder(DataLoaderRegistry dataLoader return new GraphQLServletContextBuilder() { @Override - public GraphQLContext build(HttpServletRequest request, HttpServletResponse response) { - return new DefaultBCOGraphQLContext(dataLoaderRegistry, null, request); + public GraphQLKickstartContext build(HttpServletRequest request, HttpServletResponse response) { + return new DefaultBCOGraphQLContext(dataLoaderRegistry, request); } @Override - public GraphQLContext build() { + public GraphQLKickstartContext build() { return new DefaultGraphQLContext(dataLoaderRegistry, null); } @Override - public GraphQLContext build(Session session, HandshakeRequest request) { - return new BCOGraphQLWebsocketContext(dataLoaderRegistry, null, session, request); + public GraphQLKickstartContext build(Session session, HandshakeRequest request) { + return new BCOGraphQLWebsocketContext(dataLoaderRegistry, session, request); } }; } diff --git a/module/api/graphql/src/main/java/org/openbase/bco/api/graphql/context/AbstractBCOGraphQLContext.java b/module/api/graphql/src/main/java/org/openbase/bco/api/graphql/context/AbstractBCOGraphQLContext.java index d317561aec..916874a12c 100644 --- a/module/api/graphql/src/main/java/org/openbase/bco/api/graphql/context/AbstractBCOGraphQLContext.java +++ b/module/api/graphql/src/main/java/org/openbase/bco/api/graphql/context/AbstractBCOGraphQLContext.java @@ -10,12 +10,12 @@ * it under the terms of the GNU General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public * License along with this program. If not, see * . @@ -26,14 +26,12 @@ import org.dataloader.DataLoaderRegistry; import org.openbase.jul.exception.NotAvailableException; -import javax.security.auth.Subject; - public abstract class AbstractBCOGraphQLContext extends DefaultGraphQLContext { public static final String DATA_LOADER_UNITS = "units"; - public AbstractBCOGraphQLContext(DataLoaderRegistry dataLoaderRegistry, Subject subject) { - super(dataLoaderRegistry, subject); + public AbstractBCOGraphQLContext(DataLoaderRegistry dataLoaderRegistry) { + super(dataLoaderRegistry); } public abstract String getToken() throws NotAvailableException; diff --git a/module/api/graphql/src/main/java/org/openbase/bco/api/graphql/context/BCOGraphQLWebsocketContext.java b/module/api/graphql/src/main/java/org/openbase/bco/api/graphql/context/BCOGraphQLWebsocketContext.java index 6d514ba50e..c7b7a3a6ba 100644 --- a/module/api/graphql/src/main/java/org/openbase/bco/api/graphql/context/BCOGraphQLWebsocketContext.java +++ b/module/api/graphql/src/main/java/org/openbase/bco/api/graphql/context/BCOGraphQLWebsocketContext.java @@ -10,12 +10,12 @@ * it under the terms of the GNU General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public * License along with this program. If not, see * . @@ -26,7 +26,6 @@ import org.dataloader.DataLoaderRegistry; import org.openbase.jul.exception.NotAvailableException; -import javax.security.auth.Subject; import javax.websocket.Session; import javax.websocket.server.HandshakeRequest; import java.util.Locale; @@ -39,8 +38,8 @@ public class BCOGraphQLWebsocketContext extends AbstractBCOGraphQLContext implem private final String token; private final String languageCode; - public BCOGraphQLWebsocketContext(DataLoaderRegistry dataLoaderRegistry, Subject subject, Session session, HandshakeRequest handshakeRequest) { - super(dataLoaderRegistry, subject); + public BCOGraphQLWebsocketContext(DataLoaderRegistry dataLoaderRegistry, Session session, HandshakeRequest handshakeRequest) { + super(dataLoaderRegistry); this.session = session; this.handshakeRequest = handshakeRequest; diff --git a/module/api/graphql/src/main/java/org/openbase/bco/api/graphql/context/DefaultBCOGraphQLContext.java b/module/api/graphql/src/main/java/org/openbase/bco/api/graphql/context/DefaultBCOGraphQLContext.java index 9d56bbe003..0652e37a01 100644 --- a/module/api/graphql/src/main/java/org/openbase/bco/api/graphql/context/DefaultBCOGraphQLContext.java +++ b/module/api/graphql/src/main/java/org/openbase/bco/api/graphql/context/DefaultBCOGraphQLContext.java @@ -10,23 +10,21 @@ * it under the terms of the GNU General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public * License along with this program. If not, see * . * #L% */ -import graphql.kickstart.execution.context.DefaultGraphQLContext; import org.dataloader.DataLoaderRegistry; import org.openbase.jul.exception.NotAvailableException; -import javax.security.auth.Subject; import javax.servlet.http.HttpServletRequest; import java.util.Locale; @@ -35,8 +33,8 @@ public class DefaultBCOGraphQLContext extends AbstractBCOGraphQLContext { private final String token; private final String languageCode; - public DefaultBCOGraphQLContext(DataLoaderRegistry dataLoaderRegistry, Subject subject, HttpServletRequest request) { - super(dataLoaderRegistry, subject); + public DefaultBCOGraphQLContext(DataLoaderRegistry dataLoaderRegistry, HttpServletRequest request) { + super(dataLoaderRegistry); this.token = request.getHeader("Authorization"); final String language = request.getHeader("Accept-Language"); diff --git a/module/api/graphql/src/main/resources/application.properties b/module/api/graphql/src/main/resources/application.properties deleted file mode 100644 index 2d4db6e545..0000000000 --- a/module/api/graphql/src/main/resources/application.properties +++ /dev/null @@ -1,46 +0,0 @@ -### -# #%L -# BCO GraphQL API -# %% -# Copyright (C) 2020 openbase.org -# %% -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public -# License along with this program. If not, see -# . -# #L% -### -server.port=13781 -spring.main.banner-mode=off - -# SSL -#server.ssl.key-store=classpath:dev-keystore.p12 -#server.ssl.key-store-password=WrCqBj8WV/eeXZIW - -# JKS or PKCS12 -#server.ssl.key-store-type=PKCS12 -#server.ssl.key-alaias=basecubeone - - -graphql: - servlet: - mapping: /graphql - enabled: true - corsEnabled: true - subscriptions: - websocket: - path: /subscriptions - - - -#logging.level.root=TRACE -#logging.level.com.baeldung=TRACE diff --git a/module/api/graphql/src/main/resources/application.yaml b/module/api/graphql/src/main/resources/application.yaml new file mode 100644 index 0000000000..486cb8af8a --- /dev/null +++ b/module/api/graphql/src/main/resources/application.yaml @@ -0,0 +1,20 @@ +server: + port: 13781 + +spring: + main: + banner-mode: off + +graphql: + servlet: + # Sets if GraphQL servlet should be created and exposed. If not specified defaults to "true". + enabled: true + # Sets the path where GraphQL servlet will be exposed. If not specified defaults to "/graphql" + mapping: /graphql + cors-enabled: true + cors: + allowed-origins: "*" + allowed-methods: "*" + allowed-headers: "*" + # if you want to @ExceptionHandler annotation for custom GraphQLErrors + exception-handlers-enabled: true \ No newline at end of file diff --git a/versions.properties b/versions.properties index 084b7075ea..ba9a8b711c 100644 --- a/versions.properties +++ b/versions.properties @@ -6,16 +6,11 @@ #### #### suppress inspection "SpellCheckingInspection" for whole file #### suppress inspection "UnusedProperty" for whole file - -version.com.graphql-java-kickstart..graphql-spring-boot-starter=12.0.1-SNAPSHOT - +version.com.graphql-java-kickstart..graphql-spring-boot-starter=14.0.0 version.io.quarkus..quarkus-junit4-mock=2.9.1.Final - ## unused version.junit.jupiter=5.9.2 - version.org.jmdns..jmdns=3.5.7 - version.org.glassfish.jersey.security..oauth2-client=2.31 ## # available=2.32 ## # available=2.33 @@ -28,7 +23,6 @@ version.org.glassfish.jersey.security..oauth2-client=2.31 ## # available=3.0.1 ## # available=3.0.2 ## # available=3.0.3 - version.org.glassfish.jersey.media..jersey-media-sse=2.31 ## # available=2.32 ## # available=2.33 @@ -41,7 +35,6 @@ version.org.glassfish.jersey.media..jersey-media-sse=2.31 ## # available=3.0.1 ## # available=3.0.2 ## # available=3.0.3 - version.org.glassfish.jersey.inject..jersey-hk2=2.31 ## # available=2.32 ## # available=2.33 @@ -54,7 +47,6 @@ version.org.glassfish.jersey.inject..jersey-hk2=2.31 ## # available=3.0.1 ## # available=3.0.2 ## # available=3.0.3 - version.org.glassfish.jersey.core..jersey-client=2.31 ## # available=2.32 ## # available=2.33 @@ -67,34 +59,25 @@ version.org.glassfish.jersey.core..jersey-client=2.31 ## # available=3.0.1 ## # available=3.0.2 ## # available=3.0.3 - version.org.apache.commons..commons-math3=3.6.1 - version.net.javacrumbs.future-converter..future-converter-java8-guava=1.2.0 - version.io.socket..socket.io-client=1.0.0 ## # available=1.0.1 ## # available=2.0.0 ## # available=2.0.1 - version.io.reactivex.rxjava2..rxjava=2.2.21 - version.commons-collections..commons-collections=3.2.2 ## # available=20030418.083655 ## # available=20031027.000000 ## # available=20040102.233541 ## # available=20040616 - ## unused version.com.influxdb..influxdb-client-java=[5.0,5.1-alpha) - version.com.google.inject.extensions..guice-multibindings=4.2.3 - version.com.google.inject..guice=5.0.1 ## # available=5.0.2-SNAPSHOT ## # available=5.1.0 ## # available=5.1.1-SNAPSHOT - version.com.google.guava..guava=28.0-jre ## # available=28.1-android ## # available=28.1-jre @@ -112,100 +95,74 @@ version.com.google.guava..guava=28.0-jre ## # available=31.0-jre ## # available=31.0.1-android ## # available=31.0.1-jre - version.org.openbase..jul.transformation=3.3-SNAPSHOT - version.org.testcontainers..junit-jupiter=1.17.2 - version.org.testcontainers..testcontainers=1.17.1 - version.org.springframework.boot..spring-boot-starter-webflux=2.6.3 - version.org.springframework.boot..spring-boot-starter-jetty=2.6.3 - version.org.springframework.boot..spring-boot-starter-websocket=2.6.3 - version.org.springframework..spring-webmvc=5.3.15 - version.org.openhab.core.bundles..org.openhab.core.io.rest.core=3.1.0 ## # available=3.1.1 ## # available=3.2.0 - plugin.org.springframework.boot=2.6.2 ## # available=2.6.3 - plugin.io.spring.dependency-management=1.0.11.RELEASE - version.kotlin=1.7.0 - version.org.openbase..jul.communication.controller=3.3-SNAPSHOT ## # available=3.0.0 ## # available=3.0.1 ## # available=3.0.2 - version.org.openbase..jul.communication.mqtt=3.3-SNAPSHOT ## # available=3.0.0 ## # available=3.0.1 ## # available=3.0.2 - version.org.openbase..jul.exception=3.3-SNAPSHOT ## # available=3.0.0 ## # available=3.0.1 ## # available=3.0.2 - version.org.openbase..jul.extension.protobuf=3.3-SNAPSHOT ## # available=3.0.0 ## # available=3.0.1 ## # available=3.0.2 - version.org.openbase..jul.extension.type.processing=3.3-SNAPSHOT ## # available=3.0.0 ## # available=3.0.1 ## # available=3.0.2 - version.org.openbase..jul.extension.type.storage=3.3-SNAPSHOT ## # available=3.0.0 ## # available=3.0.1 ## # available=3.0.2 - version.org.openbase..jul.extension.type.transform=3.3-SNAPSHOT ## # available=3.0.0 ## # available=3.0.1 ## # available=3.0.2 - version.org.openbase..jul.extension.type.util=3.3-SNAPSHOT ## # available=3.0.0 ## # available=3.0.1 ## # available=3.0.2 - version.org.openbase..jul.pattern.launch=3.3-SNAPSHOT ## # available=3.0.0 ## # available=3.0.1 ## # available=3.0.2 - version.org.openbase..jul.pattern.trigger=3.3-SNAPSHOT ## # available=3.0.0 ## # available=3.0.1 ## # available=3.0.2 - version.org.openbase..jul.processing=3.3-SNAPSHOT ## # available=3.0.0 ## # available=3.0.1 ## # available=3.0.2 - version.org.openbase..jul.storage=3.3-SNAPSHOT ## # available=3.0.0 ## # available=3.0.1 ## # available=3.0.2 - version.org.openbase..jul.visual.javafx=3.3-SNAPSHOT ## # available=3.0.0 ## # available=3.0.1 ## # available=3.0.2 - version.org.openbase..jul.visual.swing=3.3-SNAPSHOT ## # available=3.0.0 ## # available=3.0.1 ## # available=3.0.2 - version.rxjava2.rxjava=2.2.21