Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  // Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
  //
  // Licensed under the Apache License, Version 2.0 (the "License");
  // you may not use this file except in compliance with the License.
  // You may obtain a copy of the License at
  //
  // http://www.apache.org/licenses/LICENSE-2.0
  //
  // Unless required by applicable law or agreed to in writing, software
 // distributed under the License is distributed on an "AS IS" BASIS,
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
 package org.apache.tapestry5.services;
 
 import java.util.List;
 import java.util.Map;
 
Resolves page names and component types to fully qualified class names. Pages and components may be provided by the application or inside a mapped package. Page names often appear inside URLs, and component types often appear in component template (when specifying the type of an embedded component).

The service is configured using a collection of LibraryMappings. Each mapping maps a prefix, such as "core" to a root package name, such as "org.apache.tapestry5.corelib". The root package is expected to have sub-packages: "pages", "components", "mixins" and "base" ("base" is for base classes).

The resolver performs a search of the classpath (via org.apache.tapestry5.ioc.services.ClassNameLocator), to build up a set of case-insensitive maps from logical page name, component type, or mixin type to fully qualified class name.

Certain ambiguities occur if mapped packages overlap, either in terms of the the prefixes or the package names. Keep things clearly separate to avoid lookup problems.

 
 public interface ComponentClassResolver
 {
    
Converts a logical page name (such as might be encoded into a URL) into a fully qualified class name. The case of the page name is irrelevant.

Parameters:
pageName page name
Returns:
fully qualified class name for the page
Throws:
java.lang.IllegalArgumentException if the name does not match a known page class
 
     String resolvePageNameToClassName(String pageName);

    
For a particular path, determines if the path is a logical page name. The check is case insensitive.

Parameters:
pageName potential logical page name
Returns:
true if the page name is valid
 
     boolean isPageName(String pageName);

    
Returns a list of all page names, in sorted order.
 
     List<StringgetPageNames();

    
Converts a fully qualified page class name into a page name (often, for inclusion as part of the URI). This value may later be passed to resolvePageNameToClassName(java.lang.String).

Parameters:
pageClassName fully qualified name of a page class
Returns:
equivalent logical page name
Throws:
java.lang.IllegalArgumentException if the name can not be resolved
 
     String resolvePageClassNameToPageName(String pageClassName);

    
Returns the canonical form of a page name. The canonical form uses character case matching the underlying class name.

Throws:
java.lang.IllegalArgumentException if the page name does not match a logical page name
 
     String canonicalizePageName(String pageName);

    
Converts a component type (a logical component name such as might be used inside a template or annotation) into a fully qualified class name. Case is ignored in resolving the name.

Parameters:
componentType a logical component type
Returns:
fully qualified class name
Throws:
java.lang.IllegalArgumentException if the component type can not be resolved
 
     String resolveComponentTypeToClassName(String componentType);

    
Converts a logical mixin type (as with component types) into a fully qualified class name. Case is ignored when resolving the name.

Parameters:
mixinType a logical mixin type
Returns:
fully qualified class name
Throws:
java.lang.IllegalArgumentException if the mixin type can not be resolved
    String resolveMixinTypeToClassName(String mixinType);

    
A mapping from virtual folder name to a package name (used for converting classpath org.apache.tapestry5.Assets to client URLs). This is derived from the contributed LibraryMappings.

It is allowed to contribute multiple root packages as a single folder name. In this case, the best common package name is used. For example, if both com.example.main and com.example.extras is mapped to folder "example", then the package mapping for "example" will be com.example.

Since:
5.2.0
See also:
ClasspathAssetAliasManager
New to GrepCode? Check out our FAQ X