1 package org.apache.onami.autobind.annotations; 2 3 /* 4 * Licensed to the Apache Software Foundation (ASF) under one or more 5 * contributor license agreements. See the NOTICE file distributed with 6 * this work for additional information regarding copyright ownership. 7 * The ASF licenses this file to You under the Apache License, Version 2.0 8 * (the "License"); you may not use this file except in compliance with 9 * the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, software 14 * distributed under the License is distributed on an "AS IS" BASIS, 15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 * See the License for the specific language governing permissions and 17 * limitations under the License. 18 */ 19 20 import static org.apache.onami.autobind.annotations.To.Type.INTERFACES; 21 22 /** 23 * Can be used to tell autobind where the class should be bound to. 24 */ 25 public @interface To 26 { 27 28 Type value() default INTERFACES; 29 30 Class<? extends Object>[] customs() default {}; 31 32 public static enum Type 33 { 34 35 /** 36 * Binds the Implementation to itself. Equals 37 * binder.bind(Implementation.class); 38 */ 39 IMPLEMENTATION, 40 41 /** 42 * Binds the Implementation to all implemented Interfaces. 43 * 44 * Equals: for(Interface interface: implementedInterfaces) 45 * binder.bind(interface).to(implementation); 46 */ 47 INTERFACES, 48 49 /** 50 * Binds the Implementation to the extended Super-Class. Equals: 51 * binder.bind(superclass).to(implementation); 52 */ 53 SUPER, 54 55 /** 56 * Binds the Implementation to the Classes specifed by @To(to={}) 57 * 58 * Equals: for(Class<?> class: toClasses) 59 * binder.bind(class).to(implementation); 60 */ 61 CUSTOM 62 63 } 64 65 }