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