From c0604184b2aa8cff924ca783ec6b36f1f5988775 Mon Sep 17 00:00:00 2001 From: Zhaoxing Date: Tue, 8 Aug 2017 14:02:53 +0800 Subject: init code Change-Id: Icd0948118397b256da70dfbcbbec5520dc5eafd4 Signed-off-by: Zhaoxing --- dropwizard-ioc-container/pom.xml | 80 ---- .../dropwizard/ioc/annotation/BaseService.java | 34 -- .../org/openo/dropwizard/ioc/annotation/Lazy.java | 34 -- .../dropwizard/ioc/annotation/PostBaseService.java | 34 -- .../dropwizard/ioc/annotation/PreBaseService.java | 34 -- .../openo/dropwizard/ioc/annotation/PreLoad.java | 34 -- .../dropwizard/ioc/annotation/PreServiceLoad.java | 35 -- .../dropwizard/ioc/bundle/AutoConfigBundle.java | 430 --------------------- .../ioc/bundle/AutoConfigBundleBuider.java | 42 -- .../dropwizard/ioc/bundle/IOCApplication.java | 42 -- .../ioc/bundle/ServiceLocatorManaged.java | 51 --- .../openo/dropwizard/ioc/utils/ServiceBinder.java | 52 --- .../dropwizard/ioc/utils/ServiceLocatorHolder.java | 36 -- .../dropwizard/ioc/test/service/IOCBundleTest.java | 49 --- .../ioc/test/service/PreTestService.java | 33 -- .../dropwizard/ioc/test/service/TestService.java | 41 -- .../ioc/test/service/app/ExampleApp.java | 35 -- .../ioc/test/service/conf/TestConfiguration.java | 26 -- .../src/test/resources/example.yml | 8 - 19 files changed, 1130 deletions(-) delete mode 100644 dropwizard-ioc-container/pom.xml delete mode 100644 dropwizard-ioc-container/src/main/java/org/openo/dropwizard/ioc/annotation/BaseService.java delete mode 100644 dropwizard-ioc-container/src/main/java/org/openo/dropwizard/ioc/annotation/Lazy.java delete mode 100644 dropwizard-ioc-container/src/main/java/org/openo/dropwizard/ioc/annotation/PostBaseService.java delete mode 100644 dropwizard-ioc-container/src/main/java/org/openo/dropwizard/ioc/annotation/PreBaseService.java delete mode 100644 dropwizard-ioc-container/src/main/java/org/openo/dropwizard/ioc/annotation/PreLoad.java delete mode 100644 dropwizard-ioc-container/src/main/java/org/openo/dropwizard/ioc/annotation/PreServiceLoad.java delete mode 100644 dropwizard-ioc-container/src/main/java/org/openo/dropwizard/ioc/bundle/AutoConfigBundle.java delete mode 100644 dropwizard-ioc-container/src/main/java/org/openo/dropwizard/ioc/bundle/AutoConfigBundleBuider.java delete mode 100644 dropwizard-ioc-container/src/main/java/org/openo/dropwizard/ioc/bundle/IOCApplication.java delete mode 100644 dropwizard-ioc-container/src/main/java/org/openo/dropwizard/ioc/bundle/ServiceLocatorManaged.java delete mode 100644 dropwizard-ioc-container/src/main/java/org/openo/dropwizard/ioc/utils/ServiceBinder.java delete mode 100644 dropwizard-ioc-container/src/main/java/org/openo/dropwizard/ioc/utils/ServiceLocatorHolder.java delete mode 100644 dropwizard-ioc-container/src/test/java/org/openo/dropwizard/ioc/test/service/IOCBundleTest.java delete mode 100644 dropwizard-ioc-container/src/test/java/org/openo/dropwizard/ioc/test/service/PreTestService.java delete mode 100644 dropwizard-ioc-container/src/test/java/org/openo/dropwizard/ioc/test/service/TestService.java delete mode 100644 dropwizard-ioc-container/src/test/java/org/openo/dropwizard/ioc/test/service/app/ExampleApp.java delete mode 100644 dropwizard-ioc-container/src/test/java/org/openo/dropwizard/ioc/test/service/conf/TestConfiguration.java delete mode 100644 dropwizard-ioc-container/src/test/resources/example.yml (limited to 'dropwizard-ioc-container') diff --git a/dropwizard-ioc-container/pom.xml b/dropwizard-ioc-container/pom.xml deleted file mode 100644 index 6223c7f..0000000 --- a/dropwizard-ioc-container/pom.xml +++ /dev/null @@ -1,80 +0,0 @@ - - - - 4.0.0 - - org.openo.common-services.common-utilities - common-setting - 1.1.0-SNAPSHOT - - dropwizard-ioc-container - common-services-common-utilities/dropwizard-ioc-container - - - - - - io.dropwizard - dropwizard-core - 0.8.0 - provided - - - - org.reflections - reflections - 0.9.10 - - - com.google.guava - guava - - - - - junit - junit - test - 4.8.2 - - - - - - - - org.apache.maven.plugins - maven-surefire-plugin - - always - -XX:-UseSplitVerifier - ${maven.test.skip} - ${maven.test.failure.ignore} - - ${excludesFile} - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.5 - - 1.8 - 1.8 - 1.8 - 1.8 - - - - - - - diff --git a/dropwizard-ioc-container/src/main/java/org/openo/dropwizard/ioc/annotation/BaseService.java b/dropwizard-ioc-container/src/main/java/org/openo/dropwizard/ioc/annotation/BaseService.java deleted file mode 100644 index ac0bb47..0000000 --- a/dropwizard-ioc-container/src/main/java/org/openo/dropwizard/ioc/annotation/BaseService.java +++ /dev/null @@ -1,34 +0,0 @@ -/** - * Copyright 2017 ZTE Corporation. - * - * 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.openo.dropwizard.ioc.annotation; - -import java.lang.annotation.Documented; -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * basic services for identification - * @author hu.rui - * - */ -@Target({ElementType.TYPE}) -@Retention(RetentionPolicy.RUNTIME) -@Documented -public @interface BaseService { - -} diff --git a/dropwizard-ioc-container/src/main/java/org/openo/dropwizard/ioc/annotation/Lazy.java b/dropwizard-ioc-container/src/main/java/org/openo/dropwizard/ioc/annotation/Lazy.java deleted file mode 100644 index 40ce5af..0000000 --- a/dropwizard-ioc-container/src/main/java/org/openo/dropwizard/ioc/annotation/Lazy.java +++ /dev/null @@ -1,34 +0,0 @@ -/** - * Copyright 2017 ZTE Corporation. - * - * 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.openo.dropwizard.ioc.annotation; - -import java.lang.annotation.Documented; -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * lazy loading of related services - * @author hu.rui - * - */ -@Target({ElementType.TYPE}) -@Retention(RetentionPolicy.RUNTIME) -@Documented -public @interface Lazy { - -} diff --git a/dropwizard-ioc-container/src/main/java/org/openo/dropwizard/ioc/annotation/PostBaseService.java b/dropwizard-ioc-container/src/main/java/org/openo/dropwizard/ioc/annotation/PostBaseService.java deleted file mode 100644 index a1a6d77..0000000 --- a/dropwizard-ioc-container/src/main/java/org/openo/dropwizard/ioc/annotation/PostBaseService.java +++ /dev/null @@ -1,34 +0,0 @@ -/** - * Copyright 2017 ZTE Corporation. - * - * 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.openo.dropwizard.ioc.annotation; - -import java.lang.annotation.Documented; -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * load on after basic services - * @author hu.rui - * - */ -@Target({ElementType.TYPE}) -@Retention(RetentionPolicy.RUNTIME) -@Documented -public @interface PostBaseService { - -} diff --git a/dropwizard-ioc-container/src/main/java/org/openo/dropwizard/ioc/annotation/PreBaseService.java b/dropwizard-ioc-container/src/main/java/org/openo/dropwizard/ioc/annotation/PreBaseService.java deleted file mode 100644 index f579b9e..0000000 --- a/dropwizard-ioc-container/src/main/java/org/openo/dropwizard/ioc/annotation/PreBaseService.java +++ /dev/null @@ -1,34 +0,0 @@ -/** - * Copyright 2017 ZTE Corporation. - * - * 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.openo.dropwizard.ioc.annotation; - -import java.lang.annotation.Documented; -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * prior to basic service loading - * @author hu.rui - * - */ -@Target({ElementType.TYPE}) -@Retention(RetentionPolicy.RUNTIME) -@Documented -public @interface PreBaseService { - -} diff --git a/dropwizard-ioc-container/src/main/java/org/openo/dropwizard/ioc/annotation/PreLoad.java b/dropwizard-ioc-container/src/main/java/org/openo/dropwizard/ioc/annotation/PreLoad.java deleted file mode 100644 index 3131e8b..0000000 --- a/dropwizard-ioc-container/src/main/java/org/openo/dropwizard/ioc/annotation/PreLoad.java +++ /dev/null @@ -1,34 +0,0 @@ -/** - * Copyright 2017 ZTE Corporation. - * - * 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.openo.dropwizard.ioc.annotation; - -import java.lang.annotation.Documented; -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * load before general service - * @author hu.rui - * - */ -@Target({ElementType.TYPE}) -@Retention(RetentionPolicy.RUNTIME) -@Documented -public @interface PreLoad { - -} diff --git a/dropwizard-ioc-container/src/main/java/org/openo/dropwizard/ioc/annotation/PreServiceLoad.java b/dropwizard-ioc-container/src/main/java/org/openo/dropwizard/ioc/annotation/PreServiceLoad.java deleted file mode 100644 index e0e3043..0000000 --- a/dropwizard-ioc-container/src/main/java/org/openo/dropwizard/ioc/annotation/PreServiceLoad.java +++ /dev/null @@ -1,35 +0,0 @@ -/** - * Copyright 2017 ZTE Corporation. - * - * 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.openo.dropwizard.ioc.annotation; - -import java.lang.annotation.Documented; -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * - * load before general service,after PreLoad - * @author hu.rui - * - */ -@Target({ElementType.TYPE}) -@Retention(RetentionPolicy.RUNTIME) -@Documented -public @interface PreServiceLoad { - -} diff --git a/dropwizard-ioc-container/src/main/java/org/openo/dropwizard/ioc/bundle/AutoConfigBundle.java b/dropwizard-ioc-container/src/main/java/org/openo/dropwizard/ioc/bundle/AutoConfigBundle.java deleted file mode 100644 index 4cb4008..0000000 --- a/dropwizard-ioc-container/src/main/java/org/openo/dropwizard/ioc/bundle/AutoConfigBundle.java +++ /dev/null @@ -1,430 +0,0 @@ -/** - * Copyright 2017 ZTE Corporation. - * - * 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.openo.dropwizard.ioc.bundle; - -import java.lang.annotation.Annotation; -import java.lang.reflect.Field; -import java.util.Arrays; -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; - -import javax.ws.rs.Path; -import javax.ws.rs.ext.Provider; - -import org.eclipse.jetty.util.component.LifeCycle; -import org.glassfish.hk2.api.ServiceLocator; -import org.glassfish.hk2.api.ServiceLocatorFactory; -import org.glassfish.hk2.utilities.ServiceLocatorUtilities; -import org.glassfish.hk2.utilities.binding.AbstractBinder; -import org.glassfish.jersey.servlet.ServletProperties; -import org.jvnet.hk2.annotations.Service; -import org.openo.dropwizard.ioc.annotation.BaseService; -import org.openo.dropwizard.ioc.annotation.Lazy; -import org.openo.dropwizard.ioc.annotation.PostBaseService; -import org.openo.dropwizard.ioc.annotation.PreBaseService; -import org.openo.dropwizard.ioc.annotation.PreLoad; -import org.openo.dropwizard.ioc.annotation.PreServiceLoad; -import org.openo.dropwizard.ioc.utils.ServiceBinder; -import org.openo.dropwizard.ioc.utils.ServiceLocatorHolder; -import org.reflections.Reflections; -import org.reflections.scanners.SubTypesScanner; -import org.reflections.scanners.TypeAnnotationsScanner; -import org.reflections.util.ClasspathHelper; -import org.reflections.util.ConfigurationBuilder; -import org.reflections.util.FilterBuilder; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.codahale.metrics.health.HealthCheck; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.google.common.collect.Lists; - -import io.dropwizard.Configuration; -import io.dropwizard.ConfiguredBundle; -import io.dropwizard.configuration.ConfigurationSourceProvider; -import io.dropwizard.lifecycle.Managed; -import io.dropwizard.lifecycle.ServerLifecycleListener; -import io.dropwizard.servlets.tasks.Task; -import io.dropwizard.setup.Bootstrap; -import io.dropwizard.setup.Environment; - -/** - * complete the integration of hK2 container and dropwizard - * - * @author hu.rui - * - */ - -public class AutoConfigBundle implements ConfiguredBundle { - - private static final Logger LOG = LoggerFactory.getLogger(AutoConfigBundle.class); - - private ServiceLocator locator; - private Reflections reflections; - private Set> services; - - private Bootstrap bootstrap; - - - AutoConfigBundle(final String packageName) { - this(Lists.newArrayList(packageName)); - } - - AutoConfigBundle(List packageNames) { - FilterBuilder filterBuilder = new FilterBuilder(); - - packageNames.stream().forEach(packageName -> { - filterBuilder.include(FilterBuilder.prefix(packageName)); - }); - ConfigurationBuilder reflectionCfg = new ConfigurationBuilder(); - - packageNames.stream().forEach(packageName -> { - reflectionCfg.addUrls(ClasspathHelper.forPackage(packageName)); - }); - - reflectionCfg.filterInputsBy(filterBuilder).setScanners(new SubTypesScanner(), - new TypeAnnotationsScanner()); - reflections = new Reflections(reflectionCfg); - - locator = ServiceLocatorFactory.getInstance().create("dw-hk2"); - - ServiceLocatorHolder.setLocator(locator); - - } - - public static AutoConfigBundleBuider newBuilder() { - return new AutoConfigBundleBuider(); - } - - @Override - public void initialize(final Bootstrap bootstrap) { - - this.bootstrap = bootstrap; - registerPreLoadService(); - - LOG.debug("Intialzing auto config bundle."); - } - - private void registerPreLoadService() { - - registerService(PreLoad.class); - - } - - - @Override - public void run(final T configuration, final Environment environment) throws Exception { - - registerConfigurationProvider(configuration, environment); - - - registerEnvironment(environment); - registerObjectMapper(environment); - - environment.getApplicationContext().getServletContext() - .setAttribute(ServletProperties.SERVICE_LOCATOR, locator); - - registerService(PreBaseService.class); - registerService(BaseService.class); - registerService(PostBaseService.class); - this.registerService(PreServiceLoad.class); - - - registerServices(); - - // registerManaged(environment); - registerLifecycle(environment); - registerServerLifecycleListeners(environment); - registerJettyLifeCycleListener(environment); - registerTasks(environment); - registerHealthChecks(environment); - registerProviders(environment); - registerResources(environment); - - environment.lifecycle().manage(new ServiceLocatorManaged(locator)); - - } - - - - private void registerProviders(Environment environment) { - reflections.getSubTypesOf(Provider.class).stream().filter(services::contains) - .forEach(providerKlass -> { - try { - environment.jersey().register(locator.getService(providerKlass)); - } catch (Exception e) { - LOG.warn("", e); - } - - LOG.info("Registering Dropwizard Provider, class name : {}", providerKlass.getName()); - - }); - - } - - private void registerTasks(Environment environment) { - reflections.getSubTypesOf(Task.class).stream().filter(services::contains).forEach(taskKlass -> { - try { - environment.admin().addTask(locator.getService(taskKlass)); - } catch (Exception e) { - LOG.warn("", e); - } - LOG.info("Registering Dropwizard Task, class name : {}", taskKlass.getName()); - }); - - } - - private void registerJettyLifeCycleListener(Environment environment) { - reflections.getSubTypesOf(LifeCycle.Listener.class).stream().filter(services::contains) - .forEach(lifecycleListenerKlass -> { - - try { - environment.lifecycle() - .addLifeCycleListener(locator.getService(lifecycleListenerKlass)); - } catch (Exception e) { - LOG.warn("", e); - } - LOG.info("Registering Dropwizard lifecycleListener, class name : {}", - lifecycleListenerKlass.getName()); - }); - - } - - private void registerServerLifecycleListeners(Environment environment) { - - reflections.getSubTypesOf(ServerLifecycleListener.class).stream().filter(services::contains) - .forEach(serverLifecycleListenerKlass -> { - try { - environment.lifecycle() - .addServerLifecycleListener(locator.getService(serverLifecycleListenerKlass)); - } catch (Exception e) { - LOG.warn("", e); - } - LOG.info("Registering Dropwizard serverLifecycleListener, class name : {}", - serverLifecycleListenerKlass.getName()); - }); - - } - - private void registerLifecycle(Environment environment) { - reflections.getSubTypesOf(LifeCycle.class).stream().filter(services::contains) - .forEach(lifeCycleKlass -> { - try { - environment.lifecycle().manage(locator.getService(lifeCycleKlass)); - } catch (Exception e) { - LOG.warn("", e); - } - LOG.info("Registering Dropwizard LifeCycle, class name : {}", lifeCycleKlass.getName()); - }); - } - - /* - * private void registerManaged(Environment environment) { - * - * reflections.getSubTypesOf(Managed.class).stream().filter(services::contains) - * .forEach(managedKlass -> { try { - * environment.lifecycle().manage(locator.getService(managedKlass)); } catch (Exception e) { - * LOG.warn("", e); } LOG.info("Registering Dropwizard managed, class name : {}", - * managedKlass.getName()); }); - * - * } - */ - - private void registerObjectMapper(Environment environment) { - - final ObjectMapper objectMapper = environment.getObjectMapper(); - - ServiceLocatorUtilities.bind(locator, new AbstractBinder() { - @Override - protected void configure() { - bind(objectMapper).to(ObjectMapper.class); - - LOG.info("Registering Dropwizard objectMapper, class name : {}", - objectMapper.getClass().getName()); - } - }); - - } - - private void registerEnvironment(final Environment environment) { - - ServiceLocatorUtilities.bind(locator, new AbstractBinder() { - @Override - protected void configure() { - bind(environment).to(Environment.class); - - LOG.info("Registering Dropwizard environment, class name : {}", - environment.getClass().getName()); - } - }); - - } - - private void registerConfigurationProvider(final T configuration, final Environment environment) { - - ServiceLocatorUtilities.bind(locator, new AbstractBinder() { - @Override - protected void configure() { - bind(configuration); - LOG.info("Registering Dropwizard Configuration class name:{}", - configuration.getClass().getName()); - if (configuration instanceof Configuration) { - bind((Configuration) configuration).to(Configuration.class); - LOG.info("Registering Dropwizard Configuration class name:{}", - Configuration.class.getName()); - } - - } - }); - - registerSubConfigure(configuration, environment); - - } - - private void registerSubConfigure(final T configuration, final Environment environment) { - final List subDeclaredFields = - Arrays.asList(configuration.getClass().getDeclaredFields()); - List parentDeclaredFields = Arrays.asList(Configuration.class.getDeclaredFields()); - - List filtersubDeclaredFields = subDeclaredFields.stream() - .filter(subDeclaredField -> !subDeclaredField.getType().isPrimitive()) - .filter(subDeclaredField -> !subDeclaredField.getType().equals(String.class)) - .filter(subDeclaredField -> !parentDeclaredFields.contains(subDeclaredField)) - .collect(Collectors.toList()); - - ServiceLocatorUtilities.bind(locator, new AbstractBinder() { - @Override - protected void configure() { - filtersubDeclaredFields.forEach(subField -> { - subField.setAccessible(true); - try { - Object subConfig = subField.get(configuration); - if (subConfig != null) { - bind(subConfig); - LOG.info("Registering Dropwizard Sub Configuration class name {}", - subConfig.getClass().getName()); - } - - } catch (Exception e) { - LOG.error("bind sub config:{} fail", subField); - } - }); - } - }); - - } - - private void registerServices() { - services = this.reflections.getTypesAnnotatedWith(Service.class, true); - if (!services.isEmpty()) { - ServiceLocatorUtilities.bind(locator, new ServiceBinder(services)); - - services.forEach(s -> { - LOG.info("Registering Dropwizard service, class name : {}", s.getName()); - }); - - services.stream().filter(serviceClazz -> (serviceClazz.getAnnotation(Lazy.class) == null)) - .peek(serviceClazz -> LOG.info("active service, class name : {}", serviceClazz.getName())) - .forEach(serviceClazz -> { - try { - long startTime = System.currentTimeMillis(); - locator.getService(serviceClazz); - LOG.info("active service, class name : {},cost time:{}", serviceClazz.getName(), - (System.currentTimeMillis() - startTime)); - } catch (Exception e) { - LOG.warn("", e); - } - - }); - - } else { - LOG.warn("Registering Dropwizard service is empty"); - - } - - } - - private void registerResources(final Environment environment) { - reflections.getTypesAnnotatedWith(Path.class).stream().forEach(resourceClass -> { - - LOG.info("begin Registering Dropwizard resource, class name : {}", resourceClass.getName()); - try { - Object resourceObject = locator.getService(resourceClass); - if (resourceObject != null) { - environment.jersey().register(resourceObject); - LOG.info("Registering Dropwizard resource, class name : {}", resourceClass.getName()); - } else { - LOG.warn(resourceClass.getName() + " not use Service annotation"); - } - } catch (Exception e) { - LOG.error("", e); - } - - - }); - } - - private void registerHealthChecks(final Environment env) { - - reflections.getSubTypesOf(HealthCheck.class).stream().filter(services::contains) - .forEach(healthCheckKlass -> { - try { - env.healthChecks().register(healthCheckKlass.getName(), - locator.getService(healthCheckKlass)); - } catch (Exception e) { - LOG.warn("", e); - } - LOG.info("Registering Dropwizard healthCheck, class name : {}", - healthCheckKlass.getName()); - }); - - } - - - - private void registerService(Class annotationClazz) { - - Set> services = this.reflections.getTypesAnnotatedWith(annotationClazz, true); - if (!services.isEmpty()) { - ServiceLocatorUtilities.bind(locator, new ServiceBinder(services)); - - services.forEach(s -> { - LOG.info("{} Registering service, class name : {}", annotationClazz.getName(), - s.getName()); - }); - - services.stream().filter(serviceClazz -> (serviceClazz.getAnnotation(Lazy.class) == null)) - .peek(serviceClazz -> LOG.info("active service, class name : {}", serviceClazz.getName())) - .forEach(serviceClazz -> { - try { - long startTime = System.currentTimeMillis(); - locator.getService(serviceClazz); - LOG.info("active service, class name : {},cost time:{}", serviceClazz.getName(), - (System.currentTimeMillis() - startTime)); - } catch (Exception e) { - LOG.warn("", e); - } - - }); - - } else { - LOG.warn("Registering {} service is empty", annotationClazz.getName()); - - } - - } -} diff --git a/dropwizard-ioc-container/src/main/java/org/openo/dropwizard/ioc/bundle/AutoConfigBundleBuider.java b/dropwizard-ioc-container/src/main/java/org/openo/dropwizard/ioc/bundle/AutoConfigBundleBuider.java deleted file mode 100644 index 5e2cbc0..0000000 --- a/dropwizard-ioc-container/src/main/java/org/openo/dropwizard/ioc/bundle/AutoConfigBundleBuider.java +++ /dev/null @@ -1,42 +0,0 @@ -/** - * Copyright 2017 ZTE Corporation. - * - * 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.openo.dropwizard.ioc.bundle; - -import java.util.ArrayList; -import java.util.List; - -import io.dropwizard.Configuration; - -public class AutoConfigBundleBuider { - - private static final String DEFAULT_PACKAGE_NAME="org.openo"; - - private List packageNames=new ArrayList<>(); - - public AutoConfigBundleBuider(){ - packageNames.add( DEFAULT_PACKAGE_NAME); - } - - public AutoConfigBundleBuider addPackageName(String packageName) { - this.packageNames.add(packageName); - return this; - } - - - public AutoConfigBundle build() { - return new AutoConfigBundle(packageNames); - } -} diff --git a/dropwizard-ioc-container/src/main/java/org/openo/dropwizard/ioc/bundle/IOCApplication.java b/dropwizard-ioc-container/src/main/java/org/openo/dropwizard/ioc/bundle/IOCApplication.java deleted file mode 100644 index 9465b8e..0000000 --- a/dropwizard-ioc-container/src/main/java/org/openo/dropwizard/ioc/bundle/IOCApplication.java +++ /dev/null @@ -1,42 +0,0 @@ -/** - * Copyright 2017 ZTE Corporation. - * - * 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.openo.dropwizard.ioc.bundle; - -import io.dropwizard.Application; -import io.dropwizard.Configuration; -import io.dropwizard.setup.Bootstrap; -import io.dropwizard.setup.Environment; - -/** - * complete IOC container startup - * - * @author hu.rui2 - * - */ -public abstract class IOCApplication extends Application { - - - @Override - public void initialize(Bootstrap bootstrap) { - super.initialize(bootstrap); - bootstrap.addBundle(new AutoConfigBundleBuider().build()); - } - - @Override - public void run(T configuration, Environment environment) throws Exception { - - } -} diff --git a/dropwizard-ioc-container/src/main/java/org/openo/dropwizard/ioc/bundle/ServiceLocatorManaged.java b/dropwizard-ioc-container/src/main/java/org/openo/dropwizard/ioc/bundle/ServiceLocatorManaged.java deleted file mode 100644 index 4d33021..0000000 --- a/dropwizard-ioc-container/src/main/java/org/openo/dropwizard/ioc/bundle/ServiceLocatorManaged.java +++ /dev/null @@ -1,51 +0,0 @@ -/** - * Copyright 2017 ZTE Corporation. - * - * 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.openo.dropwizard.ioc.bundle; - -import org.glassfish.hk2.api.ServiceLocator; - -import io.dropwizard.lifecycle.Managed; - -/** - * Life cycle management for IOC containers - * @author hu.rui - * - */ -public class ServiceLocatorManaged implements Managed{ - - - - private ServiceLocator locator; - - - - public ServiceLocatorManaged(ServiceLocator locator) { - super(); - this.locator = locator; - } - - @Override - public void start() throws Exception { - - - } - - @Override - public void stop() throws Exception { - locator.shutdown(); - } - -} diff --git a/dropwizard-ioc-container/src/main/java/org/openo/dropwizard/ioc/utils/ServiceBinder.java b/dropwizard-ioc-container/src/main/java/org/openo/dropwizard/ioc/utils/ServiceBinder.java deleted file mode 100644 index 9ad984f..0000000 --- a/dropwizard-ioc-container/src/main/java/org/openo/dropwizard/ioc/utils/ServiceBinder.java +++ /dev/null @@ -1,52 +0,0 @@ -/** - * Copyright 2017 ZTE Corporation. - * - * 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.openo.dropwizard.ioc.utils; - -import java.util.Set; - -import org.glassfish.hk2.utilities.binding.AbstractBinder; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * @author hu.rui - * - */ -public class ServiceBinder extends AbstractBinder { - - private static final Logger LOG = LoggerFactory.getLogger(ServiceBinder.class); - - final Set> klasses; - - public ServiceBinder(Set> services) { - this.klasses = services; - } - - @Override - protected void configure() { - for (Class klass : this.klasses) { - - try{ - LOG.info("start active class:"+klass.getName()); - addActiveDescriptor(klass); - }catch(Exception e){ - LOG.info("active class error:"+klass.getName(),e); - } - - - } - } -} diff --git a/dropwizard-ioc-container/src/main/java/org/openo/dropwizard/ioc/utils/ServiceLocatorHolder.java b/dropwizard-ioc-container/src/main/java/org/openo/dropwizard/ioc/utils/ServiceLocatorHolder.java deleted file mode 100644 index 46dcd4b..0000000 --- a/dropwizard-ioc-container/src/main/java/org/openo/dropwizard/ioc/utils/ServiceLocatorHolder.java +++ /dev/null @@ -1,36 +0,0 @@ -/** - * Copyright 2017 ZTE Corporation. - * - * 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.openo.dropwizard.ioc.utils; - -import org.glassfish.hk2.api.ServiceLocator; - -/** - * @author hu.rui - * - */ -public class ServiceLocatorHolder { - - private static ServiceLocator locator; - - public static ServiceLocator getLocator() { - return locator; - } - - public static void setLocator(ServiceLocator locator) { - ServiceLocatorHolder.locator = locator; - } - -} diff --git a/dropwizard-ioc-container/src/test/java/org/openo/dropwizard/ioc/test/service/IOCBundleTest.java b/dropwizard-ioc-container/src/test/java/org/openo/dropwizard/ioc/test/service/IOCBundleTest.java deleted file mode 100644 index b0cac65..0000000 --- a/dropwizard-ioc-container/src/test/java/org/openo/dropwizard/ioc/test/service/IOCBundleTest.java +++ /dev/null @@ -1,49 +0,0 @@ -/** - * Copyright 2017 ZTE Corporation. - * - * 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.openo.dropwizard.ioc.test.service; - -import org.glassfish.hk2.api.ServiceLocator; -import org.junit.Before; -import org.junit.Test; -import org.openo.dropwizard.ioc.test.service.app.ExampleApp; -import org.openo.dropwizard.ioc.utils.ServiceLocatorHolder; - -import junit.framework.Assert; - -public class IOCBundleTest { - - - - @Before - public void setUp() throws Exception { - ExampleApp.main(null); - } - - @Test - public void test() { - - ServiceLocator locator = ServiceLocatorHolder.getLocator(); - - TestService testService = locator.getService(TestService.class); - - Assert.assertNotNull(testService); - - Assert.assertEquals(TestService.HELLO, testService.sayHello()); - - Assert.assertEquals(PreTestService.HELLO, testService.sayHelloToPreTestService()); - } - -} diff --git a/dropwizard-ioc-container/src/test/java/org/openo/dropwizard/ioc/test/service/PreTestService.java b/dropwizard-ioc-container/src/test/java/org/openo/dropwizard/ioc/test/service/PreTestService.java deleted file mode 100644 index 51cc386..0000000 --- a/dropwizard-ioc-container/src/test/java/org/openo/dropwizard/ioc/test/service/PreTestService.java +++ /dev/null @@ -1,33 +0,0 @@ -/** - * Copyright 2017 ZTE Corporation. - * - * 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.openo.dropwizard.ioc.test.service; - -import org.openo.dropwizard.ioc.annotation.PreServiceLoad; - -/** - * @author hu.rui - * - */ -@PreServiceLoad -public class PreTestService { - - public static final String HELLO = "hello Pre Service"; - - public String sayHello(){ - return HELLO; - } - -} diff --git a/dropwizard-ioc-container/src/test/java/org/openo/dropwizard/ioc/test/service/TestService.java b/dropwizard-ioc-container/src/test/java/org/openo/dropwizard/ioc/test/service/TestService.java deleted file mode 100644 index 3d0f945..0000000 --- a/dropwizard-ioc-container/src/test/java/org/openo/dropwizard/ioc/test/service/TestService.java +++ /dev/null @@ -1,41 +0,0 @@ -/** - * Copyright 2017 ZTE Corporation. - * - * 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.openo.dropwizard.ioc.test.service; - -import javax.inject.Inject; - -import org.jvnet.hk2.annotations.Service; - -/** - * @author hu.rui - * - */ -@Service -public class TestService { - - @Inject - private PreTestService preTestService; - - public static final String HELLO = "hello Service"; - - public String sayHello(){ - return HELLO; - } - - public String sayHelloToPreTestService(){ - return preTestService.sayHello(); - } -} diff --git a/dropwizard-ioc-container/src/test/java/org/openo/dropwizard/ioc/test/service/app/ExampleApp.java b/dropwizard-ioc-container/src/test/java/org/openo/dropwizard/ioc/test/service/app/ExampleApp.java deleted file mode 100644 index 1e1f3ea..0000000 --- a/dropwizard-ioc-container/src/test/java/org/openo/dropwizard/ioc/test/service/app/ExampleApp.java +++ /dev/null @@ -1,35 +0,0 @@ -/** - * Copyright 2017 ZTE Corporation. - * - * 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.openo.dropwizard.ioc.test.service.app; - -import org.openo.dropwizard.ioc.bundle.IOCApplication; -import org.openo.dropwizard.ioc.test.service.conf.TestConfiguration; - -public class ExampleApp extends IOCApplication{ - - private static final String CONFIGURATION_FILE = "example.yml"; - - public static void main(String[] args) throws Exception { - - String configFile = ExampleApp.class.getClassLoader().getResource(CONFIGURATION_FILE).getFile(); - - args = new String[]{"server",configFile}; - - new ExampleApp().run(args); - } - - -} diff --git a/dropwizard-ioc-container/src/test/java/org/openo/dropwizard/ioc/test/service/conf/TestConfiguration.java b/dropwizard-ioc-container/src/test/java/org/openo/dropwizard/ioc/test/service/conf/TestConfiguration.java deleted file mode 100644 index 82c30cd..0000000 --- a/dropwizard-ioc-container/src/test/java/org/openo/dropwizard/ioc/test/service/conf/TestConfiguration.java +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Copyright 2017 ZTE Corporation. - * - * 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.openo.dropwizard.ioc.test.service.conf; - -import io.dropwizard.Configuration; - -/** - * @author hu.rui - * - */ -public class TestConfiguration extends Configuration { - -} diff --git a/dropwizard-ioc-container/src/test/resources/example.yml b/dropwizard-ioc-container/src/test/resources/example.yml deleted file mode 100644 index c3ef0f0..0000000 --- a/dropwizard-ioc-container/src/test/resources/example.yml +++ /dev/null @@ -1,8 +0,0 @@ -server: - type: simple - rootPath: '/service/*' - applicationContextPath: / - connector: - type: http - port: 45673 - \ No newline at end of file -- cgit 1.2.3-korg