Skip to main content

This CGIT instance is deprecated, and repositories have been moved to Gitlab or Github. See the repository descriptions for specific locations.

summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.wst.xml.core/src-contentmodel/org/eclipse/wst/xml/core/internal/contentmodel/modelqueryimpl/GlobalCMDocumentCache.java')
-rw-r--r--bundles/org.eclipse.wst.xml.core/src-contentmodel/org/eclipse/wst/xml/core/internal/contentmodel/modelqueryimpl/GlobalCMDocumentCache.java121
1 files changed, 0 insertions, 121 deletions
diff --git a/bundles/org.eclipse.wst.xml.core/src-contentmodel/org/eclipse/wst/xml/core/internal/contentmodel/modelqueryimpl/GlobalCMDocumentCache.java b/bundles/org.eclipse.wst.xml.core/src-contentmodel/org/eclipse/wst/xml/core/internal/contentmodel/modelqueryimpl/GlobalCMDocumentCache.java
deleted file mode 100644
index ca981f15dd..0000000000
--- a/bundles/org.eclipse.wst.xml.core/src-contentmodel/org/eclipse/wst/xml/core/internal/contentmodel/modelqueryimpl/GlobalCMDocumentCache.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *
- *******************************************************************************/
-package org.eclipse.wst.xml.core.internal.contentmodel.modelqueryimpl;
-
-import java.lang.ref.SoftReference;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.wst.sse.core.internal.util.AbstractMemoryListener;
-import org.eclipse.wst.xml.core.internal.Logger;
-import org.eclipse.wst.xml.core.internal.XMLCorePlugin;
-import org.eclipse.wst.xml.core.internal.catalog.provisional.ICatalog;
-import org.eclipse.wst.xml.core.internal.catalog.provisional.ICatalogEntry;
-import org.eclipse.wst.xml.core.internal.catalog.provisional.INextCatalog;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMDocument;
-import org.osgi.service.event.Event;
-import org.osgi.service.event.EventConstants;
-
-public class GlobalCMDocumentCache {
-
- private static GlobalCMDocumentCache globalDocumentCache = new GlobalCMDocumentCache();
- private Map systemCatalogEntries = getSystemCatalogEntries();
- private MemoryListener memoryListener;
- private final static String CATEGORY = "CMDocumentGlobalCache"; //$NON-NLS-1$
-
- protected GlobalCMDocumentCache() {
- Logger.trace(CATEGORY, "Cache initialized"); //$NON-NLS-1$
- memoryListener = new MemoryListener();
- memoryListener.connect();
- }
-
- public static GlobalCMDocumentCache getInstance() {
- return globalDocumentCache;
- }
-
- public synchronized GlobalCacheQueryResponse getCMDocument(String grammarURI) {
- //Logger.trace(CATEGORY, "Query for: " + grammarURI); //$NON-NLS-1$
- Object systemCatalogEntry = systemCatalogEntries.get(grammarURI);
- if(systemCatalogEntry != null) {
- //Logger.trace(CATEGORY, "Document " + grammarURI + " is in system catalog"); //$NON-NLS-1$ //$NON-NLS-2$
- Object object = ((SoftReference)systemCatalogEntry).get();
- if(object != null) {
- //Logger.trace(CATEGORY, "Document " + grammarURI + "is in cache, returning cached version"); //$NON-NLS-1$ //$NON-NLS-2$
- return new GlobalCacheQueryResponse((CMDocument)object, true);
- } else {
- //Logger.trace(CATEGORY, "Document " + grammarURI + " is not in cache"); //$NON-NLS-1$ //$NON-NLS-2$
- return new GlobalCacheQueryResponse(null, true);
- }
- }
- //Logger.trace(CATEGORY, "Document " + grammarURI + " is not in system catalog, not cached"); //$NON-NLS-1$ //$NON-NLS-2$
- return new GlobalCacheQueryResponse(null, false);
- }
-
- public synchronized void putCMDocument(String grammarURI, CMDocument cmDocument) {
- //Logger.trace(CATEGORY, "Document: " + grammarURI + " added to global cache"); //$NON-NLS-1$ //$NON-NLS-2$
- systemCatalogEntries.put(grammarURI, new SoftReference(cmDocument));
- }
-
- private synchronized static HashMap getSystemCatalogEntries(){
- HashMap systemCatalogURIs = new HashMap();
- ICatalog systemCatalog = null;
- ICatalog defaultCatalog = XMLCorePlugin.getDefault().getDefaultXMLCatalog();
- INextCatalog[] nextCatalogs = defaultCatalog.getNextCatalogs();
- for (int i = 0; i < nextCatalogs.length; i++) {
- INextCatalog catalog = nextCatalogs[i];
- ICatalog referencedCatalog = catalog.getReferencedCatalog();
- if (referencedCatalog != null) {
- if (XMLCorePlugin.SYSTEM_CATALOG_ID.equals(referencedCatalog.getId())) {
- systemCatalog = referencedCatalog;
- }
- }
- }
- if(systemCatalog != null) {
- ICatalogEntry[] catalogEntries = systemCatalog.getCatalogEntries();
- for (int i = 0; i < catalogEntries.length; i++) {
- systemCatalogURIs.put(catalogEntries[i].getURI(), new SoftReference(null));
- }
- }
- return systemCatalogURIs;
- }
-
- public class GlobalCacheQueryResponse {
-
- private CMDocument cachedDocument;
- private boolean documentCacheable;
-
- public GlobalCacheQueryResponse(CMDocument cachedCMDocument, boolean documentCacheable) {
- this.cachedDocument = cachedCMDocument;
- this.documentCacheable = documentCacheable;
- }
-
- public CMDocument getCachedCMDocument() {
- return cachedDocument;
- }
-
- public boolean isDocumentCacheable() {
- return documentCacheable;
- }
-
- }
-
- private class MemoryListener extends AbstractMemoryListener {
- protected void handleMemoryEvent(Event event) {
- Object topic = event.getProperty(EventConstants.EVENT_TOPIC);
- if(SEV_SERIOUS.equals(topic) || SEV_CRITICAL.equals(topic)) {
- Logger.trace(CATEGORY, "Serious severity low memory event received, flushing global CMDocument cache."); //$NON-NLS-1$
- systemCatalogEntries = getSystemCatalogEntries();
- }
- }
- }
-
-}

Back to the top