From: Dave B. <bla...@us...> - 2013-02-06 15:01:08
|
Update of /cvsroot/sblim/jsr48-client/src/org/sblim/cimclient/internal/http In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv11852/src/org/sblim/cimclient/internal/http Modified Files: HttpHeader.java HttpClient.java MessageWriter.java MessageReader.java Log Message: 3601894 Enhance HTTP and CIM-XML tracing Index: MessageReader.java =================================================================== RCS file: /cvsroot/sblim/jsr48-client/src/org/sblim/cimclient/internal/http/MessageReader.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- MessageReader.java 29 Jul 2010 14:01:25 -0000 1.7 +++ MessageReader.java 6 Feb 2013 15:01:05 -0000 1.8 @@ -1,5 +1,5 @@ /** - * (C) Copyright IBM Corp. 2005, 2010 + * (C) Copyright IBM Corp. 2005, 2013 * * THIS FILE IS PROVIDED UNDER THE TERMS OF THE ECLIPSE PUBLIC LICENSE * ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE @@ -20,6 +20,7 @@ * 2003590 2008-06-30 blaschke-oss Change licensing from CPL to EPL * 2524131 2009-01-21 raman_arora Upgrade client to JDK 1.5 (Phase 1) * 3027479 2010-07-09 blaschke-oss Dead store to local variable + * 3601894 2013-01-23 blaschke-oss Enhance HTTP and CIM-XML tracing */ package org.sblim.cimclient.internal.http; @@ -93,7 +94,7 @@ } if (this.iChunked) { this.iContent = new ChunkedInputStream(new PersistentInputStream(pStream, - isPersistentConnectionSupported())); + isPersistentConnectionSupported()), "Indication Request"); } else { this.iContent = new BoundedInputStream(new PersistentInputStream(pStream, isPersistentConnectionSupported()), contentLength); Index: MessageWriter.java =================================================================== RCS file: /cvsroot/sblim/jsr48-client/src/org/sblim/cimclient/internal/http/MessageWriter.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- MessageWriter.java 4 Jun 2011 10:14:26 -0000 1.8 +++ MessageWriter.java 6 Feb 2013 15:01:05 -0000 1.9 @@ -1,5 +1,5 @@ /** - * (C) Copyright IBM Corp. 2005, 2011 + * (C) Copyright IBM Corp. 2005, 2013 * * THIS FILE IS PROVIDED UNDER THE TERMS OF THE ECLIPSE PUBLIC LICENSE * ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE @@ -21,6 +21,7 @@ * 2003590 2008-06-30 blaschke-oss Change licensing from CPL to EPL * 2524131 2009-01-21 raman_arora Upgrade client to JDK 1.5 (Phase 1) * 3304058 2011-05-20 blaschke-oss Use same date format in change history + * 3601894 2013-01-23 blaschke-oss Enhance HTTP and CIM-XML tracing */ package org.sblim.cimclient.internal.http; @@ -28,10 +29,12 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.OutputStream; +import java.util.logging.Level; import org.sblim.cimclient.internal.http.io.ASCIIPrintStream; import org.sblim.cimclient.internal.http.io.ChunkedOutputStream; import org.sblim.cimclient.internal.http.io.PersistentOutputStream; +import org.sblim.cimclient.internal.logging.LogAndTraceBroker; /** * Class MessageWriter is responsible for creating http messages @@ -149,10 +152,14 @@ this.iHeader.addField("Content-Type", "application/xml;charset=\"utf-8\""); if (!this.iChunked) this.iHeader.addField("Content-length", Integer .toString(this.iBufferedOS.size())); + LogAndTraceBroker.getBroker().trace(Level.FINER, + "Indication Response HTTP Headers= " + this.iHeader.toString()); this.iHeader.write(this.iRealOS); this.iRealOS.flush(); this.iBufferedOS.writeTo(this.iRealOS); if (this.iChunked && (this.iTrailer != null)) { + LogAndTraceBroker.getBroker().trace(Level.FINER, + "Indication Response HTTP Trailer Headers= " + this.iTrailer.toString()); this.iTrailer.write(this.iRealOS); } this.iRealOS.flush(); Index: HttpHeader.java =================================================================== RCS file: /cvsroot/sblim/jsr48-client/src/org/sblim/cimclient/internal/http/HttpHeader.java,v retrieving revision 1.12 retrieving revision 1.13 diff -u -d -r1.12 -r1.13 --- HttpHeader.java 17 Aug 2012 02:47:40 -0000 1.12 +++ HttpHeader.java 6 Feb 2013 15:01:05 -0000 1.13 @@ -1,5 +1,5 @@ /** - * (C) Copyright IBM Corp. 2005, 2012 + * (C) Copyright IBM Corp. 2005, 2013 * * THIS FILE IS PROVIDED UNDER THE TERMS OF THE ECLIPSE PUBLIC LICENSE * ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE @@ -25,10 +25,11 @@ * 2003590 2008-06-30 blaschke-oss Change licensing from CPL to EPL * 2204488 2008-10-28 raman_arora Fix code to remove compiler warnings * 2524131 2009-01-21 raman_arora Upgrade client to JDK 1.5 (Phase 1) - * 2531371 2009-02-10 raman_arora Upgrade client to JDK 1.5 (Phase 2) + * 2531371 2009-02-10 raman_arora Upgrade client to JDK 1.5 (Phase 2) * 2641758 2009-02-27 blaschke-oss CIM Client does not recognize HTTP extension headers * 3304058 2011-05-20 blaschke-oss Use same date format in change history * 3553858 2012-08-06 blaschke-oss Append duplicate HTTP header fields instead of replace + * 3601894 2013-01-23 blaschke-oss Enhance HTTP and CIM-XML tracing */ package org.sblim.cimclient.internal.http; @@ -439,12 +440,32 @@ * @throws TrailerException */ public void examineTrailer() throws TrailerException { + examineTrailer(null); + } + + /** + * Throws a TrailerException if it contains recognized CIM errors in http + * trailer entries. + * + * @param pOrigin + * The origin of the trailer (response, request, etc.) + * @throws TrailerException + */ + public void examineTrailer(String pOrigin) throws TrailerException { Iterator<Entry<HeaderEntry, String>> itr = this.iterator(); - int code = 0; + int code = 0, i = 0; String desc = null; + StringBuilder hdrs = null; + if (LogAndTraceBroker.getBroker().isLoggableTrace(Level.FINER)) hdrs = new StringBuilder(); while (itr.hasNext()) { Entry<HeaderEntry, String> ent = itr.next(); String keyStr = ent.getKey().toString(); + if (hdrs != null) { + if (i++ > 0) hdrs.append(','); + hdrs.append(keyStr); + hdrs.append(": "); + hdrs.append(this.getField(keyStr)); + } try { if (keyStr.equalsIgnoreCase(WBEMConstants.HTTP_TRAILER_STATUS_CODE)) { String valStr = URLDecoder.decode(this.getField(keyStr), WBEMConstants.UTF8); @@ -457,6 +478,10 @@ throw new Error(e); } } + if (hdrs != null && hdrs.length() > 0) LogAndTraceBroker.getBroker().trace( + Level.FINER, + (pOrigin == null ? "Unknown" : pOrigin) + " HTTP Trailer Headers= " + + hdrs.toString()); if (code > 0 || desc != null) { if (code > 0) { throw new TrailerException(new WBEMException(code, desc)); } throw new TrailerException(new WBEMException(desc)); Index: HttpClient.java =================================================================== RCS file: /cvsroot/sblim/jsr48-client/src/org/sblim/cimclient/internal/http/HttpClient.java,v retrieving revision 1.43 retrieving revision 1.44 diff -u -d -r1.43 -r1.44 --- HttpClient.java 26 Nov 2012 13:22:14 -0000 1.43 +++ HttpClient.java 6 Feb 2013 15:01:05 -0000 1.44 @@ -1,7 +1,7 @@ /** * HttpClient.java * - * (C) Copyright IBM Corp. 2005, 2012 + * (C) Copyright IBM Corp. 2005, 2013 * * THIS FILE IS PROVIDED UNDER THE TERMS OF THE ECLIPSE PUBLIC LICENSE * ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE @@ -66,6 +66,7 @@ * 3523918 2012-05-06 blaschke-oss "java.io.IOException: Unexpected EOF" returned as HTTP 401 * 3524050 2012-06-06 blaschke-oss Improve WWW-Authenticate in HTTPClient.java * 3557283 2012-11-05 blaschke-oss Print full response when get EOF from CIMOM + * 3601894 2013-01-23 blaschke-oss Enhance HTTP and CIM-XML tracing */ package org.sblim.cimclient.internal.http; @@ -618,7 +619,7 @@ this.iRequestHeaders.write(out); - logger.trace(Level.FINER, "HTTP Headers= " + this.iRequestHeaders); + logger.trace(Level.FINER, "Request HTTP Headers= " + this.iRequestHeaders); if (out.checkError() != null) { delayedException = out.checkError(); @@ -675,6 +676,8 @@ ResponseTime = System.currentTimeMillis(); this.iResponseHeaders = new HttpHeader(this.iIStream); + logger.trace(Level.FINER, "Response HTTP Headers= " + + this.iResponseHeaders.toString()); this.iKeepAlive = false; if ("Keep-alive".equalsIgnoreCase(this.iResponseHeaders .getField("Connection")) @@ -706,7 +709,8 @@ if (transferEncoding != null && transferEncoding.toLowerCase().endsWith("chunked")) { - this.iServerInput = new ChunkedInputStream(this.iServerInput); + this.iServerInput = new ChunkedInputStream(this.iServerInput, + "Response"); this.iKeepAlive = true; } this.iServerInput = new BoundedInputStream(this.iServerInput, length); |