Package com.eviware.soapui.impl.support

Source Code of com.eviware.soapui.impl.support.AbstractInterface

/*
*  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.support;

import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import com.eviware.soapui.SoapUI;
import com.eviware.soapui.config.EndpointsConfig;
import com.eviware.soapui.config.InterfaceConfig;
import com.eviware.soapui.impl.support.definition.support.AbstractDefinitionContext;
import com.eviware.soapui.impl.wsdl.AbstractWsdlModelItem;
import com.eviware.soapui.impl.wsdl.WsdlProject;
import com.eviware.soapui.model.ModelItem;
import com.eviware.soapui.model.iface.Interface;
import com.eviware.soapui.model.iface.InterfaceListener;
import com.eviware.soapui.model.iface.Operation;
import com.eviware.soapui.model.iface.Request;

public abstract class AbstractInterface<T extends InterfaceConfig> extends AbstractWsdlModelItem<T> implements
    Interface
{
  private Set<InterfaceListener> interfaceListeners = new HashSet<InterfaceListener>();

  protected AbstractInterface( T config, ModelItem parent, String icon )
  {
    super( config, parent, icon );

    if( config.getEndpoints() == null )
      config.addNewEndpoints();

    for( InterfaceListener listener : SoapUI.getListenerRegistry().getListeners( InterfaceListener.class ) )
    {
      addInterfaceListener( listener );
    }

    if( !config.isSetDefinitionCache() )
      config.addNewDefinitionCache();
  }

  public WsdlProject getProject()
  {
    return ( WsdlProject )getParent();
  }

  public T getConfig()
  {
    return super.getConfig();
  }

  public List<? extends ModelItem> getChildren()
  {
    return getOperationList();
  }

  public String[] getEndpoints()
  {
    EndpointsConfig endpoints = getConfig().getEndpoints();
    List<String> endpointArray = endpoints.getEndpointList();
    return endpointArray.toArray( new String[endpointArray.size()] );
  }

  public void addEndpoint( String endpoint )
  {
    if( endpoint == null || endpoint.trim().length() == 0 )
      return;

    endpoint = endpoint.trim();
    String[] endpoints = getEndpoints();

    // dont add the same endpoint twice
    if( Arrays.asList( endpoints ).contains( endpoint ) )
      return;

    getConfig().getEndpoints().addNewEndpoint().setStringValue( endpoint );

    notifyPropertyChanged( ENDPOINT_PROPERTY, null, endpoint );
  }

  public void changeEndpoint( String oldEndpoint, String newEndpoint )
  {
    if( oldEndpoint == null || oldEndpoint.trim().length() == 0 )
      return;
    if( newEndpoint == null || newEndpoint.trim().length() == 0 )
      return;

    EndpointsConfig endpoints = getConfig().getEndpoints();

    for( int c = 0; c < endpoints.sizeOfEndpointArray(); c++ )
    {
      if( endpoints.getEndpointArray( c ).equals( oldEndpoint ) )
      {
        endpoints.setEndpointArray( c, newEndpoint );
        notifyPropertyChanged( ENDPOINT_PROPERTY, oldEndpoint, newEndpoint );
        break;
      }
    }
  }

  public void removeEndpoint( String endpoint )
  {
    EndpointsConfig endpoints = getConfig().getEndpoints();

    for( int c = 0; c < endpoints.sizeOfEndpointArray(); c++ )
    {
      if( endpoints.getEndpointArray( c ).equals( endpoint ) )
      {
        endpoints.removeEndpoint( c );
        notifyPropertyChanged( ENDPOINT_PROPERTY, endpoint, null );
        break;
      }
    }
  }

  public void fireOperationAdded( Operation operation )
  {
    InterfaceListener[] a = interfaceListeners.toArray( new InterfaceListener[interfaceListeners.size()] );

    for( int c = 0; c < a.length; c++ )
    {
      a[c].operationAdded( operation );
    }
  }

  public void fireOperationUpdated( Operation operation )
  {
    InterfaceListener[] a = interfaceListeners.toArray( new InterfaceListener[interfaceListeners.size()] );

    for( int c = 0; c < a.length; c++ )
    {
      a[c].operationUpdated( operation );
    }
  }

  public void fireOperationRemoved( Operation operation )
  {
    InterfaceListener[] a = interfaceListeners.toArray( new InterfaceListener[interfaceListeners.size()] );

    for( int c = 0; c < a.length; c++ )
    {
      a[c].operationRemoved( operation );
    }
  }

  public void fireRequestAdded( Request request )
  {
    InterfaceListener[] a = interfaceListeners.toArray( new InterfaceListener[interfaceListeners.size()] );

    for( int c = 0; c < a.length; c++ )
    {
      a[c].requestAdded( request );
    }
  }

  public void fireRequestRemoved( Request request )
  {
    InterfaceListener[] a = interfaceListeners.toArray( new InterfaceListener[interfaceListeners.size()] );

    for( int c = 0; c < a.length; c++ )
    {
      a[c].requestRemoved( request );
    }
  }

  public void addInterfaceListener( InterfaceListener listener )
  {
    interfaceListeners.add( listener );
  }

  public void removeInterfaceListener( InterfaceListener listener )
  {
    interfaceListeners.remove( listener );
  }

  @Override
  public void release()
  {
    super.release();

    interfaceListeners.clear();
  }

  @SuppressWarnings( "unchecked" )
  public abstract AbstractDefinitionContext getDefinitionContext();

  /**
   * Return the URL for the current definition (ie a WSDL or WADL url)
   */

  public abstract String getDefinition();

  public abstract String getType();

  public abstract boolean isDefinitionShareble();

  public Operation[] getAllOperations()
  {
    return getOperationList().toArray( new Operation[getOperationCount()] );
  }
}
TOP

Related Classes of com.eviware.soapui.impl.support.AbstractInterface

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.