
hudson.model.TransientProjectActionFactory Maven / Gradle / Ivy
Show all versions of hudson-core Show documentation
/*******************************************************************************
*
* Copyright (c) 2004-2009, 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:
*
*
*
*
*******************************************************************************/
package hudson.model;
import hudson.Extension;
import hudson.ExtensionList;
import hudson.ExtensionPoint;
import hudson.tasks.BuildStep;
import java.util.Collection;
/**
* Extension point for inserting transient {@link Action}s into {@link AbstractProject}s.
*
*
* Actions of projects are primarily determined by {@link BuildStep}s that are associated by configurations,
* but sometimes it's convenient to be able to add actions across all or many projects, without being invoked
* through configuration. This extension point provides such a mechanism.
*
* Actions of {@link AbstractProject}s are transient — they will not be persisted, and each time Hudson starts
* or the configuration of the job changes, they'll be recreated. Therefore, to maintain persistent data
* per project, you'll need to do data serialization by yourself. Do so by storing a file
* under {@link AbstractProject#getRootDir()}.
*
*
* To register your implementation, put {@link Extension} on your subtype.
*
* @author Kohsuke Kawaguchi
* @since 1.327
* @see Action
*/
public abstract class TransientProjectActionFactory implements ExtensionPoint {
/**
* Creates actions for the given project.
*
* @param target
* The project for which the action objects are requested. Never null.
* @return
* Can be empty but must not be null.
*/
public abstract Collection extends Action> createFor(AbstractProject target);
/**
* Returns all the registered {@link TransientProjectActionFactory}s.
*/
public static ExtensionList all() {
return Hudson.getInstance().getExtensionList(TransientProjectActionFactory.class);
}
}