metamodel-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Kasper Sørensen <>
Subject Sharing experiences of upgrading to Apache MetaModel
Date Thu, 07 Aug 2014 16:52:07 GMT
Hi all,

Just wanna share some experiences of upgrading the "old"
MetaModel to Apache MetaModel.

Although obviously Human Inference has been contributing quite a lot to
Apache MetaModel, actually it was only recently that we ourselves upgraded
to use this new major version of MetaModel (sorry about that, but we had
too much risk involved and too much other stuff to do, but the good news is
that now we have massive systems running on top of Apache MetaModel). This
week I have been doing the finalization of the migration.

The experience so far is that for 90% of the codebase we can simply just do
a search-replace of "org.eobjects.metamodel" with "org.apache.metamodel".
That's in itself pretty good news.

So what didn't just work?

Well, the recent change of ColumnType to be an interface instead of an enum
meant that a couple of switch-case statements didn't work anymore. That was
a minor thing.

A more intricate change was deserialization. The provided
LegacyObjectInputStream of Apache MetaModel mostly works like a charm. But
it needs to be applied at all kinds of places, and subclassed as well. This
caused us a lot of "funny" issues. Especially in our open source engine
library AnalyzerBeans where we have the class ChangeAwareObjectInputStream
Most of this experience fortunately fed back into the 4.2.0 release of
Apache MetaModel, so if you try the same you should be fine!

The last thing that caused some issues, and are honestly still causing a
few issues, is the schema and table naming of Excel and CSV based
DataContexts. We changed the naming convention (for the better) in Apache
MetaModel, but i a lot of legacy code we refer to the old naming of schemas
and tables. This is something I think we should maybe consider offering a
utility for in Apache MetaModel. Maybe we can offer a few methods to "get
table by legacy name", "get schema by legacy name", "get column by legacy
qualified name" etc.

Over and out from here. Hope these experiences can somehow be beneficial
for others!

- Kasper

  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message