Author: cziegeler
Date: Fri Mar 1 08:57:20 2013
New Revision: 1451530
URL: http://svn.apache.org/r1451530
Log:
CMS commit to sling by cziegeler
Modified:
sling/site/trunk/content/documentation/tutorials-how-tos/how-to-manage-events-in-sling.mdtext
Modified:
sling/site/trunk/content/documentation/tutorials-how-tos/how-to-manage-events-in-sling.mdtext
URL:
http://svn.apache.org/viewvc/sling/site/trunk/content/documentation/tutorials-how-tos/how-to-manage-events-in-sling.mdtext?rev=1451530&r1=1451529&r2=1451530&view=diff
==============================================================================
---
sling/site/trunk/content/documentation/tutorials-how-tos/how-to-manage-events-in-sling.mdtext
(original)
+++
sling/site/trunk/content/documentation/tutorials-how-tos/how-to-manage-events-in-sling.mdtext
Fri Mar 1 08:57:20 2013
@@ -1,6 +1,5 @@
Title: How to Manage Events in Sling
-
Apache Sling provides some mechanisms and support for managing events.
The event mechanism is leveraging the OSGi Event Admin Specification (OSGi
Compendium 113). The OSGi API is very simple and lightweight. Sending an event
is just generating the event object and calling the event admin. Receiving the
event is implementing a single interface and declaring through properties which
topics one is interested in.
@@ -46,7 +45,16 @@ You can refer to the [org.apache.sling.a
## Sending Job Events
-To send a job event the service needs to implement the
**org.osgi.service.event.EventHandler** and
**org.apache.sling.event.JobProcessor** interfaces:
+To send an event the following code can be used:
+ #!java
+ public void sendEvent() {
+ final Dictionary<String, Object> props = new Hashtable<String,
Object>();
+ props.put(JobUtil.PROPERTY_JOB_TOPIC, JOB_TOPIC);
+ props.put("resourcePath", RESOURCE_PATH);
+ final Event myEvent = new Event(JobUtil.TOPIC_JOB, props);
+ eventAdmin.sendEvent(myEvent);
+
+However, for our example, to send a job event the service needs to implement
the **org.osgi.service.event.EventHandler** and
**org.apache.sling.event.JobProcessor** interfaces:
#!java
@@ -79,6 +87,15 @@ The **org.osgi.service.event.EventHandle
The **org.apache.sling.event.JobProcessor#process(Event event)** method needs
to be implemented:
+Its logic is as follows:
+
+* The OSGI event is analyzed.
+* If the event is a file that has been added to */tmp/dropbox*:
+* * An event is created with 2 properties:
+* * * A property to set the event as a job event.
+* * * A property for the file path.
+* * The job event is sent to all the listeners that subscribe to the topic of
the event.
+
#!java
public boolean process(Event event) {
@@ -132,6 +149,10 @@ To move the files the service needs to i
Some class fields need to be defined:
+* The default log.
+* The references to the SlingRepository and the JcrResourceResolverFactory
services, which are used in the implementation.
+* The destination paths of the files.
+
#!java
/** Default log. */
protected final Logger log = LoggerFactory.getLogger(this.getClass());