Skip to content

Commit

Permalink
Created new FedoraEvent abstraction for: https://www.pivotaltracker.c…
Browse files Browse the repository at this point in the history
  • Loading branch information
ajs6f committed Feb 19, 2013
1 parent 1b32008 commit 87ccd5a
Show file tree
Hide file tree
Showing 5 changed files with 74 additions and 17 deletions.
@@ -1,3 +1,4 @@

package org.fcrepo.messaging.legacy;

import java.io.IOException;
Expand All @@ -19,23 +20,32 @@ public class LegacyMethodEventFactory implements JMSEventMessageFactory {
final private Logger logger = LoggerFactory
.getLogger(LegacyMethodEventFactory.class);

public LegacyMethodEventFactory() {
}

@Override
public Message getMessage(Event jcrEvent, javax.jcr.Session jcrSession, javax.jms.Session jmsSession)
throws RepositoryException, IOException, JMSException {
public Message getMessage(Event jcrEvent, javax.jcr.Session jcrSession,
javax.jms.Session jmsSession) throws RepositoryException,
IOException, JMSException {
logger.trace("Received an event to transform.");
String path = jcrEvent.getPath();
logger.trace("Retrieved path from event.");
Node resource = jcrSession.getNode(path);
LegacyMethod legacy = new LegacyMethod(jcrEvent, resource);
logger.trace("Retrieved node from event.");
LegacyMethod legacy = new LegacyMethod(jcrEvent, resource);
StringWriter writer = new StringWriter();
legacy.writeTo(writer);
String atomMessage = writer.toString();
logger.debug("Constructed serialized Atom message from event.");
TextMessage tm = jmsSession.createTextMessage(atomMessage);
String pid = legacy.getPid();
if (pid != null) tm.setStringProperty("pid", pid);
tm.setStringProperty("methodName", legacy.getMethodName());
tm.setJMSType(LegacyMethod.FORMAT);
tm.setStringProperty("fcrepo.server.version", LegacyMethod.SERVER_VERSION);
logger.debug("Put event: \n{}\n onto JMS.", atomMessage);
tm.setStringProperty("fcrepo.server.version",
LegacyMethod.SERVER_VERSION);
logger.trace("Successfully created JMS message from event.");
return tm;
}
}

}
Expand Up @@ -2,26 +2,21 @@
package org.fcrepo.observer;

import java.io.IOException;
import java.io.StringWriter;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.inject.Inject;
import javax.jcr.LoginException;
import javax.jcr.Node;
import javax.jcr.Repository;
import javax.jcr.RepositoryException;
import javax.jcr.nodetype.NodeType;
import javax.jcr.observation.Event;
import javax.jms.Connection;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnectionFactory;
import org.fcrepo.messaging.legacy.LegacyMethod;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand Down Expand Up @@ -54,10 +49,11 @@ public class JMSTopicPublisher {
private javax.jcr.Session session;

@Subscribe
public void publishJCREvent(Event jcrEvent) throws JMSException,
public void publishJCREvent(Event fedoraEvent) throws JMSException,
RepositoryException, IOException {

Message tm = eventFactory.getMessage(jcrEvent, session, jmsSession);
logger.debug("Received an event from the internal bus.");
Message tm = eventFactory.getMessage(fedoraEvent, session, jmsSession);
logger.debug("Transformed the event to a JMS message.");
producer.send(tm);

logger.debug("Put event: \n{}\n onto JMS.", tm.getJMSMessageID());
Expand Down
52 changes: 52 additions & 0 deletions fcrepo-kernel/src/main/java/org/fcrepo/observer/FedoraEvent.java
@@ -0,0 +1,52 @@

package org.fcrepo.observer;

import java.util.Map;

import javax.jcr.RepositoryException;
import javax.jcr.observation.Event;

public class FedoraEvent implements Event {

Event e;

public FedoraEvent(Event e) {
this.e = e;
}

@Override
public int getType() {
return e.getType();
}

@Override
public String getPath() throws RepositoryException {
return e.getPath();
}

@Override
public String getUserID() {
return e.getUserID();
}

@Override
public String getIdentifier() throws RepositoryException {
return e.getIdentifier();
}

@Override
public Map getInfo() throws RepositoryException {
return null;
}

@Override
public String getUserData() throws RepositoryException {
return e.getUserData();
}

@Override
public long getDate() throws RepositoryException {
return e.getDate();
}

}
Expand Up @@ -54,7 +54,7 @@ public void onEvent(EventIterator events) {
for (Event e : filter(new Builder<Event>().addAll(events).build(),
eventFilter)) {
logger.debug("Putting event: " + e.toString() + " on the bus.");
eventBus.post(e);
eventBus.post(new FedoraEvent(e));
}
}

Expand Down
Expand Up @@ -6,7 +6,6 @@
import javax.jcr.Repository;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.observation.Event;

import org.fcrepo.AbstractTest;
import org.junit.After;
Expand Down Expand Up @@ -51,7 +50,7 @@ public void TestEventBusPublishing() throws RepositoryException {
}

@Subscribe
public void countMessages(Event e) {
public void countMessages(FedoraEvent e) {
eventBusMessageCount++;
}

Expand Down

0 comments on commit 87ccd5a

Please sign in to comment.