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