Author: heiko.braun(a)jboss.com
Date: 2007-02-02 09:21:44 -0500 (Fri, 02 Feb 2007)
New Revision: 2253
Added:
trunk/jbossws-core/src/main/java/org/jboss/ws/core/server/ServiceEndpointDTO.java
trunk/jbossws-core/src/main/java/org/jboss/ws/core/utils/HashCodeUtil.java
Modified:
trunk/jbossws-core/src/main/java/org/jboss/ws/core/CommonContextServlet.java
trunk/jbossws-core/src/main/java/org/jboss/ws/core/jaxrpc/EncodedTypeMapping.java
trunk/jbossws-core/src/main/java/org/jboss/ws/core/jaxrpc/LiteralTypeMapping.java
trunk/jbossws-core/src/main/java/org/jboss/ws/core/jaxrpc/TypeMappingImpl.java
trunk/jbossws-core/src/main/java/org/jboss/ws/core/jaxws/JAXBContextCache.java
trunk/jbossws-core/src/main/java/org/jboss/ws/core/jaxws/JAXBSerializer.java
trunk/jbossws-core/src/main/java/org/jboss/ws/core/server/ServiceEndpointManager.java
trunk/jbossws-core/src/main/java/org/jboss/ws/core/server/ServiceEndpointMetrics.java
trunk/jbossws-core/src/main/java/org/jboss/ws/core/server/WSDLRequestHandler.java
trunk/jbossws-core/src/main/java/org/jboss/ws/core/soap/EnvelopeBuilderDOM.java
trunk/jbossws-core/src/main/java/org/jboss/ws/core/soap/NodeImpl.java
trunk/jbossws-core/src/main/java/org/jboss/ws/core/soap/SOAPContentElement.java
trunk/jbossws-core/src/main/java/org/jboss/ws/core/soap/SOAPElementWriter.java
trunk/jbossws-core/src/main/java/org/jboss/ws/core/utils/DOMWriter.java
trunk/jbossws-core/src/main/resources/jbossws.war/index.html
trunk/jbossws-core/src/main/resources/jbossws.war/styles.css
trunk/jbossws-tests/build.xml
trunk/jbossws-tests/src/main/java/org/jboss/test/ws/benchmark/jaxrpc/BenchmarkDocJSETestCase.java
trunk/jbossws-tests/src/main/java/org/jboss/test/ws/benchmark/jaxws/BenchmarkDocJSETestCase.java
trunk/jbossws-tests/src/main/java/org/jboss/test/ws/common/utils/DOMWriterTestCase.java
trunk/jbossws-tests/src/main/java/org/jboss/test/ws/jaxrpc/marshall/MarshallDocLitTestCase.java
trunk/jbossws-tests/src/main/resources/benchmark/jmeter/JBossWS_Benchmark.jmx
Log:
Resolved HotSpots: DOMWriter.normalize() and TypeMappingImpl.getKeyPairs().
SOAPContentElement invalidates object and dom states when xmlFragement is marshalled.
JBossWS webapp facelifting: Includes endpoint stats
Modified: trunk/jbossws-core/src/main/java/org/jboss/ws/core/CommonContextServlet.java
===================================================================
---
trunk/jbossws-core/src/main/java/org/jboss/ws/core/CommonContextServlet.java 2007-02-02
13:52:01 UTC (rev 2252)
+++
trunk/jbossws-core/src/main/java/org/jboss/ws/core/CommonContextServlet.java 2007-02-02
14:21:44 UTC (rev 2253)
@@ -26,6 +26,7 @@
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URL;
+import java.util.List;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
@@ -35,6 +36,7 @@
import org.jboss.logging.Logger;
import org.jboss.ws.core.server.ServiceEndpointManager;
+import org.jboss.ws.core.server.ServiceEndpointDTO;
/**
* The servlet that that is associated with context /jbossws
@@ -67,9 +69,90 @@
writer.print("<html>");
setupHTMLResponseHeader(writer);
+ URL requestURL = new URL(req.getRequestURL().toString());
+
writer.print("<body>");
- //writer.print(epManager.showServiceEndpointTable());
- writer.print(epManager.showServiceEndpointTable(new
URL(req.getRequestURL().toString())));
+
+ writer.print("<div
class='pageHeader'>JBossWS/Services</div>");
+ writer.print("<div class='pageSection'>");
+ writer.print("<fieldset>");
+ writer.print("<legend><b>Registered Service
Endpoints</b></legend>");
+ writer.print("<table>");
+
+ // begin iteration
+ List<ServiceEndpointDTO> endpoints =
epManager.getRegisteredEndpoints(requestURL);
+
+ if(endpoints.isEmpty())
+ {
+ writer.print("<tr>");
+ writer.print(" <td><h3>There currently no endpoints
deployed</h3></td>");
+ writer.print("</tr>");
+ }
+
+ for(ServiceEndpointDTO ep : endpoints)
+ {
+ writer.print("<tr>");
+ writer.print(" <td>ServiceEndpointID</td>");
+ writer.print(" <td>"+ep.getSepID()+"</td>");
+ writer.print("</tr>");
+ writer.print("<tr>");
+ writer.print(" <td>ServiceEndpointAddress</td>");
+ writer.print(" <td><a
href='"+ep.getAddress()+"?wsdl'>"+ep.getAddress()+"?wsdl</a></td>");
+ writer.print("</tr>");
+ writer.print("<tr>");
+ writer.print(" <td colspan=2>");
+ writer.print(" ");
+ writer.print("");
+ writer.print("<table class='metrics'>");
+ writer.print("<tr>");
+ writer.print(" <td>StartTime</td>");
+ writer.print(" <td>StopTime</td>");
+ writer.print(" <td></td>");
+ writer.print("</tr>");
+ writer.print("<tr>");
+
writer.print(" <td>"+ep.getSeMetrics().getStartTime()+"</td>");
+
+ String stopTime = ep.getSeMetrics().getStopTime() != null ?
ep.getSeMetrics().getStopTime().toString() : "";
+ writer.print(" <td>"+stopTime+"</td>");
+ writer.print(" <td></td>");
+ writer.print("</tr>");
+ writer.print("<tr>");
+
+ writer.print(" <td>RequestCount</td>");
+ writer.print(" <td>ResponseCount</td>");
+ writer.print(" <td>FaultCount</td>");
+ writer.print("</tr>");
+ writer.print("<tr>");
+
writer.print(" <td>"+ep.getSeMetrics().getRequestCount()+"</td>");
+
writer.print(" <td>"+ep.getSeMetrics().getResponseCount()+"</td>");
+
writer.print(" <td>"+ep.getSeMetrics().getFaultCount()+"</td>");
+ writer.print("</tr>");
+ writer.print("<tr>");
+ writer.print(" <td>MinProcessingTime</td>");
+ writer.print(" <td>MaxProcessingTime</td>");
+ writer.print(" <td>AvgProcessingTime</td>");
+ writer.print("</tr>");
+ writer.print("<tr>");
+
writer.print(" <td>"+ep.getSeMetrics().getMinProcessingTime()+"</td>");
+
writer.print(" <td>"+ep.getSeMetrics().getMaxProcessingTime()+"</td>");
+
writer.print(" <td>"+ep.getSeMetrics().getAverageProcessingTime()+"</td>");
+ writer.print("</tr>");
+ writer.print("");
+ writer.print("");
+ writer.print("</table>");
+ writer.print("");
+ writer.print(" </td>");
+ writer.print("</tr>");
+
+ writer.print("<tr><td
colspan='3'> </td></tr>");
+ }
+ // end iteration
+ writer.print("</table>");
+ writer.print("");
+ writer.print("</fieldset>");
+ writer.print("</div>");
+
+
writer.print("</body>");
writer.print("</html>");
writer.close();
Modified:
trunk/jbossws-core/src/main/java/org/jboss/ws/core/jaxrpc/EncodedTypeMapping.java
===================================================================
---
trunk/jbossws-core/src/main/java/org/jboss/ws/core/jaxrpc/EncodedTypeMapping.java 2007-02-02
13:52:01 UTC (rev 2252)
+++
trunk/jbossws-core/src/main/java/org/jboss/ws/core/jaxrpc/EncodedTypeMapping.java 2007-02-02
14:21:44 UTC (rev 2253)
@@ -79,82 +79,82 @@
registerStandardSOAP11EncodedTypes();
// register mapping for xsd:anyType
- registerInternal(SOAPElement.class, Constants.TYPE_SOAP11_ANYTYPE, new
SOAPElementSerializerFactory(), new SOAPElementDeserializerFactory());
- registerInternal(Element.class, Constants.TYPE_SOAP11_ANYTYPE, new
ElementSerializerFactory(), new ElementDeserializerFactory());
+ register(SOAPElement.class, Constants.TYPE_SOAP11_ANYTYPE, new
SOAPElementSerializerFactory(), new SOAPElementDeserializerFactory());
+ register(Element.class, Constants.TYPE_SOAP11_ANYTYPE, new
ElementSerializerFactory(), new ElementDeserializerFactory());
}
private void registerStandardSOAP11EncodedTypes()
{
- registerInternal(BigDecimal.class, Constants.TYPE_SOAP11_DECIMAL, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(BigDecimal.class, Constants.TYPE_SOAP11_DECIMAL, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(BigInteger.class, Constants.TYPE_SOAP11_POSITIVEINTEGER, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(BigInteger.class, Constants.TYPE_SOAP11_NEGATIVEINTEGER, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(BigInteger.class, Constants.TYPE_SOAP11_NONPOSITIVEINTEGER, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(BigInteger.class, Constants.TYPE_SOAP11_NONNEGATIVEINTEGER, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(BigInteger.class, Constants.TYPE_SOAP11_UNSIGNEDLONG, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(BigInteger.class, Constants.TYPE_SOAP11_INTEGER, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(BigInteger.class, Constants.TYPE_SOAP11_POSITIVEINTEGER, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(BigInteger.class, Constants.TYPE_SOAP11_NEGATIVEINTEGER, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(BigInteger.class, Constants.TYPE_SOAP11_NONPOSITIVEINTEGER, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(BigInteger.class, Constants.TYPE_SOAP11_NONNEGATIVEINTEGER, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(BigInteger.class, Constants.TYPE_SOAP11_UNSIGNEDLONG, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(BigInteger.class, Constants.TYPE_SOAP11_INTEGER, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(Date.class, Constants.TYPE_SOAP11_DATETIME, new
DateSerializerFactory(), new DateDeserializerFactory());
+ register(Date.class, Constants.TYPE_SOAP11_DATETIME, new DateSerializerFactory(),
new DateDeserializerFactory());
- registerInternal(Calendar.class, Constants.TYPE_SOAP11_DATE, new
CalendarSerializerFactory(), new CalendarDeserializerFactory());
- registerInternal(Calendar.class, Constants.TYPE_SOAP11_TIME, new
CalendarSerializerFactory(), new CalendarDeserializerFactory());
- registerInternal(Calendar.class, Constants.TYPE_SOAP11_DATETIME, new
CalendarSerializerFactory(), new CalendarDeserializerFactory());
+ register(Calendar.class, Constants.TYPE_SOAP11_DATE, new
CalendarSerializerFactory(), new CalendarDeserializerFactory());
+ register(Calendar.class, Constants.TYPE_SOAP11_TIME, new
CalendarSerializerFactory(), new CalendarDeserializerFactory());
+ register(Calendar.class, Constants.TYPE_SOAP11_DATETIME, new
CalendarSerializerFactory(), new CalendarDeserializerFactory());
- registerInternal(QName.class, Constants.TYPE_SOAP11_QNAME, new
QNameSerializerFactory(), new QNameDeserializerFactory());
+ register(QName.class, Constants.TYPE_SOAP11_QNAME, new QNameSerializerFactory(),
new QNameDeserializerFactory());
- registerInternal(String.class, Constants.TYPE_SOAP11_ANYSIMPLETYPE, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(String.class, Constants.TYPE_SOAP11_DURATION, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(String.class, Constants.TYPE_SOAP11_GDAY, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(String.class, Constants.TYPE_SOAP11_GMONTH, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(String.class, Constants.TYPE_SOAP11_GMONTHDAY, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(String.class, Constants.TYPE_SOAP11_GYEAR, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(String.class, Constants.TYPE_SOAP11_GYEARMONTH, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(String.class, Constants.TYPE_SOAP11_ID, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(String.class, Constants.TYPE_SOAP11_LANGUAGE, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(String.class, Constants.TYPE_SOAP11_NAME, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(String.class, Constants.TYPE_SOAP11_NCNAME, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(String.class, Constants.TYPE_SOAP11_NMTOKEN, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(String.class, Constants.TYPE_SOAP11_NORMALIZEDSTRING, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(String.class, Constants.TYPE_SOAP11_TOKEN, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(String.class, Constants.TYPE_SOAP11_STRING, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(String.class, Constants.TYPE_SOAP11_ANYSIMPLETYPE, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(String.class, Constants.TYPE_SOAP11_DURATION, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(String.class, Constants.TYPE_SOAP11_GDAY, new SimpleSerializerFactory(),
new SimpleDeserializerFactory());
+ register(String.class, Constants.TYPE_SOAP11_GMONTH, new SimpleSerializerFactory(),
new SimpleDeserializerFactory());
+ register(String.class, Constants.TYPE_SOAP11_GMONTHDAY, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(String.class, Constants.TYPE_SOAP11_GYEAR, new SimpleSerializerFactory(),
new SimpleDeserializerFactory());
+ register(String.class, Constants.TYPE_SOAP11_GYEARMONTH, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(String.class, Constants.TYPE_SOAP11_ID, new SimpleSerializerFactory(), new
SimpleDeserializerFactory());
+ register(String.class, Constants.TYPE_SOAP11_LANGUAGE, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(String.class, Constants.TYPE_SOAP11_NAME, new SimpleSerializerFactory(),
new SimpleDeserializerFactory());
+ register(String.class, Constants.TYPE_SOAP11_NCNAME, new SimpleSerializerFactory(),
new SimpleDeserializerFactory());
+ register(String.class, Constants.TYPE_SOAP11_NMTOKEN, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(String.class, Constants.TYPE_SOAP11_NORMALIZEDSTRING, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(String.class, Constants.TYPE_SOAP11_TOKEN, new SimpleSerializerFactory(),
new SimpleDeserializerFactory());
+ register(String.class, Constants.TYPE_SOAP11_STRING, new SimpleSerializerFactory(),
new SimpleDeserializerFactory());
- registerInternal(String[].class, Constants.TYPE_SOAP11_NMTOKENS, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(String[].class, Constants.TYPE_SOAP11_NMTOKENS, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(URI.class, Constants.TYPE_SOAP11_ANYURI, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(URI.class, Constants.TYPE_SOAP11_ANYURI, new SimpleSerializerFactory(),
new SimpleDeserializerFactory());
- registerInternal(boolean.class, Constants.TYPE_SOAP11_BOOLEAN, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(Boolean.class, Constants.TYPE_SOAP11_BOOLEAN, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(boolean.class, Constants.TYPE_SOAP11_BOOLEAN, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(Boolean.class, Constants.TYPE_SOAP11_BOOLEAN, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(byte.class, Constants.TYPE_SOAP11_BYTE, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(Byte.class, Constants.TYPE_SOAP11_BYTE, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(byte.class, Constants.TYPE_SOAP11_BYTE, new SimpleSerializerFactory(), new
SimpleDeserializerFactory());
+ register(Byte.class, Constants.TYPE_SOAP11_BYTE, new SimpleSerializerFactory(), new
SimpleDeserializerFactory());
- registerInternal(byte[].class, Constants.TYPE_SOAP11_HEXBINARY, new
HexSerializerFactory(), new HexDeserializerFactory());
- registerInternal(Byte[].class, Constants.TYPE_SOAP11_HEXBINARY, new
HexSerializerFactory(), new HexDeserializerFactory());
- registerInternal(byte[].class, Constants.TYPE_SOAP11_BASE64BINARY, new
Base64SerializerFactory(), new Base64DeserializerFactory());
- registerInternal(Byte[].class, Constants.TYPE_SOAP11_BASE64BINARY, new
Base64SerializerFactory(), new Base64DeserializerFactory());
- registerInternal(byte[].class, Constants.TYPE_SOAP11_BASE64, new
Base64SerializerFactory(), new Base64DeserializerFactory());
- registerInternal(Byte[].class, Constants.TYPE_SOAP11_BASE64, new
Base64SerializerFactory(), new Base64DeserializerFactory());
+ register(byte[].class, Constants.TYPE_SOAP11_HEXBINARY, new HexSerializerFactory(),
new HexDeserializerFactory());
+ register(Byte[].class, Constants.TYPE_SOAP11_HEXBINARY, new HexSerializerFactory(),
new HexDeserializerFactory());
+ register(byte[].class, Constants.TYPE_SOAP11_BASE64BINARY, new
Base64SerializerFactory(), new Base64DeserializerFactory());
+ register(Byte[].class, Constants.TYPE_SOAP11_BASE64BINARY, new
Base64SerializerFactory(), new Base64DeserializerFactory());
+ register(byte[].class, Constants.TYPE_SOAP11_BASE64, new Base64SerializerFactory(),
new Base64DeserializerFactory());
+ register(Byte[].class, Constants.TYPE_SOAP11_BASE64, new Base64SerializerFactory(),
new Base64DeserializerFactory());
- registerInternal(double.class, Constants.TYPE_SOAP11_DOUBLE, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(Double.class, Constants.TYPE_SOAP11_DOUBLE, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(double.class, Constants.TYPE_SOAP11_DOUBLE, new SimpleSerializerFactory(),
new SimpleDeserializerFactory());
+ register(Double.class, Constants.TYPE_SOAP11_DOUBLE, new SimpleSerializerFactory(),
new SimpleDeserializerFactory());
- registerInternal(float.class, Constants.TYPE_SOAP11_FLOAT, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(Float.class, Constants.TYPE_SOAP11_FLOAT, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(float.class, Constants.TYPE_SOAP11_FLOAT, new SimpleSerializerFactory(),
new SimpleDeserializerFactory());
+ register(Float.class, Constants.TYPE_SOAP11_FLOAT, new SimpleSerializerFactory(),
new SimpleDeserializerFactory());
- registerInternal(int.class, Constants.TYPE_SOAP11_UNSIGNEDSHORT, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(Integer.class, Constants.TYPE_SOAP11_UNSIGNEDSHORT, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(int.class, Constants.TYPE_SOAP11_INT, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(Integer.class, Constants.TYPE_SOAP11_INT, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(int.class, Constants.TYPE_SOAP11_UNSIGNEDSHORT, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(Integer.class, Constants.TYPE_SOAP11_UNSIGNEDSHORT, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(int.class, Constants.TYPE_SOAP11_INT, new SimpleSerializerFactory(), new
SimpleDeserializerFactory());
+ register(Integer.class, Constants.TYPE_SOAP11_INT, new SimpleSerializerFactory(),
new SimpleDeserializerFactory());
- registerInternal(long.class, Constants.TYPE_SOAP11_UNSIGNEDINT, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(Long.class, Constants.TYPE_SOAP11_UNSIGNEDINT, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(long.class, Constants.TYPE_SOAP11_LONG, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(Long.class, Constants.TYPE_SOAP11_LONG, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(long.class, Constants.TYPE_SOAP11_UNSIGNEDINT, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(Long.class, Constants.TYPE_SOAP11_UNSIGNEDINT, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(long.class, Constants.TYPE_SOAP11_LONG, new SimpleSerializerFactory(), new
SimpleDeserializerFactory());
+ register(Long.class, Constants.TYPE_SOAP11_LONG, new SimpleSerializerFactory(), new
SimpleDeserializerFactory());
- registerInternal(short.class, Constants.TYPE_SOAP11_UNSIGNEDBYTE, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(Short.class, Constants.TYPE_SOAP11_UNSIGNEDBYTE, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(short.class, Constants.TYPE_SOAP11_SHORT, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(Short.class, Constants.TYPE_SOAP11_SHORT, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(short.class, Constants.TYPE_SOAP11_UNSIGNEDBYTE, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(Short.class, Constants.TYPE_SOAP11_UNSIGNEDBYTE, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(short.class, Constants.TYPE_SOAP11_SHORT, new SimpleSerializerFactory(),
new SimpleDeserializerFactory());
+ register(Short.class, Constants.TYPE_SOAP11_SHORT, new SimpleSerializerFactory(),
new SimpleDeserializerFactory());
}
/**
Modified:
trunk/jbossws-core/src/main/java/org/jboss/ws/core/jaxrpc/LiteralTypeMapping.java
===================================================================
---
trunk/jbossws-core/src/main/java/org/jboss/ws/core/jaxrpc/LiteralTypeMapping.java 2007-02-02
13:52:01 UTC (rev 2252)
+++
trunk/jbossws-core/src/main/java/org/jboss/ws/core/jaxrpc/LiteralTypeMapping.java 2007-02-02
14:21:44 UTC (rev 2253)
@@ -67,30 +67,30 @@
JBossXBSerializerFactory jbxbSF = new JBossXBSerializerFactory();
JBossXBDeserializerFactory jbxbDF = new JBossXBDeserializerFactory();
- registerInternal(DataHandler.class, Constants.TYPE_XMIME_DEFAULT, jbxbSF, jbxbDF);
- registerInternal(DataHandler.class, Constants.TYPE_XMIME_DEFAULT, jbxbSF, jbxbDF);
- registerInternal(DataHandler.class, Constants.TYPE_XMIME_DEFAULT, jbxbSF, jbxbDF);
- registerInternal(DataHandler.class, Constants.TYPE_XMIME_DEFAULT, jbxbSF, jbxbDF);
- registerInternal(DataHandler.class, Constants.TYPE_XMIME_DEFAULT, jbxbSF, jbxbDF);
+ register(DataHandler.class, Constants.TYPE_XMIME_DEFAULT, jbxbSF, jbxbDF);
+ register(DataHandler.class, Constants.TYPE_XMIME_DEFAULT, jbxbSF, jbxbDF);
+ register(DataHandler.class, Constants.TYPE_XMIME_DEFAULT, jbxbSF, jbxbDF);
+ register(DataHandler.class, Constants.TYPE_XMIME_DEFAULT, jbxbSF, jbxbDF);
+ register(DataHandler.class, Constants.TYPE_XMIME_DEFAULT, jbxbSF, jbxbDF);
- registerInternal(String.class, Constants.TYPE_XMIME_DEFAULT, jbxbSF, jbxbDF);
- registerInternal(Image.class, Constants.TYPE_XMIME_DEFAULT, jbxbSF, jbxbDF);
- registerInternal(Source.class, Constants.TYPE_XMIME_DEFAULT, jbxbSF, jbxbDF);
- registerInternal(MimeMultipart.class, Constants.TYPE_XMIME_DEFAULT, jbxbSF,
jbxbDF);
+ register(String.class, Constants.TYPE_XMIME_DEFAULT, jbxbSF, jbxbDF);
+ register(Image.class, Constants.TYPE_XMIME_DEFAULT, jbxbSF, jbxbDF);
+ register(Source.class, Constants.TYPE_XMIME_DEFAULT, jbxbSF, jbxbDF);
+ register(MimeMultipart.class, Constants.TYPE_XMIME_DEFAULT, jbxbSF, jbxbDF);
registerStandardLiteralTypes();
// register default mime mappings
- registerInternal(DataHandler.class, Constants.TYPE_MIME_APPLICATION_XML, null,
null);
- registerInternal(DataHandler.class, Constants.TYPE_MIME_IMAGE_GIF, null, null);
- registerInternal(DataHandler.class, Constants.TYPE_MIME_IMAGE_JPEG, null, null);
- registerInternal(DataHandler.class, Constants.TYPE_MIME_TEXT_PLAIN, null, null);
- registerInternal(DataHandler.class, Constants.TYPE_MIME_TEXT_XML, null, null);
- registerInternal(MimeMultipart.class, Constants.TYPE_MIME_MULTIPART_MIXED, null,
null);
+ register(DataHandler.class, Constants.TYPE_MIME_APPLICATION_XML, null, null);
+ register(DataHandler.class, Constants.TYPE_MIME_IMAGE_GIF, null, null);
+ register(DataHandler.class, Constants.TYPE_MIME_IMAGE_JPEG, null, null);
+ register(DataHandler.class, Constants.TYPE_MIME_TEXT_PLAIN, null, null);
+ register(DataHandler.class, Constants.TYPE_MIME_TEXT_XML, null, null);
+ register(MimeMultipart.class, Constants.TYPE_MIME_MULTIPART_MIXED, null, null);
// register mapping for xsd:anyType
- registerInternal(SOAPElement.class, Constants.TYPE_LITERAL_ANYTYPE, new
SOAPElementSerializerFactory(), new SOAPElementDeserializerFactory());
- registerInternal(Element.class, Constants.TYPE_LITERAL_ANYTYPE, new
ElementSerializerFactory(), new ElementDeserializerFactory());
+ register(SOAPElement.class, Constants.TYPE_LITERAL_ANYTYPE, new
SOAPElementSerializerFactory(), new SOAPElementDeserializerFactory());
+ register(Element.class, Constants.TYPE_LITERAL_ANYTYPE, new
ElementSerializerFactory(), new ElementDeserializerFactory());
}
/**
Modified: trunk/jbossws-core/src/main/java/org/jboss/ws/core/jaxrpc/TypeMappingImpl.java
===================================================================
---
trunk/jbossws-core/src/main/java/org/jboss/ws/core/jaxrpc/TypeMappingImpl.java 2007-02-02
13:52:01 UTC (rev 2252)
+++
trunk/jbossws-core/src/main/java/org/jboss/ws/core/jaxrpc/TypeMappingImpl.java 2007-02-02
14:21:44 UTC (rev 2253)
@@ -23,37 +23,22 @@
// $Id$
-import java.math.BigDecimal;
-import java.math.BigInteger;
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
+import org.jboss.logging.Logger;
+import org.jboss.ws.Constants;
+import org.jboss.ws.core.jaxrpc.binding.*;
+import org.jboss.ws.core.utils.JavaUtils;
+import org.jboss.ws.core.utils.HashCodeUtil;
import javax.xml.namespace.QName;
import javax.xml.rpc.encoding.DeserializerFactory;
import javax.xml.rpc.encoding.SerializerFactory;
import javax.xml.rpc.encoding.TypeMapping;
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.net.URI;
+import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
-import org.jboss.logging.Logger;
-import org.jboss.ws.Constants;
-import org.jboss.ws.core.jaxrpc.binding.Base64DeserializerFactory;
-import org.jboss.ws.core.jaxrpc.binding.Base64SerializerFactory;
-import org.jboss.ws.core.jaxrpc.binding.CalendarDeserializerFactory;
-import org.jboss.ws.core.jaxrpc.binding.CalendarSerializerFactory;
-import org.jboss.ws.core.jaxrpc.binding.DateDeserializerFactory;
-import org.jboss.ws.core.jaxrpc.binding.DateSerializerFactory;
-import org.jboss.ws.core.jaxrpc.binding.HexDeserializerFactory;
-import org.jboss.ws.core.jaxrpc.binding.HexSerializerFactory;
-import org.jboss.ws.core.jaxrpc.binding.QNameDeserializerFactory;
-import org.jboss.ws.core.jaxrpc.binding.QNameSerializerFactory;
-import org.jboss.ws.core.jaxrpc.binding.SimpleDeserializerFactory;
-import org.jboss.ws.core.jaxrpc.binding.SimpleSerializerFactory;
-import org.jboss.ws.core.utils.JavaUtils;
-
/**
* This is the representation of a type mapping.
* This TypeMapping implementation supports the literal encoding style.
@@ -72,6 +57,8 @@
// Map<KeyPair,FactoryPair>
private Map<KeyPair, FactoryPair> tupleMap = new LinkedHashMap<KeyPair,
FactoryPair>();
+ private Map<Integer, List<KeyPair>> keyPairCache = new
ConcurrentHashMap<Integer, List<KeyPair>>();
+
/**
* Gets the DeserializerFactory registered for the specified pair of Java type and XML
data type.
* @param javaType Class of the Java type
@@ -80,7 +67,7 @@
*/
public DeserializerFactory getDeserializer(Class javaType, QName xmlType)
{
- FactoryPair fPair = getFactoryPair(xmlType, javaType);
+ FactoryPair fPair = getFactoryPair(new IQName(xmlType), javaType);
return (fPair != null ? fPair.getDeserializerFactory() : null);
}
@@ -92,7 +79,7 @@
*/
public SerializerFactory getSerializer(Class javaType, QName xmlType)
{
- FactoryPair fPair = getFactoryPair(xmlType, javaType);
+ FactoryPair fPair = getFactoryPair(new IQName(xmlType), javaType);
return (fPair != null ? fPair.getSerializerFactory() : null);
}
@@ -121,7 +108,7 @@
*/
public boolean isRegistered(Class javaType, QName xmlType)
{
- return getFactoryPair(xmlType, javaType) != null;
+ return getFactoryPair(new IQName(xmlType), javaType) != null;
}
/**
@@ -136,10 +123,11 @@
public void register(Class javaType, QName xmlType, SerializerFactory sf,
DeserializerFactory df)
{
log.debug("register: TypeMappingImpl@" + hashCode() + "
[xmlType=" + xmlType + ",javaType=" + javaType.getName() + ",sf="
+ sf + ",df=" + df + "]");
- registerInternal(javaType, xmlType, sf, df);
+ registerInternal(javaType, new IQName(xmlType), sf, df);
+ keyPairCache.clear();
}
- void registerInternal(Class javaType, QName xmlType, SerializerFactory sf,
DeserializerFactory df)
+ private void registerInternal(Class javaType, IQName xmlType, SerializerFactory sf,
DeserializerFactory df)
{
if (javaType == null)
throw new IllegalArgumentException("javaType cannot be null for: " +
xmlType);
@@ -159,7 +147,7 @@
*/
public void removeDeserializer(Class javaType, QName xmlType)
{
- FactoryPair fPair = getFactoryPair(xmlType, javaType);
+ FactoryPair fPair = getFactoryPair(new IQName(xmlType), javaType);
if (fPair != null)
fPair.setDeserializerFactory(null);
}
@@ -172,7 +160,7 @@
*/
public void removeSerializer(Class javaType, QName xmlType)
{
- FactoryPair fPair = getFactoryPair(xmlType, javaType);
+ FactoryPair fPair = getFactoryPair(new IQName(xmlType), javaType);
if (fPair != null)
fPair.setSerializerFactory(null);
}
@@ -183,7 +171,7 @@
List<QName> types = new ArrayList<QName>();
for (KeyPair keyPair : getKeyPairs(null, null))
{
- types.add(keyPair.getXmlType());
+ types.add(keyPair.getXmlType().toQName());
}
return types;
}
@@ -204,7 +192,7 @@
{
Class javaType = null;
- List keyPairList = getKeyPairs(xmlType, null);
+ List keyPairList = getKeyPairs(new IQName(xmlType), null);
int size = keyPairList.size();
if (size > 0)
{
@@ -220,17 +208,17 @@
*/
public List<Class> getJavaTypes(QName xmlType)
{
- List<KeyPair> keyPairList = getKeyPairs(xmlType, null);
+ List<KeyPair> keyPairList = getKeyPairs( new IQName(xmlType), null);
List<Class> classes = new ArrayList<Class>(keyPairList.size());
-
+
for (KeyPair current : keyPairList)
{
classes.add(current.getJavaType());
}
-
+
return classes;
}
-
+
/**
* Get the Class that was registered last for this xmlType
* If there are two Java Types registered for the xmlType
@@ -242,7 +230,7 @@
//Lets get the primitive type if available
Class javaType = null;
- List keyPairList = getKeyPairs(xmlType, null);
+ List keyPairList = getKeyPairs(new IQName(xmlType), null);
int size = keyPairList.size();
if (size == 2 && getPrimitive)
{
@@ -253,10 +241,10 @@
if(javaType2.isPrimitive() && !javaType1.isPrimitive())
javaType = javaType2;
else
- if(javaType1.isPrimitive() && !javaType2.isPrimitive())
- javaType = javaType1;
+ if(javaType1.isPrimitive() && !javaType2.isPrimitive())
+ javaType = javaType1;
else
- javaType = javaType2; //Fallback on the most latest
+ javaType = javaType2; //Fallback on the most latest
}
else
return getJavaType(xmlType);
@@ -281,7 +269,7 @@
if (size > 0)
{
KeyPair kPair = (KeyPair)keyPairList.get(size - 1);
- xmlType = kPair.getXmlType();
+ xmlType = kPair.getXmlType().toQName();
}
return xmlType;
@@ -305,7 +293,7 @@
if (size > 0)
{
KeyPair kPair = (KeyPair)keyPairList.get(size - 1);
- xmlType = kPair.getXmlType();
+ xmlType = kPair.getXmlType().toQName();
}
return xmlType;
@@ -315,9 +303,34 @@
* Get the serializer/deserializer factory pair for the given xmlType, javaType
* Both xmlType, javaType may be null. In that case, this implementation still
* returns a FactoryPair if there is only one possible match.
+ *
+ * @param xmlType can be null
+ * @param javaType can be null
*/
- List<KeyPair> getKeyPairs(QName xmlType, Class javaType)
+ private List<KeyPair> getKeyPairs(IQName xmlType, Class javaType)
{
+ Integer cacheId = cacheIdFor(javaType, xmlType);
+
+ List<KeyPair> keyPairList = keyPairCache.get(cacheId);
+ if(null == keyPairList)
+ {
+ keyPairList = getKeyPairsInternal(xmlType, javaType);
+ keyPairCache.put(cacheId, keyPairList);
+ }
+
+ return keyPairList;
+ }
+
+ private Integer cacheIdFor(Class javaType, IQName xmlType) {
+ int result = HashCodeUtil.SEED;
+ int nullHash = HashCodeUtil.hash(result, "null");
+ result = javaType!= null ? HashCodeUtil.hash(result, javaType.getName()) :
HashCodeUtil.hash(result, nullHash);
+ result = xmlType!= null ? HashCodeUtil.hash(result, xmlType.hashCode()):
HashCodeUtil.hash(result, nullHash);
+ return new Integer(result);
+ }
+
+ private List<KeyPair> getKeyPairsInternal(IQName xmlType, Class javaType)
+ {
List<KeyPair> keyPairList = new ArrayList<KeyPair>();
// Getting the exact matching pair
@@ -387,6 +400,20 @@
return keyPairList;
}
+ private List<KeyPair> getKeyPairs(IQName xmlType, Class javaType, boolean
tryAssignable)
+ {
+ Integer cacheId = cacheIdFor(javaType, xmlType);
+
+ List<KeyPair> keyPairList = keyPairCache.get(cacheId);
+ if(null == keyPairList)
+ {
+ keyPairList = getKeyPairsInternal(xmlType, javaType, tryAssignable);
+ keyPairCache.put(cacheId, keyPairList);
+ }
+
+ return keyPairList;
+ }
+
/**
* Get the serializer/deserializer factory pair for the given xmlType, javaType
* Both xmlType, javaType may be null. In that case, this implementation still
@@ -394,9 +421,9 @@
* <br>Note: This method does not try for the base class, if no keypair exists
for the
* javaType in question.
*/
- List<KeyPair> getKeyPairs(QName xmlType, Class javaType, boolean tryAssignable)
+ private List<KeyPair> getKeyPairsInternal(IQName xmlType, Class javaType,
boolean tryAssignable)
{
- if(tryAssignable) return getKeyPairs( xmlType, javaType);
+ if(tryAssignable) return getKeyPairs( xmlType, javaType );
List<KeyPair> keyPairList = new ArrayList<KeyPair>();
@@ -450,7 +477,7 @@
* Both xmlType, javaType may be null. In that case, this implementation still
* returns a FactoryPair that was last registered
*/
- FactoryPair getFactoryPair(QName xmlType, Class javaType)
+ private FactoryPair getFactoryPair(IQName xmlType, Class javaType)
{
FactoryPair fPair = null;
@@ -467,85 +494,85 @@
protected void registerStandardLiteralTypes()
{
- registerInternal(BigDecimal.class, Constants.TYPE_LITERAL_DECIMAL, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(BigDecimal.class, Constants.TYPE_LITERAL_DECIMAL, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(BigInteger.class, Constants.TYPE_LITERAL_POSITIVEINTEGER, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(BigInteger.class, Constants.TYPE_LITERAL_NEGATIVEINTEGER, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(BigInteger.class, Constants.TYPE_LITERAL_NONPOSITIVEINTEGER, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(BigInteger.class, Constants.TYPE_LITERAL_NONNEGATIVEINTEGER, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(BigInteger.class, Constants.TYPE_LITERAL_UNSIGNEDLONG, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(BigInteger.class, Constants.TYPE_LITERAL_INTEGER, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(BigInteger.class, Constants.TYPE_LITERAL_POSITIVEINTEGER, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(BigInteger.class, Constants.TYPE_LITERAL_NEGATIVEINTEGER, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(BigInteger.class, Constants.TYPE_LITERAL_NONPOSITIVEINTEGER, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(BigInteger.class, Constants.TYPE_LITERAL_NONNEGATIVEINTEGER, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(BigInteger.class, Constants.TYPE_LITERAL_UNSIGNEDLONG, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(BigInteger.class, Constants.TYPE_LITERAL_INTEGER, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(Date.class, Constants.TYPE_LITERAL_DATETIME, new
DateSerializerFactory(), new DateDeserializerFactory());
+ register(Date.class, Constants.TYPE_LITERAL_DATETIME, new DateSerializerFactory(),
new DateDeserializerFactory());
- registerInternal(Calendar.class, Constants.TYPE_LITERAL_DATE, new
CalendarSerializerFactory(), new CalendarDeserializerFactory());
- registerInternal(Calendar.class, Constants.TYPE_LITERAL_TIME, new
CalendarSerializerFactory(), new CalendarDeserializerFactory());
- registerInternal(Calendar.class, Constants.TYPE_LITERAL_DATETIME, new
CalendarSerializerFactory(), new CalendarDeserializerFactory());
+ register(Calendar.class, Constants.TYPE_LITERAL_DATE, new
CalendarSerializerFactory(), new CalendarDeserializerFactory());
+ register(Calendar.class, Constants.TYPE_LITERAL_TIME, new
CalendarSerializerFactory(), new CalendarDeserializerFactory());
+ register(Calendar.class, Constants.TYPE_LITERAL_DATETIME, new
CalendarSerializerFactory(), new CalendarDeserializerFactory());
- registerInternal(QName.class, Constants.TYPE_LITERAL_QNAME, new
QNameSerializerFactory(), new QNameDeserializerFactory());
+ register(QName.class, Constants.TYPE_LITERAL_QNAME, new QNameSerializerFactory(),
new QNameDeserializerFactory());
- registerInternal(String.class, Constants.TYPE_LITERAL_ANYSIMPLETYPE, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(String.class, Constants.TYPE_LITERAL_DURATION, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(String.class, Constants.TYPE_LITERAL_GDAY, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(String.class, Constants.TYPE_LITERAL_GMONTH, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(String.class, Constants.TYPE_LITERAL_GMONTHDAY, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(String.class, Constants.TYPE_LITERAL_GYEAR, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(String.class, Constants.TYPE_LITERAL_GYEARMONTH, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(String.class, Constants.TYPE_LITERAL_ID, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(String.class, Constants.TYPE_LITERAL_LANGUAGE, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(String.class, Constants.TYPE_LITERAL_NAME, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(String.class, Constants.TYPE_LITERAL_NCNAME, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(String.class, Constants.TYPE_LITERAL_NMTOKEN, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(String.class, Constants.TYPE_LITERAL_NORMALIZEDSTRING, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(String.class, Constants.TYPE_LITERAL_TOKEN, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(String.class, Constants.TYPE_LITERAL_STRING, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(String.class, Constants.TYPE_LITERAL_ANYSIMPLETYPE, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(String.class, Constants.TYPE_LITERAL_DURATION, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(String.class, Constants.TYPE_LITERAL_GDAY, new SimpleSerializerFactory(),
new SimpleDeserializerFactory());
+ register(String.class, Constants.TYPE_LITERAL_GMONTH, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(String.class, Constants.TYPE_LITERAL_GMONTHDAY, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(String.class, Constants.TYPE_LITERAL_GYEAR, new SimpleSerializerFactory(),
new SimpleDeserializerFactory());
+ register(String.class, Constants.TYPE_LITERAL_GYEARMONTH, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(String.class, Constants.TYPE_LITERAL_ID, new SimpleSerializerFactory(),
new SimpleDeserializerFactory());
+ register(String.class, Constants.TYPE_LITERAL_LANGUAGE, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(String.class, Constants.TYPE_LITERAL_NAME, new SimpleSerializerFactory(),
new SimpleDeserializerFactory());
+ register(String.class, Constants.TYPE_LITERAL_NCNAME, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(String.class, Constants.TYPE_LITERAL_NMTOKEN, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(String.class, Constants.TYPE_LITERAL_NORMALIZEDSTRING, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(String.class, Constants.TYPE_LITERAL_TOKEN, new SimpleSerializerFactory(),
new SimpleDeserializerFactory());
+ register(String.class, Constants.TYPE_LITERAL_STRING, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(String[].class, Constants.TYPE_LITERAL_NMTOKENS, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(String[].class, Constants.TYPE_LITERAL_NMTOKENS, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(URI.class, Constants.TYPE_LITERAL_ANYURI, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(URI.class, Constants.TYPE_LITERAL_ANYURI, new SimpleSerializerFactory(),
new SimpleDeserializerFactory());
- registerInternal(boolean.class, Constants.TYPE_LITERAL_BOOLEAN, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(Boolean.class, Constants.TYPE_LITERAL_BOOLEAN, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(boolean.class, Constants.TYPE_LITERAL_BOOLEAN, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(Boolean.class, Constants.TYPE_LITERAL_BOOLEAN, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(byte.class, Constants.TYPE_LITERAL_BYTE, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(Byte.class, Constants.TYPE_LITERAL_BYTE, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(byte.class, Constants.TYPE_LITERAL_BYTE, new SimpleSerializerFactory(),
new SimpleDeserializerFactory());
+ register(Byte.class, Constants.TYPE_LITERAL_BYTE, new SimpleSerializerFactory(),
new SimpleDeserializerFactory());
- registerInternal(Byte[].class, Constants.TYPE_LITERAL_HEXBINARY, new
HexSerializerFactory(), new HexDeserializerFactory());
- registerInternal(byte[].class, Constants.TYPE_LITERAL_HEXBINARY, new
HexSerializerFactory(), new HexDeserializerFactory());
+ register(Byte[].class, Constants.TYPE_LITERAL_HEXBINARY, new
HexSerializerFactory(), new HexDeserializerFactory());
+ register(byte[].class, Constants.TYPE_LITERAL_HEXBINARY, new
HexSerializerFactory(), new HexDeserializerFactory());
- registerInternal(Byte[].class, Constants.TYPE_LITERAL_BASE64BINARY, new
Base64SerializerFactory(), new Base64DeserializerFactory());
- registerInternal(byte[].class, Constants.TYPE_LITERAL_BASE64BINARY, new
Base64SerializerFactory(), new Base64DeserializerFactory());
+ register(Byte[].class, Constants.TYPE_LITERAL_BASE64BINARY, new
Base64SerializerFactory(), new Base64DeserializerFactory());
+ register(byte[].class, Constants.TYPE_LITERAL_BASE64BINARY, new
Base64SerializerFactory(), new Base64DeserializerFactory());
- registerInternal(double.class, Constants.TYPE_LITERAL_DOUBLE, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(Double.class, Constants.TYPE_LITERAL_DOUBLE, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(double.class, Constants.TYPE_LITERAL_DOUBLE, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(Double.class, Constants.TYPE_LITERAL_DOUBLE, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(float.class, Constants.TYPE_LITERAL_FLOAT, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(Float.class, Constants.TYPE_LITERAL_FLOAT, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(float.class, Constants.TYPE_LITERAL_FLOAT, new SimpleSerializerFactory(),
new SimpleDeserializerFactory());
+ register(Float.class, Constants.TYPE_LITERAL_FLOAT, new SimpleSerializerFactory(),
new SimpleDeserializerFactory());
- registerInternal(int.class, Constants.TYPE_LITERAL_UNSIGNEDSHORT, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(Integer.class, Constants.TYPE_LITERAL_UNSIGNEDSHORT, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(int.class, Constants.TYPE_LITERAL_INT, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(Integer.class, Constants.TYPE_LITERAL_INT, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(int.class, Constants.TYPE_LITERAL_UNSIGNEDSHORT, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(Integer.class, Constants.TYPE_LITERAL_UNSIGNEDSHORT, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(int.class, Constants.TYPE_LITERAL_INT, new SimpleSerializerFactory(), new
SimpleDeserializerFactory());
+ register(Integer.class, Constants.TYPE_LITERAL_INT, new SimpleSerializerFactory(),
new SimpleDeserializerFactory());
- registerInternal(long.class, Constants.TYPE_LITERAL_UNSIGNEDINT, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(Long.class, Constants.TYPE_LITERAL_UNSIGNEDINT, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(long.class, Constants.TYPE_LITERAL_LONG, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(Long.class, Constants.TYPE_LITERAL_LONG, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(long.class, Constants.TYPE_LITERAL_UNSIGNEDINT, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(Long.class, Constants.TYPE_LITERAL_UNSIGNEDINT, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(long.class, Constants.TYPE_LITERAL_LONG, new SimpleSerializerFactory(),
new SimpleDeserializerFactory());
+ register(Long.class, Constants.TYPE_LITERAL_LONG, new SimpleSerializerFactory(),
new SimpleDeserializerFactory());
- registerInternal(short.class, Constants.TYPE_LITERAL_UNSIGNEDBYTE, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(Short.class, Constants.TYPE_LITERAL_UNSIGNEDBYTE, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(short.class, Constants.TYPE_LITERAL_SHORT, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
- registerInternal(Short.class, Constants.TYPE_LITERAL_SHORT, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(short.class, Constants.TYPE_LITERAL_UNSIGNEDBYTE, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(Short.class, Constants.TYPE_LITERAL_UNSIGNEDBYTE, new
SimpleSerializerFactory(), new SimpleDeserializerFactory());
+ register(short.class, Constants.TYPE_LITERAL_SHORT, new SimpleSerializerFactory(),
new SimpleDeserializerFactory());
+ register(Short.class, Constants.TYPE_LITERAL_SHORT, new SimpleSerializerFactory(),
new SimpleDeserializerFactory());
}
/** A tuple of the type {XML typeQName, Java Class, SerializerFactory,
DeserializerFactory}.
*/
- public static class KeyPair
+ private static class KeyPair
{
- private QName xmlType;
+ private IQName xmlType;
private Class javaType;
- public KeyPair(QName xmlType, Class javaType)
+ public KeyPair(IQName xmlType, Class javaType)
{
this.javaType = javaType;
this.xmlType = xmlType;
@@ -556,7 +583,7 @@
return javaType;
}
- public QName getXmlType()
+ public IQName getXmlType()
{
return xmlType;
}
@@ -621,4 +648,66 @@
this.serializerFactory = sf;
}
}
+
+ /**
+ * A duck typed QName that relies on internalized Strings.<p>
+ * Taken from the {@link javax.xml.namespace.QName} docs:<br>
+ * The value of a QName contains a Namespace URI, local part and prefix.
+ * The prefix is included in QName to retain lexical information when present in an
XML input source.
+ * The prefix is NOT used in QName.equals(Object) or to compute the QName.hashCode().
+ * Equality and the hash code are defined using only the Namespace URI and local
part.
+ * If not specified, the Namespace URI is set to "" (the empty string).
+ * If not specified, the prefix is set to "" (the empty string).
+ */
+ private final class IQName
+ {
+ public String namespace;
+ public String localPart;
+ public String prefix;
+ public int hash;
+
+ public IQName(QName name)
+ {
+ namespace = name.getNamespaceURI() != null ? name.getNamespaceURI().intern() :
"".intern();
+ localPart = name.getLocalPart() != null ? name.getLocalPart().intern() :
"".intern();
+ prefix = name.getPrefix() != null ? name.getPrefix().intern() :
"".intern();
+ hash = name.hashCode();
+ }
+
+ public boolean equals(Object object) {
+ if(!(object instanceof IQName))
+ throw new IllegalArgumentException("Cannot compare IQName to " +
object);
+
+ IQName iqn = (IQName)object;
+ return (iqn.namespace == this.namespace && iqn.localPart ==
this.localPart);
+ }
+
+ public QName toQName()
+ {
+ QName qname;
+
+ if(null == namespace)
+ qname = new QName(localPart);
+ else if(null == prefix)
+ qname = new QName(namespace, localPart);
+ else
+ qname = new QName(namespace, localPart, prefix);
+
+ return qname;
+ }
+
+ /**
+ * This implementation currently represents a QName as: "{" + Namespace
URI + "}" + local part.
+ * If the Namespace URI .equals(""), only the local part is returned.
+ */
+ public String toString() {
+ String ns = "".equals(namespace) ? namespace :
"{"+namespace+"}";
+ return ns+localPart;
+ }
+
+ public int hashCode()
+ {
+ return this.hash;
+ }
+ }
}
Modified: trunk/jbossws-core/src/main/java/org/jboss/ws/core/jaxws/JAXBContextCache.java
===================================================================
---
trunk/jbossws-core/src/main/java/org/jboss/ws/core/jaxws/JAXBContextCache.java 2007-02-02
13:52:01 UTC (rev 2252)
+++
trunk/jbossws-core/src/main/java/org/jboss/ws/core/jaxws/JAXBContextCache.java 2007-02-02
14:21:44 UTC (rev 2253)
@@ -30,6 +30,7 @@
import javax.xml.bind.JAXBException;
import org.jboss.ws.core.CommonMessageContext;
+import org.jboss.ws.core.utils.HashCodeUtil;
import org.jboss.ws.core.soap.MessageContextAssociation;
import org.jboss.ws.metadata.umdm.EndpointMetaData;
@@ -107,11 +108,11 @@
private static Integer buildId(Class[] classes)
{
- int sum = 0;
+ int sum = HashCodeUtil.SEED;
for (Class cls : classes)
{
- sum += cls.hashCode();
- }
+ sum = HashCodeUtil.hash(sum, cls.getName());
+ }
return new Integer(sum);
}
Modified: trunk/jbossws-core/src/main/java/org/jboss/ws/core/jaxws/JAXBSerializer.java
===================================================================
---
trunk/jbossws-core/src/main/java/org/jboss/ws/core/jaxws/JAXBSerializer.java 2007-02-02
13:52:01 UTC (rev 2252)
+++
trunk/jbossws-core/src/main/java/org/jboss/ws/core/jaxws/JAXBSerializer.java 2007-02-02
14:21:44 UTC (rev 2253)
@@ -64,30 +64,10 @@
String xmlFragment = null;
try
{
- TypeMappingImpl typeMapping = serContext.getTypeMapping();
+ // It needs to be a valid JAXB type
+ // Therefore we don't need to look into our TypeMapping
+ Class javaType = value.getClass();
- Class javaType = null;
- List<Class> possibleJavaTypes = typeMapping.getJavaTypes(xmlType);
- if(possibleJavaTypes.size()>1)
- {
- // resolve java type by assignability
- for(Class type : possibleJavaTypes)
- {
- if(JavaUtils.isAssignableFrom(type, value.getClass()))
- {
- javaType = type;
- break;
- }
- }
- }
- else
- {
- javaType = typeMapping.getJavaType(xmlType);
- }
-
- if(null == javaType)
- throw new Exception("Unable to resolve target java type");
-
JAXBContextCache contextCache = JAXBContextCache.getContextCache();
JAXBContext jaxbContext = contextCache.getInstance(javaType);
Added: trunk/jbossws-core/src/main/java/org/jboss/ws/core/server/ServiceEndpointDTO.java
===================================================================
--- trunk/jbossws-core/src/main/java/org/jboss/ws/core/server/ServiceEndpointDTO.java
(rev 0)
+++
trunk/jbossws-core/src/main/java/org/jboss/ws/core/server/ServiceEndpointDTO.java 2007-02-02
14:21:44 UTC (rev 2253)
@@ -0,0 +1,70 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package org.jboss.ws.core.server;
+
+import javax.management.ObjectName;
+
+/**
+ * @author Heiko.Braun(a)jboss.org
+ * @version $Id:$
+ * @since 02.02.2007
+ */
+public class ServiceEndpointDTO {
+
+ private ServiceEndpointMetrics seMetrics;
+ private ServiceEndpoint.State state;
+ private ObjectName sepID;
+ private String address;
+
+ public ServiceEndpointMetrics getSeMetrics() {
+ return seMetrics;
+ }
+
+ public void setSeMetrics(ServiceEndpointMetrics seMetrics) {
+ this.seMetrics = seMetrics;
+ }
+
+ public ServiceEndpoint.State getState() {
+ return state;
+ }
+
+ public void setState(ServiceEndpoint.State state) {
+ this.state = state;
+ }
+
+ public ObjectName getSepID() {
+ return sepID;
+ }
+
+ public void setSepID(ObjectName sepID) {
+ this.sepID = sepID;
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ this.address = address;
+ }
+
+}
Modified:
trunk/jbossws-core/src/main/java/org/jboss/ws/core/server/ServiceEndpointManager.java
===================================================================
---
trunk/jbossws-core/src/main/java/org/jboss/ws/core/server/ServiceEndpointManager.java 2007-02-02
13:52:01 UTC (rev 2252)
+++
trunk/jbossws-core/src/main/java/org/jboss/ws/core/server/ServiceEndpointManager.java 2007-02-02
14:21:44 UTC (rev 2253)
@@ -34,6 +34,7 @@
import java.net.InetAddress;
import java.net.URL;
import java.net.UnknownHostException;
+import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
@@ -285,15 +286,7 @@
ObjectName sepID = (ObjectName)entry.getKey();
ServiceEndpoint wsEndpoint = (ServiceEndpoint)entry.getValue();
ServiceEndpointInfo seInfo = wsEndpoint.getServiceEndpointInfo();
- String endpointAddress =
seInfo.getServerEndpointMetaData().getEndpointAddress();
- //pw.println("<tr><td>" + sepID.getCanonicalName() +
"</td><td><a href='" + endpointAddress +
"?wsdl'>" + endpointAddress +
"?wsdl</a></td></tr>");
- URL displayURL = new URL(endpointAddress);
- String endPointPath = displayURL.getPath();
- if (this.getWebServiceHost().equals(ServiceEndpointManager.UNDEFINED_HOSTNAME)
== true)
- {
- displayURL = requestURL;
- }
- String displayAddress = displayURL.getProtocol() + "://" +
displayURL.getHost() + ":" + displayURL.getPort() + endPointPath;
+ String displayAddress = getDisplayAddress(seInfo, requestURL);
pw.println("<tr><td>" + sepID.getCanonicalName() +
"</td><td><a href='" + displayAddress +
"?wsdl'>" + displayAddress +
"?wsdl</a></td></tr>");
}
pw.println("</table>");
@@ -302,6 +295,43 @@
return sw.toString();
}
+ public List<ServiceEndpointDTO> getRegisteredEndpoints(URL requestURL) throws
java.net.MalformedURLException
+ {
+ List<ServiceEndpointDTO> registered = new
ArrayList<ServiceEndpointDTO>();
+ Iterator it = registry.entrySet().iterator();
+ while (it.hasNext())
+ {
+ Map.Entry entry = (Map.Entry)it.next();
+ ObjectName sepID = (ObjectName)entry.getKey();
+ ServiceEndpoint wsEndpoint = (ServiceEndpoint)entry.getValue();
+ ServiceEndpointInfo seInfo = wsEndpoint.getServiceEndpointInfo();
+ String displayAddress = getDisplayAddress(seInfo, requestURL);
+
+ try {
+ ServiceEndpointDTO dto = new ServiceEndpointDTO();
+ dto.setSepID(sepID);
+ dto.setAddress(displayAddress);
+
dto.setSeMetrics((ServiceEndpointMetrics)wsEndpoint.getServiceEndpointMetrics().clone());
+ dto.setState(wsEndpoint.getState());
+ registered.add(dto);
+ } catch (CloneNotSupportedException e) { }
+ }
+
+ return registered;
+ }
+
+ private String getDisplayAddress(ServiceEndpointInfo seInfo, URL requestURL) throws
MalformedURLException {
+ String endpointAddress = seInfo.getServerEndpointMetaData().getEndpointAddress();
+ URL displayURL = new URL(endpointAddress);
+ String endPointPath = displayURL.getPath();
+ if (this.getWebServiceHost().equals(ServiceEndpointManager.UNDEFINED_HOSTNAME) ==
true)
+ {
+ displayURL = requestURL;
+ }
+ String displayAddress = displayURL.getProtocol() + "://" +
displayURL.getHost() + ":" + displayURL.getPort() + endPointPath;
+ return displayAddress;
+ }
+
/** Get the endpoint metrics
*/
public ServiceEndpointMetrics getServiceEndpointMetrics(ObjectName sepID)
Modified:
trunk/jbossws-core/src/main/java/org/jboss/ws/core/server/ServiceEndpointMetrics.java
===================================================================
---
trunk/jbossws-core/src/main/java/org/jboss/ws/core/server/ServiceEndpointMetrics.java 2007-02-02
13:52:01 UTC (rev 2252)
+++
trunk/jbossws-core/src/main/java/org/jboss/ws/core/server/ServiceEndpointMetrics.java 2007-02-02
14:21:44 UTC (rev 2253)
@@ -34,7 +34,7 @@
* @author Thomas.Diesler(a)jboss.org
* @since 14-Dec-2005
*/
-public class ServiceEndpointMetrics implements Serializable
+public class ServiceEndpointMetrics implements Serializable, Cloneable
{
private static final long serialVersionUID = -7730514070812711512L;
@@ -172,4 +172,22 @@
buffer.append("\n totalProcessingTime=" + totalProcessingTime);
return buffer.toString();
}
+
+ protected Object clone() throws CloneNotSupportedException {
+ ServiceEndpointMetrics sem = new ServiceEndpointMetrics(this.endpointID);
+
+ sem.avgProcessingTime = this.avgProcessingTime;
+ sem.maxProcessingTime = this.maxProcessingTime;
+ sem.minProcessingTime = this.minProcessingTime;
+
+ sem.faultCount = this.faultCount;
+ sem.requestCount = this.requestCount;
+ sem.responseCount = this.responseCount;
+
+ sem.startTime = this.startTime;
+ sem.stopTime = this.stopTime;
+ sem.totalProcessingTime = this.totalProcessingTime;
+
+ return sem;
+ }
}
Modified:
trunk/jbossws-core/src/main/java/org/jboss/ws/core/server/WSDLRequestHandler.java
===================================================================
---
trunk/jbossws-core/src/main/java/org/jboss/ws/core/server/WSDLRequestHandler.java 2007-02-02
13:52:01 UTC (rev 2252)
+++
trunk/jbossws-core/src/main/java/org/jboss/ws/core/server/WSDLRequestHandler.java 2007-02-02
14:21:44 UTC (rev 2253)
@@ -140,7 +140,7 @@
completeHost = reqProtocol + "://" + hostAndPort;
}
- String newLocation = completeHost + reqPath +
"?wsdl&resource=" + newResourcePath;
+ String newLocation = completeHost + reqPath +
"?wsdl&resource=" + newResourcePath;
locationAttr.setNodeValue(newLocation);
log.trace("Mapping import from '" + orgLocation +
"' to '" + newLocation + "'");
Modified: trunk/jbossws-core/src/main/java/org/jboss/ws/core/soap/EnvelopeBuilderDOM.java
===================================================================
---
trunk/jbossws-core/src/main/java/org/jboss/ws/core/soap/EnvelopeBuilderDOM.java 2007-02-02
13:52:01 UTC (rev 2252)
+++
trunk/jbossws-core/src/main/java/org/jboss/ws/core/soap/EnvelopeBuilderDOM.java 2007-02-02
14:21:44 UTC (rev 2253)
@@ -68,6 +68,7 @@
Element domEnv = null;
try
{
+ // TODO: The parser unescapes special characters, which we need to escape later
on again
domEnv = DOMUtils.parse(ins);
}
catch (IOException ex)
@@ -107,7 +108,7 @@
{
Element srcElement = (Element)it.next();
//registerNamespacesLocally(srcElement);
- String xmlFragment = DOMWriter.printNode(srcElement, false);
+ String xmlFragment = DOMWriter.printNode(srcElement, false, true);
Name name = new NameImpl(srcElement.getLocalName(), srcElement.getPrefix(),
srcElement.getNamespaceURI());
SOAPContentElement destElement = new SOAPHeaderElementImpl(name);
@@ -201,7 +202,7 @@
DOMUtils.copyAttributes(destElement, srcElement);
- String xmlFragment = DOMWriter.printNode(srcElement, false);
+ String xmlFragment = DOMWriter.printNode(srcElement, false, true);
destElement.setXMLFragment(xmlFragment);
}
}
@@ -214,7 +215,7 @@
DOMUtils.copyAttributes(destElement, srcElement);
- String xmlFragment = DOMWriter.printNode(srcElement, false);
+ String xmlFragment = DOMWriter.printNode(srcElement, false, true);
destElement.setXMLFragment(xmlFragment);
}
else if (style == null)
Modified: trunk/jbossws-core/src/main/java/org/jboss/ws/core/soap/NodeImpl.java
===================================================================
--- trunk/jbossws-core/src/main/java/org/jboss/ws/core/soap/NodeImpl.java 2007-02-02
13:52:01 UTC (rev 2252)
+++ trunk/jbossws-core/src/main/java/org/jboss/ws/core/soap/NodeImpl.java 2007-02-02
14:21:44 UTC (rev 2253)
@@ -186,6 +186,9 @@
throw new WSException("javax.xml.soap.Text should take care of
this");
org.w3c.dom.Node child = (org.w3c.dom.Node)getFirstChild();
+
+ value = DOMWriter.normalize(value, false);
+
if (child instanceof org.w3c.dom.Text)
((org.w3c.dom.Text)child).setNodeValue(value);
Modified: trunk/jbossws-core/src/main/java/org/jboss/ws/core/soap/SOAPContentElement.java
===================================================================
---
trunk/jbossws-core/src/main/java/org/jboss/ws/core/soap/SOAPContentElement.java 2007-02-02
13:52:01 UTC (rev 2252)
+++
trunk/jbossws-core/src/main/java/org/jboss/ws/core/soap/SOAPContentElement.java 2007-02-02
14:21:44 UTC (rev 2253)
@@ -207,6 +207,8 @@
QName xmlType = getXmlType();
Class javaType = getJavaType();
+ QName xmlName = getElementQName();
+
log.debug("getXMLFragment from Object [xmlType=" + xmlType +
",javaType=" + javaType + "]");
CommonMessageContext msgContext =
MessageContextAssociation.peekMessageContext();
@@ -218,7 +220,6 @@
TypeMappingImpl typeMapping = serContext.getTypeMapping();
- QName xmlName = getElementQName();
try
{
SerializerSupport ser;
@@ -232,9 +233,10 @@
ser = new NullValueSerializer();
}
- xmlFragment = ser.serialize(xmlName, xmlType, getObjectValue(), serContext,
null);
- log.debug("xmlFragment: " + xmlFragment);
- invalidateObjectContent();
+ String tmpFragment = ser.serialize(xmlName, xmlType, getObjectValue(),
serContext, null);
+ log.debug("xmlFragment: " + tmpFragment);
+
+ setXMLFragment(tmpFragment);
}
catch (BindingException e)
{
Modified: trunk/jbossws-core/src/main/java/org/jboss/ws/core/soap/SOAPElementWriter.java
===================================================================
---
trunk/jbossws-core/src/main/java/org/jboss/ws/core/soap/SOAPElementWriter.java 2007-02-02
13:52:01 UTC (rev 2252)
+++
trunk/jbossws-core/src/main/java/org/jboss/ws/core/soap/SOAPElementWriter.java 2007-02-02
14:21:44 UTC (rev 2253)
@@ -112,6 +112,8 @@
// This is expensive. Make sure it only happens for debugging
try
{
+ // TODO: this unescapes sepcial chars, which might be quiet confusing
+ // but they are actually send escaped.
xmlStr = DOMWriter.printNode(DOMUtils.parse(xmlStr), true);
}
catch (IOException ex)
Modified: trunk/jbossws-core/src/main/java/org/jboss/ws/core/utils/DOMWriter.java
===================================================================
--- trunk/jbossws-core/src/main/java/org/jboss/ws/core/utils/DOMWriter.java 2007-02-02
13:52:01 UTC (rev 2252)
+++ trunk/jbossws-core/src/main/java/org/jboss/ws/core/utils/DOMWriter.java 2007-02-02
14:21:44 UTC (rev 2253)
@@ -57,23 +57,14 @@
// $Id$
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.io.UnsupportedEncodingException;
-import java.io.Writer;
+import org.jboss.logging.Logger;
+import org.w3c.dom.*;
+
+import java.io.*;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
-import org.jboss.logging.Logger;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Element;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
/**
* Traverse a DOM tree in order to print a document that is parsed.
*
@@ -103,6 +94,8 @@
// True if we want namespace completion
private boolean completeNamespaces = true;
+ private boolean escapeCharacters = false;
+
public DOMWriter(Writer w)
{
this.out = new PrintWriter(w);
@@ -144,7 +137,7 @@
/**
* Print a node with explicit prettyprinting.
* The defaults for all other DOMWriter properties apply.
- *
+ * Special characters will not be escaped.
*/
public static String printNode(Node node, boolean prettyprint)
{
@@ -153,6 +146,19 @@
return strw.toString();
}
+ /**
+ * Print a node with explicit prettyprinting.
+ * Special characters can be escaped. This is idiot proof
+ * but can be very expensive.
+ *
+ */
+ public static String printNode(Node node, boolean prettyprint, boolean escape)
+ {
+ StringWriter strw = new StringWriter();
+ new
DOMWriter(strw).setPrettyprint(prettyprint).setEscapeCharacters(escape).print(node);
+ return strw.toString();
+ }
+
public boolean isCanonical()
{
return canonical;
@@ -168,6 +174,11 @@
return this;
}
+ public DOMWriter setEscapeCharacters(boolean b)
+ {
+ this.escapeCharacters = b;
+ return this;
+ }
/**
* Set wheter subelements should have their namespaces completed.
* Setting this to false may lead to invalid XML fragments.
@@ -287,7 +298,7 @@
Attr attr = attrs[i];
String atPrefix = attr.getPrefix();
String atName = attr.getNodeName();
- String atValue = normalize(attr.getNodeValue(), canonical);
+ String atValue = escapeCharacters ? normalize(attr.getNodeValue(),
canonical) : attr.getNodeValue();
if (atPrefix != null && !atPrefix.equals("xmlns")
&& !atPrefix.equals("xml"))
{
@@ -394,7 +405,7 @@
// print text
case Node.TEXT_NODE:
{
- String text = normalize(node.getNodeValue(), canonical);
+ String text = escapeCharacters ? normalize(node.getNodeValue(), canonical) :
node.getNodeValue();
if (prettyprint == false || text.trim().length() > 0)
out.print(text);
break;
Added: trunk/jbossws-core/src/main/java/org/jboss/ws/core/utils/HashCodeUtil.java
===================================================================
--- trunk/jbossws-core/src/main/java/org/jboss/ws/core/utils/HashCodeUtil.java
(rev 0)
+++ trunk/jbossws-core/src/main/java/org/jboss/ws/core/utils/HashCodeUtil.java 2007-02-02
14:21:44 UTC (rev 2253)
@@ -0,0 +1,134 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package org.jboss.ws.core.utils;
+
+import java.lang.reflect.Array;
+
+/**
+* Collected methods which allow easy implementation of
<code>hashCode</code>.
+*
+* Example use case:
+* <pre>
+* public int hashCode(){
+* int result = HashCodeUtil.SEED;
+* //collect the contributions of various fields
+* result = HashCodeUtil.hash(result, fPrimitive);
+* result = HashCodeUtil.hash(result, fObject);
+* result = HashCodeUtil.hash(result, fArray);
+* return result;
+* }
+* </pre>
+*/
+public final class HashCodeUtil {
+
+ /**
+ * An initial value for a <code>hashCode</code>, to which is added
contributions
+ * from fields. Using a non-zero value decreases collisons of
<code>hashCode</code>
+ * values.
+ */
+ public static final int SEED = 23;
+
+ /**
+ * booleans.
+ */
+ public static int hash( int aSeed, boolean aBoolean ) {
+ return firstTerm( aSeed ) + ( aBoolean ? 1 : 0 );
+ }
+
+ /**
+ * chars.
+ */
+ public static int hash( int aSeed, char aChar ) {
+ return firstTerm( aSeed ) + (int)aChar;
+ }
+
+ /**
+ * ints.
+ */
+ public static int hash( int aSeed , int aInt ) {
+ /*
+ * Implementation Note
+ * Note that byte and short are handled by this method, through
+ * implicit conversion.
+ */
+ return firstTerm( aSeed ) + aInt;
+ }
+
+ /**
+ * longs.
+ */
+ public static int hash( int aSeed , long aLong ) {
+ return firstTerm(aSeed) + (int)( aLong ^ (aLong >>> 32) );
+ }
+
+ /**
+ * floats.
+ */
+ public static int hash( int aSeed , float aFloat ) {
+ return hash( aSeed, Float.floatToIntBits(aFloat) );
+ }
+
+ /**
+ * doubles.
+ */
+ public static int hash( int aSeed , double aDouble ) {
+ return hash( aSeed, Double.doubleToLongBits(aDouble) );
+ }
+
+ /**
+ * <code>aObject</code> is a possibly-null object field, and possibly an
array.
+ *
+ * If <code>aObject</code> is an array, then each element may be a
primitive
+ * or a possibly-null object.
+ */
+ public static int hash( int aSeed , Object aObject ) {
+ int result = aSeed;
+ if ( aObject == null) {
+ result = hash(result, 0);
+ }
+ else if ( ! isArray(aObject) ) {
+ result = hash(result, aObject.hashCode());
+ }
+ else {
+ int length = Array.getLength(aObject);
+ for ( int idx = 0; idx < length; ++idx ) {
+ Object item = Array.get(aObject, idx);
+ //recursive call!
+ result = hash(result, item);
+ }
+ }
+ return result;
+ }
+
+
+ /// PRIVATE ///
+ private static final int fODD_PRIME_NUMBER = 37;
+
+ private static int firstTerm( int aSeed ){
+ return fODD_PRIME_NUMBER * aSeed;
+ }
+
+ private static boolean isArray(Object aObject){
+ return aObject.getClass().isArray();
+ }
+}
+
Modified: trunk/jbossws-core/src/main/resources/jbossws.war/index.html
===================================================================
--- trunk/jbossws-core/src/main/resources/jbossws.war/index.html 2007-02-02 13:52:01 UTC
(rev 2252)
+++ trunk/jbossws-core/src/main/resources/jbossws.war/index.html 2007-02-02 14:21:44 UTC
(rev 2253)
@@ -1,19 +1,63 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1">
-<title>JBossWS</title>
-<link rel="stylesheet" href="./styles.css">
+<html><head>
+<meta http-equiv='Content-Type content='text/html;
charset=iso-8859-1'>
+<title>JBossWS / jbossws-2.0.0.CR3 (date=200702012001)</title>
+<link rel='stylesheet' href='./styles.css'>
</head>
<body>
-<h3>Welcome to JBoss Web Services</h3>
+<div class='pageHeader'>Welcome to JBoss Web Services</div>
-J2EE compatible webservices.
-<p/>
+<div class="pageSection">
+<h2>J2EE compatible web services</h2>
+After JBoss J2EE-1.4 certification in Jun/2004 we have decided to develop our own JAX-RPC
1.1 / JAX-WS compliant SOAP stack that fits better in the overall JBoss architecture and
is generally more suiteable for the specific J2EE requirements for web services.
+</div>
+<div class="pageSection">
+<h3>Administration</h3>
+
+<fieldset>
+ <legend><b>Runtime information</b></legend>
<ul>
- <li> <a href="services">View</a> the list of deployed Web
Services </li>
+ <li><a href="services">View a list of deployed
services</a></li>
+ <!--li><a href="depends">View installed
dependencies</a></li-->
+ <li><a href="/jmx-console/">Access JMX
console</a></li>
</ul>
+</fieldset>
+</div>
+<div class="pageSection">
+<h3>Project information</h3>
+
+<fieldset>
+ <legend><b>Documentation</b></legend>
+
+<ul>
+ <li><a
href="http://labs.jboss.com/portal/jbossws/downloads">Latest download and
samples</a></li>
+ <li><a
href="http://www.jboss.org/wiki/Wiki.jsp?page=JBWSFAQ">FAQ&l...
+ <li><a
href="http://labs.jboss.com/jbossws/user-guide/en/html/index.html&qu...
guide</a></li>
+ <li><a
href="http://www.jboss.org/wiki/Wiki.jsp?page=JBossWS">JBossWS
WIKI</a></li>
+</ul>
+</fieldset>
+
+</br>
+<fieldset>
+ <legend><b>Community</b></legend>
+<ul>
+ <li><a
href="http://www.jboss.org/index.html?module=bb&op=viewforum&...
forum</a></li>
+ <li><a
href="http://www.jboss.org/index.html?module=bb&op=viewforum&...
forum</a></li>
+ <li><a
href="https://lists.jboss.org/mailman/listinfo/jbossws-users"&g...
list</a></li>
+</ul>
+</fieldset>
+
+</br>
+<fieldset>
+ <legend><b>Source repository</b></legend>
+<ul>
+ <li><a
href="http://wiki.jboss.org/wiki/Wiki.jsp?page=JBWSFAQSourceReposito...
repository</a></li>
+ <li><a
href="http://fisheye.jboss.com/viewrep/JBossWS">Browse
sources online</a></li>
+</ul>
+</fieldset>
+</div>
+
</body>
-</html>
+</html>
\ No newline at end of file
Modified: trunk/jbossws-core/src/main/resources/jbossws.war/styles.css
===================================================================
--- trunk/jbossws-core/src/main/resources/jbossws.war/styles.css 2007-02-02 13:52:01 UTC
(rev 2252)
+++ trunk/jbossws-core/src/main/resources/jbossws.war/styles.css 2007-02-02 14:21:44 UTC
(rev 2253)
@@ -7,9 +7,37 @@
.table_form {
}
+.pageHeader {
+ font-size: 14pt;
+ font-weight: BOLD;
+ color: #ffffff;
+ border-bottom-width:1px;
+ border-bottom-style:solid;
+ border-color:#000066;
+ margin-bottom:15px;
+ padding-left:15px;
+ padding-top:5px;
+ padding-bottom:5px;
+ background-color: #aaaadd;
+ max-width: 900px;
+}
+
+.pageSection {
+ padding-left:15px;
+ margin-bottom: 5px;
+ max-width: 900px;
+}
+
+.metrics
+{
+ font-size: 6pt;
+ background-color: #dddddd;
+ width: 100%;
+}
+
/* table row header */
.list_tr_head {
- font-family: Verdana;
+ font-family: Verdana, sans-serif;
font-size: 8pt;
font-weight: 600;
text-align: center;
@@ -18,7 +46,7 @@
/* table row list view */
.list_tr {
- font-family: Verdana;
+ font-family: Verdana, sans-serif;
font-size: 8pt;
color: #000066;
vertical-align: top;
@@ -27,7 +55,7 @@
/* table row list view odd lines */
.list_tr_even {
- font-family: Verdana;
+ font-family: Verdana, sans-serif;
font-size: 8pt;
color: #000066;
vertical-align: top;
@@ -36,7 +64,7 @@
/* table row list view even lines */
.list_tr_odd {
- font-family: Verdana;
+ font-family: Verdana, sans-serif;
font-size: 8pt;
color: #000066;
vertical-align: top;
@@ -45,7 +73,7 @@
/* form label */
.form_label {
- font-family: Verdana;
+ font-family: Verdana, sans-serif;
font-weight: 500;
font-size: 8pt;
color: #000066;
@@ -57,7 +85,7 @@
/* form value */
.form_value {
- font-family: Verdana;
+ font-family: Verdana, sans-serif;
font-size: 8pt;
color: #000066;
vertical-align: baseline;
@@ -65,7 +93,7 @@
/* tiny writing */
.tiny {
- font-family: Verdana;
+ font-family: Verdana, sans-serif;
font-size: 8pt;
color: #666666;
}
@@ -92,7 +120,7 @@
}
body {
- font-family: Verdana;
+ font-family: Verdana,, sans-serif;
font-size: 8pt;
color: #000066;
background-color: #ffffff;
@@ -100,28 +128,28 @@
/* title style */
h1 {
- font-family: Verdana;
+ font-family: Verdana, sans-serif;
font-size: 14pt;
font-weight: 600;
color: #000066;
}
h2 {
- font-family: Verdana;
+ font-family: Verdana, sans-serif;
font-size: 12pt;
font-weight: 600;
color: #000066;
}
h3 {
- font-family: Verdana;
+ font-family: Verdana, sans-serif;
font-size: 10pt;
font-weight: 600;
color: #000066;
}
h4 {
- font-family: Verdana;
+ font-family: Verdana, sans-serif;
font-size: 10pt;
font-weight: 500;
color: #000066;
@@ -129,26 +157,26 @@
/* table desk */
td {
- font-family: Verdana;
+ font-family: Verdana, sans-serif;
font-size: 8pt;
padding-left: 5px;
padding-right: 5px;
}
input, textarea, select, option {
- font-family: Verdana;
+ font-family: Verdana, sans-serif;
font-size: 8pt;
color: #000066;
}
a {
- font-family: Verdana;
+ font-family: Verdana, sans-serif;
color: #0000dd;
text-decoration: none;
}
a:hover{
- font-family: Verdana;
+ font-family: Verdana, sans-serif;
color: #cc0000;
text-decoration: none;
}
Modified: trunk/jbossws-tests/build.xml
===================================================================
--- trunk/jbossws-tests/build.xml 2007-02-02 13:52:01 UTC (rev 2252)
+++ trunk/jbossws-tests/build.xml 2007-02-02 14:21:44 UTC (rev 2253)
@@ -9,7 +9,7 @@
<!-- $Id$ -->
<project default="main" basedir="../jbossws-tests"
name="JBossWS-Tests">
-
+
<import file="${basedir}/../build/ant-import/build-thirdparty.xml"/>
<import file="${basedir}/../build/ant-import/build-setup.xml"/>
<import file="${basedir}/../integration-jboss50/build.xml"/>
@@ -19,21 +19,21 @@
<import file="${basedir}/../jbossws-core/build.xml"/>
<import
file="${basedir}/../jbossws-tests/ant-import/build-benchmark.xml"/>
<import
file="${basedir}/../jbossws-tests/ant-import/jaxws-tools-delegate.xml"/>
-
+
<property name="core.output.dir"
value="${core.dir}/output"/>
<property name="core.output.classes.dir"
value="${core.output.dir}/classes"/>
<property name="core.output.classes14.dir"
value="${core.output.dir}/classes14"/>
<property name="core.output.lib.dir"
value="${core.output.dir}/lib"/>
-
+
<property name="tests.etc.dir"
value="${tests.dir}/src/main/etc"/>
<property name="tests.java.dir"
value="${tests.dir}/src/main/java"/>
<property name="tests.resources.dir"
value="${tests.dir}/src/main/resources"/>
<property name="tests.output.dir"
value="${tests.dir}/output"/>
-
+
<!-- ================================================================== -->
<!-- Setup -->
<!-- ================================================================== -->
-
+
<!-- Use -Ddebug=true for remote debugging -->
<condition property="remote.debug.line" value="-Xdebug -Xnoagent
-Djava.compiler=NONE
-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5006">
<isset property="debug"/>
@@ -43,10 +43,10 @@
<isset property="debug"/>
</not>
</condition>
-
+
<!-- Available integration target -->
<property name="integration.target.${jbossws.integration.target}"
value="true"/>
-
+
<!-- Define jboss.home -->
<condition property="jboss.home" value="${jboss50.home}">
<equals arg1="${jbossws.integration.target}"
arg2="jboss50"/>
@@ -57,7 +57,7 @@
<condition property="jboss.home" value="${jboss40.home}">
<equals arg1="${jbossws.integration.target}"
arg2="jboss40"/>
</condition>
-
+
<!-- Integration Target Server -->
<condition property="jbossws.integration.target.jboss">
<isset property="jboss.home"/>
@@ -65,13 +65,13 @@
<condition property="jbossws.integration.target.tomcat">
<equals arg1="${jbossws.integration.target}"
arg2="tomcat"/>
</condition>
-
+
<property name="jboss.client" value="${jboss.home}/client"/>
<property name="jboss.lib" value="${jboss.home}/lib"/>
<property name="jboss.server"
value="${jboss.home}/server/${jboss.server.instance}"/>
<property name="jboss.server.lib"
value="${jboss.server}/lib"/>
<property name="jboss.server.deploy"
value="${jboss.server}/deploy"/>
-
+
<!-- Java Endorsed -->
<condition property="endorsed.dirs"
value="${jboss.home}/lib/endorsed">
<isset property="jbossws.integration.target.jboss"/>
@@ -79,7 +79,7 @@
<condition property="endorsed.dirs"
value="${tomcat.home}/common/endorsed">
<isset property="jbossws.integration.target.tomcat"/>
</condition>
-
+
<!-- Set a hostname property based on COMPUTERNAME for win32, HOSTNAME
otherwise and initialize the node0/node1 cluster hostnames to localhost
and ${hostname} by default. If you cannot route multicast traffic between
@@ -96,26 +96,26 @@
<os family="windows"/>
</not>
</condition>
-
+
<!-- node0 defaults -->
<property name="node0" value="localhost"/>
<property name="node0.http.url"
value="http://${node0}:8080"/>
<property name="node0.jndi.url"
value="jnp://${node0}:1099"/>
<property name="node0.hajndi.url"
value="jnp://${node0}:1100"/>
-
+
<!-- ================================================================== -->
<!-- Initialization -->
<!-- ================================================================== -->
-
+
<target name="prepare">
-
+
<mkdir dir="${tests.output.dir}/log"/>
<touch file="${tests.output.dir}/log/test.log"/>
-
+
<tstamp>
<format property="build.id" pattern="yyyyMMddHHmm"/>
</tstamp>
-
+
<!-- Define the jbossws.core.jar -->
<condition property="jbossws.core.jar"
value="${core.output.lib.dir}/jbossws-core.jar">
<isset property="HAVE_JDK_1.5"/>
@@ -137,7 +137,7 @@
</condition>
<property name="excludes-short-name"
value="tests-${jbossws.integration.target}-noejb3-excludes.txt"/>
<property name="excludesfile"
value="${tests.resources.dir}/${excludes-short-name}"/>
-
+
<echo/>
<echo message="-----------------------------------------------"/>
<echo message="jboss.home = ${jboss.home}"/>
@@ -146,16 +146,16 @@
<echo message="endorsed = ${endorsed.dirs}"/>
<echo message="excludesfile = ${excludes-short-name}"/>
<echo message="-----------------------------------------------"/>
-
+
</target>
-
+
<!--
Init the various classpaths
-->
<target name="init"
depends="prepare,jboss-classpath,tomcat-classpath"/>
-
+
<target name="common-classpath"
depends="prepare,thirdparty">
-
+
<!-- The combined compile classpath -->
<path id="jbossws.jars.classpath">
<pathelement location="${jbossws.core.jar}"/>
@@ -163,12 +163,12 @@
<pathelement location="${core.output.lib.dir}/jboss-jaxrpc.jar"/>
<pathelement location="${core.output.lib.dir}/jboss-jaxws.jar"/>
<pathelement location="${core.output.lib.dir}/jboss-saaj.jar"/>
- <pathelement
location="${jboss50.output.lib.dir}/jbossws-jboss50-integration.jar"/>
- <pathelement
location="${jboss42.output.lib.dir}/jbossws-jboss42-integration.jar"/>
- <pathelement
location="${jboss40.output.lib.dir}/jbossws-jboss40-integration.jar"/>
- <pathelement
location="${tomcat.output.lib.dir}/jbossws-tomcat-integration.jar"/>
+ <pathelement
location="${jboss50.output.lib.dir}/jbossws-jboss50-integration.jar"/>
+ <pathelement
location="${jboss42.output.lib.dir}/jbossws-jboss42-integration.jar"/>
+ <pathelement
location="${jboss40.output.lib.dir}/jbossws-jboss40-integration.jar"/>
+ <pathelement
location="${tomcat.output.lib.dir}/jbossws-tomcat-integration.jar"/>
</path>
-
+
<!-- The combined compile classpath -->
<path id="javac.classpath">
<path refid="core.classpath"/>
@@ -185,9 +185,9 @@
<pathelement location="${jboss.client}/jboss-ejb3-client.jar"/>
</path>
</target>
-
+
<target name="jboss-classpath" depends="common-classpath"
if="jbossws.integration.target.jboss">
-
+
<!-- The test client classpath -->
<path id="test.client.classpath">
<path refid="jbossws.jars.classpath"/>
@@ -199,14 +199,14 @@
<pathelement location="${jboss.client}/jbossretro-rt.jar"/>
<pathelement location="${jboss.client}/log4j.jar"/>
<pathelement location="${jboss.client}/jbossall-client.jar"/>
- <pathelement location="${jboss.lib}/jboss-vfs.jar"/>
+ <pathelement location="${jboss.lib}/jboss-vfs.jar"/>
<pathelement location="${jboss.server.lib}/hibernate3.jar"/>
- <pathelement location="${jboss.server.lib}/jboss.jar"/>
- <pathelement location="${jboss.server.lib}/jbosssx.jar"/>
- <pathelement location="${jboss.server.lib}/jbosssx.jar"/>
+ <pathelement location="${jboss.server.lib}/jboss.jar"/>
+ <pathelement location="${jboss.server.lib}/jbosssx.jar"/>
+ <pathelement location="${jboss.server.lib}/jbosssx.jar"/>
<path refid="javac.classpath"/>
</path>
-
+
<!-- The jBPM BPEL classpath -->
<path id="jbpm.bpel.classpath">
<path refid="jbossws.jars.classpath"/>
@@ -226,23 +226,23 @@
-->
</path>
</target>
-
+
<target name="tomcat-classpath" depends="common-classpath"
if="jbossws.integration.target.tomcat">
<!-- The test client classpath -->
<path id="test.client.classpath">
<path refid="jbossws.jars.classpath"/>
- <pathelement
location="${tomcat.common.lib}/jbossws-thirdparty.jar"/>
+ <pathelement
location="${tomcat.common.lib}/jbossws-thirdparty.jar"/>
<path refid="javac.classpath"/>
</path>
</target>
-
-
+
+
<!-- ================================================================== -->
<!-- Compiling -->
<!-- ================================================================== -->
-
+
<target name="compile" depends="wsdl-java,compile14,compile15"
description="Compile sources"/>
-
+
<target name="compile14" depends="init"
unless="HAVE_JDK_1.5">
<mkdir dir="${tests.output.dir}/classes"/>
<javac destdir="${tests.output.dir}/classes"
debug="${javac.debug}" encoding="utf-8"
verbose="${javac.verbose}" deprecation="${javac.deprecation}"
@@ -253,7 +253,7 @@
<classpath refid="javac.classpath"/>
</javac>
</target>
-
+
<target name="compile15" depends="init"
if="HAVE_JDK_1.5">
<mkdir dir="${tests.output.dir}/classes"/>
<javac destdir="${tests.output.dir}/classes"
debug="${javac.debug}" encoding="utf-8"
verbose="${javac.verbose}" deprecation="${javac.deprecation}"
@@ -262,7 +262,7 @@
<classpath refid="javac.classpath"/>
</javac>
</target>
-
+
<target name="post-compile" depends="init"
description="Compile generated sources">
<mkdir dir="${tests.output.dir}/classes"/>
<javac destdir="${tests.output.dir}/classes"
debug="${javac.debug}" encoding="utf-8"
verbose="${javac.verbose}" deprecation="${javac.deprecation}"
failonerror="${javac.fail.onerror}">
@@ -271,7 +271,7 @@
<classpath refid="javac.classpath"/>
</javac>
</target>
-
+
<target name="copy-resources" depends="init"
description="Copy the deployment resources.">
<copy todir="${tests.output.dir}/classes"
file="${tests.etc.dir}/jndi.properties"/>
<copy todir="${tests.output.dir}/classes"
file="${tests.etc.dir}/log4j.xml"/>
@@ -295,18 +295,18 @@
</fileset>
</copy>
</target>
-
+
<!-- ================================================================== -->
<!-- Building -->
<!-- ================================================================== -->
-
+
<target name="main"
depends="compile,copy-resources,java-wsdl,post-compile,copy-generated"
description="Build the deployments.">
<ant antfile="${basedir}/ant-import/build-samples-jaxrpc.xml"
target="build-samples-jaxrpc" inheritall="true"/>
<ant antfile="${basedir}/ant-import/build-samples-jaxws.xml"
target="build-samples-jaxws" inheritall="true"/>
<ant antfile="${basedir}/ant-import/build-jars-jaxrpc.xml"
target="build-jars-jaxrpc" inheritall="true"/>
<ant antfile="${basedir}/ant-import/build-jars-jaxws.xml"
target="build-jars-jaxws" inheritall="true"/>
</target>
-
+
<!--
Create artifacts that need to be compiled with the test cases
-->
@@ -314,23 +314,23 @@
<!-- interop -->
<callWsimport
wsdlLocation="${tests.resources.dir}/interop/soapwsdl/BaseDataTypesDocLitB/WEB-INF/wsdl/service.wsdl"
sourceDir="${tests.output.dir}/wstools/java"
destDir="${tests.output.dir}/classes"
package="org.jboss.test.ws.interop.soapwsdl.basedoclitb"
verbose="true"/>
-
+
<callWsimport
wsdlLocation="${tests.resources.dir}/interop/soapwsdl/BaseDataTypesDocLitW/WEB-INF/wsdl/service.wsdl"
sourceDir="${tests.output.dir}/wstools/java"
destDir="${tests.output.dir}/classes"
package="org.jboss.test.ws.interop.soapwsdl.basedoclitw"
verbose="true"/>
-
+
<callWsimport
wsdlLocation="${tests.resources.dir}/interop/soapwsdl/BaseDataTypesRpcLit/WEB-INF/wsdl/service.wsdl"
sourceDir="${tests.output.dir}/wstools/java"
destDir="${tests.output.dir}/classes"
package="org.jboss.test.ws.interop.soapwsdl.baserpclit"
verbose="true"/>
-
+
<!-- benchmark -->
<callWsimport
wsdlLocation="${tests.resources.dir}/benchmark/jaxws/doclit/WEB-INF/wsdl/BenchmarkWebService.wsdl"
sourceDir="${tests.output.dir}/wstools/java"
destDir="${tests.output.dir}/classes"
package="org.jboss.test.ws.benchmark.jaxws.doclit"
verbose="true"/>
</target>
-
+
<!--
Create artifacts that depend on pre-compiled sources
-->
<target name="java-wsdl" depends="compile"
description="Generate the deployment resources.">
-
+
<!-- create jbpm process archives -->
<mkdir dir="${tests.output.dir}/libs"/>
<zip
destfile="${tests.output.dir}/libs/jaxrpc-samples-wsbpel-hello-process.zip">
@@ -346,7 +346,7 @@
<servicegen
processfile="${tests.output.dir}/libs/jaxrpc-samples-wsbpel-hello-process.zip"
outputdir="${tests.output.dir}/wstools/resources/jaxrpc/samples/wsbpel/hello/WEB-INF/wsdl"
bindingfile="hello-binding-.wsdl"
servicefile="hello-service.wsdl" />
-
+
<!-- generate mapping artifacts -->
<taskdef name="wstools"
classname="org.jboss.ws.tools.ant.wstools">
<classpath refid="core.classpath"/>
@@ -359,8 +359,8 @@
<classpath location="${thirdparty.dir}/concurrent.jar"/>
<classpath location="${tests.output.dir}/classes"/>
<classpath location="${tests.output.dir}"/>
- </taskdef>
-
+ </taskdef>
+
<mkdir dir="${tests.output.dir}/libs"/>
<mkdir dir="${tests.output.dir}/wstools/java"/>
<wstools
dest="${tests.output.dir}/wstools/resources/jaxrpc/samples/docstyle/wrapped/WEB-INF"
config="${tests.resources.dir}/jaxrpc/samples/docstyle/wrapped/wstools-config.xml"/>
@@ -384,7 +384,7 @@
<fileset
dir="${tests.output.dir}/wstools/resources/jaxrpc/samples/docstyle/wrapped/WEB-INF"
includes="org/**"/>
</move>
</target>
-
+
<target name="copy-generated" depends="init"
description="Copy the deployment resources.">
<!-- Copy generated resources -->
<copy todir="${tests.output.dir}/resources">
@@ -401,11 +401,11 @@
</filterset>
</copy>
</target>
-
+
<!-- ================================================================== -->
<!-- Testing -->
<!-- ================================================================== -->
-
+
<!-- Run all unit tests and generate a report -->
<target name="tests" depends="main" description="Run all
unit tests and generate a report">
<antcall target="tests-main">
@@ -413,7 +413,7 @@
</antcall>
<antcall target="tests-report"/>
</target>
-
+
<!-- Run samples test cases -->
<target name="tests-samples" depends="init"
description="Run samples unit tests">
<antcall target="tests-main">
@@ -421,7 +421,7 @@
</antcall>
<antcall target="tests-report"/>
</target>
-
+
<!-- Run tools test cases -->
<target name="tests-tools" depends="init" description="Run
tools unit tests">
<antcall target="tests-main">
@@ -429,7 +429,7 @@
</antcall>
<antcall target="tests-report"/>
</target>
-
+
<!--
Run a collection of unit tests.
ant -Dtest=tools test
@@ -439,7 +439,7 @@
<param name="include.wildcard"
value="org/jboss/test/ws/${test}/**/*TestCase.class"/>
</antcall>
</target>
-
+
<!-- Common test target -->
<target name="tests-main" depends="init">
<mkdir dir="${tests.output.dir}/reports"/>
@@ -475,7 +475,7 @@
</batchtest>
</junit>
</target>
-
+
<!--
Run a single unit test.
ant -Dtest=org.jboss.test.ws.jaxrpc.samples.jsr109pojo.RpcJSETestCase one-test
@@ -524,11 +524,11 @@
<test todir="${tests.output.dir}/reports" name="${test}"
fork="true"/>
</junit>
</target>
-
+
<!-- ================================================================== -->
<!-- Reporting -->
<!-- ================================================================== -->
-
+
<!-- Build the tests report -->
<target name="tests-report" depends="init"
description="Build the tests report">
<junitreport todir="${tests.output.dir}/reports">
@@ -541,13 +541,13 @@
<fileset dir="${tests.output.dir}"
includes="reports/**"/>
</zip>
</target>
-
+
<!-- ================================================================== -->
<!-- Cleaning -->
<!-- ================================================================== -->
-
+
<target name="clean" description="Delete all generated test
files.">
<delete dir="${tests.output.dir}"/>
</target>
-
+
</project>
\ No newline at end of file
Modified:
trunk/jbossws-tests/src/main/java/org/jboss/test/ws/benchmark/jaxrpc/BenchmarkDocJSETestCase.java
===================================================================
---
trunk/jbossws-tests/src/main/java/org/jboss/test/ws/benchmark/jaxrpc/BenchmarkDocJSETestCase.java 2007-02-02
13:52:01 UTC (rev 2252)
+++
trunk/jbossws-tests/src/main/java/org/jboss/test/ws/benchmark/jaxrpc/BenchmarkDocJSETestCase.java 2007-02-02
14:21:44 UTC (rev 2253)
@@ -29,6 +29,7 @@
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.xml.rpc.Service;
+import javax.xml.rpc.Stub;
import java.util.Properties;
/**
@@ -54,7 +55,8 @@
{
InitialContext iniCtx = getInitialContext("benchmark-client");
Service service =
(Service)iniCtx.lookup("java:comp/env/service/BenchmarkJSE");
- endpoint = (BenchmarkService)service.getPort(BenchmarkService.class);
+ endpoint = (BenchmarkService)service.getPort(BenchmarkService.class);
+
}
}
Modified:
trunk/jbossws-tests/src/main/java/org/jboss/test/ws/benchmark/jaxws/BenchmarkDocJSETestCase.java
===================================================================
---
trunk/jbossws-tests/src/main/java/org/jboss/test/ws/benchmark/jaxws/BenchmarkDocJSETestCase.java 2007-02-02
13:52:01 UTC (rev 2252)
+++
trunk/jbossws-tests/src/main/java/org/jboss/test/ws/benchmark/jaxws/BenchmarkDocJSETestCase.java 2007-02-02
14:21:44 UTC (rev 2253)
@@ -62,7 +62,7 @@
endpoint = service.getPort(BenchmarkService.class);
((BindingProvider)endpoint).getRequestContext().put(
BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
- "http://"+getServerHost()+":8080/jaxws-benchmark-doc"
+ "http://"+getServerHost()+":8080/jaxws-benchmark-doc"
);
}
}
Modified:
trunk/jbossws-tests/src/main/java/org/jboss/test/ws/common/utils/DOMWriterTestCase.java
===================================================================
---
trunk/jbossws-tests/src/main/java/org/jboss/test/ws/common/utils/DOMWriterTestCase.java 2007-02-02
13:52:01 UTC (rev 2252)
+++
trunk/jbossws-tests/src/main/java/org/jboss/test/ws/common/utils/DOMWriterTestCase.java 2007-02-02
14:21:44 UTC (rev 2253)
@@ -189,7 +189,7 @@
Element domEl = DOMUtils.parse(expStr);
- String wasStr = DOMWriter.printNode(domEl, false);
+ String wasStr = DOMWriter.printNode(domEl, false, true);
assertEquals(expStr, wasStr);
}
Modified:
trunk/jbossws-tests/src/main/java/org/jboss/test/ws/jaxrpc/marshall/MarshallDocLitTestCase.java
===================================================================
---
trunk/jbossws-tests/src/main/java/org/jboss/test/ws/jaxrpc/marshall/MarshallDocLitTestCase.java 2007-02-02
13:52:01 UTC (rev 2252)
+++
trunk/jbossws-tests/src/main/java/org/jboss/test/ws/jaxrpc/marshall/MarshallDocLitTestCase.java 2007-02-02
14:21:44 UTC (rev 2253)
@@ -28,6 +28,7 @@
import javax.naming.InitialContext;
import javax.xml.namespace.QName;
import javax.xml.rpc.Service;
+import javax.xml.rpc.Stub;
import junit.framework.Test;
@@ -59,7 +60,7 @@
{
InitialContext iniCtx = getInitialContext();
Service service =
(Service)iniCtx.lookup("java:comp/env/service/StandardTypes");
- port = (StandardTypes)service.getPort(StandardTypes.class);
+ port = (StandardTypes)service.getPort(StandardTypes.class);
}
}
Modified: trunk/jbossws-tests/src/main/resources/benchmark/jmeter/JBossWS_Benchmark.jmx
===================================================================
---
trunk/jbossws-tests/src/main/resources/benchmark/jmeter/JBossWS_Benchmark.jmx 2007-02-02
13:52:01 UTC (rev 2252)
+++
trunk/jbossws-tests/src/main/resources/benchmark/jmeter/JBossWS_Benchmark.jmx 2007-02-02
14:21:44 UTC (rev 2253)
@@ -6,7 +6,7 @@
</elementProp>
<stringProp
name="TestPlan.user_define_classpath"></stringProp>
<boolProp
name="TestPlan.serialize_threadgroups">false</boolProp>
- <boolProp name="TestPlan.functional_mode">true</boolProp>
+ <boolProp name="TestPlan.functional_mode">false</boolProp>
<stringProp name="TestPlan.comments"></stringProp>
</TestPlan>
<hashTree>
@@ -14,7 +14,7 @@
<longProp
name="ThreadGroup.start_time">1144146988000</longProp>
<stringProp name="ThreadGroup.delay"></stringProp>
<stringProp name="ThreadGroup.duration"></stringProp>
- <stringProp name="ThreadGroup.num_threads">8</stringProp>
+ <stringProp name="ThreadGroup.num_threads">10</stringProp>
<boolProp name="ThreadGroup.scheduler">false</boolProp>
<elementProp name="ThreadGroup.main_controller"
elementType="LoopController" guiclass="LoopControlPanel"
testclass="LoopController" testname="Loop Controller"
enabled="true">
<intProp name="LoopController.loops">-1</intProp>
@@ -71,8 +71,8 @@
</SoapSampler>
<hashTree/>
<GaussianRandomTimer guiclass="GaussianRandomTimerGui"
testclass="GaussianRandomTimer" testname="Gaussian Random Timer"
enabled="true">
- <stringProp name="ConstantTimer.delay">500</stringProp>
- <stringProp name="RandomTimer.range">100</stringProp>
+ <stringProp name="ConstantTimer.delay">100</stringProp>
+ <stringProp name="RandomTimer.range">50</stringProp>
</GaussianRandomTimer>
<hashTree/>
<ResponseAssertion guiclass="AssertionGui"
testclass="ResponseAssertion" testname="Response Code Assertion"
enabled="true">
@@ -129,7 +129,7 @@
<longProp
name="ThreadGroup.start_time">1144146988000</longProp>
<stringProp name="ThreadGroup.delay"></stringProp>
<stringProp name="ThreadGroup.duration"></stringProp>
- <stringProp name="ThreadGroup.num_threads">8</stringProp>
+ <stringProp name="ThreadGroup.num_threads">10</stringProp>
<boolProp name="ThreadGroup.scheduler">false</boolProp>
<elementProp name="ThreadGroup.main_controller"
elementType="LoopController" guiclass="LoopControlPanel"
testclass="LoopController" testname="Loop Controller"
enabled="true">
<intProp name="LoopController.loops">-1</intProp>
@@ -185,8 +185,8 @@
</SoapSampler>
<hashTree/>
<GaussianRandomTimer guiclass="GaussianRandomTimerGui"
testclass="GaussianRandomTimer" testname="Gaussian Random Timer"
enabled="true">
- <stringProp name="ConstantTimer.delay">1000</stringProp>
- <stringProp name="RandomTimer.range">200</stringProp>
+ <stringProp name="ConstantTimer.delay">100</stringProp>
+ <stringProp name="RandomTimer.range">50</stringProp>
</GaussianRandomTimer>
<hashTree/>
<ResponseAssertion guiclass="AssertionGui"
testclass="ResponseAssertion" testname="Response Code Assertion"
enabled="true">
@@ -243,7 +243,7 @@
<longProp
name="ThreadGroup.start_time">1144146988000</longProp>
<stringProp name="ThreadGroup.delay"></stringProp>
<stringProp name="ThreadGroup.duration"></stringProp>
- <stringProp name="ThreadGroup.num_threads">8</stringProp>
+ <stringProp name="ThreadGroup.num_threads">10</stringProp>
<boolProp name="ThreadGroup.scheduler">false</boolProp>
<elementProp name="ThreadGroup.main_controller"
elementType="LoopController" guiclass="LoopControlPanel"
testclass="LoopController" testname="Loop Controller"
enabled="true">
<intProp name="LoopController.loops">-1</intProp>
@@ -299,8 +299,8 @@
</SoapSampler>
<hashTree/>
<GaussianRandomTimer guiclass="GaussianRandomTimerGui"
testclass="GaussianRandomTimer" testname="Gaussian Random Timer"
enabled="true">
- <stringProp name="ConstantTimer.delay">500</stringProp>
- <stringProp name="RandomTimer.range">100</stringProp>
+ <stringProp name="ConstantTimer.delay">100</stringProp>
+ <stringProp name="RandomTimer.range">50</stringProp>
</GaussianRandomTimer>
<hashTree/>
<ResponseAssertion guiclass="AssertionGui"
testclass="ResponseAssertion" testname="Response Code Assertion"
enabled="true">
@@ -357,7 +357,7 @@
<longProp
name="ThreadGroup.start_time">1144146988000</longProp>
<stringProp name="ThreadGroup.delay"></stringProp>
<stringProp name="ThreadGroup.duration"></stringProp>
- <stringProp name="ThreadGroup.num_threads">8</stringProp>
+ <stringProp name="ThreadGroup.num_threads">10</stringProp>
<boolProp name="ThreadGroup.scheduler">false</boolProp>
<elementProp name="ThreadGroup.main_controller"
elementType="LoopController" guiclass="LoopControlPanel"
testclass="LoopController" testname="Loop Controller"
enabled="true">
<intProp name="LoopController.loops">-1</intProp>
@@ -419,8 +419,8 @@
</SoapSampler>
<hashTree/>
<GaussianRandomTimer guiclass="GaussianRandomTimerGui"
testclass="GaussianRandomTimer" testname="Gaussian Random Timer"
enabled="true">
- <stringProp name="ConstantTimer.delay">500</stringProp>
- <stringProp name="RandomTimer.range">100</stringProp>
+ <stringProp name="ConstantTimer.delay">100</stringProp>
+ <stringProp name="RandomTimer.range">50</stringProp>
</GaussianRandomTimer>
<hashTree/>
<ResponseAssertion guiclass="AssertionGui"
testclass="ResponseAssertion" testname="Response Code Assertion"
enabled="true">
@@ -477,7 +477,7 @@
<longProp
name="ThreadGroup.start_time">1144146988000</longProp>
<stringProp name="ThreadGroup.delay"></stringProp>
<stringProp name="ThreadGroup.duration"></stringProp>
- <stringProp name="ThreadGroup.num_threads">8</stringProp>
+ <stringProp name="ThreadGroup.num_threads">10</stringProp>
<boolProp name="ThreadGroup.scheduler">false</boolProp>
<elementProp name="ThreadGroup.main_controller"
elementType="LoopController" guiclass="LoopControlPanel"
testclass="LoopController" testname="Loop Controller"
enabled="true">
<intProp name="LoopController.loops">-1</intProp>
@@ -534,8 +534,8 @@
</SoapSampler>
<hashTree/>
<GaussianRandomTimer guiclass="GaussianRandomTimerGui"
testclass="GaussianRandomTimer" testname="Gaussian Random Timer"
enabled="true">
- <stringProp name="ConstantTimer.delay">500</stringProp>
- <stringProp name="RandomTimer.range">100</stringProp>
+ <stringProp name="ConstantTimer.delay">100</stringProp>
+ <stringProp name="RandomTimer.range">50</stringProp>
</GaussianRandomTimer>
<hashTree/>
<ResponseAssertion guiclass="AssertionGui"
testclass="ResponseAssertion" testname="Response Code Assertion"
enabled="true">
@@ -592,7 +592,7 @@
<longProp
name="ThreadGroup.start_time">1144146988000</longProp>
<stringProp name="ThreadGroup.delay"></stringProp>
<stringProp name="ThreadGroup.duration"></stringProp>
- <stringProp name="ThreadGroup.num_threads">8</stringProp>
+ <stringProp name="ThreadGroup.num_threads">10</stringProp>
<boolProp name="ThreadGroup.scheduler">false</boolProp>
<elementProp name="ThreadGroup.main_controller"
elementType="LoopController" guiclass="LoopControlPanel"
testclass="LoopController" testname="Loop Controller"
enabled="true">
<intProp name="LoopController.loops">-1</intProp>
@@ -648,8 +648,8 @@
</SoapSampler>
<hashTree/>
<GaussianRandomTimer guiclass="GaussianRandomTimerGui"
testclass="GaussianRandomTimer" testname="Gaussian Random Timer"
enabled="true">
- <stringProp name="ConstantTimer.delay">1000</stringProp>
- <stringProp name="RandomTimer.range">200</stringProp>
+ <stringProp name="ConstantTimer.delay">100</stringProp>
+ <stringProp name="RandomTimer.range">50</stringProp>
</GaussianRandomTimer>
<hashTree/>
<ResponseAssertion guiclass="AssertionGui"
testclass="ResponseAssertion" testname="Response Code Assertion"
enabled="true">
@@ -684,7 +684,7 @@
<longProp
name="ThreadGroup.start_time">1144146988000</longProp>
<stringProp name="ThreadGroup.delay"></stringProp>
<stringProp name="ThreadGroup.duration"></stringProp>
- <stringProp name="ThreadGroup.num_threads">8</stringProp>
+ <stringProp name="ThreadGroup.num_threads">10</stringProp>
<boolProp name="ThreadGroup.scheduler">false</boolProp>
<elementProp name="ThreadGroup.main_controller"
elementType="LoopController" guiclass="LoopControlPanel"
testclass="LoopController" testname="Loop Controller"
enabled="true">
<intProp name="LoopController.loops">-1</intProp>
@@ -740,8 +740,8 @@
</SoapSampler>
<hashTree/>
<GaussianRandomTimer guiclass="GaussianRandomTimerGui"
testclass="GaussianRandomTimer" testname="Gaussian Random Timer"
enabled="true">
- <stringProp name="ConstantTimer.delay">500</stringProp>
- <stringProp name="RandomTimer.range">100</stringProp>
+ <stringProp name="ConstantTimer.delay">100</stringProp>
+ <stringProp name="RandomTimer.range">50</stringProp>
</GaussianRandomTimer>
<hashTree/>
<ResponseAssertion guiclass="AssertionGui"
testclass="ResponseAssertion" testname="Response Code Assertion"
enabled="true">
@@ -798,7 +798,7 @@
<longProp
name="ThreadGroup.start_time">1144146988000</longProp>
<stringProp name="ThreadGroup.delay"></stringProp>
<stringProp name="ThreadGroup.duration"></stringProp>
- <stringProp name="ThreadGroup.num_threads">8</stringProp>
+ <stringProp name="ThreadGroup.num_threads">10</stringProp>
<boolProp name="ThreadGroup.scheduler">false</boolProp>
<elementProp name="ThreadGroup.main_controller"
elementType="LoopController" guiclass="LoopControlPanel"
testclass="LoopController" testname="Loop Controller"
enabled="true">
<intProp name="LoopController.loops">-1</intProp>
@@ -860,8 +860,8 @@
</SoapSampler>
<hashTree/>
<GaussianRandomTimer guiclass="GaussianRandomTimerGui"
testclass="GaussianRandomTimer" testname="Gaussian Random Timer"
enabled="true">
- <stringProp name="ConstantTimer.delay">500</stringProp>
- <stringProp name="RandomTimer.range">100</stringProp>
+ <stringProp name="ConstantTimer.delay">100</stringProp>
+ <stringProp name="RandomTimer.range">50</stringProp>
</GaussianRandomTimer>
<hashTree/>
<ResponseAssertion guiclass="AssertionGui"
testclass="ResponseAssertion" testname="Response Code Assertion"
enabled="true">