Package com.eviware.soapui.impl.wadl.inference.support

Source Code of com.eviware.soapui.impl.wadl.inference.support.InferredSchemaImpl

/*
*  soapUI, copyright (C) 2004-2011 eviware.com
*
*  soapUI is free software; you can redistribute it and/or modify it under the
*  terms of version 2.1 of the GNU Lesser General Public License as published by
*  the Free Software Foundation.
*
*  soapUI 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 at gnu.org.
*/

package com.eviware.soapui.impl.wadl.inference.support;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;

import org.apache.xmlbeans.SchemaTypeSystem;
import org.apache.xmlbeans.XmlBeans;
import org.apache.xmlbeans.XmlException;
import org.apache.xmlbeans.XmlObject;

import com.eviware.soapui.impl.wadl.inference.ConflictHandler;
import com.eviware.soapui.impl.wadl.inference.InferredSchema;
import com.eviware.soapui.impl.wadl.inference.schema.SchemaSystem;
import com.eviware.soapui.inferredSchema.SchemaSetConfig;
import com.eviware.soapui.support.xml.XmlUtils;

/*
*  soapUI, copyright (C) 2004-2011 eviware.com
*
*  soapUI is free software; you can redistribute it and/or modify it under the
*  terms of version 2.1 of the GNU Lesser General Public License as published by
*  the Free Software Foundation.
*
*  soapUI 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 at gnu.org.
*/

public class InferredSchemaImpl implements InferredSchema
{
  private SchemaSystem ss;

  public InferredSchemaImpl()
  {
    ss = new SchemaSystem();
  }

  public InferredSchemaImpl( InputStream is ) throws XmlException, IOException
  {
    ss = new SchemaSystem( SchemaSetConfig.Factory.parse( is ) );
  }

  public String[] getNamespaces()
  {
    return ss.getNamespaces().toArray( new String[0] );
  }

  public SchemaTypeSystem getSchemaTypeSystem()
  {
    return getSchemaTypeSystem( XmlBeans.getBuiltinTypeSystem() );
  }

  public SchemaTypeSystem getSchemaTypeSystem( SchemaTypeSystem sts )
  {
    List<XmlObject> schemas = new ArrayList<XmlObject>();
    try
    {
      for( String namespace : getNamespaces() )
      {
        // schemas.add( XmlObject.Factory.parse( getXsdForNamespace(
        // namespace ).toString() ) );
        schemas.add( XmlUtils.createXmlObject( getXsdForNamespace( namespace ).toString() ) );
      }
      return XmlBeans.compileXsd( sts, schemas.toArray( new XmlObject[0] ), XmlBeans.getBuiltinTypeSystem(), null );
    }
    catch( XmlException e )
    {
      e.printStackTrace();
      return null;
    }
  }

  public String getXsdForNamespace( String namespace )
  {
    return ss.getSchemaForNamespace( namespace ).toString();
  }

  public void learningValidate( XmlObject xml, ConflictHandler handler ) throws XmlException
  {
    ss.validate( xml, handler );
  }

  public void processValidXml( XmlObject xml ) throws XmlException
  {
    ss.validate( xml, new AllowAll() );
  }

  public void save( OutputStream os ) throws IOException
  {
    SchemaSetConfig xml = SchemaSetConfig.Factory.newInstance();
    ss.save( xml );
    xml.save( os );
  }

  public boolean validate( XmlObject xml )
  {
    try
    {
      ss.validate( xml, new DenyAll() );
      return true;
    }
    catch( XmlException e )
    {
      return false;
    }
  }

  public void deleteNamespace( String ns )
  {
    ss.deleteNamespace( ns );
  }

}
TOP

Related Classes of com.eviware.soapui.impl.wadl.inference.support.InferredSchemaImpl

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.