001 // Copyright 2004, 2005 The Apache Software Foundation
002 //
003 // Licensed under the Apache License, Version 2.0 (the "License");
004 // you may not use this file except in compliance with the License.
005 // You may obtain a copy of the License at
006 //
007 // http://www.apache.org/licenses/LICENSE-2.0
008 //
009 // Unless required by applicable law or agreed to in writing, software
010 // distributed under the License is distributed on an "AS IS" BASIS,
011 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
012 // See the License for the specific language governing permissions and
013 // limitations under the License.
014
015 package org.apache.tapestry.spec;
016
017 import org.apache.hivemind.ClassResolver;
018 import org.apache.tapestry.bean.BindingBeanInitializer;
019 import org.apache.tapestry.binding.BindingSource;
020 import org.apache.tapestry.coerce.ValueConverter;
021
022 /**
023 * A Factory used by {@link org.apache.tapestry.parse.SpecificationParser}
024 * to create Tapestry domain objects.
025 * <p>
026 * The default implementation here creates the expected runtime instances of
027 * classes in packages:
028 * <ul>
029 * <li>org.apache.tapestry.spec</li>
030 * <li>org.apache.tapestry.bean</li>
031 * </ul>
032 * <p>
033 * This class is extended by Spindle - the Eclipse Plugin for Tapestry
034 *
035 * @author GWL
036 * @since 1.0.9
037 */
038
039 public class SpecFactory
040 {
041
042 /**
043 * Creates a concrete instance of {@link ApplicationSpecification}.
044 */
045
046 public IApplicationSpecification createApplicationSpecification()
047 {
048 return new ApplicationSpecification();
049 }
050
051 /**
052 * Creates an instance of {@link LibrarySpecification}.
053 *
054 * @since 2.2
055 */
056
057 public ILibrarySpecification createLibrarySpecification()
058 {
059 return new LibrarySpecification();
060 }
061
062 /**
063 * Returns a new instance of {@link IAssetSpecification}.
064 *
065 * @since 3.0
066 */
067
068 public IAssetSpecification createAssetSpecification()
069 {
070 return new AssetSpecification();
071 }
072
073 /**
074 * Creates a new instance of {@link IBeanSpecification}.
075 *
076 * @since 3.0
077 */
078
079 public IBeanSpecification createBeanSpecification()
080 {
081 return new BeanSpecification();
082 }
083
084 public IBindingSpecification createBindingSpecification()
085 {
086 return new BindingSpecification();
087 }
088
089 /**
090 * Creates a concrete instance of {@link IComponentSpecification}.
091 */
092
093 public IComponentSpecification createComponentSpecification()
094 {
095 return new ComponentSpecification();
096 }
097
098 /**
099 * Creates a concrete instance of {@link IContainedComponent}.
100 */
101
102 public IContainedComponent createContainedComponent()
103 {
104 return new ContainedComponent();
105 }
106
107 /**
108 * Creates a concrete instance of {@link ParameterSpecification}.
109 */
110
111 public IParameterSpecification createParameterSpecification()
112 {
113 return new ParameterSpecification();
114 }
115
116 /** @since 4.0 */
117 public BindingBeanInitializer createBindingBeanInitializer(
118 BindingSource source)
119 {
120 return new BindingBeanInitializer(source);
121 }
122
123 /**
124 * Creates a concrete instance of
125 * {@link org.apache.tapestry.spec.IExtensionSpecification}.
126 *
127 * @since 2.2
128 */
129
130 public IExtensionSpecification createExtensionSpecification(
131 ClassResolver resolver, ValueConverter valueConverter)
132 {
133 return new ExtensionSpecification(resolver, valueConverter);
134 }
135
136 /**
137 * Creates a concrete instance of
138 * {@link org.apache.tapestry.spec.IPropertySpecification}.
139 *
140 * @since 3.0
141 */
142
143 public IPropertySpecification createPropertySpecification()
144 {
145 return new PropertySpecification();
146 }
147
148 /** @since 4.0 */
149 public InjectSpecification createInjectSpecification()
150 {
151 return new InjectSpecificationImpl();
152 }
153 }