01: // Copyright 2006 The Apache Software Foundation
02: //
03: // Licensed under the Apache License, Version 2.0 (the "License");
04: // you may not use this file except in compliance with the License.
05: // You may obtain a copy of the License at
06: //
07: // http://www.apache.org/licenses/LICENSE-2.0
08: //
09: // Unless required by applicable law or agreed to in writing, software
10: // distributed under the License is distributed on an "AS IS" BASIS,
11: // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12: // See the License for the specific language governing permissions and
13: // limitations under the License.
14:
15: package org.apache.tapestry.internal.services;
16:
17: import java.util.Locale;
18:
19: import org.apache.tapestry.internal.event.InvalidationEventHub;
20: import org.apache.tapestry.internal.parser.ComponentTemplate;
21: import org.apache.tapestry.model.ComponentModel;
22:
23: /**
24: * Provides access to cached {@link org.apache.tapestry.internal.parser.ComponentTemplate}s. The
25: * source acts as a invalidation event hub, and will broadcast invalidation events when any loaded
26: * template resource changes. The listener for these invalidation events is the page source, which
27: * stores cached page instances.
28: * <p>
29: * Any search for a template will end with success (a non-null template), but the template returned
30: * may be the {@link ComponentTemplate#isMissing() missing template}.
31: * <p>
32: * TODO: A more sophisticated, finer grained dependency manager.
33: */
34: public interface ComponentTemplateSource extends InvalidationEventHub {
35: /**
36: * Provides access to a template. The template will be parsed as necessary. If no template for
37: * the exact component is found, then the template for the component's parent is returned. In
38: * this way, it is possible for a component to extend the behavior of its super-class without
39: * duplicating the super-class component's template.
40: * <p>
41: * In some cases, the empty template will be returned.
42: *
43: * @param componentModel
44: * model for the component whose template is to be accessed
45: * @param locale
46: * the locale to find the template within
47: * @return the cached template instance
48: */
49: ComponentTemplate getTemplate(ComponentModel componentModel,
50: Locale locale);
51: }
|