1
2
3
4
5
6
7
8
9
10
11
12
13 package com.eviware.soapui.impl.wsdl.panels.request.components.editor.views.registry;
14
15 import java.util.ArrayList;
16 import java.util.Arrays;
17 import java.util.List;
18
19 import com.eviware.soapui.impl.wsdl.panels.request.components.editor.views.source.XmlSourceEditorFactory;
20
21 /***
22 * Registry of availabel XmlViews
23 *
24 * @author ole.matzura
25 */
26
27 public class XmlEditorViewRegistry
28 {
29 private static XmlEditorViewRegistry instance;
30 private List<XmlEditorViewFactory> factories = new ArrayList<XmlEditorViewFactory>();
31
32 public XmlEditorViewRegistry()
33 {
34 addFactory( new XmlSourceEditorFactory() );
35 }
36
37 public void addFactory( XmlEditorViewFactory factory )
38 {
39 factories.add( factory );
40 }
41
42 public void setFactory( String viewId, XmlEditorViewFactory factory )
43 {
44 for( int c = 0; c < factories.size(); c++ )
45 {
46 if( factories.get( c ).getViewId().equals( viewId ))
47 {
48 factories.set( c, factory );
49 }
50 }
51 }
52
53 public static final XmlEditorViewRegistry getInstance()
54 {
55 if( instance == null )
56 instance = new XmlEditorViewRegistry();
57
58 return instance;
59 }
60
61 public XmlEditorViewFactory [] getFactories()
62 {
63 return factories.toArray( new XmlEditorViewFactory[factories.size()] );
64 }
65
66 public XmlEditorViewFactory [] getFactoriesOfType( Class type )
67 {
68 List<XmlEditorViewFactory> result = new ArrayList<XmlEditorViewFactory>();
69 for( XmlEditorViewFactory factory : factories )
70 {
71 if( Arrays.asList( factory.getClass().getInterfaces() ).contains( type ))
72 result.add( factory );
73 }
74
75 return result.toArray( new XmlEditorViewFactory[result.size()] );
76 }
77 }