View Javadoc

1   package org.codehaus.modello.plugin.java.metadata;
2   
3   /*
4    * Copyright (c) 2004, Codehaus.org
5    *
6    * Permission is hereby granted, free of charge, to any person obtaining a copy of
7    * this software and associated documentation files (the "Software"), to deal in
8    * the Software without restriction, including without limitation the rights to
9    * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
10   * of the Software, and to permit persons to whom the Software is furnished to do
11   * so, subject to the following conditions:
12   *
13   * The above copyright notice and this permission notice shall be included in all
14   * copies or substantial portions of the Software.
15   *
16   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22   * SOFTWARE.
23   */
24  
25  import org.codehaus.modello.metadata.AbstractMetadataPlugin;
26  import org.codehaus.modello.metadata.AssociationMetadata;
27  import org.codehaus.modello.metadata.ClassMetadata;
28  import org.codehaus.modello.metadata.FieldMetadata;
29  import org.codehaus.modello.metadata.InterfaceMetadata;
30  import org.codehaus.modello.metadata.MetadataPlugin;
31  import org.codehaus.modello.metadata.ModelMetadata;
32  import org.codehaus.modello.model.Model;
33  import org.codehaus.modello.model.ModelAssociation;
34  import org.codehaus.modello.model.ModelClass;
35  import org.codehaus.modello.model.ModelField;
36  import org.codehaus.modello.model.ModelInterface;
37  
38  import java.util.Map;
39  
40  /**
41   * @author <a href="mailto:evenisse@codehaus.org">Emmanuel Venisse </a>
42   */
43  public class JavaMetadataPlugin
44      extends AbstractMetadataPlugin
45      implements MetadataPlugin
46  {
47      public static final String JAVA_ABSTRACT = "java.abstract";
48  
49      public static final String JAVA_ADDER = "java.adder";
50  
51      public static final String JAVA_BIDI = "java.bidi";
52  
53      public static final String JAVA_ENABLED = "java.enabled";
54  
55      public static final String JAVA_GETTER = "java.getter";
56  
57      public static final String JAVA_INIT = "java.init";
58  
59      public static final String JAVA_SETTER = "java.setter";
60  
61      public static final String JAVA_USE_INTERFACE = "java.useInterface";
62  
63      public static final String JAVA_CLONE = "java.clone";
64  
65      public static final String JAVA_CLONE_HOOK = "java.clone.hook";
66  
67      /**
68       * @since 1.8
69       */
70      public static final String JAVA_GENERATE_TOSTRING = "java.toString";
71  
72      public static final String JAVA_SUPPRESS_ALL_WARNINGS = "java.suppressAllWarnings";
73  
74      /**
75       * @since 1.8
76       */
77      public static final String JAVA_GENERATE_BUILDER = "java.builder";
78  
79      /**
80       * @since 1.8
81       */
82      public static final String JAVA_GENERATE_STATIC_CREATORS = "java.staticCreator";
83  
84      // ----------------------------------------------------------------------
85      // Map to Metadata
86      // ----------------------------------------------------------------------
87  
88      public ModelMetadata getModelMetadata( Model model, Map<String, String> data )
89      {
90          JavaModelMetadata metadata = new JavaModelMetadata();
91  
92          metadata.setSuppressAllWarnings( getBoolean( data, JAVA_SUPPRESS_ALL_WARNINGS, true ) );
93  
94          return metadata;
95      }
96  
97      public ClassMetadata getClassMetadata( ModelClass clazz, Map<String, String> data )
98      {
99          JavaClassMetadata metadata = new JavaClassMetadata();
100 
101         metadata.setEnabled( getBoolean( data, JAVA_ENABLED, true ) );
102 
103         metadata.setAbstract( getBoolean( data, JAVA_ABSTRACT, false ) );
104 
105         metadata.setCloneMode( getString( data, JAVA_CLONE ) );
106 
107         metadata.setCloneHook( getString( data, JAVA_CLONE_HOOK ) );
108 
109         metadata.setGenerateToString( getBoolean( data, JAVA_GENERATE_TOSTRING, false ) );
110 
111         metadata.setGenerateBuilder( getBoolean( data, JAVA_GENERATE_BUILDER, false ) );
112 
113         metadata.setGenerateStaticCreators( getBoolean( data, JAVA_GENERATE_STATIC_CREATORS, false ) );
114 
115         return metadata;
116     }
117 
118     public InterfaceMetadata getInterfaceMetadata( ModelInterface iface, Map<String, String> data )
119     {
120         return new JavaInterfaceMetadata();
121     }
122 
123     public FieldMetadata getFieldMetadata( ModelField field, Map<String, String> data )
124     {
125         JavaFieldMetadata metadata = new JavaFieldMetadata();
126 
127         metadata.setGetter( getBoolean( data, JAVA_GETTER, true ) );
128 
129         String fieldType = field.getType();
130         metadata.setBooleanGetter( ( fieldType != null ) && fieldType.endsWith( "oolean" ) );
131 
132         metadata.setSetter( getBoolean( data, JAVA_SETTER, true ) );
133 
134         return metadata;
135     }
136 
137     public AssociationMetadata getAssociationMetadata( ModelAssociation association, Map<String, String> data )
138     {
139         JavaAssociationMetadata metadata = new JavaAssociationMetadata();
140 
141         metadata.setAdder( getBoolean( data, JAVA_ADDER, true ) );
142 
143         metadata.setBidi( getBoolean( data, JAVA_BIDI, true ) );
144 
145         metadata.setInterfaceName( getString( data, JAVA_USE_INTERFACE ) );
146 
147         metadata.setInitializationMode( getString( data, JAVA_INIT ) );
148 
149         metadata.setCloneMode( getString( data, JAVA_CLONE ) );
150 
151         return metadata;
152     }
153 }