View Javadoc

1   /*
2    *  soapUI, copyright (C) 2004-2008 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.model.util;
14  
15  import com.eviware.soapui.impl.WorkspaceImpl;
16  import com.eviware.soapui.impl.WorkspaceImplPanelBuilder;
17  import com.eviware.soapui.impl.rest.RestRequest;
18  import com.eviware.soapui.impl.rest.RestResource;
19  import com.eviware.soapui.impl.rest.RestService;
20  import com.eviware.soapui.impl.rest.panels.request.RestRequestPanelBuilder;
21  import com.eviware.soapui.impl.rest.panels.resource.RestResourcePanelBuilder;
22  import com.eviware.soapui.impl.rest.panels.service.RestServicePanelBuilder;
23  import com.eviware.soapui.impl.wsdl.*;
24  import com.eviware.soapui.impl.wsdl.loadtest.WsdlLoadTest;
25  import com.eviware.soapui.impl.wsdl.mock.WsdlMockOperation;
26  import com.eviware.soapui.impl.wsdl.mock.WsdlMockResponse;
27  import com.eviware.soapui.impl.wsdl.mock.WsdlMockService;
28  import com.eviware.soapui.impl.wsdl.panels.iface.WsdlInterfacePanelBuilder;
29  import com.eviware.soapui.impl.wsdl.panels.loadtest.WsdlLoadTestPanelBuilder;
30  import com.eviware.soapui.impl.wsdl.panels.mock.WsdlMockServicePanelBuilder;
31  import com.eviware.soapui.impl.wsdl.panels.mockoperation.WsdlMockOperationPanelBuilder;
32  import com.eviware.soapui.impl.wsdl.panels.mockoperation.WsdlMockResponsePanelBuilder;
33  import com.eviware.soapui.impl.wsdl.panels.operation.WsdlOperationPanelBuilder;
34  import com.eviware.soapui.impl.wsdl.panels.project.WsdlProjectPanelBuilder;
35  import com.eviware.soapui.impl.wsdl.panels.request.WsdlRequestPanelBuilder;
36  import com.eviware.soapui.impl.wsdl.panels.testcase.WsdlTestCasePanelBuilder;
37  import com.eviware.soapui.impl.wsdl.panels.teststeps.*;
38  import com.eviware.soapui.impl.wsdl.panels.testsuite.WsdlTestSuitePanelBuilder;
39  import com.eviware.soapui.impl.wsdl.testcase.WsdlTestCase;
40  import com.eviware.soapui.impl.wsdl.teststeps.*;
41  import com.eviware.soapui.model.ModelItem;
42  import com.eviware.soapui.model.PanelBuilder;
43  
44  import java.util.HashMap;
45  import java.util.Map;
46  
47  /***
48   * Registry of PanelBuilders
49   * 
50   * @author ole.matzura
51   */
52  
53  public class PanelBuilderRegistry
54  {
55  	private static Map<Class<? extends ModelItem>, PanelBuilder<? extends ModelItem> > builders = 
56  		new HashMap<Class<? extends ModelItem>,PanelBuilder<? extends ModelItem> >();
57  	
58  	@SuppressWarnings("unchecked")
59  	public static <T extends ModelItem> PanelBuilder<T> getPanelBuilder( T modelItem )
60  	{
61  		return ( PanelBuilder<T> ) builders.get( modelItem.getClass() );
62  	}
63  	
64  	public static <T extends ModelItem> void register( Class<T> modelItemClass, 
65  				PanelBuilder<T> panelBuilder )
66  	{
67  		builders.put( modelItemClass, panelBuilder );
68  	}
69  	
70  	static
71  	{
72  		register( WorkspaceImpl.class, new WorkspaceImplPanelBuilder() );
73  		register( WsdlProject.class, new WsdlProjectPanelBuilder() );
74  		register( WsdlInterface.class, new WsdlInterfacePanelBuilder() );
75  		register( RestService.class, new RestServicePanelBuilder() );
76  		register( WsdlOperation.class, new WsdlOperationPanelBuilder() );
77  		register( RestResource.class, new RestResourcePanelBuilder() );
78  		register( WsdlRequest.class, new WsdlRequestPanelBuilder() );
79  		register( RestRequest.class, new RestRequestPanelBuilder() );
80  		register( WsdlTestSuite.class, new WsdlTestSuitePanelBuilder() );
81  		register( WsdlTestCase.class, new WsdlTestCasePanelBuilder() );
82  		register( WsdlLoadTest.class, new WsdlLoadTestPanelBuilder() );
83  		register( WsdlMockService.class, new WsdlMockServicePanelBuilder() );
84  		register( WsdlMockOperation.class, new WsdlMockOperationPanelBuilder() );
85  		register( WsdlMockResponse.class, new WsdlMockResponsePanelBuilder() );
86  		register( WsdlGotoTestStep.class, new GotoStepPanelBuilder() );
87  		register( WsdlDelayTestStep.class, new DelayTestStepPanelBuilder() );
88        register( RestTestRequestStep.class, new RestTestRequestPanelBuilder() );
89        register( HttpTestRequestStep.class, new HttpTestRequestPanelBuilder() );
90  		register( WsdlTestRequestStep.class, new WsdlTestRequestPanelBuilder() );
91  		register( WsdlPropertiesTestStep.class, new PropertiesStepPanelBuilder() );
92  		register( WsdlGroovyScriptTestStep.class, new GroovyScriptStepPanelBuilder() );
93  		register( PropertyTransfersTestStep.class, new PropertyTransfersTestStepPanelBuilder() );
94  		register( WsdlRunTestCaseTestStep.class, new WsdlRunTestCaseTestStepPanelBuilder() );
95  		register( WsdlAsyncResponseTestStep.class, new AsyncResponseStepPanelBuilder() );
96  	}
97  }