package org.ow2.choreos.ee.reconfiguration; import it.cnr.isti.labse.glimpse.xml.complexEventResponse.ComplexEventResponse; import javax.jms.JMSException; import org.apache.log4j.Logger; public class ComplexEventResponseHandler { private ComplexEventHandler handler; private Logger logger = Logger.getLogger("reconfLogger"); private ComplexEventResponse response; private HandlingEvent event; public void handle(ComplexEventResponse responseFromMonitoring) throws JMSException { setUp(responseFromMonitoring); loadHandler(); handles(); } private void handles() { logger.debug("Handling event\n\n>>>\n " + event.getRule() + "on host = " + event.getNode()); handler.handleEvent(event); try { Thread.sleep(1000 * 60); logger.debug("Sleeping one minute"); } catch (InterruptedException e) { e.printStackTrace(); } logger.debug("Event handled!\n\n>>>"); } private void setUp(ComplexEventResponse responseFromMonitoring) throws JMSException { response = responseFromMonitoring; String ruleMatched = response.getRuleName(); String node = response.getResponseKey(); String serviceName = response.getResponseValue(); event = new HandlingEvent(ruleMatched, node, serviceName); } @SuppressWarnings("unchecked") private void loadHandler() { logger.debug("Loading handler...\n>>> " + "(" + event.getRule() + ", " + event.getNode() + ", " + event.getService() + ")"); Class<ComplexEventHandler> clazz; try { clazz = (Class<ComplexEventHandler>) Class.forName("org.ow2.choreos.chors.reconfiguration.events." + event.getRule()); handler = clazz.newInstance(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } }