diff options
Diffstat (limited to 'jsf/plugins/org.eclipse.jst.jsf.facelet.core/src/org/eclipse/jst/jsf/facelet/core/internal/registry/taglib/ProjectTaglibDescriptor.java')
-rw-r--r-- | jsf/plugins/org.eclipse.jst.jsf.facelet.core/src/org/eclipse/jst/jsf/facelet/core/internal/registry/taglib/ProjectTaglibDescriptor.java | 173 |
1 files changed, 0 insertions, 173 deletions
diff --git a/jsf/plugins/org.eclipse.jst.jsf.facelet.core/src/org/eclipse/jst/jsf/facelet/core/internal/registry/taglib/ProjectTaglibDescriptor.java b/jsf/plugins/org.eclipse.jst.jsf.facelet.core/src/org/eclipse/jst/jsf/facelet/core/internal/registry/taglib/ProjectTaglibDescriptor.java deleted file mode 100644 index f68ecf438..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.facelet.core/src/org/eclipse/jst/jsf/facelet/core/internal/registry/taglib/ProjectTaglibDescriptor.java +++ /dev/null @@ -1,173 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008 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: - * Cameron Bateman - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.facelet.core.internal.registry.taglib; - -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; -import java.util.concurrent.atomic.AtomicBoolean; -import java.util.concurrent.atomic.AtomicInteger; - -import org.eclipse.core.resources.IProject; -import org.eclipse.core.runtime.ISafeRunnable; -import org.eclipse.core.runtime.SafeRunner; -import org.eclipse.jst.jsf.common.internal.locator.ILocatorProvider; -import org.eclipse.jst.jsf.facelet.core.internal.FaceletCorePlugin; - -/** - * Taglib descriptor for a project. - * - * @author cbateman - * - */ -public class ProjectTaglibDescriptor implements IProjectTaglibDescriptor -{ - - private final AtomicInteger _isInitialized = new AtomicInteger( - 0); - private final IProject _project; - private final ILocatorProvider<AbstractFaceletTaglibLocator> _locatorProvider; - private final MyChangeListener _libChangeListener; - private final Map<String, IFaceletTagRecord> _tagRecords; - private final TagRecordFactory _factory; - private final AtomicBoolean _isDisposed = new AtomicBoolean(false); - - /** - * @param project - * @param factory - * @param locatorProvider - */ - public ProjectTaglibDescriptor(final IProject project, final TagRecordFactory factory, - final ILocatorProvider<AbstractFaceletTaglibLocator> locatorProvider) - { - _project = project; - _tagRecords = new HashMap<String, IFaceletTagRecord>(); - _locatorProvider = locatorProvider; - _locatorProvider.initialize(); - _factory = factory; - _libChangeListener = new MyChangeListener(); - } - - private void initialize() - { - if (_isInitialized.addAndGet(1) == 1) - { - synchronized (this) - { - for (final AbstractFaceletTaglibLocator locator : _locatorProvider.getLocators()) - { - SafeRunner.run(new ISafeRunnable() - { - public void handleException(final Throwable exception) - { - FaceletCorePlugin - .log( - "While locating facelet libraries on project: " + _project.getName(), new Exception(exception)); //$NON-NLS-1$ - } - public void run() throws Exception - { - locator.addListener(_libChangeListener); - locator.start(_project); - _tagRecords.putAll(locator.locate(_project)); - } - }); - } - } - } - } - - public Collection<? extends IFaceletTagRecord> getTagLibraries() - { - initialize(); - return Collections.unmodifiableCollection(_tagRecords.values()); - } - - void maybeLog(final Exception e) - { - if (_isInitialized.get() <= 1) - { - FaceletCorePlugin.log("Failed initializing taglib descriptor", e); //$NON-NLS-1$ - } - } - - public IFaceletTagRecord getTagLibrary(final String uri) - { - initialize(); - return _tagRecords.get(uri); - } - - public void addListener(final Listener listener) - { - for (final AbstractFaceletTaglibLocator locator : _locatorProvider.getLocators()) - { - locator.addListener(listener); - } - } - - public void removeListener(final Listener listener) - { - for (final AbstractFaceletTaglibLocator locator : _locatorProvider.getLocators()) - { - locator.removeListener(listener); - } - } - - public void checkpoint() - { - // do nothing - } - - public void destroy() - { - // call dispose; there is no persistent data to cleanup. - dispose(); - } - - public void dispose() - { - if (_isDisposed.compareAndSet(false, true)) - { - for (final AbstractFaceletTaglibLocator locator : _locatorProvider.getLocators()) - { - locator.stop(); - } - _factory.dispose(); - } - } - - public boolean isDisposed() - { - return _isDisposed.get(); - } - - private class MyChangeListener extends Listener - { - @Override - public void changed(final TaglibChangedEvent event) - { - switch (event.getChangeType()) - { - case ADDED: - _tagRecords.put(event.getNewValue().getURI(), event - .getNewValue()); - break; - case CHANGED: - _tagRecords.put(event.getNewValue().getURI(), event - .getNewValue()); - break; - case REMOVED: - _tagRecords.remove(event.getOldValue()); - break; - } - } - } -} |