/*
* FindBugs - Find Bugs in Java programs
* Copyright (C) 2003-2008 University of Maryland
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package edu.umd.cs.findbugs;
import java.util.Set;
/**
* @author pugh
*/
public class ComponentPlugin<T> {
public ComponentPlugin(Plugin plugin, String id, ClassLoader classLoader,
Class<? extends T> componentClass,
PropertyBundle properties, boolean enabledByDefault,
String description, String details) {
this.plugin = plugin;
this.id = id;
int i = id.lastIndexOf('.');
this.shortId = id.substring(i + 1);
this.classLoader = classLoader;
this.componentClass = componentClass;
this.properties = properties;
this.enabledByDefault = enabledByDefault;
this.description = description;
this.details = details;
}
protected final Plugin plugin;
public String getId() {
return id;
}
public ClassLoader getClassLoader() {
return classLoader;
}
public boolean isEnabledByDefault() {
return enabledByDefault;
}
public PropertyBundle getProperties() {
return properties;
}
public String getDescription() {
return description;
}
public String getDetails() {
return details;
}
@Override
public String toString() {
return getDescription();
}
public Plugin getPlugin() {
return plugin;
}
public boolean isNamed(Set<String> names) {
return names.contains(id) || names.contains(shortId);
}
protected final String id;
protected final String shortId;
protected final ClassLoader classLoader;
protected final PropertyBundle properties;
protected final String description;
protected final String details;
protected final boolean enabledByDefault;
public Class<? extends T> getComponentClass() {
if (!isAvailable()) {
if (FindBugs.isNoAnalysis())
throw new IllegalStateException("No analysis set; no component class loaded for " + getPlugin());
throw new IllegalStateException("No component class for " + getPlugin());
}
return componentClass;
}
public boolean isAvailable() {
return componentClass != null;
}
final Class<? extends T> componentClass;
}