You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by gn...@apache.org on 2006/10/19 14:12:08 UTC
svn commit: r465596 - in
/incubator/servicemix/trunk/servicemix-http/src/main/java/org/apache/servicemix/http:
HttpComponent.java HttpEndpoint.java processors/ConsumerProcessor.java
Author: gnodet
Date: Thu Oct 19 05:12:08 2006
New Revision: 465596
URL: http://svn.apache.org/viewvc?view=rev&rev=465596
Log:
SM-604: Allow servicemix-http managed mode to dynamically determine the server, port, and context path it is running on when generating jsr181 WSDLs
Patch provided by Jeff Puro, thx !
Modified:
incubator/servicemix/trunk/servicemix-http/src/main/java/org/apache/servicemix/http/HttpComponent.java
incubator/servicemix/trunk/servicemix-http/src/main/java/org/apache/servicemix/http/HttpEndpoint.java
incubator/servicemix/trunk/servicemix-http/src/main/java/org/apache/servicemix/http/processors/ConsumerProcessor.java
Modified: incubator/servicemix/trunk/servicemix-http/src/main/java/org/apache/servicemix/http/HttpComponent.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-http/src/main/java/org/apache/servicemix/http/HttpComponent.java?view=diff&rev=465596&r1=465595&r2=465596
==============================================================================
--- incubator/servicemix/trunk/servicemix-http/src/main/java/org/apache/servicemix/http/HttpComponent.java (original)
+++ incubator/servicemix/trunk/servicemix-http/src/main/java/org/apache/servicemix/http/HttpComponent.java Thu Oct 19 05:12:08 2006
@@ -65,6 +65,67 @@
protected HttpConfiguration configuration = new HttpConfiguration();
protected HttpEndpoint[] endpoints;
+ protected String protocol;
+ protected String host;
+ protected int port = 80;
+ protected String path;
+
+ /**
+ * @return the host
+ */
+ public String getHost() {
+ return host;
+ }
+
+ /**
+ * @param host the host to set
+ */
+ public void setHost(String host) {
+ this.host = host;
+ }
+
+ /**
+ * @return the path
+ */
+ public String getPath() {
+ return path;
+ }
+
+ /**
+ * @param path the path to set
+ */
+ public void setPath(String path) {
+ this.path = path;
+ }
+
+ /**
+ * @return the port
+ */
+ public int getPort() {
+ return port;
+ }
+
+ /**
+ * @param port the port to set
+ */
+ public void setPort(int port) {
+ this.port = port;
+ }
+
+ /**
+ * @return the protocol
+ */
+ public String getProtocol() {
+ return protocol;
+ }
+
+ /**
+ * @param protocol the protocol to set
+ */
+ public void setProtocol(String protocol) {
+ this.protocol = protocol;
+ }
+
/**
* @return the endpoints
*/
@@ -94,7 +155,7 @@
public void setClient(HttpClient client) {
this.client = client;
}
-
+
/**
* @return Returns the configuration.
* @org.apache.xbean.Flat
@@ -181,11 +242,11 @@
super.doStop();
server.stop();
}
-
+
protected QName getEPRServiceName() {
return EPR_SERVICE;
}
-
+
protected Endpoint getResolvedEPR(ServiceEndpoint ep) throws Exception {
// We receive an exchange for an EPR that has not been used yet.
// Register a provider endpoint and restart processing.
Modified: incubator/servicemix/trunk/servicemix-http/src/main/java/org/apache/servicemix/http/HttpEndpoint.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-http/src/main/java/org/apache/servicemix/http/HttpEndpoint.java?view=diff&rev=465596&r1=465595&r2=465596
==============================================================================
--- incubator/servicemix/trunk/servicemix-http/src/main/java/org/apache/servicemix/http/HttpEndpoint.java (original)
+++ incubator/servicemix/trunk/servicemix-http/src/main/java/org/apache/servicemix/http/HttpEndpoint.java Thu Oct 19 05:12:08 2006
@@ -58,7 +58,7 @@
protected String authMethod;
protected String soapAction;
protected BasicAuthCredentials basicAuthentication;
-
+
/**
* @return the soapAction
*/
@@ -117,22 +117,22 @@
this.locationURI = locationUri;
}
- /**
+ /**
* Authentication parameters used for provider endpoints using BASIC
* authentication.
*
- * @return Returns the basicAuthentication.
- */
- public BasicAuthCredentials getBasicAuthentication() {
- return basicAuthentication;
- }
-
- /**
- * @param basicAuthentication The basicAuthentication to set.
- */
- public void setBasicAuthentication(BasicAuthCredentials basicAuthCredentials) {
- this.basicAuthentication = basicAuthCredentials;
- }
+ * @return Returns the basicAuthentication.
+ */
+ public BasicAuthCredentials getBasicAuthentication() {
+ return basicAuthentication;
+ }
+
+ /**
+ * @param basicAuthentication The basicAuthentication to set.
+ */
+ public void setBasicAuthentication(BasicAuthCredentials basicAuthCredentials) {
+ this.basicAuthentication = basicAuthCredentials;
+ }
/**
* @org.apache.xbean.Property alias="role"
@@ -142,6 +142,12 @@
super.setRoleAsString(role);
}
+ public void reloadWsdl() {
+ description = null;
+ definition = null;
+ loadWsdl();
+ }
+
protected PortType getTargetPortType(Definition def) {
PortType portType = null;
// If the WSDL description only contain one PortType, use it
@@ -186,7 +192,7 @@
}
return portType;
}
-
+
protected void overrideDefinition(Definition def) throws Exception {
PortType portType = getTargetPortType(def);
if (portType != null) {
@@ -210,8 +216,24 @@
}
HttpComponent comp = (HttpComponent) getServiceUnit().getComponent();
if (comp.getConfiguration().isManaged()) {
- // TODO: need to find the port of the web server
- location = "http://localhost" + comp.getConfiguration().getMapping() + new URI(location).getPath();
+ // Save the path
+ String path = new URI(location).getPath();
+ location = "http://localhost";
+ if (comp.getHost() != null) {
+ if (comp.getProtocol() != null) {
+ location = comp.getProtocol() + "://";
+ } else {
+ location = "http://";
+ }
+ location += comp.getHost();
+ if (comp.getPort() != 80) {
+ location += ":" + comp.getPort();
+ }
+ if (comp.getPath() != null) {
+ location += comp.getPath();
+ }
+ }
+ location += comp.getConfiguration().getMapping() + path;
}
if (portType.getQName().getNamespaceURI().equals(service.getNamespaceURI())) {
if (isSoap()) {
@@ -254,7 +276,7 @@
}
}
}
-
+
protected ExchangeProcessor createProviderProcessor() {
return new ProviderProcessor(this);
}
Modified: incubator/servicemix/trunk/servicemix-http/src/main/java/org/apache/servicemix/http/processors/ConsumerProcessor.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-http/src/main/java/org/apache/servicemix/http/processors/ConsumerProcessor.java?view=diff&rev=465596&r1=465595&r2=465596
==============================================================================
--- incubator/servicemix/trunk/servicemix-http/src/main/java/org/apache/servicemix/http/processors/ConsumerProcessor.java (original)
+++ incubator/servicemix/trunk/servicemix-http/src/main/java/org/apache/servicemix/http/processors/ConsumerProcessor.java Thu Oct 19 05:12:08 2006
@@ -136,6 +136,17 @@
if (path.lastIndexOf('/') >= 0) {
path = path.substring(path.lastIndexOf('/') + 1);
}
+
+ // Set protocol, host, and port in the component
+ HttpComponent comp = (HttpComponent) endpoint.getServiceUnit().getComponent();
+ comp.setProtocol(request.getScheme());
+ comp.setHost(request.getServerName());
+ comp.setPort(request.getServerPort());
+ comp.setPath(request.getContextPath());
+
+ // Reload the wsdl
+ endpoint.reloadWsdl();
+
Node node = (Node) endpoint.getWsdls().get(path);
generateDocument(response, node);
return;