|Re: [stp-dev] Project Facets (was IRC log 24may06)|
Hi Rob, sybase.com wrote:
The facet framework is a "functionality life cycle management" framework. It provides extension points that you can use to define and encapsulate the logic required to add, upgrade or remove specific functionality to/from projects. On a UI level, the framework integrates with the Project Properties UI dialog - a faceted project adds a panel that allows the user to add /remove facets - and faceted projects usually include the facet selection pages in their New Project wizard. (Try creating a WTP Dynamic Web Project and you'll see them). Under the covers, the facet framework is oblivious to what the facet implementations are doing when told to install,update or remove themselves. That functionality can do anything, include add natures, modify classpaths, generate template resources, switch perspectives. Ultimately, in your case, you would want the facet install ation implementation to set up the project so that artifacts like assemblies, modules or subsystems can easily be packaged and deployed. (You'd probably have one facet type for each of the above deployables.)Given that the assembly, module or subsystem, represents the deployable unit, wouldn't it make more sense to have facets applied to the assembly as opposed to the project itself?
The "Feature vs Nature" section of the original "Features Framework Specification" (http://www.eclipse.org/webtools/development/proposals/Features%20Framework%20Specification.htm) might clear this up. (Note: Facets were originally referred to as 'features' but they change the name to avoid confusion with platform 'features') The WTP Project Facets(http://www.eclipse.org/webtools/development/proposals/WtpProjectFacets.html) doc also contains some more relevant info.With respect to capabilities, I was specifically talking about the creation of certain resource types, e.g. BPEL, BPMN, POJO, JEE. As far as I am aware, it is not possible to prevent the user from creating these in a project. For example, I can create Java files in a simple project type. Also, it would be nice if somebody could post some detailed information regarding project facets. From the research I've done I could not determine the advantage of using them versus plain old project natures.
Philip Dodds (mentioned by Oisin on IRC) has an excellent walk through of what it took to extend WTP to support JBI - see http://goopen.org/confluence/display/SM/Extending+Eclipse+WTP+to+support+JBI
Hope this helps, John.
Back to the top