001    /**
002     * Copyright (C) 2009-2011 the original author or authors.
003     * See the notice.md file distributed with this work for additional
004     * information regarding copyright ownership.
005     *
006     * Licensed under the Apache License, Version 2.0 (the "License");
007     * you may not use this file except in compliance with the License.
008     * You may obtain a copy of the License at
009     *
010     *     http://www.apache.org/licenses/LICENSE-2.0
011     *
012     * Unless required by applicable law or agreed to in writing, software
013     * distributed under the License is distributed on an "AS IS" BASIS,
014     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015     * See the License for the specific language governing permissions and
016     * limitations under the License.
017     */
018    
019    package org.fusesource.restygwt.client;
020    
021    import static java.lang.annotation.ElementType.METHOD;
022    import static java.lang.annotation.ElementType.TYPE;
023    import static java.lang.annotation.RetentionPolicy.RUNTIME;
024    
025    import java.lang.annotation.Documented;
026    import java.lang.annotation.Retention;
027    import java.lang.annotation.Target;
028    
029    @Documented
030    @Retention(RUNTIME)
031    @Target( { METHOD, TYPE })
032    public @interface ModelChange {
033    
034        /**
035         * When creating the ``RestService`` classes, there will be put some information
036         * in {@link Method#addData(String, String)}. To have a centralized place
037         * what is the key on that ``put`` (and later ``get``) operation, we have this
038         * constant here.
039         */
040        public static final String MODEL_CHANGED_DOMAIN_KEY = "mc";
041    
042        /**
043         * on which HTTP methods will events be published.
044         *
045         * publishing happens after successful HTTP call
046         */
047        String[] on() default {};
048    
049        /**
050         * Defines which Domain class is indicated to be updated.
051         * In the Handler will arrive the full qualified classname.
052         *
053         * @return
054         */
055        Class[] domain() default {};
056    }