1- ## Tutorial for writing your templates
1+ <?xml version =" 1.0" encoding =" UTF-8" standalone =" yes" ?>
2+ <codeTemplateList >
3+ <templates >
4+ <templates version =" 1.3" >
5+ <id >26838331-5f44-406c-a7f8-57df74eb084f</id >
6+ <name >HUESerialization</name >
7+ <fileNamePattern >.*\.java$</fileNamePattern >
8+ <type >body</type >
9+ <enabled >true</enabled >
10+ <template >## Tutorial for writing your templates
211##
312## 1. First you need to know basic syntax of velocity[1].
413## 2. Then it is necessary to understand the variable that CodeGenerator provides
1524## - class0: ClassEntry The class that the action is triggered upon
1625## - raw: PsiClass
1726## - String packageName
18- ## - importList: List< String>
19- ## - fields: List< FieldEntry>
20- ## - allFields: List< FieldEntry>
21- ## - methods: List< MethodEntry>
22- ## - allMethods: List< MethodEntry>
23- ## - innerClasses: List< ClassEntry>
24- ## - allInnerClasses: List< ClassEntry>
25- ## - typeParamList: List< String>
27+ ## - importList: List< String>
28+ ## - fields: List< FieldEntry>
29+ ## - allFields: List< FieldEntry>
30+ ## - methods: List< MethodEntry>
31+ ## - allMethods: List< MethodEntry>
32+ ## - innerClasses: List< ClassEntry>
33+ ## - allInnerClasses: List< ClassEntry>
34+ ## - typeParamList: List< String>
2635## - name: String
2736## - superName: String
2837## - superQualifiedName: String
100109## Variables for Body Mode
101110## -----------------------
102111## - class0: ClassEntry The current class
103- ## - fields: List< FieldEntry> All selected fields
104- ## - methods: List< MethodEntry> All selected methods
105- ## - members: List< MemberEntry> selected fields+methods
112+ ## - fields: List< FieldEntry> All selected fields
113+ ## - methods: List< MethodEntry> All selected methods
114+ ## - members: List< MemberEntry> selected fields+methods
106115## - class: ClassElement For compatibility only, prefer to use class0 instead
107116## - classname: String For compatibility only, the class name of current class
108117## - FQClassname: String For compatibility only, Full Qualified Class Name
@@ -130,13 +139,13 @@ private static final int CURR_VERSION = 0;
130139@Override public void write(com.worksap.company.framework.serializer.wrapper.OutputSource outputSource) {
131140 outputSource.writeInt(CURR_VERSION);
132141#foreach( $member in $members )
133- #set($memberType = $member.type.split("< ").get(0))
142+ #set($memberType = $member.type.split("< ").get(0))
134143 #set($type = $javaPsiFacade.findClass($memberType, $global))
135144 #if ($member.primitive)
136145 outputSource.write${StringUtil.capitalizeWithJavaBeanConvention($memberType)}($member.name);
137146 #elseif($member.isString())
138147 outputSource.writeString($member.name);
139- #elseif($type == $null || $type.isInterface() || $type.getModifierList().hasModifierProperty("abstract") || $type.getTypeParameterList().getTextLength() > 0)
148+ #elseif($type == $null || $type.isInterface() || $type.getModifierList().hasModifierProperty("abstract") || $type.getTypeParameterList().getTextLength() > 0)
140149 outputSource.writeGenericObject($member.name);
141150 #else
142151 outputSource.writeConcreteObject($member.name, ${memberType}.class);
@@ -148,17 +157,53 @@ private static final int CURR_VERSION = 0;
148157 int version = inputSource.readInt();
149158 if (version == 0) {
150159#foreach( $member in $members )
151- #set($memberType = $member.type.split("< ").get(0))
160+ #set($memberType = $member.type.split("< ").get(0))
152161 #set($type = $javaPsiFacade.findClass($memberType, $global))
153162 #if ($member.primitive)
154163 $member.name = inputSource.read${StringUtil.capitalizeWithJavaBeanConvention($memberType)}();
155164 #elseif($member.isString())
156165 $member.name = inputSource.readString();
157- #elseif($type == $null || $type.isInterface() || $type.getModifierList().hasModifierProperty("abstract") || $type.getTypeParameterList().getTextLength() > 0)
166+ #elseif($type == $null || $type.isInterface() || $type.getModifierList().hasModifierProperty("abstract") || $type.getTypeParameterList().getTextLength() > 0)
158167 $member.name = ($member.type)inputSource.readGenericObject();
159168 #else
160169 $member.name = inputSource.readConcreteObject(${memberType}.class);
161170 #end
162171#end
163172 }
164- }
173+ }</template >
174+ <fileEncoding >UTF-8</fileEncoding >
175+ <pipeline >
176+ <memberSelection >
177+ <filterConstantField >true</filterConstantField >
178+ <filterEnumField >false</filterEnumField >
179+ <filterTransientModifier >false</filterTransientModifier >
180+ <filterStaticModifier >true</filterStaticModifier >
181+ <filterLoggers >true</filterLoggers >
182+ <filterFieldName ></filterFieldName >
183+ <filterFieldType ></filterFieldType >
184+ <filterMethodName ></filterMethodName >
185+ <filterMethodType ></filterMethodType >
186+ <enableMethods >false</enableMethods >
187+ <providerTemplate >## set `availableMembers` to provide the members to select
188+ ## set `selectedMembers` to select the members initially, set nothing to select all
189+ ## Note that it should be type List< PsiMember> or List< MemberEntry>
190+ ## And the selected result will be
191+ ## - fields1: List< FieldEntry> where `1` is the step number that you specified
192+ ## - methods1: List< MethodEntry>
193+ ## - members: List< MemberEntry>
194+ #set($availableMembers = $class0.members)
195+ </providerTemplate >
196+ <allowMultiSelection >true</allowMultiSelection >
197+ <allowEmptySelection >true</allowEmptySelection >
198+ <sortElements >0</sortElements >
199+ <postfix >1</postfix >
200+ <enabled >true</enabled >
201+ </memberSelection >
202+ </pipeline >
203+ <insertNewMethodOption >AT_CARET</insertNewMethodOption >
204+ <whenDuplicatesOption >ASK</whenDuplicatesOption >
205+ <jumpToMethod >true</jumpToMethod >
206+ <classNameVm >$class0.name</classNameVm >
207+ </templates >
208+ </templates >
209+ </codeTemplateList >
0 commit comments