Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/MetaDataModelManager.java')
-rw-r--r--jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/MetaDataModelManager.java254
1 files changed, 0 insertions, 254 deletions
diff --git a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/MetaDataModelManager.java b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/MetaDataModelManager.java
deleted file mode 100644
index 15685528b..000000000
--- a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/MetaDataModelManager.java
+++ /dev/null
@@ -1,254 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle Corporation.
- * 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:
- * Oracle - initial API and implementation
- *
- ********************************************************************************/
-package org.eclipse.jst.jsf.common.metadata.internal;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResourceChangeEvent;
-import org.eclipse.core.resources.IResourceChangeListener;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.ISafeRunnable;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.QualifiedName;
-import org.eclipse.jface.util.SafeRunnable;
-import org.eclipse.jst.jsf.common.JSFCommonPlugin;
-import org.eclipse.jst.jsf.common.metadata.Model;
-import org.eclipse.jst.jsf.common.metadata.query.ITaglibDomainMetaDataModelContext;
-
-/**
- * Singleton instance for each IProject used to manage all standard metdata models for that project.
- *
- * Manager is responsible for loading and caching MetaDataModels. Models are keyed by URI.
- *
- * The manager listens for project closing resource events so that the resources can be freed up.
- */
-public class MetaDataModelManager implements IResourceChangeListener{
- /**
- * Key that is used for the IProject instance's session property that
- * holds a MetaDataModelManager instance. Each project will have it's own instance of a model manager.
- */
- public static final QualifiedName KEY_SESSIONPROPERTY =
- new QualifiedName(null, "MetaDataModelManager"); //$NON-NLS-1$ FIX ME
-
- private static MetaDataModelManager SHARED_INSTANCE;
- private ModelMap models;
- private IProject project;
-
- /**
- * @return instance that is project agnostic. * may get removed *
- */
- public synchronized static MetaDataModelManager getSharedInstance(){
- if (SHARED_INSTANCE == null) {
- SHARED_INSTANCE = new MetaDataModelManager(null);
- }
- return SHARED_INSTANCE;
- }
-
- /**
- * @param project
- * @return instance of the model manager for this project. Shouldn't, but may, return null.
- */
- public synchronized static MetaDataModelManager getInstance(IProject project){
- MetaDataModelManager repo = null;
- repo = getFromSessionProperty(project);
- if (repo == null) {
- repo = new MetaDataModelManager(project);
- ResourcesPlugin.getWorkspace().addResourceChangeListener(repo, IResourceChangeEvent.PRE_CLOSE);
- }
- return repo;
- }
- private MetaDataModelManager(IProject project) {
- this.project = project;
- init();
- }
-
- /**
- * @param project
- * @return MetaDataModelManager instance for the project
- */
- protected static MetaDataModelManager getFromSessionProperty(IProject project) {
- MetaDataModelManager repo = null;
- try {
- Object obj = project.getSessionProperty(KEY_SESSIONPROPERTY);
- if (obj != null && obj instanceof MetaDataModelManager) {
- repo = (MetaDataModelManager)obj;
- }
- } catch(CoreException ce) {
- JSFCommonPlugin.log(IStatus.ERROR, "Internal Error: Unable to recover MetaDataModelManager for: "+project.getName(), ce); //$NON-NLS-1$
- }
- return repo;
- }
-
- /**
- * Sets this MetaDataModelManager instance as a session property of its
- * IProject instance.
- */
- protected void setAsSessionProperty() {
- if (project != null) {//&& project.isAccessible()) {
- try {
- project.setSessionProperty(KEY_SESSIONPROPERTY, this);
- } catch(CoreException ce) {
- JSFCommonPlugin.log(IStatus.ERROR, "Internal Error: Unable to store MetaDataModelManager for: "+project.getName(), ce); //$NON-NLS-1$ }
- }
- }
- }
-
- /**
- * Releases a project's MetaDataModelManager instance by removing from project session property
- * @param aProject
- */
- protected void removeAsSessionProperty(IProject aProject){
- try {
- aProject.setSessionProperty(KEY_SESSIONPROPERTY, null);
- } catch (CoreException e) {
- JSFCommonPlugin.log(e, "Error removing session property"); //$NON-NLS-1$
- }
- }
-
- private synchronized void init() {
- models = new ModelMap();
- setAsSessionProperty();
- }
-
-
- /**
- * Will locate the cached MetaDataModel. Sets the model context in the model.
- * @param modelContext
- * @return the MetaDataModel for the given ITaglibDomainMetaDataModelContext
- */
- public synchronized MetaDataModel getModel(final ITaglibDomainMetaDataModelContext modelContext){
- ModelKeyDescriptor modelKeyDescriptor = StandardModelFactory.getInstance().createModelKeyDescriptor(modelContext);
- MetaDataModel model = models.get(modelKeyDescriptor);
- if (model == null || project == null){
-// long in = System.currentTimeMillis();
- model = loadMetadata(modelKeyDescriptor);
-// System.out.println("Time to load "+modelContext.getURI()+": "+String.valueOf(System.currentTimeMillis() - in));
- }
- else if (model.needsRefresh()){
- try {
- model.reload();
- } catch (ModelNotSetException e) {
- //simply load it - should not get here
- model = loadMetadata(modelKeyDescriptor);
- }
- }
- if (model != null && model.getRoot() != null)
- ((Model)model.getRoot()).setCurrentModelContext(modelKeyDescriptor);
-
- return model;
- }
-
- private void addModel(MetaDataModel model) {
-
- if (model != null)
- models.put(model.getModelKey(), model);
- }
-
-
- /* (non-Javadoc)
- * @see org.eclipse.core.resources.IResourceChangeListener#resourceChanged(org.eclipse.core.resources.IResourceChangeEvent)
- */
- public void resourceChanged(IResourceChangeEvent event) {
- if (event.getType() == IResourceChangeEvent.PRE_CLOSE){
- //a project is closing - release and cleanup
- final IProject aProject = (IProject)event.getResource();
- if (aProject == this.project){
- SafeRunnable.run(new ISafeRunnable(){
-
- public void handleException(Throwable exception) {
- // FIXME: what to do here?
-
- }
-
- public void run() throws Exception {
- for (Iterator it=models.getModels().iterator();it.hasNext();){
- MetaDataModel model = (MetaDataModel)it.next();
- models.remove(model);
- model.cleanup();
- }
- removeAsSessionProperty(project);
- }
- });
- }
- }
-
- }
-
- private synchronized MetaDataModel loadMetadata(ModelKeyDescriptor modelKeyDescriptor){
- IDomainLoadingStrategy strategy = DomainLoadingStrategyRegistry.getInstance().getLoadingStrategy(modelKeyDescriptor.getDomain());;
- if (strategy == null){
- JSFCommonPlugin.log(IStatus.ERROR, "Internal Error: Unable to locate metadata loading strategy for: "+modelKeyDescriptor.toString()); //$NON-NLS-1$
- return null;
- }
- MetaDataModel model = StandardModelFactory.getInstance().createModel(modelKeyDescriptor, strategy);//new MetaDataModel(modelKey, strategy);
- model.load();
- addModel(model);
-
- return model;
- }
-
- /**
- * Map of models keyed by ModelKeyDescriptor (.toString())
- *
- */
- private class ModelMap{
- private HashMap /*<String, MetaDataModel>*/ map;
-
- ModelMap(){
- map = new HashMap/*<String, MetaDataModel>*/();
- }
-
- /**
- * @param modelKeyDescriptor
- * @param model adds model to the map using the given key descriptor
- */
- public void put(ModelKeyDescriptor modelKeyDescriptor, MetaDataModel model){
- String key = modelKeyDescriptor.toString();
- map.put(key, model);
- }
-
- /**
- * @param modelKeyDescriptor
- * @return MetaDataModel for this ModelKeyDescriptor. May return null.
- */
- public synchronized MetaDataModel get(ModelKeyDescriptor modelKeyDescriptor){
- String key = modelKeyDescriptor.toString();
- return (MetaDataModel)map.get(key);
- }
-
- /**
- * @param model from the map
- */
- public void remove(MetaDataModel model){
- map.remove(model.getModelKey().toString());
- }
- /**
- * @return models in this map as a Set
- */
- public Set getModels(){
- Set ret = new HashSet();
- for (Iterator it=map.entrySet().iterator();it.hasNext();){
- Map.Entry entry = (Map.Entry)it.next();
- ret.add(entry.getValue());
- }
- return ret;
- }
- }
-
-
-}

Back to the top