View Javadoc

    1   /*
    2    *  soapUI, copyright (C) 2004-2007 eviware.com
    3    *
    4    *  soapUI is free software; you can redistribute it and/or modify it under the
    5    *  terms of version 2.1 of the GNU Lesser General Public License as published by
    6    *  the Free Software Foundation.
    7    *
    8    *  soapUI is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
    9    *  even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    10   *  See the GNU Lesser General Public License for more details at gnu.org.
    11   */
    12
    13  package com.eviware.soapui.impl.wsdl;
    14
    15  import java.util.Collection;
    16
    17  import javax.swing.ImageIcon;
    18
    19  import com.eviware.soapui.SoapUI;
    20  import com.eviware.soapui.config.ModelItemConfig;
    21  import com.eviware.soapui.impl.settings.XmlBeansSettingsImpl;
    22  import com.eviware.soapui.model.ModelItem;
    23  import com.eviware.soapui.model.settings.Settings;
    24  import com.eviware.soapui.model.support.AbstractModelItem;
    25  import com.eviware.soapui.support.UISupport;
    26
    27  /***
    28   * Abstract base class for WSDL-implementation classes
    29   *
    30   * @author Ole.Matzura
    31   */
    32
    33  public abstract class AbstractWsdlModelItem<T extends ModelItemConfig> extends AbstractModelItem
    34  {
    35  	private XmlBeansSettingsImpl settings;
    36  	private T config;
    37  	private ImageIcon icon;
    38  	private final ModelItem parent;
    39
    40  	protected AbstractWsdlModelItem( T config, ModelItem parent, String icon )
    41  	{
    42  		this.parent = parent;
    43  		if( config != null )
    44  			setConfig( config );
    45
    46  		if( icon != null )
    47  			this.icon = UISupport.createImageIcon(icon);
    48  	}
    49
    50     public ModelItem getParent()
    51  	{
    52  		return parent;
    53  	}
    54
    55  	public ImageIcon getIcon()
    56  	{
    57  		return icon;
    58  	}
    59
    60  	public void setIcon(ImageIcon icon)
    61  	{
    62  		if( icon == this.icon )
    63  			return;
    64
    65  		ImageIcon oldIcon = this.icon;
    66  		this.icon = icon;
    67  		notifyPropertyChanged( ICON_PROPERTY, oldIcon, icon );
    68  	}
    69
    70  	public String getDescription()
    71     {
    72        String description = config.getDescription();
    73  		return description ==  null || description.trim().length() == 0 ? null : description;
    74     }
    75
    76     public void setDescription(String description)
    77     {
    78        String old = getDescription();
    79        config.setDescription( description );
    80        notifyPropertyChanged( DESCRIPTION_PROPERTY, old, description );
    81     }
    82
    83     public String getName()
    84     {
    85        return config.getName();
    86     }
    87
    88     public void setName(String name)
    89     {
    90        String old = getName();
    91        config.setName( name );
    92        notifyPropertyChanged( NAME_PROPERTY, old, name );
    93     }
    94
    95  	public Settings getSettings()
    96  	{
    97  		return settings;
    98  	}
    99
    100 	final public T getConfig()
    101 	{
    102 		return config;
    103 	}
    104
    105 	public void setConfig( T config )
    106 	{
    107 		this.config = config;
    108
    109 		if( settings != null )
    110 			settings.release();
    111
    112 		if( !config.isSetSettings() )
    113 			config.addNewSettings();
    114
    115 		settings = new XmlBeansSettingsImpl( this, parent == null ? SoapUI.getSettings() : parent.getSettings(), this.config.getSettings() );
    116 	}
    117
    118 	protected void setSettings( XmlBeansSettingsImpl settings )
    119 	{
    120 		if( this.settings != null )
    121 			this.settings.release();
    122
    123 		this.settings = settings;
    124 	}
    125
    126 	public AbstractWsdlModelItem getWsdlModelItemByName( Collection<? extends AbstractWsdlModelItem> items, String name )
    127 	{
    128 		for( AbstractWsdlModelItem item : items )
    129 		{
    130 			if( item.getName().equals( name ))
    131 				return item;
    132 		}
    133
    134 		return null;
    135 	}
    136
    137 	public void release()
    138 	{
    139 		if( settings != null )
    140 		{
    141 			settings.release();
    142 		}
    143 	}
    144
    145 	public void onSave()
    146 	{}
    147 }