You can find the full source code for this website in the Seam package in the directory /examples/wiki. It is licensed under the LGPL.
Here are a few ideas we have for self-contained, greenfield development within Seam. These projects are ideal for students looking for a dissertation/thesis topic, or for interns. If you interested in a project, please get in contact with Shane Bryzak or Dan Allen
Spring is a popular bean container and dependency injection framework. Developers interested in adopting CDI, the standard dependency injection facility in Java EE 6, may need to integrate with existing business logic contained within Spring beans. Fortunately, CDI supports alternative bean metadata sources, one of which can be the Spring container. This project would leverage the CDI extension SPI to register Spring beans as CDI beans so that they can be injected directly into other CDI beans. It could build on the work done in Seam Solder and Seam Config.
One of the compelling features of Guice, another dependency injection framework for Java, is its Java-based bean configuration and wiring. Seam Config currently provides the option to configure beans using XML as an alternative, or supplement, to annotation-based configuration. This student project would introduce an additional configuration provider to the Seam Config module that would allow beans to be wired using a Java-based API.
Weld extends CDI outside of Java EE 6 to Servlet and Java SE environments. One place it hasn't ventured yet is Android. Android developers have to instantiate services the old-fashioned way, using the new operator. This student project would focus on getting Weld to run inside of Android/Dalvik as a way to bring CDI to Android. Once Weld is running, the next step is to research building custom scopes for a single activity, nested activities (conversation) and for sessions that span multiple passivations of an application. Not only will developers benefit from having dependency injection, but also simplified state management.
CDI provides a conversation scope, but it's much more simplistic than what Seam 2 offers. In particular, there is no facility for switching between parallel conversations, a feature labeled workspace management. This student project would introduce a custom conversation scope that would allow conversations to be switched. This includes having both a Java API and UI controls. Conversations should also support a name and a description. The project can also research natural conversations--conversations that are identified by a business key--so that conversations can be switched implicitly by navigating to a previously visited resource.
Social networking is exploding and there is an ever increasing demand for applications to participate in those networks. A recent addition to the Seam family of modules, Seam Social provides integration with several well-known social networks (Twitter, LinkedIn, etc). However, there is still much work to be done. This student project would introduce additional adapters and perhaps explore different ways for an application to interact with social networks. One area to focus on is security integration. The goal is to make it as simple as possible for an application developer to post and read information via a social network.
JBoss ESB is used as part of the JBoss SOA offering as the core infrastructure logic provider via processes orchestration, protocol translation, change management, quality of service and service management. However you still need to write your services, and the business logic they encapsulate. CDI's services (and the integrations it offers with Java EE technologies as well as it's extension ecosystem) should be available for use here.
(Errai (GWT) integration with CDI
is a prerequiste for this project). Seam security offers a rich, extensible model for providing authentication, authorization and identity management for your project in a declarative, type safe fashion. It has strong integration with JBoss AS, reusing many of the services JBoss AS has to offer.
GWT applications also need security, and providing an elegant mapping between the two will produce a compelling story.
Support for image storage and caching, basic image manipulation such as resize, crop, rotate, brightness and contrast, etc.
Investigate how the conversation scope works with remote EJBs.
Take the JMX annotations from Infinispan or CDI JMX support written by German Escobar and create a shared project with annotations and base classes to implement. Add the ability to expose CDI beans as MBeans via a CDI extension. Additionally add in docs and examples using the RHQ Annotations for plugin generation and the tool for creating plugins.
Add some common interceptors and statistics MBeans to the extension, that support operations such as:
Write some MBeans that expose monitoring and management for the Weld core, as well as an RHQ plugin to produce a nice GUI. For example
Conversation management -- statsIf you are proposing a project, please remember that the project needs to have some element of research (into a previously unexplored area) - this can be looking at how two projects can work together, or looking at a new feature.