MockServiceTreeNode.java :  » Web-Services » soapui-1.7.5 » com » eviware » soapui » model » tree » nodes » Java Open Source

Java Open Source » Web Services » soapui 1.7.5 
soapui 1.7.5 » com » eviware » soapui » model » tree » nodes » MockServiceTreeNode.java
/*
 *  soapUI, copyright (C) 2004-2007 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.model.tree.nodes;

import java.util.ArrayList;
import java.util.List;

import com.eviware.soapui.model.mock.MockOperation;
import com.eviware.soapui.model.mock.MockResponse;
import com.eviware.soapui.model.mock.MockService;
import com.eviware.soapui.model.mock.MockServiceListener;
import com.eviware.soapui.model.tree.AbstractModelItemTreeNode;
import com.eviware.soapui.model.tree.SoapUITreeModel;
import com.eviware.soapui.model.tree.SoapUITreeNode;
import com.eviware.soapui.settings.UISettings;

/**
 * SoapUITreeNode for MockService implementations
 * 
 * @author Ole.Matzura
 */

public class MockServiceTreeNode extends AbstractModelItemTreeNode<MockService>
{
  private ReorderPropertyChangeListener propertyChangeListener = new ReorderPropertyChangeListener();
  private List<MockOperationTreeNode> mockOperationNodes = new ArrayList<MockOperationTreeNode>();
  private InternalMockServiceListener mockServiceListener;

  public MockServiceTreeNode(MockService mockService, SoapUITreeModel treeModel )
   {
      super( mockService, mockService.getProject(), treeModel );
      
      mockServiceListener = new InternalMockServiceListener();
    mockService.addMockServiceListener( mockServiceListener );
      
    for( int c = 0; c < mockService.getMockOperationCount(); c++ )
    {
      MockOperation mockOperation = mockService.getMockOperationAt( c );
      mockOperation.addPropertyChangeListener( MockService.NAME_PROPERTY, propertyChangeListener );
      mockOperationNodes.add( new MockOperationTreeNode( mockOperation, getTreeModel() ));
    }
    
    initOrdering( mockOperationNodes, UISettings.ORDER_MOCKOPERATION );
    
    getTreeModel().mapModelItems( mockOperationNodes );
   }
  
  public void release()
  {
    super.release();
    
    getModelItem().removeMockServiceListener( mockServiceListener );
    
    for( MockOperationTreeNode treeNode : mockOperationNodes )
    {
      treeNode.getModelItem().removePropertyChangeListener( propertyChangeListener );
      treeNode.release();
    }
  }
  
   public MockService getMockService()
   {
      return (MockService) getModelItem();
   }
   
   public int getChildCount()
  {
    return mockOperationNodes.size();
  }

  public int getIndexOfChild(Object child)
  {
    return mockOperationNodes.indexOf( child );
  }

  public SoapUITreeNode getChildNode(int index)
  {
    return mockOperationNodes.get( index );
  }

  private final class InternalMockServiceListener implements MockServiceListener
  {
    public void mockOperationAdded( MockOperation mockOperation )
    {
      MockOperationTreeNode mockOperationTreeNode = new MockOperationTreeNode( mockOperation, getTreeModel() );
      mockOperationNodes.add( mockOperationTreeNode);
      mockOperation.addPropertyChangeListener( propertyChangeListener );
      getTreeModel().notifyNodeInserted( mockOperationTreeNode );
    }

    public void mockOperationRemoved( MockOperation mockOperation )
    {
      SoapUITreeNode treeNode = getTreeModel().getTreeNode( mockOperation );
       if( mockOperationNodes.contains( treeNode ))
       {
         getTreeModel().notifyNodeRemoved( treeNode );
         mockOperation.removePropertyChangeListener( propertyChangeListener );
         mockOperationNodes.remove( treeNode );
       }
       else throw new RuntimeException( "Removing unkown mockOperation" );
    }

    public void mockResponseAdded( MockResponse mockResponse )
    {
       MockOperationTreeNode operationTreeNode = (MockOperationTreeNode) getTreeModel().getTreeNode( mockResponse.getMockOperation() );
         if( operationTreeNode != null )
            operationTreeNode.mockResponseAdded( mockResponse );    
         else
           throw new RuntimeException( "Adding mockResponse to unknwown MockOperation" );
     }

    public void mockResponseRemoved( MockResponse mockResponse )
    {
      MockOperationTreeNode operationTreeNode = (MockOperationTreeNode) getTreeModel().getTreeNode( mockResponse.getMockOperation() );
         if( operationTreeNode != null )
            operationTreeNode.mockResponseRemoved( mockResponse );    
         else
           throw new RuntimeException( "Removing mockResponse from unknown MockOperation" );
      
    }
  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.