1010
1111namespace utPLSQL
1212{
13+ //*FUNC: 4*/ extern char *(*SYS_OracleHome)();
14+ internal delegate IntPtr SysOracleHome ( ) ;
15+
1316 //*FUNC: 11*/ BOOL (*IDE_Connected)();
1417 internal delegate bool IdeConnected ( ) ;
1518
@@ -23,8 +26,7 @@ namespace utPLSQL
2326 internal delegate void IdeCreatePopupItem ( int id , int index , string name , string objectType ) ;
2427
2528 //*FUNC: 74*/ int (*IDE_GetPopupObject)(char **ObjectType, char **ObjectOwner, char **ObjectName, char **SubObject);
26- internal delegate int IdeGetPopupObject ( out IntPtr objectType , out IntPtr objectOwner , out IntPtr objectName ,
27- out IntPtr subObject ) ;
29+ internal delegate int IdeGetPopupObject ( out IntPtr objectType , out IntPtr objectOwner , out IntPtr objectName , out IntPtr subObject ) ;
2830
2931 //*FUNC: 79*/ char *(*IDE_GetObjectSource)(char *ObjectType, char *ObjectOwner, char *ObjectName);
3032 internal delegate IntPtr IdeGetObjectSource ( string objectType , string objectOwner , string objectName ) ;
@@ -44,6 +46,8 @@ public class PlsqlDeveloperUtPlsqlPlugin
4446 private const int PluginPopupIndex = 1 ;
4547 private const int PluginPopupIndexWithCoverage = 2 ;
4648
49+ private static SysOracleHome sysOracleHome ;
50+
4751 private static IdeConnected connected ;
4852 private static IdeGetConnectionInfo getConnectionInfo ;
4953
@@ -59,9 +63,9 @@ public class PlsqlDeveloperUtPlsqlPlugin
5963 private static string password ;
6064 private static string database ;
6165 private static string connectAs ;
66+ private static string oracleHome ;
6267
6368 private static PlsqlDeveloperUtPlsqlPlugin _plugin ;
64-
6569 private static readonly List < TestRunnerWindow > Windows = new List < TestRunnerWindow > ( ) ;
6670
6771 #region DLL exported API
@@ -83,7 +87,7 @@ public static void OnActivate()
8387 {
8488 try
8589 {
86- ConnectToDatabase ( ) ;
90+ getDatabaseInformation ( ) ;
8791
8892 // Separate streams are needed!
8993 var assembly = Assembly . GetExecutingAssembly ( ) ;
@@ -150,6 +154,9 @@ public static void RegisterCallback(int index, IntPtr function)
150154 {
151155 switch ( index )
152156 {
157+ case 4 :
158+ sysOracleHome = ( SysOracleHome ) Marshal . GetDelegateForFunctionPointer ( function , typeof ( SysOracleHome ) ) ;
159+ break ;
153160 case 11 :
154161 connected = ( IdeConnected ) Marshal . GetDelegateForFunctionPointer ( function , typeof ( IdeConnected ) ) ;
155162 break ;
@@ -181,7 +188,7 @@ public static void RegisterCallback(int index, IntPtr function)
181188 [ DllExport ( "OnConnectionChange" , CallingConvention = CallingConvention . Cdecl ) ]
182189 public static void OnConnectionChange ( )
183190 {
184- ConnectToDatabase ( ) ;
191+ getDatabaseInformation ( ) ;
185192 }
186193
187194 [ DllExport ( "CreateMenuItem" , CallingConvention = CallingConvention . Cdecl ) ]
@@ -211,7 +218,7 @@ public static void OnMenuClick(int index)
211218 {
212219 if ( isConnected ( ) && ! isSydba ( ) )
213220 {
214- var testResultWindow = new TestRunnerWindow ( _plugin , username , password , database , connectAs ) ;
221+ var testResultWindow = new TestRunnerWindow ( _plugin , username , password , database , connectAs , oracleHome ) ;
215222 Windows . Add ( testResultWindow ) ;
216223 testResultWindow . RunTestsAsync ( "_ALL" , username , null , null , false ) ;
217224 }
@@ -220,7 +227,7 @@ public static void OnMenuClick(int index)
220227 {
221228 if ( isConnected ( ) && ! isSydba ( ) )
222229 {
223- var testResultWindow = new TestRunnerWindow ( _plugin , username , password , database , connectAs ) ;
230+ var testResultWindow = new TestRunnerWindow ( _plugin , username , password , database , connectAs , oracleHome ) ;
224231 Windows . Add ( testResultWindow ) ;
225232 testResultWindow . RunTestsAsync ( "_ALL" , username , null , null , true ) ;
226233 }
@@ -231,7 +238,7 @@ public static void OnMenuClick(int index)
231238 {
232239 getPopupObject ( out IntPtr type , out IntPtr owner , out IntPtr name , out IntPtr subType ) ;
233240
234- var testResultWindow = new TestRunnerWindow ( _plugin , username , password , database , connectAs ) ;
241+ var testResultWindow = new TestRunnerWindow ( _plugin , username , password , database , connectAs , oracleHome ) ;
235242 Windows . Add ( testResultWindow ) ;
236243 testResultWindow . RunTestsAsync ( Marshal . PtrToStringAnsi ( type ) , Marshal . PtrToStringAnsi ( owner ) ,
237244 Marshal . PtrToStringAnsi ( name ) , Marshal . PtrToStringAnsi ( subType ) , false ) ;
@@ -243,7 +250,7 @@ public static void OnMenuClick(int index)
243250 {
244251 getPopupObject ( out IntPtr type , out IntPtr owner , out IntPtr name , out IntPtr subType ) ;
245252
246- var testResultWindow = new TestRunnerWindow ( _plugin , username , password , database , connectAs ) ;
253+ var testResultWindow = new TestRunnerWindow ( _plugin , username , password , database , connectAs , oracleHome ) ;
247254 Windows . Add ( testResultWindow ) ;
248255 testResultWindow . RunTestsAsync ( Marshal . PtrToStringAnsi ( type ) , Marshal . PtrToStringAnsi ( owner ) ,
249256 Marshal . PtrToStringAnsi ( name ) , Marshal . PtrToStringAnsi ( subType ) , true ) ;
@@ -290,7 +297,7 @@ private static bool isConnected()
290297 return true ;
291298 }
292299
293- private static void ConnectToDatabase ( )
300+ private static void getDatabaseInformation ( )
294301 {
295302 try
296303 {
@@ -305,6 +312,10 @@ private static void ConnectToDatabase()
305312 IntPtr ptrConnectAs = getConnectAs ( ) ;
306313
307314 connectAs = Marshal . PtrToStringAnsi ( ptrConnectAs ) ;
315+
316+ IntPtr ptrOracleHome = sysOracleHome ( ) ;
317+
318+ oracleHome = Marshal . PtrToStringAnsi ( ptrOracleHome ) ;
308319 }
309320 }
310321 catch ( Exception e )
0 commit comments