Author: owulff
Date: Sat Jan 12 20:31:07 2013
New Revision: 1432506

URL: http://svn.apache.org/viewvc?rev=1432506&view=rev
Log:
[FEDIZ-43] No dependency on TCP port of IDP container in fedizidp.war

Modified:
    
cxf/fediz/branches/1.0.x-fixes/services/idp/src/main/java/org/apache/cxf/fediz/service/idp/IdpServlet.java
    
cxf/fediz/branches/1.0.x-fixes/services/idp/src/main/webapp/WEB-INF/applicationContext.xml
    cxf/fediz/branches/1.0.x-fixes/services/idp/src/main/webapp/WEB-INF/web.xml

Modified: 
cxf/fediz/branches/1.0.x-fixes/services/idp/src/main/java/org/apache/cxf/fediz/service/idp/IdpServlet.java
URL: 
http://svn.apache.org/viewvc/cxf/fediz/branches/1.0.x-fixes/services/idp/src/main/java/org/apache/cxf/fediz/service/idp/IdpServlet.java?rev=1432506&r1=1432505&r2=1432506&view=diff
==============================================================================
--- 
cxf/fediz/branches/1.0.x-fixes/services/idp/src/main/java/org/apache/cxf/fediz/service/idp/IdpServlet.java
 (original)
+++ 
cxf/fediz/branches/1.0.x-fixes/services/idp/src/main/java/org/apache/cxf/fediz/service/idp/IdpServlet.java
 Sat Jan 12 20:31:07 2013
@@ -19,6 +19,8 @@
 package org.apache.cxf.fediz.service.idp;
 
 import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
 import java.util.List;
 import java.util.Map;
 import java.util.StringTokenizer;
@@ -94,16 +96,30 @@ public class IdpServlet extends HttpServ
      */
     private static final long serialVersionUID = -9019993850246851112L;
 
+    protected boolean isPortSet;
+    
+    protected String stsWsdlUrl;
+    
     private String tokenType;
 
     private Bus bus;
 
     @Override
     public void init() throws ServletException {
-        if (getInitParameter(S_PARAM_STS_WSDL_URL) == null) {
+        stsWsdlUrl = getInitParameter(S_PARAM_STS_WSDL_URL);
+        if (stsWsdlUrl == null) {
             throw new ServletException(
                 "Parameter '" + S_PARAM_STS_WSDL_URL + "' not configured");
         }
+        try {
+            URL url = new URL(stsWsdlUrl);
+            isPortSet = url.getPort() > 0;
+            if (!isPortSet) {
+                LOG.info("Port is 0 for '" + S_PARAM_STS_WSDL_URL + "'. Port 
evaluated when processing first request.");
+            }
+        } catch (MalformedURLException e) {
+            LOG.error("Invalid Url '" + stsWsdlUrl + "': "  + e.getMessage());
+        }
         if (getInitParameter(S_PARAM_STS_WSDL_SERVICE) == null) {
             throw new ServletException(
                 "Parameter '" + S_PARAM_STS_WSDL_SERVICE + "' not configured");
@@ -139,6 +155,17 @@ public class IdpServlet extends HttpServ
     public void doGet(HttpServletRequest request, HttpServletResponse response)
         throws ServletException, IOException {
 
+        if (!isPortSet) {
+            try {
+                URL url = new URL(stsWsdlUrl);
+                URL updatedUrl = new URL(url.getProtocol(), url.getHost(), 
request.getLocalPort(), url.getFile());
+                setSTSWsdlUrl(updatedUrl.toString());
+                LOG.info("STS WSDL URL updated to " + updatedUrl.toString());
+            } catch (MalformedURLException e) {
+                LOG.error("Invalid Url '" + stsWsdlUrl + "': "  + 
e.getMessage());
+            }
+        }
+
         String action = request.getParameter(PARAM_ACTION);
         String wtrealm = request.getParameter(PARAM_WTREALM);
         String wctx = request.getParameter(PARAM_WCONTEXT);
@@ -307,7 +334,7 @@ public class IdpServlet extends HttpServ
         }
         
sts.setKeyType("http://docs.oasis-open.org/ws-sx/ws-trust/200512/Bearer";);
 
-        sts.setWsdlLocation(getInitParameter(S_PARAM_STS_WSDL_URL) + 
getInitParameter(S_PARAM_STS_UT_URI) + "?wsdl");
+        sts.setWsdlLocation(this.stsWsdlUrl + 
getInitParameter(S_PARAM_STS_UT_URI) + "?wsdl");
         sts.setServiceQName(new QName(
                                       
"http://docs.oasis-open.org/ws-sx/ws-trust/200512/";,
                                       
getInitParameter(S_PARAM_STS_WSDL_SERVICE)));
@@ -357,7 +384,7 @@ public class IdpServlet extends HttpServ
             }
             
sts.setKeyType("http://docs.oasis-open.org/ws-sx/ws-trust/200512/Bearer";);
 
-            sts.setWsdlLocation(getInitParameter(S_PARAM_STS_WSDL_URL) + 
getInitParameter(S_PARAM_STS_RP_URI) + "?wsdl");
+            sts.setWsdlLocation(this.stsWsdlUrl + 
getInitParameter(S_PARAM_STS_RP_URI) + "?wsdl");
             sts.setServiceQName(new QName(
                                           
"http://docs.oasis-open.org/ws-sx/ws-trust/200512/";,
                                           
getInitParameter(S_PARAM_STS_WSDL_SERVICE)));
@@ -412,6 +439,11 @@ public class IdpServlet extends HttpServ
 
         return writer.getDocument().getDocumentElement();
     }
+    
+    private synchronized void setSTSWsdlUrl(String wsdlUrl) {
+        this.stsWsdlUrl = wsdlUrl;
+        this.isPortSet = true;
+    }
 
     public void setBus(Bus bus) {
         this.bus = bus;

Modified: 
cxf/fediz/branches/1.0.x-fixes/services/idp/src/main/webapp/WEB-INF/applicationContext.xml
URL: 
http://svn.apache.org/viewvc/cxf/fediz/branches/1.0.x-fixes/services/idp/src/main/webapp/WEB-INF/applicationContext.xml?rev=1432506&r1=1432505&r2=1432506&view=diff
==============================================================================
--- 
cxf/fediz/branches/1.0.x-fixes/services/idp/src/main/webapp/WEB-INF/applicationContext.xml
 (original)
+++ 
cxf/fediz/branches/1.0.x-fixes/services/idp/src/main/webapp/WEB-INF/applicationContext.xml
 Sat Jan 12 20:31:07 2013
@@ -27,7 +27,7 @@
        </cxf:bus>
 
     
-    <http:conduit name="https://localhost:9443/.*";>
+    <http:conduit name="*.http-conduit">
       <http:tlsClientParameters disableCNCheck="true">
         <sec:trustManagers>
           <sec:keyStore type="jks" password="ispass" resource="idpstore.jks"/>

Modified: 
cxf/fediz/branches/1.0.x-fixes/services/idp/src/main/webapp/WEB-INF/web.xml
URL: 
http://svn.apache.org/viewvc/cxf/fediz/branches/1.0.x-fixes/services/idp/src/main/webapp/WEB-INF/web.xml?rev=1432506&r1=1432505&r2=1432506&view=diff
==============================================================================
--- cxf/fediz/branches/1.0.x-fixes/services/idp/src/main/webapp/WEB-INF/web.xml 
(original)
+++ cxf/fediz/branches/1.0.x-fixes/services/idp/src/main/webapp/WEB-INF/web.xml 
Sat Jan 12 20:31:07 2013
@@ -27,7 +27,7 @@
                
<servlet-class>org.apache.cxf.fediz.service.idp.IdpServlet</servlet-class>
                <init-param>
                        <param-name>sts.wsdl.url</param-name>
-                       
<param-value>https://localhost:9443/fedizidpsts/</param-value>
+                       
<param-value>https://localhost:0/fedizidpsts/</param-value>
                </init-param>
                <init-param>
                        <param-name>sts.wsdl.service</param-name>


Reply via email to