KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > eclipse > core > runtime > internal > adaptor > CachedManifest


1 /*******************************************************************************
2  * Copyright (c) 2003, 2006 IBM Corporation and others.
3  * All rights reserved. This program and the accompanying materials
4  * are made available under the terms of the Eclipse Public License v1.0
5  * which accompanies this distribution, and is available at
6  * http://www.eclipse.org/legal/epl-v10.html
7  *
8  * Contributors:
9  * IBM Corporation - initial API and implementation
10  *******************************************************************************/

11 package org.eclipse.core.runtime.internal.adaptor;
12
13 import java.util.Dictionary JavaDoc;
14 import java.util.Enumeration JavaDoc;
15 import org.eclipse.osgi.framework.adaptor.BundleData;
16 import org.eclipse.osgi.framework.adaptor.FrameworkAdaptor;
17 import org.eclipse.osgi.framework.internal.core.Constants;
18 import org.eclipse.osgi.framework.log.FrameworkLogEntry;
19 import org.eclipse.osgi.util.NLS;
20 import org.osgi.framework.*;
21
22 /**
23  * Internal class.
24  */

25 public class CachedManifest extends Dictionary JavaDoc {
26
27     private Dictionary JavaDoc manifest = null;
28     private EclipseStorageHook storageHook;
29
30     public CachedManifest(EclipseStorageHook storageHook) {
31         this.storageHook = storageHook;
32     }
33
34     public Dictionary JavaDoc getManifest() {
35         if (manifest == null)
36             try {
37                 manifest = storageHook.createCachedManifest(true);
38             } catch (BundleException e) {
39                 final String JavaDoc message = NLS.bind(EclipseAdaptorMsg.ECLIPSE_CACHEDMANIFEST_UNEXPECTED_EXCEPTION, storageHook.getBaseData().getLocation());
40                 FrameworkLogEntry entry = new FrameworkLogEntry(FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME, FrameworkLogEntry.ERROR, 0, message, 0, e, null);
41                 storageHook.getAdaptor().getFrameworkLog().log(entry);
42                 return null;
43             }
44         return manifest;
45     }
46
47     public int size() {
48         //TODO: getManifest may return null
49
return getManifest().size();
50     }
51
52     public boolean isEmpty() {
53         return size() == 0;
54     }
55
56     public Enumeration JavaDoc elements() {
57         //TODO: getManifest may return null
58
return getManifest().elements();
59     }
60
61     public Enumeration JavaDoc keys() {
62         //TODO: getManifest may return null
63
return getManifest().keys();
64     }
65
66     public Object JavaDoc get(Object JavaDoc key) {
67         if (manifest != null)
68             return manifest.get(key);
69         String JavaDoc keyString = (String JavaDoc) key;
70         if (Constants.BUNDLE_VERSION.equalsIgnoreCase(keyString)) {
71             Version result = storageHook.getBaseData().getVersion();
72             return result == null ? null : result.toString();
73         }
74         if (Constants.PLUGIN_CLASS.equalsIgnoreCase(keyString))
75             return storageHook.getPluginClass();
76         if (Constants.BUNDLE_SYMBOLICNAME.equalsIgnoreCase(keyString)) {
77             if ((storageHook.getBaseData().getType() & BundleData.TYPE_SINGLETON) == 0)
78                 return storageHook.getBaseData().getSymbolicName();
79             return storageHook.getBaseData().getSymbolicName() + ';' + Constants.SINGLETON_DIRECTIVE + ":=true"; //$NON-NLS-1$
80
}
81         if (Constants.BUDDY_LOADER.equalsIgnoreCase(keyString))
82             return storageHook.getBuddyList();
83         if (Constants.REGISTERED_POLICY.equalsIgnoreCase(keyString))
84             return storageHook.getRegisteredBuddyList();
85         if (Constants.BUNDLE_ACTIVATOR.equalsIgnoreCase(keyString))
86             return storageHook.getBaseData().getActivator();
87         if (Constants.ECLIPSE_LAZYSTART.equals(keyString) || Constants.ECLIPSE_AUTOSTART.equals(keyString)) {
88             if (!storageHook.isAutoStartable())
89                 return null;
90             if (storageHook.getLazyStartExcludes() == null)
91                 return Boolean.TRUE.toString();
92             StringBuffer JavaDoc result = new StringBuffer JavaDoc(Boolean.TRUE.toString());
93             result.append(";").append(Constants.ECLIPSE_LAZYSTART_EXCEPTIONS).append("=\""); //$NON-NLS-1$ //$NON-NLS-2$
94
String JavaDoc[] exceptions = storageHook.getLazyStartExcludes();
95             for (int i = 0; i < exceptions.length; i++) {
96                 if (i > 0)
97                     result.append(","); //$NON-NLS-1$
98
result.append(exceptions[i]);
99             }
100             result.append("\""); //$NON-NLS-1$
101
return result.toString();
102         }
103         Dictionary JavaDoc result = getManifest();
104         return result == null ? null : result.get(key);
105     }
106
107     public Object JavaDoc remove(Object JavaDoc key) {
108         //TODO: getManifest may return null
109
return getManifest().remove(key);
110     }
111
112     public Object JavaDoc put(Object JavaDoc key, Object JavaDoc value) {
113         //TODO: getManifest may return null
114
return getManifest().put(key, value);
115     }
116
117 }
118
Popular Tags