Skip to content

Commit 4b24046

Browse files
toString(): Use reflection to fetch value of ByReference object
1 parent 1079272 commit 4b24046

File tree

11 files changed

+16
-152
lines changed

11 files changed

+16
-152
lines changed

contrib/platform/src/com/sun/jna/platform/unix/X11.java

-10
Original file line numberDiff line numberDiff line change
@@ -172,11 +172,6 @@ public Atom getValue() {
172172
NativeLong value = getPointer().getNativeLong(0);
173173
return (Atom)new Atom().fromNative(value, null);
174174
}
175-
176-
@Override
177-
public String toString() {
178-
return super.toString(getValue());
179-
}
180175
}
181176
class Colormap extends XID {
182177
private static final long serialVersionUID = 1L;
@@ -256,11 +251,6 @@ public Window getValue() {
256251
NativeLong value = getPointer().getNativeLong(0);
257252
return value.longValue() == X11.None ? Window.None : new Window(value.longValue());
258253
}
259-
260-
@Override
261-
public String toString() {
262-
return super.toString(getValue());
263-
}
264254
}
265255
class Pixmap extends Drawable {
266256
private static final long serialVersionUID = 1L;

contrib/platform/src/com/sun/jna/platform/win32/BaseTSD.java

-5
Original file line numberDiff line numberDiff line change
@@ -107,11 +107,6 @@ public ULONG_PTR getValue() {
107107
? getPointer().getInt(0)
108108
: getPointer().getLong(0));
109109
}
110-
111-
@Override
112-
public String toString() {
113-
return super.toString(getValue());
114-
}
115110
}
116111

117112

contrib/platform/src/com/sun/jna/platform/win32/HighLevelMonitorConfigurationAPI.java

-10
Original file line numberDiff line numberDiff line change
@@ -274,11 +274,6 @@ public void setValue(MC_DISPLAY_TECHNOLOGY_TYPE value) {
274274
public MC_DISPLAY_TECHNOLOGY_TYPE getValue() {
275275
return EnumUtils.fromInteger(getPointer().getInt(0), MC_DISPLAY_TECHNOLOGY_TYPE.class);
276276
}
277-
278-
@Override
279-
public String toString() {
280-
return super.toString(getValue());
281-
}
282277
}
283278
}
284279

@@ -445,11 +440,6 @@ public void setValue(MC_COLOR_TEMPERATURE value) {
445440
public MC_COLOR_TEMPERATURE getValue() {
446441
return EnumUtils.fromInteger(getPointer().getInt(0), MC_COLOR_TEMPERATURE.class);
447442
}
448-
449-
@Override
450-
public String toString() {
451-
return super.toString(getValue());
452-
}
453443
}
454444
}
455445
}

contrib/platform/src/com/sun/jna/platform/win32/LowLevelMonitorConfigurationAPI.java

-5
Original file line numberDiff line numberDiff line change
@@ -111,11 +111,6 @@ public void setValue(MC_VCP_CODE_TYPE value) {
111111
public MC_VCP_CODE_TYPE getValue() {
112112
return EnumUtils.fromInteger(getPointer().getInt(0), MC_VCP_CODE_TYPE.class);
113113
}
114-
115-
@Override
116-
public String toString() {
117-
return super.toString(getValue());
118-
}
119114
}
120115
}
121116
}

contrib/platform/src/com/sun/jna/platform/win32/OaIdl.java

-20
Original file line numberDiff line numberDiff line change
@@ -200,11 +200,6 @@ public void setValue(VARIANT_BOOL value) {
200200
public VARIANT_BOOL getValue() {
201201
return new VARIANT_BOOL(getPointer().getShort(0));
202202
}
203-
204-
@Override
205-
public String toString() {
206-
return super.toString(getValue());
207-
}
208203
}
209204

210205
public static class _VARIANT_BOOLByReference extends ByReference {
@@ -224,11 +219,6 @@ public void setValue(VARIANT_BOOL value) {
224219
public VARIANT_BOOL getValue() {
225220
return new VARIANT_BOOL(getPointer().getShort(0));
226221
}
227-
228-
@Override
229-
public String toString() {
230-
return super.toString(getValue());
231-
}
232222
}
233223

234224
@FieldOrder({"date"})
@@ -321,11 +311,6 @@ public void setValue(DISPID value) {
321311
public DISPID getValue() {
322312
return new DISPID(getPointer().getInt(0));
323313
}
324-
325-
@Override
326-
public String toString() {
327-
return super.toString(getValue());
328-
}
329314
}
330315

331316
public static class MEMBERID extends DISPID {
@@ -357,11 +342,6 @@ public void setValue(MEMBERID value) {
357342
public MEMBERID getValue() {
358343
return new MEMBERID(getPointer().getInt(0));
359344
}
360-
361-
@Override
362-
public String toString() {
363-
return super.toString(getValue());
364-
}
365345
}
366346

367347
// The Collect property. You use this property if the method you are calling

contrib/platform/src/com/sun/jna/platform/win32/WTypes.java

-10
Original file line numberDiff line numberDiff line change
@@ -171,11 +171,6 @@ public BSTR getValue() {
171171
public String getString() {
172172
return this.getValue().getValue();
173173
}
174-
175-
@Override
176-
public String toString() {
177-
return super.toString(getValue());
178-
}
179174
}
180175

181176
public static class LPSTR extends PointerType {
@@ -323,10 +318,5 @@ public void setValue(VARTYPE value) {
323318
public VARTYPE getValue() {
324319
return new VARTYPE(getPointer().getShort(0));
325320
}
326-
327-
@Override
328-
public String toString() {
329-
return super.toString(getValue());
330-
}
331321
}
332322
}

contrib/platform/src/com/sun/jna/platform/win32/WinDef.java

-55
Original file line numberDiff line numberDiff line change
@@ -117,11 +117,6 @@ public void setValue(WORD value) {
117117
public WORD getValue() {
118118
return new WORD(getPointer().getShort(0));
119119
}
120-
121-
@Override
122-
public String toString() {
123-
return super.toString(getValue());
124-
}
125120
}
126121

127122
/**
@@ -212,11 +207,6 @@ public void setValue(DWORD value) {
212207
public DWORD getValue() {
213208
return new DWORD(getPointer().getInt(0));
214209
}
215-
216-
@Override
217-
public String toString() {
218-
return super.toString(getValue());
219-
}
220210
}
221211

222212
/**
@@ -288,11 +278,6 @@ public void setValue(LONG value) {
288278
public LONG getValue() {
289279
return new LONG(getPointer().getInt(0));
290280
}
291-
292-
@Override
293-
public String toString() {
294-
return super.toString(getValue());
295-
}
296281
}
297282

298283
/**
@@ -364,11 +349,6 @@ public void setValue(LONGLONG value) {
364349
public LONGLONG getValue() {
365350
return new LONGLONG(getPointer().getLong(0));
366351
}
367-
368-
@Override
369-
public String toString() {
370-
return super.toString(getValue());
371-
}
372352
}
373353

374354
/**
@@ -926,11 +906,6 @@ public void setValue(ULONG value) {
926906
public ULONG getValue() {
927907
return new ULONG(getPointer().getInt(0));
928908
}
929-
930-
@Override
931-
public String toString() {
932-
return super.toString(getValue());
933-
}
934909
}
935910

936911
/**
@@ -1002,11 +977,6 @@ public void setValue(ULONGLONG value) {
1002977
public ULONGLONG getValue() {
1003978
return new ULONGLONG(getPointer().getLong(0));
1004979
}
1005-
1006-
@Override
1007-
public String toString() {
1008-
return super.toString(getValue());
1009-
}
1010980
}
1011981

1012982
/**
@@ -1284,11 +1254,6 @@ public void setValue(USHORT value) {
12841254
public USHORT getValue() {
12851255
return new USHORT(getPointer().getShort(0));
12861256
}
1287-
1288-
@Override
1289-
public String toString() {
1290-
return super.toString(getValue());
1291-
}
12921257
}
12931258

12941259
/**
@@ -1392,11 +1357,6 @@ public void setValue(UINT value) {
13921357
public UINT getValue() {
13931358
return new UINT(getPointer().getInt(0));
13941359
}
1395-
1396-
@Override
1397-
public String toString() {
1398-
return super.toString(getValue());
1399-
}
14001360
}
14011361

14021362
/**
@@ -1461,11 +1421,6 @@ public void setValue(SCODE value) {
14611421
public SCODE getValue() {
14621422
return new SCODE(getPointer().getInt(0));
14631423
}
1464-
1465-
@Override
1466-
public String toString() {
1467-
return super.toString(getValue());
1468-
}
14691424
}
14701425

14711426
/**
@@ -1637,11 +1592,6 @@ public void setValue(BOOL value) {
16371592
public BOOL getValue() {
16381593
return new BOOL(getPointer().getInt(0));
16391594
}
1640-
1641-
@Override
1642-
public String toString() {
1643-
return super.toString(getValue());
1644-
}
16451595
}
16461596

16471597
/**
@@ -1778,11 +1728,6 @@ public void setValue(CHAR value) {
17781728
public CHAR getValue() {
17791729
return new CHAR(getPointer().getByte(0));
17801730
}
1781-
1782-
@Override
1783-
public String toString() {
1784-
return super.toString(getValue());
1785-
}
17861731
}
17871732

17881733
/**

contrib/platform/src/com/sun/jna/platform/win32/WinNT.java

-15
Original file line numberDiff line numberDiff line change
@@ -398,11 +398,6 @@ public PSID getValue() {
398398
return new PSID(p);
399399
}
400400
}
401-
402-
@Override
403-
public String toString() {
404-
return super.toString(getValue());
405-
}
406401
}
407402

408403
/**
@@ -1367,11 +1362,6 @@ public HANDLE getValue() {
13671362
h.setPointer(p);
13681363
return h;
13691364
}
1370-
1371-
@Override
1372-
public String toString() {
1373-
return super.toString(getValue());
1374-
}
13751365
}
13761366

13771367
/**
@@ -2572,11 +2562,6 @@ public ACL getValue() {
25722562
return new ACL(p);
25732563
}
25742564
}
2575-
2576-
@Override
2577-
public String toString() {
2578-
return super.toString(getValue());
2579-
}
25802565
}
25812566

25822567
@FieldOrder({"Revision", "Sbz1", "Control", "Owner", "Group", "Sacl", "Dacl"})

contrib/platform/src/com/sun/jna/platform/win32/WinReg.java

-5
Original file line numberDiff line numberDiff line change
@@ -67,11 +67,6 @@ public HKEY getValue() {
6767
h.setPointer(p);
6868
return h;
6969
}
70-
71-
@Override
72-
public String toString() {
73-
return super.toString(getValue());
74-
}
7570
}
7671

7772
HKEY HKEY_CLASSES_ROOT = new HKEY(0x80000000);

src/com/sun/jna/ptr/ByReference.java

+16-13
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import com.sun.jna.Memory;
2727
import com.sun.jna.Pointer;
2828
import com.sun.jna.PointerType;
29+
import java.lang.reflect.Method;
2930

3031
/** Provides generic "pointer to type" functionality, often used in C
3132
* code to return values to the caller in addition to a function result.
@@ -43,19 +44,21 @@ protected ByReference(int dataSize) {
4344
setPointer(new Memory(dataSize));
4445
}
4546

46-
/**
47-
* Express this reference and the value it points to.
48-
*
49-
* @param value
50-
* The value to display. Callers should pass the result of
51-
* {@code getValue()}.
52-
* @return A formatted string containing the object type, reference address, and
53-
* value
54-
*/
55-
protected String toString(Object value) {
56-
if (value == null) {
57-
return String.format("null@0x%x", Pointer.nativeValue(getPointer()));
47+
@Override
48+
public String toString() {
49+
try {
50+
Method getValue = getClass().getMethod("getValue");
51+
Object value = getValue.invoke(this);
52+
if (value == null) {
53+
return String.format("null@0x%x", Pointer.nativeValue(getPointer()));
54+
}
55+
return String.format("%s@0x%x=%s", value.getClass().getSimpleName(), Pointer.nativeValue(getPointer()), value);
56+
} catch (Exception ex) {
57+
return String.format(
58+
"ByReference Contract violated - %s#getValue raised exception: %s",
59+
getClass().getName(),
60+
ex.getMessage()
61+
);
5862
}
59-
return String.format("%s@0x%x=%s", value.getClass().getSimpleName(), Pointer.nativeValue(getPointer()), value);
6063
}
6164
}

src/com/sun/jna/ptr/PointerByReference.java

-4
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,4 @@ public Pointer getValue() {
4949
return getPointer().getPointer(0);
5050
}
5151

52-
@Override
53-
public String toString() {
54-
return super.toString(getValue());
55-
}
5652
}

0 commit comments

Comments
 (0)