Package org.jboss.test.ws.tools.jbws1645

Source Code of org.jboss.test.ws.tools.jbws1645.JBWS1645TestCase

/*
* JBoss, Home of Professional Open Source
* Copyright 2007, JBoss Inc., and individual contributors as indicated
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.jboss.test.ws.tools.jbws1645;

import java.io.File;
import java.io.FileInputStream;
import java.io.Writer;

import org.apache.ws.policy.Policy;
import org.apache.ws.policy.util.DOMPolicyReader;
import org.apache.ws.policy.util.PolicyFactory;
import org.apache.ws.policy.util.PolicyReader;
import org.jboss.test.ws.tools.sei.StandardJavaTypes;
import org.jboss.test.ws.tools.validation.WSDLValidator;
import org.jboss.ws.Constants;
import org.jboss.ws.core.soap.Style;
import org.jboss.wsf.test.JBossWSTest;
import org.jboss.wsf.common.IOUtils;
import org.jboss.ws.extensions.policy.PolicyScopeLevel;
import org.jboss.ws.extensions.policy.metadata.PolicyMetaExtension;
import org.jboss.ws.metadata.umdm.EndpointMetaData;
import org.jboss.ws.metadata.umdm.ExtensibleMetaData;
import org.jboss.ws.metadata.umdm.ServiceMetaData;
import org.jboss.ws.metadata.umdm.UnifiedMetaData;
import org.jboss.ws.metadata.wsdl.WSDLDefinitions;
import org.jboss.ws.metadata.wsdl.WSDLUtils;
import org.jboss.ws.tools.JavaToWSDL;
import org.jboss.ws.tools.WSToolsConstants;
import org.jboss.ws.tools.metadata.ToolsUnifiedMetaDataBuilder;
import org.jboss.ws.tools.wsdl.WSDLDefinitionsFactory;
import org.jboss.ws.tools.wsdl.WSDLWriter;

/**
*
* @author Alessio Soldano, <alessio.soldano@javalinux.it>
* @since 05-May-2007
*/
public class JBWS1645TestCase extends JBossWSTest
{
   private PolicyReader reader;
  
   public JBWS1645TestCase()
   {
      super();
      setPolicyReader();
   }
  
   public JBWS1645TestCase(String name)
   {
      super(name);
      setPolicyReader();
   }
  
   private void setPolicyReader()
   {
      reader = (DOMPolicyReader) PolicyFactory.getPolicyReader(PolicyFactory.DOM_POLICY_READER);
   }
  
   public void testWSDLGeneratorWithPolicies() throws Exception
   {
      Class seiClass = StandardJavaTypes.class;
      String fixturefile = "resources/tools/jbws1645/StandardJavaTypesServiceJBWS1645.wsdl";
     
      File wsdlDir = new File("./tools/jbws1645");
      wsdlDir.mkdirs();
     
      String sname = WSDLUtils.getJustClassName(seiClass) + "Service";
      String wsdlPath = wsdlDir + "/" + sname + "JBWS1645.wsdl";
      String targetNamespace = "http://org.jboss.ws";
      Style style = Style.DOCUMENT;
      JavaToWSDL jwsdl = new JavaToWSDL(Constants.NS_WSDL11);
      jwsdl.setServiceName(sname);
      jwsdl.setTargetNamespace(targetNamespace);
      jwsdl.addFeature(WSToolsConstants.WSTOOLS_FEATURE_RESTRICT_TO_TARGET_NS, true);
      jwsdl.setStyle(style);
     
      //manually generate the umd using tools
      UnifiedMetaData umd = new ToolsUnifiedMetaDataBuilder(seiClass, targetNamespace,
            null, sname, style, null, null).getUnifiedMetaData();
      jwsdl.setUmd(umd);
     
      //manually add policies to the umd
      ServiceMetaData serviceMetaData = umd.getServices().get(0);
      EndpointMetaData epMetaData = serviceMetaData.getEndpoints().get(0);
      addPolicy(new File("resources/tools/jbws1645/PortPolicy.txt"), PolicyScopeLevel.WSDL_PORT, epMetaData);
      addPolicy(new File("resources/tools/jbws1645/PortTypePolicy.txt"), PolicyScopeLevel.WSDL_PORT_TYPE, epMetaData);
      addPolicy(new File("resources/tools/jbws1645/BindingPolicy.txt"), PolicyScopeLevel.WSDL_BINDING, epMetaData);
     
      //generate the wsdl definitions and write the wsdl file
      WSDLDefinitions wsdl = jwsdl.generate(seiClass);
     
      //performe some trivial checks on wsdl definitions
      assertEquals(1, wsdl.getServices()[0].getEndpoints()[0].getExtensibilityElements(
            Constants.WSDL_ELEMENT_POLICYREFERENCE).size());
      assertNotNull(wsdl.getInterfaces()[0].getProperty(Constants.WSDL_PROPERTY_POLICYURIS));
      assertEquals(1, wsdl.getBindings()[0].getExtensibilityElements(Constants.WSDL_ELEMENT_POLICYREFERENCE).size());
      assertEquals(3, wsdl.getExtensibilityElements(Constants.WSDL_ELEMENT_POLICY).size());
     
      Writer fw = IOUtils.getCharsetFileWriter(new File(wsdlPath), Constants.DEFAULT_XML_CHARSET);
      new WSDLWriter(wsdl).write(fw, Constants.DEFAULT_XML_CHARSET);
      fw.close();
     
      //validate the generated WSDL
      validateGeneratedWSDL(new File(wsdlPath), new File(fixturefile));
     
   }

  
  
   public void testWSDLGeneratorWithMultiplePolicies() throws Exception
   {
      Class seiClass = StandardJavaTypes.class;
      String fixturefile = "resources/tools/jbws1645/StandardJavaTypesServiceJBWS1645-Multiple.wsdl";
     
      File wsdlDir = new File("./tools/jbws1645");
      wsdlDir.mkdirs();
     
      String sname = WSDLUtils.getJustClassName(seiClass) + "Service-Multiple";
      String wsdlPath = wsdlDir + "/" + sname + "JBWS1645-Multiple.wsdl";
      String targetNamespace = "http://org.jboss.ws";
      Style style = Style.DOCUMENT;
      JavaToWSDL jwsdl = new JavaToWSDL(Constants.NS_WSDL11);
      jwsdl.setServiceName(sname);
      jwsdl.setTargetNamespace(targetNamespace);
      jwsdl.addFeature(WSToolsConstants.WSTOOLS_FEATURE_RESTRICT_TO_TARGET_NS, true);
      jwsdl.setStyle(style);
     
      //manually generate the umd using tools
      UnifiedMetaData umd = new ToolsUnifiedMetaDataBuilder(seiClass, targetNamespace,
            null, sname, style, null, null).getUnifiedMetaData();
      jwsdl.setUmd(umd);
     
      //manually add policies to the umd
      ServiceMetaData serviceMetaData = umd.getServices().get(0);
      EndpointMetaData epMetaData = serviceMetaData.getEndpoints().get(0);
      addPolicy(new File("resources/tools/jbws1645/PortPolicy.txt"), PolicyScopeLevel.WSDL_PORT, epMetaData);
      addPolicy(new File("resources/tools/jbws1645/PortPolicy2.txt"), PolicyScopeLevel.WSDL_PORT, epMetaData);
      addPolicy(new File("resources/tools/jbws1645/PortTypePolicy2.txt"), PolicyScopeLevel.WSDL_PORT_TYPE, epMetaData);
      addPolicy(new File("resources/tools/jbws1645/PortTypePolicy.txt"), PolicyScopeLevel.WSDL_PORT_TYPE, epMetaData);
      addPolicy(new File("resources/tools/jbws1645/BindingPolicy.txt"), PolicyScopeLevel.WSDL_BINDING, epMetaData);
      addPolicy(new File("resources/tools/jbws1645/BindingPolicy2.txt"), PolicyScopeLevel.WSDL_BINDING, epMetaData);
     
      //generate the wsdl definitions and write the wsdl file
      WSDLDefinitions wsdl = jwsdl.generate(seiClass);
     
      //performe some trivial checks on wsdl definitions
      assertEquals(2, wsdl.getServices()[0].getEndpoints()[0].getExtensibilityElements(
            Constants.WSDL_ELEMENT_POLICYREFERENCE).size());
      assertNotNull(wsdl.getInterfaces()[0].getProperty(Constants.WSDL_PROPERTY_POLICYURIS));
      assertEquals(2, wsdl.getBindings()[0].getExtensibilityElements(Constants.WSDL_ELEMENT_POLICYREFERENCE).size());
      assertEquals(6, wsdl.getExtensibilityElements(Constants.WSDL_ELEMENT_POLICY).size());
     
      Writer fw = IOUtils.getCharsetFileWriter(new File(wsdlPath), Constants.DEFAULT_XML_CHARSET);
      new WSDLWriter(wsdl).write(fw, Constants.DEFAULT_XML_CHARSET);
      fw.close();
     
      //validate the generated WSDL
      validateGeneratedWSDL(new File(wsdlPath), new File(fixturefile));
     
   }
  
   private void addPolicy(File sourceFile, PolicyScopeLevel scope, ExtensibleMetaData extMetaData) throws Exception
   {
      PolicyMetaExtension ext = (PolicyMetaExtension)extMetaData.getExtension(Constants.URI_WS_POLICY);
      if (ext == null)
      {
         ext = new PolicyMetaExtension(Constants.URI_WS_POLICY);
         extMetaData.addExtension(ext);
      }
      FileInputStream fis = new FileInputStream(sourceFile);
      Policy policy = reader.readPolicy(fis);
      fis.close();
      ext.addPolicy(scope, policy);
   }
  
   private void validateGeneratedWSDL(File wsdlFile, File expectedWsdlFile) throws Exception
   {
      WSDLDefinitionsFactory factory = WSDLDefinitionsFactory.newInstance();
      WSDLDefinitions wsdl = factory.parse(wsdlFile.toURL());
      WSDLDefinitions expWsdl = factory.parse(expectedWsdlFile.toURL());
      assertNotNull(wsdl);
      assertNotNull(expWsdl);
      WSDLValidator validator = new WSDLValidator();
      assertTrue(validator.validate(expWsdl,wsdl));
   }
}
TOP

Related Classes of org.jboss.test.ws.tools.jbws1645.JBWS1645TestCase

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.