You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flume.apache.org by es...@apache.org on 2011/08/12 02:48:17 UTC

svn commit: r1156905 - in /incubator/flume/branches/flume-728/flume-ng-core/src/main/java/org/apache/flume: sink/DefaultSinkFactory.java source/DefaultSourceFactory.java

Author: esammer
Date: Fri Aug 12 00:48:16 2011
New Revision: 1156905

URL: http://svn.apache.org/viewvc?rev=1156905&view=rev
Log:
- Added reasonable default implementations of {Source,Sink}Factory.

Added:
    incubator/flume/branches/flume-728/flume-ng-core/src/main/java/org/apache/flume/sink/DefaultSinkFactory.java
    incubator/flume/branches/flume-728/flume-ng-core/src/main/java/org/apache/flume/source/DefaultSourceFactory.java

Added: incubator/flume/branches/flume-728/flume-ng-core/src/main/java/org/apache/flume/sink/DefaultSinkFactory.java
URL: http://svn.apache.org/viewvc/incubator/flume/branches/flume-728/flume-ng-core/src/main/java/org/apache/flume/sink/DefaultSinkFactory.java?rev=1156905&view=auto
==============================================================================
--- incubator/flume/branches/flume-728/flume-ng-core/src/main/java/org/apache/flume/sink/DefaultSinkFactory.java (added)
+++ incubator/flume/branches/flume-728/flume-ng-core/src/main/java/org/apache/flume/sink/DefaultSinkFactory.java Fri Aug 12 00:48:16 2011
@@ -0,0 +1,85 @@
+package org.apache.flume.sink;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.flume.EventSink;
+import org.apache.flume.SinkFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.common.base.Preconditions;
+
+public class DefaultSinkFactory implements SinkFactory {
+
+  private static final Logger logger = LoggerFactory
+      .getLogger(DefaultSinkFactory.class);
+
+  public Map<String, Class<? extends EventSink>> sinkRegistry;
+
+  public DefaultSinkFactory() {
+    sinkRegistry = new HashMap<String, Class<? extends EventSink>>();
+  }
+
+  @Override
+  public boolean register(String name, Class<? extends EventSink> sinkClass) {
+    logger.info("Register sink class:{}", sinkClass);
+
+    if (sinkRegistry.containsKey(name)) {
+      return false;
+    }
+
+    sinkRegistry.put(name, sinkClass);
+    return true;
+  }
+
+  @Override
+  public boolean unregister(String name) {
+    logger.info("Unregister source class:{}", name);
+
+    return sinkRegistry.remove(name) != null;
+  }
+
+  @Override
+  public Set<String> getSinkNames() {
+    return sinkRegistry.keySet();
+  }
+
+  @Override
+  public EventSink create(String name) throws InstantiationException {
+    Preconditions.checkNotNull(name);
+
+    logger.info("Creating instance of source {}", name);
+
+    if (!sinkRegistry.containsKey(name)) {
+      return null;
+    }
+
+    EventSink sink = null;
+
+    try {
+      sink = sinkRegistry.get(name).newInstance();
+    } catch (IllegalAccessException e) {
+      throw new InstantiationException("Unable to create sink " + name
+          + " due to " + e.getMessage());
+    }
+
+    return sink;
+  }
+
+  @Override
+  public String toString() {
+    return "{ sinkRegistry:" + sinkRegistry + " }";
+  }
+
+  public Map<String, Class<? extends EventSink>> getSinkRegistry() {
+    return sinkRegistry;
+  }
+
+  public void setSinkRegistry(
+      Map<String, Class<? extends EventSink>> sinkRegistry) {
+    this.sinkRegistry = sinkRegistry;
+  }
+
+}

Added: incubator/flume/branches/flume-728/flume-ng-core/src/main/java/org/apache/flume/source/DefaultSourceFactory.java
URL: http://svn.apache.org/viewvc/incubator/flume/branches/flume-728/flume-ng-core/src/main/java/org/apache/flume/source/DefaultSourceFactory.java?rev=1156905&view=auto
==============================================================================
--- incubator/flume/branches/flume-728/flume-ng-core/src/main/java/org/apache/flume/source/DefaultSourceFactory.java (added)
+++ incubator/flume/branches/flume-728/flume-ng-core/src/main/java/org/apache/flume/source/DefaultSourceFactory.java Fri Aug 12 00:48:16 2011
@@ -0,0 +1,85 @@
+package org.apache.flume.source;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.flume.EventSource;
+import org.apache.flume.SourceFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.common.base.Preconditions;
+
+public class DefaultSourceFactory implements SourceFactory {
+
+  private static final Logger logger = LoggerFactory
+      .getLogger(DefaultSourceFactory.class);
+
+  public Map<String, Class<? extends EventSource>> sourceRegistry;
+
+  public DefaultSourceFactory() {
+    sourceRegistry = new HashMap<String, Class<? extends EventSource>>();
+  }
+
+  @Override
+  public boolean register(String name, Class<? extends EventSource> sourceClass) {
+    logger.info("Register source class:{}", sourceClass);
+
+    if (sourceRegistry.containsKey(name)) {
+      return false;
+    }
+
+    sourceRegistry.put(name, sourceClass);
+    return true;
+  }
+
+  @Override
+  public boolean unregister(String name) {
+    logger.info("Unregister source class:{}", name);
+
+    return sourceRegistry.remove(name) != null;
+  }
+
+  @Override
+  public Set<String> getSourceNames() {
+    return sourceRegistry.keySet();
+  }
+
+  @Override
+  public EventSource create(String name) throws InstantiationException {
+    Preconditions.checkNotNull(name);
+
+    logger.info("Creating instance of source {}", name);
+
+    if (!sourceRegistry.containsKey(name)) {
+      return null;
+    }
+
+    EventSource source = null;
+
+    try {
+      source = sourceRegistry.get(name).newInstance();
+    } catch (IllegalAccessException e) {
+      throw new InstantiationException("Unable to create source " + name
+          + " due to " + e.getMessage());
+    }
+
+    return source;
+  }
+
+  @Override
+  public String toString() {
+    return "{ sinkRegistry:" + sourceRegistry + " }";
+  }
+
+  public Map<String, Class<? extends EventSource>> getSourceRegistry() {
+    return sourceRegistry;
+  }
+
+  public void setSourceRegistry(
+      Map<String, Class<? extends EventSource>> sourceRegistry) {
+    this.sourceRegistry = sourceRegistry;
+  }
+
+}