How do I create a Connection Profile [message #53454] |
Wed, 11 March 2009 21:54  |
Eclipse User |
|
|
|
I'm trying to use DTP programmatically, but all the documentation I've
found just addresses how an administrative user sets up connections
through the eclipse UI. Can someone tell me where I might find something
that explains how to use the API. I'm not smart enough to figure out how
to use a barely-documented API of this complexity, but I'm sure I could
figure it out if I saw an example or an explanation of some sort.
Actually I think I just need to know how to create a connection profile.
I have code that creates a driver instance, and I know how to create a
connection if I hand it a connection profile; but I can't figure out how
to create a profile, presumably using the driver instance I created.
I execute the following code and get a NullPointerException where
indicated, which I take to indicate that I need to create a profile first.
ProfileManager pfm = ProfileManager.getInstance();
if (pfm == null){
System.err.println("No ProfileManager");
}
else{
IConnectionProfile[] profiles = pfm.getProfiles(); //NPE occurs here
for(IConnectionProfile profile : profiles){
System.out.println("Profile name: " + profile.getName());
System.out.println("Profile ID: " + profile.getInstanceID());
}
}
And here's how I create the driver instance:
mgr.createNewDriverInstance(templateStringID, templateName,
pathToConnectorJarFile);
|
|
|
|
|
Re: How do I create a Connection Profile [message #53778 is a reply to message #53510] |
Fri, 13 March 2009 13:48  |
Eclipse User |
|
|
|
Fitz,
Thanks for your response. I'm pursuing a different implementation vector
based on some guidance I just received from my tech lead. He wants me to
define the connection profile manually rather than try to retrieve one
declared in Plugin.XML. I have some code that does that, which I'll paste
below.
I'm able to verify that the properties are set properly on the connection
profile, but when I try to create a connection on the profile, I get an
NPE thrown in
org.eclipse.datatools.connectivity.internal.ConnectionProfil e. I looked at
the source code where the NPE is thrown, and it seems to be that I don't
have a connection factory set on it. I wasn't sure what value to pass for
the connection factory parameter, so that's probably where my problem is.
My code is below. I'm also registering a driver when the workbench starts
up. The code that does that is below.
DriverManager mgr = DriverManager.getInstance()
mgr.createNewDriverInstance( "org.eclipse.datatools.enablement.mysql.5_1.driverTemplate",
"MySQL JDBC (Bundled)", jarFileURL.getPath());
Here's the code where I try to create the profile and connect through it.
String driverID =
"org.eclipse.datatools.enablement.mysql.5_1.driverTemplate";
String userName = userName;
String password = password;
Properties props = new Properties();
props.setProperty(ConnectionProfileConstants.PROP_DRIVER_DEF INITION_ID,
driverID);
props.setProperty(ConnectionProfileConstants.PROP_PWD, password);
props.setProperty(ConnectionProfileConstants.PROP_UID, userName);
try {
pfm.createProfile("MySQL", "MySQL JDBC Profile",
"org.eclipse.datatools.enablement.mysql.5_1.driverTemplate", props);
} catch (ConnectionProfileException e1) {
e1.printStackTrace();
}
IConnectionProfile profile = pfm.getProfileByName("MySQL");
if (profile.arePropertiesComplete()){
System.err.println("Properties are complete");
} else {
System.err.println("Properties are NOT complete");
}
if(profile.getConnectionState() != IConnectionProfile.CONNECTED_STATE){
profile.connect();
}
connection = profile.createConnection("java.sql.Connection");
//NPE thrown for statement above. See stack trace below
rawConn = (Connection)connection.getRawConnection();
Stack Trace:
Note: I simplified the code above, since I actually call a separate class
(SomeDatabase) where createConnection() is invoked. SomeDatabase.java line
25 in the stack trace corresponds to the line above where I indicated the
NPE was thrown.
java.lang.NullPointerException
at
org.eclipse.datatools.connectivity.internal.ConnectionProfil e.createConnection(ConnectionProfile.java:355)
at prophettest.SomeDatabase.connect(SomeDatabase.java:25)
at prophettest.ConnectionTest.test(ConnectionTest.java:71)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce ssorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.junit.internal.runners.TestMethodRunner.executeMethodBod y(TestMethodRunner.java:99)
at
org.junit.internal.runners.TestMethodRunner.runUnprotected(T estMethodRunner.java:81)
at
org.junit.internal.runners.BeforeAndAfterRunner.runProtected (BeforeAndAfterRunner.java:34)
at
org.junit.internal.runners.TestMethodRunner.runMethod(TestMe thodRunner.java:75)
at
org.junit.internal.runners.TestMethodRunner.run(TestMethodRu nner.java:45)
at
org.junit.internal.runners.TestClassMethodsRunner.invokeTest Method(TestClassMethodsRunner.java:66)
at
org.junit.internal.runners.TestClassMethodsRunner.run(TestCl assMethodsRunner.java:35)
at
org.junit.internal.runners.TestClassRunner$1.runUnprotected( TestClassRunner.java:42)
at
org.junit.internal.runners.BeforeAndAfterRunner.runProtected (BeforeAndAfterRunner.java:34)
at org.junit.internal.runners.TestClassRunner.run(TestClassRunn er.java:52)
at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.r un(JUnit4TestReference.java:45)
at
org.eclipse.jdt.internal.junit.runner.TestExecution.run(Test Execution.java:38)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTe sts(RemoteTestRunner.java:460)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTe sts(RemoteTestRunner.java:673)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(R emoteTestRunner.java:386)
at
org.eclipse.pde.internal.junit.runtime.RemotePluginTestRunne r.main(RemotePluginTestRunner.java:62)
at
org.eclipse.pde.internal.junit.runtime.UITestApplication$1.r un(UITestApplication.java:114)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:3 5)
at
org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchr onizer.java:133)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.jav a:3800)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java :3425)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.jav a:2382)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2346)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:21 98)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493)
at
org.eclipse.core.databinding.observable.Realm.runWithDefault (Realm.java:288)
at
org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:488)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
at com.tasc.swb.internal.application.SWBApplication.start(Unkno wn Source)
at
org.eclipse.pde.internal.junit.runtime.UITestApplication.sta rt(UITestApplication.java:46)
at
org.eclipse.equinox.internal.app.EclipseAppHandle.run(Eclips eAppHandle.java:193)
at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:110)
at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:79)
at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:382)
at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce ssorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java: 549)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
at org.eclipse.equinox.launcher.Main.main(Main.java:1212)
|
|
|
Re: How do I create a Connection Profile [message #594650 is a reply to message #53454] |
Thu, 12 March 2009 15:54  |
Eclipse User |
|
|
|
I've gotten further along on this, but I'm still stuck.
I loaded into my target environment the DTP plug-in which provides a MySQL
connectionProfile
(org.eclipse.datatools.enablement.mysql_1.0.2.v200810160130. jar), and all
it's dependencies. I see that in the plug-in's Plugin.XML it defines a
connection profile with cateory =
"org.eclipse.datatools.connectivity.db.category" and name = "MySQL".
But when I query the profile manager for the profile by name or by
category, an NPE is thrown. Below is the code I'm executing.
ProfileManager pfm = ProfileManager.getInstance();
if (pfm == null){
System.err.println("No ProfileManager");
}
else{
IConnectionProfile profileByName =
pfm.getProfileByName("MySQL"); // NPE thrown here
System.out.println("Profile (by name) name: " +
profileByName.getName());
System.out.println("Profile (by name) ID: " +
profileByName.getInstanceID());
}
alternatively, if I execute the following code to get the profiles by
category I also see an NPE thrown
IConnectionProfile[] profiles = pfm.getProfilesByCategory(
"org.eclipse.datatools.connectivity.db.category");// NPE thrown here
for(IConnectionProfile catProfile : profiles){
System.out.println("Profile (by Cat) name: " + catProfile.getName());
System.out.println("Profile (by Cat) ID: " +
catProfile.getInstanceID());
|
|
|
Re: How do I create a Connection Profile [message #594661 is a reply to message #53482] |
Fri, 13 March 2009 10:41  |
Eclipse User |
|
|
|
Hey Mark...
You're definitely along the right path.
When you talk about using the API... What are you including for dependencies
in the plug-in that's calling the API?
And what's the NPE that you're getting? That'll help me better diagnose
what's going on.
--Fitz
"Mark Leone" <midnightjava@verizon.net> wrote in message
news:20f0543b701bb5f2663988d6c0943224$1@www.eclipse.org...
> I've gotten further along on this, but I'm still stuck.
>
> I loaded into my target environment the DTP plug-in which provides a MySQL
> connectionProfile
> (org.eclipse.datatools.enablement.mysql_1.0.2.v200810160130. jar), and all
> it's dependencies. I see that in the plug-in's Plugin.XML it defines a
> connection profile with cateory =
> "org.eclipse.datatools.connectivity.db.category" and name = "MySQL".
>
> But when I query the profile manager for the profile by name or by
> category, an NPE is thrown. Below is the code I'm executing.
>
> ProfileManager pfm = ProfileManager.getInstance();
> if (pfm == null){
> System.err.println("No ProfileManager");
> }
> else{
> IConnectionProfile profileByName =
> pfm.getProfileByName("MySQL"); // NPE thrown here
> System.out.println("Profile (by name) name: " + profileByName.getName());
> System.out.println("Profile (by name) ID: " +
> profileByName.getInstanceID());
> }
>
> alternatively, if I execute the following code to get the profiles by
> category I also see an NPE thrown
>
> IConnectionProfile[] profiles = pfm.getProfilesByCategory(
> "org.eclipse.datatools.connectivity.db.category");// NPE thrown here
> for(IConnectionProfile catProfile : profiles){
> System.out.println("Profile (by Cat) name: " + catProfile.getName());
> System.out.println("Profile (by Cat) ID: " + catProfile.getInstanceID());
>
>
>
|
|
|
Re: How do I create a Connection Profile [message #594752 is a reply to message #53510] |
Fri, 13 March 2009 13:48  |
Eclipse User |
|
|
|
Fitz,
Thanks for your response. I'm pursuing a different implementation vector
based on some guidance I just received from my tech lead. He wants me to
define the connection profile manually rather than try to retrieve one
declared in Plugin.XML. I have some code that does that, which I'll paste
below.
I'm able to verify that the properties are set properly on the connection
profile, but when I try to create a connection on the profile, I get an
NPE thrown in
org.eclipse.datatools.connectivity.internal.ConnectionProfil e. I looked at
the source code where the NPE is thrown, and it seems to be that I don't
have a connection factory set on it. I wasn't sure what value to pass for
the connection factory parameter, so that's probably where my problem is.
My code is below. I'm also registering a driver when the workbench starts
up. The code that does that is below.
DriverManager mgr = DriverManager.getInstance()
mgr.createNewDriverInstance( "org.eclipse.datatools.enablement.mysql.5_1.driverTemplate",
"MySQL JDBC (Bundled)", jarFileURL.getPath());
Here's the code where I try to create the profile and connect through it.
String driverID =
"org.eclipse.datatools.enablement.mysql.5_1.driverTemplate";
String userName = userName;
String password = password;
Properties props = new Properties();
props.setProperty(ConnectionProfileConstants.PROP_DRIVER_DEF INITION_ID,
driverID);
props.setProperty(ConnectionProfileConstants.PROP_PWD, password);
props.setProperty(ConnectionProfileConstants.PROP_UID, userName);
try {
pfm.createProfile("MySQL", "MySQL JDBC Profile",
"org.eclipse.datatools.enablement.mysql.5_1.driverTemplate", props);
} catch (ConnectionProfileException e1) {
e1.printStackTrace();
}
IConnectionProfile profile = pfm.getProfileByName("MySQL");
if (profile.arePropertiesComplete()){
System.err.println("Properties are complete");
} else {
System.err.println("Properties are NOT complete");
}
if(profile.getConnectionState() != IConnectionProfile.CONNECTED_STATE){
profile.connect();
}
connection = profile.createConnection("java.sql.Connection");
//NPE thrown for statement above. See stack trace below
rawConn = (Connection)connection.getRawConnection();
Stack Trace:
Note: I simplified the code above, since I actually call a separate class
(SomeDatabase) where createConnection() is invoked. SomeDatabase.java line
25 in the stack trace corresponds to the line above where I indicated the
NPE was thrown.
java.lang.NullPointerException
at
org.eclipse.datatools.connectivity.internal.ConnectionProfil e.createConnection(ConnectionProfile.java:355)
at prophettest.SomeDatabase.connect(SomeDatabase.java:25)
at prophettest.ConnectionTest.test(ConnectionTest.java:71)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce ssorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.junit.internal.runners.TestMethodRunner.executeMethodBod y(TestMethodRunner.java:99)
at
org.junit.internal.runners.TestMethodRunner.runUnprotected(T estMethodRunner.java:81)
at
org.junit.internal.runners.BeforeAndAfterRunner.runProtected (BeforeAndAfterRunner.java:34)
at
org.junit.internal.runners.TestMethodRunner.runMethod(TestMe thodRunner.java:75)
at
org.junit.internal.runners.TestMethodRunner.run(TestMethodRu nner.java:45)
at
org.junit.internal.runners.TestClassMethodsRunner.invokeTest Method(TestClassMethodsRunner.java:66)
at
org.junit.internal.runners.TestClassMethodsRunner.run(TestCl assMethodsRunner.java:35)
at
org.junit.internal.runners.TestClassRunner$1.runUnprotected( TestClassRunner.java:42)
at
org.junit.internal.runners.BeforeAndAfterRunner.runProtected (BeforeAndAfterRunner.java:34)
at org.junit.internal.runners.TestClassRunner.run(TestClassRunn er.java:52)
at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.r un(JUnit4TestReference.java:45)
at
org.eclipse.jdt.internal.junit.runner.TestExecution.run(Test Execution.java:38)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTe sts(RemoteTestRunner.java:460)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTe sts(RemoteTestRunner.java:673)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(R emoteTestRunner.java:386)
at
org.eclipse.pde.internal.junit.runtime.RemotePluginTestRunne r.main(RemotePluginTestRunner.java:62)
at
org.eclipse.pde.internal.junit.runtime.UITestApplication$1.r un(UITestApplication.java:114)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:3 5)
at
org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchr onizer.java:133)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.jav a:3800)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java :3425)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.jav a:2382)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2346)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:21 98)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493)
at
org.eclipse.core.databinding.observable.Realm.runWithDefault (Realm.java:288)
at
org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:488)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
at com.tasc.swb.internal.application.SWBApplication.start(Unkno wn Source)
at
org.eclipse.pde.internal.junit.runtime.UITestApplication.sta rt(UITestApplication.java:46)
at
org.eclipse.equinox.internal.app.EclipseAppHandle.run(Eclips eAppHandle.java:193)
at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:110)
at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:79)
at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:382)
at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce ssorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java: 549)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
at org.eclipse.equinox.launcher.Main.main(Main.java:1212)
|
|
|
Powered by
FUDForum. Page generated in 0.05593 seconds