com.sun.jersey.api.view
Class Viewable

java.lang.Object
  extended by com.sun.jersey.api.view.Viewable
Direct Known Subclasses:
ResolvedViewable

public class Viewable
extends java.lang.Object

A viewable type referencing a template by name and a model to be passed to the template. Such a type may be returned by a resource method of a resource class. In this respect the template is the view and the controller is the resource class in the Model View Controller pattern.

The template name may be declared as absolute template name if the name begins with a '/', otherwise the template name is declared as a relative template name.

A relative template name requires resolving to an absolute template name when the viewable type is processed. If a resolving class is present then that class will be used to resolve the relative template name. If a resolving class is not present then the class of the last matching resource obtained from UriInfo.getMatchedResources(), namely the class obtained from the expression uriInfo.getMatchedResources().get(0).getClass(), is utilized as the resolving class. If there are no matching resources then an error will result.

The resolving class, and super classes in the inheritence hierarchy, are utilized to generate the absolute template name as follows. The base path starts with '/' character, followed by the fully qualified class name of the resolving class, with any '.' and '$' characters replaced with a '/' character, followed by a '/' character, followed by the relative template name. If the absolute template name cannot be resolved into a template reference (see ViewProcessor and TemplateContext) then the super class of the resolving class is utilized, and is set as the resolving class. Traversal up the inheritence hierarchy proceeds until an absolute template name can be resolved into a template reference, or the Object class is reached, which means the absolute template name could not be resolved and an error will result.

Author:
[email protected]

Constructor Summary
Viewable(java.lang.String templateName)
          Construct a new viewable type with a template name.
Viewable(java.lang.String templateName, java.lang.Object model)
          Construct a new viewable type with a template name and a model.
Viewable(java.lang.String templateName, java.lang.Object model, java.lang.Class<?> resolvingClass)
          Construct a new viewable type with a template name, a model and a resolving class.
 
Method Summary
 java.lang.Object getModel()
          Get the model.
 java.lang.Class<?> getResolvingClass()
          Get the resolving class.
 java.lang.String getTemplateName()
          Get the template name.
 boolean isTemplateNameAbsolute()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Viewable

public Viewable(java.lang.String templateName)
Construct a new viewable type with a template name.

The model will be set to null.

Parameters:
templateName - the template name, shall not be null.

Viewable

public Viewable(java.lang.String templateName,
                java.lang.Object model)
Construct a new viewable type with a template name and a model.

Parameters:
templateName - the template name, shall not be null.
model - the model, may be null.

Viewable

public Viewable(java.lang.String templateName,
                java.lang.Object model,
                java.lang.Class<?> resolvingClass)
         throws java.lang.IllegalArgumentException
Construct a new viewable type with a template name, a model and a resolving class.

Parameters:
templateName - the template name, shall not be null.
model - the model, may be null.
resolvingClass - the class to use to resolve the template name if the template is not absolute, if null then the resolving class will be obtained from the last matching resource.
Throws:
java.lang.IllegalArgumentException - if the template name is null.
Method Detail

getTemplateName

public java.lang.String getTemplateName()
Get the template name.

Returns:
the template name.

getModel

public java.lang.Object getModel()
Get the model.

Returns:
the model.

getResolvingClass

public java.lang.Class<?> getResolvingClass()
Get the resolving class.

Returns:
the resolving class.

isTemplateNameAbsolute

public boolean isTemplateNameAbsolute()
Returns:
true if the template name is absolute, and starts with a '/' character


Copyright © 2011 Oracle Corporation. All Rights Reserved.