You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2012/10/19 07:20:54 UTC
svn commit: r1399967 - in /openejb/trunk/openejb/examples: ./
schedule-events/ schedule-events/src/ schedule-events/src/main/
schedule-events/src/main/java/ schedule-events/src/main/java/org/
schedule-events/src/main/java/org/superbiz/ schedule-events/...
Author: dblevins
Date: Fri Oct 19 05:20:53 2012
New Revision: 1399967
URL: http://svn.apache.org/viewvc?rev=1399967&view=rev
Log:
TOMEE-485 - Example ScheduleExpression to schedule CDI Events
Added:
openejb/trunk/openejb/examples/schedule-events/
openejb/trunk/openejb/examples/schedule-events/src/
openejb/trunk/openejb/examples/schedule-events/src/main/
openejb/trunk/openejb/examples/schedule-events/src/main/java/
openejb/trunk/openejb/examples/schedule-events/src/main/java/org/
openejb/trunk/openejb/examples/schedule-events/src/main/java/org/superbiz/
openejb/trunk/openejb/examples/schedule-events/src/main/java/org/superbiz/schedule/
openejb/trunk/openejb/examples/schedule-events/src/main/java/org/superbiz/schedule/events/
openejb/trunk/openejb/examples/schedule-events/src/main/java/org/superbiz/schedule/events/Scheduler.java
openejb/trunk/openejb/examples/schedule-events/src/test/
openejb/trunk/openejb/examples/schedule-events/src/test/java/
openejb/trunk/openejb/examples/schedule-events/src/test/java/org/
openejb/trunk/openejb/examples/schedule-events/src/test/java/org/superbiz/
openejb/trunk/openejb/examples/schedule-events/src/test/java/org/superbiz/schedule/
openejb/trunk/openejb/examples/schedule-events/src/test/java/org/superbiz/schedule/events/
openejb/trunk/openejb/examples/schedule-events/src/test/java/org/superbiz/schedule/events/SchedulerTest.java
openejb/trunk/openejb/examples/schedule-events/src/test/resources/
openejb/trunk/openejb/examples/schedule-events/src/test/resources/META-INF/
openejb/trunk/openejb/examples/schedule-events/src/test/resources/META-INF/beans.xml
Modified:
openejb/trunk/openejb/examples/pom.xml
Modified: openejb/trunk/openejb/examples/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/examples/pom.xml?rev=1399967&r1=1399966&r2=1399967&view=diff
==============================================================================
--- openejb/trunk/openejb/examples/pom.xml (original)
+++ openejb/trunk/openejb/examples/pom.xml Fri Oct 19 05:20:53 2012
@@ -102,6 +102,7 @@
<module>rest-example</module>
<module>rest-example-with-application</module>
<module>schedule-expression</module>
+ <module>schedule-events</module>
<module>schedule-methods-meta</module>
<module>schedule-methods</module>
<module>server-events</module>
Added: openejb/trunk/openejb/examples/schedule-events/src/main/java/org/superbiz/schedule/events/Scheduler.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/examples/schedule-events/src/main/java/org/superbiz/schedule/events/Scheduler.java?rev=1399967&view=auto
==============================================================================
--- openejb/trunk/openejb/examples/schedule-events/src/main/java/org/superbiz/schedule/events/Scheduler.java (added)
+++ openejb/trunk/openejb/examples/schedule-events/src/main/java/org/superbiz/schedule/events/Scheduler.java Fri Oct 19 05:20:53 2012
@@ -0,0 +1,87 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.superbiz.schedule.events;
+
+import javax.annotation.Resource;
+import javax.ejb.Lock;
+import javax.ejb.LockType;
+import javax.ejb.ScheduleExpression;
+import javax.ejb.SessionContext;
+import javax.ejb.Startup;
+import javax.ejb.Timeout;
+import javax.ejb.Timer;
+import javax.ejb.TimerConfig;
+import javax.ejb.TimerService;
+import javax.enterprise.inject.spi.BeanManager;
+import javax.ejb.Singleton;
+import java.io.Serializable;
+import java.lang.annotation.Annotation;
+
+/**
+ * @version $Revision$ $Date$
+ */
+@Singleton
+@Lock(LockType.READ)
+@Startup
+public class Scheduler {
+
+ @Resource
+ private TimerService timerService;
+
+ @Resource
+ private SessionContext sessionContext;
+
+ @Resource
+ private BeanManager beanManager;
+
+ public void scheduleEvent(ScheduleExpression schedule, Object event, Annotation... qualifiers) {
+
+ timerService.createCalendarTimer(schedule, new TimerConfig(new EventConfig(event, qualifiers), false));
+ }
+
+ // @Produces
+// public Scheduler produce() {
+// return sessionContext.getBusinessObject(Scheduler.class);
+// }
+//
+ @Timeout
+ public void timeout(Timer timer) {
+ final EventConfig config = (EventConfig) timer.getInfo();
+
+ beanManager.fireEvent(config.getEvent(), config.getQualifiers());
+ }
+
+ // Doesn't actually need to be serializable, just has to implement it
+ private final class EventConfig implements Serializable {
+
+ private final Object event;
+ private final Annotation[] qualifiers;
+
+ private EventConfig(Object event, Annotation[] qualifiers) {
+ this.event = event;
+ this.qualifiers = qualifiers;
+ }
+
+ public Object getEvent() {
+ return event;
+ }
+
+ public Annotation[] getQualifiers() {
+ return qualifiers;
+ }
+ }
+}
Added: openejb/trunk/openejb/examples/schedule-events/src/test/java/org/superbiz/schedule/events/SchedulerTest.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/examples/schedule-events/src/test/java/org/superbiz/schedule/events/SchedulerTest.java?rev=1399967&view=auto
==============================================================================
--- openejb/trunk/openejb/examples/schedule-events/src/test/java/org/superbiz/schedule/events/SchedulerTest.java (added)
+++ openejb/trunk/openejb/examples/schedule-events/src/test/java/org/superbiz/schedule/events/SchedulerTest.java Fri Oct 19 05:20:53 2012
@@ -0,0 +1,71 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.superbiz.schedule.events;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+import javax.ejb.EJB;
+import javax.ejb.ScheduleExpression;
+import javax.ejb.embeddable.EJBContainer;
+import javax.enterprise.event.Observes;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * @version $Revision$ $Date$
+ */
+public class SchedulerTest {
+
+ public static final CountDownLatch events = new CountDownLatch(3);
+
+ @EJB
+ private Scheduler scheduler;
+
+ @Test
+ public void test() throws Exception {
+
+ scheduler.scheduleEvent(new ScheduleExpression().hour("*").minute("*").second("*/5"), new TestEvent("five"));
+
+ Assert.assertTrue(events.await(1, TimeUnit.MINUTES));
+ }
+
+
+ public void observe(@Observes TestEvent event) {
+ if ("five".equals(event.getMessage())) {
+ events.countDown();
+ }
+ }
+
+ public static class TestEvent {
+ private final String message;
+
+ public TestEvent(String message) {
+ this.message = message;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+ }
+
+ @Before
+ public void setup() throws Exception {
+ EJBContainer.createEJBContainer().getContext().bind("inject", this);
+ }
+}
Added: openejb/trunk/openejb/examples/schedule-events/src/test/resources/META-INF/beans.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/examples/schedule-events/src/test/resources/META-INF/beans.xml?rev=1399967&view=auto
==============================================================================
(empty)