Author: keith
Date: Thu Feb 12 00:30:35 2009
New Revision: 30700
URL: http://wso2.org/svn/browse/wso2?view=rev&revision=30700

Log:
Applying the following fix to the branch

Author: keith Date: Mon Sep 1 23:27:05 2008 New Revision: 21318 URL: 
http://wso2.org/svn/browse/wso2?view=rev&revision=21318

Log: Fixing Mashup-1101. Introduced a ProxyConfiguration class that extends the 
one
in axis2 in order to configure the proxy details. The one in axis2 relied on the
message Context to configure it which is not available in the Mashup Server on 
some instances. Hence put in a new
method so that we can configure it using the configuration context.

Updating the places where ProxyCopnfiguration was used to use this newly added
class. 



Added:
   
branches/mashup/java/1.5/java/modules/core/src/org/wso2/mashup/transport/http/MashupProxyConfiguration.java
Modified:
   
branches/mashup/java/1.5/java/modules/core/src/org/wso2/mashup/utils/MashupUtils.java
   
branches/mashup/java/1.5/java/modules/coreservices/JSStubGeneratorService/src/org/wso2/mashup/JSStubGenerator.java
   
branches/mashup/java/1.5/java/modules/coreservices/scraperservice/src/org/wso2/mashup/coreservices/scraperservice/ScraperService.java
   
branches/mashup/java/1.5/java/modules/hostobjects/src/org/wso2/mashup/hostobjects/system/SystemHostObject.java

Added: 
branches/mashup/java/1.5/java/modules/core/src/org/wso2/mashup/transport/http/MashupProxyConfiguration.java
URL: 
http://wso2.org/svn/browse/wso2/branches/mashup/java/1.5/java/modules/core/src/org/wso2/mashup/transport/http/MashupProxyConfiguration.java?pathrev=30700
==============================================================================
--- (empty file)
+++ 
branches/mashup/java/1.5/java/modules/core/src/org/wso2/mashup/transport/http/MashupProxyConfiguration.java
 Thu Feb 12 00:30:35 2009
@@ -0,0 +1,121 @@
+package org.wso2.mashup.transport.http;
+
+import org.apache.axis2.transport.http.ProxyConfiguration;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.description.Parameter;
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.HostConfiguration;
+import org.apache.commons.httpclient.Credentials;
+import org.apache.commons.httpclient.UsernamePasswordCredentials;
+import org.apache.commons.httpclient.NTCredentials;
+import org.apache.commons.httpclient.auth.AuthScope;
+import org.apache.axiom.om.OMElement;
+
+import javax.xml.namespace.QName;
+
+public class MashupProxyConfiguration extends ProxyConfiguration {
+
+    public void configure(AxisConfiguration axisConfiguration, HttpClient 
httpClient,
+                          HostConfiguration config) throws AxisFault {
+        //        <parameter name="Proxy">
+        //              <Configuration>
+        //                     <ProxyHost>example.org</ProxyHost>
+        //                     <ProxyPort>5678</ProxyPort>
+        //                     <ProxyUser>EXAMPLE\saminda</ProxyUser>
+        //                     <ProxyPassword>ppp</ProxyPassword>
+        //              </Configuration>
+        //        </parameter>
+        Credentials proxyCred = null;
+
+        //Getting configuration values from Axis2.xml
+        Parameter param = axisConfiguration.getParameter(ATTR_PROXY);
+
+        if (param != null) {
+            OMElement configurationEle = 
param.getParameterElement().getFirstElement();
+            if (configurationEle == null) {
+                throw new AxisFault(
+                        ProxyConfiguration.class.getName() + " Configuration 
element is missing");
+            }
+
+            OMElement proxyHostEle =
+                    configurationEle.getFirstChildWithName(new 
QName(PROXY_HOST_ELEMENT));
+            OMElement proxyPortEle =
+                    configurationEle.getFirstChildWithName(new 
QName(PROXY_PORT_ELEMENT));
+            OMElement proxyUserEle =
+                    configurationEle.getFirstChildWithName(new 
QName(PROXY_USER_ELEMENT));
+            OMElement proxyPasswordEle =
+                    configurationEle.getFirstChildWithName(new 
QName(PROXY_PASSWORD_ELEMENT));
+
+            if (proxyHostEle == null) {
+                throw new AxisFault(
+                        ProxyConfiguration.class.getName() + " ProxyHost 
element is missing");
+            }
+            String text = proxyHostEle.getText();
+            if (text == null) {
+                throw new AxisFault(
+                        ProxyConfiguration.class.getName() + " ProxyHost's 
value is missing");
+            }
+
+            this.setProxyHost(text);
+
+            if (proxyPortEle != null) {
+                this.setProxyPort(Integer.parseInt(proxyPortEle.getText()));
+            }
+
+            if (proxyUserEle != null) {
+                this.setProxyUser(proxyUserEle.getText());
+            }
+
+            if (proxyPasswordEle != null) {
+                this.setProxyPassword(proxyPasswordEle.getText());
+            }
+
+            if (this.getProxyUser() == null && this.getProxyUser() == null) {
+                proxyCred = new UsernamePasswordCredentials("", "");
+            } else {
+                proxyCred =
+                        new UsernamePasswordCredentials(this.getProxyUser(),
+                                                        
this.getProxyPassword());
+            }
+
+            // if the username is in the form "DOMAIN\\user"
+            // then use NTCredentials instead.
+            if (this.getProxyUser() != null) {
+                int domainIndex = this.getProxyUser().indexOf("\\");
+                if (domainIndex > 0) {
+                    String domain = this.getProxyUser().substring(0, 
domainIndex);
+                    if (this.getProxyUser().length() > domainIndex + 1) {
+                        String user = 
this.getProxyUser().substring(domainIndex + 1);
+                        proxyCred = new NTCredentials(user,
+                                                      this.getProxyPassword(),
+                                                      this.getProxyHost(),
+                                                      domain);
+                    }
+                }
+            }
+        }
+
+        //Using Java Networking Properties
+
+        String host = System.getProperty(HTTP_PROXY_HOST);
+        if (host != null) {
+            this.setProxyHost(host);
+            proxyCred = new UsernamePasswordCredentials("","");
+        }
+
+        String port = System.getProperty(HTTP_PROXY_PORT);
+
+        if (port != null) {
+            this.setProxyPort(Integer.parseInt(port));
+        }
+
+        if (proxyCred == null) {
+            throw new AxisFault(ProxyConfiguration.class.getName() +
+                                    " Minimum proxy credentials are not set");
+        }
+        httpClient.getParams().setAuthenticationPreemptive(true);
+        httpClient.getState().setProxyCredentials(AuthScope.ANY, proxyCred);
+        config.setProxy(this.getProxyHost(), this.getProxyPort());
+    }
+}
\ No newline at end of file

Modified: 
branches/mashup/java/1.5/java/modules/core/src/org/wso2/mashup/utils/MashupUtils.java
URL: 
http://wso2.org/svn/browse/wso2/branches/mashup/java/1.5/java/modules/core/src/org/wso2/mashup/utils/MashupUtils.java?rev=30700&r1=30699&r2=30700&view=diff
==============================================================================
--- 
branches/mashup/java/1.5/java/modules/core/src/org/wso2/mashup/utils/MashupUtils.java
       (original)
+++ 
branches/mashup/java/1.5/java/modules/core/src/org/wso2/mashup/utils/MashupUtils.java
       Thu Feb 12 00:30:35 2009
@@ -18,7 +18,6 @@
 import org.owasp.validator.html.*;
 
 import org.apache.axiom.om.OMElement;
-import org.apache.axiom.om.OMNode;
 import org.apache.axiom.om.impl.builder.StAXOMBuilder;
 import org.apache.axiom.om.util.UUIDGenerator;
 import org.apache.axis2.AxisFault;
@@ -38,7 +37,6 @@
 import org.apache.axis2.engine.AxisConfiguration;
 import org.apache.axis2.rpc.client.RPCServiceClient;
 import org.apache.axis2.transport.http.HTTPConstants;
-import org.apache.axis2.transport.http.ProxyConfiguration;
 import org.apache.axis2.transport.http.util.URIEncoderDecoder;
 import org.apache.axis2.util.XMLChar;
 import org.apache.axis2.util.JavaUtils;
@@ -60,6 +58,7 @@
 import org.wso2.javascript.rhino.JavaScriptEngineConstants;
 import org.wso2.mashup.MashupConstants;
 import org.wso2.mashup.MashupFault;
+import org.wso2.mashup.transport.http.MashupProxyConfiguration;
 import org.wso2.mashup.webapp.utils.RegistryUtils;
 import org.wso2.registry.RegistryConstants;
 import org.wso2.registry.exceptions.RegistryException;
@@ -1381,12 +1380,13 @@
         ConfigurationContext configurationContext =
                 MashupUtils.getClientConfigurationContext();
         if (configurationContext != null) {
-            Parameter parameter = 
configurationContext.getAxisConfiguration().getParameter(MashupConstants.PROXY);
+            AxisConfiguration axisConfiguration = 
configurationContext.getAxisConfiguration();
+            Parameter parameter = 
axisConfiguration.getParameter(MashupConstants.PROXY);
             // The axis2.xml could have details of a proxy, If its present we 
should set those details
             // on the scraper too
             if (parameter != null) {
-                ProxyConfiguration proxyConfiguration = new 
ProxyConfiguration();
-                
proxyConfiguration.configure(MessageContext.getCurrentMessageContext(), 
httpClient, config);
+                MashupProxyConfiguration proxyConfiguration = new 
MashupProxyConfiguration();
+                proxyConfiguration.configure(axisConfiguration, httpClient, 
config);
             }
         }
         return httpClient.executeMethod(config, method);

Modified: 
branches/mashup/java/1.5/java/modules/coreservices/JSStubGeneratorService/src/org/wso2/mashup/JSStubGenerator.java
URL: 
http://wso2.org/svn/browse/wso2/branches/mashup/java/1.5/java/modules/coreservices/JSStubGeneratorService/src/org/wso2/mashup/JSStubGenerator.java?rev=30700&r1=30699&r2=30700&view=diff
==============================================================================
--- 
branches/mashup/java/1.5/java/modules/coreservices/JSStubGeneratorService/src/org/wso2/mashup/JSStubGenerator.java
  (original)
+++ 
branches/mashup/java/1.5/java/modules/coreservices/JSStubGeneratorService/src/org/wso2/mashup/JSStubGenerator.java
  Thu Feb 12 00:30:35 2009
@@ -18,6 +18,7 @@
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMNamespace;
 import org.apache.axis2.AxisFault;
+import org.apache.axis2.engine.AxisConfiguration;
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.description.AxisEndpoint;
@@ -28,7 +29,6 @@
 import org.apache.axis2.description.WSDL11ToAxisServiceBuilder;
 import org.apache.axis2.description.WSDL2Constants;
 import org.apache.axis2.namespace.Constants;
-import org.apache.axis2.transport.http.ProxyConfiguration;
 import org.apache.axis2.util.XMLUtils;
 import org.apache.axis2.util.XSLTTemplateProcessor;
 import org.apache.commons.httpclient.HttpClient;
@@ -41,6 +41,7 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.wso2.mashup.utils.MashupUtils;
+import org.wso2.mashup.transport.http.MashupProxyConfiguration;
 
 import javax.activation.DataHandler;
 import javax.xml.stream.XMLStreamException;
@@ -107,14 +108,13 @@
 
             ConfigurationContext configurationContext = 
MashupUtils.getClientConfigurationContext();
             if (configurationContext != null) {
-                Parameter parameter =
-                        
configurationContext.getAxisConfiguration().getParameter("Proxy");
+                AxisConfiguration axisConfiguration = 
configurationContext.getAxisConfiguration();
+                Parameter parameter = axisConfiguration.getParameter("Proxy");
                 // The axis2.xml could have details of a proxy, If its present 
we should set those details
                 // on the scraper too
                 if (parameter != null) {
-                    ProxyConfiguration proxyConfiguration = new 
ProxyConfiguration();
-                    
proxyConfiguration.configure(MessageContext.getCurrentMessageContext(),
-                                                 httpClient, 
httpClient.getHostConfiguration());
+                    MashupProxyConfiguration proxyConfiguration = new 
MashupProxyConfiguration(); 
+                    proxyConfiguration.configure(axisConfiguration, 
httpClient, httpClient.getHostConfiguration());
                 }
             }
             int statusCode = httpClient.executeMethod(method);

Modified: 
branches/mashup/java/1.5/java/modules/coreservices/scraperservice/src/org/wso2/mashup/coreservices/scraperservice/ScraperService.java
URL: 
http://wso2.org/svn/browse/wso2/branches/mashup/java/1.5/java/modules/coreservices/scraperservice/src/org/wso2/mashup/coreservices/scraperservice/ScraperService.java?rev=30700&r1=30699&r2=30700&view=diff
==============================================================================
--- 
branches/mashup/java/1.5/java/modules/coreservices/scraperservice/src/org/wso2/mashup/coreservices/scraperservice/ScraperService.java
       (original)
+++ 
branches/mashup/java/1.5/java/modules/coreservices/scraperservice/src/org/wso2/mashup/coreservices/scraperservice/ScraperService.java
       Thu Feb 12 00:30:35 2009
@@ -21,7 +21,6 @@
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.description.Parameter;
 import org.apache.axis2.engine.AxisConfiguration;
-import org.apache.axis2.transport.http.ProxyConfiguration;
 import org.apache.commons.httpclient.HttpClient;
 import org.webharvest.definition.ScraperConfiguration;
 import org.webharvest.exception.FileException;
@@ -30,6 +29,7 @@
 import org.webharvest.runtime.variables.Variable;
 import org.wso2.mashup.MashupFault;
 import org.wso2.mashup.MashupConstants;
+import org.wso2.mashup.transport.http.MashupProxyConfiguration;
 import org.wso2.mashup.utils.MashupUtils;
 import org.xml.sax.InputSource;
 
@@ -69,9 +69,9 @@
                 // The axis2.xml could have details of a proxy, If its present 
we should set those details
                 // on the scraper too
                 if (parameter != null) {
-                    ProxyConfiguration proxyConfiguration = new 
ProxyConfiguration();
+                    MashupProxyConfiguration proxyConfiguration = new 
MashupProxyConfiguration(); 
                     HttpClient httpClient = 
scraper.getHttpClientManager().getHttpClient();
-                    proxyConfiguration.configure(context, httpClient, 
httpClient.getHostConfiguration());
+                    proxyConfiguration.configure(configuration, httpClient, 
httpClient.getHostConfiguration()); 
                 }
 
                 // Execute the scraper config

Modified: 
branches/mashup/java/1.5/java/modules/hostobjects/src/org/wso2/mashup/hostobjects/system/SystemHostObject.java
URL: 
http://wso2.org/svn/browse/wso2/branches/mashup/java/1.5/java/modules/hostobjects/src/org/wso2/mashup/hostobjects/system/SystemHostObject.java?rev=30700&r1=30699&r2=30700&view=diff
==============================================================================
--- 
branches/mashup/java/1.5/java/modules/hostobjects/src/org/wso2/mashup/hostobjects/system/SystemHostObject.java
      (original)
+++ 
branches/mashup/java/1.5/java/modules/hostobjects/src/org/wso2/mashup/hostobjects/system/SystemHostObject.java
      Thu Feb 12 00:30:35 2009
@@ -52,7 +52,6 @@
 import java.io.BufferedReader;
 import java.io.File;
 import java.io.FileReader;
-import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.Reader;
 import java.io.ByteArrayInputStream;
@@ -230,13 +229,12 @@
                 // Check whether this is a file in the service.resources 
directory
                 if (f.exists() && !f.isDirectory()) {
                     reader = new FileReader(f);
+                    engine.setScriptName(path);
+                    engine.evaluate(reader); 
                 } else {
                     // This is not a file.. So we check whether this is a URL
-                    reader = readFromURI(baseURI, path);
+                    readFromURI(engine, baseURI, path); 
                 }
-
-                engine.setScriptName(path);
-                engine.evaluate(reader);
             } catch (IOException e) {
                 throw new MashupFault(e);
             } finally {
@@ -245,7 +243,7 @@
         }
     }
 
-    private static Reader readFromURI(URI baseURI, String path) throws 
MashupFault {
+    private static void readFromURI(JavaScriptEngine engine, URI baseURI, 
String path) throws MashupFault { 
         Reader reader;
         // Not a file in the service.resources Dir.. Then check whether this is
         // a URI.
@@ -258,16 +256,24 @@
         // If this is a relative URL, then we resolves this relative to the
         // baseURI, if the URL is absolute we leave it as it is
         URI uri = baseURI.resolve(path);
-        InputStream inputStream;
+        HttpMethod method = new GetMethod(); 
         try {
-            inputStream = uri.toURL().openStream();
-        } catch (Exception e) {
-            // Catching all exceptions here, cause we need to present them
-            // nicely to user.
-            throw new MashupFault("Cannot read from given URI :" + 
uri.toString(), e);
+            URL url = uri.toURL();
+            int statusCode = MashupUtils.executeHTTPMethod(method, url);
+            if (statusCode != HttpStatus.SC_OK) {
+                throw new MashupFault( "An error occured while getting the 
resource at " + url + ". Reason :" + method.getStatusLine());
+            }
+            reader = new BufferedReader(new 
InputStreamReader(method.getResponseBodyAsStream()));
+            engine.setScriptName(path);
+            engine.evaluate(reader);
+        } catch (MalformedURLException e) {
+            throw new MashupFault(e);
+        } catch (IOException e) {
+            throw new MashupFault(e);
+        } finally {
+            // Release the connection.
+            method.releaseConnection(); 
         }
-        reader = new BufferedReader(new InputStreamReader(inputStream));
-        return reader;
     }
 
     private static SystemHostObject checkInstance(Scriptable obj) {

_______________________________________________
Mashup-dev mailing list
[email protected]
https://wso2.org/cgi-bin/mailman/listinfo/mashup-dev

Reply via email to