001/** 002 * Copyright (C) 2006-2018 Talend Inc. - www.talend.com 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016package org.talend.sdk.component.api.configuration.action; 017 018import static java.lang.annotation.ElementType.FIELD; 019import static java.lang.annotation.ElementType.PARAMETER; 020import static java.lang.annotation.RetentionPolicy.RUNTIME; 021 022import java.lang.annotation.Retention; 023import java.lang.annotation.Target; 024 025import org.talend.sdk.component.api.configuration.action.meta.ActionRef; 026import org.talend.sdk.component.api.meta.Documentation; 027import org.talend.sdk.component.api.service.healthcheck.HealthCheck; 028import org.talend.sdk.component.api.service.update.Update; 029 030@ActionRef(Update.class) 031@Documentation("Mark the decorated instance as replacable with an action returning a new instance. It is " 032 + "typically useful to implement \"guess my configuration\" kind of interaction.") 033@Target({ PARAMETER, FIELD }) 034@Retention(RUNTIME) 035public @interface Updatable { 036 037 /** 038 * @return value of @{@link Update} method form this component family update actions. 039 */ 040 String value(); 041 042 /** 043 * @return property reference in the decorated object to append the button after. 044 */ 045 String after() default ""; 046 047 /** 048 * This "list" will represent the parameter the caller will send to the action. 049 * 050 * Syntax is the following: 051 * 052 * <ul> 053 * <li>.: represents the decorated option (aka "this")</li> 054 * <li>../foo: represents the 055 * 056 * <pre> 057 * foo 058 * </pre> 059 * 060 * option of the parent (if exists) of "."</li> 061 * <li>bar: represents the 062 * 063 * <pre> 064 * bar 065 * </pre> 066 * 067 * sibling option of the decorated field</li> 068 * <li>bar/dummy: represents the 069 * 070 * <pre> 071 * dummy 072 * </pre> 073 * 074 * option of the child bar of the decorated field</li> 075 * </ul> 076 * 077 * This syntax is close to path syntax but the important point is all the parameters are related to the decorated option. 078 * 079 * By default no data are sent since you generally need other parts of the form than the decorated model to be able 080 * to populate it. 081 * 082 * @return parameters for the action. 083 */ 084 String[] parameters() default {}; 085}