blob: b360a276fd1a79291d7b497b66b9b9142c6462c5 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2001, 2008 Oracle Corporation and others.
* 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 Corporation - initial API and implementation
*******************************************************************************/
/**
*
*/
package org.eclipse.jst.jsf.designtime.internal.view.model.jsp.registry;
import org.eclipse.core.resources.IProject;
import org.eclipse.jst.jsf.core.internal.JSFCoreTraceOptions;
import org.eclipse.jst.jsp.core.taglib.ITaglibIndexDelta;
import org.eclipse.jst.jsp.core.taglib.ITaglibIndexListener;
class TagIndexListener implements ITaglibIndexListener
{
private final TLDTagRegistry _registry;
private final LibraryOperationFactory _factory;
TagIndexListener(final TLDTagRegistry registry)
{
_registry = registry;
_factory = new LibraryOperationFactory(_registry);
}
public void indexChanged(final ITaglibIndexDelta delta)
{
if (JSFCoreTraceOptions.TRACE_JSPTAGREGISTRY_CHANGES)
{
JSFCoreTraceOptions.log("TagIndexListener.indexChanged: start"); //$NON-NLS-1$
}
visitDelta(delta);
if (JSFCoreTraceOptions.TRACE_JSPTAGREGISTRY_CHANGES)
{
JSFCoreTraceOptions.log("TagIndexListener.indexChanged: finish"); //$NON-NLS-1$
}
}
private void visitDelta(final ITaglibIndexDelta delta)
{
final IProject project = delta.getProject();
if (_registry != null && !_registry.isDisposed()
&& delta.getTaglibRecord() != null)
{
switch (delta.getKind())
{
case ITaglibIndexDelta.ADDED:
{
if (JSFCoreTraceOptions.TRACE_JSPTAGREGISTRY_CHANGES)
{
JSFCoreTraceOptions.log(String.format(
"Processing add change: project=%s", project //$NON-NLS-1$
.getName()));
}
_registry.addLibraryOperation(_factory
.createAddOperation(delta.getTaglibRecord()));
}
break;
case ITaglibIndexDelta.REMOVED:
{
if (JSFCoreTraceOptions.TRACE_JSPTAGREGISTRY_CHANGES)
{
JSFCoreTraceOptions
.log(String
.format(
"Processing remove change: project=%s, tagrecord=%s", //$NON-NLS-1$
project.getName()));
}
_registry.addLibraryOperation(_factory
.createRemoveOperation(delta.getTaglibRecord()));
}
break;
case ITaglibIndexDelta.CHANGED:
{
if (JSFCoreTraceOptions.TRACE_JSPTAGREGISTRY_CHANGES)
{
JSFCoreTraceOptions.log(String.format(
"Processing change: project=%s, tagrecord=%s", //$NON-NLS-1$
project.getName()));
}
_registry.addLibraryOperation(_factory
.createChangeOperation(delta.getTaglibRecord()));
}
break;
}
}
// visit children
for (final ITaglibIndexDelta child : delta.getAffectedChildren())
{
visitDelta(child);
}
}
}