3698 LiquiBase EJB Integration Database 45 ESN AB (www.esn.me) 0 8383 marcusn 2012-05-08 1.03

LiquiBase EJB Integration

Compatible with  IntelliJ IDEA
8 383
LiquiBase EJB Integration Plug-in for IntelliJ IDEA. Compares LiquiBase Database ChangeLog with EJB entity model providing inspections and intentions adding to ChangeLog.

Source available at https://github.com/marcusn/LiquibaseEjb

Examples include:
* Add a new entity -> inspection to add liquibase addTable
* Add a new entity field -> inspection to add liquibase addColumn
* Change type of field -> inspection to add liquibase modifyColumn
* Rename field -> dialog to add liquibase renameColumn.

Other features:
* Liquibase EJB facet to configure and create changelog file.
* Context sensentive completion of table and column names within a changelog file.
* Tool window with schema as would be created by liquibase changelog as well as EJB model.

Download plugin

Recent change notes

=== 1.03
* IDEA 11 === 1.02
* IDEA 10 === 1.01
* Fix for IDEA hanging on startup
=== 1.0
* IDEA 8.1 Version
=== 0.100
* [LBEJB-72] - Wrong naming of @ManyToMany columns when they start with entity names
* [LBEJB-73] - TIMESTAMP is used wrongly instead of DATETIME

=== 0.99
New Feature

* [LBEJB-2] - @Inheritance support
* [LBEJB-32] - @PrimaryKeyJoinColumn support
* [LBEJB-34] - @DiscriminatorValue,@DiscriminatorColumn support
* [LBEJB-44] - @MapKey support
=== 0.98
New Feature

* [LBEJB-26] - @AssociationOverride support
* [LBEJB-29] - @IdClass support
* [LBEJB-68] - Entity name support
=== 0.97

* [LBEJB-65] - byte[] suggests null as column type
* [LBEJB-66] - if @Column annotation is used on a field, the plugin recognize it as VARCHAR(255) no matter what other annotations or parameters in @Column says
* [LBEJB-70] - For long Strings CBLOB is used. Should be CLOB.


* [LBEJB-58] - Merge handling of join columns for all relationship attributes

New Feature

* [LBEJB-24] - @JoinColumn support
* [LBEJB-25] - @JoinTable support
* [LBEJB-28] - Multicolumn foreign key support
* [LBEJB-69] - columnDefinition support
=== 0.96

* [LBEJB-18] - Creating table with fields having multiple primary key fields adds one pkconstraint per column
* [LBEJB-45] - Does not recognize column type changes in renameColumn tags in liquibase.xml
* [LBEJB-46] - Stacktrace in checkClass
* [LBEJB-49] - @ManyToOne columns in embedded keys get marked as autoincrement if target fields are
* [LBEJB-50] - AIOOBE when renaming "other side" attribute
* [LBEJB-51] - "Create foreign key" uses invalid column name
* [LBEJB-52] - Foreign key column gets "autoIncrement" attribute set in liquibase.xml
* [LBEJB-53] - *ToOne to fields with id field in superclass does not work
* [LBEJB-57] - Nullpointer in ColumnInspection
* [LBEJB-61] - @Lob gives TEXT type instead of BLOB
* [LBEJB-62] - renameColumn tags are missing columnDataType
* [LBEJB-64] - IndexOutOfBoundsException in AnyToOneModel


* [LBEJB-63] - Use liquibase "generic" data types instead of f.i. TEXT

=== 0.95
* [LBEJB-23] - Refactoring: Extract subclasses of class and member models
* [LBEJB-36] - QuickFix becomes add unique constraint when it should be drop
* [LBEJB-37] - Modify column type does not mention column name
* [LBEJB-38] - renameColumn may cause ArrayIndexOutOfBoundsException
* [LBEJB-39] - Race when applying quickfix, sometimes same fix appears again

* [LBEJB-40] - Use addUniqueConstraint instead of using constraints tag when creating columns

New Feature
* [LBEJB-22] - Class rename listener should use new databasemodel
* [LBEJB-27] - @Table support
* [LBEJB-30] - @SecondaryTable support
* [LBEJB-31] - @Version support
* [LBEJB-33] - @TableGenerator support
* [LBEJB-43] - optional support in @Basic
* [LBEJB-42] - @Basic support

=== 0.94

* [LBEJB-16] - Add index without name causes exception
* [LBEJB-17] - liquibase.xml in output directories are detected as facet
* [LBEJB-19] - Ids generated are sometimes not unique

New Feature

* [LBEJB-3] - Support for @AttributeOverride and @AttributeOverrides
* [LBEJB-4] - @OneToMany without mappedBy
* [LBEJB-5] - @ManyToMany support
* [LBEJB-20] - EJB model view
* [LBEJB-21] - @Column name support

=== 0.93
* Fixed bug with @OneToOne/@OneToMany and mappedBy
=== 0.92
* Null checks

General usage instructions

Works for any module with JPA facet.

To add liquibase support to project: Add Liquibase Facet and click "Create.." in settings to create a new changelog file.

If you have a changelog file in your project, the Liquibase EJB Facet will be autodetected.

Source code is at git://github.com/marcusn/LiquibaseEjb.git

It doesn't work currently because you can't select a ChangeLog descriptor... 12:43:32 PM NoSuchMethodError: com.intellij.openapi.fileChooser.FileChooserFactory.createFileChooser(Lcom/intellij/openapi/fileChooser/FileChooserDescriptor;Lcom/intellij/openapi/project/Project;)Lcom/intellij/openapi/fileChooser/FileChooserDialog;
I use IDEA Maia IU-93.83 and upon startup the LiquiBase plugin causes the IDE to hang, displaying the following error message:

"Fatal error initializing class com.intellij.util.xml.impl.DomApplicationComponent: java.lang.UnsuportedClassVersionError: Bad version number in .class file
Complete error stacktrace was written to idea.log"

Here is the stacktrace:

2010-01-21 21:05:23,901 [ 4722] ERROR - ij.components.ComponentManager - Bad version number in .class file [Plugin: com.esn.idea.liquibaseejb]
com.intellij.diagnostic.PluginException: Bad version number in .class file [Plugin: com.esn.idea.liquibaseejb]
at com.intellij.openapi.components.impl.ComponentManagerImpl$ComponentsRegistry.a(ComponentManagerImpl.java:475)
at com.intellij.openapi.components.impl.ComponentManagerImpl$ComponentsRegistry.a(ComponentManagerImpl.java:441)
at com.intellij.openapi.components.impl.ComponentManagerImpl$ComponentsRegistry.access$100(ComponentManagerImpl.java:427)
at com.intellij.openapi.components.impl.ComponentManagerImpl.a(ComponentManagerImpl.java:117)
at com.intellij.openapi.components.impl.ComponentManagerImpl.initComponents(ComponentManagerImpl.java:372)
at com.intellij.openapi.components.impl.stores.ApplicationStoreImpl.load(ApplicationStoreImpl.java:89)
at com.intellij.openapi.application.impl.ApplicationImpl.load(ApplicationImpl.java:382)
at com.intellij.idea.IdeaApplication.run(IdeaApplication.java:101)
at com.intellij.idea.MainImpl$3.run(MainImpl.java:132)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:461)
at com.intellij.ide.IdeEventQueue.f(IdeEventQueue.java:621)
at com.intellij.ide.IdeEventQueue.b(IdeEventQueue.java:511)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:372)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:176)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
Caused by: java.lang.UnsupportedClassVersionError: Bad version number in .class file
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:675)
at java.lang.ClassLoader.defineClass(ClassLoader.java:520)
at com.intellij.util.lang.UrlClassLoader._defineClass(UrlClassLoader.java:119)
at com.intellij.util.lang.UrlClassLoader.defineClass(UrlClassLoader.java:115)
at com.intellij.util.lang.UrlClassLoader._findClass(UrlClassLoader.java:91)
at com.intellij.ide.plugins.cl.PluginClassLoader.loadClassInsideSelf(PluginClassLoader.java:94)
at com.intellij.ide.plugins.cl.PluginClassLoader.loadClass(PluginClassLoader.java:57)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:374)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:242)
at com.intellij.openapi.components.impl.ComponentManagerImpl$ComponentsRegistry.a(ComponentManagerImpl.java:451)
... 18 more
Startup hang fixed in 1.01
makes my idea 8.0 and 8.1 hang at startup :(
To upgrade from 0.93 and lower, you need to uninstall and install again. This is due to change of id of plugin
Due to change of plugin-id, to upgrade from
Please  sign in  to leave a comment.