From 89f64a2d44fa1e14ae18c8ed935917c56fc91d2c Mon Sep 17 00:00:00 2001 From: Jonathan Philip Knoblauch Date: Fri, 22 Apr 2016 14:36:29 +0200 Subject: [PATCH] Added new default feign client Signed-off-by: Jonathan Philip Knoblauch --- .../hawkbit/ddi/client/Application.java | 2 +- .../eclipse/hawkbit/ddi/client/DdiClient.java | 75 ------------------- .../ddi/client/DdiDefaultFeignClient.java | 53 +++++++++++++ .../hawkbit/ddi/client/DdiExampleClient.java | 45 +++++++++++ .../hawkbit/example/ddi/client/AppTest.java | 5 +- 5 files changed, 102 insertions(+), 78 deletions(-) delete mode 100644 examples/hawkbit-example-ddi-client/src/main/java/org/eclipse/hawkbit/ddi/client/DdiClient.java create mode 100644 examples/hawkbit-example-ddi-client/src/main/java/org/eclipse/hawkbit/ddi/client/DdiDefaultFeignClient.java create mode 100644 examples/hawkbit-example-ddi-client/src/main/java/org/eclipse/hawkbit/ddi/client/DdiExampleClient.java diff --git a/examples/hawkbit-example-ddi-client/src/main/java/org/eclipse/hawkbit/ddi/client/Application.java b/examples/hawkbit-example-ddi-client/src/main/java/org/eclipse/hawkbit/ddi/client/Application.java index d8810f48b..86ccf195e 100644 --- a/examples/hawkbit-example-ddi-client/src/main/java/org/eclipse/hawkbit/ddi/client/Application.java +++ b/examples/hawkbit-example-ddi-client/src/main/java/org/eclipse/hawkbit/ddi/client/Application.java @@ -20,7 +20,7 @@ import feign.Contract; public class Application { @Autowired - private DdiClient ddiClient; + private DdiExampleClient ddiClient; public static void main(final String[] args) { new SpringApplicationBuilder().showBanner(false).sources(Application.class).run(args); diff --git a/examples/hawkbit-example-ddi-client/src/main/java/org/eclipse/hawkbit/ddi/client/DdiClient.java b/examples/hawkbit-example-ddi-client/src/main/java/org/eclipse/hawkbit/ddi/client/DdiClient.java deleted file mode 100644 index 22101681e..000000000 --- a/examples/hawkbit-example-ddi-client/src/main/java/org/eclipse/hawkbit/ddi/client/DdiClient.java +++ /dev/null @@ -1,75 +0,0 @@ -/** - * Copyright (c) 2011-2016 Bosch Software Innovations GmbH, Germany. All rights reserved. - */ -package org.eclipse.hawkbit.ddi.client; - -import org.eclipse.hawkbit.ddi.client.resource.RootControllerResourceClient; -import org.eclipse.hawkbit.ddi.json.model.DdiControllerBase; -import org.eclipse.hawkbit.ddi.rest.api.DdiRestConstants; -import org.springframework.cloud.netflix.feign.support.ResponseEntityDecoder; -import org.springframework.http.ResponseEntity; -import org.springframework.stereotype.Component; - -import feign.Feign; -import feign.Logger; -import feign.Logger.Level; -import feign.jackson.JacksonDecoder; -import feign.jackson.JacksonEncoder; - -@Component -public class DdiClient { - - // - // @Autowired - // private HttpServletResponse response; - - private final String controllerId; - private final String name; - private final String description; - private RootControllerResourceClient rootControllerResourceClient; - private String rootControllerResourcePath; - - public DdiClient(final String rolloutsUrl, final String controllerId, final String name, final String description, - final String tenant) { - super(); - this.controllerId = controllerId; - this.name = name; - this.description = description; - rootControllerResourcePath = rolloutsUrl + DdiRestConstants.BASE_V1_REQUEST_MAPPING; - rootControllerResourcePath = rootControllerResourcePath.replace("{tenant}", tenant); - - createFeignClient(); - } - - private void createFeignClient() { - - // BasicAuthRequestInterceptor TODO - - final Feign.Builder feignBuilder = Feign.builder() - .contract(new IgnoreMultipleConsumersProducersSpringMvcContract()) - .requestInterceptor(new ApplicationJsonRequestHeaderInterceptor()).logLevel(Level.FULL) - .logger(new Logger.ErrorLogger()).encoder(new JacksonEncoder()) - .decoder(new ResponseEntityDecoder(new JacksonDecoder())); - // TODO implement feign client encoder to handle MultiPartFile - // .requestInterceptor(new BasicAuthRequestInterceptor(tenant + "\\" + - // user, password)) - - rootControllerResourceClient = feignBuilder.target(RootControllerResourceClient.class, - rootControllerResourcePath); - - } - - public void startDdiClient() { - - final ResponseEntity response = rootControllerResourceClient.getControllerBase("test"); - final DdiControllerBase controllerBase = response.getBody(); - - // TODO notify every 10 seconds on the rollout server - - // TODO if new update available -> start download and installation - // process - // report status messages - - } - -} diff --git a/examples/hawkbit-example-ddi-client/src/main/java/org/eclipse/hawkbit/ddi/client/DdiDefaultFeignClient.java b/examples/hawkbit-example-ddi-client/src/main/java/org/eclipse/hawkbit/ddi/client/DdiDefaultFeignClient.java new file mode 100644 index 000000000..4dd29d7c1 --- /dev/null +++ b/examples/hawkbit-example-ddi-client/src/main/java/org/eclipse/hawkbit/ddi/client/DdiDefaultFeignClient.java @@ -0,0 +1,53 @@ +/** + * Copyright (c) 2011-2016 Bosch Software Innovations GmbH, Germany. All rights reserved. + */ +package org.eclipse.hawkbit.ddi.client; + +import org.eclipse.hawkbit.ddi.client.resource.RootControllerResourceClient; +import org.springframework.cloud.netflix.feign.support.ResponseEntityDecoder; + +import feign.Feign; +import feign.Feign.Builder; +import feign.Logger; +import feign.Logger.Level; +import feign.jackson.JacksonDecoder; +import feign.jackson.JacksonEncoder; + +/** + * @author Jonathan Knoblauch + * + */ +public class DdiDefaultFeignClient { + + private RootControllerResourceClient rootControllerResourceClient; + + private final Builder feignBuilder; + private final String baseUrl; + private final String tenant; + + public DdiDefaultFeignClient(final String baseUrl, final String tenant) { + feignBuilder = Feign.builder().contract(new IgnoreMultipleConsumersProducersSpringMvcContract()) + .requestInterceptor(new ApplicationJsonRequestHeaderInterceptor()).logLevel(Level.FULL) + .logger(new Logger.ErrorLogger()).encoder(new JacksonEncoder()) + .decoder(new ResponseEntityDecoder(new JacksonDecoder())); + this.baseUrl = baseUrl; + this.tenant = tenant; + } + + public Builder getFeignBuilder() { + return feignBuilder; + } + + public RootControllerResourceClient getRootControllerResourceClient() { + + String rootControllerResourcePath = this.baseUrl + RootControllerResourceClient.PATH; + rootControllerResourcePath = rootControllerResourcePath.replace("{tenant}", tenant); + // TODO tenant null throw exception + if (rootControllerResourceClient == null) { + rootControllerResourceClient = feignBuilder.target(RootControllerResourceClient.class, + rootControllerResourcePath); + } + return rootControllerResourceClient; + } + +} diff --git a/examples/hawkbit-example-ddi-client/src/main/java/org/eclipse/hawkbit/ddi/client/DdiExampleClient.java b/examples/hawkbit-example-ddi-client/src/main/java/org/eclipse/hawkbit/ddi/client/DdiExampleClient.java new file mode 100644 index 000000000..c7b81e4fe --- /dev/null +++ b/examples/hawkbit-example-ddi-client/src/main/java/org/eclipse/hawkbit/ddi/client/DdiExampleClient.java @@ -0,0 +1,45 @@ +/** + * Copyright (c) 2011-2016 Bosch Software Innovations GmbH, Germany. All rights reserved. + */ +package org.eclipse.hawkbit.ddi.client; + +import org.springframework.stereotype.Component; + +@Component +public class DdiExampleClient { + + private final String controllerId; + private final String name; + private final String description; + private final String baseUrl; + final DdiDefaultFeignClient ddiDefaultFeignClient; + + public DdiExampleClient(final String baseUrl, final String controllerId, final String name, + final String description, final String tenant) { + super(); + this.controllerId = controllerId; + this.name = name; + this.description = description; + this.baseUrl = baseUrl; + ddiDefaultFeignClient = new DdiDefaultFeignClient(baseUrl, tenant); + } + + public void startDdiClient() { + + // final ResponseEntity response = + + ddiDefaultFeignClient.getRootControllerResourceClient().getControllerBase(controllerId); + + // final DdiControllerBase controllerBase = response.getBody(); + + System.out.println("test"); + + // TODO notify every 10 seconds on the rollout server + + // TODO if new update available -> start download and installation + // process + // report status messages + + } + +} diff --git a/examples/hawkbit-example-ddi-client/src/test/java/org/eclipse/hawkbit/example/ddi/client/AppTest.java b/examples/hawkbit-example-ddi-client/src/test/java/org/eclipse/hawkbit/example/ddi/client/AppTest.java index bb74c5dee..bb369f478 100644 --- a/examples/hawkbit-example-ddi-client/src/test/java/org/eclipse/hawkbit/example/ddi/client/AppTest.java +++ b/examples/hawkbit-example-ddi-client/src/test/java/org/eclipse/hawkbit/example/ddi/client/AppTest.java @@ -1,6 +1,6 @@ package org.eclipse.hawkbit.example.ddi.client; -import org.eclipse.hawkbit.ddi.client.DdiClient; +import org.eclipse.hawkbit.ddi.client.DdiExampleClient; import org.junit.Test; /** @@ -11,7 +11,8 @@ public class AppTest { @Test public void AppTest() { - final DdiClient ddiClient = new DdiClient("http://localhost:8080", "mytest", "mytest", "desc", "DEFAULT"); + final DdiExampleClient ddiClient = new DdiExampleClient("http://localhost:8080/", "mytest", "mytest", "desc", + "DEFAULT"); ddiClient.startDdiClient(); }