SF 1662887 protect Dispatch static methods
This commit is contained in:
@@ -13,31 +13,42 @@
|
||||
</ul>
|
||||
|
||||
<h3>Tracked Changes</h3>
|
||||
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%">
|
||||
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" >
|
||||
<tr>
|
||||
<td width="100%" colspan="2"><b>Bugs</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">1651926 </td>
|
||||
<td width="87%">ActiveXComponent: getPropertyAsString should call getString() instead of toString()</td>
|
||||
<td width="13%" valign="top">1651926 </td>
|
||||
<td width="87%" valign="top">ActiveXComponent: getPropertyAsString should call getString() instead of toString()</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%"> </td>
|
||||
<td width="87%"> </td>
|
||||
<td width="13%" valign="top">1504120 </td>
|
||||
<td width="87%" valign="top">Microsoft 2003 Server crashes. Server crashes on MS 2003 Server have been reported over time.
|
||||
Some users have had say that Jacob must be built on MS2003 Server to run reliably.
|
||||
The Jacob distribution on Sourceforge is built on Windows XP SP2.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%" valign="top"> </td>
|
||||
<td width="87%" valign="top"> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="100%" colspan="2"><b>Patches</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%"> </td>
|
||||
<td width="87%"> </td>
|
||||
<td width="13%" valign="top"> </td>
|
||||
<td width="87%" valign="top"> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="100%" colspan="2"><b>Feature Requests</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%"> </td>
|
||||
<td width="87%"> </td>
|
||||
<td width="13%" valign="top">1662887</td>
|
||||
<td width="87%" valign="top">Dispatch static methods should throw runtime exceptions when
|
||||
null is passed in for the Dispatch object and when the Dispatch object is in an invalid state. </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%" valign="top"> </td>
|
||||
<td width="87%" valign="top"> </td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@@ -51,42 +62,42 @@ Bug fix release
|
||||
<td width="100%" colspan="2"><b>Bugs</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">1602188</td>
|
||||
<td width="87%">Variant toString() causes stack overflow for byRef() Variants
|
||||
<td width="13%" valign="top">1602188</td>
|
||||
<td width="87%" valign="top">Variant toString() causes stack overflow for byRef() Variants
|
||||
(This show stopper defect forced the 1.11.1 release)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">1611487</td>
|
||||
<td width="87%">Variant toJavaObject() doesn't work for byRef Variables and
|
||||
<td width="13%" valign="top">1611487</td>
|
||||
<td width="87%" valign="top">Variant toJavaObject() doesn't work for byRef Variables and
|
||||
returned the wrong value for unrecognized Variant types.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td width="13%">1607878</td>
|
||||
<td width="87%">Variant getJavaDateRef() fails.</td>
|
||||
<td width="13%" valign="top">1607878</td>
|
||||
<td width="87%" valign="top">Variant getJavaDateRef() fails.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%"> </td>
|
||||
<td width="87%"> </td>
|
||||
<td width="13%" valign="top"> </td>
|
||||
<td width="87%" valign="top"> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="100%" colspan="2"><b>Patches</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">SF1603631</td>
|
||||
<td width="87%">Concurrent modification of ROT causes VM crashes. Access
|
||||
<td width="13%" valign="top">SF1603631</td>
|
||||
<td width="87%" valign="top">Concurrent modification of ROT causes VM crashes. Access
|
||||
to the ROT has been sychronized. No performance impact analysis has been done</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%"> </td>
|
||||
<td width="87%"> </td>
|
||||
<td width="13%" valign="top"> </td>
|
||||
<td width="87%" valign="top"> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="100%" colspan="2"><b>Feature Requests</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%"> </td>
|
||||
<td width="87%"> </td>
|
||||
<td width="13%" valign="top"> </td>
|
||||
<td width="87%" valign="top"> </td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@@ -125,61 +136,61 @@ Bug fix release
|
||||
<td width="100%" colspan="2"><b>Bugs</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">1550604</td>
|
||||
<td width="87%">Build process died with confusing error if version not set in properties file(pre1)</td>
|
||||
<td width="13%" valign="top">1550604</td>
|
||||
<td width="87%" valign="top">Build process died with confusing error if version not set in properties file(pre1)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">1511033</td>
|
||||
<td width="87%">Fix array index out of bounds problem due to coding error (pre1)</td>
|
||||
<td width="13%" valign="top">1511033</td>
|
||||
<td width="87%" valign="top">Fix array index out of bounds problem due to coding error (pre1)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">1570270 </td>
|
||||
<td width="87%">~Event method in EventProxy may unhook java thread from VM.
|
||||
<td width="13%" valign="top">1570270 </td>
|
||||
<td width="87%" valign="top">~Event method in EventProxy may unhook java thread from VM.
|
||||
Can get JNI error because unhooking listner detatched Java VM thread (pre1)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">1538011 </td>
|
||||
<td width="87%">toString() non compliant with java standards. The toString() method
|
||||
<td width="13%" valign="top">1538011 </td>
|
||||
<td width="87%" valign="top">toString() non compliant with java standards. The toString() method
|
||||
converted the underlying data to a string and it shouldn't. This caused
|
||||
a rethinking of all toXXX() methods other than toDispatch(). Most of the
|
||||
toXXX() methods have now been deprecated and should be replaced with getXXX() methods.
|
||||
(pre1)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">1478162</td>
|
||||
<td width="87%">Variant does not warn user if methods called after released.
|
||||
<td width="13%" valign="top">1478162</td>
|
||||
<td width="87%" valign="top">Variant does not warn user if methods called after released.
|
||||
All putXXX() and getXXX() methods now check to see if they've been released
|
||||
prior to calling the JNI code. toXXX() methods are deprecated but protected
|
||||
in the same way.(pre1)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%"> </td>
|
||||
<td width="87%"> </td>
|
||||
<td width="13%" valign="top"> </td>
|
||||
<td width="87%" valign="top"> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="100%" colspan="2"><b>Patches</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">SF1493647</td>
|
||||
<td width="87%">Support command line parameter dll location specification.
|
||||
<td width="13%" valign="top">SF1493647</td>
|
||||
<td width="87%" valign="top">Support command line parameter dll location specification.
|
||||
Applets and other tools can now specificy the dll location that
|
||||
is fed to a System.load() rather than System.loadLibrary for the
|
||||
situation where the app can't write the dll to a library path directory.(pre1)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%"> </td>
|
||||
<td width="87%"> </td>
|
||||
<td width="13%" valign="top"> </td>
|
||||
<td width="87%" valign="top"> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="100%" colspan="2"><b>Feature Requests</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">1580993</td>
|
||||
<td width="87%">Modify the build process to support 64 bit dll construction(pre2)</td>
|
||||
<td width="13%" valign="top">1580993</td>
|
||||
<td width="87%" valign="top">Modify the build process to support 64 bit dll construction(pre2)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">1550628</td>
|
||||
<td width="87%">Moved all LoadLibrary requests into LibraryLoader. Classes not subclassed
|
||||
<td width="13%" valign="top">1550628</td>
|
||||
<td width="87%" valign="top">Moved all LoadLibrary requests into LibraryLoader. Classes not subclassed
|
||||
off of JacobObject make calls to a static method on LibraryLoader to make sure
|
||||
DLL is loaded(pre1)</td>
|
||||
</tr>
|
||||
@@ -205,23 +216,23 @@ Bug fix release
|
||||
<td width="100%" colspan="2"><b>Bugs</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">1474474</td>
|
||||
<td width="87%">Static constants in the Variant class can no longer have SafeRelease() called on them.</td>
|
||||
<td width="13%" valign="top">1474474</td>
|
||||
<td width="87%" valign="top">Static constants in the Variant class can no longer have SafeRelease() called on them.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">1477793</td>
|
||||
<td width="87%">obj2variant should accept java.util.Date the same way the Variant constructor does</td>
|
||||
<td width="13%" valign="top">1477793</td>
|
||||
<td width="87%" valign="top">obj2variant should accept java.util.Date the same way the Variant constructor does</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%"> </td>
|
||||
<td width="87%"> </td>
|
||||
<td width="13%" valign="top"> </td>
|
||||
<td width="87%" valign="top"> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="100%" colspan="2"><b>Patches</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%"> </td>
|
||||
<td width="87%"> </td>
|
||||
<td width="13%" valign="top"> </td>
|
||||
<td width="87%" valign="top"> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="100%" colspan="2"><b>Feature Requests</b></td>
|
||||
@@ -275,73 +286,73 @@ Bug fix release
|
||||
<td width="100%" colspan="2"><b>Bugs</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">1340233</td>
|
||||
<td width="87%">Null Program Id in Dispatch Constructor does bad things to VM(pre1)</td>
|
||||
<td width="13%" valign="top">1340233</td>
|
||||
<td width="87%" valign="top">Null Program Id in Dispatch Constructor does bad things to VM(pre1)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">1341763</td>
|
||||
<td width="87%">Removed Variant serializable interface because it is not
|
||||
<td width="13%" valign="top">1341763</td>
|
||||
<td width="87%" valign="top">Removed Variant serializable interface because it is not
|
||||
actually serializable on 2000/xp(pre1)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">1435215</td>
|
||||
<td width="87%">Incorrect memory release in SafeArray.cpp (pre4)
|
||||
<td width="13%" valign="top">1435215</td>
|
||||
<td width="87%" valign="top">Incorrect memory release in SafeArray.cpp (pre4)
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">1224219</td>
|
||||
<td width="87%">Memory leak in SafeArray.GetString()
|
||||
<td width="13%" valign="top">1224219</td>
|
||||
<td width="87%" valign="top">Memory leak in SafeArray.GetString()
|
||||
Olivier Laurent, Software AG Luxembourg and David Pierron, Software AG Luxembourg (pre3)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">1224219</td>
|
||||
<td width="87%">Change from UTF to UNICODE SafeArray.fromStringArray()
|
||||
<td width="13%" valign="top">1224219</td>
|
||||
<td width="87%" valign="top">Change from UTF to UNICODE SafeArray.fromStringArray()
|
||||
Olivier Laurent, Software AG Luxembourg and David Pierron, Software AG Luxembourg (pre3)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%"> </td>
|
||||
<td width="87%"> </td>
|
||||
<td width="13%" valign="top"> </td>
|
||||
<td width="87%" valign="top"> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="100%" colspan="2"><b>Patches</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">1386454</td>
|
||||
<td width="87%">Return values from event callbacks (pre3)</td>
|
||||
<td width="13%" valign="top">1386454</td>
|
||||
<td width="87%" valign="top">Return values from event callbacks (pre3)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">1394001</td>
|
||||
<td width="87%">Missing variable initialization (pre3)</td>
|
||||
<td width="13%" valign="top">1394001</td>
|
||||
<td width="87%" valign="top">Missing variable initialization (pre3)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">1208570</td>
|
||||
<td width="87%">Support Excel and other objects events(pre1)</td>
|
||||
<td width="13%" valign="top">1208570</td>
|
||||
<td width="87%" valign="top">Support Excel and other objects events(pre1)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%"> </td>
|
||||
<td width="87%"> </td>
|
||||
<td width="13%" valign="top"> </td>
|
||||
<td width="87%" valign="top"> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="100%" colspan="2"><b>Feature Requests</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">1241037</td>
|
||||
<td width="87%">Support NULL VT_DISPATCH.(pre2)</td>
|
||||
<td width="13%" valign="top">1241037</td>
|
||||
<td width="87%" valign="top">Support NULL VT_DISPATCH.(pre2)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">1169851 </td>
|
||||
<td width="87%">Support of VB's Nothing.(pre2)</td>
|
||||
<td width="13%" valign="top">1169851 </td>
|
||||
<td width="87%" valign="top">Support of VB's Nothing.(pre2)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">1185167</td>
|
||||
<td width="87%">Provide methods to connect to running instance.(pre1)</td>
|
||||
<td width="13%" valign="top">1185167</td>
|
||||
<td width="87%" valign="top">Provide methods to connect to running instance.(pre1)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">959381</td>
|
||||
<td width="87%">Auto variant to object conversion method method added to Variant.(pre1)</td>
|
||||
<td width="13%" valign="top">959381</td>
|
||||
<td width="87%" valign="top">Auto variant to object conversion method method added to Variant.(pre1)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">1341779</td>
|
||||
<td width="87%">Variant should accept java.util.Date in Variant(Object) constructor(pre1)</td>
|
||||
<td width="13%" valign="top">1341779</td>
|
||||
<td width="87%" valign="top">Variant should accept java.util.Date in Variant(Object) constructor(pre1)</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@@ -386,38 +397,38 @@ Bug fix release
|
||||
<td width="100%" colspan="2"><b>Bugs</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">1335897 </td>
|
||||
<td width="87%">SafeArray() called toString() on objects when debug was turned on</td>
|
||||
<td width="13%" valign="top">1335897 </td>
|
||||
<td width="87%" valign="top">SafeArray() called toString() on objects when debug was turned on</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%"> </td>
|
||||
<td width="87%"> </td>
|
||||
<td width="13%" valign="top"> </td>
|
||||
<td width="87%" valign="top"> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="100%" colspan="2"><b>Patches</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">1314116 </td>
|
||||
<td width="87%"> putString UNICODE string length not detected</td>
|
||||
<td width="13%" valign="top">1314116 </td>
|
||||
<td width="87%" valign="top"> putString UNICODE string length not detected</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%"> </td>
|
||||
<td width="87%"> </td>
|
||||
<td width="13%" valign="top"> </td>
|
||||
<td width="87%" valign="top"> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="100%" colspan="2"><b>Feature Requests</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">1264850</td>
|
||||
<td width="87%">Custom Event Dispatching</td>
|
||||
<td width="13%" valign="top">1264850</td>
|
||||
<td width="87%" valign="top">Custom Event Dispatching</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">959382</td>
|
||||
<td width="87%">Time Conversion</td>
|
||||
<td width="13%" valign="top">959382</td>
|
||||
<td width="87%" valign="top">Time Conversion</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">1313892 </td>
|
||||
<td width="87%">Multi-Dimensional SafeArray</td>
|
||||
<td width="13%" valign="top">1313892 </td>
|
||||
<td width="87%" valign="top">Multi-Dimensional SafeArray</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@@ -538,90 +549,90 @@ running this from inside of Eclipse</li>
|
||||
<td width="100%" colspan="2"><b>Bugs</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">1116101</td>
|
||||
<td width="87%">jacob-msg 0284 : Access Violation while garbage collecting</td>
|
||||
<td width="13%" valign="top">1116101</td>
|
||||
<td width="87%" valign="top">jacob-msg 0284 : Access Violation while garbage collecting</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">1114159</td>
|
||||
<td width="87%">Problem with COM Error Trapping in JACOB DLL</td>
|
||||
<td width="13%" valign="top">1114159</td>
|
||||
<td width="87%" valign="top">Problem with COM Error Trapping in JACOB DLL</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">1113610</td>
|
||||
<td width="87%">Bad error check in SafeArray.cpp</td>
|
||||
<td width="13%" valign="top">1113610</td>
|
||||
<td width="87%" valign="top">Bad error check in SafeArray.cpp</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">1066698</td>
|
||||
<td width="87%">Minor Memory leak in Dispatch.cpp</td>
|
||||
<td width="13%" valign="top">1066698</td>
|
||||
<td width="87%" valign="top">Minor Memory leak in Dispatch.cpp</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">1065533</td>
|
||||
<td width="87%">Problem with unicode conversion</td>
|
||||
<td width="13%" valign="top">1065533</td>
|
||||
<td width="87%" valign="top">Problem with unicode conversion</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">1053871</td>
|
||||
<td width="87%">solution for memory leak in 1.7</td>
|
||||
<td width="13%" valign="top">1053871</td>
|
||||
<td width="87%" valign="top">solution for memory leak in 1.7</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">1053870</td>
|
||||
<td width="87%">JACOB0msg 2019 - Safe Array</td>
|
||||
<td width="13%" valign="top">1053870</td>
|
||||
<td width="87%" valign="top">JACOB0msg 2019 - Safe Array</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">1053866</td>
|
||||
<td width="87%">getHResult only returns 80020009</td>
|
||||
<td width="13%" valign="top">1053866</td>
|
||||
<td width="87%" valign="top">getHResult only returns 80020009</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">960646</td>
|
||||
<td width="87%">But in SafeArray:: getBoolean for 2D arrays</td>
|
||||
<td width="13%" valign="top">960646</td>
|
||||
<td width="87%" valign="top">But in SafeArray:: getBoolean for 2D arrays</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%"> </td>
|
||||
<td width="87%"> </td>
|
||||
<td width="13%" valign="top"> </td>
|
||||
<td width="87%" valign="top"> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="100%" colspan="2"><b>Patches</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">1115187</td>
|
||||
<td width="87%">EventCallbacks fail w/Variant ClassNotFoundException in JWS</td>
|
||||
<td width="13%" valign="top">1115187</td>
|
||||
<td width="87%" valign="top">EventCallbacks fail w/Variant ClassNotFoundException in JWS</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">1105915</td>
|
||||
<td width="87%">Fix for event handling memory corruption</td>
|
||||
<td width="13%" valign="top">1105915</td>
|
||||
<td width="87%" valign="top">Fix for event handling memory corruption</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">1090104</td>
|
||||
<td width="87%">Weak Reference in teh ROT</td>
|
||||
<td width="13%" valign="top">1090104</td>
|
||||
<td width="87%" valign="top">Weak Reference in teh ROT</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">1068544</td>
|
||||
<td width="87%">in/out parameter support for event handlers</td>
|
||||
<td width="13%" valign="top">1068544</td>
|
||||
<td width="87%" valign="top">in/out parameter support for event handlers</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">981540</td>
|
||||
<td width="87%">jre 1.4.2 fix as patch</td>
|
||||
<td width="13%" valign="top">981540</td>
|
||||
<td width="87%" valign="top">jre 1.4.2 fix as patch</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%"> </td>
|
||||
<td width="87%"> </td>
|
||||
<td width="13%" valign="top"> </td>
|
||||
<td width="87%" valign="top"> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="100%" colspan="2"><b>Feature Requests</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">1049390</td>
|
||||
<td width="87%">static Version information</td>
|
||||
<td width="13%" valign="top">1049390</td>
|
||||
<td width="87%" valign="top">static Version information</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">1049224</td>
|
||||
<td width="87%">Javadocs or at least script to generate it</td>
|
||||
<td width="13%" valign="top">1049224</td>
|
||||
<td width="87%" valign="top">Javadocs or at least script to generate it</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%">1049158</td>
|
||||
<td width="87%">API to get ProgId of ActiveXComponent</td>
|
||||
<td width="13%" valign="top">1049158</td>
|
||||
<td width="87%" valign="top">API to get ProgId of ActiveXComponent</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="13%"> </td>
|
||||
<td width="87%"> </td>
|
||||
<td width="13%" valign="top"> </td>
|
||||
<td width="87%" valign="top"> </td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
@@ -10,14 +10,19 @@ Section not yet written.
|
||||
Jacob.jar relies on a DLL file that it loads off of the library path or classpath.
|
||||
The code is written so that the jacob.dll is only loaded one time per classloader.
|
||||
This works fine in the standard application but can cause problems if jacob.jar
|
||||
is loaded from more than one class loader as in the situation where multiple
|
||||
jacob dependent web applications run in the same web server.
|
||||
Jacob is put in the WEB-INF/lib directory of each application's war file.
|
||||
is loaded from more than one class loader. This can happen in the situation where multiple
|
||||
jacob dependent web applications run in the same container like a web server or JWS runtime.
|
||||
<p>
|
||||
In the case of a web server, Jacob is normally put in the application specific WEB-INF/lib directory.
|
||||
This is the "right" way to do it and works in most situations.
|
||||
But, if Jacob is put in the WEB-INF/lib directory of each application's war file for more than
|
||||
one application then a problem occurs.
|
||||
In this situation, the web server uses a different classloader for each applicaiton.
|
||||
This means that each application will attempt to load the jacob.dll and errors
|
||||
are generated. The only way around this at this time (1.11) is to put the jacob.jar
|
||||
in the common/lib because that classloader is inherited by all of the applicaitons
|
||||
so the DLLs will only get loaded once. (This problem is described in SF 1645463)
|
||||
so the DLLs will only get loaded once. This problem is described in SF 1645463 and
|
||||
should be fixed in some future release, fix method and time not yet determined.
|
||||
<p>
|
||||
<hr>
|
||||
<h1>Jacob Command Line Settings</h1>
|
||||
@@ -49,7 +54,7 @@ This library supports several different :
|
||||
The default is "no additional checking"
|
||||
Example: -XCheck:jni
|
||||
|
||||
Last Modified 10/2005
|
||||
Last Modified 2/2007
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
||||
@@ -110,9 +110,11 @@ public class Dispatch extends JacobObject
|
||||
* it or make it private
|
||||
*/
|
||||
public int m_pDispatch;
|
||||
|
||||
/** program Id passed in by ActiveX components in their constructor */
|
||||
private String programId = null;
|
||||
|
||||
private static int NOT_ATTACHED = 0;
|
||||
|
||||
/**
|
||||
* Dummy empty array used one doesn't have to be created on every
|
||||
@@ -133,9 +135,10 @@ public class Dispatch extends JacobObject
|
||||
|
||||
/**
|
||||
* zero argument constructor that sets the dispatch pointer to 0
|
||||
* This is the only way to create a Dispatch without a value in the pointer field.
|
||||
*/
|
||||
public Dispatch() {
|
||||
m_pDispatch = 0;
|
||||
m_pDispatch = NOT_ATTACHED;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -147,7 +150,7 @@ public class Dispatch extends JacobObject
|
||||
* This constructor always creates a new windows/program object
|
||||
* because it is based on the CoCreate() windows function.
|
||||
* <p>
|
||||
* Fails silently if null is passed in as the program id
|
||||
* @throws IllegalArgumentException if null is passed in as the program id
|
||||
* <p>
|
||||
* @param requestedProgramId
|
||||
*/
|
||||
@@ -160,7 +163,7 @@ public class Dispatch extends JacobObject
|
||||
"Dispatch(String) does not accept null or an empty string as a parameter");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* native call createInstance only used by the constructor with the same parm
|
||||
* type. This probably should be private. It is the wrapper for the
|
||||
@@ -270,7 +273,7 @@ public class Dispatch extends JacobObject
|
||||
//TAKE OVER THE IDispatch POINTER
|
||||
this.m_pDispatch = dispatchToBeDisplaced.m_pDispatch;
|
||||
//NULL OUT THE INPUT POINTER
|
||||
dispatchToBeDisplaced.m_pDispatch = 0;
|
||||
dispatchToBeDisplaced.m_pDispatch = NOT_ATTACHED;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -297,15 +300,42 @@ public class Dispatch extends JacobObject
|
||||
public void safeRelease()
|
||||
{
|
||||
super.safeRelease();
|
||||
if (m_pDispatch != 0){
|
||||
if (isAttached()){
|
||||
release();
|
||||
m_pDispatch = 0;
|
||||
m_pDispatch = NOT_ATTACHED;
|
||||
} else {
|
||||
// looks like a double release
|
||||
if (isDebugEnabled()){debug(this.getClass().getName()+":"+this.hashCode()+" double release");}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return true if there is an underlying windows dispatch object
|
||||
*/
|
||||
protected boolean isAttached(){
|
||||
if (m_pDispatch == NOT_ATTACHED){
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws IllegalStateException if this dispatch isn't hooked up
|
||||
* @throws IllegalArgumentException if null the dispatch under test is null
|
||||
* @param theOneInQuestion dispatch being tested
|
||||
*/
|
||||
private static void throwIfUnattachedDispatch(Dispatch theOneInQuestion){
|
||||
if (theOneInQuestion == null) {
|
||||
throw new IllegalArgumentException("Can't pass in null Dispatch object");
|
||||
} else if (theOneInQuestion.isAttached()){
|
||||
return;
|
||||
} else {
|
||||
throw new IllegalStateException("Dispatch not hooked to windows memory");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Map args based on msdn doc
|
||||
* This method relies on the variant constructor except for arrays
|
||||
@@ -411,6 +441,7 @@ public class Dispatch extends JacobObject
|
||||
*/
|
||||
public static void invokeSubv(Dispatch dispatchTarget, String name, int dispID,
|
||||
int lcid, int wFlags, Variant[] vArg, int[] uArgErr) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
invokev(dispatchTarget, name, dispID, lcid, wFlags, vArg, uArgErr);
|
||||
}
|
||||
|
||||
@@ -423,6 +454,7 @@ public class Dispatch extends JacobObject
|
||||
*/
|
||||
public static void invokeSubv(Dispatch dispatchTarget, String name, int wFlags,
|
||||
Variant[] vArg, int[] uArgErr) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
invokev(dispatchTarget, name, 0, Dispatch.LOCALE_SYSTEM_DEFAULT, wFlags, vArg, uArgErr);
|
||||
}
|
||||
|
||||
@@ -435,6 +467,7 @@ public class Dispatch extends JacobObject
|
||||
*/
|
||||
public static void invokeSubv(Dispatch dispatchTarget, int dispID, int wFlags,
|
||||
Variant[] vArg, int[] uArgErr) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
invokev(dispatchTarget, null, dispID, Dispatch.LOCALE_SYSTEM_DEFAULT, wFlags, vArg,
|
||||
uArgErr);
|
||||
}
|
||||
@@ -458,6 +491,7 @@ public class Dispatch extends JacobObject
|
||||
* @param args an array of argument objects
|
||||
*/
|
||||
public static void callSubN(Dispatch dispatchTarget, String name, Object[] args) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
invokeSubv(dispatchTarget, name, Dispatch.Method | Dispatch.Get, obj2variant(args),
|
||||
new int[args.length]);
|
||||
}
|
||||
@@ -468,6 +502,7 @@ public class Dispatch extends JacobObject
|
||||
* @param args an array of argument objects
|
||||
*/
|
||||
public static void callSubN(Dispatch dispatchTarget, int dispID, Object[] args) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
invokeSubv(dispatchTarget, dispID, Dispatch.Method | Dispatch.Get, obj2variant(args),
|
||||
new int[args.length]);
|
||||
}
|
||||
@@ -519,6 +554,7 @@ public class Dispatch extends JacobObject
|
||||
* @return Variant returned by call
|
||||
*/
|
||||
public static Variant callN(Dispatch dispatchTarget, String name, Object[] args) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
return invokev(dispatchTarget, name,
|
||||
Dispatch.Method | Dispatch.Get, obj2variant(args),
|
||||
new int[args.length]);
|
||||
@@ -531,6 +567,7 @@ public class Dispatch extends JacobObject
|
||||
* @return Variant returned by call
|
||||
*/
|
||||
public static Variant callN(Dispatch dispatchTarget, int dispID, Object[] args) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
return invokev(dispatchTarget, dispID,
|
||||
Dispatch.Method | Dispatch.Get, obj2variant(args),
|
||||
new int[args.length]);
|
||||
@@ -548,6 +585,7 @@ public class Dispatch extends JacobObject
|
||||
*/
|
||||
public static Variant invoke(Dispatch dispatchTarget, String name, int dispID,
|
||||
int lcid, int wFlags, Object[] oArg, int[] uArgErr) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
return invokev(dispatchTarget, name, dispID, lcid, wFlags, obj2variant(oArg),
|
||||
uArgErr);
|
||||
}
|
||||
@@ -562,6 +600,7 @@ public class Dispatch extends JacobObject
|
||||
*/
|
||||
public static Variant invoke(Dispatch dispatchTarget, String name, int wFlags,
|
||||
Object[] oArg, int[] uArgErr) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
return invokev(dispatchTarget, name, wFlags, obj2variant(oArg), uArgErr);
|
||||
}
|
||||
|
||||
@@ -575,6 +614,7 @@ public class Dispatch extends JacobObject
|
||||
*/
|
||||
public static Variant invoke(Dispatch dispatchTarget, int dispID, int wFlags,
|
||||
Object[] oArg, int[] uArgErr) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
return invokev(dispatchTarget, dispID, wFlags, obj2variant(oArg), uArgErr);
|
||||
}
|
||||
|
||||
@@ -589,6 +629,7 @@ public class Dispatch extends JacobObject
|
||||
* @return Variant retuned by underlying callN
|
||||
*/
|
||||
public static Variant call(Dispatch dispatchTarget, String name) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
return callN(dispatchTarget, name, NO_VARIANT_ARGS);
|
||||
}
|
||||
|
||||
@@ -599,6 +640,7 @@ public class Dispatch extends JacobObject
|
||||
* @return Variant retuned by underlying callN
|
||||
*/
|
||||
public static Variant call(Dispatch dispatchTarget, String name, Object a1) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
return callN(dispatchTarget, name, new Object[] { a1 });
|
||||
}
|
||||
|
||||
@@ -610,6 +652,7 @@ public class Dispatch extends JacobObject
|
||||
* @return Variant retuned by underlying callN
|
||||
*/
|
||||
public static Variant call(Dispatch dispatchTarget, String name, Object a1, Object a2) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
return callN(dispatchTarget, name, new Object[] { a1, a2 });
|
||||
}
|
||||
|
||||
@@ -623,6 +666,7 @@ public class Dispatch extends JacobObject
|
||||
*/
|
||||
public static Variant call(Dispatch dispatchTarget, String name, Object a1, Object a2,
|
||||
Object a3) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
return callN(dispatchTarget, name, new Object[] { a1, a2, a3 });
|
||||
}
|
||||
|
||||
@@ -637,6 +681,7 @@ public class Dispatch extends JacobObject
|
||||
*/
|
||||
public static Variant call(Dispatch dispatchTarget, String name, Object a1, Object a2,
|
||||
Object a3, Object a4) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
return callN(dispatchTarget, name, new Object[] { a1, a2, a3, a4 });
|
||||
}
|
||||
|
||||
@@ -652,6 +697,7 @@ public class Dispatch extends JacobObject
|
||||
*/
|
||||
public static Variant call(Dispatch dispatchTarget, String name, Object a1, Object a2,
|
||||
Object a3, Object a4, Object a5) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
return callN(dispatchTarget, name, new Object[] { a1, a2, a3, a4, a5 });
|
||||
}
|
||||
|
||||
@@ -668,6 +714,7 @@ public class Dispatch extends JacobObject
|
||||
*/
|
||||
public static Variant call(Dispatch dispatchTarget, String name, Object a1, Object a2,
|
||||
Object a3, Object a4, Object a5, Object a6) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
return callN(dispatchTarget, name, new Object[] { a1, a2, a3, a4, a5, a6 });
|
||||
}
|
||||
|
||||
@@ -685,6 +732,7 @@ public class Dispatch extends JacobObject
|
||||
*/
|
||||
public static Variant call(Dispatch dispatchTarget, String name, Object a1, Object a2,
|
||||
Object a3, Object a4, Object a5, Object a6, Object a7) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
return callN(dispatchTarget, name, new Object[] { a1, a2, a3, a4, a5, a6, a7 });
|
||||
}
|
||||
|
||||
@@ -703,6 +751,7 @@ public class Dispatch extends JacobObject
|
||||
*/
|
||||
public static Variant call(Dispatch dispatchTarget, String name, Object a1, Object a2,
|
||||
Object a3, Object a4, Object a5, Object a6, Object a7, Object a8) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
return callN(dispatchTarget, name,
|
||||
new Object[] { a1, a2, a3, a4, a5, a6, a7, a8 });
|
||||
}
|
||||
@@ -713,6 +762,7 @@ public class Dispatch extends JacobObject
|
||||
* @return Variant retuned by underlying callN
|
||||
*/
|
||||
public static Variant call(Dispatch dispatchTarget, int dispid) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
return callN(dispatchTarget, dispid, NO_VARIANT_ARGS);
|
||||
}
|
||||
|
||||
@@ -723,7 +773,8 @@ public class Dispatch extends JacobObject
|
||||
* @return Variant retuned by underlying callN
|
||||
*/
|
||||
public static Variant call(Dispatch dispatchTarget, int dispid, Object a1) {
|
||||
return callN(dispatchTarget, dispid, new Object[] { a1 });
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
return callN(dispatchTarget, dispid, new Object[] { a1 });
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -734,6 +785,7 @@ public class Dispatch extends JacobObject
|
||||
* @return Variant retuned by underlying callN
|
||||
*/
|
||||
public static Variant call(Dispatch dispatchTarget, int dispid, Object a1, Object a2) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
return callN(dispatchTarget, dispid, new Object[] { a1, a2 });
|
||||
}
|
||||
|
||||
@@ -747,6 +799,7 @@ public class Dispatch extends JacobObject
|
||||
*/
|
||||
public static Variant call(Dispatch dispatchTarget, int dispid, Object a1, Object a2,
|
||||
Object a3) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
return callN(dispatchTarget, dispid, new Object[] { a1, a2, a3 });
|
||||
}
|
||||
|
||||
@@ -761,6 +814,7 @@ public class Dispatch extends JacobObject
|
||||
*/
|
||||
public static Variant call(Dispatch dispatchTarget, int dispid, Object a1, Object a2,
|
||||
Object a3, Object a4) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
return callN(dispatchTarget, dispid, new Object[] { a1, a2, a3, a4 });
|
||||
}
|
||||
|
||||
@@ -776,6 +830,7 @@ public class Dispatch extends JacobObject
|
||||
*/
|
||||
public static Variant call(Dispatch dispatchTarget, int dispid, Object a1, Object a2,
|
||||
Object a3, Object a4, Object a5) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
return callN(dispatchTarget, dispid, new Object[] { a1, a2, a3, a4, a5 });
|
||||
}
|
||||
|
||||
@@ -792,6 +847,7 @@ public class Dispatch extends JacobObject
|
||||
*/
|
||||
public static Variant call(Dispatch dispatchTarget, int dispid, Object a1, Object a2,
|
||||
Object a3, Object a4, Object a5, Object a6) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
return callN(dispatchTarget, dispid, new Object[] { a1, a2, a3, a4, a5, a6 });
|
||||
}
|
||||
|
||||
@@ -809,6 +865,7 @@ public class Dispatch extends JacobObject
|
||||
*/
|
||||
public static Variant call(Dispatch dispatchTarget, int dispid, Object a1, Object a2,
|
||||
Object a3, Object a4, Object a5, Object a6, Object a7) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
return callN(dispatchTarget, dispid, new Object[] { a1, a2, a3, a4, a5, a6, a7 });
|
||||
}
|
||||
|
||||
@@ -827,6 +884,7 @@ public class Dispatch extends JacobObject
|
||||
*/
|
||||
public static Variant call(Dispatch dispatchTarget, int dispid, Object a1, Object a2,
|
||||
Object a3, Object a4, Object a5, Object a6, Object a7, Object a8) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
return callN(dispatchTarget, dispid, new Object[] { a1, a2, a3, a4, a5, a6, a7,
|
||||
a8 });
|
||||
}
|
||||
@@ -841,6 +899,7 @@ public class Dispatch extends JacobObject
|
||||
* @param val
|
||||
*/
|
||||
public static void put(Dispatch dispatchTarget, String name, Object val) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
invoke(dispatchTarget, name, Dispatch.Put, new Object[] { val }, new int[1]);
|
||||
}
|
||||
|
||||
@@ -850,6 +909,7 @@ public class Dispatch extends JacobObject
|
||||
* @param val
|
||||
*/
|
||||
public static void put(Dispatch dispatchTarget, int dispid, Object val) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
invoke(dispatchTarget, dispid, Dispatch.Put, new Object[] { val }, new int[1]);
|
||||
}
|
||||
|
||||
@@ -881,8 +941,7 @@ public class Dispatch extends JacobObject
|
||||
*/
|
||||
public static Variant invokev(Dispatch dispatchTarget, String name, int wFlags,
|
||||
Variant[] vArg, int[] uArgErr) {
|
||||
if (!(dispatchTarget instanceof Dispatch))
|
||||
throw new ClassCastException("Dispatch object expected");
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
return invokev(dispatchTarget, name, 0, Dispatch.LOCALE_SYSTEM_DEFAULT, wFlags, vArg,
|
||||
uArgErr);
|
||||
}
|
||||
@@ -898,8 +957,7 @@ public class Dispatch extends JacobObject
|
||||
*/
|
||||
public static Variant invokev(Dispatch dispatchTarget, String name, int wFlags,
|
||||
Variant[] vArg, int[] uArgErr, int wFlagsEx) {
|
||||
if (!(dispatchTarget instanceof Dispatch))
|
||||
throw new ClassCastException("Dispatch object expected");
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
// do not implement IDispatchEx for now
|
||||
return invokev(dispatchTarget, name, 0, Dispatch.LOCALE_SYSTEM_DEFAULT, wFlags, vArg,
|
||||
uArgErr);
|
||||
@@ -915,8 +973,7 @@ public class Dispatch extends JacobObject
|
||||
*/
|
||||
public static Variant invokev(Dispatch dispatchTarget, int dispID, int wFlags,
|
||||
Variant[] vArg, int[] uArgErr) {
|
||||
if (!(dispatchTarget instanceof Dispatch))
|
||||
throw new ClassCastException("Dispatch object expected");
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
return invokev(dispatchTarget, null, dispID,
|
||||
Dispatch.LOCALE_SYSTEM_DEFAULT, wFlags, vArg,
|
||||
uArgErr);
|
||||
@@ -939,6 +996,7 @@ public class Dispatch extends JacobObject
|
||||
*/
|
||||
public static void invokeSub(Dispatch dispatchTarget, String name, int dispid,
|
||||
int lcid, int wFlags, Object[] oArg, int[] uArgErr) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
invokeSubv(dispatchTarget, name, dispid, lcid, wFlags, obj2variant(oArg), uArgErr);
|
||||
}
|
||||
|
||||
@@ -955,6 +1013,7 @@ public class Dispatch extends JacobObject
|
||||
*/
|
||||
public static void invokeSub(Dispatch dispatchTarget, String name, int wFlags,
|
||||
Object[] oArg, int[] uArgErr) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
invokeSub(dispatchTarget, name, 0, Dispatch.LOCALE_SYSTEM_DEFAULT, wFlags, oArg, uArgErr);
|
||||
}
|
||||
|
||||
@@ -967,6 +1026,7 @@ public class Dispatch extends JacobObject
|
||||
*/
|
||||
public static void invokeSub(Dispatch dispatchTarget, int dispid, int wFlags,
|
||||
Object[] oArg, int[] uArgErr) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
invokeSub(dispatchTarget, null, dispid, Dispatch.LOCALE_SYSTEM_DEFAULT, wFlags, oArg,
|
||||
uArgErr);
|
||||
}
|
||||
@@ -981,6 +1041,7 @@ public class Dispatch extends JacobObject
|
||||
* @param name
|
||||
*/
|
||||
public static void callSub(Dispatch dispatchTarget, String name) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
callSubN(dispatchTarget, name, NO_OBJECT_ARGS);
|
||||
}
|
||||
|
||||
@@ -991,6 +1052,7 @@ public class Dispatch extends JacobObject
|
||||
* @param a1
|
||||
*/
|
||||
public static void callSub(Dispatch dispatchTarget, String name, Object a1) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
callSubN(dispatchTarget, name, new Object[] { a1 });
|
||||
}
|
||||
|
||||
@@ -1002,6 +1064,7 @@ public class Dispatch extends JacobObject
|
||||
* @param a2
|
||||
*/
|
||||
public static void callSub(Dispatch dispatchTarget, String name, Object a1, Object a2) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
callSubN(dispatchTarget, name, new Object[] { a1, a2 });
|
||||
}
|
||||
|
||||
@@ -1015,6 +1078,7 @@ public class Dispatch extends JacobObject
|
||||
*/
|
||||
public static void callSub(Dispatch dispatchTarget, String name, Object a1, Object a2,
|
||||
Object a3) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
callSubN(dispatchTarget, name, new Object[] { a1, a2, a3 });
|
||||
}
|
||||
|
||||
@@ -1029,6 +1093,7 @@ public class Dispatch extends JacobObject
|
||||
*/
|
||||
public static void callSub(Dispatch dispatchTarget, String name, Object a1, Object a2,
|
||||
Object a3, Object a4) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
callSubN(dispatchTarget, name, new Object[] { a1, a2, a3, a4 });
|
||||
}
|
||||
|
||||
@@ -1044,6 +1109,7 @@ public class Dispatch extends JacobObject
|
||||
*/
|
||||
public static void callSub(Dispatch dispatchTarget, String name, Object a1, Object a2,
|
||||
Object a3, Object a4, Object a5) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
callSubN(dispatchTarget, name, new Object[] { a1, a2, a3, a4, a5 });
|
||||
}
|
||||
|
||||
@@ -1060,6 +1126,7 @@ public class Dispatch extends JacobObject
|
||||
*/
|
||||
public static void callSub(Dispatch dispatchTarget, String name, Object a1, Object a2,
|
||||
Object a3, Object a4, Object a5, Object a6) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
callSubN(dispatchTarget, name, new Object[] { a1, a2, a3, a4, a5, a6 });
|
||||
}
|
||||
|
||||
@@ -1077,6 +1144,7 @@ public class Dispatch extends JacobObject
|
||||
*/
|
||||
public static void callSub(Dispatch dispatchTarget, String name, Object a1, Object a2,
|
||||
Object a3, Object a4, Object a5, Object a6, Object a7) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
callSubN(dispatchTarget, name, new Object[] { a1, a2, a3, a4, a5, a6, a7 });
|
||||
}
|
||||
|
||||
@@ -1095,6 +1163,7 @@ public class Dispatch extends JacobObject
|
||||
*/
|
||||
public static void callSub(Dispatch dispatchTarget, String name, Object a1, Object a2,
|
||||
Object a3, Object a4, Object a5, Object a6, Object a7, Object a8) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
callSubN(dispatchTarget, name, new Object[] { a1, a2, a3, a4, a5, a6, a7, a8 });
|
||||
}
|
||||
|
||||
@@ -1104,6 +1173,7 @@ public class Dispatch extends JacobObject
|
||||
* @param dispid
|
||||
*/
|
||||
public static void callSub(Dispatch dispatchTarget, int dispid) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
callSubN(dispatchTarget, dispid, NO_OBJECT_ARGS);
|
||||
}
|
||||
|
||||
@@ -1114,6 +1184,7 @@ public class Dispatch extends JacobObject
|
||||
* @param a1
|
||||
*/
|
||||
public static void callSub(Dispatch dispatchTarget, int dispid, Object a1) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
callSubN(dispatchTarget, dispid, new Object[] { a1 });
|
||||
}
|
||||
|
||||
@@ -1125,6 +1196,7 @@ public class Dispatch extends JacobObject
|
||||
* @param a2
|
||||
*/
|
||||
public static void callSub(Dispatch dispatchTarget, int dispid, Object a1, Object a2) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
callSubN(dispatchTarget, dispid, new Object[] { a1, a2 });
|
||||
}
|
||||
|
||||
@@ -1152,6 +1224,7 @@ public class Dispatch extends JacobObject
|
||||
*/
|
||||
public static void callSub(Dispatch dispatchTarget, int dispid, Object a1, Object a2,
|
||||
Object a3, Object a4) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
callSubN(dispatchTarget, dispid, new Object[] { a1, a2, a3, a4 });
|
||||
}
|
||||
|
||||
@@ -1167,6 +1240,7 @@ public class Dispatch extends JacobObject
|
||||
*/
|
||||
public static void callSub(Dispatch dispatchTarget, int dispid, Object a1, Object a2,
|
||||
Object a3, Object a4, Object a5) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
callSubN(dispatchTarget, dispid, new Object[] { a1, a2, a3, a4, a5 });
|
||||
}
|
||||
|
||||
@@ -1183,6 +1257,7 @@ public class Dispatch extends JacobObject
|
||||
*/
|
||||
public static void callSub(Dispatch dispatchTarget, int dispid, Object a1, Object a2,
|
||||
Object a3, Object a4, Object a5, Object a6) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
callSubN(dispatchTarget, dispid, new Object[] { a1, a2, a3, a4, a5, a6 });
|
||||
}
|
||||
|
||||
@@ -1200,6 +1275,7 @@ public class Dispatch extends JacobObject
|
||||
*/
|
||||
public static void callSub(Dispatch dispatchTarget, int dispid, Object a1, Object a2,
|
||||
Object a3, Object a4, Object a5, Object a6, Object a7) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
callSubN(dispatchTarget, dispid, new Object[] { a1, a2, a3, a4, a5, a6, a7 });
|
||||
}
|
||||
|
||||
@@ -1232,6 +1308,7 @@ public class Dispatch extends JacobObject
|
||||
* @return Variant returned by the request for retrieval of parameter
|
||||
*/
|
||||
public static Variant get(Dispatch dispatchTarget, String name) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
return invokev(dispatchTarget, name, Dispatch.Get, NO_VARIANT_ARGS, NO_INT_ARGS);
|
||||
}
|
||||
|
||||
@@ -1242,6 +1319,7 @@ public class Dispatch extends JacobObject
|
||||
* @return Variant returned by the request for retrieval of parameter
|
||||
*/
|
||||
public static Variant get(Dispatch dispatchTarget, int dispid) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
return invokev(dispatchTarget, dispid, Dispatch.Get, NO_VARIANT_ARGS, NO_INT_ARGS);
|
||||
}
|
||||
|
||||
@@ -1256,6 +1334,7 @@ public class Dispatch extends JacobObject
|
||||
* @param val
|
||||
*/
|
||||
public static void putRef(Dispatch dispatchTarget, String name, Object val) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
invoke(dispatchTarget, name, Dispatch.PutRef, new Object[] { val }, new int[1]);
|
||||
}
|
||||
|
||||
@@ -1266,6 +1345,7 @@ public class Dispatch extends JacobObject
|
||||
* @param val
|
||||
*/
|
||||
public static void putRef(Dispatch dispatchTarget, int dispid, Object val) {
|
||||
throwIfUnattachedDispatch(dispatchTarget);
|
||||
invoke(dispatchTarget, dispid, Dispatch.PutRef, new Object[] { val }, new int[1]);
|
||||
}
|
||||
|
||||
|
||||
31
unittest/com/jacob/com/DispatchValidDispatchTest.java
Normal file
31
unittest/com/jacob/com/DispatchValidDispatchTest.java
Normal file
@@ -0,0 +1,31 @@
|
||||
package com.jacob.com;
|
||||
|
||||
/**
|
||||
* Test armoring of dispatch static methods
|
||||
* May need to run with some command line options (including from inside Eclipse).
|
||||
* If so, then try these
|
||||
* <pre>
|
||||
* -Djava.library.path=d:/jacob/release/x86
|
||||
* -Dcom.jacob.autogc=false
|
||||
* -Dcom.jacob.debug=false
|
||||
* -Xcheck:jni
|
||||
* </pre>
|
||||
*/
|
||||
public class DispatchValidDispatchTest {
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
try {
|
||||
Dispatch.call(null, 0);
|
||||
System.out.println("Failed to throw IllegalArgumentException");
|
||||
} catch (IllegalArgumentException iae){
|
||||
System.out.println("Caught correct IllegalArgumentException: "+iae);
|
||||
}
|
||||
try {
|
||||
Dispatch foo = new Dispatch();
|
||||
Dispatch.call(foo, 0);
|
||||
} catch (IllegalStateException ise){
|
||||
System.out.println("Caught correct IllegalStateException "+ise);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user