/* * $Id$ * * License Agreement. * * Rich Faces - Natural Ajax for Java Server Faces (JSF) * * Copyright (C) 2007 Exadel, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License version 2.1 as published by the Free Software Foundation. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ package org.richfaces.cdk; import org.richfaces.cdk.model.ClassName; import org.richfaces.cdk.model.ComponentLibrary; import org.richfaces.cdk.model.FacesId; import org.richfaces.cdk.model.InvalidNameException; /** * <p class="changed_added_4_0"> * That interface defines methods that calculates names according to <a href="http://www.jboss.org/community/docs/DOC-13693">CDK * naming conventions</> * </p> * * @author asmirnov@exadel.com */ public interface NamingConventions { /** * <p class="changed_added_4_0"> * Calculates component type from class name. * </p> * <ul> * <li><code><prefix>.component.Abstract<Name></code> =><code><prefix>.<Name></code></li> * <li><code><prefix>.component.<Name>Base</code> => <code><prefix>.<Name></code></li> * <li><code><prefix>.component.UI<Name></code> => <code><prefix>.<Name></code></li> * </ul> * * @param componentClass * @return JSF component type. * @throws InvalidNameException if className does not match naming conventions. */ FacesId inferComponentType(ClassName componentClass) throws InvalidNameException; /** * <p class="changed_added_4_0"> * Calculates concrete component class from explicit value or type. * </p> * <ul> * <li>Calculate name from type as <code><prefix>.<Name></code> => * <code><prefix>.component.UI<Name></code> .</li> * </ul> * * @param componentType JSF component type. * @return Descriptor of generated UIComponent class. * @throws InvalidNameException if component type does not follow naming conventions. */ ClassName inferUIComponentClass(FacesId componentType) throws InvalidNameException; /** * <p class="changed_added_4_0"> * Infer component family by component type * </p> * * @param componentType * @return * @throws InvalidNameException */ FacesId inferUIComponentFamily(FacesId componentType) throws InvalidNameException; /** * <p class="changed_added_4_0"> * </p> * * @param componentType * @param markup * @return * @throws InvalidNameException */ ClassName inferTagHandlerClass(FacesId componentType, String markup) throws InvalidNameException; /** * <p class="changed_added_4_0"> * Infer VDL tag name by component type * </p> * * @param componentType * @return * @throws InvalidNameException */ String inferTagName(FacesId componentType) throws InvalidNameException; /** * <p class="changed_added_4_0"> * Determine renderer type by Java class * </p> * * @param targetClass * @return */ FacesId inferRendererType(ClassName targetClass); /** * <p class="changed_added_4_0"> * Infer renderer family by renderer type * </p> * * @param type * @return */ FacesId inferRendererFamily(FacesId type); /** * <p class="changed_added_4_0"> * Infer renderer type from template file path * </p> * * @param templateName * @return */ FacesId inferRendererTypeByTemplatePath(String templateName); /** * <p class="changed_added_4_0"> * Infer Java class name by renderer type. * </p> * * @param id * @return */ ClassName inferRendererClass(FacesId id); /** * <p class="changed_added_4_0"> * Infer behavior type by class name * </p> * * @param targetClass * @return */ FacesId inferBehaviorType(ClassName targetClass); /** * <p class="changed_added_4_0"> * Infer name for generated behavior class by type * </p> * * @param id * @return */ ClassName inferBehaviorClass(FacesId id); /** * <p class="changed_added_4_0"> * Determine default taglib uri from library model. * </p> * * @param library * @return */ String inferTaglibUri(ComponentLibrary library); /** * <p class="changed_added_4_0"> * Infer short taglib name from URI * </p> * * @param uri * @return */ String inferTaglibName(String uri); /** * <p class="changed_added_4_0"> * Infer renderer type by component type or family. * </p> * * @param id * @return */ FacesId inferRendererType(FacesId id); }