WTP 1.0 Project Facets

Ted Bashor (tbashor@bea.com) and Konstantin Komissarchik (kosta@bea.com)

Reference

 

Facet

Version

Groups

Constraint expression

Runtime Components

Presets

jst.java

 

1.3

 

 

 

 

1.4

 

 

standard.jre 1.4

 

5.0

 

 

standard.jre 5.0

 

jst.ear

1.2

modules

Conflict-Group “modules”

org.eclipse.jst.server.generic.runtime.weblogic 8.1 or newer

org.eclipse.jst.server.generic.runtime.websphere 6.0

 

1.3

modules

Conflict-Group “modules”

org.eclipse.jst.server.generic.runtime.weblogic 8.1 or newer

org.eclipse.jst.server.generic.runtime.websphere 6.0

 

1.4

modules

Conflict-Group “modules”

org.eclipse.jst.server.generic.runtime.weblogic 9.0 or newer

org.eclipse.jst.server.generic.runtime.websphere 6.0

 

jst.utility

1.0

modules

(Required-Facet “jst.java 1.3 or newer”) & (Conflict-Group “modules”)

org.eclipse.jst.server.tomcat 3.2 or newer

org.eclipse.jst.server.generic.runtime.weblogic 8.1 or newer

org.eclipse.jst.server.generic.runtime.websphere 6.0

 

jst.web

2.2

modules

(Required-Facet “jst.java 1.3 or newer”) & (Conflict-Group “modules”)

org.eclipse.jst.server.tomcat 3.2 or newer

org.eclipse.jst.server.generic.runtime.weblogic 8.1 or newer

org.eclipse.jst.server.generic.runtime.websphere 6.0

 

2.3

modules

(Required-Facet “jst.java 1.3 or newer”) & (Conflict-Group “modules”)

org.eclipse.jst.server.tomcat 4.0 or newer

org.eclipse.jst.server.generic.runtime.weblogic 8.1 or newer

org.eclipse.jst.server.generic.runtime.websphere 6.0

 

2.4

modules

(Required-Facet “jst.java 1.3 or newer”) & (Conflict-Group “modules”)

org.eclipse.jst.server.tomcat 4.1 or newer

org.eclipse.jst.server.generic.runtime.weblogic 8.1 or newer

org.eclipse.jst.server.generic.runtime.websphere 6.0

 

jst.appclient

1.2

modules

(Required-Facet “jst.java 1.3 or newer”) & (Conflict-Group “modules”)

org.eclipse.jst.server.generic.runtime.weblogic 8.1 or newer

org.eclipse.jst.server.generic.runtime.websphere 6.0

 

1.3

modules

(Required-Facet “jst.java 1.3 or newer”) & (Conflict-Group “modules”)

org.eclipse.jst.server.generic.runtime.weblogic 8.1 or newer

org.eclipse.jst.server.generic.runtime.websphere 6.0

 

1.4

modules

(Required-Facet “jst.java 1.3 or newer”) & (Conflict-Group “modules”)

org.eclipse.jst.server.generic.runtime.weblogic 9.0 or newer

org.eclipse.jst.server.generic.runtime.websphere 6.0

 

jst.connector

1.0

modules

(Required-Facet “jst.java 1.3 or newer”) & (Conflict-Group “modules”)

org.eclipse.jst.server.generic.runtime.weblogic 8.1 or newer

org.eclipse.jst.server.generic.runtime.websphere 6.0

 

1.5

modules

(Required-Facet “jst.java 1.3 or newer”) & (Conflict-Group “modules”)

org.eclipse.jst.server.generic.runtime.weblogic 9.0 or newer

org.eclipse.jst.server.generic.runtime.websphere 6.0

 

jst.ejb

1.1

modules

(Required-Facet “jst.java 1.3 or newer”) & (Conflict-Group “modules”)

org.eclipse.jst.server.generic.runtime.weblogic 8.1 or newer

org.eclipse.jst.server.generic.runtime.websphere 6.0

 

2.0

modules

(Required-Facet “jst.java 1.3 or newer”) & (Conflict-Group “modules”)

org.eclipse.jst.server.generic.runtime.weblogic 8.1 or newer

org.eclipse.jst.server.generic.runtime.websphere 6.0

 

2.1

modules

(Required-Facet “jst.java 1.3 or newer”) & (Conflict-Group “modules”)

org.eclipse.jst.server.generic.runtime.weblogic 9.0 or newer

org.eclipse.jst.server.generic.runtime.websphere 6.0

 

jst.ejb.default

1.0

ejb.dev.mode

(Required-Facet “jst.ejb 2.0 or newer”) & (Conflict-Group “ejb.dev.mode”)

 

 

jst.ejb.xdoclet

1.2.1

ejb.dev.mode

(Required-Facet “jst.ejb 2.0 or newer”) & (Conflict-Group “ejb.dev.mode”)

 

 

1.2.2

ejb.dev.mode

(Required-Facet “jst.ejb 2.0 or newer”) & (Conflict-Group “ejb.dev.mode”)

 

 

1.2.3

ejb.dev.mode

(Required-Facet “jst.ejb 2.0 or newer”) & (Conflict-Group “ejb.dev.mode”)

 

 

 

Facets

A facet represents a unit of functionality in a WTP project.  An install delegate is invoked when a facet is added to a project.  Activities performed on facet installation might include adding project natures, adding project resources, and configuring classpath or other project properties.  Some facets may simply act as markers used to enable UI or processing of the project such as j2ee module assembly.

 

Facets may be removed from a project if they implement an uninstall delegate.  The facet framework api supports designating some project facets as non-removable.  However, these “fixed” project facets can have their version numbers changed.

 

All project facets must include a version number.  The facet framework’s default version comparator can be overridden by facet authors.  Version support allows other facets as well as plugin code to take dependencies on specific versions of a facet, and react to version change events.

 

jst.java

Java compilation will be enabled on the project

jst.java 1.3 

Project will have org.eclipse.jdt.core.javanature with a compiler level set to 1.3

jst.java 1.4 

Project will have org.eclipse.jdt.core.javanature with a compiler level set 1.4

jst.java 5.0

Project will have org.eclipse.jdt.core.javanature with a compiler level set to 5.0

jst.ear

Project output is deployable as a ear module

jst.ear 1.2

Project output is deployable as an ear 1.2 j2ee module.  Installer supports a configurable ear content directory.

jst.ear 1.3

Project output is deployable as an ear 1.3 j2ee module.  Installer supports a configurable ear content directory.

jst.ear 1.4

Project output is deployable as an ear 1.4 j2ee module.  Installer supports a configurable ear content directory.

jst.appclient

Project output is deployable as an application client module

jst.appclient 1.2

Project output is deployable as an application client 1.2 j2ee module.  Installer adds an app client 1.2 deployment descriptor file to the project.  Optionally adds the project to a 1.2 ear project.

jst.appclient 1.3

Project output is deployable as an application client 1.3 j2ee module.  Installer adds an app client 1.3 deployment descriptor file to the project.  Optionally adds the project to a 1.3 ear project.

jst.appclient 1.4

Project output is deployable as an application client 1.4 j2ee module.  Installer adds an app client 1.4 deployment descriptor file to the project.  Optionally adds the project to a 1.4 ear project.

jst.connector

Project output is deployable as a connector module

jst.connector 1.0

Project output is deployable as a connector1.0 j2ee module.  Installer adds a connector 1.0 deployment descriptor file to the project.  Optionally adds the project to a 1.3 ear project. 

jst.connector 1.5

Project output is deployable as a connector 1.5 j2ee module.  Installer adds a connector 1.5 deployment descriptor file to the project.  Optionally adds the project to a 1.4 ear project.

jst.utility

Java project that can be referenced by a j2ee module project

jst.utility 1.0

Project output is a jar that can be included in an ear and referenced by j2ee module project.  Installer optionally adds project to 1.2 or newer ear project.

jst.web

Project output is deployable as a web module

jst.web 2.2

Project output is deployable as a web 2.2 module.  Installer configures classpath to include servlet api jars.  Sets a configurable web content root directory and adds a 2.2 web deployment descriptor.  Optionally adds the project to a 1.2 ear project.

jst.web 2.3

Project output is deployable as a web 2.3 module.  Installer configures classpath to include servlet api jars.  Sets a configurable web content root directory and adds a 2.3 web deployment descriptor.  Optionally adds the project to a 1.3 ear project.

jst.web 2.4

Project output is deployable as a web 2.4 module.  Installer configures classpath to include servlet api jars.  Sets a configurable web content root directory and adds a 2.4 web deployment descriptor.  Optionally adds the project to a 1.4 ear project.

jst.ejb

Project output is deployable as an ejb module.

jst.ejb 1.1

Project output is deployable as an ejb 1.1 module.  Installer configures classpath to include ejb api jars.  Sets a configurable ejb content root directory.  Optionally adds the project to a 1.2 ear project.  Optionally creates an ejb client jar project.

jst.ejb 2.0

Project output is deployable as an ejb 2.2 module.  Installer configures classpath to include ejb api jars.  Sets a configurable ejb content root directory.  Optionally adds the project to a 1.3 ear project.  Optionally creates an ejb client jar project.

jst.ejb 2.1

Project output is deployable as an ejb 2.3 module.  Installer configures classpath to include ejb api jars.  Sets a configurable ejb content root directory.  Optionally adds the project to a 1.4 ear project.  Optionally creates an ejb client jar project.

jst.ejb.default

A default ejb development mode.

jst.ejb.default 1.0

Adds an ejb deployment descriptor corresponding to the jst.ejb facet version to the ejb content directory.

jst.ejb.xdoclet

An xdoclet-based ejb development mode.

jst.ejb.xdoclet 1.2.1

Installs a builder which uses XDoclet 1.2.1 to generate ejb interfaces and deployment descriptors from javadoc annotations.

jst.ejb.xdoclet 1.2.2

Installs a builder which uses XDoclet 1.2.2 to generate ejb interfaces and deployment descriptors from javadoc annotations.

jst.ejb.xdoclet 1.2.3

Installs a builder which uses XDoclet 1.2.3 to generate ejb interfaces and deployment descriptors from javadoc annotations.

 

Groups

A facet group defines a set of facet versions.  Groups are primarily used in constraint expressions to specify that a facet may not be installed in a project with any other members of the group.

modules

This group includes facets representing j2ee modules.  It is primarily used to express a exclusive relationship among “types” of j2ee-related projects and therefore may include non-module facets that should not be combined with j2ee module facets.

ejb.dev.mode

This group includes facets representing alternate modes of ejb development.

 

Constraint Expression

A facet version may have a constraint expression describing its relationship to other facets.  Required facets are guaranteed to be installed before the facet is installed.  A facet implementing an update delegate will receive notification if a required facet’s version changes.  Conflicting facets are guaranteed not to be installed in the same project.  A “soft” requirement on a facet may be specified.  A soft requirement indicates that the referenced facet is not required for installation of this facet, however, if the referenced facet is installed, it must be installed before this facet, and if it is removed or its version changes, this facet should be notified.

 

Runtime Components

Runtime component identifiers are used to specify mappings between project facet versions and runtime environments.  For example, the “standard.jre 1.4” runtime component represents a runtime that will execute java source built from a project with the “jst.java 1.4” facet.  The mapping of “jst.web 2.4” to “apache.tomcat 5.5” indicates that this version of Tomcat supports j2ee web 2.4 modules.  Runtime components are versioned and facet versions can be mapped to either a specific runtime component version, a specific version or newer, or all versions.

 

A WTP runtime instance includes one or more runtime components.  For example, a Tomcat 5.5 installation configured to run with a 5.0 JRE would be modeled by a runtime instance with both the “standard.jre 5.0” and “apache.tomcat 5.5” runtime component identifiers.

 

Note that it is not necessary to map all facet versions to all runtime component versions they will run on.  If facet X depends on facet Y and facet X will run on all runtimes that Y will run on, it is not necessary to provide mappings for X. In fact, a facet will run on all runtimes unless it is explicitly restricted by runtime mappings or by the facets it depends on.

standard.jre 1.4

Java runtime that will execute classes compiled with the 1.4 java compiler.

standard.jre 5.0

Java runtime that will execute classes compiled with the 5.0 java compiler.

 

Presets

Presets are used to define a default set of facet versions that will configure a project for a particular type of development.  For example a web service preset might include a combination of java, module type, code generation, schema type binding, and WS runtime facet versions.  While a web UI preset might define a compatible set of UI framework facet versions.