[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[equinox-dev] Initial transforms commit into the incubator
|
I've checked in some initial work on transformations into the equinox
incubator. Instead of providing a transformation service (and re-
implementing the bundle wrapper framework on top of itself
essentially) I've instead created some abstract base classes that
make implementing your own transforming bundle wrapper easier.
Included are five new projects.
The main addition is org.eclipse.equinox.transforms. In here you'll
find abstract base classes for transforming bundle factory hook as
well as transforming bundle file wrappers. Writing transformers
using these classes is as simple as writing a method that wraps an
input stream with a new input stream. Included are some utility
classes for wrapping system processes as transformers as well as
pipes that make translating output streams to input streams easier.
These are rather sloppily implemented at the moment (Threads out the
Wazzoo) but should get better over the next few days). In addition
to the bare bones baseclass there is also a baseclass that is able to
read CSV files in the form:
bundle regex pattern, path regex pattern, transformation resource
Using this baseclass you are able to create transformers that are
extensible via CSV content located in any extension bundle.
On top of this base implementation I've provided two transformer
implementations: XSLT and SED. The code that handles these
transformations is in org.eclipse.equinox.transforms.xslt and
org.eclipse.equinox.transforms.sed respectively and data to drive
them is in org.eclipse.equinox.transforms.xslt.plugin and
org.eclipse.equinox.transforms.sed.manifest. The XSLT example will
make the UI Working Sets action set invisible by default whereas the
SED example changes the name of the Package Explorer to Java Package
Explorer and updates the MANIFEST.MF with a custom version string.
You can see these examples by checking out all 5 above mentioned
projects as well as the org.eclipse.osgi project (I've tested against
3.2 but it should work fine against 3.3) and launching the Transform
Launch.launch config found in org.eclipse.equinox.transforms.
Things I plan on doing in the next few days:
look into caching the result of the transformations between sessions
removing the dependency on non-exported hook API
remove Thread spawning in the pipe/wrapper classes
clean up synchronization
add code to profile transformation times
If anyone has time to look at what's in there I'd appreciate any input.