You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2008/03/18 20:42:44 UTC

svn commit: r638532 - /httpcomponents/httpcore/trunk/contrib/src/main/java/org/apache/http/contrib/logging/

Author: olegk
Date: Tue Mar 18 12:42:42 2008
New Revision: 638532

URL: http://svn.apache.org/viewvc?rev=638532&view=rev
Log:
Improvements to the logging decorators

Added:
    httpcomponents/httpcore/trunk/contrib/src/main/java/org/apache/http/contrib/logging/LoggingClientIOEventDispatch.java   (with props)
    httpcomponents/httpcore/trunk/contrib/src/main/java/org/apache/http/contrib/logging/LoggingServerIOEventDispatch.java   (with props)
Modified:
    httpcomponents/httpcore/trunk/contrib/src/main/java/org/apache/http/contrib/logging/LoggingIOSession.java
    httpcomponents/httpcore/trunk/contrib/src/main/java/org/apache/http/contrib/logging/LoggingNHttpClientIOTarget.java
    httpcomponents/httpcore/trunk/contrib/src/main/java/org/apache/http/contrib/logging/LoggingNHttpServerIOTarget.java

Added: httpcomponents/httpcore/trunk/contrib/src/main/java/org/apache/http/contrib/logging/LoggingClientIOEventDispatch.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/contrib/src/main/java/org/apache/http/contrib/logging/LoggingClientIOEventDispatch.java?rev=638532&view=auto
==============================================================================
--- httpcomponents/httpcore/trunk/contrib/src/main/java/org/apache/http/contrib/logging/LoggingClientIOEventDispatch.java (added)
+++ httpcomponents/httpcore/trunk/contrib/src/main/java/org/apache/http/contrib/logging/LoggingClientIOEventDispatch.java Tue Mar 18 12:42:42 2008
@@ -0,0 +1,54 @@
+/*
+ * $HeadURL$
+ * $Revision$
+ * $Date$
+ *
+ * ====================================================================
+ * 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.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
+
+package org.apache.http.contrib.logging;
+
+import org.apache.http.impl.nio.DefaultClientIOEventDispatch;
+import org.apache.http.nio.NHttpClientHandler;
+import org.apache.http.nio.NHttpClientIOTarget;
+import org.apache.http.nio.reactor.IOSession;
+import org.apache.http.params.HttpParams;
+
+public class LoggingClientIOEventDispatch extends DefaultClientIOEventDispatch {
+
+    public LoggingClientIOEventDispatch(
+            final NHttpClientHandler handler, 
+            final HttpParams params) {
+        super(new LoggingNHttpClientHandler(handler), params);
+    }
+
+    @Override
+    protected NHttpClientIOTarget createConnection(final IOSession session) {
+        return new LoggingNHttpClientIOTarget(
+                super.createConnection(new LoggingIOSession(session, "client")));
+    }
+    
+}

Propchange: httpcomponents/httpcore/trunk/contrib/src/main/java/org/apache/http/contrib/logging/LoggingClientIOEventDispatch.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: httpcomponents/httpcore/trunk/contrib/src/main/java/org/apache/http/contrib/logging/LoggingClientIOEventDispatch.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: httpcomponents/httpcore/trunk/contrib/src/main/java/org/apache/http/contrib/logging/LoggingClientIOEventDispatch.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: httpcomponents/httpcore/trunk/contrib/src/main/java/org/apache/http/contrib/logging/LoggingIOSession.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/contrib/src/main/java/org/apache/http/contrib/logging/LoggingIOSession.java?rev=638532&r1=638531&r2=638532&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/contrib/src/main/java/org/apache/http/contrib/logging/LoggingIOSession.java (original)
+++ httpcomponents/httpcore/trunk/contrib/src/main/java/org/apache/http/contrib/logging/LoggingIOSession.java Tue Mar 18 12:42:42 2008
@@ -36,6 +36,7 @@
 import java.nio.ByteBuffer;
 import java.nio.channels.ByteChannel;
 import java.nio.channels.SelectionKey;
+import java.util.concurrent.atomic.AtomicLong;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -50,21 +51,21 @@
  */
 public class LoggingIOSession implements IOSession {
 
-    private static int COUNT = 0;
+    private static AtomicLong COUNT = new AtomicLong(0);
     
     private final Log log;
     private final IOSession session;
     private final ByteChannel channel;
-    private final int id;
+    private final String id;
     
-    public LoggingIOSession(final IOSession session) {
+    public LoggingIOSession(final IOSession session, final String id) {
         super();
         if (session == null) {
             throw new IllegalArgumentException("I/O session may not be null");
         }
         this.session = session;
         this.channel = new LoggingByteChannel();
-        this.id = ++COUNT;
+        this.id = id + "-" + COUNT.incrementAndGet();
         this.log = LogFactory.getLog(session.getClass());
     }
 

Modified: httpcomponents/httpcore/trunk/contrib/src/main/java/org/apache/http/contrib/logging/LoggingNHttpClientIOTarget.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/contrib/src/main/java/org/apache/http/contrib/logging/LoggingNHttpClientIOTarget.java?rev=638532&r1=638531&r2=638532&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/contrib/src/main/java/org/apache/http/contrib/logging/LoggingNHttpClientIOTarget.java (original)
+++ httpcomponents/httpcore/trunk/contrib/src/main/java/org/apache/http/contrib/logging/LoggingNHttpClientIOTarget.java Tue Mar 18 12:42:42 2008
@@ -32,19 +32,22 @@
 package org.apache.http.contrib.logging;
 
 import java.io.IOException;
+import java.net.InetAddress;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.http.Header;
 import org.apache.http.HttpConnectionMetrics;
 import org.apache.http.HttpException;
+import org.apache.http.HttpInetConnection;
 import org.apache.http.HttpRequest;
 import org.apache.http.HttpResponse;
 import org.apache.http.nio.NHttpClientHandler;
 import org.apache.http.nio.NHttpClientIOTarget;
 import org.apache.http.protocol.HttpContext;
 
-public class LoggingNHttpClientIOTarget implements NHttpClientIOTarget  {
+public class LoggingNHttpClientIOTarget 
+    implements NHttpClientIOTarget, HttpInetConnection {
 
     private final NHttpClientIOTarget target;
     private final Log log;
@@ -155,4 +158,41 @@
         this.target.produceOutput(handler);
     }
     
+    public InetAddress getLocalAddress() {
+      if (this.target instanceof HttpInetConnection) {
+          return ((HttpInetConnection) this.target).getLocalAddress();
+      } else {
+          return null;
+      }
+  }
+
+  public int getLocalPort() {
+      if (this.target instanceof HttpInetConnection) {
+          return ((HttpInetConnection) this.target).getLocalPort();
+      } else {
+          return -1;
+      }
+  }
+
+  public InetAddress getRemoteAddress() {
+      if (this.target instanceof HttpInetConnection) {
+          return ((HttpInetConnection) this.target).getRemoteAddress();
+      } else {
+          return null;
+      }
+  }
+
+  public int getRemotePort() {
+      if (this.target instanceof HttpInetConnection) {
+          return ((HttpInetConnection) this.target).getRemotePort();
+      } else {
+          return -1;
+      }
+  }
+  
+  @Override
+  public String toString() {
+      return this.target.toString();
+  }
+  
 }

Modified: httpcomponents/httpcore/trunk/contrib/src/main/java/org/apache/http/contrib/logging/LoggingNHttpServerIOTarget.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/contrib/src/main/java/org/apache/http/contrib/logging/LoggingNHttpServerIOTarget.java?rev=638532&r1=638531&r2=638532&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/contrib/src/main/java/org/apache/http/contrib/logging/LoggingNHttpServerIOTarget.java (original)
+++ httpcomponents/httpcore/trunk/contrib/src/main/java/org/apache/http/contrib/logging/LoggingNHttpServerIOTarget.java Tue Mar 18 12:42:42 2008
@@ -32,19 +32,22 @@
 package org.apache.http.contrib.logging;
 
 import java.io.IOException;
+import java.net.InetAddress;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.http.Header;
 import org.apache.http.HttpConnectionMetrics;
 import org.apache.http.HttpException;
+import org.apache.http.HttpInetConnection;
 import org.apache.http.HttpRequest;
 import org.apache.http.HttpResponse;
 import org.apache.http.nio.NHttpServerIOTarget;
 import org.apache.http.nio.NHttpServiceHandler;
 import org.apache.http.protocol.HttpContext;
 
-public class LoggingNHttpServerIOTarget implements NHttpServerIOTarget {
+public class LoggingNHttpServerIOTarget 
+    implements NHttpServerIOTarget, HttpInetConnection {
 
     private final NHttpServerIOTarget target;
     private final Log log;
@@ -154,4 +157,41 @@
         this.target.produceOutput(handler);
     }
     
+    public InetAddress getLocalAddress() {
+      if (this.target instanceof HttpInetConnection) {
+          return ((HttpInetConnection) this.target).getLocalAddress();
+      } else {
+          return null;
+      }
+  }
+
+  public int getLocalPort() {
+      if (this.target instanceof HttpInetConnection) {
+          return ((HttpInetConnection) this.target).getLocalPort();
+      } else {
+          return -1;
+      }
+  }
+
+  public InetAddress getRemoteAddress() {
+      if (this.target instanceof HttpInetConnection) {
+          return ((HttpInetConnection) this.target).getRemoteAddress();
+      } else {
+          return null;
+      }
+  }
+
+  public int getRemotePort() {
+      if (this.target instanceof HttpInetConnection) {
+          return ((HttpInetConnection) this.target).getRemotePort();
+      } else {
+          return -1;
+      }
+  }
+  
+  @Override
+  public String toString() {
+      return this.target.toString();
+  }
+  
 }

Added: httpcomponents/httpcore/trunk/contrib/src/main/java/org/apache/http/contrib/logging/LoggingServerIOEventDispatch.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/contrib/src/main/java/org/apache/http/contrib/logging/LoggingServerIOEventDispatch.java?rev=638532&view=auto
==============================================================================
--- httpcomponents/httpcore/trunk/contrib/src/main/java/org/apache/http/contrib/logging/LoggingServerIOEventDispatch.java (added)
+++ httpcomponents/httpcore/trunk/contrib/src/main/java/org/apache/http/contrib/logging/LoggingServerIOEventDispatch.java Tue Mar 18 12:42:42 2008
@@ -0,0 +1,54 @@
+/*
+ * $HeadURL$
+ * $Revision$
+ * $Date$
+ *
+ * ====================================================================
+ * 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.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
+
+package org.apache.http.contrib.logging;
+
+import org.apache.http.impl.nio.DefaultServerIOEventDispatch;
+import org.apache.http.nio.NHttpServerIOTarget;
+import org.apache.http.nio.NHttpServiceHandler;
+import org.apache.http.nio.reactor.IOSession;
+import org.apache.http.params.HttpParams;
+
+public class LoggingServerIOEventDispatch extends DefaultServerIOEventDispatch {
+
+    public LoggingServerIOEventDispatch(
+            final NHttpServiceHandler handler, 
+            final HttpParams params) {
+        super(new LoggingNHttpServiceHandler(handler), params);
+    }
+
+    @Override
+    protected NHttpServerIOTarget createConnection(final IOSession session) {
+        return new LoggingNHttpServerIOTarget(
+                super.createConnection(new LoggingIOSession(session, "server")));
+    }
+    
+}

Propchange: httpcomponents/httpcore/trunk/contrib/src/main/java/org/apache/http/contrib/logging/LoggingServerIOEventDispatch.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: httpcomponents/httpcore/trunk/contrib/src/main/java/org/apache/http/contrib/logging/LoggingServerIOEventDispatch.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: httpcomponents/httpcore/trunk/contrib/src/main/java/org/apache/http/contrib/logging/LoggingServerIOEventDispatch.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain