001/* 002 * (C) Copyright 2015 Nuxeo SA (http://nuxeo.com/) and others. 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 * 016 * Contributors: 017 * Nicolas Chapurlat <nchapurlat@nuxeo.com> 018 */ 019 020package org.nuxeo.ecm.core.io.registry.reflect; 021 022import java.lang.annotation.Documented; 023import java.lang.annotation.ElementType; 024import java.lang.annotation.Retention; 025import java.lang.annotation.RetentionPolicy; 026import java.lang.annotation.Target; 027 028import org.nuxeo.ecm.core.io.registry.MarshallerRegistry; 029 030/** 031 * Annotation used to setup a class as a marshaller and define its instantiation mode and priority. 032 * <p> 033 * see {@link Instantiations} for instantiation mode explanation. 034 * </p> 035 * <p> 036 * see {@link MarshallerRegistry} for instantiation rules. 037 * </p> 038 * 039 * @since 7.2 040 */ 041@Documented 042@Retention(RetentionPolicy.RUNTIME) 043@Target(ElementType.TYPE) 044public @interface Setup { 045 046 /** 047 * see {@link Instantiations} for values. 048 * 049 * @since 7.2 050 */ 051 Instantiations mode(); 052 053 /** 054 * see {@link Priorities} for example values. 055 * 056 * @since 7.2 057 */ 058 int priority() default Priorities.DEFAULT; 059 060}