diff options
Diffstat (limited to 'jsf/plugins/org.eclipse.jst.jsf.facelet.core/src/org/eclipse/jst/jsf/facelet/core/internal/registry/taglib/JarFileFaceletTaglibLocator.java')
-rw-r--r-- | jsf/plugins/org.eclipse.jst.jsf.facelet.core/src/org/eclipse/jst/jsf/facelet/core/internal/registry/taglib/JarFileFaceletTaglibLocator.java | 185 |
1 files changed, 0 insertions, 185 deletions
diff --git a/jsf/plugins/org.eclipse.jst.jsf.facelet.core/src/org/eclipse/jst/jsf/facelet/core/internal/registry/taglib/JarFileFaceletTaglibLocator.java b/jsf/plugins/org.eclipse.jst.jsf.facelet.core/src/org/eclipse/jst/jsf/facelet/core/internal/registry/taglib/JarFileFaceletTaglibLocator.java deleted file mode 100644 index 28c287af5..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.facelet.core/src/org/eclipse/jst/jsf/facelet/core/internal/registry/taglib/JarFileFaceletTaglibLocator.java +++ /dev/null @@ -1,185 +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.io.IOException; -import java.io.InputStream; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.jar.JarEntry; -import java.util.jar.JarFile; -import java.util.regex.Pattern; - -import org.eclipse.core.resources.IProject; -import org.eclipse.jst.jsf.common.internal.finder.AbstractMatcher.AlwaysMatcher; -import org.eclipse.jst.jsf.common.internal.finder.AbstractMatcher.IMatcher; -import org.eclipse.jst.jsf.common.internal.finder.VisitorMatcher; -import org.eclipse.jst.jsf.common.internal.finder.acceptor.JarEntryMatchingAcceptor; -import org.eclipse.jst.jsf.common.internal.finder.matcher.TaglibJarEntryFinder; -import org.eclipse.jst.jsf.common.internal.resource.DefaultJarProvider; -import org.eclipse.jst.jsf.common.internal.resource.IJarProvider; -import org.eclipse.jst.jsf.core.internal.JSFCorePlugin; -import org.eclipse.jst.jsf.facelet.core.internal.FaceletCorePlugin; -import org.eclipse.jst.jsf.facelet.core.internal.registry.taglib.faceletTaglib.FaceletTaglib; - -/** - * A locator that finds Facelet taglibs in jars on the classpath - * - * @author cbateman - * - */ -public class JarFileFaceletTaglibLocator extends AbstractFaceletTaglibLocator -{ - /** - * Default taglib finder that looks in meta-inf - */ - public static final TaglibJarEntryFinder _taglibMetaInfFinder = new TaglibJarEntryFinder( - Pattern.compile("META-INF/.*\\.taglib\\.xml")); //$NON-NLS-1$ - /** - * Default finder that looks in the glassfish package. - */ - public static final TaglibJarEntryFinder _taglibGlassfishFinder = new TaglibJarEntryFinder( - Pattern.compile("com/sun/faces/metadata/taglib/.*\\.taglib\\.xml")); //$NON-NLS-1$ - - private static final List<IMatcher> MATCHERS; - - static - { - final List<IMatcher> matchers = new ArrayList<IMatcher>(); - matchers.add(_taglibGlassfishFinder); - matchers.add(_taglibMetaInfFinder); - MATCHERS = Collections.unmodifiableList(matchers); - } - private static final String DISPLAYNAME = Messages.JarFileFaceletTaglibLocator_0; - private static final String ID = JarFileFaceletTaglibLocator.class - .getCanonicalName(); - private final TagRecordFactory _factory; - private final Map<String, IFaceletTagRecord> _records; - private final IJarProvider _provider; - - /** - * @param factory - */ - public JarFileFaceletTaglibLocator(final TagRecordFactory factory) - { - this(factory, new DefaultJarProvider(Collections - .singletonList(new AlwaysMatcher()))); - } - - /** - * @param factory - * @param jarProvider - */ - public JarFileFaceletTaglibLocator(final TagRecordFactory factory, - final IJarProvider jarProvider) - { - super(ID, DISPLAYNAME); - _factory = factory; - _records = new HashMap<String, IFaceletTagRecord>(); - _provider = jarProvider; - } - - @Override - public Map<String, ? extends IFaceletTagRecord> doLocate( - final IProject project) - { - final List<FaceletTaglib> tagLibsFound = new ArrayList<FaceletTaglib>(); - - final Collection<? extends JarFile> jars = _provider.getJars(project); - - for (final JarFile jarFile : jars) - { - tagLibsFound.addAll(processJar(jarFile)); - } - - for (final FaceletTaglib tag : tagLibsFound) - { - final IFaceletTagRecord record = _factory.createRecords(tag); - if (record != null) - { - _records.put(record.getURI(), record); - } - } - - return _records; - } - - /** - * @param entry - * @param defaultDtdStream - * @throws Exception - */ - private List<FaceletTaglib> processJar(final JarFile jarFile) - { - final List<FaceletTaglib> tagLibsFound = new ArrayList<FaceletTaglib>(); - - try - { - if (jarFile != null) - { - final JarEntryMatchingAcceptor acceptor = new JarEntryMatchingAcceptor(); - final VisitorMatcher<JarFile, JarEntry, String> matcher = new VisitorMatcher<JarFile, JarEntry, String>( - "", "", acceptor, MATCHERS); //$NON-NLS-1$//$NON-NLS-2$ - final Collection<? extends JarEntry> matchingEntries = matcher - .find(jarFile); - for (final JarEntry jarEntry : matchingEntries) - { - InputStream is = null; - try - { - is = jarFile.getInputStream(jarEntry); - final TagModelLoader loader = new TagModelLoader( - jarEntry.getName()); - loader.loadFromInputStream(is); - final FaceletTaglib tagLib = loader.getTaglib(); - - if (tagLib != null) - { - tagLibsFound.add(tagLib); - } - } catch (final Exception e) - { - FaceletCorePlugin.log( - "Error initializing facelet registry entry", //$NON-NLS-1$ - e); - } finally - { - if (is != null) - { - // is.close(); - } - } - } - } - } catch (final Exception e) - { - JSFCorePlugin.log(e, - "While locating jar based facelet tag libraries"); //$NON-NLS-1$ - } finally - { - if (jarFile != null) - { - try - { - jarFile.close(); - } catch (final IOException ioe) - { - FaceletCorePlugin.log("Error closing jar file", ioe); //$NON-NLS-1$ - } - } - } - return tagLibsFound; - } -} |