Skip to content

Commit cc9e780

Browse files
committed
Merge branch 'master' into fix_351
2 parents aa0acba + ff93479 commit cc9e780

File tree

11 files changed

+94
-34
lines changed

11 files changed

+94
-34
lines changed

google-http-client-assembly/dependencies/google-http-client-appengine-dependencies.html

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ <h3>test<a name="test"></a></h3>
9191
<tr class="b">
9292
<td>com.google.guava</td>
9393
<td><a class="externalLink" href="https://github.com/google/guava/guava">guava</a></td>
94-
<td>20.0</td>
94+
<td>26.0-android</td>
9595
<td>jar</td>
9696
<td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr>
9797
<tr class="a">
@@ -319,7 +319,7 @@ <h3>Dependency Tree<a name="Dependency_Tree"></a></h3>
319319
<p><b>Description: </b>JUnit is a regression testing framework. It is used by the developer who implements unit tests in Java.</p>
320320
<p><b>URL: </b><a class="externalLink" href="http://junit.org">http://junit.org</a></p>
321321
<p><b>Project License: </b><a class="externalLink" href="http://www.opensource.org/licenses/cpl1.0.txt">Common Public License Version 1.0</a></p></td></tr></table></div></li>
322-
<li>com.google.guava:guava:jar:20.0 (test) <img id="_img27" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep26', '_img27' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep26" style="display:none">
322+
<li>com.google.guava:guava:jar:26.0-android (test) <img id="_img27" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep26', '_img27' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep26" style="display:none">
323323
<table border="0" class="bodyTable">
324324
<tr class="a">
325325
<th>Guava: Google Core Libraries for Java</th></tr>
@@ -383,7 +383,7 @@ <h2>Dependency File Details<a name="Dependency_File_Details"></a></h2>
383383
<td>1.5</td>
384384
<td>debug</td></tr>
385385
<tr class="b">
386-
<td>guava-20.0.jar</td>
386+
<td>guava-26.0-android.jar</td>
387387
<td>2.33 MB</td>
388388
<td>1,844</td>
389389
<td>1,814</td>
@@ -545,7 +545,7 @@ <h2>Dependency Repository Locations<a name="Dependency_Repository_Locations"></a
545545
<td>-</td>
546546
<td>-</td></tr>
547547
<tr class="b">
548-
<td>com.google.guava:guava:jar:20.0</td>
548+
<td>com.google.guava:guava:jar:26.0-android</td>
549549
<td>-</td>
550550
<td>-</td>
551551
<td>-</td></tr>

google-http-client-assembly/dependencies/google-http-client-dependencies.html

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ <h3>test<a name="test"></a></h3>
9191
<tr class="b">
9292
<td>com.google.guava</td>
9393
<td><a class="externalLink" href="https://github.com/google/guava/guava-testlib">guava-testlib</a></td>
94-
<td>20.0</td>
94+
<td>26.0-android</td>
9595
<td>jar</td>
9696
<td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr>
9797
<tr class="a">
@@ -131,7 +131,7 @@ <h3>provided<a name="provided"></a></h3>
131131
<tr class="a">
132132
<td>com.google.guava</td>
133133
<td><a class="externalLink" href="https://github.com/google/guava/guava">guava</a></td>
134-
<td>20.0</td>
134+
<td>26.0-android</td>
135135
<td>jar</td>
136136
<td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr>
137137
<tr class="b">
@@ -303,7 +303,7 @@ <h3>Dependency Tree<a name="Dependency_Tree"></a></h3>
303303
<p><b>Description: </b>JSR305 Annotations for Findbugs</p>
304304
<p><b>URL: </b><a class="externalLink" href="http://findbugs.sourceforge.net/">http://findbugs.sourceforge.net/</a></p>
305305
<p><b>Project License: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
306-
<li>com.google.guava:guava:jar:20.0 (provided) <img id="_img15" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep14', '_img15' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep14" style="display:none">
306+
<li>com.google.guava:guava:jar:26.0-android (provided) <img id="_img15" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep14', '_img15' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep14" style="display:none">
307307
<table border="0" class="bodyTable">
308308
<tr class="a">
309309
<th>Guava: Google Core Libraries for Java</th></tr>
@@ -317,7 +317,7 @@ <h3>Dependency Tree<a name="Dependency_Tree"></a></h3>
317317
per the JSR-305 spec.</p>
318318
<p><b>URL: </b><a class="externalLink" href="https://github.com/google/guava/guava">https://github.com/google/guava/guava</a></p>
319319
<p><b>Project License: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
320-
<li>com.google.guava:guava-testlib:jar:20.0 (test) <img id="_img17" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep16', '_img17' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep16" style="display:none">
320+
<li>com.google.guava:guava-testlib:jar:26.0-android (test) <img id="_img17" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep16', '_img17' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep16" style="display:none">
321321
<table border="0" class="bodyTable">
322322
<tr class="a">
323323
<th>Guava Testing Library</th></tr>
@@ -462,15 +462,15 @@ <h2>Dependency File Details<a name="Dependency_File_Details"></a></h2>
462462
<td>1.6</td>
463463
<td>release</td></tr>
464464
<tr class="a">
465-
<td>guava-20.0.jar</td>
465+
<td>guava-26.0-android.jar</td>
466466
<td>2.33 MB</td>
467467
<td>1,844</td>
468468
<td>1,814</td>
469469
<td>18</td>
470470
<td>1.6</td>
471471
<td>debug</td></tr>
472472
<tr class="b">
473-
<td>guava-testlib-20.0.jar</td>
473+
<td>guava-testlib-26.0-android.jar</td>
474474
<td>748.27 kB</td>
475475
<td>595</td>
476476
<td>574</td>
@@ -659,12 +659,12 @@ <h2>Dependency Repository Locations<a name="Dependency_Repository_Locations"></a
659659
<td>-</td>
660660
<td>-</td></tr>
661661
<tr class="a">
662-
<td>com.google.guava:guava:jar:20.0</td>
662+
<td>com.google.guava:guava:jar:26.0-android</td>
663663
<td>-</td>
664664
<td>-</td>
665665
<td>-</td></tr>
666666
<tr class="b">
667-
<td>com.google.guava:guava-testlib:jar:20.0</td>
667+
<td>com.google.guava:guava-testlib:jar:26.0-android</td>
668668
<td>-</td>
669669
<td>-</td>
670670
<td>-</td></tr>

google-http-client-assembly/dependencies/google-http-client-gson-dependencies.html

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ <h3>test<a name="test"></a></h3>
8585
<tr class="b">
8686
<td>com.google.guava</td>
8787
<td><a class="externalLink" href="https://github.com/google/guava/guava">guava</a></td>
88-
<td>20.0</td>
88+
<td>26.0-android</td>
8989
<td>jar</td>
9090
<td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr>
9191
<tr class="a">
@@ -279,7 +279,7 @@ <h3>Dependency Tree<a name="Dependency_Tree"></a></h3>
279279
<p><b>Description: </b>Google Gson library</p>
280280
<p><b>URL: </b><a class="externalLink" href="https://github.com/google/gson">https://github.com/google/gson</a></p>
281281
<p><b>Project License: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
282-
<li>com.google.guava:guava:jar:20.0 (test) <img id="_img23" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep22', '_img23' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep22" style="display:none">
282+
<li>com.google.guava:guava:jar:26.0-android (test) <img id="_img23" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep22', '_img23' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep22" style="display:none">
283283
<table border="0" class="bodyTable">
284284
<tr class="a">
285285
<th>Guava: Google Core Libraries for Java</th></tr>
@@ -326,7 +326,7 @@ <h2>Dependency File Details<a name="Dependency_File_Details"></a></h2>
326326
<td>1.5</td>
327327
<td>debug</td></tr>
328328
<tr class="b">
329-
<td>guava-20.0.jar</td>
329+
<td>guava-26.0-android.jar</td>
330330
<td>2.33 MB</td>
331331
<td>1,844</td>
332332
<td>1,814</td>
@@ -470,7 +470,7 @@ <h2>Dependency Repository Locations<a name="Dependency_Repository_Locations"></a
470470
<td>-</td>
471471
<td>-</td></tr>
472472
<tr class="b">
473-
<td>com.google.guava:guava:jar:20.0</td>
473+
<td>com.google.guava:guava:jar:26.0-android</td>
474474
<td>-</td>
475475
<td>-</td>
476476
<td>-</td></tr>

google-http-client-assembly/dependencies/google-http-client-jackson-dependencies.html

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ <h3>test<a name="test"></a></h3>
8585
<tr class="b">
8686
<td>com.google.guava</td>
8787
<td><a class="externalLink" href="https://github.com/google/guava/guava">guava</a></td>
88-
<td>20.0</td>
88+
<td>26.0-android</td>
8989
<td>jar</td>
9090
<td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr>
9191
<tr class="a">
@@ -279,7 +279,7 @@ <h3>Dependency Tree<a name="Dependency_Tree"></a></h3>
279279
<p><b>Description: </b>Jackson is a high-performance JSON processor (parser, generator)</p>
280280
<p><b>URL: </b><a class="externalLink" href="http://jackson.codehaus.org">http://jackson.codehaus.org</a></p>
281281
<p><b>Project License: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
282-
<li>com.google.guava:guava:jar:20.0 (test) <img id="_img23" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep22', '_img23' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep22" style="display:none">
282+
<li>com.google.guava:guava:jar:26.0-android (test) <img id="_img23" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep22', '_img23' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep22" style="display:none">
283283
<table border="0" class="bodyTable">
284284
<tr class="a">
285285
<th>Guava: Google Core Libraries for Java</th></tr>
@@ -318,7 +318,7 @@ <h2>Dependency File Details<a name="Dependency_File_Details"></a></h2>
318318
<td>1.5</td>
319319
<td>debug</td></tr>
320320
<tr class="a">
321-
<td>guava-20.0.jar</td>
321+
<td>guava-26.0-android.jar</td>
322322
<td>2.33 MB</td>
323323
<td>1,844</td>
324324
<td>1,814</td>
@@ -465,7 +465,7 @@ <h2>Dependency Repository Locations<a name="Dependency_Repository_Locations"></a
465465
<td>-</td>
466466
<td>-</td></tr>
467467
<tr class="a">
468-
<td>com.google.guava:guava:jar:20.0</td>
468+
<td>com.google.guava:guava:jar:26.0-android</td>
469469
<td>-</td>
470470
<td>-</td>
471471
<td>-</td></tr>

google-http-client-assembly/dependencies/google-http-client-jackson2-dependencies.html

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ <h3>test<a name="test"></a></h3>
8585
<tr class="b">
8686
<td>com.google.guava</td>
8787
<td><a class="externalLink" href="https://github.com/google/guava/guava">guava</a></td>
88-
<td>20.0</td>
88+
<td>26.0-android</td>
8989
<td>jar</td>
9090
<td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr>
9191
<tr class="a">
@@ -279,7 +279,7 @@ <h3>Dependency Tree<a name="Dependency_Tree"></a></h3>
279279
<p><b>Description: </b>Core Jackson processing abstractions (aka Streaming API), implementation for JSON</p>
280280
<p><b>URL: </b><a class="externalLink" href="https://github.com/FasterXML/jackson-core">https://github.com/FasterXML/jackson-core</a></p>
281281
<p><b>Project License: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
282-
<li>com.google.guava:guava:jar:20.0 (test) <img id="_img23" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep22', '_img23' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep22" style="display:none">
282+
<li>com.google.guava:guava:jar:26.0-android (test) <img id="_img23" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep22', '_img23' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep22" style="display:none">
283283
<table border="0" class="bodyTable">
284284
<tr class="a">
285285
<th>Guava: Google Core Libraries for Java</th></tr>
@@ -326,7 +326,7 @@ <h2>Dependency File Details<a name="Dependency_File_Details"></a></h2>
326326
<td>1.5</td>
327327
<td>debug</td></tr>
328328
<tr class="b">
329-
<td>guava-20.0.jar</td>
329+
<td>guava-26.0-android.jar</td>
330330
<td>2.33 MB</td>
331331
<td>1,844</td>
332332
<td>1,814</td>
@@ -470,7 +470,7 @@ <h2>Dependency Repository Locations<a name="Dependency_Repository_Locations"></a
470470
<td>-</td>
471471
<td>-</td></tr>
472472
<tr class="b">
473-
<td>com.google.guava:guava:jar:20.0</td>
473+
<td>com.google.guava:guava:jar:26.0-android</td>
474474
<td>-</td>
475475
<td>-</td>
476476
<td>-</td></tr>

google-http-client-assembly/dependencies/google-http-client-jdo-dependencies.html

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ <h3>test<a name="test"></a></h3>
8585
<tr class="b">
8686
<td>com.google.guava</td>
8787
<td><a class="externalLink" href="https://github.com/google/guava/guava">guava</a></td>
88-
<td>20.0</td>
88+
<td>26.0-android</td>
8989
<td>jar</td>
9090
<td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr>
9191
<tr class="a">
@@ -355,7 +355,7 @@ <h3>Dependency Tree<a name="Dependency_Tree"></a></h3>
355355
<p><b>Description: </b>MySQL JDBC Type 4 driver</p>
356356
<p><b>URL: </b><a class="externalLink" href="http://dev.mysql.com/doc/connector-j/en/">http://dev.mysql.com/doc/connector-j/en/</a></p>
357357
<p><b>Project License: </b><a class="externalLink" href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html">The GNU General Public License, Version 2</a></p></td></tr></table></div></li>
358-
<li>com.google.guava:guava:jar:20.0 (test) <img id="_img33" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep32', '_img33' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep32" style="display:none">
358+
<li>com.google.guava:guava:jar:26.0-android (test) <img id="_img33" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep32', '_img33' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep32" style="display:none">
359359
<table border="0" class="bodyTable">
360360
<tr class="a">
361361
<th>Guava: Google Core Libraries for Java</th></tr>
@@ -397,7 +397,7 @@ <h2>Dependency File Details<a name="Dependency_File_Details"></a></h2>
397397
<td>1.5</td>
398398
<td>debug</td></tr>
399399
<tr class="a">
400-
<td>guava-20.0.jar</td>
400+
<td>guava-26.0-android.jar</td>
401401
<td>2.33 MB</td>
402402
<td>1,844</td>
403403
<td>1,814</td>
@@ -591,7 +591,7 @@ <h2>Dependency Repository Locations<a name="Dependency_Repository_Locations"></a
591591
<td>-</td>
592592
<td>-</td></tr>
593593
<tr class="a">
594-
<td>com.google.guava:guava:jar:20.0</td>
594+
<td>com.google.guava:guava:jar:26.0-android</td>
595595
<td>-</td>
596596
<td>-</td>
597597
<td>-</td>

google-http-client-assembly/dependencies/google-http-client-xml-dependencies.html

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ <h3>test<a name="test"></a></h3>
8585
<tr class="b">
8686
<td>com.google.guava</td>
8787
<td><a class="externalLink" href="https://github.com/google/guava/guava">guava</a></td>
88-
<td>20.0</td>
88+
<td>26.0-android</td>
8989
<td>jar</td>
9090
<td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr>
9191
<tr class="a">
@@ -264,7 +264,7 @@ <h3>Dependency Tree<a name="Dependency_Tree"></a></h3>
264264
<p><b>Description: </b>MXP1 is a stable XmlPull parsing engine that is based on ideas from XPP and in particular XPP2 but completely revised and rewritten to take the best advantage of latest JIT JVMs such as Hotspot in JDK 1.4+.</p>
265265
<p><b>URL: </b><a class="externalLink" href="http://www.extreme.indiana.edu/xgws/xsoap/xpp/mxp1/">http://www.extreme.indiana.edu/xgws/xsoap/xpp/mxp1/</a></p>
266266
<p><b>Project License: </b><a class="externalLink" href="http://www.extreme.indiana.edu/viewcvs/~checkout~/XPP3/java/LICENSE.txt">Indiana University Extreme! Lab Software License, vesion 1.1.1</a><a class="externalLink" href="http://creativecommons.org/licenses/publicdomain">Public Domain</a><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-1.1">Apache Software License, version 1.1</a></p></td></tr></table></div></li>
267-
<li>com.google.guava:guava:jar:20.0 (test) <img id="_img21" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep20', '_img21' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep20" style="display:none">
267+
<li>com.google.guava:guava:jar:26.0-android (test) <img id="_img21" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep20', '_img21' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep20" style="display:none">
268268
<table border="0" class="bodyTable">
269269
<tr class="a">
270270
<th>Guava: Google Core Libraries for Java</th></tr>
@@ -306,7 +306,7 @@ <h2>Dependency File Details<a name="Dependency_File_Details"></a></h2>
306306
<td>1.5</td>
307307
<td>debug</td></tr>
308308
<tr class="a">
309-
<td>guava-20.0.jar</td>
309+
<td>guava-26.0-android.jar</td>
310310
<td>2.33 MB</td>
311311
<td>1,844</td>
312312
<td>1,814</td>
@@ -445,7 +445,7 @@ <h2>Dependency Repository Locations<a name="Dependency_Repository_Locations"></a
445445
<td>-</td>
446446
<td>-</td></tr>
447447
<tr class="a">
448-
<td>com.google.guava:guava:jar:20.0</td>
448+
<td>com.google.guava:guava:jar:26.0-android</td>
449449
<td>-</td>
450450
<td>-</td>
451451
<td>-</td></tr>

google-http-client/src/main/java/com/google/api/client/util/Data.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ public class Data {
107107
* @return magic object instance that represents the "null" value (not Java {@code null})
108108
* @throws IllegalArgumentException if unable to create a new instance
109109
*/
110-
public static <T> T nullOf(Class<?> objClass) {
110+
public static <T> T nullOf(Class<T> objClass) {
111111
Object result = NULL_CACHE.get(objClass);
112112
if (result == null) {
113113
synchronized (NULL_CACHE) {

google-http-client/src/main/java/com/google/api/client/util/FieldInfo.java

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,12 @@
1515
package com.google.api.client.util;
1616

1717
import java.lang.reflect.Field;
18+
import java.lang.reflect.InvocationTargetException;
19+
import java.lang.reflect.Method;
1820
import java.lang.reflect.Modifier;
1921
import java.lang.reflect.Type;
22+
import java.util.ArrayList;
23+
import java.util.List;
2024
import java.util.Map;
2125
import java.util.WeakHashMap;
2226

@@ -112,6 +116,9 @@ public static FieldInfo of(Field field) {
112116
/** Field. */
113117
private final Field field;
114118

119+
/** Setters Method for field */
120+
private final Method []setters;
121+
115122
/**
116123
* Data key name associated with the field for a non-enum-constant with a {@link Key} annotation,
117124
* or data key value associated with the enum constant with a {@link Value} annotation or {@code
@@ -127,6 +134,21 @@ public static FieldInfo of(Field field) {
127134
this.field = field;
128135
this.name = name == null ? null : name.intern();
129136
isPrimitive = Data.isPrimitive(getType());
137+
this.setters = settersMethodForField(field);
138+
}
139+
140+
/**
141+
* Creates list of setter methods for a field only in declaring class.
142+
*/
143+
private Method[] settersMethodForField(Field field) {
144+
List<Method> methods = new ArrayList<Method>();
145+
for (Method method : field.getDeclaringClass().getDeclaredMethods()) {
146+
if (method.getName().toLowerCase().equals("set" + field.getName().toLowerCase())
147+
&& method.getParameterTypes().length == 1) {
148+
methods.add(method);
149+
}
150+
}
151+
return methods.toArray(new Method[methods.size()]);
130152
}
131153

132154
/**
@@ -203,6 +225,20 @@ public Object getValue(Object obj) {
203225
* If the field is final, it checks that value being set is identical to the existing value.
204226
*/
205227
public void setValue(Object obj, Object value) {
228+
if (setters.length > 0) {
229+
for (Method method : setters) {
230+
if (value == null || method.getParameterTypes()[0].isAssignableFrom(value.getClass())) {
231+
try {
232+
method.invoke(obj, value);
233+
return;
234+
} catch (IllegalAccessException e) {
235+
// try to set field directly
236+
} catch (InvocationTargetException e) {
237+
// try to set field directly
238+
}
239+
}
240+
}
241+
}
206242
setFieldValue(field, obj, value);
207243
}
208244

0 commit comments

Comments
 (0)