Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'jsf/plugins/org.eclipse.jst.jsf.facelet.core/src/org/eclipse/jst/jsf/facelet/core/internal/registry/taglib/CompositeComponentTaglibLocator.java')
-rw-r--r--jsf/plugins/org.eclipse.jst.jsf.facelet.core/src/org/eclipse/jst/jsf/facelet/core/internal/registry/taglib/CompositeComponentTaglibLocator.java120
1 files changed, 88 insertions, 32 deletions
diff --git a/jsf/plugins/org.eclipse.jst.jsf.facelet.core/src/org/eclipse/jst/jsf/facelet/core/internal/registry/taglib/CompositeComponentTaglibLocator.java b/jsf/plugins/org.eclipse.jst.jsf.facelet.core/src/org/eclipse/jst/jsf/facelet/core/internal/registry/taglib/CompositeComponentTaglibLocator.java
index ddc72b84a..8cf8ced65 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.facelet.core/src/org/eclipse/jst/jsf/facelet/core/internal/registry/taglib/CompositeComponentTaglibLocator.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.facelet.core/src/org/eclipse/jst/jsf/facelet/core/internal/registry/taglib/CompositeComponentTaglibLocator.java
@@ -6,9 +6,13 @@ import java.util.Map;
import org.eclipse.core.resources.IProject;
import org.eclipse.jst.jsf.common.internal.locator.ILocatorProvider;
+import org.eclipse.jst.jsf.designtime.internal.resources.IJSFResource;
+import org.eclipse.jst.jsf.designtime.internal.resources.IJSFResourceContainer;
+import org.eclipse.jst.jsf.designtime.internal.resources.IJSFResourceFragment;
+import org.eclipse.jst.jsf.designtime.internal.resources.IJSFResourceFragment.Type;
import org.eclipse.jst.jsf.designtime.internal.resources.IJSFResourceLocator;
-import org.eclipse.jst.jsf.designtime.internal.resources.JSFResource;
import org.eclipse.jst.jsf.designtime.internal.resources.JSFResourceChangeListener;
+import org.eclipse.jst.jsf.designtime.internal.resources.JSFResourceContainer;
import org.eclipse.jst.jsf.facelet.core.internal.registry.taglib.JSFResourceBasedTagRecord.Builder;
import org.eclipse.jst.jsf.facelet.core.internal.registry.taglib.Listener.TaglibChangedEvent;
import org.eclipse.jst.jsf.facelet.core.internal.registry.taglib.Listener.TaglibChangedEvent.CHANGE_TYPE;
@@ -32,55 +36,103 @@ public class CompositeComponentTaglibLocator extends
final Builder builder = new Builder();
switch (event.getChangeType())
{
- case ADDED:
- case CHANGED:
- {
- List<TaglibChangedEvent> events = Collections.EMPTY_LIST;
-
- if (event.getNewValue().isFragment())
+ case ADDED:
+ case CHANGED:
{
- // if it's a fragment handle as a possible library add
- events = handleFolderAddChange(event, builder);
- } else
- {
- // otherwise, handle as a file add.
- events = handleFileAddChange(event, builder);
+ handleAddAndChange(event, builder);
}
- _records = builder.merge(events, _records);
- for (final TaglibChangedEvent fireEvent : events)
+ break;
+ case REMOVED:
{
- fireChangeEvent(fireEvent);
+ handleRemove(event, builder);
}
- }
break;
- case REMOVED:
+ }
+ }
+
+ private void handleRemove(final JSFResourceChangedEvent event,
+ final Builder builder)
+ {
+ List<TaglibChangedEvent> events = Collections.EMPTY_LIST;
+ switch (event.getOldValue().getType())
{
- final JSFResource oldValue = event.getOldValue();
- builder.addTag(oldValue, CHANGE_TYPE.REMOVED);
- final List<TaglibChangedEvent> events = builder.createRemove(
- CompositeComponentTaglibLocator.this, _records);
- _records = builder.merge(events, _records);
- for (final TaglibChangedEvent fireEvent : events)
+ case RESOURCE:
{
- fireChangeEvent(fireEvent);
+ events = handleRemoveResource(event, builder);
}
+ break;
+ case CONTAINER:
+ {
+ events = handleRemoveContainer(event, builder);
+ }
+ break;
+ }
+
+ _records = builder.merge(events, _records);
+ for (final TaglibChangedEvent fireEvent : events)
+ {
+ fireChangeEvent(fireEvent);
}
+ }
+
+ private List<TaglibChangedEvent> handleRemoveContainer(
+ final JSFResourceChangedEvent event, final Builder builder)
+ {
+ final IJSFResourceFragment oldValue = event.getOldValue();
+ builder.addLibrary((IJSFResourceContainer) oldValue,
+ CHANGE_TYPE.REMOVED);
+ return builder.createRemove(CompositeComponentTaglibLocator.this,
+ _records);
+ }
+
+ private List<TaglibChangedEvent> handleRemoveResource(
+ final JSFResourceChangedEvent event, final Builder builder)
+ {
+ final IJSFResourceFragment oldValue = event.getOldValue();
+ builder.addTag((IJSFResource) oldValue, CHANGE_TYPE.REMOVED);
+ return builder.createRemove(CompositeComponentTaglibLocator.this,
+ _records);
+ }
+
+ private void handleAddAndChange(final JSFResourceChangedEvent event,
+ final Builder builder)
+ {
+ List<TaglibChangedEvent> events = Collections.EMPTY_LIST;
+
+ switch (event.getNewValue().getType())
+ {
+ case CONTAINER:
+ // if it's a fragment handle as a possible library add
+ events = handleFolderAddChange(event, builder);
break;
+ case RESOURCE:
+ // otherwise, handle as a file add.
+ events = handleFileAddChange(event, builder);
+ break;
+ }
+
+ _records = builder.merge(events, _records);
+
+ for (final TaglibChangedEvent fireEvent : events)
+ {
+ fireChangeEvent(fireEvent);
}
}
private List<TaglibChangedEvent> handleFolderAddChange(
- JSFResourceChangedEvent event, Builder builder)
+ final JSFResourceChangedEvent event, final Builder builder)
{
- final JSFResource newValue = event.getNewValue();
+ final JSFResourceContainer newValue = (JSFResourceContainer) event
+ .getNewValue();
builder.addLibrary(newValue, CHANGE_TYPE.ADDED);
- return builder.createMerge(CompositeComponentTaglibLocator.this, _records);
+ return builder.createMerge(CompositeComponentTaglibLocator.this,
+ _records);
}
private List<TaglibChangedEvent> handleFileAddChange(
final JSFResourceChangedEvent event, final Builder builder)
{
- final JSFResource newValue = event.getNewValue();
+ final IJSFResource newValue = (IJSFResource) event.getNewValue();
builder.addTag(newValue, CHANGE_TYPE.ADDED);
return builder.createMerge(CompositeComponentTaglibLocator.this,
_records);
@@ -121,10 +173,14 @@ public class CompositeComponentTaglibLocator extends
final Builder builder = new Builder();
for (final IJSFResourceLocator locator : _locatorProvider.getLocators())
{
- final List<JSFResource> resources = locator.locate(initialContext);
- for (final JSFResource resource : resources)
+ final List<IJSFResourceFragment> resources = locator
+ .locate(initialContext);
+ for (final IJSFResourceFragment resource : resources)
{
- builder.addTag(resource, CHANGE_TYPE.ADDED);
+ if (resource.getType() == Type.RESOURCE)
+ {
+ builder.addTag((IJSFResource) resource, CHANGE_TYPE.ADDED);
+ }
}
}
_records = builder.build();

Back to the top