You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by rf...@apache.org on 2009/04/01 02:19:42 UTC

svn commit: r760744 - in /tuscany/java/sca/modules/binding-ws-jaxws: ./ META-INF/ src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/ src/test/java/weather/

Author: rfeng
Date: Wed Apr  1 00:19:41 2009
New Revision: 760744

URL: http://svn.apache.org/viewvc?rev=760744&view=rev
Log:
Bring up the reference binding with the WeatherForecast web service

Added:
    tuscany/java/sca/modules/binding-ws-jaxws/src/test/java/weather/
    tuscany/java/sca/modules/binding-ws-jaxws/src/test/java/weather/WeatherForecastClient.java   (with props)
    tuscany/java/sca/modules/binding-ws-jaxws/src/test/java/weather/WeatherForecastImpl.java   (with props)
Modified:
    tuscany/java/sca/modules/binding-ws-jaxws/META-INF/MANIFEST.MF
    tuscany/java/sca/modules/binding-ws-jaxws/pom.xml
    tuscany/java/sca/modules/binding-ws-jaxws/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/JAXWSBindingInvoker.java
    tuscany/java/sca/modules/binding-ws-jaxws/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/JAXWSReferenceBindingProvider.java

Modified: tuscany/java/sca/modules/binding-ws-jaxws/META-INF/MANIFEST.MF
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-ws-jaxws/META-INF/MANIFEST.MF?rev=760744&r1=760743&r2=760744&view=diff
==============================================================================
--- tuscany/java/sca/modules/binding-ws-jaxws/META-INF/MANIFEST.MF (original)
+++ tuscany/java/sca/modules/binding-ws-jaxws/META-INF/MANIFEST.MF Wed Apr  1 00:19:41 2009
@@ -42,7 +42,6 @@
  org.apache.tuscany.sca.policy.authentication.basic;version="2.0.0",
  org.apache.tuscany.sca.policy.security;version="2.0.0",
  org.apache.tuscany.sca.policy.util;version="2.0.0",
- org.apache.tuscany.sca.policy.xml.ws;version="2.0.0";resolution:=optional,
  org.apache.tuscany.sca.provider;version="2.0.0",
  org.apache.tuscany.sca.runtime;version="2.0.0",
  org.apache.tuscany.sca.xsd;version="2.0.0",

Modified: tuscany/java/sca/modules/binding-ws-jaxws/pom.xml
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-ws-jaxws/pom.xml?rev=760744&r1=760743&r2=760744&view=diff
==============================================================================
--- tuscany/java/sca/modules/binding-ws-jaxws/pom.xml (original)
+++ tuscany/java/sca/modules/binding-ws-jaxws/pom.xml Wed Apr  1 00:19:41 2009
@@ -34,6 +34,7 @@
             <groupId>org.apache.tuscany.sca</groupId>
             <artifactId>tuscany-core</artifactId>
             <version>2.0-SNAPSHOT</version>
+            <scope>runtime</scope>
         </dependency>
 
         <dependency>
@@ -53,6 +54,7 @@
             <groupId>org.apache.tuscany.sca</groupId>
             <artifactId>tuscany-assembly-xml</artifactId>
             <version>2.0-SNAPSHOT</version>
+            <scope>runtime</scope>
         </dependency>
 
         <dependency>
@@ -84,8 +86,9 @@
 
         <dependency>
             <groupId>org.apache.tuscany.sca</groupId>
-            <artifactId>tuscany-databinding-axiom</artifactId>
+            <artifactId>tuscany-databinding-jaxb</artifactId>
             <version>2.0-SNAPSHOT</version>
+            <scope>runtime</scope>
         </dependency>
 
         <dependency>
@@ -99,18 +102,14 @@
             <groupId>org.apache.tuscany.sca</groupId>
             <artifactId>tuscany-host-http</artifactId>
             <version>2.0-SNAPSHOT</version>
+            <scope>runtime</scope>
         </dependency>
 
         <dependency>
             <groupId>org.apache.tuscany.sca</groupId>
             <artifactId>tuscany-interface-java-jaxws</artifactId>
             <version>2.0-SNAPSHOT</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.tuscany.sca</groupId>
-            <artifactId>tuscany-policy-xml-ws</artifactId>
-            <version>2.0-SNAPSHOT</version>
+            <scope>runtime</scope>
         </dependency>
 
         <dependency>
@@ -125,7 +124,149 @@
             <version>2.5</version>
             <scope>provided</scope>
         </dependency>
-
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-node-impl</artifactId>
+            <version>2.0-SNAPSHOT</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-implementation-java-runtime</artifactId>
+            <version>2.0-SNAPSHOT</version>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
+    <build>
+        <plugins>
+            <!-- comment out the following to build offline -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-antrun-plugin</artifactId>
+                <version>1.1</version>
+
+                <executions>
+                    <execution>
+                        <id>install-wsdl</id>
+                        <phase>validate</phase>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                        <configuration>
+                            <tasks>
+                                <mkdir dir="${project.build.directory}/jaxws-source/wsdl/" />
+                                <get src="http://www.webservicex.net/WeatherForecast.asmx?wsdl"
+                                    dest="${project.build.directory}/jaxws-source/wsdl/WeatherForecast.wsdl" verbose="true"
+                                    usetimestamp="true" />
+                            </tasks>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <!-- end of offline excluded section -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <argLine>-Djava.endorsed.dirs=target/endorsed</argLine>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-dependency-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>copy</id>
+                        <phase>generate-sources</phase>
+                        <goals>
+                            <goal>copy</goal>
+                        </goals>
+                        <configuration>
+                            <artifactItems>
+                                <artifactItem>
+                                    <groupId>javax.xml.ws</groupId>
+                                    <artifactId>jaxws-api</artifactId>
+                                    <version>2.1</version>
+                                    <type>jar</type>
+                                </artifactItem>
+                                <artifactItem>
+                                    <groupId>javax.xml.bind</groupId>
+                                    <artifactId>jaxb-api</artifactId>
+                                    <version>2.1</version>
+                                    <type>jar</type>
+                                </artifactItem>
+                            </artifactItems>
+                            <outputDirectory>${project.build.directory}/endorsed</outputDirectory>
+                            <overWriteReleases>false</overWriteReleases>
+                            <overWriteSnapshots>true</overWriteSnapshots>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>build-helper-maven-plugin</artifactId>
+                <version>1.0</version>
+                <executions>
+                    <execution>
+                        <id>add-source</id>
+                        <phase>generate-sources</phase>
+                        <goals>
+                            <goal>add-test-source</goal>
+                        </goals>
+                        <configuration>
+                            <sources>
+                                <source>target/jaxws-source</source>
+                            </sources>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>jaxws-maven-plugin</artifactId>
+                <version>1.11</version>
+                <!-- Explicitly add the transitive dependencies for jaxws-api
+                     http://jira.codehaus.org/browse/MEV-498
+                -->
+                <dependencies>
+                    <dependency>
+                        <groupId>javax.jws</groupId>
+                        <artifactId>jsr181-api</artifactId>
+                        <version>1.0-MR1</version>
+                    </dependency>
+                    <dependency>
+                        <groupId>javax.annotation</groupId>
+                        <artifactId>jsr250-api</artifactId>
+                        <version>1.0</version>
+                    </dependency>
+                </dependencies>
+                <executions>
+                    <execution>
+                        <id>wsimport</id>
+                        <phase>process-resources</phase>
+                        <goals>
+                            <goal>wsimport</goal>
+                        </goals>
+                        <configuration>
+                            <packageName>com.example.weather</packageName>
+                            <wsdlDirectory>${project.build.directory}/jaxws-source/wsdl</wsdlDirectory>
+                            <wsdlFiles>
+                                <wsdlFile>WeatherForecast.wsdl</wsdlFile>
+                            </wsdlFiles>
+                        </configuration>
+                    </execution>
+                </executions>
+                <configuration>
+                    <target>2.1</target>
+                    <sourceDestDir>${project.build.directory}/jaxws-source</sourceDestDir>
+                    <verbose>false</verbose>
+                    <xnocompile>true</xnocompile>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+
 </project>

Modified: tuscany/java/sca/modules/binding-ws-jaxws/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/JAXWSBindingInvoker.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-ws-jaxws/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/JAXWSBindingInvoker.java?rev=760744&r1=760743&r2=760744&view=diff
==============================================================================
--- tuscany/java/sca/modules/binding-ws-jaxws/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/JAXWSBindingInvoker.java (original)
+++ tuscany/java/sca/modules/binding-ws-jaxws/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/JAXWSBindingInvoker.java Wed Apr  1 00:19:41 2009
@@ -18,9 +18,16 @@
  */
 package org.apache.tuscany.sca.binding.ws.jaxws;
 
+import java.net.MalformedURLException;
+import java.net.URL;
 import java.util.Iterator;
 
+import javax.wsdl.Binding;
+import javax.wsdl.BindingOperation;
+import javax.wsdl.extensions.soap.SOAPOperation;
+import javax.wsdl.extensions.soap12.SOAP12Operation;
 import javax.xml.namespace.QName;
+import javax.xml.soap.Detail;
 import javax.xml.soap.DetailEntry;
 import javax.xml.soap.MessageFactory;
 import javax.xml.soap.SOAPBody;
@@ -29,11 +36,11 @@
 import javax.xml.soap.SOAPMessage;
 import javax.xml.soap.SOAPPart;
 import javax.xml.ws.Dispatch;
+import javax.xml.ws.Service;
 import javax.xml.ws.WebServiceException;
 import javax.xml.ws.WebServiceFeature;
 import javax.xml.ws.soap.SOAPFaultException;
 
-import org.apache.axis2.addressing.AddressingConstants;
 import org.apache.tuscany.sca.binding.ws.WebServiceBinding;
 import org.apache.tuscany.sca.interfacedef.Operation;
 import org.apache.tuscany.sca.invocation.DataExchangeSemantics;
@@ -49,9 +56,6 @@
 public class JAXWSBindingInvoker implements Invoker, DataExchangeSemantics {
     private final static String SCA11_TUSCANY_NS = "http://tuscany.apache.org/xmlns/sca/1.1";
 
-    public static final QName QNAME_WSA_FROM =
-        new QName(AddressingConstants.Final.WSA_NAMESPACE, AddressingConstants.WSA_FROM,
-                  AddressingConstants.WSA_DEFAULT_PREFIX);
     public static final String TUSCANY_PREFIX = "tuscany";
     public static final QName CALLBACK_ID_REFPARM_QN = new QName(SCA11_TUSCANY_NS, "CallbackID", TUSCANY_PREFIX);
     public static final QName CONVERSATION_ID_REFPARM_QN =
@@ -62,16 +66,33 @@
     private Operation operation;
     private WebServiceBinding wsBinding;
 
-    public JAXWSBindingInvoker(Dispatch<SOAPMessage> dispatch,
-                               Operation operation,
+    public JAXWSBindingInvoker(Operation operation,
                                WebServiceFeature[] features,
                                MessageFactory messageFactory,
                                WebServiceBinding wsBinding) {
-        this.dispatch = dispatch;
         this.messageFactory = messageFactory;
         this.operation = operation;
         this.wsBinding = wsBinding;
+        this.dispatch = createDispatch(wsBinding);
+    }
 
+    private Dispatch<SOAPMessage> createDispatch(WebServiceBinding wsBinding) {
+        // FIXME: What should we do if the WSDL is generated in memory?
+        URL wsdlLocation = null;
+        try {
+            wsdlLocation = new URL(wsBinding.getWSDLDocument().getDocumentBaseURI());
+        } catch (MalformedURLException e) {
+            try {
+                wsdlLocation = wsBinding.getWSDLDefinition().getLocation().toURL();
+            } catch (MalformedURLException e1) {
+                // TODO Auto-generated catch block
+                e1.printStackTrace();
+            }
+        }
+        Service service = Service.create(wsdlLocation, wsBinding.getServiceName());
+        return service.createDispatch(new QName(wsBinding.getServiceName().getNamespaceURI(), wsBinding.getPortName()),
+                                      SOAPMessage.class,
+                                      Service.Mode.MESSAGE);
     }
 
     public Message invoke(Message msg) {
@@ -88,8 +109,8 @@
                 }
 
             }
-            msg.setBody(resp);
         } catch (SOAPFaultException e) {
+            e.printStackTrace();
             setFault(msg, e.getFault());
         } catch (WebServiceException e) {
             msg.setFaultBody(e);
@@ -103,23 +124,53 @@
     }
 
     private void setFault(Message msg, SOAPFault fault) {
-        for (Iterator i = fault.getDetail().getDetailEntries(); i.hasNext();) {
+        Detail detail = fault.getDetail();
+        if (detail == null) {
+            return;
+        }
+        for (Iterator i = detail.getDetailEntries(); i.hasNext();) {
             DetailEntry entry = (DetailEntry)i.next();
             msg.setFaultBody(entry);
         }
     }
 
+    protected String getSOAPAction(String operationName) {
+        Binding binding = wsBinding.getBinding();
+        if (binding != null) {
+            for (Object o : binding.getBindingOperations()) {
+                BindingOperation bop = (BindingOperation)o;
+                if (bop.getName().equalsIgnoreCase(operationName)) {
+                    for (Object o2 : bop.getExtensibilityElements()) {
+                        if (o2 instanceof SOAPOperation) {
+                            return ((SOAPOperation)o2).getSoapActionURI();
+                        } else if (o2 instanceof SOAP12Operation) {
+                            return ((SOAP12Operation)o2).getSoapActionURI();
+                        }
+                    }
+                }
+            }
+        }
+        return null;
+    }
+
     protected SOAPMessage invokeTarget(Message msg) throws SOAPException {
         SOAPMessage soapMessage = messageFactory.createMessage();
         SOAPPart soapPart = soapMessage.getSOAPPart();
         javax.xml.soap.SOAPEnvelope envelope = soapPart.getEnvelope();
-        javax.xml.soap.SOAPBody body = envelope.addBody();
-        body.addDocument(((Node)msg.getBody()).getOwnerDocument());
+        javax.xml.soap.SOAPBody body = envelope.getBody();
+        Object[] args = (Object[])msg.getBody();
+        body.addDocument(((Node)args[0]).getOwnerDocument());
         soapMessage.saveChanges();
         if (operation.isNonBlocking()) {
             dispatch.invokeOneWay(soapMessage);
             return null;
         }
+
+        // FIXME: We need to find out the soapAction
+        String action = getSOAPAction(operation.getName());
+        if (action != null) {
+            dispatch.getRequestContext().put(Dispatch.SOAPACTION_URI_PROPERTY, action);
+        }
         SOAPMessage response = dispatch.invoke(soapMessage);
         return response;
     }

Modified: tuscany/java/sca/modules/binding-ws-jaxws/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/JAXWSReferenceBindingProvider.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-ws-jaxws/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/JAXWSReferenceBindingProvider.java?rev=760744&r1=760743&r2=760744&view=diff
==============================================================================
--- tuscany/java/sca/modules/binding-ws-jaxws/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/JAXWSReferenceBindingProvider.java (original)
+++ tuscany/java/sca/modules/binding-ws-jaxws/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/JAXWSReferenceBindingProvider.java Wed Apr  1 00:19:41 2009
@@ -18,12 +18,6 @@
  */
 package org.apache.tuscany.sca.binding.ws.jaxws;
 
-import javax.xml.bind.JAXBContext;
-import javax.xml.namespace.QName;
-import javax.xml.soap.SOAPMessage;
-import javax.xml.ws.Dispatch;
-import javax.xml.ws.Service;
-
 import org.apache.tuscany.sca.binding.ws.WebServiceBinding;
 import org.apache.tuscany.sca.core.FactoryExtensionPoint;
 import org.apache.tuscany.sca.databinding.DataBindingExtensionPoint;
@@ -40,7 +34,6 @@
 
     private javax.xml.soap.MessageFactory messageFactory;
     private WebServiceBinding wsBinding;
-    private Dispatch<SOAPMessage> dispatch;
 
     public JAXWSReferenceBindingProvider(RuntimeComponent component,
                                          RuntimeComponentReference reference,
@@ -61,10 +54,6 @@
         if (contract.getInterface() != null) {
             contract.getInterface().resetDataBinding(Node.class.getName());
         }
-
-        Service service = Service.create(wsBinding.getServiceName());
-        JAXBContext context = null;
-        Dispatch<Object> dispath = service.createDispatch(new QName(wsBinding.getServiceName().getNamespaceURI(), wsBinding.getPortName()), context,Service.Mode.MESSAGE);
     }
 
     public void start() {
@@ -82,7 +71,7 @@
     }
 
     public Invoker createInvoker(Operation operation) {
-        return new JAXWSBindingInvoker(dispatch, null, null, messageFactory, wsBinding);
+        return new JAXWSBindingInvoker(operation, null, messageFactory, wsBinding);
     }
 
 }

Added: tuscany/java/sca/modules/binding-ws-jaxws/src/test/java/weather/WeatherForecastClient.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-ws-jaxws/src/test/java/weather/WeatherForecastClient.java?rev=760744&view=auto
==============================================================================
--- tuscany/java/sca/modules/binding-ws-jaxws/src/test/java/weather/WeatherForecastClient.java (added)
+++ tuscany/java/sca/modules/binding-ws-jaxws/src/test/java/weather/WeatherForecastClient.java Wed Apr  1 00:19:41 2009
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package weather;
+
+import java.io.StringWriter;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.Marshaller;
+
+import org.apache.tuscany.sca.node.Contribution;
+import org.apache.tuscany.sca.node.ContributionLocationHelper;
+import org.apache.tuscany.sca.node.Node;
+import org.apache.tuscany.sca.node.NodeFactory;
+
+import com.example.weather.GetWeatherByZipCodeResponse;
+import com.example.weather.WeatherForecastSoap;
+import com.example.weather.WeatherForecasts;
+
+/**
+ * This client program to invoke the Mortgage LoanApproval service
+ */
+public class WeatherForecastClient {
+
+    public static void main(String[] args) throws Exception {
+
+        String location = ContributionLocationHelper.getContributionLocation("WeatherForecast.composite");
+        Node node = NodeFactory.newInstance().createNode("WeatherForecast.composite", new Contribution("c1", location));
+        node.start();
+        WeatherForecastSoap weatherService = node.getService(WeatherForecastSoap.class, "WeatherForecastService");
+
+        WeatherForecasts result = weatherService.getWeatherByZipCode("94555");
+
+        // Dump the result as XML
+
+        // Wrap the result so that it can be marshaled
+        GetWeatherByZipCodeResponse response = new GetWeatherByZipCodeResponse();
+        response.setGetWeatherByZipCodeResult(result);
+
+        // Marshal the JAXB object into XML
+        JAXBContext context = JAXBContext.newInstance(GetWeatherByZipCodeResponse.class);
+        StringWriter writer = new StringWriter();
+        Marshaller marshaller = context.createMarshaller();
+        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
+        marshaller.marshal(response, writer);
+
+        String xml = writer.toString();
+        System.out.println(xml);
+
+        node.stop();
+    }
+}

Propchange: tuscany/java/sca/modules/binding-ws-jaxws/src/test/java/weather/WeatherForecastClient.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/java/sca/modules/binding-ws-jaxws/src/test/java/weather/WeatherForecastClient.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: tuscany/java/sca/modules/binding-ws-jaxws/src/test/java/weather/WeatherForecastImpl.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-ws-jaxws/src/test/java/weather/WeatherForecastImpl.java?rev=760744&view=auto
==============================================================================
--- tuscany/java/sca/modules/binding-ws-jaxws/src/test/java/weather/WeatherForecastImpl.java (added)
+++ tuscany/java/sca/modules/binding-ws-jaxws/src/test/java/weather/WeatherForecastImpl.java Wed Apr  1 00:19:41 2009
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package weather;
+
+import org.oasisopen.sca.annotation.Reference;
+import org.oasisopen.sca.annotation.Service;
+
+import com.example.weather.WeatherForecastSoap;
+import com.example.weather.WeatherForecasts;
+
+/**
+ * @version $Rev$ $Date$
+ */
+@Service(WeatherForecastSoap.class)
+public class WeatherForecastImpl implements WeatherForecastSoap{
+    @Reference
+    protected WeatherForecastSoap weatherForecast;
+
+    public WeatherForecasts getWeatherByPlaceName(String placeName) {
+        return weatherForecast.getWeatherByPlaceName(placeName);
+    }
+
+    public WeatherForecasts getWeatherByZipCode(String zipCode) {
+        return weatherForecast.getWeatherByZipCode(zipCode);
+    }
+}

Propchange: tuscany/java/sca/modules/binding-ws-jaxws/src/test/java/weather/WeatherForecastImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/java/sca/modules/binding-ws-jaxws/src/test/java/weather/WeatherForecastImpl.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date