View Javadoc
1   package ca.uhn.fhir.model.api.annotation;
2   
3   /*
4    * #%L
5    * HAPI FHIR - Core Library
6    * %%
7    * Copyright (C) 2014 - 2018 University Health Network
8    * %%
9    * Licensed under the Apache License, Version 2.0 (the "License");
10   * you may not use this file except in compliance with the License.
11   * You may obtain a copy of the License at
12   * 
13   *      http://www.apache.org/licenses/LICENSE-2.0
14   * 
15   * Unless required by applicable law or agreed to in writing, software
16   * distributed under the License is distributed on an "AS IS" BASIS,
17   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18   * See the License for the specific language governing permissions and
19   * limitations under the License.
20   * #L%
21   */
22  
23  import java.lang.annotation.ElementType;
24  import java.lang.annotation.Retention;
25  import java.lang.annotation.RetentionPolicy;
26  import java.lang.annotation.Target;
27  
28  import org.hl7.fhir.instance.model.api.IBaseDatatype;
29  
30  import ca.uhn.fhir.model.primitive.BoundCodeDt;
31  import ca.uhn.fhir.model.primitive.CodeDt;
32  
33  /**
34   * Class annotation to note a class which defines a datatype
35   */
36  @Retention(RetentionPolicy.RUNTIME)
37  @Target(value= {ElementType.TYPE})
38  public @interface DatatypeDef {
39  
40  	/**
41  	 * The defined name of this datatype
42  	 */
43  	String name();
44  	
45  	/**
46  	 * Set this to true (default is false) for any types that are
47  	 * really only a specialization of another type. For example,
48  	 * {@link BoundCodeDt} is really just a specific type of 
49  	 * {@link CodeDt} and not a separate datatype, so it should
50  	 * have this set to true.
51  	 */
52  	boolean isSpecialization() default false;
53  	
54  	/**
55  	 * Indicates that this datatype is a profile of the given datatype, which
56  	 * implies certain parsing/encoding rules (e.g. a choice element named
57  	 * foo[x] which allows a Markdown value will still be encoded as
58  	 * fooString because Markdown is a profile of string.
59  	 */
60  	Class<? extends IBaseDatatype> profileOf() default IBaseDatatype.class;
61  
62  }