1
2
3
4
5 package org.andromda.cartridges.jsf2.metafacades;
6
7 import java.util.Collection;
8 import java.util.List;
9 import org.andromda.core.common.Introspector;
10 import org.andromda.core.metafacade.MetafacadeBase;
11 import org.andromda.core.metafacade.MetafacadeFactory;
12 import org.andromda.core.metafacade.ModelValidationMessage;
13 import org.andromda.metafacades.uml.AssociationEndFacade;
14 import org.andromda.metafacades.uml.AttributeFacade;
15 import org.andromda.metafacades.uml.ClassifierFacade;
16 import org.andromda.metafacades.uml.ConstraintFacade;
17 import org.andromda.metafacades.uml.DependencyFacade;
18 import org.andromda.metafacades.uml.GeneralizableElementFacade;
19 import org.andromda.metafacades.uml.GeneralizationFacade;
20 import org.andromda.metafacades.uml.ModelElementFacade;
21 import org.andromda.metafacades.uml.ModelFacade;
22 import org.andromda.metafacades.uml.OperationFacade;
23 import org.andromda.metafacades.uml.PackageFacade;
24 import org.andromda.metafacades.uml.StateMachineFacade;
25 import org.andromda.metafacades.uml.StereotypeFacade;
26 import org.andromda.metafacades.uml.TaggedValueFacade;
27 import org.andromda.metafacades.uml.TemplateParameterFacade;
28 import org.andromda.metafacades.uml.TypeMappings;
29 import org.apache.log4j.Logger;
30
31
32
33
34
35
36
37
38 public abstract class JSFPortletPreferencesLogic
39 extends MetafacadeBase
40 implements JSFPortletPreferences
41 {
42
43
44
45
46 protected Object metaObject;
47
48
49
50
51
52 protected JSFPortletPreferencesLogic(Object metaObjectIn, String context)
53 {
54 super(metaObjectIn, getContext(context));
55 this.superClassifierFacade =
56 (ClassifierFacade)
57 MetafacadeFactory.getInstance().createFacadeImpl(
58 "org.andromda.metafacades.uml.ClassifierFacade",
59 metaObjectIn,
60 getContext(context));
61 this.metaObject = metaObjectIn;
62 }
63
64
65
66
67 private static final Logger logger = Logger.getLogger(JSFPortletPreferencesLogic.class);
68
69
70
71
72
73
74 private static String getContext(String context)
75 {
76 if (context == null)
77 {
78 context = "org.andromda.cartridges.jsf2.metafacades.JSFPortletPreferences";
79 }
80 return context;
81 }
82
83 private ClassifierFacade superClassifierFacade;
84 private boolean superClassifierFacadeInitialized = false;
85
86
87
88
89
90 private ClassifierFacade getSuperClassifierFacade()
91 {
92 if (!this.superClassifierFacadeInitialized)
93 {
94 ((MetafacadeBase)this.superClassifierFacade).setMetafacadeContext(this.getMetafacadeContext());
95 this.superClassifierFacadeInitialized = true;
96 }
97 return this.superClassifierFacade;
98 }
99
100
101
102
103
104 @Override
105 public void resetMetafacadeContext(String context)
106 {
107 if (!this.contextRoot)
108 {
109 context = getContext(context);
110 setMetafacadeContext (context);
111 if (this.superClassifierFacadeInitialized)
112 {
113 ((MetafacadeBase)this.superClassifierFacade).resetMetafacadeContext(context);
114 }
115 }
116 }
117
118
119
120
121
122 public boolean isJSFPortletPreferencesMetaType()
123 {
124 return true;
125 }
126
127
128
129 private JSFUseCase __getUseCase1r;
130 private boolean __getUseCase1rSet = false;
131
132
133
134
135
136 public final JSFUseCase getUseCase()
137 {
138 JSFUseCase getUseCase1r = this.__getUseCase1r;
139 if (!this.__getUseCase1rSet)
140 {
141
142 Object result = handleGetUseCase();
143 MetafacadeBase shieldedResult = this.shieldedElement(result);
144 try
145 {
146 getUseCase1r = (JSFUseCase)shieldedResult;
147 }
148 catch (ClassCastException ex)
149 {
150
151 JSFPortletPreferencesLogic.logger.warn("incorrect metafacade cast for JSFPortletPreferencesLogic.getUseCase JSFUseCase " + result + ": " + shieldedResult);
152 }
153
154 this.__getUseCase1r = getUseCase1r;
155 if (isMetafacadePropertyCachingEnabled())
156 {
157 this.__getUseCase1rSet = true;
158 }
159 }
160 return getUseCase1r;
161 }
162
163
164
165
166
167 protected abstract Object handleGetUseCase();
168
169
170
171
172
173 public boolean isClassifierFacadeMetaType()
174 {
175 return true;
176 }
177
178
179
180
181
182 public boolean isGeneralizableElementFacadeMetaType()
183 {
184 return true;
185 }
186
187
188
189
190
191 public boolean isModelElementFacadeMetaType()
192 {
193 return true;
194 }
195
196
197
198
199
200
201 public AttributeFacade findAttribute(String name)
202 {
203 return this.getSuperClassifierFacade().findAttribute(name);
204 }
205
206
207
208
209
210 public Collection<ClassifierFacade> getAbstractions()
211 {
212 return this.getSuperClassifierFacade().getAbstractions();
213 }
214
215
216
217
218
219
220 public Collection<ClassifierFacade> getAllAssociatedClasses()
221 {
222 return this.getSuperClassifierFacade().getAllAssociatedClasses();
223 }
224
225
226
227
228
229
230 public Collection<ModelElementFacade> getAllProperties()
231 {
232 return this.getSuperClassifierFacade().getAllProperties();
233 }
234
235
236
237
238
239
240 public Collection<ModelElementFacade> getAllRequiredConstructorParameters()
241 {
242 return this.getSuperClassifierFacade().getAllRequiredConstructorParameters();
243 }
244
245
246
247
248
249
250 public ClassifierFacade getArray()
251 {
252 return this.getSuperClassifierFacade().getArray();
253 }
254
255
256
257
258
259 public String getArrayName()
260 {
261 return this.getSuperClassifierFacade().getArrayName();
262 }
263
264
265
266
267
268
269 public Collection<ClassifierFacade> getAssociatedClasses()
270 {
271 return this.getSuperClassifierFacade().getAssociatedClasses();
272 }
273
274
275
276
277
278 public List<AssociationEndFacade> getAssociationEnds()
279 {
280 return this.getSuperClassifierFacade().getAssociationEnds();
281 }
282
283
284
285
286
287 public List<AttributeFacade> getAttributes()
288 {
289 return this.getSuperClassifierFacade().getAttributes();
290 }
291
292
293
294
295
296
297 public List<AttributeFacade> getAttributes(boolean follow)
298 {
299 return this.getSuperClassifierFacade().getAttributes(follow);
300 }
301
302
303
304
305
306 public String getFullyQualifiedArrayName()
307 {
308 return this.getSuperClassifierFacade().getFullyQualifiedArrayName();
309 }
310
311
312
313
314
315
316
317
318 public Collection<OperationFacade> getImplementationOperations()
319 {
320 return this.getSuperClassifierFacade().getImplementationOperations();
321 }
322
323
324
325
326
327 public String getImplementedInterfaceList()
328 {
329 return this.getSuperClassifierFacade().getImplementedInterfaceList();
330 }
331
332
333
334
335
336 public Collection<AttributeFacade> getInstanceAttributes()
337 {
338 return this.getSuperClassifierFacade().getInstanceAttributes();
339 }
340
341
342
343
344
345 public List<OperationFacade> getInstanceOperations()
346 {
347 return this.getSuperClassifierFacade().getInstanceOperations();
348 }
349
350
351
352
353
354
355 public Collection<ClassifierFacade> getInterfaceAbstractions()
356 {
357 return this.getSuperClassifierFacade().getInterfaceAbstractions();
358 }
359
360
361
362
363
364
365 public String getJavaNewString()
366 {
367 return this.getSuperClassifierFacade().getJavaNewString();
368 }
369
370
371
372
373
374
375 public String getJavaNullString()
376 {
377 return this.getSuperClassifierFacade().getJavaNullString();
378 }
379
380
381
382
383
384 public Collection<AssociationEndFacade> getNavigableConnectingEnds()
385 {
386 return this.getSuperClassifierFacade().getNavigableConnectingEnds();
387 }
388
389
390
391
392
393
394 public List<AssociationEndFacade> getNavigableConnectingEnds(boolean follow)
395 {
396 return this.getSuperClassifierFacade().getNavigableConnectingEnds(follow);
397 }
398
399
400
401
402
403
404
405 public ClassifierFacade getNonArray()
406 {
407 return this.getSuperClassifierFacade().getNonArray();
408 }
409
410
411
412
413
414
415
416 public String getOperationCallFromAttributes()
417 {
418 return this.getSuperClassifierFacade().getOperationCallFromAttributes();
419 }
420
421
422
423
424
425 public List<OperationFacade> getOperations()
426 {
427 return this.getSuperClassifierFacade().getOperations();
428 }
429
430
431
432
433
434
435 public List<ModelElementFacade> getProperties()
436 {
437 return this.getSuperClassifierFacade().getProperties();
438 }
439
440
441
442
443
444
445
446 public List getProperties(boolean follow)
447 {
448 return this.getSuperClassifierFacade().getProperties(follow);
449 }
450
451
452
453
454
455
456 public Collection<ModelElementFacade> getRequiredConstructorParameters()
457 {
458 return this.getSuperClassifierFacade().getRequiredConstructorParameters();
459 }
460
461
462
463
464
465 public long getSerialVersionUID()
466 {
467 return this.getSuperClassifierFacade().getSerialVersionUID();
468 }
469
470
471
472
473
474 public Collection<AttributeFacade> getStaticAttributes()
475 {
476 return this.getSuperClassifierFacade().getStaticAttributes();
477 }
478
479
480
481
482
483 public List<OperationFacade> getStaticOperations()
484 {
485 return this.getSuperClassifierFacade().getStaticOperations();
486 }
487
488
489
490
491
492
493 public ClassifierFacade getSuperClass()
494 {
495 return this.getSuperClassifierFacade().getSuperClass();
496 }
497
498
499
500
501
502
503
504
505
506 public String getWrapperName()
507 {
508 return this.getSuperClassifierFacade().getWrapperName();
509 }
510
511
512
513
514
515 public boolean isAbstract()
516 {
517 return this.getSuperClassifierFacade().isAbstract();
518 }
519
520
521
522
523
524 public boolean isArrayType()
525 {
526 return this.getSuperClassifierFacade().isArrayType();
527 }
528
529
530
531
532
533 public boolean isAssociationClass()
534 {
535 return this.getSuperClassifierFacade().isAssociationClass();
536 }
537
538
539
540
541
542 public boolean isBlobType()
543 {
544 return this.getSuperClassifierFacade().isBlobType();
545 }
546
547
548
549
550
551 public boolean isBooleanType()
552 {
553 return this.getSuperClassifierFacade().isBooleanType();
554 }
555
556
557
558
559
560 public boolean isCharacterType()
561 {
562 return this.getSuperClassifierFacade().isCharacterType();
563 }
564
565
566
567
568
569 public boolean isClobType()
570 {
571 return this.getSuperClassifierFacade().isClobType();
572 }
573
574
575
576
577
578 public boolean isCollectionType()
579 {
580 return this.getSuperClassifierFacade().isCollectionType();
581 }
582
583
584
585
586
587
588
589 public boolean isDataType()
590 {
591 return this.getSuperClassifierFacade().isDataType();
592 }
593
594
595
596
597
598 public boolean isDateType()
599 {
600 return this.getSuperClassifierFacade().isDateType();
601 }
602
603
604
605
606
607 public boolean isDoubleType()
608 {
609 return this.getSuperClassifierFacade().isDoubleType();
610 }
611
612
613
614
615
616 public boolean isEmbeddedValue()
617 {
618 return this.getSuperClassifierFacade().isEmbeddedValue();
619 }
620
621
622
623
624
625 public boolean isEnumeration()
626 {
627 return this.getSuperClassifierFacade().isEnumeration();
628 }
629
630
631
632
633
634 public boolean isFileType()
635 {
636 return this.getSuperClassifierFacade().isFileType();
637 }
638
639
640
641
642
643 public boolean isFloatType()
644 {
645 return this.getSuperClassifierFacade().isFloatType();
646 }
647
648
649
650
651
652 public boolean isIntegerType()
653 {
654 return this.getSuperClassifierFacade().isIntegerType();
655 }
656
657
658
659
660
661 public boolean isInterface()
662 {
663 return this.getSuperClassifierFacade().isInterface();
664 }
665
666
667
668
669
670 public boolean isLeaf()
671 {
672 return this.getSuperClassifierFacade().isLeaf();
673 }
674
675
676
677
678
679 public boolean isListType()
680 {
681 return this.getSuperClassifierFacade().isListType();
682 }
683
684
685
686
687
688 public boolean isLongType()
689 {
690 return this.getSuperClassifierFacade().isLongType();
691 }
692
693
694
695
696
697 public boolean isMapType()
698 {
699 return this.getSuperClassifierFacade().isMapType();
700 }
701
702
703
704
705
706 public boolean isPrimitive()
707 {
708 return this.getSuperClassifierFacade().isPrimitive();
709 }
710
711
712
713
714
715 public boolean isSetType()
716 {
717 return this.getSuperClassifierFacade().isSetType();
718 }
719
720
721
722
723
724 public boolean isStringType()
725 {
726 return this.getSuperClassifierFacade().isStringType();
727 }
728
729
730
731
732
733 public boolean isTimeType()
734 {
735 return this.getSuperClassifierFacade().isTimeType();
736 }
737
738
739
740
741
742 public boolean isWrappedPrimitive()
743 {
744 return this.getSuperClassifierFacade().isWrappedPrimitive();
745 }
746
747
748
749
750
751
752 public Object findTaggedValue(String tagName, boolean follow)
753 {
754 return this.getSuperClassifierFacade().findTaggedValue(tagName, follow);
755 }
756
757
758
759
760
761 public Collection<GeneralizableElementFacade> getAllGeneralizations()
762 {
763 return this.getSuperClassifierFacade().getAllGeneralizations();
764 }
765
766
767
768
769
770 public Collection<GeneralizableElementFacade> getAllSpecializations()
771 {
772 return this.getSuperClassifierFacade().getAllSpecializations();
773 }
774
775
776
777
778
779 public GeneralizableElementFacade getGeneralization()
780 {
781 return this.getSuperClassifierFacade().getGeneralization();
782 }
783
784
785
786
787
788
789 public Collection<GeneralizationFacade> getGeneralizationLinks()
790 {
791 return this.getSuperClassifierFacade().getGeneralizationLinks();
792 }
793
794
795
796
797
798 public String getGeneralizationList()
799 {
800 return this.getSuperClassifierFacade().getGeneralizationList();
801 }
802
803
804
805
806
807
808 public GeneralizableElementFacade getGeneralizationRoot()
809 {
810 return this.getSuperClassifierFacade().getGeneralizationRoot();
811 }
812
813
814
815
816
817 public Collection<GeneralizableElementFacade> getGeneralizations()
818 {
819 return this.getSuperClassifierFacade().getGeneralizations();
820 }
821
822
823
824
825
826 public Collection<GeneralizableElementFacade> getSpecializations()
827 {
828 return this.getSuperClassifierFacade().getSpecializations();
829 }
830
831
832
833
834
835 public void copyTaggedValues(ModelElementFacade element)
836 {
837 this.getSuperClassifierFacade().copyTaggedValues(element);
838 }
839
840
841
842
843
844
845 public Object findTaggedValue(String tagName)
846 {
847 return this.getSuperClassifierFacade().findTaggedValue(tagName);
848 }
849
850
851
852
853
854
855 public Collection<Object> findTaggedValues(String tagName)
856 {
857 return this.getSuperClassifierFacade().findTaggedValues(tagName);
858 }
859
860
861
862
863
864
865
866 public String getBindedFullyQualifiedName(ModelElementFacade bindedElement)
867 {
868 return this.getSuperClassifierFacade().getBindedFullyQualifiedName(bindedElement);
869 }
870
871
872
873
874
875 public Collection<ConstraintFacade> getConstraints()
876 {
877 return this.getSuperClassifierFacade().getConstraints();
878 }
879
880
881
882
883
884
885 public Collection<ConstraintFacade> getConstraints(String kind)
886 {
887 return this.getSuperClassifierFacade().getConstraints(kind);
888 }
889
890
891
892
893
894
895
896 public String getDocumentation(String indent)
897 {
898 return this.getSuperClassifierFacade().getDocumentation(indent);
899 }
900
901
902
903
904
905
906
907
908 public String getDocumentation(String indent, int lineLength)
909 {
910 return this.getSuperClassifierFacade().getDocumentation(indent, lineLength);
911 }
912
913
914
915
916
917
918
919 public String getDocumentation(String indent, int lineLength, boolean htmlStyle)
920 {
921 return this.getSuperClassifierFacade().getDocumentation(indent, lineLength, htmlStyle);
922 }
923
924
925
926
927
928 public String getFullyQualifiedName()
929 {
930 return this.getSuperClassifierFacade().getFullyQualifiedName();
931 }
932
933
934
935
936
937
938
939
940 public String getFullyQualifiedName(boolean modelName)
941 {
942 return this.getSuperClassifierFacade().getFullyQualifiedName(modelName);
943 }
944
945
946
947
948
949
950 public String getFullyQualifiedNamePath()
951 {
952 return this.getSuperClassifierFacade().getFullyQualifiedNamePath();
953 }
954
955
956
957
958
959 public String getId()
960 {
961 return this.getSuperClassifierFacade().getId();
962 }
963
964
965
966
967
968
969
970
971
972 public Collection<String> getKeywords()
973 {
974 return this.getSuperClassifierFacade().getKeywords();
975 }
976
977
978
979
980
981 public String getLabel()
982 {
983 return this.getSuperClassifierFacade().getLabel();
984 }
985
986
987
988
989
990 public TypeMappings getLanguageMappings()
991 {
992 return this.getSuperClassifierFacade().getLanguageMappings();
993 }
994
995
996
997
998
999
1000 public ModelFacade getModel()
1001 {
1002 return this.getSuperClassifierFacade().getModel();
1003 }
1004
1005
1006
1007
1008
1009 public String getName()
1010 {
1011 return this.getSuperClassifierFacade().getName();
1012 }
1013
1014
1015
1016
1017
1018 public ModelElementFacade getPackage()
1019 {
1020 return this.getSuperClassifierFacade().getPackage();
1021 }
1022
1023
1024
1025
1026
1027 public String getPackageName()
1028 {
1029 return this.getSuperClassifierFacade().getPackageName();
1030 }
1031
1032
1033
1034
1035
1036
1037 public String getPackageName(boolean modelName)
1038 {
1039 return this.getSuperClassifierFacade().getPackageName(modelName);
1040 }
1041
1042
1043
1044
1045
1046 public String getPackagePath()
1047 {
1048 return this.getSuperClassifierFacade().getPackagePath();
1049 }
1050
1051
1052
1053
1054
1055
1056
1057
1058 public String getQualifiedName()
1059 {
1060 return this.getSuperClassifierFacade().getQualifiedName();
1061 }
1062
1063
1064
1065
1066
1067 public PackageFacade getRootPackage()
1068 {
1069 return this.getSuperClassifierFacade().getRootPackage();
1070 }
1071
1072
1073
1074
1075
1076 public Collection<DependencyFacade> getSourceDependencies()
1077 {
1078 return this.getSuperClassifierFacade().getSourceDependencies();
1079 }
1080
1081
1082
1083
1084
1085
1086 public StateMachineFacade getStateMachineContext()
1087 {
1088 return this.getSuperClassifierFacade().getStateMachineContext();
1089 }
1090
1091
1092
1093
1094
1095 public Collection<String> getStereotypeNames()
1096 {
1097 return this.getSuperClassifierFacade().getStereotypeNames();
1098 }
1099
1100
1101
1102
1103
1104 public Collection<StereotypeFacade> getStereotypes()
1105 {
1106 return this.getSuperClassifierFacade().getStereotypes();
1107 }
1108
1109
1110
1111
1112
1113 public Collection<TaggedValueFacade> getTaggedValues()
1114 {
1115 return this.getSuperClassifierFacade().getTaggedValues();
1116 }
1117
1118
1119
1120
1121
1122 public Collection<DependencyFacade> getTargetDependencies()
1123 {
1124 return this.getSuperClassifierFacade().getTargetDependencies();
1125 }
1126
1127
1128
1129
1130
1131 public Object getTemplateParameter(String parameterName)
1132 {
1133 return this.getSuperClassifierFacade().getTemplateParameter(parameterName);
1134 }
1135
1136
1137
1138
1139
1140 public Collection<TemplateParameterFacade> getTemplateParameters()
1141 {
1142 return this.getSuperClassifierFacade().getTemplateParameters();
1143 }
1144
1145
1146
1147
1148
1149
1150 public String getVisibility()
1151 {
1152 return this.getSuperClassifierFacade().getVisibility();
1153 }
1154
1155
1156
1157
1158
1159
1160 public boolean hasExactStereotype(String stereotypeName)
1161 {
1162 return this.getSuperClassifierFacade().hasExactStereotype(stereotypeName);
1163 }
1164
1165
1166
1167
1168
1169
1170 public boolean hasKeyword(String keywordName)
1171 {
1172 return this.getSuperClassifierFacade().hasKeyword(keywordName);
1173 }
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187 public boolean hasStereotype(String stereotypeName)
1188 {
1189 return this.getSuperClassifierFacade().hasStereotype(stereotypeName);
1190 }
1191
1192
1193
1194
1195
1196
1197 public boolean isBindingDependenciesPresent()
1198 {
1199 return this.getSuperClassifierFacade().isBindingDependenciesPresent();
1200 }
1201
1202
1203
1204
1205
1206 public boolean isConstraintsPresent()
1207 {
1208 return this.getSuperClassifierFacade().isConstraintsPresent();
1209 }
1210
1211
1212
1213
1214
1215 public boolean isDocumentationPresent()
1216 {
1217 return this.getSuperClassifierFacade().isDocumentationPresent();
1218 }
1219
1220
1221
1222
1223
1224 public boolean isReservedWord()
1225 {
1226 return this.getSuperClassifierFacade().isReservedWord();
1227 }
1228
1229
1230
1231
1232
1233
1234 public boolean isTemplateParametersPresent()
1235 {
1236 return this.getSuperClassifierFacade().isTemplateParametersPresent();
1237 }
1238
1239
1240
1241
1242
1243
1244
1245 public boolean isValidIdentifierName()
1246 {
1247 return this.getSuperClassifierFacade().isValidIdentifierName();
1248 }
1249
1250
1251
1252
1253
1254
1255
1256 public String translateConstraint(String name, String translation)
1257 {
1258 return this.getSuperClassifierFacade().translateConstraint(name, translation);
1259 }
1260
1261
1262
1263
1264
1265 public String[] translateConstraints(String translation)
1266 {
1267 return this.getSuperClassifierFacade().translateConstraints(translation);
1268 }
1269
1270
1271
1272
1273
1274 public String[] translateConstraints(String kind, String translation)
1275 {
1276 return this.getSuperClassifierFacade().translateConstraints(kind, translation);
1277 }
1278
1279
1280
1281
1282 @Override
1283 public void initialize()
1284 {
1285 this.getSuperClassifierFacade().initialize();
1286 }
1287
1288
1289
1290
1291
1292 @Override
1293 public Object getValidationOwner()
1294 {
1295 Object owner = this.getSuperClassifierFacade().getValidationOwner();
1296 return owner;
1297 }
1298
1299
1300
1301
1302
1303 @Override
1304 public String getValidationName()
1305 {
1306 String name = this.getSuperClassifierFacade().getValidationName();
1307 return name;
1308 }
1309
1310
1311
1312
1313
1314 @Override
1315 public void validateInvariants(Collection<ModelValidationMessage> validationMessages)
1316 {
1317 this.getSuperClassifierFacade().validateInvariants(validationMessages);
1318 }
1319
1320
1321
1322
1323 private static final String NAME_PROPERTY = "name";
1324 private static final String FQNAME_PROPERTY = "fullyQualifiedName";
1325
1326
1327
1328
1329 @Override
1330 public String toString()
1331 {
1332 final StringBuilder toString = new StringBuilder(this.getClass().getName());
1333 toString.append("[");
1334 try
1335 {
1336 toString.append(Introspector.instance().getProperty(this, FQNAME_PROPERTY));
1337 }
1338 catch (final Throwable tryAgain)
1339 {
1340 try
1341 {
1342 toString.append(Introspector.instance().getProperty(this, NAME_PROPERTY));
1343 }
1344 catch (final Throwable ignore)
1345 {
1346
1347 }
1348 }
1349 toString.append("]");
1350 return toString.toString();
1351 }
1352 }