1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one 3 * or more contributor license agreements. See the NOTICE file 4 * distributed with this work for additional information 5 * regarding copyright ownership. The ASF licenses this file 6 * to you under the Apache License, Version 2.0 (the 7 * "License"); you may not use this file except in compliance 8 * with the License. You may obtain a copy of the License at 9 * 10 * http://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, 13 * software distributed under the License is distributed on an 14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 * KIND, either express or implied. See the License for the 16 * specific language governing permissions and limitations 17 * under the License. 18 */ 19 20 package org.apache.myfaces.orchestra.viewController.annotations; 21 22 import java.lang.annotation.Target; 23 import java.lang.annotation.ElementType; 24 import java.lang.annotation.Retention; 25 import java.lang.annotation.RetentionPolicy; 26 27 /** 28 * Defines a class as ViewController to receive ViewController events for 29 * the given viewId(s). 30 * <p> 31 * This requires that the Orchestra ViewController is active, and that the 32 * AnnotationsViewControllerNameMapper is in use. 33 * <p> 34 * This annotation is an alternative to using the "bean name matches viewid" 35 * approach of the DefaultViewControllerNameMapper. 36 * <p> 37 * Whether this is the best approach to pairing a view with a controller bean 38 * depends upon the project. This does cause tight coupling between bean and 39 * view; moving a view requires modifying the bean. This is not appropriate for 40 * a project where "ui designer" and "code developer" roles are separated. However 41 * for other projects where the same person plays both roles then using this 42 * annotation reduces the amount of configuration required. 43 */ 44 @Target(value = {ElementType.TYPE}) 45 @Retention(value = RetentionPolicy.RUNTIME) 46 public @interface ViewController 47 { 48 /** 49 * the ViewIds the bean is responsible for 50 */ 51 String[] viewIds() default {}; 52 }