Package hudson.model

Class View

All Implemented Interfaces:
ExtensionPoint, Describable<View>, DescriptorByNameOwner, ModelObject, Saveable, SearchableModelObject, SearchItem, AccessControlled, ModelObjectWithChildren, HasWidgets
Direct Known Subclasses:
AllView, ListView, MyView, ProxyView

Encapsulates the rendering of the list of TopLevelItems that Jenkins owns.

This is an extension point in Hudson, allowing different kind of rendering to be added as plugins.

Note for implementers

  • View subtypes need the newViewDetail.jelly page, which is included in the "new view" page. This page should have some description of what the view is about.
Author:
Kohsuke Kawaguchi
See Also:
  • Field Details

    • owner

      protected ViewGroup owner
      Container of this view. Set right after the construction and never change thereafter.
    • name

      protected String name
      Name of this view.
    • description

      protected String description
      Message displayed in the view page.
    • filterExecutors

      protected boolean filterExecutors
      If true, only show relevant executors
    • filterQueue

      protected boolean filterQueue
      If true, only show relevant queue items
    • LIST

      @Deprecated public static final DescriptorList<View> LIST
      Deprecated.
      as of 1.286 Use all() for read access, and use Extension for registration.
      A list of available view types.
    • SORTER

      public static final Comparator<View> SORTER
    • PERMISSIONS

      public static final PermissionGroup PERMISSIONS
    • CREATE

      public static final Permission CREATE
      Permission to create new views.
    • DELETE

      public static final Permission DELETE
    • CONFIGURE

      public static final Permission CONFIGURE
    • READ

      public static final Permission READ
    • NEW_PRONOUN

      public static final AlternativeUiTextProvider.Message<View> NEW_PRONOUN
      "Job" in "New Job". When a view is used in a context that restricts the child type, It might be useful to override this.
  • Constructor Details

  • Method Details

    • getItems

      @NonNull @Exported(name="jobs") public abstract Collection<TopLevelItem> getItems()
      Gets all the items in this collection in a read-only view.
    • getAllItems

      public Collection<TopLevelItem> getAllItems()
      Gets all the items recursively contained in this collection in a read-only view.

      The default implementation recursively adds the items of all contained Views in case this view implements ViewGroup, which should be enough for most cases.

      Since:
      1.520
    • getItem

      public TopLevelItem getItem(String name)
      Gets the TopLevelItem of the given name.
    • getJob

      public final TopLevelItem getJob(String name)
      Alias for getItem(String). This is the one used in the URL binding.
    • contains

      public abstract boolean contains(TopLevelItem item)
      Checks if the job is in this collection.
    • getViewName

      @Exported(visibility=2, name="name") @NonNull public String getViewName()
      Gets the name of all this collection.
      See Also:
    • rename

      public void rename(String newName) throws Failure, Descriptor.FormException
      Renames this view.
      Throws:
      Failure
      Descriptor.FormException
    • getOwner

      public ViewGroup getOwner()
      Gets the ViewGroup that this view belongs to.
    • getOwnerItemGroup

      @Deprecated public ItemGroup<? extends TopLevelItem> getOwnerItemGroup()
      Deprecated.
    • getOwnerPrimaryView

      @Deprecated public View getOwnerPrimaryView()
      Deprecated.
    • getOwnerViewActions

      @Deprecated public List<Action> getOwnerViewActions()
      Deprecated.
    • getDescription

      @Exported public String getDescription()
      Message displayed in the top page. Can be null. Includes HTML.
    • setDescription

      @DataBoundSetter public void setDescription(String description)
    • getProperties

      Gets the view properties configured for this view.
      Since:
      1.406
    • getApplicablePropertyDescriptors

      public List<ViewPropertyDescriptor> getApplicablePropertyDescriptors()
      Returns all the ViewPropertyDescriptors that can be potentially configured on this view. Returns both ViewPropertyDescriptors visible and invisible for user, see getVisiblePropertyDescriptors() to filter invisible one.
    • getVisiblePropertyDescriptors

      public List<ViewPropertyDescriptor> getVisiblePropertyDescriptors()
      Returns:
      all the ViewPropertyDescriptors that can be potentially configured on this View and are visible for the user. Use DescriptorVisibilityFilter to make a View property invisible for users.
      Since:
      2.214
    • save

      public void save() throws IOException
      Description copied from interface: Saveable
      Persists the state of this object into XML.

      For making a bulk change efficiently, see BulkChange.

      To support listeners monitoring changes to this object, call SaveableListener.fireOnChange(hudson.model.Saveable, hudson.XmlFile)

      Specified by:
      save in interface Saveable
      Throws:
      IOException - if the persistence failed.
    • getAllProperties

      @Exported(name="property", inline=true) public List<ViewProperty> getAllProperties()
      List of all ViewPropertys exposed primarily for the remoting API.
      Since:
      1.406
    • getDescriptor

      public ViewDescriptor getDescriptor()
      Description copied from interface: Describable
      Gets the descriptor for this instance.

      Descriptor is a singleton for every concrete Describable implementation, so if a.getClass() == b.getClass() then by default a.getDescriptor() == b.getDescriptor() as well. (In rare cases a single implementation class may be used for instances with distinct descriptors.)

      Specified by:
      getDescriptor in interface Describable<View>
    • getDisplayName

      public String getDisplayName()
      Specified by:
      getDisplayName in interface ModelObject
    • getNewPronoun

      public String getNewPronoun()
    • isEditable

      public boolean isEditable()
      By default, return true to render the "Edit view" link on the page. This method is really just for the default "All" view to hide the edit link so that the default Hudson top page remains the same as before 1.316.
      Since:
      1.316
    • isAutomaticRefreshEnabled

      @Deprecated public boolean isAutomaticRefreshEnabled()
      Deprecated.
      Auto-refresh has been removed
      Used to enable or disable automatic refreshes of the view.
      Since:
      1.557
    • isFilterExecutors

      public boolean isFilterExecutors()
      If true, only show relevant executors
    • setFilterExecutors

      @DataBoundSetter public void setFilterExecutors(boolean filterExecutors)
      Since:
      2.426
    • isFilterQueue

      public boolean isFilterQueue()
      If true, only show relevant queue items
    • setFilterQueue

      @DataBoundSetter public void setFilterQueue(boolean filterQueue)
      Since:
      2.426
    • getColumns

      public Iterable<? extends ListViewColumn> getColumns()
      If this view uses <t:projectView> for rendering, this method returns columns to be displayed.
    • getIndenter

      public Indenter getIndenter()
      If this view uses t:projectView for rendering, this method returns the indenter used to indent each row.
    • isDefault

      public boolean isDefault()
      If true, this is a view that renders the top page of Hudson.
    • getComputers

      public List<Computer> getComputers()
    • getQueueItems

      public List<Queue.Item> getQueueItems()
    • getApproximateQueueItemsQuickly

      @Deprecated public List<Queue.Item> getApproximateQueueItemsQuickly()
      Deprecated.
      Use getQueueItems(). As of 1.607 the approximation is no longer needed.
      Returns:
      The items in the queue.
    • getUrl

      public String getUrl()
      Returns the path relative to the context root. Doesn't start with '/' but ends with '/' (except returns empty string when this is the default view).
    • getViewUrl

      public String getViewUrl()
      Same as getUrl() except this returns a view/{name} path even for the default view.
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • getSearchUrl

      public String getSearchUrl()
      Description copied from interface: SearchItem
      Returns the URL of this item relative to the parent SearchItem.
      Specified by:
      getSearchUrl in interface SearchItem
      Returns:
      URL like "foo" or "foo/bar". The path can end with '/'. The path that starts with '/' will be interpreted as the absolute path (within the context path of Jenkins.)
    • getSearchIcon

      public String getSearchIcon()
      Specified by:
      getSearchIcon in interface SearchItem
    • getActions

      public List<Action> getActions()
      Returns the transient Actions associated with the top page.

      If views don't want to show top-level actions, this method can be overridden to return different objects.

      See Also:
    • updateTransientActions

      @Restricted(org.kohsuke.accmod.restrictions.DoNotUse.class) @Deprecated public void updateTransientActions()
      Deprecated.
      This method does nothing and should not be used
      No-op. Included to maintain backwards compatibility.
    • getDynamic

      public Object getDynamic(String token)
    • getAbsoluteUrl

      @Exported(visibility=2, name="url") public String getAbsoluteUrl()
      Gets the absolute URL of this view.
    • getApi

      public Api getApi()
    • getPostConstructLandingPage

      public String getPostConstructLandingPage()
      Returns the page to redirect the user to, after the view is created. The returned string is appended to "/view/foobar/", so for example to direct the user to the top page of the view, return "", etc.
    • getACL

      @NonNull public ACL getACL()
      Returns the ACL for this object.
      Specified by:
      getACL in interface AccessControlled
      Returns:
      never null.
    • onJobRenamed

      @Deprecated public void onJobRenamed(Item item, String oldName, String newName)
      Deprecated.
    • makeSearchIndex

      protected void makeSearchIndex(SearchIndexBuilder sib)
      Add a simple CollectionSearchIndex object to sib
      Parameters:
      sib - the SearchIndexBuilder
      Since:
      2.200
    • makeSearchIndex

      public SearchIndexBuilder makeSearchIndex()
      Description copied from class: AbstractModelObject
      Default implementation that returns empty index.
      Overrides:
      makeSearchIndex in class AbstractModelObject
    • doSubmitDescription

      public void doSubmitDescription(org.kohsuke.stapler.StaplerRequest2 req, org.kohsuke.stapler.StaplerResponse2 rsp) throws IOException, jakarta.servlet.ServletException
      Accepts the new description.
      Throws:
      IOException
      jakarta.servlet.ServletException
    • doSubmitDescription

      @Deprecated @StaplerNotDispatchable public void doSubmitDescription(org.kohsuke.stapler.StaplerRequest req, org.kohsuke.stapler.StaplerResponse rsp) throws IOException, javax.servlet.ServletException
      Throws:
      IOException
      javax.servlet.ServletException
    • doConfigSubmit

      @POST public final void doConfigSubmit(org.kohsuke.stapler.StaplerRequest2 req, org.kohsuke.stapler.StaplerResponse2 rsp) throws IOException, jakarta.servlet.ServletException, Descriptor.FormException
      Accepts submission from the configuration page. Subtypes should override the submit(StaplerRequest2) method.
      Throws:
      IOException
      jakarta.servlet.ServletException
      Descriptor.FormException
    • submit

      protected void submit(org.kohsuke.stapler.StaplerRequest2 req) throws IOException, jakarta.servlet.ServletException, Descriptor.FormException
      Handles the configuration submission. Load view-specific properties here.
      Throws:
      IOException
      jakarta.servlet.ServletException
      Descriptor.FormException
    • submit

      @Deprecated protected void submit(org.kohsuke.stapler.StaplerRequest req) throws IOException, javax.servlet.ServletException, Descriptor.FormException
      Deprecated.
      Throws:
      IOException
      javax.servlet.ServletException
      Descriptor.FormException
    • doDoDelete

      public void doDoDelete(org.kohsuke.stapler.StaplerRequest2 req, org.kohsuke.stapler.StaplerResponse2 rsp) throws IOException, jakarta.servlet.ServletException
      Deletes this view.
      Throws:
      IOException
      jakarta.servlet.ServletException
    • doCreateItem

      public Item doCreateItem(org.kohsuke.stapler.StaplerRequest2 req, org.kohsuke.stapler.StaplerResponse2 rsp) throws IOException, jakarta.servlet.ServletException
      Creates a new Item in this collection.

      This method should call ModifiableItemGroup.doCreateItem(StaplerRequest2, StaplerResponse2) and then add the newly created item to this view.

      Returns:
      null if fails.
      Throws:
      IOException
      jakarta.servlet.ServletException
      Since:
      2.475
    • doCreateItem

      @Deprecated @StaplerNotDispatchable public Item doCreateItem(org.kohsuke.stapler.StaplerRequest req, org.kohsuke.stapler.StaplerResponse rsp) throws IOException, javax.servlet.ServletException
      Throws:
      IOException
      javax.servlet.ServletException
    • doCheckJobName

      @Restricted(org.kohsuke.accmod.restrictions.DoNotUse.class) public FormValidation doCheckJobName(@QueryParameter String value)
      Makes sure that the given name is good as a job name. For use from newJob.
    • doItemCategories

      @Restricted(org.kohsuke.accmod.restrictions.DoNotUse.class) public Categories doItemCategories(org.kohsuke.stapler.StaplerRequest2 req, org.kohsuke.stapler.StaplerResponse2 rsp, @QueryParameter String iconStyle) throws IOException, jakarta.servlet.ServletException
      An API REST method to get the allowed {$link TopLevelItem}s and its categories.
      Returns:
      A Categories entity that is shown as JSON file.
      Throws:
      IOException
      jakarta.servlet.ServletException
    • doRssAll

      public void doRssAll(org.kohsuke.stapler.StaplerRequest2 req, org.kohsuke.stapler.StaplerResponse2 rsp) throws IOException, jakarta.servlet.ServletException
      Throws:
      IOException
      jakarta.servlet.ServletException
    • doRssFailed

      public void doRssFailed(org.kohsuke.stapler.StaplerRequest2 req, org.kohsuke.stapler.StaplerResponse2 rsp) throws IOException, jakarta.servlet.ServletException
      Throws:
      IOException
      jakarta.servlet.ServletException
    • getBuilds

      public RunList getBuilds()
    • getTimeline

      @Deprecated @Restricted(org.kohsuke.accmod.restrictions.DoNotUse.class) public BuildTimelineWidget getTimeline()
      Deprecated.
    • doRssLatest

      public void doRssLatest(org.kohsuke.stapler.StaplerRequest2 req, org.kohsuke.stapler.StaplerResponse2 rsp) throws IOException, jakarta.servlet.ServletException
      Throws:
      IOException
      jakarta.servlet.ServletException
    • doConfigDotXml

      @WebMethod(name="config.xml") public org.kohsuke.stapler.HttpResponse doConfigDotXml(org.kohsuke.stapler.StaplerRequest2 req) throws IOException
      Accepts config.xml submission, as well as serve it.
      Throws:
      IOException
      Since:
      2.475
    • doConfigDotXml

      @Deprecated @StaplerNotDispatchable public org.kohsuke.stapler.HttpResponse doConfigDotXml(org.kohsuke.stapler.StaplerRequest req) throws IOException
      Throws:
      IOException
    • writeXml

      public void writeXml(OutputStream out) throws IOException
      Throws:
      IOException
      Since:
      1.538
    • updateByXml

      public void updateByXml(Source source) throws IOException
      Updates the View with the new XML definition.
      Parameters:
      source - source of the Item's new definition. The source should be either a StreamSource or SAXSource, other sources may not be handled.
      Throws:
      IOException
    • doChildrenContextMenu

      public ModelObjectWithContextMenu.ContextMenu doChildrenContextMenu(org.kohsuke.stapler.StaplerRequest2 request, org.kohsuke.stapler.StaplerResponse2 response) throws Exception
      Description copied from interface: ModelObjectWithChildren
      Generates the context menu to list up all the children.
      Specified by:
      doChildrenContextMenu in interface ModelObjectWithChildren
      Throws:
      Exception
    • all

      Returns all the registered ViewDescriptors.
    • allInstantiable

      @NonNull public static List<ViewDescriptor> allInstantiable()
      Returns the ViewDescriptor instances that can be instantiated for the ViewGroup in the current StaplerRequest2.

      NOTE: Historically this method is only ever called from a StaplerRequest2

      Returns:
      the list of instantiable ViewDescriptor instances for the current StaplerRequest2
    • registerPermissions

      @Initializer(before=SYSTEM_CONFIG_LOADED) @Restricted(org.kohsuke.accmod.restrictions.DoNotUse.class) public static void registerPermissions()
    • getItemCreatePermission

      public static Permission getItemCreatePermission()
    • create

      public static View create(org.kohsuke.stapler.StaplerRequest2 req, org.kohsuke.stapler.StaplerResponse2 rsp, ViewGroup owner) throws Descriptor.FormException, IOException, jakarta.servlet.ServletException
      Throws:
      Descriptor.FormException
      IOException
      jakarta.servlet.ServletException
      Since:
      2.475
    • create

      @Deprecated public static View create(org.kohsuke.stapler.StaplerRequest req, org.kohsuke.stapler.StaplerResponse rsp, ViewGroup owner) throws Descriptor.FormException, IOException, javax.servlet.ServletException
      Throws:
      Descriptor.FormException
      IOException
      javax.servlet.ServletException
    • createViewFromXML

      public static View createViewFromXML(String name, InputStream xml) throws IOException
      Instantiate View subtype from XML stream.
      Parameters:
      name - Alternative name to use or null to keep the one in xml.
      Throws:
      IOException