1 /* 2 * $Id$ 3 * 4 * Licensed to the Apache Software Foundation (ASF) under one 5 * or more contributor license agreements. See the NOTICE file 6 * distributed with this work for additional information 7 * regarding copyright ownership. The ASF licenses this file 8 * to you under the Apache License, Version 2.0 (the 9 * "License"); you may not use this file except in compliance 10 * with the License. You may obtain a copy of the License at 11 * 12 * http://www.apache.org/licenses/LICENSE-2.0 13 * 14 * Unless required by applicable law or agreed to in writing, 15 * software distributed under the License is distributed on an 16 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 17 * KIND, either express or implied. See the License for the 18 * specific language governing permissions and limitations 19 * under the License. 20 */ 21 22 23 package org.apache.struts.tiles; 24 25 import java.io.Serializable; 26 27 import jakarta.servlet.ServletContext; 28 import jakarta.servlet.ServletRequest; 29 30 /** 31 * Tiles Definition factory. 32 * This interface replace old ComponentDefinitionsFactory. 33 * Main method getDefinition() is exactly the same. Initialization method change. 34 * This interface allows to retrieve a definition by its name, independently of 35 * the factory implementation. 36 * Object life cycle is as follow: 37 * <ul> 38 * <li>Constructor: create object</li> 39 * <li>setConfig: set config and initialize factory. After first call to this 40 * method, factory is operational.</li> 41 * <li>destroy: factory is being shutdown.</li> 42 * </ul> 43 * Implementation must be Serializable, in order to be compliant with web Container 44 * having this constraint (Weblogic 6.x). 45 */ 46 public interface DefinitionsFactory extends Serializable 47 { 48 49 /** 50 * Get a definition by its name. 51 * @param name Name of requested definition. 52 * @param request Current servelet request 53 * @param servletContext current servlet context 54 * @throws DefinitionsFactoryException An error occur while getting definition. 55 * @throws NoSuchDefinitionException No definition found for specified name 56 * Implementation can throw more accurate exception as a subclass of this exception 57 */ 58 public ComponentDefinition getDefinition(String name, ServletRequest request, ServletContext servletContext) 59 throws NoSuchDefinitionException,DefinitionsFactoryException; 60 61 /** 62 * Init definition factory. 63 * This method is called immediately after factory creation, and prior any call 64 * to setConfig(). 65 * 66 * @param config Configuration object used to set factory configuration. 67 * @param servletContext Servlet Context passed to factory. 68 * @throws DefinitionsFactoryException An error occur during initialization. 69 */ 70 public void init(DefinitionsFactoryConfig config, ServletContext servletContext) 71 throws DefinitionsFactoryException; 72 73 /** 74 * <p>Receive notification that the factory is being 75 * shut down.</p> 76 */ 77 public void destroy(); 78 79 /** 80 * Set factory configuration. 81 * This method is used to change factory configuration. 82 * This method is optional, and can send an exception if implementation 83 * doesn't allow change in configuration. 84 * 85 * @param config Configuration object used to set factory configuration. 86 * @param servletContext Servlet Context passed to factory. 87 * @throws DefinitionsFactoryException An error occur during initialization. 88 */ 89 public void setConfig(DefinitionsFactoryConfig config, ServletContext servletContext) 90 throws DefinitionsFactoryException; 91 92 /** 93 * Get factory configuration. 94 * @return TilesConfig 95 */ 96 public DefinitionsFactoryConfig getConfig(); 97 98 99 }