1 package org.apache.onami.test.annotation; 2 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 import java.lang.annotation.Annotation; 23 import java.lang.annotation.ElementType; 24 import java.lang.annotation.Inherited; 25 import java.lang.annotation.Retention; 26 import java.lang.annotation.RetentionPolicy; 27 import java.lang.annotation.Target; 28 29 /** 30 * Annotate your filed into which {@link org.apache.onami.test.GuiceMockModule} will create and inject the mock object. 31 */ 32 @Retention( RetentionPolicy.RUNTIME ) 33 @Target( ElementType.FIELD ) 34 @Inherited 35 public @interface Mock 36 { 37 38 /** 39 * Annotation class used to mark that no annotation binding is defined. 40 */ 41 public static @interface NoAnnotation 42 { 43 } 44 45 /** 46 * Indicates if this mock object has to be resetted after each test method Default: true 47 */ 48 boolean resetAfter() default true; 49 50 /** 51 * The name of the method that provides to mock creation. 52 */ 53 String providedBy() default ""; 54 55 /** 56 * The {@link Class} that contains the method {@link Mock#providedBy()}. By default: the filed declaring class. 57 */ 58 Class<?> providerClass() default Object.class; 59 60 /** 61 * Specifies an annotation {@link Class} that will be used in the <em>Google Guice</em> binder to execute the literal 62 * annotating binding. 63 */ 64 Class<? extends Annotation> annotatedWith() default NoAnnotation.class; 65 66 /** 67 * Specifies an {@link String} annotation that will be used in the <em>Google Guice</em> binder to execute the 68 * literal annotating binding via {@link com.google.inject.name.Named} class. 69 */ 70 String namedWith() default ""; 71 72 /** 73 * Specifies TODO 74 */ 75 MockObjType type() default MockObjType.DEFAULT; 76 77 }