It looks like you can change this method to not call super and instead create 
your own JDBC2Info dictionary.

at com.webobjects.jdbcadaptor.ImpalaPlugIn.jdbcInfo(ImpalaPlugIn.java:131)

Chuck


On 2013-12-06 8:03 PM, "Gintautas Sulskus" wrote:

Can you please show us the full stack trace?  You will probably need to write a 
custom JDBCPlugin.  If your needs are basic it is not hard.

 Well, when I choose "Reverse Engineer" in WOLips, select table and click OK I 
get exception below. Bear in mind that "ImpalaPlugIn" is my JDBC plugin that 
simply loads standard HiveJDBCDriver. Currently it does not have any other 
functionality.

java.lang.RuntimeException: Failed to reverse engineer.
at 
org.objectstyle.wolips.eomodeler.core.sql.EOFSQLReverseEngineerFactory$ReflectionSQLReverseEngineer.reverseEngineerWithTableNamesIntoModel(EOFSQLReverseEngineerFactory.java:55)
at 
org.objectstyle.wolips.eomodeler.actions.ReverseEngineerAction.run(ReverseEngineerAction.java:97)
at org.eclipse.ui.internal.PluginAction.runWithEvent(PluginAction.java:251)
at 
org.eclipse.ui.internal.WWinPluginAction.runWithEvent(WWinPluginAction.java:229)
at 
org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584)
at 
org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501)
at 
org.eclipse.jface.action.ActionContributionItem$6.handleEvent(ActionContributionItem.java:452)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4128)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1457)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1480)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1465)
at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1270)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3974)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3613)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2701)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2665)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2499)
at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:679)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:668)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at 
org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:123)
at 
org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
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(EclipseStarter.java:344)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at 
org.objectstyle.wolips.eomodeler.core.sql.EOFSQLReverseEngineerFactory$ReflectionSQLReverseEngineer.reverseEngineerWithTableNamesIntoModel(EOFSQLReverseEngineerFactory.java:53)
... 34 more
Caused by: Method not supportedat 
org.apache.hive.jdbc.HiveDatabaseMetaData.supportsANSI92FullSQL(HiveDatabaseMetaData.java:805)
at com.webobjects.jdbcadaptor.JDBCContext._fetchJDBCInfo(JDBCContext.java:612)
at com.webobjects.jdbcadaptor.JDBCPlugIn.jdbcInfo(JDBCPlugIn.java:1046)
at com.webobjects.jdbcadaptor.ImpalaPlugIn.jdbcInfo(ImpalaPlugIn.java:131)
at com.webobjects.jdbcadaptor.JDBCAdaptor.typeInfo(JDBCAdaptor.java:246)
at 
com.webobjects.jdbcadaptor.JDBCAdaptor.isValidQualifierType(JDBCAdaptor.java:606)
at 
com.webobjects.jdbcadaptor.JDBCChannel.describeModelWithTableNames(JDBCChannel.java:1078)
at 
org.objectstyle.wolips.eomodeler.core.sql.EOFSQLReverseEngineer53.reverseEngineerWithTableNamesIntoModel(EOFSQLReverseEngineer53.java:66)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at 
org.objectstyle.wolips.eomodeler.core.sql.EOFSQLReverseEngineerFactory$ReflectionSQLReverseEngineer.reverseEngineerWithTableNamesIntoModel(EOFSQLReverseEngineerFactory.java:53)
at 
org.objectstyle.wolips.eomodeler.actions.ReverseEngineerAction.run(ReverseEngineerAction.java:97)
at org.eclipse.ui.internal.PluginAction.runWithEvent(PluginAction.java:251)
at 
org.eclipse.ui.internal.WWinPluginAction.runWithEvent(WWinPluginAction.java:229)
at 
org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584)
at 
org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501)
at 
org.eclipse.jface.action.ActionContributionItem$6.handleEvent(ActionContributionItem.java:452)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4128)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1457)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1480)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1465)
at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1270)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3974)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3613)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2701)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2665)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2499)
at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:679)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:668)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at 
org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:123)
at 
org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
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(EclipseStarter.java:344)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
at org.eclipse.equinox.launcher.Main.run(Main.java:1410)


at com.webobjects.jdbcadaptor.JDBCContext._fetchJDBCInfo(JDBCContext.java:718)
at com.webobjects.jdbcadaptor.JDBCPlugIn.jdbcInfo(JDBCPlugIn.java:1046)
at com.webobjects.jdbcadaptor.ImpalaPlugIn.jdbcInfo(ImpalaPlugIn.java:131)
at com.webobjects.jdbcadaptor.JDBCAdaptor.typeInfo(JDBCAdaptor.java:246)
at 
com.webobjects.jdbcadaptor.JDBCAdaptor.isValidQualifierType(JDBCAdaptor.java:606)
at 
com.webobjects.jdbcadaptor.JDBCChannel.describeModelWithTableNames(JDBCChannel.java:1078)
at 
org.objectstyle.wolips.eomodeler.core.sql.EOFSQLReverseEngineer53.reverseEngineerWithTableNamesIntoModel(EOFSQLReverseEngineer53.java:66)
... 39 more



On Tue, Dec 3, 2013 at 4:39 AM, Chuck Hill 
<[email protected]<mailto:[email protected]>> wrote:
Hi Gintas,


On 2013-12-02 6:51 PM, "Gintautas Sulskus" wrote:

Thanks :)

By the way, we are thinking to use REST to communicate with HBase via Thrift.

The natural way was to use WOLips, create entities and set adaptor to rest.
Is this the best tutorial available?
http://wiki.wocommunity.org/display/WEB/Your+First+Rest+Project#YourFirstRestProject-CreatingRESTcontrollersandroutes

Basically I have hit the wall like this guy: 
http://lists.apple.com/archives/webobjects-dev/2013/Mar/msg00303.html
No template. Indigo + WOLips 3.7. Any clues? I'm using 3.7 latest release 
update site.

Sorry, I have no idea.  Someone will have to look at the WOLips code to see why 
this is not working on Windows.  Maybe a bad path assumption somewhere.


In the meantime, as alternative for the above, I have done some experiments 
with WebObjects + EOModel + Impala/Entity JDBC drivers.
EOModel CAN query Impala/Hive for a list of tables. However, there is no 
reverse engineering support so I have created an entity manually that maps to 
the table on Hive. However, whenever I try to fetch all records from that 
entity it gives me an exception:
Method not supported at 
org.apache.hive.jdbc.HiveDatabaseMetaData.supportsANSI92FullSQL(HiveDatabaseMetaData.java:805)

Well, that's true and correct. However, I will need only the most basic subset 
from ANSI92 that is supported by Impala. Is there any way to overcome this 
check?
Will I have to extend these classes?

Can you please show us the full stack trace?  You will probably need to write a 
custom JDBCPlugin.  If your needs are basic it is not hard.


Chuck




On Mon, Nov 25, 2013 at 7:10 PM, Chuck Hill 
<[email protected]<mailto:[email protected]>> wrote:
Hi,

On 2013-11-25 3:38 AM, "Gintautas Sulskus" wrote:

Thank you for a very quick response.

Each model is specific to one database, you will need to have two models.   You 
can have as many models as you want in a project.  You can create a model group 
in Eclipse to hold both models so that you can make relationships between them.

Can I use relationship to make "virtual" joins, that do not exist in the 
database? E.g. I would like to express table_1 and table_2 as a virtual_table_3 
that exists only in EOModel. Then I would like to query and perform dml 
operations on that virtual table.

No, you can't do that.  They get fetched as disjoint Java objects.


Or should I express only the relationships that are present in the database?

Yes.  I will also note that this is not a commonly used feature of EOF, so you 
may run into bugs.


Chuck


ERRest.  There are multiple presentations in the WOCommunity.

Found it! Thanks a lot :)

Cheers,
Gintas


On Mon, Nov 25, 2013 at 5:39 AM, Chuck Hill 
<[email protected]<mailto:[email protected]>> wrote:

On 2013-11-24 7:40 PM, "Gintautas Sulskus" wrote:

Hello,

Just wanted to double check: I am trying to create an EOModel (in WOLips) that 
would use two entities from different databases. Is it possible to achieve 
this? I assume the answer is NO.

Each model is specific to one database, you will need to have two models.   You 
can have as many models as you want in a project.  You can create a model group 
in Eclipse to hold both models so that you can make relationships between them.

Chuck



Also, I was looking for any information on REST adaptor and could not find 
anything. Do you have any references to this?

Much appreciated!

Best Regards,
Gintautas



--
Best Regards,
Gintautas Sulskus



--
Best Regards,
Gintautas Sulskus



--
Best Regards,
Gintautas Sulskus
 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to