[ANN] NexusPEEDY, a Nexus flavor using Vaadin UI

Hi there,

as you (may) know,
Sonatype Nexus
is an OSS Maven Repository Manager.

As the Proximity developer (that later became Nexus) and lead of Nexus project, I got fed up with Nexus “dull” UI (using ExtJS). So, I felt it was time to play with it, and I came across Vaadin. It is a_w_e_s_o_m_e!

And, here is it, very baby:


To avoid the “build hell” (you need modded
too for this, but almost all my patches are already applied to Enunciate trunk), here is a WAR:


URLs of interests (if WAR context path is /nexus):

The only (this is a baby, remember?) implemented REST Service using Jersey

Enunciate generated doco and ruby, ObjC and other clients:

The Vaadin UI:

And the “old” REST API is there too:

The “root” will give you broken “old” ExtJS UI, but will not work since ExtJS JS code is removed.

It is SVN Trunk mirrored in Git, and “afloated” some new patches. Also, new modules are added like the Vaadin UI (nexus-vaadin-ui module).

I have to emphasize, that this is just a “technology showcase”, so I blatantly reused the Sample UI (reworked it a bit, and integrated with Plexus IoC container, that is soon gonna be transferred to Guice+Peaberry).

So, hello Vaadin + OSGi!

Looking at Nexus with “sampler-like” UI is such a refreshment, it is simply unbelievable to me!

Is there any concern about Sample codebase? As far as I understand, it is ASL2.0, just like Vaadin UI. Naturally, I would like to modify it, but the initial functional design of Sampler app is just great!

Any interested parties in participating in Vaadinizing Nexus?

Have fun!


I wanted to try out the app. I just threw it into a clean tomcat’s webapp directory and tomcat gave me a stack trace with the issue:

SEVERE: Error deploying web application archive nexus.war
java.lang.UnsupportedClassVersionError: Bad version number in .class file (unable to load class org.sonatype.nexus.web.Slf4jBooterListener)

A screenshot would be great.

Sampler is fully under Apache license, so feel free to use it.

You might want to modify the theme somehow to build unique “personality” for your application. In order to do that, it might be a good idea to extend the existing theme - this way you could adopt new features more easily from upcoming sampler versions.

Also - be sure to use the sampler from upcoming 6.2 release (today 6.2.0.pre1). This has quite a lot nicer main screen layout than the one in 6.1.

Did you read the README.md? :wink: It needs Java6…

Okay, here are some shots of UI parts that I implemented to impress my colleagues :slight_smile: So, it is totally completely Sampler (I used the 6.2 from SVN as start from here http://dev.vaadin.com/svn/versions/6.2/demo/src/), simply the SamplerApplication and it’s surroundings are changed to support IoC instead of static stuff and manual instantiation of examples.

As you see, it is completely “Sampler UI” and it’s skin. But I re-factored the application it a lot, removed those “ugly” static methods, and integrated with Plexus, so the Feature (1:1 what Feature was in Sampler), FeatureSet (1:1 what FeatureSet was in Sampler), and the UI (what *Example was in Sampler) are now Plexus components, hence IoC manages them and hands over to application for doing presentation.

The tree on the left is actually built by simply doing lookup() in IoC container for the root component (that is hidden, just like it is in Sampler), and the IoC container simply “pulls” the whole graph :wink:

And you have all the injections happening, so reaching Nexus component is just adding @Requirement to the member.

Have fun!

Looks good. I hope this will evolve from a tech demo to the next version of the product.