Dave wrote:
We've now got the Roller JPA implementation in the sandbox passing
100% of the JUnit "business" tests and I'm able to run the Roller Web
UI via JPA now.
However, there still couple of issues/problems:
1) Currently, not configured via JNDI datasource but instead by
property file.
I think this is doable. Can you please give some more details on what is
the expectation?
2) Need schema change for weblogcategory table to allow websiteid to
be null
and I'm reluctant to put commit this change into the Roller schema as
websiteid
is required for categories.
There is a circular dependency between WebsiteData and WeblogCategoryData.
This is due to following ManyToOne relationships
Class WebsiteData {
....
@ManyToOne WeblogCategoryData bloggerCategory
@ManyToOne WeblogCategoryData defaultCategory
....
}
Class WeblogCategoryData {
....
@ManyToOne WebsiteData website
....
}
Toplink puts WeblogCategoryData above WebsiteData in commit order hence
a shallow insert (that is website set as null at insert and updated
after insert of corresponding WebsiteData) is performed while inserting
an instance of WeblogCategoryData. This requires to change the table
definition for weblogcategory be changed to have column websiteid as
nullable. I have not yet gone through hibernate code to see how it
handles the situation but I think many other providers also might run
into the same issue as toplink.
3) Separation of Planet code in apps/planet makes running Planet tests
against
the JPA backend difficult so I haven't run the PlanetManagerTest yet.
4) The Roller UI comes up but sanity testing revealed these problems:
- Weblog edit: Missing categories in weblog edit page
- Comment mgmt: Marking comment as spam fails
- Categories: remvoing category throws exception
- Planet config: access config page throws exception
5) There are a number of TODO markers in the implementation that
concern me,
especially the ones that say "TODO: handle offset and length".
This particular comments must be coming from
DatamapperPlanetManagerImpl. As we discussed, we had stopped maintaining
it couple of weeks back. It should be easy to implement the TODOs. There
should be couple of more TODO items in Datamapper*Impl classes. They are
marked as "//TODO: DatamapperPort". Some of them are observations that
I made about improving the code while porting. I needed input from one
of you on whether the optimization makes sense for roller. We will need
to go over them individually.
Regards,
Mitesh
I'll keep testing and debugging items from #4. As I do that I'll add
new tests because those failures almost certainly indicate that we
don't have good enough test coverage.
To address item #3 I'd like to move the JPA/JDO code from the sandbox
and into the apps/planet/src directories.
Allen has two concerns about that move: 1) putting JPA/JDO
implementation under source will require developers to support two
backends and 2) putting JPA/JDO implementation under source implies
that we support JPA/JDO. To address those concerns, I'll change the
build process so that it specifically excludes the JPA/JDO code --
that way, those not interested in JPA/JDO can ignore the code and
since it's not distributed in Roller -- there's no question that we do
not support it.
Anybody have other objections to moving JPA/JDO code out of the sandbox?
Craig and Mitesh: Any comments/suggestions on the other items #1, #2
and #5?
- Dave