| // 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.ioc; |
| |
| import org.apache.tapestry5.ioc.annotations.EagerLoad; |
| import org.apache.tapestry5.ioc.annotations.Scope; |
| |
| import java.lang.annotation.Annotation; |
| |
| /** |
| * Allows additional options for a service to be specified, overriding hard coded defaults or defaults from annotations |
| * on the service. |
| * |
| * @see org.apache.tapestry5.ioc.def.ServiceDef2 |
| */ |
| public interface ServiceBindingOptions |
| { |
| /** |
| * Allows a specific service id for the service to be provided, rather than the default (from the service |
| * interface). This is useful when multiple services implement the same interface, since service ids must be |
| * unique. |
| * |
| * @param id |
| * @return this binding options, for further configuration |
| */ |
| ServiceBindingOptions withId(String id); |
| |
| /** |
| * Uses the the simple (unqualified) class name of the implementation class as the id of the service. |
| * |
| * @return this binding options, for further configuration |
| * @throws IllegalStateException if the class name was not defined (via {@link ServiceBinder#bind(Class, Class)} or |
| * {@link ServiceBinder#bind(Class)}). |
| * @since 5.3 |
| */ |
| ServiceBindingOptions withSimpleId(); |
| |
| /** |
| * Sets the scope of the service, overriding the {@link Scope} annotation on the service implementation class. |
| * |
| * @param scope |
| * @return this binding options, for further configuration |
| * @see org.apache.tapestry5.ioc.ScopeConstants |
| */ |
| ServiceBindingOptions scope(String scope); |
| |
| /** |
| * Turns eager loading on for this service. This may also be accomplished using the {@link EagerLoad} annotation on |
| * the service implementation class. |
| * |
| * @return this binding options, for further configuration |
| */ |
| ServiceBindingOptions eagerLoad(); |
| |
| /** |
| * Disallows service decoration for this service. |
| * |
| * @return this binding options, for further configuration |
| */ |
| ServiceBindingOptions preventDecoration(); |
| |
| /** |
| * Identifies a service for which live class reloading is not desired. This primarily applies to certain |
| * internal Tapestry services, and is necessary during the development of Tapestry itself. In user applications, |
| * services defined in library modules are not subject to reloading because the class files are stored in JARs, not |
| * as local file system files. |
| * |
| * @since 5.2.0 |
| */ |
| ServiceBindingOptions preventReloading(); |
| |
| /** |
| * Defines the marker interface(s) for the service, used to connect injections by type at the point of injection |
| * with a particular service implementation, based on the intersection of type and marker interface. The containing |
| * module will sometimes provide a set of default marker annotations for all services within the module, this method |
| * allows that default to be extended. |
| * |
| * @param marker one or more markers to add |
| * @return this binding options, for further configuration |
| */ |
| ServiceBindingOptions withMarker(Class<? extends Annotation>... marker); |
| } |