KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > sslexplorer > vfs > VFSProviderManager


1 /*
2  * SSL-Explorer
3  *
4  * Copyright (C) 2003-2006 3SP LTD. All Rights Reserved
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version 2 of
9  * the License, or (at your option) any later version.
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public
16  * License along with this program; if not, write to the Free Software
17  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18  */

19             
20 package com.sslexplorer.vfs;
21
22 import java.util.ArrayList JavaDoc;
23 import java.util.Collection JavaDoc;
24 import java.util.Collections JavaDoc;
25 import java.util.HashMap JavaDoc;
26 import java.util.List JavaDoc;
27 import java.util.Map JavaDoc;
28 import java.util.TreeMap JavaDoc;
29
30 import com.sslexplorer.security.SessionInfo;
31 import com.sslexplorer.vfs.store.apps.ApplicationStore;
32 import com.sslexplorer.vfs.store.downloads.TempStore;
33 import com.sslexplorer.vfs.store.site.SiteStore;
34 import com.sslexplorer.vfs.utils.URI;
35
36 /**
37  * Manages {@link VFSStore} implementations. The core and plugins
38  * register new store implementations here.
39  *
40  * @author Brett Smith <brett@3sp.com>
41  */

42 public class VFSProviderManager {
43     
44     // Private instance variables
45

46     private Map JavaDoc<String JavaDoc, VFSProvider> providers;
47     private static VFSProviderManager instance;
48
49     /*
50      * Prevent instantiation
51      */

52     private VFSProviderManager() {
53         providers = new HashMap JavaDoc<String JavaDoc, VFSProvider>();
54         registerProvider(new DefaultVFSProvider("apps", ApplicationStore.class, "vfs"));
55         registerProvider(new DefaultVFSProvider("site", SiteStore.class, "vfs"));
56         registerProvider(new DefaultVFSProvider("temp", TempStore.class, "vfs"));
57     }
58     
59     /**
60      * Get an instance of the store manager, lazily creating it. The
61      * default store implementations will also be registered upon
62      * creation.
63      *
64      * @return VFSStoreManager
65      */

66     public static VFSProviderManager getInstance() {
67         if(instance == null) {
68             instance = new VFSProviderManager();
69         }
70         return instance;
71     }
72     
73     /**
74      * Get a provider given its scheme name. <code>null</code> will
75      * be returned if no such store exists.
76      *
77      * @param scheme
78      * @return provider
79      */

80     public VFSProvider getProvider(String JavaDoc scheme) {
81         VFSProvider provider = providers.get(scheme);
82         if(provider == null) {
83             for(VFSProvider p : providers.values()) {
84                 if(p.willHandle(scheme)) {
85                     return p;
86                 }
87             }
88         }
89         return provider;
90     }
91     
92     /**
93      * Register a provider.
94      *
95      * @param provider provider
96      */

97     public void registerProvider(VFSProvider provider) {
98         providers.put(provider.getScheme(), provider);
99     }
100     
101     /**
102      * @param repository
103      * @return Map<String,VFSStore>
104      * @throws InstantiationException
105      * @throws IllegalAccessException
106      */

107     public Map JavaDoc<String JavaDoc,VFSStore> createStores(VFSRepository repository) throws InstantiationException JavaDoc, IllegalAccessException JavaDoc {
108         Map JavaDoc<String JavaDoc,VFSStore> stores = new TreeMap JavaDoc<String JavaDoc,VFSStore>();
109         for(VFSProvider provider : providers.values()) {
110             VFSStore store = (VFSStore)(provider.getStoreClass()).newInstance();
111             store.init(repository, provider);
112             stores.put(store.getName(), store);
113         }
114         return stores;
115     }
116
117     /**
118      * Deregister a provider given its scheme.,
119      *
120      * @param scheme scheme
121      */

122     public void deregisterProvider(String JavaDoc scheme) {
123         providers.remove(scheme);
124     }
125
126     /**
127      * Get all providers.
128      *
129      * @return providers
130      */

131     public Collection JavaDoc<VFSProvider> getProviders() {
132         List JavaDoc<VFSProvider> l = new ArrayList JavaDoc<VFSProvider>(providers.values());
133         Collections.sort(l);
134         return l;
135     }
136 }
137
Popular Tags