Added support for switch idle state 74/1874/4
authorMichal Polkorab <michal.polkorab@pantheon.sk>
Mon, 14 Oct 2013 12:27:25 +0000 (14:27 +0200)
committerMichal Polkorab <michal.polkorab@pantheon.sk>
Mon, 14 Oct 2013 13:55:39 +0000 (15:55 +0200)
Added jar packaging for test classes

Signed-off-by: Michal Polkorab <michal.polkorab@pantheon.sk>
Change-Id: Iaa5cec646cbe2de7cb1f97b16be4f481c7c31673

15 files changed:
openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/connection/ConnectionConfiguration.java
openflow-protocol-api/src/main/yang/openflow-augments.yang
openflow-protocol-api/src/main/yang/openflow-extensible-match.yang
openflow-protocol-api/src/main/yang/system-notifications.yang
openflow-protocol-impl/pom.xml
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/connection/ConnectionAdapterImpl.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/connection/SwitchConnectionProviderImpl.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/IdleHandler.java [new file with mode: 0644]
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/PublishingChannelInitializer.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/SslContextFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/TcpHandler.java
openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/integration/IntegrationTest.java
openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/integration/MockPlugin.java
openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/integration/TestingConnConfigImpl.java
pom.xml

index 139d84ec2b6380835447176129d682caaba03987..a42b000c267694f87e26229630580418840054cd 100644 (file)
@@ -4,6 +4,10 @@ package org.opendaylight.openflowjava.protocol.api.connection;
 
 import java.net.InetAddress;
 
+import javax.net.ssl.SSLEngine;
+
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.system.rev130927.SwitchIdleEvent;
+
 /**
  * @author mirehak
  *
@@ -41,5 +45,15 @@ public interface ConnectionConfiguration {
      * @return encryption feature support
      */
     public FEATURE_SUPPORT getTlsSupport();
+    
+    /**
+     * @return silence time (in milliseconds) - after this time {@link SwitchIdleEvent} message is sent upstream 
+     */
+    public long getSwitchIdleTimeout();
+    
+    /**
+     * @return seed for {@link SSLEngine}
+     */
+    public Object getSslContext();
 
 }
index 13f8b00a715eed776225b790c08090e0702f5fa3..badda304f6413a59924d5821e0ae41ff0064058e 100644 (file)
@@ -1,17 +1,29 @@
 module openflow-augments {\r
     namespace "urn:opendaylight:openflow:augments";\r
     prefix "aug";\r
-    \r
+\r
     import openflow-protocol {prefix ofproto;}\r
+    import openflow-extensible-match {prefix oxm;}\r
 \r
 \r
     revision "2013-10-02" {\r
         description "Initial model";\r
     }\r
 \r
-     augment "/ofproto:hello-message/ofproto:elements" {\r
-            leaf uid {\r
-                type uint16;\r
-            }\r
+     augment "/oxm:oxm-container/oxm:match-entries" {\r
+         uses oxm:in-port;\r
+         /* common augment for fields:\r
+            OXM_OF_IN_PORT\r
+            OXM_OF_IN_PHY_PORT\r
+         */\r
+     }\r
+\r
+     augment "/oxm:oxm-container/oxm:match-entries" {\r
+         uses oxm:metadata;\r
+         /* common augment for fields:\r
+            OXM_OF_METADATA\r
+            OXM_OF_TUNNEL_ID\r
+         */\r
      }\r
+\r
 }
\ No newline at end of file
index 3845f1ab5b9002fb779f2f8ca58148d63a5085b1..54decb1a9fe6928fc5e6bfb975331c73c5da81d3 100644 (file)
@@ -21,28 +21,28 @@ module openflow-extensible-match {
     }
     
     // oxm classes
-        identity class {
+        identity clazz {
             description "Base identity for OXM classes";
         }
 
 
         identity nxm-0-class {
             description "Backward compatibility with NXM";
-            base class;
+            base clazz;
         }
         identity nxm-1-class {
             description "Backward compatibility with NXM";
-            base class;
+            base clazz;
         }
         identity openflow-basic-class {
             description "Basic class for OpenFlow";
-            base class;
+            base clazz;
         }
         identity experimenter-class {
             description 
                 "Marks Experimenter match type class.
                 All experimenter match classes MUST use this class as a base.";
-            base class;
+            base clazz;
         }
 
 
@@ -243,6 +243,9 @@ module openflow-extensible-match {
             leaf address {
                 type yang:mac-address;
             }
+            leaf mask {
+                type binary;
+            }
         }
         grouping eth-src {
             description "Ethernet source address.";
@@ -258,9 +261,6 @@ module openflow-extensible-match {
             leaf type {
                 type oft:ether-type; // Needs to define that as general model
             }
-            leaf mask {
-                type binary;
-            }
         }
         grouping vlan-vid {
             description "VLAN id.";
@@ -739,11 +739,15 @@ module openflow-extensible-match {
             }
         }
         
+        container oxm-container {
+            uses oxm-fields;
+        }
+        
         grouping oxm-fields {
             list match-entries {
                 leaf oxm-class {
                     type identityref {
-                        base class;
+                        base clazz;
                     }
                 }
                 leaf oxm-match-field {
@@ -751,9 +755,6 @@ module openflow-extensible-match {
                         base match-field;
                     }
                 }
-                leaf has-mask {
-                    type boolean;
-                }
             }
         }
         
index b4d1e02b385b371cd02bbfaf17d0a5d1ca3296fb..a74f2744c068f62983c657c88b042d395a02cdf0 100644 (file)
@@ -5,11 +5,17 @@ module system-notifications {
     revision "2013-09-27" {
         //description "Initial model";
     }
-    
+
     notification disconnect-event {
         leaf info {
             type string;
-        }            
+        }
+    }
+
+    notification switch-idle-event {
+        leaf info {
+            type string;
+        }
     }
-    
+
 }
\ No newline at end of file
index dd3632018dccccb998461108a686111dff2045e0..0179a7d393e7c486b5e7a18126306ee28d6d435b 100644 (file)
                     </instructions>
                 </configuration>
             </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                          <goal>test-jar</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
         </plugins>
     </build>
     
index f2e5fdcaf553e5123da807ba37890dfdb832797b..0658b7146d4bbb11a48f70a3134dc587256df0fa 100644 (file)
@@ -51,6 +51,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.SetConfigInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.TableModInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.system.rev130927.DisconnectEvent;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.system.rev130927.SwitchIdleEvent;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.system.rev130927.SystemNotificationsListener;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.Notification;
@@ -96,19 +97,10 @@ public class ConnectionAdapterImpl implements ConnectionFacade {
         responseCache = CacheBuilder.newBuilder()
                 .concurrencyLevel(1)
                 .expireAfterWrite(RPC_RESPONSE_EXPIRATION, TimeUnit.MINUTES)
-                .removalListener(new RemovalListener<RpcResponseKey, SettableFuture<?>>() {
-
-                    @Override
-                    public void onRemoval(
-                            RemovalNotification<RpcResponseKey, SettableFuture<?>> notification) {
-                        SettableFuture<?> future = notification.getValue();
-                        if (!future.isDone()) {
-                            LOG.warn("rpc response discarded: " + notification.getKey());
-                               future.cancel(true);
-                        }
-                    }
-                }).build();
+                .removalListener(new ResponseRemovalListener()).build();
         LOG.info("ConnectionAdapter created");
+    
+    
     }
     
     /**
@@ -252,7 +244,9 @@ public class ConnectionAdapterImpl implements ConnectionFacade {
                 systemListener.onDisconnectEvent((DisconnectEvent) message);
                 responseCache.invalidateAll();
                 disconnectOccured = true;
-            } 
+            } else if (message instanceof SwitchIdleEvent) {
+                systemListener.onSwitchIdleEvent((SwitchIdleEvent) message);
+            }
             // OpenFlow messages
               else if (message instanceof EchoRequestMessage) {
                 messageListener.onEchoRequestMessage((EchoRequestMessage) message);
@@ -515,5 +509,18 @@ public class ConnectionAdapterImpl implements ConnectionFacade {
             throw new IllegalStateException("Missing listeners: " + buffer.toString());
         }
     }
+    
+    static class ResponseRemovalListener implements RemovalListener<RpcResponseKey, SettableFuture<?>> {
+
+        @Override
+        public void onRemoval(
+                RemovalNotification<RpcResponseKey, SettableFuture<?>> notification) {
+            SettableFuture<?> future = notification.getValue();
+            if (!future.isDone()) {
+                LOG.warn("rpc response discarded: " + notification.getKey());
+                future.cancel(true);
+            }
+        }
+    }
 
 }
index 8d21a2fdc8b89db6a7c5a82db0f554cb7bed8f21..0cd2bef54134c6b48140fa5c68779c24da255e14 100644 (file)
@@ -5,7 +5,6 @@ package org.opendaylight.openflowjava.protocol.impl.connection;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 import java.util.concurrent.Future;
@@ -27,34 +26,34 @@ import com.google.common.util.concurrent.SettableFuture;
  */
 public class SwitchConnectionProviderImpl implements SwitchConnectionProvider {
     
-    private static final Logger LOG = LoggerFactory
+    private static final Logger LOGGER = LoggerFactory
             .getLogger(SwitchConnectionProviderImpl.class);
     private SwitchConnectionHandler switchConnectionHandler;
     private Set<ServerFacade> serverLot;
 
     @Override
     public void configure(Collection<ConnectionConfiguration> connConfigs) {
-        LOG.debug("Configurating ..");
+        LOGGER.debug("Configuring ..");
 
         //TODO - configure servers according to configuration
         serverLot = new HashSet<>();
-        for (Iterator<ConnectionConfiguration> iterator = connConfigs.iterator(); iterator.hasNext();) {
-            ConnectionConfiguration connConfig = iterator.next();
+        for (ConnectionConfiguration connConfig : connConfigs) {
             TcpHandler server = new TcpHandler(connConfig.getAddress(), connConfig.getPort());
             server.setSwitchConnectionHandler(switchConnectionHandler);
+            server.setSwitchIdleTimeout(connConfig.getSwitchIdleTimeout());
             serverLot.add(server);
         }
     }
 
     @Override
     public void setSwitchConnectionHandler(SwitchConnectionHandler switchConnectionHandler) {
-        LOG.debug("setSwitchConnectionHanler");
+        LOGGER.debug("setSwitchConnectionHandler");
         this.switchConnectionHandler = switchConnectionHandler;
     }
 
     @Override
     public Future<List<Boolean>> shutdown() {
-        LOG.debug("Shutdown summoned");
+        LOGGER.debug("Shutdown summoned");
         ListenableFuture<List<Boolean>> result = SettableFuture.create();
         try {
             List<ListenableFuture<Boolean>> shutdownChain = new ArrayList<>();
@@ -77,7 +76,7 @@ public class SwitchConnectionProviderImpl implements SwitchConnectionProvider {
 
     @Override
     public Future<List<Boolean>> startup() {
-        LOG.debug("startup summoned");
+        LOGGER.debug("startup summoned");
         ListenableFuture<List<Boolean>> result = SettableFuture.create();
         try {
             if (serverLot.isEmpty()) {
diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/IdleHandler.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/IdleHandler.java
new file mode 100644 (file)
index 0000000..c3bd7ab
--- /dev/null
@@ -0,0 +1,36 @@
+package org.opendaylight.openflowjava.protocol.impl.core;\r
+\r
+import java.util.concurrent.TimeUnit;\r
+\r
+import io.netty.channel.ChannelHandlerContext;\r
+import io.netty.handler.timeout.IdleState;\r
+import io.netty.handler.timeout.IdleStateEvent;\r
+import io.netty.handler.timeout.IdleStateHandler;\r
+\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.system.rev130927.SwitchIdleEventBuilder;\r
+import org.slf4j.Logger;\r
+import org.slf4j.LoggerFactory;\r
+\r
+public class IdleHandler extends IdleStateHandler{\r
+    \r
+    public IdleHandler(long readerIdleTime, long writerIdleTime,\r
+            long allIdleTime, TimeUnit unit) {\r
+        super(readerIdleTime, writerIdleTime, allIdleTime, unit);\r
+    }\r
+\r
+\r
+    private static final Logger LOGGER = LoggerFactory.getLogger(IdleHandler.class);\r
+\r
+    \r
+    @Override\r
+    protected void channelIdle(ChannelHandlerContext ctx, IdleStateEvent evt)\r
+            throws Exception {\r
+        if ((evt.state() == IdleState.READER_IDLE) && (evt.isFirst())) {\r
+            LOGGER.info("Switch idle");\r
+            SwitchIdleEventBuilder builder = new SwitchIdleEventBuilder();\r
+            builder.setInfo("Switch idle");\r
+            ctx.fireChannelRead(builder.build());\r
+        }\r
+    }\r
+\r
+}\r
index 5866ebf202a1ad3dbe5d339919528bd47d6d6961..0fab3e4a1fe33b05f719a8cf146f57eb1cf9a6a6 100644 (file)
@@ -7,6 +7,7 @@ import io.netty.channel.socket.SocketChannel;
 \r
 import java.net.InetAddress;\r
 import java.util.Iterator;\r
+import java.util.concurrent.TimeUnit;\r
 \r
 import org.opendaylight.openflowjava.protocol.api.connection.SwitchConnectionHandler;\r
 import org.opendaylight.openflowjava.protocol.impl.connection.ConnectionAdapterFactory;\r
@@ -25,6 +26,7 @@ public class PublishingChannelInitializer extends ChannelInitializer<SocketChann
             .getLogger(PublishingChannelInitializer.class);\r
     private DefaultChannelGroup allChannels;\r
     private SwitchConnectionHandler switchConnectionHandler;\r
+    private long switchIdleTimeout;\r
     \r
     /**\r
      * default ctor\r
@@ -50,6 +52,7 @@ public class PublishingChannelInitializer extends ChannelInitializer<SocketChann
             LOGGER.debug("calling plugin: "+switchConnectionHandler);\r
             switchConnectionHandler.onSwitchConnected(connectionAdapter);\r
             connectionAdapter.checkListeners();\r
+            ch.pipeline().addLast(COMPONENT_NAMES.IDLE_HANDLER.name(), new IdleHandler(switchIdleTimeout, 0, 0, TimeUnit.MILLISECONDS));\r
             ch.pipeline().addLast(COMPONENT_NAMES.TLS_DETECTOR.name(), new TlsDetector());\r
             ch.pipeline().addLast(COMPONENT_NAMES.DELEGATING_INBOUND_HANDLER.name(), new DelegatingInboundHandler(connectionAdapter));\r
         } catch (Exception e) {\r
@@ -78,4 +81,12 @@ public class PublishingChannelInitializer extends ChannelInitializer<SocketChann
     public void setSwitchConnectionHandler(SwitchConnectionHandler switchConnectionHandler) {\r
         this.switchConnectionHandler = switchConnectionHandler;\r
     }\r
+\r
+    /**\r
+     * @param switchIdleTimeout the switchIdleTimeout to set\r
+     */\r
+    public void setSwitchIdleTimeout(long switchIdleTimeout) {\r
+        this.switchIdleTimeout = switchIdleTimeout;\r
+    }\r
+    \r
 }\r
index ab27204370c24bd4e8b4014c63e56c920742a3fa..1f79536263e1ba99505725230c1a272f5724b124 100644 (file)
@@ -39,6 +39,9 @@ public final class SslContextFactory {
 
             serverContext = SSLContext.getInstance(PROTOCOL);
             serverContext.init(kmf.getKeyManagers(), null, null);
+        } catch (RuntimeException e) {
+            throw new Error(
+                    "Failed to initialize the server-side SSLContext", e);
         } catch (Exception e) {
             throw new Error(
                     "Failed to initialize the server-side SSLContext", e);
index d4270bd16c3c46dc52be3b78008dc5c8e015a31f..712f309492b0913e88b320c6f1fd91084720fb73 100644 (file)
@@ -45,7 +45,11 @@ public class TcpHandler implements ServerFacade {
     public static enum COMPONENT_NAMES {
 
         /**
-         * First component in pipeline - detecting TLS connections
+         * Detects switch idle state
+         */
+        IDLE_HANDLER,
+        /**
+         * Detects TLS connections
          */
         TLS_DETECTOR,
         /**
@@ -197,4 +201,8 @@ public class TcpHandler implements ServerFacade {
         channelInitializer.setSwitchConnectionHandler(switchConnectionHandler);
     }
     
+    public void setSwitchIdleTimeout(long switchIdleTimeout) {
+        channelInitializer.setSwitchIdleTimeout(switchIdleTimeout);
+    }
+    
 }
index 51848fe36e154523d8168abd336304572c95a5b7..142ed1348585ee73589e258c3cc515db57062098 100644 (file)
@@ -2,7 +2,6 @@
 package org.opendaylight.openflowjava.protocol.impl.integration;\r
 \r
 import java.net.InetAddress;\r
-import java.net.UnknownHostException;\r
 import java.util.ArrayList;\r
 import java.util.List;\r
 import java.util.concurrent.ExecutionException;\r
@@ -27,6 +26,7 @@ public class IntegrationTest {
     public static final String OF_BINARY_MESSAGE_INPUT_TXT = "OFBinaryMessageInput.txt";\r
     private static final int DEFAULT_PORT = 6633;\r
     private static final FEATURE_SUPPORT DEFAULT_TLS_SUPPORT = FEATURE_SUPPORT.NOT_SUPPORTED;\r
+    private static final int SWITCH_IDLE_TIMEOUT = 2000;\r
     \r
     protected static final Logger LOGGER = LoggerFactory\r
             .getLogger(IntegrationTest.class);\r
@@ -37,11 +37,18 @@ public class IntegrationTest {
     private MockPlugin mockPlugin;\r
 \r
     /**\r
-     * @throws UnknownHostException\r
+     * @throws Exception\r
      */\r
     @Before\r
-    public void setUp() throws UnknownHostException {\r
+    public void setUp() throws Exception {\r
         startupAddress = InetAddress.getLocalHost();\r
+        mockPlugin = new MockPlugin();\r
+        SwitchConnectionProviderImpl scpimpl = new SwitchConnectionProviderImpl();\r
+        scpimpl.setSwitchConnectionHandler(mockPlugin);\r
+        List<ConnectionConfiguration> configs = new ArrayList<>();\r
+        configs.add(new TestingConnConfigImpl(startupAddress, DEFAULT_PORT, DEFAULT_TLS_SUPPORT, SWITCH_IDLE_TIMEOUT));\r
+        scpimpl.configure(configs);\r
+        scpimpl.startup().get(CONNECTION_TIMEOUT, TimeUnit.MILLISECONDS);\r
     }\r
     \r
     /**\r
@@ -50,14 +57,6 @@ public class IntegrationTest {
      */\r
     @Test\r
     public void testCommunication() throws Exception {\r
-        mockPlugin = new MockPlugin();\r
-        SwitchConnectionProviderImpl scpimpl = new SwitchConnectionProviderImpl();\r
-        scpimpl.setSwitchConnectionHandler(mockPlugin);\r
-        List<ConnectionConfiguration> configs = new ArrayList<>();\r
-        configs.add(new TestingConnConfigImpl(startupAddress, DEFAULT_PORT, DEFAULT_TLS_SUPPORT));\r
-        scpimpl.configure(configs);\r
-        scpimpl.startup().get(CONNECTION_TIMEOUT, TimeUnit.MILLISECONDS);\r
-\r
         int amountOfCLients = 1;\r
         List<SimpleClient> clients = createAndStartClient(amountOfCLients);\r
         SimpleClient firstClient = clients.get(0);\r
@@ -71,19 +70,11 @@ public class IntegrationTest {
      */\r
     //@Test\r
     public void testCommunicationWithVM() throws Exception {\r
-        mockPlugin = new MockPlugin();\r
-        SwitchConnectionProviderImpl scpimpl = new SwitchConnectionProviderImpl();\r
-        scpimpl.setSwitchConnectionHandler(mockPlugin);\r
-        List<ConnectionConfiguration> configs = new ArrayList<>();\r
-        configs.add(new TestingConnConfigImpl(startupAddress, DEFAULT_PORT, DEFAULT_TLS_SUPPORT));\r
-        scpimpl.configure(configs);\r
-        scpimpl.startup().get(CONNECTION_TIMEOUT, TimeUnit.MILLISECONDS);\r
         mockPlugin.getFinishedFuture().get();\r
     }\r
     \r
     /**\r
      * @param amountOfCLients \r
-     * @param dataLimit TODO\r
      * @return new clients up and running\r
      * @throws InterruptedException\r
      * @throws ExecutionException\r
index 5603a473f3e26cb54ceae1fe61f4bcf211d57a51..3ae7a9d8c78f3636be1b3129fbdaa14c211d4af3 100644 (file)
@@ -29,6 +29,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PacketInMessage;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortStatusMessage;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.system.rev130927.DisconnectEvent;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.system.rev130927.SwitchIdleEvent;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.system.rev130927.SystemNotificationsListener;\r
 import org.opendaylight.yangtools.yang.common.RpcError;\r
 import org.opendaylight.yangtools.yang.common.RpcResult;\r
@@ -46,6 +47,7 @@ public class MockPlugin implements OpenflowProtocolListener, SwitchConnectionHan
     private static final Logger LOGGER = LoggerFactory.getLogger(MockPlugin.class);\r
     private ConnectionAdapter adapter;\r
     private SettableFuture<Void> finishedFuture;\r
+    private int idleCounter = 0;\r
     \r
     public MockPlugin() {\r
         finishedFuture = SettableFuture.create();\r
@@ -172,5 +174,15 @@ public class MockPlugin implements OpenflowProtocolListener, SwitchConnectionHan
         return finishedFuture;\r
     }\r
 \r
+    @Override\r
+    public void onSwitchIdleEvent(SwitchIdleEvent notification) {\r
+        LOGGER.debug("switch status: "+notification.getInfo());\r
+        idleCounter ++;\r
+    }\r
+    \r
+    public int getIdleCounter() {\r
+        return idleCounter;\r
+    }\r
+\r
 \r
 }\r
index 2db3b5b221f9ece045ba30b438724e4c112aab7c..a7e9ef0ebaa27ba383d0cf9b364edb53b19da71c 100644 (file)
@@ -15,12 +15,14 @@ public class TestingConnConfigImpl implements ConnectionConfiguration {
     private int port;\r
     private Object transferProtocol;\r
     private FEATURE_SUPPORT tlsSupport;\r
+    private long switchIdleTimeout;\r
     \r
     // TODO - implement transferProtocol\r
-    public TestingConnConfigImpl(InetAddress address, int port, FEATURE_SUPPORT tlsSupport) {\r
+    public TestingConnConfigImpl(InetAddress address, int port, FEATURE_SUPPORT tlsSupport, long switchIdleTimeout) {\r
         this.address = address;\r
         this.port = port;\r
         this.tlsSupport = tlsSupport;\r
+        this.switchIdleTimeout = switchIdleTimeout;\r
     }\r
     \r
     @Override\r
@@ -43,4 +45,15 @@ public class TestingConnConfigImpl implements ConnectionConfiguration {
         return tlsSupport;\r
     }\r
 \r
+    @Override\r
+    public long getSwitchIdleTimeout() {\r
+        return switchIdleTimeout;\r
+    }\r
+\r
+    @Override\r
+    public Object getSslContext() {\r
+        // TODO Auto-generated method stub\r
+        return null;\r
+    }\r
+\r
 }\r
diff --git a/pom.xml b/pom.xml
index eb5c77f55399755c5376de3f310ac332cff5c570..ad45ee88d494cfb3d8f4c7a152eb4e96386ee3af 100644 (file)
--- a/pom.xml
+++ b/pom.xml
                     <artifactId>maven-deploy-plugin</artifactId>
                     <version>2.7</version>
                 </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-jar-plugin</artifactId>
+                    <version>2.4</version>
+                </plugin>
             </plugins>
         </pluginManagement>
     </build>
             <plugin>
                 <groupId>org.codehaus.mojo</groupId>
                 <artifactId>findbugs-maven-plugin</artifactId>
-                <version>2.4.0</version>
+                <version>2.5.2</version>
                 <configuration>
                     <effort>Max</effort>
                     <threshold>Low</threshold>
                     <goal>site</goal>
                 </configuration>
             </plugin>
+            <plugin>
+              <artifactId>maven-jxr-plugin</artifactId>
+              <version>2.3</version>
+              <configuration>
+                <aggregate>true</aggregate>
+                <linkJavadoc>true</linkJavadoc>
+              </configuration>
+            </plugin>
+
             <plugin>
                 <groupId>org.codehaus.mojo</groupId>
                 <artifactId>jdepend-maven-plugin</artifactId>