Skip to content

Commit

Permalink
Changed JMS Topic to be in Atom format
Browse files Browse the repository at this point in the history
  • Loading branch information
ajs6f committed Jan 31, 2013
1 parent 42973f2 commit a70ac86
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 3 deletions.
5 changes: 5 additions & 0 deletions pom.xml
Expand Up @@ -131,6 +131,11 @@
<artifactId>guava</artifactId>
<version>13.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.abdera</groupId>
<artifactId>abdera-parser</artifactId>
<version>1.1.3</version>
</dependency>
</dependencies>

<build>
Expand Down
29 changes: 26 additions & 3 deletions src/main/java/org/fcrepo/modeshape/observer/JMSTopicPublisher.java
@@ -1,18 +1,27 @@
package org.fcrepo.modeshape.observer;

import java.io.IOException;
import java.io.StringWriter;
import java.util.Map;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.inject.Inject;
import javax.jcr.RepositoryException;
import javax.jcr.observation.Event;
import javax.jms.Connection;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;

import org.apache.abdera.Abdera;
import org.apache.abdera.model.Entry;
import org.apache.abdera.model.Text.Type;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.google.common.collect.ImmutableMap;
import com.google.common.eventbus.EventBus;
import com.google.common.eventbus.Subscribe;

Expand All @@ -28,13 +37,27 @@ public class JMSTopicPublisher {
private Session session;
private MessageProducer producer;

final static private Abdera abdera = new Abdera();

final private static Map<Integer, String> operationsMappings = ImmutableMap
.of(Event.NODE_ADDED, "ingest");

final private Logger logger = LoggerFactory
.getLogger(JMSTopicPublisher.class);

@Subscribe
public void publishJCREvent(Event jcrEvent) throws JMSException {
logger.debug("Putting event: " + jcrEvent.toString() + "onto JMS.");
producer.send(session.createTextMessage(jcrEvent.toString()));
public void publishJCREvent(Event jcrEvent) throws JMSException,
RepositoryException, IOException {
Entry entry = abdera.newEntry();
entry.addCategory("fedora-types:pid", jcrEvent.getPath(), "xsd:string");
entry.setTitle(operationsMappings.get(jcrEvent.getType()), Type.TEXT);
entry.setBaseUri("http://localhost:8080/rest");
StringWriter writer = new StringWriter();
entry.writeTo(writer);
String atomMessage = writer.toString();
producer.send(session.createTextMessage(atomMessage));

logger.debug("Put event: \n" + atomMessage + "\n onto JMS.");
}

@PostConstruct
Expand Down

0 comments on commit a70ac86

Please sign in to comment.