Well, it's the second impression really... The first was a homepage containing cryptic release notes and nothing resembling a mission statement or a Getting Started guide.

In a discussion on the Wicket users list about a different approach I'd started a while ago, Andreas provided links to some introductory notes he'd just created, so I thought I'd just give it a try.

- Cloned the git repo, ran mvn install. Compiler error. (due to a bug in JDK 1.6.0_24, but this is latest official one on Ubuntu :-(

- I used Eclipse to compile the project and then ran mvn pax:provision.

- The sample started with a bunch of DEBUG messages and finally presented a Gogo shell prompt. Now Gogo is just about the ugliest thing I've seen ever since vi. No help and absolutely no usable documentation on its official homepage. I tried "help", "exit", "close", "stop", "^D", no success. With ^C, I got back to my bash, but then I could restart the sample, apparent due to a socket timeout or a background process still running...

- After some trial and error and some dim remembrance of Pax Runner, O found out that "stop 0" would let me terminate Gogo cleanly, and even better, pax:provision -Dframework=equinox would run the whole thing in Equinox. Much better!

- Why does it take what felt like half a minute for the framework to shut down?

- I opened the samples in my browser, and they all looked ok, but I was really more interested in the inner workings, so I took a look at the source code:

- Little or no Javadoc in internal packages, somewhat more but not enough in the API package.

- Separation of concerns is one of the OSGi mantras, but here we have a mixture of unrelated things in one project. Supporting both Spring DM and Aries Blueprint for dependency injection within the same bundle is not my idea of modular design. Spring DM is obsolete and has been superseded by Eclipse Gemini. Is there a hard dependency on Aries Blueprint or can you work with other compliant Blueprint implementations?

- As a consequence, there are lots of optional package imports in the manifest, which is usually a symptom of a lack of modularity, and also dangerous, because an OSGi framework is free not to wire an optional import, even when a matching package is available.

- I think both Spring support and Blueprint support should be refactored into separate bundles.

- Oh no, @PaxWicketBean - yet another injection annotation...
Why not simply use JSR-330 @Inject plus optional @Qualifiers? This would give users the freedom to reuse their page or componenent bundles in plain old WARs with CDI or Spring injection.

- Does Pax Wicket let you inject plain old services at all? Without Spring DM, Blueprint or any other extension of OSGi core?

- At first, I didn't realize that Pax Wicket wraps all of Wicket in its own bundle - I was fooled by the fact that vanilla Wicket is also provisioned to the sample runtime. So the good news is that you don't depend on the broken manifest of the official artifact, but in general I don't think it's a good idea to wrap your dependencies instead of importing them.

- From the intro:
"Develop the easiest possible solution to integrate wicket with OSGi"

Well, I challenge you on that: wicket-osgi has 5 or 6 tiny classes which are sufficient to support WABs with Wicket and OSGi service injection via @Inject. Sure, Pax Wicket can do a lot more - but I was just looking for a meal, and I didn't want to buy the restaurant...

- I'm not sure, but it seems Pax Wicket lets you install pages and components as separate bundles and mount them into the web context of your running application - if this is true, then I think that's really the biggest value in this project and it would be nice to have a Wiki page explaining the mechanics and giving some pointers into the sample code.

Best regards,
Harald






_______________________________________________
general mailing list
general@lists.ops4j.org
http://lists.ops4j.org/mailman/listinfo/general

Reply via email to