/* * (c) Rob Gordon 2005. */ package org.oddjob.scheduling; import java.net.URI; import java.net.URISyntaxException; import java.text.ParseException; import junit.framework.TestCase; import org.oddjob.OddjobDescriptorFactory; import org.oddjob.arooa.ArooaBeanDescriptor; import org.oddjob.arooa.ArooaDescriptor; import org.oddjob.arooa.ArooaParseException; import org.oddjob.arooa.ArooaSession; import org.oddjob.arooa.ArooaType; import org.oddjob.arooa.deploy.BeanDescriptorHelper; import org.oddjob.arooa.design.DesignInstance; import org.oddjob.arooa.design.DesignParser; import org.oddjob.arooa.design.view.ViewMainHelper; import org.oddjob.arooa.life.InstantiationContext; import org.oddjob.arooa.life.SimpleArooaClass; import org.oddjob.arooa.parsing.ArooaElement; import org.oddjob.arooa.reflect.ArooaClass; import org.oddjob.arooa.standard.StandardArooaSession; import org.oddjob.arooa.xml.XMLConfiguration; import org.oddjob.jobs.job.ResetActions; import org.oddjob.schedules.schedules.WeeklySchedule; import org.oddjob.state.StateConditions; import org.oddjob.tools.OddjobTestHelper; /** * */ public class TimerDesFaTest extends TestCase { DesignInstance design; public void testCreate() throws ArooaParseException, URISyntaxException, ParseException { String xml = "<scheduling:timer xmlns:scheduling='http://rgordon.co.uk/oddjob/scheduling'" + " xmlns:s='http://rgordon.co.uk/oddjob/schedules'" + " name='A Schedule'" + " timeZone='America/Chicago'" + " haltOn='FAILURE'" + " reset='SOFT'" + " haltOnFailure='true'" + " skipMissedRuns='true'>" + " <schedule>" + " <s:weekly on=\"7\">" + " <refinement>" + " <s:time from=\"12:00\" to=\"16:00\"/>" + " </refinement>" + " </s:weekly>" + " </schedule>" + " <job>" + " <echo>Do Something Useful</echo>" + " </job>" + " <clock>" + " <bean class='org.oddjob.tools.ManualClock'>" + " <date>" + " <date date='2012-12-27 08:00'/>" + " </date>" + " </bean>" + " </clock>" + "</scheduling:timer>"; ArooaDescriptor descriptor = new OddjobDescriptorFactory().createDescriptor(null); ArooaSession session = new StandardArooaSession(descriptor); ArooaDescriptor sd = session.getArooaDescriptor(); InstantiationContext instantiationContext = new InstantiationContext(ArooaType.COMPONENT, null); ArooaClass arooaClass = sd.getElementMappings( ).mappingFor(new ArooaElement( new URI("http://rgordon.co.uk/oddjob/scheduling"), "timer"), instantiationContext); assertEquals(SimpleArooaClass.class, arooaClass.getClass()); ArooaBeanDescriptor beanDescriptor = sd.getBeanDescriptor( arooaClass, session.getTools().getPropertyAccessor()); assertEquals("job", beanDescriptor.getComponentProperty()); assertEquals(ArooaType.COMPONENT, new BeanDescriptorHelper( beanDescriptor).getArooaType("job")); DesignParser parser = new DesignParser(session); parser.setArooaType(ArooaType.COMPONENT); parser.parse(new XMLConfiguration("TEST", xml)); design = parser.getDesign(); assertEquals(TimerDesign.class, design.getClass()); Timer timer = (Timer) OddjobTestHelper.createComponentFromConfiguration( design.getArooaContext().getConfigurationNode()); assertEquals("America/Chicago", timer.getTimeZone()); assertEquals(7, ((WeeklySchedule) timer.getSchedule()).getFrom().getDayNumber()); assertEquals(StateConditions.FAILURE, timer.getHaltOn()); assertEquals(ResetActions.SOFT, timer.getReset()); assertEquals(true, timer.isHaltOnFailure()); assertEquals(true, timer.isSkipMissedRuns()); assertEquals(1, OddjobTestHelper.getChildren(timer).length); // assertEquals(DateHelper.parseDateTime("2012-12-27 08:00"), // timer.getClock().getDate()); } public static void main(String args[]) throws ArooaParseException, URISyntaxException, ParseException { TimerDesFaTest test = new TimerDesFaTest(); test.testCreate(); ViewMainHelper view = new ViewMainHelper(test.design); view.run(); } }