introduce an AutoWiringModule
authorMichael Vorburger <mike@vorburger.ch>
Wed, 31 Oct 2018 18:14:27 +0000 (19:14 +0100)
committerMichael Vorburger <mike@vorburger.ch>
Wed, 1 Jul 2020 23:37:41 +0000 (01:37 +0200)
Signed-off-by: Michael Vorburger <mike@vorburger.ch>
src/main/java/org/opendaylight/genius/simple/AlivenessMonitorWiring.java
src/main/java/org/opendaylight/infrautils/inject/guice/AutoWiringModule.java [new file with mode: 0644]
src/main/java/org/opendaylight/netvirt/simple/NetvirtWiring.java

index 9ded349fbd16a0c1d11558f9df6780add8f858fd..b2aba7782cf2fa8ef56f763df8b801922684684f 100644 (file)
@@ -7,19 +7,12 @@
  */
 package org.opendaylight.genius.simple;
 
-import com.google.inject.AbstractModule;
+import org.opendaylight.infrautils.inject.guice.AutoWiringModule;
 import org.opendaylight.infrautils.inject.guice.GuiceClassPathBinder;
 
-public class AlivenessMonitorWiring extends AbstractModule {
-
-    private final GuiceClassPathBinder classPathBinder;
+public class AlivenessMonitorWiring extends AutoWiringModule {
 
     public AlivenessMonitorWiring(GuiceClassPathBinder classPathBinder) {
-        this.classPathBinder = classPathBinder;
-    }
-
-    @Override
-    protected void configure() {
-        classPathBinder.bindAllSingletons("org.opendaylight.genius.alivenessmonitor", binder());
+        super(classPathBinder, "org.opendaylight.genius.alivenessmonitor");
     }
 }
diff --git a/src/main/java/org/opendaylight/infrautils/inject/guice/AutoWiringModule.java b/src/main/java/org/opendaylight/infrautils/inject/guice/AutoWiringModule.java
new file mode 100644 (file)
index 0000000..0099381
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2018 Red Hat, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.infrautils.inject.guice;
+
+import com.google.inject.AbstractModule;
+import java.util.Optional;
+
+/**
+ * Guice Module with classpath scanning based autowiring.
+ *
+ * @author Michael Vorburger.ch
+ */
+public class AutoWiringModule extends AbstractModule {
+
+    protected final GuiceClassPathBinder classPathBinder;
+    private final Optional<String> packagePrefix;
+
+    public AutoWiringModule(GuiceClassPathBinder classPathBinder, String packagePrefix) {
+        this.classPathBinder = classPathBinder;
+        this.packagePrefix = Optional.of(packagePrefix);
+    }
+
+    protected AutoWiringModule(GuiceClassPathBinder classPathBinder) {
+        this.classPathBinder = classPathBinder;
+        this.packagePrefix = Optional.empty();
+    }
+
+    @Override
+    protected void configure() {
+        packagePrefix.ifPresent(prefix -> classPathBinder.bindAllSingletons(prefix, binder()));
+    }
+}
index ec38744bcafc94752b4cb0eb10edb03091c2370a..d47398475582c3d6df6e1a053ac54b4d4921a641 100644 (file)
@@ -7,16 +7,14 @@
  */
 package org.opendaylight.netvirt.simple;
 
-import com.google.inject.AbstractModule;
 import org.opendaylight.genius.simple.GeniusWiring;
+import org.opendaylight.infrautils.inject.guice.AutoWiringModule;
 import org.opendaylight.infrautils.inject.guice.GuiceClassPathBinder;
 
-public class NetvirtWiring extends AbstractModule {
-
-    private final GuiceClassPathBinder classPathBinder;
+public class NetvirtWiring extends AutoWiringModule {
 
     public NetvirtWiring(GuiceClassPathBinder classPathBinder) {
-        this.classPathBinder = classPathBinder;
+        super(classPathBinder);
     }
 
     @Override
@@ -25,5 +23,4 @@ public class NetvirtWiring extends AbstractModule {
 
         install(new AclServiceWiring());
     }
-
 }