Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcbateman2010-05-18 19:07:32 +0000
committercbateman2010-05-18 19:07:32 +0000
commit4a097395c1d2e9b96f6502380acca4724d3e0297 (patch)
treeb6ef134ac034179995fec99b867dd7148f816f6a
parent7218b6fe58082f63cbc1d0426a39da69401c842f (diff)
downloadwebtools.jsf-4a097395c1d2e9b96f6502380acca4724d3e0297.tar.gz
webtools.jsf-4a097395c1d2e9b96f6502380acca4724d3e0297.tar.xz
webtools.jsf-4a097395c1d2e9b96f6502380acca4724d3e0297.zip
PMC approved fix for https://bugs.eclipse.org/bugs/show_bug.cgi?id=313206.
-rw-r--r--jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/internal/pde/AbstractRegistryReader.java17
-rw-r--r--jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/internal/pde/AbstractSimpleClassExtensionRegistryReader.java4
-rw-r--r--jsf/plugins/org.eclipse.jst.jsf.facelet.core/plugin.properties2
-rw-r--r--jsf/plugins/org.eclipse.jst.jsf.facelet.core/plugin.xml1
-rw-r--r--jsf/plugins/org.eclipse.jst.jsf.facelet.core/schema/testProjectTaglibDescriptorFactory.exsd102
-rw-r--r--jsf/plugins/org.eclipse.jst.jsf.facelet.core/src/org/eclipse/jst/jsf/facelet/core/internal/registry/taglib/ExtensionBasedTagDescriptorFactoryProviderStrategy.java69
-rw-r--r--jsf/plugins/org.eclipse.jst.jsf.facelet.core/src/org/eclipse/jst/jsf/facelet/core/internal/registry/taglib/FaceletTagIndex.java106
-rw-r--r--jsf/plugins/org.eclipse.jst.jsf.facelet.core/src/org/eclipse/jst/jsf/facelet/core/internal/registry/taglib/JarFileFaceletTaglibLocator.java20
-rw-r--r--jsf/plugins/org.eclipse.jst.jsf.facelet.core/src/org/eclipse/jst/jsf/facelet/core/internal/registry/taglib/TagRecordFactory.java1
9 files changed, 299 insertions, 23 deletions
diff --git a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/internal/pde/AbstractRegistryReader.java b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/internal/pde/AbstractRegistryReader.java
index 1773efbc8..5fcfe431e 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/internal/pde/AbstractRegistryReader.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/internal/pde/AbstractRegistryReader.java
@@ -4,6 +4,10 @@ import java.util.Collections;
import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;
+import org.eclipse.core.runtime.ISafeRunnable;
+import org.eclipse.core.runtime.SafeRunner;
+import org.eclipse.jst.jsf.common.JSFCommonPlugin;
+
/**
* A utility base class that simplifies the reading and caching of extension
* point information.
@@ -39,7 +43,18 @@ public abstract class AbstractRegistryReader<T>
{
if (_isInitialized.compareAndSet(false, true))
{
- initialize();
+ SafeRunner.run(new ISafeRunnable()
+ {
+ public void run() throws Exception
+ {
+ initialize();
+ }
+
+ public void handleException(Throwable exception)
+ {
+ JSFCommonPlugin.log(exception);
+ }
+ });
}
return _extensions;
}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/internal/pde/AbstractSimpleClassExtensionRegistryReader.java b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/internal/pde/AbstractSimpleClassExtensionRegistryReader.java
index d65643be9..288d1d2e0 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/internal/pde/AbstractSimpleClassExtensionRegistryReader.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/internal/pde/AbstractSimpleClassExtensionRegistryReader.java
@@ -58,6 +58,10 @@ public abstract class AbstractSimpleClassExtensionRegistryReader<T> extends
final List<SortableExecutableExtension<T>> result = new ArrayList<SortableExecutableExtension<T>>();
final IExtensionPoint extensionPoint = Platform.getExtensionRegistry()
.getExtensionPoint(getExtPtNamespace(), getExtPtId());
+ if (extensionPoint == null)
+ {
+ return;
+ }
IExtension[] extensions = extensionPoint.getExtensions();
for (int i = 0; i < extensions.length; i++)
{
diff --git a/jsf/plugins/org.eclipse.jst.jsf.facelet.core/plugin.properties b/jsf/plugins/org.eclipse.jst.jsf.facelet.core/plugin.properties
index c6957e618..f0b7de2bc 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.facelet.core/plugin.properties
+++ b/jsf/plugins/org.eclipse.jst.jsf.facelet.core/plugin.properties
@@ -28,3 +28,5 @@ _UI_AttributeUsage_REQUIRED_literal = REQUIRED
_UI_AttributeUsage_FIXED_literal = FIXED
_UI_AttributeUsage_PROHIBITED_literal = PROHIBITED
_UI_AttributeData_description_feature = Description
+
+extension-point.name = testProjectTaglibDescriptorFactory \ No newline at end of file
diff --git a/jsf/plugins/org.eclipse.jst.jsf.facelet.core/plugin.xml b/jsf/plugins/org.eclipse.jst.jsf.facelet.core/plugin.xml
index 946f89743..d17c4c5f3 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.facelet.core/plugin.xml
+++ b/jsf/plugins/org.eclipse.jst.jsf.facelet.core/plugin.xml
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.2"?>
<plugin>
+ <extension-point id="projectTaglibDescriptorFactory" name="%extension-point.name" schema="schema/testProjectTaglibDescriptorFactory.exsd"/>
<extension
point="org.eclipse.jst.jsf.core.tagregistry">
<tagRegistry
diff --git a/jsf/plugins/org.eclipse.jst.jsf.facelet.core/schema/testProjectTaglibDescriptorFactory.exsd b/jsf/plugins/org.eclipse.jst.jsf.facelet.core/schema/testProjectTaglibDescriptorFactory.exsd
new file mode 100644
index 000000000..48cb7e1bb
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.jsf.facelet.core/schema/testProjectTaglibDescriptorFactory.exsd
@@ -0,0 +1,102 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.jst.jsf.facelet.core" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+ <appInfo>
+ <meta.schema plugin="org.eclipse.jst.jsf.facelet.core" id="jsfAppConfigManagerFactory" name="JSF App Config Manager Factory"/>
+ </appInfo>
+ <documentation>
+ internal... not provisional API
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <annotation>
+ <appInfo>
+ <meta.element />
+ </appInfo>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element ref="factory"/>
+ </sequence>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute translatable="true"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="factory">
+ <complexType>
+ <attribute name="class" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="java" basedOn=":org.eclipse.jst.jsf.facelet.core.internal.registry.taglib.IProjectTaglibDescriptorFactory"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="since"/>
+ </appInfo>
+ <documentation>
+ [Enter the first release in which this extension point appears.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="examples"/>
+ </appInfo>
+ <documentation>
+ [Enter extension point usage example here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="apiinfo"/>
+ </appInfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="implementation"/>
+ </appInfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+
+</schema>
diff --git a/jsf/plugins/org.eclipse.jst.jsf.facelet.core/src/org/eclipse/jst/jsf/facelet/core/internal/registry/taglib/ExtensionBasedTagDescriptorFactoryProviderStrategy.java b/jsf/plugins/org.eclipse.jst.jsf.facelet.core/src/org/eclipse/jst/jsf/facelet/core/internal/registry/taglib/ExtensionBasedTagDescriptorFactoryProviderStrategy.java
new file mode 100644
index 000000000..1c61b9c93
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.jsf.facelet.core/src/org/eclipse/jst/jsf/facelet/core/internal/registry/taglib/ExtensionBasedTagDescriptorFactoryProviderStrategy.java
@@ -0,0 +1,69 @@
+package org.eclipse.jst.jsf.facelet.core.internal.registry.taglib;
+
+import java.util.List;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jst.jsf.common.internal.pde.AbstractSimpleClassExtensionRegistryReader;
+import org.eclipse.jst.jsf.common.internal.strategy.ISimpleStrategy;
+import org.eclipse.jst.jsf.core.jsfappconfig.internal.IJSFAppConfigManager;
+import org.eclipse.jst.jsf.facelet.core.internal.FaceletCorePlugin;
+
+/**
+ * Extension-based strategy for returning {@link IJSFAppConfigManager}s
+ *
+ */
+public class ExtensionBasedTagDescriptorFactoryProviderStrategy implements
+ ISimpleStrategy<IProject, IProjectTaglibDescriptorFactory>
+{
+ private static IProjectTaglibDescriptorFactory EXT_PT_BASED_FACTORY;
+ static
+ {
+ final ProjectTaglibDescriptorFactoryExtensionPointReader reader = new ProjectTaglibDescriptorFactoryExtensionPointReader();
+ final List<IProjectTaglibDescriptorFactory> res = reader
+ .getExtensions();
+ if (res != null && res.size() > 0)
+ {// return first
+ EXT_PT_BASED_FACTORY = res.get(0);
+ }
+ }
+
+ public IProjectTaglibDescriptorFactory perform(final IProject input)
+ throws Exception
+ {
+ return EXT_PT_BASED_FACTORY != null ? EXT_PT_BASED_FACTORY
+ : getNoResult();
+ }
+
+ private static class ProjectTaglibDescriptorFactoryExtensionPointReader
+ extends
+ AbstractSimpleClassExtensionRegistryReader<IProjectTaglibDescriptorFactory>
+ {
+ private static final String EXT_PT_ID = "projectTaglibDescriptorFactory"; //$NON-NLS-1$
+ private static final String EXT_PT_ELEMENT = "factory"; //$NON-NLS-1$
+ private static final String EXT_PT_ATTR = "class"; //$NON-NLS-1$
+
+ protected ProjectTaglibDescriptorFactoryExtensionPointReader()
+ {
+ super(
+ FaceletCorePlugin.PLUGIN_ID,
+ EXT_PT_ID,
+ EXT_PT_ELEMENT,
+ EXT_PT_ATTR,
+ new CompareOrgEclipseJstContributorsLastComparator<IProjectTaglibDescriptorFactory>());
+ }
+
+ @Override
+ protected void handleLoadFailure(final CoreException ce)
+ {
+ org.eclipse.jst.jsf.core.internal.JSFCorePlugin
+ .log(ce,
+ "Error loading ProjectTaglibDescriptorFactory from extension"); //$NON-NLS-1$
+ }
+ }
+
+ public IProjectTaglibDescriptorFactory getNoResult()
+ {
+ return null;
+ }
+}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.facelet.core/src/org/eclipse/jst/jsf/facelet/core/internal/registry/taglib/FaceletTagIndex.java b/jsf/plugins/org.eclipse.jst.jsf.facelet.core/src/org/eclipse/jst/jsf/facelet/core/internal/registry/taglib/FaceletTagIndex.java
index 35c4e011e..cdef395f4 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.facelet.core/src/org/eclipse/jst/jsf/facelet/core/internal/registry/taglib/FaceletTagIndex.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.facelet.core/src/org/eclipse/jst/jsf/facelet/core/internal/registry/taglib/FaceletTagIndex.java
@@ -28,11 +28,12 @@ import org.eclipse.jst.jsf.common.internal.resource.DefaultJarLocator;
import org.eclipse.jst.jsf.common.internal.resource.JavaCoreMediator;
import org.eclipse.jst.jsf.common.internal.resource.ResourceSingletonObjectManager;
import org.eclipse.jst.jsf.common.internal.resource.WorkspaceMediator;
+import org.eclipse.jst.jsf.common.internal.strategy.AbstractTestableExtensibleDefaultProviderSelectionStrategy;
+import org.eclipse.jst.jsf.common.internal.strategy.ISimpleStrategy;
import org.eclipse.jst.jsf.designtime.internal.resources.IJSFResourceLocator;
import org.eclipse.jst.jsf.designtime.internal.resources.JarBasedJSFResourceLocator;
import org.eclipse.jst.jsf.designtime.internal.resources.WorkspaceJSFResourceLocator;
-
/**
* @author cbateman
*
@@ -40,17 +41,25 @@ import org.eclipse.jst.jsf.designtime.internal.resources.WorkspaceJSFResourceLoc
public class FaceletTagIndex extends
ResourceSingletonObjectManager<IProjectTaglibDescriptor, IProject>
{
- private final IProjectTaglibDescriptorFactory _factory;
+ private ISimpleStrategy<IProject, IProjectTaglibDescriptorFactory> _tagDescriptorFactoryProvider;
/**
* @param ws
- * @param factory
*/
- public FaceletTagIndex(final IWorkspace ws,
- final IProjectTaglibDescriptorFactory factory)
+ public FaceletTagIndex(final IWorkspace ws)
{
super(ws);
- _factory = factory;
+ _tagDescriptorFactoryProvider = new ProjectTaglibDescriptorFactoryProviderSelectionStrategy();
+ }
+
+ /**
+ * @param ws
+ * @param tagDescriptorFactoryProvider
+ */
+ public FaceletTagIndex(final IWorkspace ws, final ISimpleStrategy<IProject, IProjectTaglibDescriptorFactory> tagDescriptorFactoryProvider)
+ {
+ this(ws);
+ _tagDescriptorFactoryProvider = tagDescriptorFactoryProvider;
}
private static FaceletTagIndex INSTANCE;
@@ -63,9 +72,7 @@ public class FaceletTagIndex extends
{
if (INSTANCE == null)
{
- INSTANCE = new FaceletTagIndex(ws,
- new DefaultProjectTaglibDescriptorFactory());
-
+ INSTANCE = new FaceletTagIndex(ws);
}
return INSTANCE;
}
@@ -74,8 +81,16 @@ public class FaceletTagIndex extends
protected IProjectTaglibDescriptor createNewInstance(final IProject project)
{
final TagRecordFactory factory = new TagRecordFactory(project, true);
-
- return _factory.create(project, factory);
+ IProjectTaglibDescriptorFactory descFactory;
+ try
+ {
+ descFactory = _tagDescriptorFactoryProvider
+ .perform(project);
+ return descFactory.create(project, factory);
+ } catch (Exception e)
+ {
+ return null;
+ }
}
/**
@@ -85,11 +100,64 @@ public class FaceletTagIndex extends
*/
public void flush(final IProject project)
{
- IProjectTaglibDescriptor flushedDescriptor = unmanageResource(project);
+ final IProjectTaglibDescriptor flushedDescriptor = unmanageResource(project);
flushedDescriptor.destroy();
}
/**
+ * Used to decide what provider gets used to get the descriptor factory.
+ * This allows us to inject a different descriptor factory than the default
+ * through either a test setter (test-only) or production (ext point).
+ *
+ * @author cbateman
+ *
+ */
+ private static class ProjectTaglibDescriptorFactoryProviderSelectionStrategy
+ extends
+ AbstractTestableExtensibleDefaultProviderSelectionStrategy<IProject, IProjectTaglibDescriptorFactory>
+ {
+ private static final IProjectTaglibDescriptorFactory NO_RESULT = null;
+
+ public ProjectTaglibDescriptorFactoryProviderSelectionStrategy()
+ {
+ super();
+ addDefaultStrategy(new DefaultProjectTaglibDescriptorFactoryProvider(
+ new DefaultProjectTaglibDescriptorFactory()));
+ addExtensionStrategy(new ExtensionBasedTagDescriptorFactoryProviderStrategy());
+ }
+
+ @Override
+ public IProjectTaglibDescriptorFactory getNoResult()
+ {
+ return NO_RESULT;
+ }
+ }
+
+ private static class DefaultProjectTaglibDescriptorFactoryProvider
+ implements
+ ISimpleStrategy<IProject, IProjectTaglibDescriptorFactory>
+ {
+ private final DefaultProjectTaglibDescriptorFactory _factory;
+
+ public DefaultProjectTaglibDescriptorFactoryProvider(
+ final DefaultProjectTaglibDescriptorFactory factory)
+ {
+ _factory = factory;
+ }
+
+ public IProjectTaglibDescriptorFactory perform(final IProject input)
+ throws Exception
+ {
+ return _factory;
+ }
+
+ public IProjectTaglibDescriptorFactory getNoResult()
+ {
+ return null;
+ }
+ }
+
+ /**
* The default factory for creating per-project tag descriptors.
*
* @author cbateman
@@ -108,13 +176,13 @@ public class FaceletTagIndex extends
factory, ModelProviderManager.getModelProvider(project),
new DefaultVirtualComponentQuery(), new WorkspaceMediator()));
final List<IJSFResourceLocator> resourceLocators = new ArrayList<IJSFResourceLocator>();
- resourceLocators.add(new JarBasedJSFResourceLocator(
- Collections.EMPTY_LIST,
- new CopyOnWriteArrayList<ILocatorChangeListener>(),
- new DefaultJarLocator(
- Collections.singletonList(new AlwaysMatcher()),
- new JavaCoreMediator()),
- new ContentTypeResolver()));
+ resourceLocators
+ .add(new JarBasedJSFResourceLocator(Collections.EMPTY_LIST,
+ new CopyOnWriteArrayList<ILocatorChangeListener>(),
+ new DefaultJarLocator(Collections
+ .singletonList(new AlwaysMatcher()),
+ new JavaCoreMediator()),
+ new ContentTypeResolver()));
final IWorkspace workspace = project.getWorkspace();
resourceLocators.add(new WorkspaceJSFResourceLocator(
Collections.EMPTY_LIST,
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
index ea25099cd..a29d6b792 100644
--- 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
@@ -74,6 +74,7 @@ public class JarFileFaceletTaglibLocator extends AbstractFaceletTaglibLocator
private final TagRecordFactory _factory;
private final Map<String, IFaceletTagRecord> _records;
private final IJarLocator _locator;
+ private final List<IMatcher> _jarEntryMatchers;
/**
* @param factory
@@ -92,10 +93,22 @@ public class JarFileFaceletTaglibLocator extends AbstractFaceletTaglibLocator
public JarFileFaceletTaglibLocator(final TagRecordFactory factory,
final IJarLocator jarProvider)
{
+ this(factory, jarProvider, MATCHERS);
+ }
+
+ /**
+ * @param factory
+ * @param jarProvider
+ * @param jarEntryMatchers
+ */
+ public JarFileFaceletTaglibLocator(final TagRecordFactory factory,
+ final IJarLocator jarProvider, final List<IMatcher> jarEntryMatchers)
+ {
super(ID, DISPLAYNAME);
_factory = factory;
_records = new HashMap<String, IFaceletTagRecord>();
_locator = jarProvider;
+ _jarEntryMatchers = jarEntryMatchers;
}
@Override
@@ -110,7 +123,7 @@ public class JarFileFaceletTaglibLocator extends AbstractFaceletTaglibLocator
final JarFile jarFile = cpJarFile.getJarFile();
if (jarFile != null)
{
- tagLibsFound.addAll(processJar(cpJarFile));
+ tagLibsFound.addAll(processJar(cpJarFile, _jarEntryMatchers));
}
}
for (final LibJarEntry jarEntry : tagLibsFound)
@@ -133,7 +146,7 @@ public class JarFileFaceletTaglibLocator extends AbstractFaceletTaglibLocator
case JAR_ADDED:
{
final ClasspathJarFile jar = event.getJar();
- final List<LibJarEntry> foundLibs = processJar(jar);
+ final List<LibJarEntry> foundLibs = processJar(jar, _jarEntryMatchers);
for (final LibJarEntry lib : foundLibs)
{
IFaceletTagRecord newRecord = _factory.createRecords(
@@ -199,7 +212,8 @@ public class JarFileFaceletTaglibLocator extends AbstractFaceletTaglibLocator
* @param defaultDtdStream
* @throws Exception
*/
- private static List<LibJarEntry> processJar(final ClasspathJarFile cpJarFile)
+ private static List<LibJarEntry> processJar(final ClasspathJarFile cpJarFile,
+ final List<IMatcher> jarEntryMatchers)
{
final List<LibJarEntry> tagLibsFound = new ArrayList<LibJarEntry>();
final JarFile jarFile = cpJarFile.getJarFile();
diff --git a/jsf/plugins/org.eclipse.jst.jsf.facelet.core/src/org/eclipse/jst/jsf/facelet/core/internal/registry/taglib/TagRecordFactory.java b/jsf/plugins/org.eclipse.jst.jsf.facelet.core/src/org/eclipse/jst/jsf/facelet/core/internal/registry/taglib/TagRecordFactory.java
index 593e4cc86..ef06cecbe 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.facelet.core/src/org/eclipse/jst/jsf/facelet/core/internal/registry/taglib/TagRecordFactory.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.facelet.core/src/org/eclipse/jst/jsf/facelet/core/internal/registry/taglib/TagRecordFactory.java
@@ -61,6 +61,7 @@ public class TagRecordFactory
/**
* @param taglibDefn
+ * @param descriptor
* @return the new tag record
*/
public IFaceletTagRecord createRecords(final FaceletTaglib taglibDefn, final TagRecordDescriptor descriptor)

Back to the top