blob: 95db97fd4c660a3ec2d58f635e9f9fbaaa930785 [file] [log] [blame]
/*******************************************************************************
* 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.concurrent.CopyOnWriteArrayList;
import org.eclipse.jst.jsf.facelet.core.internal.registry.taglib.faceletTaglib.FaceletTaglibTag;
/**
* Super of all facelet tag records.
*
* @author cbateman
*
*/
public abstract class FaceletTagRecord implements IFaceletTagRecord
{
private final CopyOnWriteArrayList<ITagRecordChangeListener> _listeners;
private final TagRecordDescriptor _descriptor;
/**
* @param descriptor
*
*/
public FaceletTagRecord(final TagRecordDescriptor descriptor)
{
_listeners = new CopyOnWriteArrayList<ITagRecordChangeListener>();
_descriptor = descriptor;
}
public TagRecordDescriptor getDescriptor()
{
return _descriptor;
}
public void addListener(final ITagRecordChangeListener listener)
{
_listeners.addIfAbsent(listener);
}
public void removeListener(final ITagRecordChangeListener listener)
{
_listeners.remove(listener);
}
/**
* @param event
*/
protected void fireEvent(final TagRecordChangeEvent event)
{
for (final ITagRecordChangeListener listener : _listeners)
{
listener.changed(event);
}
}
/**
*
*/
private static final long serialVersionUID = -4606745577562951499L;
public abstract String getURI();
public abstract FaceletTaglibTag getTag(final String name);
public abstract Collection<? extends FaceletTaglibTag> getTags();
}