/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
*
* The contents of this file are subject to the terms of either the GNU
* General Public License Version 2 only ("GPL") or the Common Development
* and Distribution License("CDDL") (collectively, the "License"). You
* may not use this file except in compliance with the License. You can
* obtain a copy of the License at
* http://glassfish.java.net/public/CDDL+GPL_1_1.html
* or packager/legal/LICENSE.txt. See the License for the specific
* language governing permissions and limitations under the License.
*
* When distributing the software, include this License Header Notice in each
* file and include the License file at packager/legal/LICENSE.txt.
*
* GPL Classpath Exception:
* Oracle designates this particular file as subject to the "Classpath"
* exception as provided by Oracle in the GPL Version 2 section of the License
* file that accompanied this code.
*
* Modifications:
* If applicable, add the following below the License Header, with the fields
* enclosed by brackets [] replaced by your own identifying information:
* "Portions Copyright [year] [name of copyright owner]"
*
* Contributor(s):
* If you wish your version of this file to be governed by only the CDDL or
* only the GPL Version 2, indicate your decision by adding "[Contributor]
* elects to include this software in this distribution under the [CDDL or GPL
* Version 2] license." If you don't indicate a single choice of license, a
* recipient has the option to distribute your version of this file under
* either the CDDL, the GPL Version 2 or to extend the choice of license to
* its licensees as provided above. However, if you add GPL Version 2 code
* and therefore, elected the GPL Version 2 license, then the option applies
* only if the new code is made subject to such option by the copyright
* holder.
*/
package com.sun.xml.ws.test;
import javax.xml.ws.Holder;
import javax.xml.ws.WebServiceFeature;
import com.oracle.webservices.api.databinding.DatabindingModeFeature;
import com.sun.xml.ws.DummyAnnotations;
import com.sun.xml.ws.WsDatabindingTestBase;
import com.sun.xml.ws.api.databinding.Databinding;
import com.sun.xml.ws.api.databinding.DatabindingConfig;
import com.sun.xml.ws.spi.db.BindingContext;
import com.sun.xml.ws.spi.db.BindingContextFactory;
import com.sun.xml.ws.test.HelloImpl;
import com.sun.xml.ws.test.HelloPort;
import com.sun.xml.ws.test.xbeandoc.Countries;
import com.sun.xml.ws.test.xbeandoc.CountryInfoType;
import com.sun.xml.ws.test.xbeandoc.TypedXmlBeansDOC;
import com.sun.xml.ws.test.xbeandoc.TypedXmlBeansDOCImpl;
/**
* 1. @WebService
* 2. Default BindingID = BindingID.parse(endpointClass)
* 3. Default from WebServiceFeatureList
* 4. Default WSDLGeneratorExtension
* 5. setInlineSchemas(true) -> WSDLGenerator line1025 result = new TXWResult
* - EntityResolverWrapper InputSource for in-vm wsdl
*
* @author shih-chang.chen@oracle.com
*/
public abstract class BasicDatabindingTestBase extends WsDatabindingTestBase {
abstract protected DatabindingModeFeature databindingMode();
protected String _testHelloEcho() throws Exception {
Class<?> endpointClass = HelloImpl.class;
Class<?> proxySEIClass = HelloPort.class;
DatabindingConfig srvConfig = new DatabindingConfig();
srvConfig.setEndpointClass(endpointClass);
srvConfig.setMetadataReader(new DummyAnnotations());
DatabindingModeFeature dbm = databindingMode();
DatabindingConfig cliConfig = new DatabindingConfig();
cliConfig.setMetadataReader(new DummyAnnotations());
cliConfig.setContractClass(proxySEIClass);
// Honor system property if present, otherwise set feature.
WebServiceFeature[] f = null;
String dbProperty = System
.getProperty(BindingContextFactory.JAXB_CONTEXT_FACTORY_PROPERTY);
if (dbProperty == null)
f = new WebServiceFeature[] { dbm };
else
f = new WebServiceFeature[0];
srvConfig.setFeatures(f);
cliConfig.setFeatures(f);
HelloPort hp = createProxy(HelloPort.class, srvConfig, cliConfig, false);
String req = "testInVM " + dbm.getMode();
String res = hp.echoS(req);
assertEquals(req, res);
return srvConfig.properties().get(BindingContext.class.getName())
.getClass().getName();
}
public void testWebParamHolder() throws Exception {
DatabindingModeFeature dbm = databindingMode();
WebServiceFeature[] f = { dbm };
DatabindingConfig cliConfig = new DatabindingConfig();
cliConfig.setEndpointClass(WebParamHolderSEB.class);
cliConfig.setFeatures(f);
Databinding db = (Databinding) factory.createRuntime(cliConfig);
assertNotNull(db);
}
/**
* Test topdown xbean TypedXmlBeansDOC
*/
public void testGlobalElementParamXmlBeansTopdown() throws Exception {
Class endpointClass = TypedXmlBeansDOCImpl.class;
Class proxySEIClass = TypedXmlBeansDOC.class;
DatabindingConfig srvConfig = new DatabindingConfig();
srvConfig.setEndpointClass(endpointClass);
DatabindingModeFeature dbf = databindingMode();
dbf.getProperties().put("com.sun.xml.ws.api.model.DocWrappeeNamespapceQualified", true);
srvConfig.setMetadataReader(new JWSAnnotationReader());
WebServiceFeature[] f = { dbf };
srvConfig.setFeatures(f);
DatabindingConfig cliConfig = new DatabindingConfig();
cliConfig.setContractClass(proxySEIClass);
cliConfig.setFeatures(f);
cliConfig.setMetadataReader(new JWSAnnotationReader());
TypedXmlBeansDOC proxy = createProxy(TypedXmlBeansDOC.class, srvConfig, cliConfig, true);
{
Holder<Countries> countries = new Holder<Countries>(new Countries());
countries.value.getCountry().add(countryInfo("1", "banana"));
countries.value.getCountry().add(countryInfo("2", "apple"));
countries.value.getCountry().add(countryInfo("3", "peach"));
proxy.addCountry(countries, countryInfo("x", "foo"));
assertEquals(4, countries.value.getCountry().size());
}
{
Countries countries = new Countries();
countries.getCountry().add(countryInfo("1", "banana"));
countries.getCountry().add(countryInfo("2", "apple"));
String res = proxy.getCountryName(countries, "hello");
assertEquals("hello2", res);
}
}
CountryInfoType countryInfo(String code, String name) {
CountryInfoType c = new CountryInfoType();
c.setCode(code);
c.setName(name);
return c;
}
}