@@ -222,9 +222,10 @@ private void initFields() {
222
222
values = new ArrayList ();
223
223
staticValues = new ArrayList ();
224
224
boolean hasExtRef = hasField (instance .getJavaClass (), "extRef" ); // NOI18N
225
+ boolean hasShortNames = hasField (instance .getJavaClass (), "o0" ); // NOI18N
225
226
226
227
for (Instance ip : getMapValues (propertyMap )) {
227
- Property p = new Property (ip , hasExtRef );
228
+ Property p = new Property (ip , hasExtRef , hasShortNames );
228
229
// properties.add(p);
229
230
if (p .isStatic ()) staticValues .add (p .getValue (instance ));
230
231
else values .add (p .getValue (instance ));
@@ -440,13 +441,15 @@ private static class Property implements Field {
440
441
String propertyName ;
441
442
boolean isStatic ;
442
443
boolean hasExtRef ;
444
+ boolean hasShortNames ;
443
445
444
- private Property (Instance p , boolean extRef ) {
446
+ private Property (Instance p , boolean extRef , boolean shortNames ) {
445
447
assert p .getJavaClass ().getName ().equals (PROPERTY_FQN );
446
448
property = p ;
447
449
propertyName = DetailsUtils .getInstanceString (p , null );
448
450
location = (Instance ) property .getValueOfField ("location" ); // NOI18N
449
451
hasExtRef = extRef ;
452
+ hasShortNames = shortNames ;
450
453
}
451
454
452
455
String getPropertyName () {
@@ -515,19 +518,19 @@ FieldValue getValueImpl(Instance loc, final Instance dynamicObject) {
515
518
String superClassName = locClass .getSuperClass ().getName ();
516
519
if (superClassName .contains ("SimpleObjectFieldLocation" )) { // NOI18N
517
520
Integer index = (Integer ) loc .getValueOfField ("index" ); // NOI18N
518
- return getInstanceFieldValue (dynamicObject , "object" + ( index + 1 )); // NOI18N
521
+ return getObjectInstanceFieldValue (dynamicObject , index );
519
522
}
520
523
if (superClassName .contains ("SimpleLongFieldLocation" )) { // NOI18N
521
524
Integer index = (Integer ) loc .getValueOfField ("index" ); // NOI18N
522
- return getInstanceFieldValue (dynamicObject , "primitive" + ( index + 1 )); // NOI18N
525
+ return getPrimitiveInstanceFieldValue (dynamicObject , index );
523
526
}
524
527
if (superClassName .contains ("BasicObjectFieldLocation" )) { // NOI18N
525
528
Integer index = (Integer ) loc .getValueOfField ("index" ); // NOI18N
526
- return getInstanceFieldValue (dynamicObject , "object" + ( index + 1 )); // NOI18N
529
+ return getObjectInstanceFieldValue (dynamicObject , index );
527
530
}
528
531
if (superClassName .contains ("BasicLongFieldLocation" )) { // NOI18N
529
532
Integer index = (Integer ) loc .getValueOfField ("index" ); // NOI18N
530
- return getInstanceFieldValue (dynamicObject , "primitive" + ( index + 1 )); // NOI18N
533
+ return getPrimitiveInstanceFieldValue (dynamicObject ,index );
531
534
}
532
535
return new DynObjFieldValue (dynamicObject , this ) {
533
536
@ Override
@@ -543,6 +546,16 @@ private ObjectArrayInstance getObjectStore(final Instance dynamicObject) {
543
546
return (ObjectArrayInstance ) dynamicObject .getValueOfField (fieldName );
544
547
}
545
548
549
+ private FieldValue getObjectInstanceFieldValue (Instance dynObj , int index ) {
550
+ String fieldName = getObjectFieldName (index );
551
+ return getInstanceFieldValue (dynObj , dynObj , fieldName );
552
+ }
553
+
554
+ private FieldValue getPrimitiveInstanceFieldValue (Instance dynObj , int index ) {
555
+ String fieldName = getPrimitiveFieldName (index );
556
+ return getInstanceFieldValue (dynObj , dynObj , fieldName );
557
+ }
558
+
546
559
private FieldValue getInstanceFieldValue (Instance dynObj , String fieldName ) {
547
560
return getInstanceFieldValue (dynObj , dynObj , fieldName );
548
561
}
@@ -680,7 +693,8 @@ private FieldValue getEnterpriseValue(Instance loc, String className, Instance d
680
693
if (className .contains ("ObjectFieldLocation" )) { // NOI18N
681
694
Integer index = (Integer ) loc .getValueOfField ("index" ); // NOI18N
682
695
int objectIndex = hasExtRef ? index : index + 2 ;
683
- FieldValue ret = getInstanceFieldValue (dynamicObject , "object" + objectIndex ); // NOI18N
696
+ String prefix = hasShortNames ? "o" : "object" ; // NOI18N
697
+ FieldValue ret = getInstanceFieldValue (dynamicObject , prefix + objectIndex );
684
698
if (ret == null ) {
685
699
// extVal is encoded as non-existing index
686
700
return getObjectFieldValue (dynamicObject , (Instance ) dynamicObject .getValueOfField ("extVal" )); // NOI18N
@@ -690,27 +704,45 @@ private FieldValue getEnterpriseValue(Instance loc, String className, Instance d
690
704
if (className .contains ("IntFieldLocation" )) { // NOI18N
691
705
Integer index = (Integer ) loc .getValueOfField ("index" ); // NOI18N
692
706
int objectIndex = hasExtRef ? index : index + 1 ;
693
- return getInstanceFieldValue (dynamicObject , "primitive" + objectIndex ); // NOI18N
707
+ String prefix = hasShortNames ? "p" : "primitive" ; // NOI18N
708
+ return getInstanceFieldValue (dynamicObject , prefix + objectIndex );
694
709
}
695
710
if (className .contains ("BooleanFieldLocation" )) { // NOI18N
696
711
Integer index = (Integer ) loc .getValueOfField ("index" ); // NOI18N
697
712
int objectIndex = hasExtRef ? index : index + 1 ;
698
- Integer i1 = (Integer ) dynamicObject .getValueOfField ("primitive" + objectIndex ); // NOI18N
713
+ String prefix = hasShortNames ? "p" : "primitive" ; // NOI18N
714
+ Integer i1 = (Integer ) dynamicObject .getValueOfField (prefix + objectIndex );
699
715
return getFieldValue (dynamicObject , Boolean .toString (i1 .intValue () != 0 ));
700
716
}
701
717
if (className .contains ("DoubleFieldLocation" )) { // NOI18N
702
718
Integer index = (Integer ) loc .getValueOfField ("index" ); // NOI18N
703
719
int objectIndex = hasExtRef ? index : index + 1 ;
704
- Integer i1 = (Integer ) dynamicObject .getValueOfField ("primitive" + objectIndex ); // NOI18N
705
- Integer i2 = (Integer ) dynamicObject .getValueOfField ("primitive" + (objectIndex + 1 )); // NOI18N
706
- return getFieldValue (dynamicObject , getDouble (getLong (i1 , i2 )));
720
+ String prefix = hasShortNames ? "p" : "primitive" ; // NOI18N
721
+ Number i1 = (Number ) dynamicObject .getValueOfField (prefix + objectIndex );
722
+ long val ;
723
+
724
+ if (i1 instanceof Long ) {
725
+ val = i1 .longValue ();
726
+ } else {
727
+ Integer i2 = (Integer ) dynamicObject .getValueOfField (prefix + (objectIndex + 1 ));
728
+ val = getLong (i1 .intValue (), i2 );
729
+ }
730
+ return getFieldValue (dynamicObject , getDouble (val ));
707
731
}
708
732
if (className .contains ("LongFieldLocation" )) { // NOI18N
709
733
Integer index = (Integer ) loc .getValueOfField ("index" ); // NOI18N
710
734
int objectIndex = hasExtRef ? index : index + 1 ;
711
- Integer i1 = (Integer ) dynamicObject .getValueOfField ("primitive" + objectIndex ); // NOI18N
712
- Integer i2 = (Integer ) dynamicObject .getValueOfField ("primitive" + (objectIndex + 1 )); // NOI18N
713
- return getFieldValue (dynamicObject , Long .toString (getLong (i1 , i2 )));
735
+ String prefix = hasShortNames ? "p" : "primitive" ; // NOI18N
736
+ Number i1 = (Number ) dynamicObject .getValueOfField (prefix + objectIndex );
737
+ long val ;
738
+
739
+ if (i1 instanceof Long ) {
740
+ val = i1 .longValue ();
741
+ } else {
742
+ Integer i2 = (Integer ) dynamicObject .getValueOfField (prefix + (objectIndex + 1 ));
743
+ val = getLong (i1 .intValue (), i2 );
744
+ }
745
+ return getFieldValue (dynamicObject , Long .toString (val ));
714
746
}
715
747
if (className .contains ("ObjectArrayLocation" )) { // NOI18N
716
748
Integer index = (Integer ) loc .getValueOfField ("index" ); // NOI18N
@@ -979,6 +1011,20 @@ private static String getDouble(long l) {
979
1011
980
1012
return Double .toString (d );
981
1013
}
1014
+
1015
+ private String getObjectFieldName (int index ) {
1016
+ if (hasShortNames ) {
1017
+ return "o" +(index ); // NOI18N
1018
+ }
1019
+ return "object" +(index +1 ); // NOI18N
1020
+ }
1021
+
1022
+ private String getPrimitiveFieldName (int index ) {
1023
+ if (hasShortNames ) {
1024
+ return "p" +(index ); // NOI18N
1025
+ }
1026
+ return "primitive" +(index +1 ); // NOI18N
1027
+ }
982
1028
}
983
1029
984
1030
private static class ObjType implements Type {
0 commit comments