All Downloads are FREE. Search and download functionalities are using the official Maven repository.

hudson.model.Action Maven / Gradle / Ivy

The newest version!
/*******************************************************************************
 *
 * 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:
 * 
 *    Kohsuke Kawaguchi, Michael B. Donohue
 *
 *
 *******************************************************************************/ 

package hudson.model;

import hudson.tasks.test.TestResultProjectAction;

/**
 * Object that contributes additional information, behaviors, and UIs to
 * {@link ModelObject} (more specifically {@link Actionable} objects, which most
 * interesting {@link ModelObject}s are.)
 *
 * 

{@link Action}s added to a model object creates additional URL subspace * under the parent model object, through which it can interact with users. * {@link Action}s are also capable of exposing themselves to the left hand side * menu of a {@link ModelObject} (for example to {@link Project}, {@link Build}, * and etc.) * *

Some actions use the latter without the former (for example, to add a * link to an external website), while others do the former without the latter * (for example, to just draw some graphs in floatingBox.jelly), and * still some others do both. * *

If an action has a view named floatingBox.jelly, it will be * displayed as a floating box on the top page of the target * {@link ModelObject}. (For example, this is how the JUnit test result trend * shows up in the project top page. See {@link TestResultProjectAction}. * *

Persistence

Actions are often persisted as a part of * {@link Actionable} (for example with {@link Build}) via XStream. In some * other cases, {@link Action}s are transient and not persisted (such as when * it's used with {@link Job}). * * @author Kohsuke Kawaguchi */ public interface Action extends ModelObject { /** * Gets the file name of the icon. * * @return If just a file name (like "abc.png") is returned, it will be * interpreted as a file name inside /images/24x24. This is useful * for using one of the stock images.

If an absolute file name that * starts from '/' is returned (like "/plugin/foo/abc.png'), then it will be * interpreted as a path from the context root of Hudson. This is useful to * pick up image files from a plugin.

Finally, return null to hide it * from the task list. This is normally not very useful, but this can be * used for actions that only contribute floatBox.jelly and no task * list item. The other case where this is useful is to avoid showing links * that require a privilege when the user is anonymous. * @see Hudson#isAdmin() */ String getIconFileName(); /** * Gets the string to be displayed. * * The convention is to capitalize the first letter of each word, such as * "Test Result". */ String getDisplayName(); /** * Gets the URL path name. * *

For example, if this method returns "xyz", and if the parent object * (that this action is associated with) is bound to /foo/bar/zot, then this * action object will be exposed to /foo/bar/zot/xyz. * *

This method should return a string that's unique among other * {@link Action}s. * *

The returned string can be an absolute URL, like * "http://www.sun.com/", which is useful for directly connecting to * external systems. * *

If the returned string starts with '/', like '/foo', then it's * assumed to be relative to the context path of the Hudson webapp. * * @return null if this action object doesn't need to be bound to web (when * you do that, be sure to also return null from {@link #getIconFileName()}. */ String getUrlName(); }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy