diff --git a/messaging/src/main/java/xdi2/messaging/target/impl/CompoundMessagingTarget.java b/messaging/src/main/java/xdi2/messaging/target/impl/CompoundMessagingTarget.java new file mode 100644 index 000000000..8918494e0 --- /dev/null +++ b/messaging/src/main/java/xdi2/messaging/target/impl/CompoundMessagingTarget.java @@ -0,0 +1,345 @@ +package xdi2.messaging.target.impl; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import xdi2.core.Statement; +import xdi2.core.exceptions.Xdi2MessagingException; +import xdi2.messaging.Message; +import xdi2.messaging.MessageEnvelope; +import xdi2.messaging.MessageResult; +import xdi2.messaging.Operation; +import xdi2.messaging.target.ExecutionContext; +import xdi2.messaging.target.interceptor.MessageEnvelopeInterceptor; +import xdi2.messaging.target.interceptor.MessageInterceptor; +import xdi2.messaging.target.interceptor.OperationInterceptor; +import xdi2.messaging.target.interceptor.ResultInterceptor; + +/** + * A messaging target that can combine multiple other messaging targets. + * + * Incoming messages will be sequentially applied to all individual targets, and + * a single message result will be produced. + * + * @author markus + */ +public class CompoundMessagingTarget extends AbstractMessagingTarget { + + private static final Log log = LogFactory.getLog(CompoundMessagingTarget.class); + + public static final String MODE_ALL = "all"; + public static final String MODE_FIRST_HANDLED = "first-handled"; + public static final String MODE_WRITE_FIRST_HANDLED = "write-first-handled"; + + private String mode; + private List messagingTargets; + + public CompoundMessagingTarget() { + + this.mode = MODE_ALL; + this.messagingTargets = new ArrayList (); + } + + @Override + public void init() throws Exception { + + super.init(); + + // add compound interceptors + + this.getMessageEnvelopeInterceptors().add(new CompoundMessageEnvelopeInterceptor()); + this.getMessageInterceptors().add(new CompoundMessageInterceptor()); + this.getOperationInterceptors().add(new CompoundOperationInterceptor()); + this.getResultInterceptors().add(new CompoundResultInterceptor()); + } + + /** + * We execute an operation by letting all our individual messaging targets + * execute it. + */ + public boolean execute(Operation operation, MessageResult messageResult, ExecutionContext executionContext) throws Xdi2MessagingException { + + boolean handled = false; + + for (int i=0; i getMessagingTargets() { + + return this.messagingTargets; + } + + public void setMessagingTargets(List messagingTargets) { + + this.messagingTargets = messagingTargets; + } + + private class CompoundMessageEnvelopeInterceptor implements MessageEnvelopeInterceptor { + + public boolean before(MessageEnvelope messageEnvelope, MessageResult messageResult, ExecutionContext executionContext) throws Xdi2MessagingException { + + // execute all message envelope interceptors + + for (int i=0; icore messaging client + server-logic server p2p webtools diff --git a/server-logic/.classpath b/server-logic/.classpath new file mode 100644 index 000000000..756245a64 --- /dev/null +++ b/server-logic/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/server-logic/.gitignore b/server-logic/.gitignore new file mode 100644 index 000000000..ea8c4bf7f --- /dev/null +++ b/server-logic/.gitignore @@ -0,0 +1 @@ +/target diff --git a/server-logic/.project b/server-logic/.project new file mode 100644 index 000000000..de152de6d --- /dev/null +++ b/server-logic/.project @@ -0,0 +1,23 @@ + + + xdi2-server-logic + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.m2e.core.maven2Nature + org.eclipse.jdt.core.javanature + + diff --git a/server-logic/.settings/org.eclipse.jdt.core.prefs b/server-logic/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 000000000..02b23c61e --- /dev/null +++ b/server-logic/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,13 @@ +#Sun Feb 26 14:46:59 CET 2012 +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.6 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.source=1.6 diff --git a/server-logic/.settings/org.eclipse.m2e.core.prefs b/server-logic/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 000000000..a81eab87e --- /dev/null +++ b/server-logic/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,5 @@ +#Sun Feb 26 14:46:59 CET 2012 +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/server-logic/pom.xml b/server-logic/pom.xml new file mode 100644 index 000000000..27caff996 --- /dev/null +++ b/server-logic/pom.xml @@ -0,0 +1,42 @@ + + + 4.0.0 + xdi2-server-logic + jar + xdi2-server-logic + + + xdi2 + xdi2 + 0.1-SNAPSHOT + + + + + javax.servlet + servlet-api + 2.5 + provided + + + xdi2 + xdi2-messaging + 0.1-SNAPSHOT + compile + + + org.springframework + spring-web + 3.0.0.RELEASE + compile + + + commons-logging + commons-logging + + + + + + diff --git a/server/src/main/java/xdi2/server/EndpointRegistry.java b/server-logic/src/main/java/xdi2/server/EndpointRegistry.java similarity index 100% rename from server/src/main/java/xdi2/server/EndpointRegistry.java rename to server-logic/src/main/java/xdi2/server/EndpointRegistry.java diff --git a/server/src/main/java/xdi2/server/EndpointServlet.java b/server-logic/src/main/java/xdi2/server/EndpointServlet.java similarity index 96% rename from server/src/main/java/xdi2/server/EndpointServlet.java rename to server-logic/src/main/java/xdi2/server/EndpointServlet.java index 9bc43cf1c..b547fb75e 100644 --- a/server/src/main/java/xdi2/server/EndpointServlet.java +++ b/server-logic/src/main/java/xdi2/server/EndpointServlet.java @@ -372,7 +372,6 @@ private MessageEnvelope readFromBody(HttpServletRequest request, HttpServletResp reader = XDIReaderRegistry.forMimeType(inputMimeType); if (reader == null) reader = XDIReaderRegistry.getDefault(); - if (reader == null) return(null); // read everything into an in-memory XDI graph (a message envelope) @@ -451,7 +450,6 @@ private void sendResult(MessageResult messageResult, HttpServletRequest request, } if (writer == null) writer = XDIWriterRegistry.getDefault(); - if (writer == null); // send out the message result diff --git a/server/src/main/java/xdi2/server/ServletExecutionContext.java b/server-logic/src/main/java/xdi2/server/ServletExecutionContext.java similarity index 100% rename from server/src/main/java/xdi2/server/ServletExecutionContext.java rename to server-logic/src/main/java/xdi2/server/ServletExecutionContext.java diff --git a/server/src/main/java/xdi2/server/package.html b/server-logic/src/main/java/xdi2/server/package.html similarity index 100% rename from server/src/main/java/xdi2/server/package.html rename to server-logic/src/main/java/xdi2/server/package.html diff --git a/server/.classpath b/server/.classpath index f34989b74..d60bed031 100644 --- a/server/.classpath +++ b/server/.classpath @@ -1,6 +1,5 @@ - diff --git a/server/pom.xml b/server/pom.xml index cd854bb08..5e3271c91 100644 --- a/server/pom.xml +++ b/server/pom.xml @@ -18,9 +18,6 @@ org.apache.maven.plugins maven-war-plugin 2.2 - - true - org.mortbay.jetty @@ -72,30 +69,12 @@ - - javax.servlet - servlet-api - 2.5 - provided - xdi2 - xdi2-messaging + xdi2-server-logic 0.1-SNAPSHOT compile - - org.springframework - spring-web - 3.0.0.RELEASE - compile - - - commons-logging - commons-logging - - - diff --git a/server/xdi2-file/graph.xdi b/server/xdi2-file/graph.xdi deleted file mode 100644 index 69a88e3b6..000000000 --- a/server/xdi2-file/graph.xdi +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/webtools/pom.xml b/webtools/pom.xml index f1b177d69..bf0119ac6 100644 --- a/webtools/pom.xml +++ b/webtools/pom.xml @@ -95,9 +95,8 @@ xdi2 - xdi2-server + xdi2-server-logic 0.1-SNAPSHOT - classes compile