View Javadoc

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