Package com.eviware.soapui.impl.wsdl.support.wss.entries

Source Code of com.eviware.soapui.impl.wsdl.support.wss.entries.WssEntryBase$KeyAliasComboBoxModel

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

import java.awt.Component;
import java.beans.PropertyChangeListener;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.Vector;

import javax.swing.AbstractListModel;
import javax.swing.ComboBoxModel;
import javax.swing.DefaultListCellRenderer;
import javax.swing.JComponent;
import javax.swing.JList;

import org.apache.ws.security.WSEncryptionPart;

import com.eviware.soapui.config.WSSEntryConfig;
import com.eviware.soapui.impl.wsdl.support.wss.OutgoingWss;
import com.eviware.soapui.impl.wsdl.support.wss.WssContainer;
import com.eviware.soapui.impl.wsdl.support.wss.WssCrypto;
import com.eviware.soapui.impl.wsdl.support.wss.WssEntry;
import com.eviware.soapui.model.propertyexpansion.PropertyExpansion;
import com.eviware.soapui.model.propertyexpansion.PropertyExpansionContainer;
import com.eviware.soapui.model.propertyexpansion.PropertyExpansionsResult;
import com.eviware.soapui.support.StringUtils;
import com.eviware.soapui.support.types.StringList;
import com.eviware.soapui.support.types.StringToStringMap;
import com.eviware.soapui.support.xml.XmlObjectConfigurationBuilder;
import com.eviware.soapui.support.xml.XmlObjectConfigurationReader;

public abstract class WssEntryBase implements WssEntry, PropertyExpansionContainer
{
  private WSSEntryConfig config;
  private OutgoingWss outgoingWss;
  private JComponent configComponent;
  private String label;

  public void init( WSSEntryConfig config, OutgoingWss outgoingWss, String label )
  {
    this.config = config;
    this.outgoingWss = outgoingWss;
    this.label = label;

    if( config.getConfiguration() == null )
      config.addNewConfiguration();

    load( new XmlObjectConfigurationReader( config.getConfiguration() ) );
  }

  public OutgoingWss getOutgoingWss()
  {
    return outgoingWss;
  }

  public String getPassword()
  {
    String password = config.getPassword();
    if( StringUtils.isNullOrEmpty( password ) )
      password = outgoingWss.getPassword();

    return password;
  }

  public String getUsername()
  {
    String username = config.getUsername();
    if( StringUtils.isNullOrEmpty( username ) )
      username = outgoingWss.getUsername();

    return username;
  }

  public void setPassword( String arg0 )
  {
    config.setPassword( arg0 );
  }

  public void setUsername( String arg0 )
  {
    config.setUsername( arg0 );
  }

  public JComponent getConfigurationPanel()
  {
    if( configComponent == null )
      configComponent = buildUI();

    return configComponent;
  }

  public String getLabel()
  {
    return label;
  }

  protected abstract JComponent buildUI();

  protected abstract void load( XmlObjectConfigurationReader reader );

  public void setConfig( WSSEntryConfig config )
  {
    this.config = config;
  }

  public void saveConfig()
  {
    XmlObjectConfigurationBuilder builder = new XmlObjectConfigurationBuilder();
    save( builder );
    config.getConfiguration().set( builder.finish() );
  }

  protected abstract void save( XmlObjectConfigurationBuilder builder );

  public WssContainer getWssContainer()
  {
    return outgoingWss.getWssContainer();
  }

  public void addPropertyChangeListener( PropertyChangeListener listener )
  {
  }

  public void removePropertyChangeListener( PropertyChangeListener listener )
  {
  }

  public PropertyExpansion[] getPropertyExpansions()
  {
    PropertyExpansionsResult result = new PropertyExpansionsResult( getWssContainer().getModelItem(), this );

    addPropertyExpansions( result );

    return result.toArray();
  }

  protected void addPropertyExpansions( PropertyExpansionsResult result )
  {
    if( StringUtils.hasContent( config.getUsername() ) )
      result.extractAndAddAll( "username" );

    if( StringUtils.hasContent( config.getPassword() ) )
      result.extractAndAddAll( "password" );
  }

  public void udpateConfig( WSSEntryConfig config )
  {
    this.config = config;
  }

  @Override
  public String toString()
  {
    return getLabel();
  }

  protected List<StringToStringMap> readParts( XmlObjectConfigurationReader reader, String parameterName )
  {
    List<StringToStringMap> result = new ArrayList<StringToStringMap>();
    String[] parts = reader.readStrings( parameterName );
    if( parts != null && parts.length > 0 )
    {
      for( String part : parts )
      {
        result.add( StringToStringMap.fromXml( part ) );
      }
    }

    return result;
  }

  protected Vector<WSEncryptionPart> createWSParts( List<StringToStringMap> parts )
  {
    Vector<WSEncryptionPart> result = new Vector<WSEncryptionPart>();

    for( StringToStringMap map : parts )
    {
      if( map.hasValue( "id" ) )
      {
        result.add( new WSEncryptionPart( map.get( "id" ), map.get( "enc" ) ) );
      }
      else
      {
        String ns = map.get( "namespace" );
        if( ns == null )
          ns = "";

        String name = map.get( "name" );
        if( StringUtils.hasContent( name ) )
        {
          result.add( new WSEncryptionPart( name, ns, map.get( "enc" ) ) );
        }
      }
    }

    return result;
  }

  protected void saveParts( XmlObjectConfigurationBuilder builder, List<StringToStringMap> parts, String string )
  {
    for( StringToStringMap part : parts )
    {
      builder.add( string, part.toXml() );
    }
  }

  protected class KeyIdentifierTypeRenderer extends DefaultListCellRenderer
  {
    @Override
    public Component getListCellRendererComponent( JList list, Object value, int index, boolean isSelected,
        boolean cellHasFocus )
    {
      Component result = super.getListCellRendererComponent( list, value, index, isSelected, cellHasFocus );

      if( value.equals( 0 ) )
        setText( "Issuer Name and Serial Number" );
      else if( value.equals( 1 ) )
        setText( "Binary Security Token" );
      // else if( value.equals( 2 ) )
      // setText( "Issuer Name and Serial Number" );
      else if( value.equals( 3 ) )
        setText( "X509 Certificate" );
      else if( value.equals( 4 ) )
        setText( "Subject Key Identifier" );
      else if( value.equals( 5 ) )
        setText( "Embedded KeyInfo" );
      else if( value.equals( 6 ) )
        setText( "Embed SecurityToken Reference" );
      else if( value.equals( 7 ) )
        setText( "UsernameToken Signature" );
      else if( value.equals( 8 ) )
        setText( "Thumbprint SHA1 Identifier" );
      else if( value.equals( 9 ) )
        setText( "Custom Reference" );

      return result;
    }
  }

  protected class KeyAliasComboBoxModel extends AbstractListModel implements ComboBoxModel
  {
    private KeyStore keyStore;
    private Object alias;
    private StringList aliases = new StringList();

    public KeyAliasComboBoxModel( WssCrypto crypto )
    {
      update( crypto );
    }

    void update( WssCrypto crypto )
    {
      keyStore = crypto == null || crypto.getCrypto() == null ? null : crypto.getCrypto().getKeyStore();

      if( keyStore != null )
      {
        if( !aliases.isEmpty() )
        {
          int sz = aliases.size();
          aliases.clear();
          fireIntervalRemoved( this, 0, sz - 1 );
        }

        try
        {
          for( Enumeration e = keyStore.aliases(); e.hasMoreElements(); )
          {
            aliases.add( e.nextElement().toString() );
          }

          fireIntervalAdded( this, 0, aliases.size() - 1 );
        }
        catch( KeyStoreException e )
        {
          e.printStackTrace();
        }
      }
    }

    public Object getSelectedItem()
    {
      return alias;
    }

    public void setSelectedItem( Object anItem )
    {
      this.alias = anItem;
    }

    public Object getElementAt( int index )
    {
      return aliases.get( index );
    }

    public int getSize()
    {
      return aliases.size();
    }
  }

  public void release()
  {
  }
}
TOP

Related Classes of com.eviware.soapui.impl.wsdl.support.wss.entries.WssEntryBase$KeyAliasComboBoxModel

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.
ew');