001 /**
002 *
003 */
004 package de.jw.cloud42.core.eventing.factory;
005
006 import java.util.logging.Level;
007 import java.util.logging.Logger;
008
009 import de.jw.cloud42.core.eventing.subscriptionProcessor.SubscriptionProcessor;
010
011 /**
012 * Factory class that creates an instance of a concrete SubscriptionProcessor class.
013 * Uses Factory pattern.
014 *
015 * @author fbitzer
016 *
017 */
018 public class SubscriptionProcessorFactory {
019
020 /**
021 * Create a SubscriptionProcessor class.
022 * @param className the fully qualified classname of the desired subscription processor.
023 * @return
024 */
025 public SubscriptionProcessor createSubscriptionProcessor(String className){
026
027 Class cls = null;;
028
029 try {
030 cls = Class.forName(className);
031 } catch (ClassNotFoundException cex){
032 Logger.getAnonymousLogger().log(Level.SEVERE, "Subscription procossor class " + className + " not found.");
033 }
034
035 Object obj = null;
036 try {
037 obj = cls.newInstance();
038 } catch (InstantiationException iex){
039 Logger.getAnonymousLogger().log(Level.SEVERE, "Error instantiating subscription processor class " + className + ".");
040 }
041 catch (IllegalAccessException iaex){
042 Logger.getAnonymousLogger().log(Level.SEVERE, "Error instantiating subscription processor class " + className + ".");
043 }
044 catch (Exception ex){
045 Logger.getAnonymousLogger().log(Level.SEVERE, "Error instantiating subscription processor class " + className + ". Class not found.");
046 }
047
048
049 if (obj instanceof SubscriptionProcessor){
050 return (SubscriptionProcessor)obj;
051 } else {
052 return null;
053 }
054 }
055
056 }
057