You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rh...@apache.org on 2007/09/17 23:06:54 UTC

svn commit: r576587 - in /incubator/qpid/trunk/qpid/java/common: ./ src/main/java/org/apache/qpidity/transport/ src/main/java/org/apache/qpidity/transport/network/

Author: rhs
Date: Mon Sep 17 14:06:53 2007
New Revision: 576587

URL: http://svn.apache.org/viewvc?rev=576587&view=rev
Log:
 * ProtocolEvent.Switch --> ProtocolDelegate

 * Delegate --> MethodDelegate

 * Added method dispatching as a separate delegation level to the
   hierarchy underneath ProtocolDelegate.

Added:
    incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ProtocolDelegate.java   (with props)
Modified:
    incubator/qpid/trunk/qpid/java/common/generate
    incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/AbstractDelegate.java
    incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Channel.java
    incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ChannelDelegate.java
    incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ConnectionDelegate.java
    incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Data.java
    incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Header.java
    incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Method.java
    incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ProtocolError.java
    incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ProtocolEvent.java
    incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ProtocolHeader.java
    incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/SessionDelegate.java
    incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/network/Disassembler.java

Modified: incubator/qpid/trunk/qpid/java/common/generate
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/generate?rev=576587&r1=576586&r2=576587&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/generate (original)
+++ incubator/qpid/trunk/qpid/java/common/generate Mon Sep 17 14:06:53 2007
@@ -210,7 +210,7 @@
     out.line("    }")
 
     out.line()
-    out.line("    public <C> void delegate(C context, Delegate<C> delegate) {")
+    out.line("    public <C> void dispatch(C context, MethodDelegate<C> delegate) {")
     out.line("        delegate.%s(context, this);" % dromedary(self.name))
     out.line("    }")
 
@@ -365,8 +365,8 @@
 fct.line("}");
 fct.write()
 
-dlg = Output(out_dir, out_pkg, "Delegate")
-dlg.line("public abstract class Delegate<C> extends AbstractDelegate<C> {")
+dlg = Output(out_dir, out_pkg, "MethodDelegate")
+dlg.line("public abstract class MethodDelegate<C> {")
 for s in structs:
   dlg.line("    public void %s(C context, %s struct) {}" %
            (dromedary(s.name), s.name))

Modified: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/AbstractDelegate.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/AbstractDelegate.java?rev=576587&r1=576586&r2=576587&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/AbstractDelegate.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/AbstractDelegate.java Mon Sep 17 14:06:53 2007
@@ -1,40 +0,0 @@
-/*
- *
- * 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.apache.qpidity.transport;
-
-
-/**
- * AbstractDelegate
- *
- */
-
-class AbstractDelegate<C>
-{
-
-    public void init(C context, ProtocolHeader header) {}
-
-    public void error(C context, ProtocolError error) {}
-
-    public void header(C context, Header header) {}
-
-    public void data(C context, Data data) {}
-
-}

Modified: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Channel.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Channel.java?rev=576587&r1=576586&r2=576587&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Channel.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Channel.java Mon Sep 17 14:06:53 2007
@@ -35,12 +35,13 @@
  * @author Rafael H. Schloming
  */
 
-public class Channel extends Invoker implements Receiver<ProtocolEvent>
+public class Channel extends Invoker
+    implements Receiver<ProtocolEvent>, ProtocolDelegate<Void>
 {
 
     final private Connection connection;
     final private int channel;
-    final private Delegate<Channel> delegate;
+    final private MethodDelegate<Channel> delegate;
     final private SessionDelegate sessionDelegate;
     // session may be null
     private Session session;
@@ -63,38 +64,49 @@
 
     public void received(ProtocolEvent event)
     {
-        switch (event.getEncodedTrack())
+        event.delegate(null, this);
+    }
+
+    public void init(Void v, ProtocolHeader hdr)
+    {
+        connection.getConnectionDelegate().init(this, hdr);
+    }
+
+    public void method(Void v, Method method)
+    {
+        switch (method.getEncodedTrack())
         {
         case L1:
-            event.delegate(this, connection.getConnectionDelegate());
+            method.dispatch(this, connection.getConnectionDelegate());
             break;
         case L2:
-            event.delegate(this, delegate);
+            method.dispatch(this, delegate);
             break;
         case L3:
-            event.delegate(session, sessionDelegate);
+            method.delegate(session, sessionDelegate);
             break;
         case L4:
-            // XXX
-            if (event instanceof Method)
-            {
-                Method method = (Method) event;
-                method.setId(session.nextCommandId());
-                method.delegate(session, sessionDelegate);
-                if (!method.hasPayload())
-                {
-                    session.processed(method);
-                }
-            }
-            else
-            {
-                event.delegate(session, sessionDelegate);
-            }
+            method.delegate(session, sessionDelegate);
             break;
         default:
             throw new IllegalStateException
-                ("unknown track: " + event.getEncodedTrack());
+                ("unknown track: " + method.getEncodedTrack());
         }
+    }
+
+    public void header(Void v, Header header)
+    {
+        header.delegate(session, sessionDelegate);
+    }
+
+    public void data(Void v, Data data)
+    {
+        data.delegate(session, sessionDelegate);
+    }
+
+    public void error(Void v, ProtocolError error)
+    {
+        error.delegate(session, sessionDelegate);
     }
 
     public void closed()

Modified: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ChannelDelegate.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ChannelDelegate.java?rev=576587&r1=576586&r2=576587&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ChannelDelegate.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ChannelDelegate.java Mon Sep 17 14:06:53 2007
@@ -29,7 +29,7 @@
  * @author Rafael H. Schloming
  */
 
-class ChannelDelegate extends Delegate<Channel>
+class ChannelDelegate extends MethodDelegate<Channel>
 {
 
     public @Override void sessionOpen(Channel channel, SessionOpen open)

Modified: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ConnectionDelegate.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ConnectionDelegate.java?rev=576587&r1=576586&r2=576587&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ConnectionDelegate.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ConnectionDelegate.java Mon Sep 17 14:06:53 2007
@@ -47,7 +47,7 @@
  *
  * the connectionClose is kind of different for both sides
  */
-public abstract class ConnectionDelegate extends Delegate<Channel>
+public abstract class ConnectionDelegate extends MethodDelegate<Channel>
 {
     private String _username = "guest";
     private String _password = "guest";;
@@ -68,7 +68,7 @@
         _negotiationCompleteLock = negotiationCompleteLock;
     }
 
-    @Override public void init(Channel ch, ProtocolHeader hdr)
+    public void init(Channel ch, ProtocolHeader hdr)
     {
         System.out.println(hdr);
         // XXX: hardcoded version
@@ -85,11 +85,6 @@
 
             ch.connectionStart(hdr.getMajor(), hdr.getMinor(), null, "PLAIN", "utf8");
         }
-    }
-
-    @Override public void error(Channel ch, ProtocolError error)
-    {
-        throw new RuntimeException(error.getMessage());
     }
 
     // ----------------------------------------------

Modified: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Data.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Data.java?rev=576587&r1=576586&r2=576587&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Data.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Data.java Mon Sep 17 14:06:53 2007
@@ -71,14 +71,9 @@
         return Frame.L4;
     }
 
-    public <C> void delegate(C context, Delegate<C> delegate)
+    public <C> void delegate(C context, ProtocolDelegate<C> delegate)
     {
         delegate.data(context, this);
-    }
-
-    public <C> void delegate(C context, Switch sw)
-    {
-        sw.data(context, this);
     }
 
 }

Modified: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Header.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Header.java?rev=576587&r1=576586&r2=576587&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Header.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Header.java Mon Sep 17 14:06:53 2007
@@ -63,14 +63,9 @@
         return Frame.L4;
     }
 
-    public <C> void delegate(C context, Delegate<C> delegate)
+    public <C> void delegate(C context, ProtocolDelegate<C> delegate)
     {
         delegate.header(context, this);
-    }
-
-    public <C> void delegate(C context, Switch sw)
-    {
-        sw.header(context, this);
     }
 
 }

Modified: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Method.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Method.java?rev=576587&r1=576586&r2=576587&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Method.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Method.java Mon Sep 17 14:06:53 2007
@@ -54,9 +54,11 @@
 
     public abstract byte getEncodedTrack();
 
-    public <C> void delegate(C context, Switch sw)
+    public abstract <C> void dispatch(C context, MethodDelegate<C> delegate);
+
+    public <C> void delegate(C context, ProtocolDelegate<C> delegate)
     {
-        sw.method(context, this);
+        delegate.method(context, this);
     }
 
 }

Added: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ProtocolDelegate.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ProtocolDelegate.java?rev=576587&view=auto
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ProtocolDelegate.java (added)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ProtocolDelegate.java Mon Sep 17 14:06:53 2007
@@ -0,0 +1,42 @@
+/*
+ *
+ * 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.apache.qpidity.transport;
+
+
+/**
+ * ProtocolDelegate
+ *
+ */
+
+public interface ProtocolDelegate<C>
+{
+
+    void init(C context, ProtocolHeader header);
+
+    void method(C context, Method method);
+
+    void header(C context, Header header);
+
+    void data(C context, Data data);
+
+    void error(C context, ProtocolError error);
+
+}

Propchange: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ProtocolDelegate.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ProtocolError.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ProtocolError.java?rev=576587&r1=576586&r2=576587&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ProtocolError.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ProtocolError.java Mon Sep 17 14:06:53 2007
@@ -54,19 +54,14 @@
         return String.format(format, args);
     }
 
-    public <C> void delegate(C context, Switch sw)
+    public <C> void delegate(C context, ProtocolDelegate<C> delegate)
     {
-        sw.error(context, this);
+        delegate.error(context, this);
     }
 
     public void delegate(NetworkDelegate delegate)
     {
         delegate.error(this);
-    }
-
-    public <C> void delegate(C context, Delegate<C> delegate)
-    {
-        delegate.error(context, this);
     }
 
 }

Modified: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ProtocolEvent.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ProtocolEvent.java?rev=576587&r1=576586&r2=576587&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ProtocolEvent.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ProtocolEvent.java Mon Sep 17 14:06:53 2007
@@ -29,21 +29,8 @@
 public interface ProtocolEvent
 {
 
-    public interface Switch<C>
-    {
-        void init(C context, ProtocolHeader header);
-        void method(C context, Method method);
-        void header(C context, Header header);
-        void data(C context, Data data);
-        void error(C context, ProtocolError error);
-    }
-
-    // XXX: could do this switching with cascading defaults for the
-    // specific dispatch methods
-    <C> void delegate(C context, Switch sw);
-
-    <C> void delegate(C context, Delegate<C> delegate);
-
     byte getEncodedTrack();
+
+    <C> void delegate(C context, ProtocolDelegate<C> delegate);
 
 }

Modified: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ProtocolHeader.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ProtocolHeader.java?rev=576587&r1=576586&r2=576587&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ProtocolHeader.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ProtocolHeader.java Mon Sep 17 14:06:53 2007
@@ -89,19 +89,14 @@
         return buf;
     }
 
-    public <C> void delegate(C context, Switch sw)
+    public <C> void delegate(C context, ProtocolDelegate<C> delegate)
     {
-        sw.init(context, this);
+        delegate.init(context, this);
     }
 
     public void delegate(NetworkDelegate delegate)
     {
         delegate.init(this);
-    }
-
-    public <C> void delegate(C context, Delegate<C> delegate)
-    {
-        delegate.init(context, this);
     }
 
     public String toString()

Modified: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/SessionDelegate.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/SessionDelegate.java?rev=576587&r1=576586&r2=576587&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/SessionDelegate.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/SessionDelegate.java Mon Sep 17 14:06:53 2007
@@ -20,6 +20,8 @@
  */
 package org.apache.qpidity.transport;
 
+import org.apache.qpidity.transport.network.Frame;
+
 
 /**
  * SessionDelegate
@@ -27,10 +29,29 @@
  * @author Rafael H. Schloming
  */
 
-public abstract class SessionDelegate extends Delegate<Session>
+public abstract class SessionDelegate
+    extends MethodDelegate<Session>
+    implements ProtocolDelegate<Session>
 {
+    public void init(Session ssn, ProtocolHeader hdr) { }
+
+    public void method(Session ssn, Method method) {
+        if (method.getEncodedTrack() == Frame.L4)
+        {
+            method.setId(ssn.nextCommandId());
+            method.dispatch(ssn, this);
+            if (!method.hasPayload())
+            {
+                ssn.processed(method);
+            }
+        }
+    }
+
+    public void header(Session ssn, Header header) { }
+
+    public void data(Session ssn, Data data) { }
 
-    private static final Struct[] EMPTY_STRUCT_ARRAY = {};
+    public void error(Session ssn, ProtocolError error) { }
 
     @Override public void executionResult(Session ssn, ExecutionResult result)
     {

Modified: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/network/Disassembler.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/network/Disassembler.java?rev=576587&r1=576586&r2=576587&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/network/Disassembler.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/network/Disassembler.java Mon Sep 17 14:06:53 2007
@@ -27,9 +27,10 @@
 import org.apache.qpidity.transport.Data;
 import org.apache.qpidity.transport.Header;
 import org.apache.qpidity.transport.Method;
-import org.apache.qpidity.transport.ProtocolHeader;
+import org.apache.qpidity.transport.ProtocolDelegate;
 import org.apache.qpidity.transport.ProtocolError;
 import org.apache.qpidity.transport.ProtocolEvent;
+import org.apache.qpidity.transport.ProtocolHeader;
 import org.apache.qpidity.transport.Sender;
 import org.apache.qpidity.transport.Struct;
 
@@ -45,8 +46,8 @@
  *
  */
 
-public class Disassembler
-    implements Sender<ConnectionEvent>, ProtocolEvent.Switch<ConnectionEvent>
+public class Disassembler implements Sender<ConnectionEvent>,
+                                     ProtocolDelegate<ConnectionEvent>
 {
 
     private final Sender<NetworkEvent> sender;