Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGianMaria Romanato2016-12-08 13:01:20 -0500
committerGianMaria Romanato2016-12-08 13:01:20 -0500
commitf3d5845ac00b1d556988ea2c7207327480665132 (patch)
treea423554e8d50e4f0ae452e4e937542bcf61530be
parent7371ed7003ece8e8e59215149429f8f4741661f7 (diff)
parentea167101ce7fe14ea48397375679903a83ed0459 (diff)
downloadorg.eclipse.virgo.ide-f3d5845ac00b1d556988ea2c7207327480665132.tar.gz
org.eclipse.virgo.ide-f3d5845ac00b1d556988ea2c7207327480665132.tar.xz
org.eclipse.virgo.ide-f3d5845ac00b1d556988ea2c7207327480665132.zip
Merge branch 'feature/499979'
-rw-r--r--org.eclipse.virgo.ide.doc/tooling/ch02.html3
-rw-r--r--org.eclipse.virgo.ide.doc/tooling/ch05.html4
-rw-r--r--org.eclipse.virgo.ide.doc/tooling/ch05s02.html2
-rw-r--r--org.eclipse.virgo.ide.doc/tooling/ch05s03.html2
-rw-r--r--org.eclipse.virgo.ide.doc/tooling/ch05s04.html2
-rw-r--r--org.eclipse.virgo.ide.doc/tooling/ch05s05.html2
-rw-r--r--org.eclipse.virgo.ide.doc/tooling/ch07s05.html2
-rw-r--r--org.eclipse.virgo.ide.doc/tooling/ch08.html47
-rw-r--r--org.eclipse.virgo.ide.doc/tooling/ch08s02.html21
-rw-r--r--org.eclipse.virgo.ide.doc/tooling/ch09.html50
-rw-r--r--org.eclipse.virgo.ide.doc/tooling/ch10.html17
-rw-r--r--org.eclipse.virgo.ide.doc/tooling/ch11.html1
-rw-r--r--org.eclipse.virgo.ide.doc/tooling/ch11s02.html9
-rw-r--r--org.eclipse.virgo.ide.doc/tooling/ch11s03.html11
-rw-r--r--org.eclipse.virgo.ide.doc/tooling/ch11s04.html81
-rw-r--r--org.eclipse.virgo.ide.doc/tooling/ch11s05.html3
-rw-r--r--org.eclipse.virgo.ide.doc/tooling/ch11s06.html32
-rw-r--r--org.eclipse.virgo.ide.doc/tooling/images/bundle-references.pngbin0 -> 34984 bytes
-rw-r--r--org.eclipse.virgo.ide.doc/tooling/images/create-par-project.pngbin0 -> 43727 bytes
-rw-r--r--org.eclipse.virgo.ide.doc/tooling/images/create-plan-project.pngbin0 -> 41591 bytes
-rw-r--r--org.eclipse.virgo.ide.doc/tooling/images/new-plan-project.pngbin0 -> 39735 bytes
-rw-r--r--org.eclipse.virgo.ide.doc/tooling/images/par-content.pngbin0 -> 48343 bytes
-rw-r--r--org.eclipse.virgo.ide.doc/tooling/index.html392
-rw-r--r--org.eclipse.virgo.ide.doc/tooling/toc.xml2
-rw-r--r--org.eclipse.virgo.ide.doc/wiki/Virgo/Virgo.html8
-rw-r--r--org.eclipse.virgo.ide.doc/wiki/toc.xml18
-rw-r--r--org.eclipse.virgo.ide.facet.core/META-INF/MANIFEST.MF1
-rw-r--r--org.eclipse.virgo.ide.facet.core/src/org/eclipse/virgo/ide/facet/core/AbstractOperation.java57
-rw-r--r--org.eclipse.virgo.ide.facet.core/src/org/eclipse/virgo/ide/facet/core/CreatePlanProjectOperation.java170
-rw-r--r--org.eclipse.virgo.ide.facet.core/src/org/eclipse/virgo/ide/facet/core/FacetUtils.java239
-rw-r--r--org.eclipse.virgo.ide.facet.core/src/org/eclipse/virgo/ide/facet/internal/core/Artifact.java94
-rw-r--r--org.eclipse.virgo.ide.facet.core/src/org/eclipse/virgo/ide/facet/internal/core/BundleReference.java24
-rw-r--r--org.eclipse.virgo.ide.facet.core/src/org/eclipse/virgo/ide/facet/internal/core/Plan.java64
-rw-r--r--org.eclipse.virgo.ide.facet.core/src/org/eclipse/virgo/ide/facet/internal/core/PlanReader.java162
-rw-r--r--org.eclipse.virgo.ide.facet.core/src/org/eclipse/virgo/ide/facet/internal/core/PlanReference.java26
-rw-r--r--org.eclipse.virgo.ide.facet.core/src/org/eclipse/virgo/ide/facet/internal/core/plan_template.xml11
-rw-r--r--org.eclipse.virgo.ide.manifest.core/src/org/eclipse/virgo/ide/module/core/ServerModuleDelegate.java115
-rw-r--r--org.eclipse.virgo.ide.manifest.core/src/org/eclipse/virgo/ide/module/core/ServerModuleFactoryDelegate.java51
-rw-r--r--org.eclipse.virgo.ide.pde.core/src/org/eclipse/virgo/ide/pde/core/internal/cmd/SetupProjectOperation.java41
-rw-r--r--org.eclipse.virgo.ide.runtime.core/META-INF/MANIFEST.MF3
-rw-r--r--org.eclipse.virgo.ide.runtime.core/src/org/eclipse/virgo/ide/runtime/core/IServerBehaviour.java6
-rw-r--r--org.eclipse.virgo.ide.runtime.core/src/org/eclipse/virgo/ide/runtime/internal/core/Server.java12
-rw-r--r--org.eclipse.virgo.ide.runtime.core/src/org/eclipse/virgo/ide/runtime/internal/core/ServerPublishOperation.java37
-rw-r--r--org.eclipse.virgo.ide.runtime.core/src/org/eclipse/virgo/ide/runtime/internal/core/command/JmxServerDeployCommand.java9
-rw-r--r--org.eclipse.virgo.ide.ui/plugin.properties5
-rw-r--r--org.eclipse.virgo.ide.ui/plugin.xml38
-rw-r--r--org.eclipse.virgo.ide.ui/src/org/eclipse/virgo/ide/ui/internal/actions/ConvertPlugInProject.java13
-rw-r--r--org.eclipse.virgo.ide.ui/src/org/eclipse/virgo/ide/ui/wizards/Messages.java12
-rw-r--r--org.eclipse.virgo.ide.ui/src/org/eclipse/virgo/ide/ui/wizards/NewPlanProjectFilePage.java138
-rw-r--r--org.eclipse.virgo.ide.ui/src/org/eclipse/virgo/ide/ui/wizards/NewPlanProjectWizard.java105
-rw-r--r--org.eclipse.virgo.ide.ui/src/org/eclipse/virgo/ide/ui/wizards/messages.properties6
-rw-r--r--org.eclipse.virgo.ide/MarsTargetPlatform2.target28
52 files changed, 1957 insertions, 219 deletions
diff --git a/org.eclipse.virgo.ide.doc/tooling/ch02.html b/org.eclipse.virgo.ide.doc/tooling/ch02.html
index ed5e4f2..92d44f4 100644
--- a/org.eclipse.virgo.ide.doc/tooling/ch02.html
+++ b/org.eclipse.virgo.ide.doc/tooling/ch02.html
@@ -3,4 +3,7 @@
</p><div class="section" title="Wizards"><div class="titlepage"><div><div><h4 class="title"><a name="Wizards"></a>Wizards</h4></div></div></div><div class="section" title="Server Runtime Wizard"><div class="titlepage"><div><div><h5 class="title"><a name="Server_Runtime_Wizard"></a>Server Runtime Wizard</h5></div></div></div><p>The Server Runtime Wizard can now optionally assist the user in setting up a PDE Target Platform definition whose content reflects the
Virgo Runtime repository configuration.
</p></div><div class="section" title="PDE Project Wizard"><div class="titlepage"><div><div><h5 class="title"><a name="PDE_Project_Wizard"></a>PDE Project Wizard</h5></div></div></div><p>A new project wizard allows creating PDE Plug-in projects that are also Virgo Runtime projects and can be deployed on a Virgo Server
+ </p></div><div class="section" title="Plan Project Wizard"><div class="titlepage"><div><div><h5 class="title"><a name="Plan_Project_Wizard"></a>Plan Project Wizard</h5></div></div></div><p>A new project wizard allows creating Plan projects in the workspace. Plan projects permit to deploy a plan to the Virgo Runtime within Eclipse
+ and can be seen as a possibly more convenient alternative to adding individual bundles to the Virgo Runtime and defining their activation order
+ via the Server Editor.
</p></div></div><div class="section" title="Server Editor"><div class="titlepage"><div><div><h4 class="title"><a name="Server_Editor"></a>Server Editor</h4></div></div></div><p>The Server Editor has been improved to:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>provide proper support for PDE Target Platform definitions</p></li><li class="listitem"><p>allow multi-selection in the 'Artefact Deployment Order' section.</p></li></ul></div></div></div></div></div><div class="navfooter"><hr><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="ch01.html">Prev</a>&nbsp;</td><td align="center" width="20%">&nbsp;</td><td align="right" width="40%">&nbsp;<a accesskey="n" href="ch02s02.html">Next</a></td></tr><tr><td valign="top" align="left" width="40%">&nbsp;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td valign="top" align="right" width="40%">&nbsp;</td></tr></table></div></body></html> \ No newline at end of file
diff --git a/org.eclipse.virgo.ide.doc/tooling/ch05.html b/org.eclipse.virgo.ide.doc/tooling/ch05.html
index 48416b1..05deb33 100644
--- a/org.eclipse.virgo.ide.doc/tooling/ch05.html
+++ b/org.eclipse.virgo.ide.doc/tooling/ch05.html
@@ -1,7 +1,7 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Chapter&nbsp;5.&nbsp;Server Editor</title><meta content="DocBook XSL Stylesheets V1.76.0" name="generator"><link rel="home" href="index.html" title="Virgo Tools Guide"><link rel="up" href="index.html" title="Virgo Tools Guide"><link rel="prev" href="ch04s03.html" title="Virgo Server Projects"><link rel="next" href="ch05s02.html" title="Repository Page"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table summary="Navigation header" width="100%"><tr><td align="left" width="20%"><a accesskey="p" href="ch04s03.html">Prev</a>&nbsp;</td><th align="center" width="60%">&nbsp;</th><td align="right" width="20%">&nbsp;<a accesskey="n" href="ch05s02.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter&nbsp;5.&nbsp;Server Editor"><div class="titlepage"><div><div><h2 class="title"><a name="server-editor"></a>Chapter&nbsp;5.&nbsp;Server Editor</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="ch05.html#N10229">Overview Page</a></span></dt><dt><span class="section"><a href="ch05s02.html">Repository Page</a></span></dt><dt><span class="section"><a href="ch05s03.html">Bundle Overview Page</a></span></dt><dt><span class="section"><a href="ch05s04.html">Bundle Dependency Graph Page</a></span></dt><dt><span class="section"><a href="ch05s05.html">Server Console Page</a></span></dt></dl></div><p>After successful configuration of an instance of the Virgo Runtime Environment in Eclipse you can use the server
+<html><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Chapter&nbsp;5.&nbsp;Server Editor</title><meta content="DocBook XSL Stylesheets V1.76.0" name="generator"><link rel="home" href="index.html" title="Virgo Tools Guide"><link rel="up" href="index.html" title="Virgo Tools Guide"><link rel="prev" href="ch04s03.html" title="Virgo Server Projects"><link rel="next" href="ch05s02.html" title="Repository Page"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table summary="Navigation header" width="100%"><tr><td align="left" width="20%"><a accesskey="p" href="ch04s03.html">Prev</a>&nbsp;</td><th align="center" width="60%">&nbsp;</th><td align="right" width="20%">&nbsp;<a accesskey="n" href="ch05s02.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter&nbsp;5.&nbsp;Server Editor"><div class="titlepage"><div><div><h2 class="title"><a name="server-editor"></a>Chapter&nbsp;5.&nbsp;Server Editor</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="ch05.html#N1022F">Overview Page</a></span></dt><dt><span class="section"><a href="ch05s02.html">Repository Page</a></span></dt><dt><span class="section"><a href="ch05s03.html">Bundle Overview Page</a></span></dt><dt><span class="section"><a href="ch05s04.html">Bundle Dependency Graph Page</a></span></dt><dt><span class="section"><a href="ch05s05.html">Server Console Page</a></span></dt></dl></div><p>After successful configuration of an instance of the Virgo Runtime Environment in Eclipse you can use the server
editor to configure and explore many different aspects of the Virgo Runtime instance. To open a server editor double-click
a Virgo Runtime instance in the Servers view.
- </p><div class="section" title="Overview Page"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="N10229"></a>Overview Page</h2></div></div></div><p>The server overview page is the first page of the editor. Please note that opening of the Editor may take a few
+ </p><div class="section" title="Overview Page"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="N1022F"></a>Overview Page</h2></div></div></div><p>The server overview page is the first page of the editor. Please note that opening of the Editor may take a few
seconds as the contents of the local repository needs to be indexed before opening.
</p><p>
<img src="images/editor-overview-page.png">
diff --git a/org.eclipse.virgo.ide.doc/tooling/ch05s02.html b/org.eclipse.virgo.ide.doc/tooling/ch05s02.html
index 43e3623..d085dcc 100644
--- a/org.eclipse.virgo.ide.doc/tooling/ch05s02.html
+++ b/org.eclipse.virgo.ide.doc/tooling/ch05s02.html
@@ -1,4 +1,4 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Repository Page</title><meta content="DocBook XSL Stylesheets V1.76.0" name="generator"><link rel="home" href="index.html" title="Virgo Tools Guide"><link rel="up" href="ch05.html" title="Chapter&nbsp;5.&nbsp;Server Editor"><link rel="prev" href="ch05.html" title="Chapter&nbsp;5.&nbsp;Server Editor"><link rel="next" href="ch05s03.html" title="Bundle Overview Page"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table summary="Navigation header" width="100%"><tr><td align="left" width="20%"><a accesskey="p" href="ch05.html">Prev</a>&nbsp;</td><th align="center" width="60%">&nbsp;</th><td align="right" width="20%">&nbsp;<a accesskey="n" href="ch05s03.html">Next</a></td></tr></table><hr></div><div class="section" title="Repository Page"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="N10263"></a>Repository Page</h2></div></div></div><p>The Repository Browser allows you to see what bundles and libraries are available on the @product.instance and
+<html><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Repository Page</title><meta content="DocBook XSL Stylesheets V1.76.0" name="generator"><link rel="home" href="index.html" title="Virgo Tools Guide"><link rel="up" href="ch05.html" title="Chapter&nbsp;5.&nbsp;Server Editor"><link rel="prev" href="ch05.html" title="Chapter&nbsp;5.&nbsp;Server Editor"><link rel="next" href="ch05s03.html" title="Bundle Overview Page"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table summary="Navigation header" width="100%"><tr><td align="left" width="20%"><a accesskey="p" href="ch05.html">Prev</a>&nbsp;</td><th align="center" width="60%">&nbsp;</th><td align="right" width="20%">&nbsp;<a accesskey="n" href="ch05s03.html">Next</a></td></tr></table><hr></div><div class="section" title="Repository Page"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="N10269"></a>Repository Page</h2></div></div></div><p>The Repository Browser allows you to see what bundles and libraries are available on the @product.instance and
to very easily install bundles and libraries from the remote Enterprise Bundle Repository. To view resources
installed on the Server select the "Repository" tab in the server editor.
</p><p>
diff --git a/org.eclipse.virgo.ide.doc/tooling/ch05s03.html b/org.eclipse.virgo.ide.doc/tooling/ch05s03.html
index 47eea66..b7ea6c7 100644
--- a/org.eclipse.virgo.ide.doc/tooling/ch05s03.html
+++ b/org.eclipse.virgo.ide.doc/tooling/ch05s03.html
@@ -1,4 +1,4 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Bundle Overview Page</title><meta content="DocBook XSL Stylesheets V1.76.0" name="generator"><link rel="home" href="index.html" title="Virgo Tools Guide"><link rel="up" href="ch05.html" title="Chapter&nbsp;5.&nbsp;Server Editor"><link rel="prev" href="ch05s02.html" title="Repository Page"><link rel="next" href="ch05s04.html" title="Bundle Dependency Graph Page"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table summary="Navigation header" width="100%"><tr><td align="left" width="20%"><a accesskey="p" href="ch05s02.html">Prev</a>&nbsp;</td><th align="center" width="60%">&nbsp;</th><td align="right" width="20%">&nbsp;<a accesskey="n" href="ch05s04.html">Next</a></td></tr></table><hr></div><div class="section" title="Bundle Overview Page"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="N10274"></a>Bundle Overview Page</h2></div></div></div><p>To view and control resources actually installed on the Server select the "Bundle Overview" tab in the server
+<html><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Bundle Overview Page</title><meta content="DocBook XSL Stylesheets V1.76.0" name="generator"><link rel="home" href="index.html" title="Virgo Tools Guide"><link rel="up" href="ch05.html" title="Chapter&nbsp;5.&nbsp;Server Editor"><link rel="prev" href="ch05s02.html" title="Repository Page"><link rel="next" href="ch05s04.html" title="Bundle Dependency Graph Page"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table summary="Navigation header" width="100%"><tr><td align="left" width="20%"><a accesskey="p" href="ch05s02.html">Prev</a>&nbsp;</td><th align="center" width="60%">&nbsp;</th><td align="right" width="20%">&nbsp;<a accesskey="n" href="ch05s04.html">Next</a></td></tr></table><hr></div><div class="section" title="Bundle Overview Page"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="N1027A"></a>Bundle Overview Page</h2></div></div></div><p>To view and control resources actually installed on the Server select the "Bundle Overview" tab in the server
editor.
</p><p>
<img src="images/editor-bundle-overview-page.png">
diff --git a/org.eclipse.virgo.ide.doc/tooling/ch05s04.html b/org.eclipse.virgo.ide.doc/tooling/ch05s04.html
index acdddfe..cfff11f 100644
--- a/org.eclipse.virgo.ide.doc/tooling/ch05s04.html
+++ b/org.eclipse.virgo.ide.doc/tooling/ch05s04.html
@@ -1,4 +1,4 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Bundle Dependency Graph Page</title><meta content="DocBook XSL Stylesheets V1.76.0" name="generator"><link rel="home" href="index.html" title="Virgo Tools Guide"><link rel="up" href="ch05.html" title="Chapter&nbsp;5.&nbsp;Server Editor"><link rel="prev" href="ch05s03.html" title="Bundle Overview Page"><link rel="next" href="ch05s05.html" title="Server Console Page"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table summary="Navigation header" width="100%"><tr><td align="left" width="20%"><a accesskey="p" href="ch05s03.html">Prev</a>&nbsp;</td><th align="center" width="60%">&nbsp;</th><td align="right" width="20%">&nbsp;<a accesskey="n" href="ch05s05.html">Next</a></td></tr></table><hr></div><div class="section" title="Bundle Dependency Graph Page"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="N10283"></a>Bundle Dependency Graph Page</h2></div></div></div><p>The "Bundle Dependency Graph" tab takes you to a page where you can visualize the complex relationships between
+<html><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Bundle Dependency Graph Page</title><meta content="DocBook XSL Stylesheets V1.76.0" name="generator"><link rel="home" href="index.html" title="Virgo Tools Guide"><link rel="up" href="ch05.html" title="Chapter&nbsp;5.&nbsp;Server Editor"><link rel="prev" href="ch05s03.html" title="Bundle Overview Page"><link rel="next" href="ch05s05.html" title="Server Console Page"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table summary="Navigation header" width="100%"><tr><td align="left" width="20%"><a accesskey="p" href="ch05s03.html">Prev</a>&nbsp;</td><th align="center" width="60%">&nbsp;</th><td align="right" width="20%">&nbsp;<a accesskey="n" href="ch05s05.html">Next</a></td></tr></table><hr></div><div class="section" title="Bundle Dependency Graph Page"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="N10289"></a>Bundle Dependency Graph Page</h2></div></div></div><p>The "Bundle Dependency Graph" tab takes you to a page where you can visualize the complex relationships between
bundles.
</p><p>
<img src="images/editor-graph-page.png">
diff --git a/org.eclipse.virgo.ide.doc/tooling/ch05s05.html b/org.eclipse.virgo.ide.doc/tooling/ch05s05.html
index 4e6359a..4a102ec 100644
--- a/org.eclipse.virgo.ide.doc/tooling/ch05s05.html
+++ b/org.eclipse.virgo.ide.doc/tooling/ch05s05.html
@@ -1,4 +1,4 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Server Console Page</title><meta content="DocBook XSL Stylesheets V1.76.0" name="generator"><link rel="home" href="index.html" title="Virgo Tools Guide"><link rel="up" href="ch05.html" title="Chapter&nbsp;5.&nbsp;Server Editor"><link rel="prev" href="ch05s04.html" title="Bundle Dependency Graph Page"><link rel="next" href="ch06.html" title="Chapter&nbsp;6.&nbsp;Developing OSGi Bundles"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table summary="Navigation header" width="100%"><tr><td align="left" width="20%"><a accesskey="p" href="ch05s04.html">Prev</a>&nbsp;</td><th align="center" width="60%">&nbsp;</th><td align="right" width="20%">&nbsp;<a accesskey="n" href="ch06.html">Next</a></td></tr></table><hr></div><div class="section" title="Server Console Page"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="N10292"></a>Server Console Page</h2></div></div></div><p>The "Server Console" tab takes you to an interactive console for exploring and managing the state of a running
+<html><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Server Console Page</title><meta content="DocBook XSL Stylesheets V1.76.0" name="generator"><link rel="home" href="index.html" title="Virgo Tools Guide"><link rel="up" href="ch05.html" title="Chapter&nbsp;5.&nbsp;Server Editor"><link rel="prev" href="ch05s04.html" title="Bundle Dependency Graph Page"><link rel="next" href="ch06.html" title="Chapter&nbsp;6.&nbsp;Developing OSGi Bundles"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table summary="Navigation header" width="100%"><tr><td align="left" width="20%"><a accesskey="p" href="ch05s04.html">Prev</a>&nbsp;</td><th align="center" width="60%">&nbsp;</th><td align="right" width="20%">&nbsp;<a accesskey="n" href="ch06.html">Next</a></td></tr></table><hr></div><div class="section" title="Server Console Page"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="N10298"></a>Server Console Page</h2></div></div></div><p>The "Server Console" tab takes you to an interactive console for exploring and managing the state of a running
server. (This console is different from the "Console View", which displays the log output of running server
instances.) Enter text in the "Command" text area and click the "Execute" button or press RETURN to execute the
command.
diff --git a/org.eclipse.virgo.ide.doc/tooling/ch07s05.html b/org.eclipse.virgo.ide.doc/tooling/ch07s05.html
index a12b352..9d29545 100644
--- a/org.eclipse.virgo.ide.doc/tooling/ch07s05.html
+++ b/org.eclipse.virgo.ide.doc/tooling/ch07s05.html
@@ -1,4 +1,4 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Migration actions</title><meta content="DocBook XSL Stylesheets V1.76.0" name="generator"><link rel="home" href="index.html" title="Virgo Tools Guide"><link rel="up" href="ch07.html" title="Chapter&nbsp;7.&nbsp;Developing OSGi Bundles using Plug-in Development Environment (PDE)"><link rel="prev" href="ch07s04.html" title="Publishing"><link rel="next" href="ch08.html" title="Chapter&nbsp;8.&nbsp;Developing PARs"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table summary="Navigation header" width="100%"><tr><td align="left" width="20%"><a accesskey="p" href="ch07s04.html">Prev</a>&nbsp;</td><th align="center" width="60%">&nbsp;</th><td align="right" width="20%">&nbsp;<a accesskey="n" href="ch08.html">Next</a></td></tr></table><hr></div><div class="section" title="Migration actions"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="pde-migration-actions"></a>Migration actions</h2></div></div></div><p>
+<html><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Migration actions</title><meta content="DocBook XSL Stylesheets V1.76.0" name="generator"><link rel="home" href="index.html" title="Virgo Tools Guide"><link rel="up" href="ch07.html" title="Chapter&nbsp;7.&nbsp;Developing OSGi Bundles using Plug-in Development Environment (PDE)"><link rel="prev" href="ch07s04.html" title="Publishing"><link rel="next" href="ch08.html" title="Chapter&nbsp;8.&nbsp;Developing Plans"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table summary="Navigation header" width="100%"><tr><td align="left" width="20%"><a accesskey="p" href="ch07s04.html">Prev</a>&nbsp;</td><th align="center" width="60%">&nbsp;</th><td align="right" width="20%">&nbsp;<a accesskey="n" href="ch08.html">Next</a></td></tr></table><hr></div><div class="section" title="Migration actions"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="pde-migration-actions"></a>Migration actions</h2></div></div></div><p>
Before the Virgo Tools provided support for PDE, some developers where using an unofficial Eclipse plug-in called
<a class="ulink" href="http://github.com/giamma/PDE2Virgo" target="_top">PDE2Virgo</a>.
The Virgo Tools provide a migration action for migrating PDE2Virgo projects into <span class="emphasis"><em>PDE bundle projects</em></span>.
diff --git a/org.eclipse.virgo.ide.doc/tooling/ch08.html b/org.eclipse.virgo.ide.doc/tooling/ch08.html
index 1742350..9cf7731 100644
--- a/org.eclipse.virgo.ide.doc/tooling/ch08.html
+++ b/org.eclipse.virgo.ide.doc/tooling/ch08.html
@@ -1,36 +1,35 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Chapter&nbsp;8.&nbsp;Developing PARs</title><meta content="DocBook XSL Stylesheets V1.76.0" name="generator"><link rel="home" href="index.html" title="Virgo Tools Guide"><link rel="up" href="index.html" title="Virgo Tools Guide"><link rel="prev" href="ch07s05.html" title="Migration actions"><link rel="next" href="ch09.html" title="Chapter&nbsp;9.&nbsp;Deploying Applications"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table summary="Navigation header" width="100%"><tr><td align="left" width="20%"><a accesskey="p" href="ch07s05.html">Prev</a>&nbsp;</td><th align="center" width="60%">&nbsp;</th><td align="right" width="20%">&nbsp;<a accesskey="n" href="ch09.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter&nbsp;8.&nbsp;Developing PARs"><div class="titlepage"><div><div><h2 class="title"><a name="pars"></a>Chapter&nbsp;8.&nbsp;Developing PARs</h2></div></div></div><p>In Virgo, applications consisting of multiple bundles can be packaged as a PAR.
+<html><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Chapter&nbsp;8.&nbsp;Developing Plans</title><meta content="DocBook XSL Stylesheets V1.76.0" name="generator"><link rel="home" href="index.html" title="Virgo Tools Guide"><link rel="up" href="index.html" title="Virgo Tools Guide"><link rel="prev" href="ch07s05.html" title="Migration actions"><link rel="next" href="ch08s02.html" title="Discovery of Plan files in the workspace"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table summary="Navigation header" width="100%"><tr><td align="left" width="20%"><a accesskey="p" href="ch07s05.html">Prev</a>&nbsp;</td><th align="center" width="60%">&nbsp;</th><td align="right" width="20%">&nbsp;<a accesskey="n" href="ch08s02.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter&nbsp;8.&nbsp;Developing Plans"><div class="titlepage"><div><div><h2 class="title"><a name="plans"></a>Chapter&nbsp;8.&nbsp;Developing Plans</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="ch08.html#planBenefits">Benefit of using Plan files</a></span></dt><dt><span class="section"><a href="ch08s02.html">Discovery of Plan files in the workspace</a></span></dt></dl></div><p>In Virgo, applications consisting of multiple bundles can be declared using one or more Plans.
</p><p>
- To create a PAR, right-click in the
+ To create a Plan project, right-click in the
<span class="emphasis"><em>Package Explorer</em></span>
and select
<span class="guimenu">New</span> &rarr; <span class="guimenuitem">Project&hellip;</span>
. In the dialog that opens select
- <span class="guimenu">EclipseRT</span> &rarr; <span class="guimenuitem">PAR Project</span>
+ <span class="guimenu">Virgo</span> &rarr; <span class="guimenuitem">Plan Project</span>
and press
<span class="emphasis"><em>Next</em></span>
:
- </p><div class="mediaobject" align="center"><img src="images/new-par-project.png" align="middle"></div><p>
+ </p><div class="mediaobject" align="center"><img src="images/new-plan-project.png" align="middle"></div><p>
</p><p>
- In the New PAR Project dialog, ensure the
- <span class="emphasis"><em>Use default location</em></span>
- option is unchecked, enter a suitable name for the project, set the location to a suitable directory, and press
+ In the New Plan Project dialog, enter a suitable name for the project, set the location to a suitable directory, and press
<span class="emphasis"><em>Next</em></span>
- . For example, the Greenpages sample PAR project would look like this:
- </p><div class="mediaobject" align="center"><img src="images/create-par-project.png" align="middle"></div><p>
</p><p>
- In the next dialog, some of the PAR properties are pre-populated. Set the Application Name and the Version as
- appropriate, then ensure that the
- <span class="emphasis"><em>Target Runtime</em></span>
- is set to
- <span class="emphasis"><em>Virgo Web Server (Runtime) ...</em></span>
- and press
- <span class="emphasis"><em>Next</em></span>
- . For example:
- </p><div class="mediaobject" align="center"><img src="images/par-content.png" align="middle"></div><p>
+ In the next wizard page, you can optionally specify a Plan name to also have a Plan file created for you by the wizard.
</p><p>
- In the next dialog, select the bundles so that they are contained in the PAR and press
- <span class="emphasis"><em>Finish</em></span>
- . For example:
- </p><div class="mediaobject" align="center"><img src="images/bundle-references.png" align="middle"></div><p>
- </p><p>The PAR project is then created.
- </p></div><div class="navfooter"><hr><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="ch07s05.html">Prev</a>&nbsp;</td><td align="center" width="20%">&nbsp;</td><td align="right" width="40%">&nbsp;<a accesskey="n" href="ch09.html">Next</a></td></tr><tr><td valign="top" align="left" width="40%">&nbsp;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td valign="top" align="right" width="40%">&nbsp;</td></tr></table></div></body></html> \ No newline at end of file
+ When creating additional Plan files, make sure you place them within the source folder.
+ You can now add Plan files to the Virgo Runtime in Eclipse via the usual add/remove dialog or by means of drag and drop.
+ </p><div class="section" title="Benefit of using Plan files"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="planBenefits"></a>Benefit of using Plan files</h2></div></div></div><p>
+ Plan projects and plan files can be used as an alternative to adding individual bundles to the test environment integrated in Eclipse.
+ The main benefits of using Plan files are:
+ </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
+ Plan files can be more easily shared with coworkers and/or committed to a source code repository
+ </p></li><li class="listitem"><p>
+ It may be more convenient to re-order the content of a Plan file using the Eclipse text editor than editing artefact ordering in the Server Editor
+ </p></li><li class="listitem"><p>
+ Plan files can be composed of other plan files
+ </p></li><li class="listitem"><p>
+ Items in Plan files will be picked either from the workspace or from the configured bundle repositories
+ </p></li><li class="listitem"><p>
+ Using Plan files in the test environment is more representative of the production deployment
+ </p></li></ul></div><p>
+ </p></div></div><div class="navfooter"><hr><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="ch07s05.html">Prev</a>&nbsp;</td><td align="center" width="20%">&nbsp;</td><td align="right" width="40%">&nbsp;<a accesskey="n" href="ch08s02.html">Next</a></td></tr><tr><td valign="top" align="left" width="40%">&nbsp;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td valign="top" align="right" width="40%">&nbsp;</td></tr></table></div></body></html> \ No newline at end of file
diff --git a/org.eclipse.virgo.ide.doc/tooling/ch08s02.html b/org.eclipse.virgo.ide.doc/tooling/ch08s02.html
index 2ad92da..b8d4b74 100644
--- a/org.eclipse.virgo.ide.doc/tooling/ch08s02.html
+++ b/org.eclipse.virgo.ide.doc/tooling/ch08s02.html
@@ -1,9 +1,12 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Installation</title><meta content="DocBook XSL Stylesheets V1.76.0" name="generator"><link rel="home" href="index.html" title="Virgo Tools Guide"><link rel="up" href="ch08.html" title="Chapter&nbsp;8.&nbsp;Installation and Release Notes"><link rel="prev" href="ch08.html" title="Chapter&nbsp;8.&nbsp;Installation and Release Notes"><link rel="next" href="ch08s03.html" title="Known Issues"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table summary="Navigation header" width="100%"><tr><td align="left" width="20%"><a accesskey="p" href="ch08.html">Prev</a>&nbsp;</td><th align="center" width="60%">&nbsp;</th><td align="right" width="20%">&nbsp;<a accesskey="n" href="ch08s03.html">Next</a></td></tr></table><hr></div><div class="section" title="Installation"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Installation"></a>Installation</h2></div></div></div><div class="section" title="Install Eclipse"><div class="titlepage"><div><div><h3 class="title"><a name="Install_Eclipse"></a>Install Eclipse</h3></div></div></div><p>If you're not installing into an existing Eclipse, you'll need one. </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Eclipse Indigo 3.7.x or Indigo based suite such as SpringSource Tool Suite 2.9.x</p></li><li class="listitem"><p>Eclipse Juno 3.8/4.2</p></li></ul></div><p>Eclipse JEE Indigo recommended.</p></div><div class="section" title="Install Virgo"><div class="titlepage"><div><div><h3 class="title"><a name="Install_Virgo"></a>Install Virgo</h3></div></div></div><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>Select
- <span class="italic">Help&gt;Install New Software..</span>
- </p></li><li class="listitem"><p>Enter one of the Virgo update sites below.</p></li><li class="listitem"><p>Select "Virgo Tools" feature and click install.</p></li></ol></div><p>&lt;span style="color:#FF0000"&gt;&lt;b&gt;Note:&lt;/b&gt; Select &lt;i&gt;only&lt;/i&gt; Virgo Tooling. This is a composite site, and the other features are &lt;i&gt;not&lt;/i&gt; designed to work within the Eclipse IDE.&lt;/span&gt;</p></div><div class="section" title="Update Sites"><div class="titlepage"><div><div><h3 class="title"><a name="Update_Sites"></a>Update Sites</h3></div></div></div><div class="variablelist"><dl><dt><span class="term">Milestone: &lt;code&gt;
- <a class="ulink" href="http://download.eclipse.org/virgo/milestone/tooling&amp;lt;/code&amp;gt" target="_top">http://download.eclipse.org/virgo/milestone/tooling&amp;lt;/code&amp;gt</a>; (Recommended)
- </span></dt><dd></dd><dt><span class="term">Snapshot: &lt;code&gt;
- <a class="ulink" href="http://download.eclipse.org/virgo/snapshot/tooling&amp;lt;/code&amp;gt" target="_top">http://download.eclipse.org/virgo/snapshot/tooling&amp;lt;/code&amp;gt</a>; (Bleeding Edge)
- </span></dt><dd></dd></dl></div><p>Many users will also want to install the M2E release at: &lt;code&gt;
- <a class="ulink" href="http://download.eclipse.org/technology/m2e/releases&amp;lt;/code&amp;gt" target="_top">http://download.eclipse.org/technology/m2e/releases&amp;lt;/code&amp;gt</a>;. (You'll need this to run the greenpages examples.)
- </p></div></div><div class="navfooter"><hr><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="ch08.html">Prev</a>&nbsp;</td><td align="center" width="20%"><a accesskey="u" href="ch08.html">Up</a></td><td align="right" width="40%">&nbsp;<a accesskey="n" href="ch08s03.html">Next</a></td></tr><tr><td valign="top" align="left" width="40%">&nbsp;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td valign="top" align="right" width="40%">&nbsp;</td></tr></table></div></body></html> \ No newline at end of file
+<html><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Discovery of Plan files in the workspace</title><meta content="DocBook XSL Stylesheets V1.76.0" name="generator"><link rel="home" href="index.html" title="Virgo Tools Guide"><link rel="up" href="ch08.html" title="Chapter&nbsp;8.&nbsp;Developing Plans"><link rel="prev" href="ch08.html" title="Chapter&nbsp;8.&nbsp;Developing Plans"><link rel="next" href="ch09.html" title="Chapter&nbsp;9.&nbsp;Developing PARs"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table summary="Navigation header" width="100%"><tr><td align="left" width="20%"><a accesskey="p" href="ch08.html">Prev</a>&nbsp;</td><th align="center" width="60%">&nbsp;</th><td align="right" width="20%">&nbsp;<a accesskey="n" href="ch09.html">Next</a></td></tr></table><hr></div><div class="section" title="Discovery of Plan files in the workspace"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="planPublishing"></a>Discovery of Plan files in the workspace</h2></div></div></div><p>
+ The Virgo Tools create Plan projects as special types of Java projects with an additional Virgo-specific nature.
+ Plan files must be created within the source folder(s) of Plan projects.
+ </p><p>
+ When a Plan file refers to another Plan file, the Virgo Tools will look for the referred Plan file in the same project
+ of the top-level Plan and in all the Plan projects that are directly or indirectly reachable via the project's <span class="emphasis"><em>Java
+ Build Path</em></span>.
+ If more than one Plan with the same name is found in the project's <span class="emphasis"><em>Java Build Path</em></span>, the Virgo Tooling will
+ pick the first found when following the <span class="emphasis"><em>Java Build Path</em></span> defined class-path order.
+ Note that the Plan is identified by the value of the <span class="emphasis"><em>name</em></span> attribute of the <span class="emphasis"><em>plan</em></span> element
+ inside the Plan XML document and not the by the file name.
+ </p></div><div class="navfooter"><hr><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="ch08.html">Prev</a>&nbsp;</td><td align="center" width="20%"><a accesskey="u" href="ch08.html">Up</a></td><td align="right" width="40%">&nbsp;<a accesskey="n" href="ch09.html">Next</a></td></tr><tr><td valign="top" align="left" width="40%">&nbsp;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td valign="top" align="right" width="40%">&nbsp;</td></tr></table></div></body></html> \ No newline at end of file
diff --git a/org.eclipse.virgo.ide.doc/tooling/ch09.html b/org.eclipse.virgo.ide.doc/tooling/ch09.html
index 9f97838..1f3357d 100644
--- a/org.eclipse.virgo.ide.doc/tooling/ch09.html
+++ b/org.eclipse.virgo.ide.doc/tooling/ch09.html
@@ -1,15 +1,35 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Chapter&nbsp;9.&nbsp;Deploying Applications</title><meta content="DocBook XSL Stylesheets V1.76.0" name="generator"><link rel="home" href="index.html" title="Virgo Tools Guide"><link rel="up" href="index.html" title="Virgo Tools Guide"><link rel="prev" href="ch08.html" title="Chapter&nbsp;8.&nbsp;Developing PARs"><link rel="next" href="ch10.html" title="Chapter&nbsp;10.&nbsp;Installation and Release Notes"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table summary="Navigation header" width="100%"><tr><td align="left" width="20%"><a accesskey="p" href="ch08.html">Prev</a>&nbsp;</td><th align="center" width="60%">&nbsp;</th><td align="right" width="20%">&nbsp;<a accesskey="n" href="ch10.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter&nbsp;9.&nbsp;Deploying Applications"><div class="titlepage"><div><div><h2 class="title"><a name="deploying"></a>Chapter&nbsp;9.&nbsp;Deploying Applications</h2></div></div></div><p>Currently the Tools support direct deployment of WTP Dynamic Web Projects, OSGi bundle and PAR projects to the
- Virgo Runtime from directly within Eclipse.
- </p><p>To deploy an application to the Virgo Runtime Environment just bring up the context menu on the configured
- Virgo Runtime runtime in the Servers view and choose "Add or Remove Projects...". In the dialog, select
- the desired project and add it to the list of "Configured projects".
- </p><p>
- <img src="images/tooling-deployed-application.png">
- </p><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p> Deploying and undeploying an application from the Virgo Runtime certainly works while the
- Virgo Runtime Environment is running, but you can also add or remove projects if the Virgo Runtime is not
- running. </p></div><p>Once an application is deployed on the Virgo Runtime Environment the tooling support will automatically pick up any
- change to source files -- for example, Java and XML context files -- and refresh the deployed application on the
- Virgo Runtime.
- </p><p>The wait time between a change and the actual refresh can be configured in the configuration editor of the
- runtime. To bring up that editor, double-click on the configured Virgo Runtime Environment instance in the Servers view.
- </p></div><div class="navfooter"><hr><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="ch08.html">Prev</a>&nbsp;</td><td align="center" width="20%">&nbsp;</td><td align="right" width="40%">&nbsp;<a accesskey="n" href="ch10.html">Next</a></td></tr><tr><td valign="top" align="left" width="40%">&nbsp;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td valign="top" align="right" width="40%">&nbsp;</td></tr></table></div></body></html> \ No newline at end of file
+<html><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Chapter&nbsp;9.&nbsp;Developing PARs</title><meta content="DocBook XSL Stylesheets V1.76.0" name="generator"><link rel="home" href="index.html" title="Virgo Tools Guide"><link rel="up" href="index.html" title="Virgo Tools Guide"><link rel="prev" href="ch08s02.html" title="Discovery of Plan files in the workspace"><link rel="next" href="ch10.html" title="Chapter&nbsp;10.&nbsp;Deploying Applications"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table summary="Navigation header" width="100%"><tr><td align="left" width="20%"><a accesskey="p" href="ch08s02.html">Prev</a>&nbsp;</td><th align="center" width="60%">&nbsp;</th><td align="right" width="20%">&nbsp;<a accesskey="n" href="ch10.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter&nbsp;9.&nbsp;Developing PARs"><div class="titlepage"><div><div><h2 class="title"><a name="pars"></a>Chapter&nbsp;9.&nbsp;Developing PARs</h2></div></div></div><p>In Virgo, applications consisting of multiple bundles can be packaged as a PAR.
+ </p><p>
+ To create a PAR, right-click in the
+ <span class="emphasis"><em>Package Explorer</em></span>
+ and select
+ <span class="guimenu">New</span> &rarr; <span class="guimenuitem">Project&hellip;</span>
+ . In the dialog that opens select
+ <span class="guimenu">EclipseRT</span> &rarr; <span class="guimenuitem">PAR Project</span>
+ and press
+ <span class="emphasis"><em>Next</em></span>
+ .
+ </p><p>
+ In the New PAR Project dialog, ensure the
+ <span class="emphasis"><em>Use default location</em></span>
+ option is unchecked, enter a suitable name for the project, set the location to a suitable directory, and press
+ <span class="emphasis"><em>Next</em></span>
+ . For example, the Greenpages sample PAR project would look like this:
+ </p><div class="mediaobject" align="center"><img src="images/create-par-project.png" align="middle"></div><p>
+ </p><p>
+ In the next dialog, some of the PAR properties are pre-populated. Set the Application Name and the Version as
+ appropriate, then ensure that the
+ <span class="emphasis"><em>Target Runtime</em></span>
+ is set to
+ <span class="emphasis"><em>Virgo Web Server (Runtime) ...</em></span>
+ and press
+ <span class="emphasis"><em>Next</em></span>
+ . For example:
+ </p><div class="mediaobject" align="center"><img src="images/par-content.png" align="middle"></div><p>
+ </p><p>
+ In the next dialog, select the bundles so that they are contained in the PAR and press
+ <span class="emphasis"><em>Finish</em></span>
+ . For example:
+ </p><div class="mediaobject" align="center"><img src="images/bundle-references.png" align="middle"></div><p>
+ </p><p>The PAR project is then created.
+ </p></div><div class="navfooter"><hr><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="ch08s02.html">Prev</a>&nbsp;</td><td align="center" width="20%">&nbsp;</td><td align="right" width="40%">&nbsp;<a accesskey="n" href="ch10.html">Next</a></td></tr><tr><td valign="top" align="left" width="40%">&nbsp;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td valign="top" align="right" width="40%">&nbsp;</td></tr></table></div></body></html> \ No newline at end of file
diff --git a/org.eclipse.virgo.ide.doc/tooling/ch10.html b/org.eclipse.virgo.ide.doc/tooling/ch10.html
index bcf3cbc..865d0f7 100644
--- a/org.eclipse.virgo.ide.doc/tooling/ch10.html
+++ b/org.eclipse.virgo.ide.doc/tooling/ch10.html
@@ -1 +1,16 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Chapter&nbsp;10.&nbsp;Installation and Release Notes</title><meta content="DocBook XSL Stylesheets V1.76.0" name="generator"><link rel="home" href="index.html" title="Virgo Tools Guide"><link rel="up" href="index.html" title="Virgo Tools Guide"><link rel="prev" href="ch09.html" title="Chapter&nbsp;9.&nbsp;Deploying Applications"><link rel="next" href="ch10s02.html" title="Installation"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table summary="Navigation header" width="100%"><tr><td align="left" width="20%"><a accesskey="p" href="ch09.html">Prev</a>&nbsp;</td><th align="center" width="60%">&nbsp;</th><td align="right" width="20%">&nbsp;<a accesskey="n" href="ch10s02.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter&nbsp;10.&nbsp;Installation and Release Notes"><div class="titlepage"><div><div><h2 class="title"><a name="N1048E"></a>Chapter&nbsp;10.&nbsp;Installation and Release Notes</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="ch10.html#Features">Features</a></span></dt><dt><span class="section"><a href="ch10s02.html">Installation</a></span></dt><dd><dl><dt><span class="section"><a href="ch10s02.html#Install_Eclipse">Install Eclipse</a></span></dt><dt><span class="section"><a href="ch10s02.html#Install_Virgo">Install Virgo</a></span></dt><dt><span class="section"><a href="ch10s02.html#Update_Sites">Update Sites</a></span></dt></dl></dd><dt><span class="section"><a href="ch10s03.html">Known Issues</a></span></dt><dt><span class="section"><a href="ch10s04.html">Maven plugin</a></span></dt><dd><dl><dt><span class="section"><a href="ch10s04.html#Build">Build</a></span></dt><dt><span class="section"><a href="ch10s04.html#Goals">Goals</a></span></dt><dt><span class="section"><a href="ch10s04.html#Simple_example_POM">Simple example POM</a></span></dt></dl></dd><dt><span class="section"><a href="ch10s05.html">Importing Virgo Projects into Eclipse</a></span></dt><dt><span class="section"><a href="ch10s06.html">FAQ</a></span></dt></dl></div><div class="section" title="Features"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Features"></a>Features</h2></div></div></div><p>The Virgo Tooling/IDE concept concerns the whole Virgo tooling (that was available inside SpringSource Tool Suite) being put in a separate project. The tooling supports the following: </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Bundle projects </p></li><li class="listitem"><p>Par projects </p></li><li class="listitem"><p>Plan files/projects </p></li><li class="listitem"><p>Web Bundles </p></li><li class="listitem"><p>New from release 1.5.0: PDE Plug-in projects (created via a dedicated Wizard)</p></li><li class="listitem"><p>Deployment to a Virgo Server in the server view.</p></li></ul></div></div></div><div class="navfooter"><hr><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="ch09.html">Prev</a>&nbsp;</td><td align="center" width="20%">&nbsp;</td><td align="right" width="40%">&nbsp;<a accesskey="n" href="ch10s02.html">Next</a></td></tr><tr><td valign="top" align="left" width="40%">&nbsp;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td valign="top" align="right" width="40%">&nbsp;</td></tr></table></div></body></html> \ No newline at end of file
+<html><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Chapter&nbsp;10.&nbsp;Deploying Applications</title><meta content="DocBook XSL Stylesheets V1.76.0" name="generator"><link rel="home" href="index.html" title="Virgo Tools Guide"><link rel="up" href="index.html" title="Virgo Tools Guide"><link rel="prev" href="ch09.html" title="Chapter&nbsp;9.&nbsp;Developing PARs"><link rel="next" href="ch11.html" title="Chapter&nbsp;11.&nbsp;Installation and Release Notes"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table summary="Navigation header" width="100%"><tr><td align="left" width="20%"><a accesskey="p" href="ch09.html">Prev</a>&nbsp;</td><th align="center" width="60%">&nbsp;</th><td align="right" width="20%">&nbsp;<a accesskey="n" href="ch11.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter&nbsp;10.&nbsp;Deploying Applications"><div class="titlepage"><div><div><h2 class="title"><a name="deploying"></a>Chapter&nbsp;10.&nbsp;Deploying Applications</h2></div></div></div><p>Currently the Tools support direct deployment of WTP Dynamic Web Projects, OSGi bundle projects,
+ PDE Bundle projects, PAR projects and Plan files (contained in Plan projects) to the
+ Virgo Runtime from directly within Eclipse.
+ </p><p>To deploy an application to the Virgo Runtime Environment just bring up the context menu on the configured
+ Virgo Runtime runtime in the Servers view and choose "Add or Remove Projects...". In the dialog, select
+ the desired project and add it to the list of "Configured projects".
+ </p><p>
+ <img src="images/tooling-deployed-application.png">
+ </p><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p> Deploying and undeploying an application from the Virgo Runtime certainly works while the
+ Virgo Runtime Environment is running, but you can also add or remove projects if the Virgo Runtime is not
+ running. </p></div><p>Once an application is deployed on the Virgo Runtime Environment the tooling support will automatically pick up any
+ change to source files -- for example, Java and XML context files -- and refresh the deployed application on the
+ Virgo Runtime.
+ </p><p>The wait time between a change and the actual refresh can be configured in the configuration editor of the
+ runtime. To bring up that editor, double-click on the configured Virgo Runtime Environment instance in the Servers view.
+ </p></div><div class="navfooter"><hr><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="ch09.html">Prev</a>&nbsp;</td><td align="center" width="20%">&nbsp;</td><td align="right" width="40%">&nbsp;<a accesskey="n" href="ch11.html">Next</a></td></tr><tr><td valign="top" align="left" width="40%">&nbsp;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td valign="top" align="right" width="40%">&nbsp;</td></tr></table></div></body></html> \ No newline at end of file
diff --git a/org.eclipse.virgo.ide.doc/tooling/ch11.html b/org.eclipse.virgo.ide.doc/tooling/ch11.html
new file mode 100644
index 0000000..e8a7ef3
--- /dev/null
+++ b/org.eclipse.virgo.ide.doc/tooling/ch11.html
@@ -0,0 +1 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Chapter&nbsp;11.&nbsp;Installation and Release Notes</title><meta content="DocBook XSL Stylesheets V1.76.0" name="generator"><link rel="home" href="index.html" title="Virgo Tools Guide"><link rel="up" href="index.html" title="Virgo Tools Guide"><link rel="prev" href="ch10.html" title="Chapter&nbsp;10.&nbsp;Deploying Applications"><link rel="next" href="ch11s02.html" title="Installation"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table summary="Navigation header" width="100%"><tr><td align="left" width="20%"><a accesskey="p" href="ch10.html">Prev</a>&nbsp;</td><th align="center" width="60%">&nbsp;</th><td align="right" width="20%">&nbsp;<a accesskey="n" href="ch11s02.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter&nbsp;11.&nbsp;Installation and Release Notes"><div class="titlepage"><div><div><h2 class="title"><a name="N104EC"></a>Chapter&nbsp;11.&nbsp;Installation and Release Notes</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="ch11.html#Features">Features</a></span></dt><dt><span class="section"><a href="ch11s02.html">Installation</a></span></dt><dd><dl><dt><span class="section"><a href="ch11s02.html#Install_Eclipse">Install Eclipse</a></span></dt><dt><span class="section"><a href="ch11s02.html#Install_Virgo">Install Virgo</a></span></dt><dt><span class="section"><a href="ch11s02.html#Update_Sites">Update Sites</a></span></dt></dl></dd><dt><span class="section"><a href="ch11s03.html">Known Issues</a></span></dt><dt><span class="section"><a href="ch11s04.html">Maven plugin</a></span></dt><dd><dl><dt><span class="section"><a href="ch11s04.html#Build">Build</a></span></dt><dt><span class="section"><a href="ch11s04.html#Goals">Goals</a></span></dt><dt><span class="section"><a href="ch11s04.html#Simple_example_POM">Simple example POM</a></span></dt></dl></dd><dt><span class="section"><a href="ch11s05.html">Importing Virgo Projects into Eclipse</a></span></dt><dt><span class="section"><a href="ch11s06.html">FAQ</a></span></dt></dl></div><div class="section" title="Features"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Features"></a>Features</h2></div></div></div><p>The Virgo Tooling/IDE concept concerns the whole Virgo tooling (that was available inside SpringSource Tool Suite) being put in a separate project. The tooling supports the following: </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Bundle projects </p></li><li class="listitem"><p>Par projects </p></li><li class="listitem"><p>Plan files/projects </p></li><li class="listitem"><p>Web Bundles </p></li><li class="listitem"><p>New from release 1.5.0: PDE Plug-in projects (created via a dedicated Wizard)</p></li><li class="listitem"><p>Deployment to a Virgo Server in the server view.</p></li></ul></div></div></div><div class="navfooter"><hr><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="ch10.html">Prev</a>&nbsp;</td><td align="center" width="20%">&nbsp;</td><td align="right" width="40%">&nbsp;<a accesskey="n" href="ch11s02.html">Next</a></td></tr><tr><td valign="top" align="left" width="40%">&nbsp;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td valign="top" align="right" width="40%">&nbsp;</td></tr></table></div></body></html> \ No newline at end of file
diff --git a/org.eclipse.virgo.ide.doc/tooling/ch11s02.html b/org.eclipse.virgo.ide.doc/tooling/ch11s02.html
new file mode 100644
index 0000000..57a0e8b
--- /dev/null
+++ b/org.eclipse.virgo.ide.doc/tooling/ch11s02.html
@@ -0,0 +1,9 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Installation</title><meta content="DocBook XSL Stylesheets V1.76.0" name="generator"><link rel="home" href="index.html" title="Virgo Tools Guide"><link rel="up" href="ch11.html" title="Chapter&nbsp;11.&nbsp;Installation and Release Notes"><link rel="prev" href="ch11.html" title="Chapter&nbsp;11.&nbsp;Installation and Release Notes"><link rel="next" href="ch11s03.html" title="Known Issues"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table summary="Navigation header" width="100%"><tr><td align="left" width="20%"><a accesskey="p" href="ch11.html">Prev</a>&nbsp;</td><th align="center" width="60%">&nbsp;</th><td align="right" width="20%">&nbsp;<a accesskey="n" href="ch11s03.html">Next</a></td></tr></table><hr></div><div class="section" title="Installation"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Installation"></a>Installation</h2></div></div></div><div class="section" title="Install Eclipse"><div class="titlepage"><div><div><h3 class="title"><a name="Install_Eclipse"></a>Install Eclipse</h3></div></div></div><p>If you're not installing into an existing Eclipse, you'll need one. </p><p>Eclipse for Java EE developers is recommended.</p></div><div class="section" title="Install Virgo"><div class="titlepage"><div><div><h3 class="title"><a name="Install_Virgo"></a>Install Virgo</h3></div></div></div><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>Select
+ <span class="italic">Help&gt;Install New Software..</span>
+ </p></li><li class="listitem"><p>Enter one of the Virgo update sites below.</p></li><li class="listitem"><p>Select "Virgo Tools" feature and click install.</p></li></ol></div><p>&lt;span style="color:#FF0000"&gt;&lt;b&gt;Note:&lt;/b&gt; Select &lt;i&gt;only&lt;/i&gt; Virgo Tooling. This is a composite site, and the other features are &lt;i&gt;not&lt;/i&gt; designed to work within the Eclipse IDE.&lt;/span&gt;</p></div><div class="section" title="Update Sites"><div class="titlepage"><div><div><h3 class="title"><a name="Update_Sites"></a>Update Sites</h3></div></div></div><div class="variablelist"><dl><dt><span class="term">Milestone: &lt;code&gt;
+ <a class="ulink" href="http://download.eclipse.org/virgo/milestone/tooling&amp;lt;/code&amp;gt" target="_top">http://download.eclipse.org/virgo/milestone/tooling&amp;lt;/code&amp;gt</a>; (Recommended)
+ </span></dt><dd></dd><dt><span class="term">Snapshot: &lt;code&gt;
+ <a class="ulink" href="http://download.eclipse.org/virgo/snapshot/tooling&amp;lt;/code&amp;gt" target="_top">http://download.eclipse.org/virgo/snapshot/tooling&amp;lt;/code&amp;gt</a>; (Bleeding Edge)
+ </span></dt><dd></dd></dl></div><p>Many users will also want to install the M2E release at: &lt;code&gt;
+ <a class="ulink" href="http://download.eclipse.org/technology/m2e/releases&amp;lt;/code&amp;gt" target="_top">http://download.eclipse.org/technology/m2e/releases&amp;lt;/code&amp;gt</a>;. (You'll need this to run the greenpages examples.)
+ </p></div></div><div class="navfooter"><hr><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="ch11.html">Prev</a>&nbsp;</td><td align="center" width="20%"><a accesskey="u" href="ch11.html">Up</a></td><td align="right" width="40%">&nbsp;<a accesskey="n" href="ch11s03.html">Next</a></td></tr><tr><td valign="top" align="left" width="40%">&nbsp;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td valign="top" align="right" width="40%">&nbsp;</td></tr></table></div></body></html> \ No newline at end of file
diff --git a/org.eclipse.virgo.ide.doc/tooling/ch11s03.html b/org.eclipse.virgo.ide.doc/tooling/ch11s03.html
new file mode 100644
index 0000000..2eab073
--- /dev/null
+++ b/org.eclipse.virgo.ide.doc/tooling/ch11s03.html
@@ -0,0 +1,11 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Known Issues</title><meta content="DocBook XSL Stylesheets V1.76.0" name="generator"><link rel="home" href="index.html" title="Virgo Tools Guide"><link rel="up" href="ch11.html" title="Chapter&nbsp;11.&nbsp;Installation and Release Notes"><link rel="prev" href="ch11s02.html" title="Installation"><link rel="next" href="ch11s04.html" title="Maven plugin"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table summary="Navigation header" width="100%"><tr><td align="left" width="20%"><a accesskey="p" href="ch11s02.html">Prev</a>&nbsp;</td><th align="center" width="60%">&nbsp;</th><td align="right" width="20%">&nbsp;<a accesskey="n" href="ch11s04.html">Next</a></td></tr></table><hr></div><div class="section" title="Known Issues"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Known_Issues"></a>Known Issues</h2></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Manifest generation does not seem to be working properly.
+ <a class="ulink" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=379233" target="_top">https://bugs.eclipse.org/bugs/show_bug.cgi?id=379233</a>
+ </p></li><li class="listitem"><p>Other significant bugs still exist. Please see these release train bugs for a current list, and please report any other issues you discover:</p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p>368783: Server management UI bug train
+ <a class="ulink" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=368783" target="_top">https://bugs.eclipse.org/bugs/show_bug.cgi?id=368783</a>
+ </p></li><li class="listitem"><p>368785: Server runtime support bug train
+ <a class="ulink" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=368785" target="_top">https://bugs.eclipse.org/bugs/show_bug.cgi?id=368785</a>
+ </p></li><li class="listitem"><p>368782: Plugin packaging issues bug train
+ <a class="ulink" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=368782" target="_top">https://bugs.eclipse.org/bugs/show_bug.cgi?id=368782</a>
+ </p></li><li class="listitem"><p>You can see all open bugs
+ <a class="ulink" href="https://bugs.eclipse.org/bugs/buglist.cgi?list_id=1289794;query_format=advanced;bug_status=NEW;bug_status=ASSIGNED;bug_status=REOPENED;component=tooling;product=Virgo" target="_top">here</a>.
+ </p></li></ul></div></li></ul></div></div><div class="navfooter"><hr><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="ch11s02.html">Prev</a>&nbsp;</td><td align="center" width="20%"><a accesskey="u" href="ch11.html">Up</a></td><td align="right" width="40%">&nbsp;<a accesskey="n" href="ch11s04.html">Next</a></td></tr><tr><td valign="top" align="left" width="40%">&nbsp;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td valign="top" align="right" width="40%">&nbsp;</td></tr></table></div></body></html> \ No newline at end of file
diff --git a/org.eclipse.virgo.ide.doc/tooling/ch11s04.html b/org.eclipse.virgo.ide.doc/tooling/ch11s04.html
new file mode 100644
index 0000000..7f273a3
--- /dev/null
+++ b/org.eclipse.virgo.ide.doc/tooling/ch11s04.html
@@ -0,0 +1,81 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Maven plugin</title><meta content="DocBook XSL Stylesheets V1.76.0" name="generator"><link rel="home" href="index.html" title="Virgo Tools Guide"><link rel="up" href="ch11.html" title="Chapter&nbsp;11.&nbsp;Installation and Release Notes"><link rel="prev" href="ch11s03.html" title="Known Issues"><link rel="next" href="ch11s05.html" title="Importing Virgo Projects into Eclipse"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table summary="Navigation header" width="100%"><tr><td align="left" width="20%"><a accesskey="p" href="ch11s03.html">Prev</a>&nbsp;</td><th align="center" width="60%">&nbsp;</th><td align="right" width="20%">&nbsp;<a accesskey="n" href="ch11s05.html">Next</a></td></tr></table><hr></div><div class="section" title="Maven plugin"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Maven_plugin"></a>Maven plugin</h2></div></div></div><p>To support the development of OSGi bundles for Eclipse Virgo with Maven a Maven plugin is available. This plugin is able to start/stop a local Eclipse Virgo instance. Moreover it is possible to deploy/undeploy/refresh bundles via Maven. </p><div class="section" title="Build"><div class="titlepage"><div><div><h3 class="title"><a name="Build"></a>Build</h3></div></div></div><p>In order to use the plugin one has to download the source code from
+ <a class="ulink" href="https://github.com/frieder/virgo-maven-plugin" target="_top">Github</a>&amp;nbsp;and build the binary manually. This can be easily done by executing the following Maven command in the root folder of the plugin where the pom.xml file is located.
+&lt; pre&gt;mvn clean install&lt;/pre&gt;
+ Moreover to generate the documentation just execute the following Maven command (or take the one provided in the repository on Github).
+&lt; pre&gt;mvn clean&amp;nbsp;plugin:xdoc javadoc:javadoc jxr:jxr site
+&lt; /pre&gt;
+ </p></div><div class="section" title="Goals"><div class="titlepage"><div><div><h3 class="title"><a name="Goals"></a>Goals</h3></div></div></div><p>The plugin provides a set of Maven goals that allow different actions. </p><table id="N10586"><tr>
+ <td>
+ <span class="bold"><strong>Goal</strong></span>
+ </td>
+ <td>
+ <span class="bold"><strong>Description</strong></span>
+ </td>
+ </tr><tr>
+ <td>&lt;code&gt;virgo:start&lt;/code&gt; </td>
+ <td>Starts a Virgo instance by executing the provided startup script. &lt;br&gt; </td>
+ </tr><tr>
+ <td>&lt;code&gt;virgo:shutdown&lt;/code&gt; </td>
+ <td>Stops a running Virgo instance.</td>
+ </tr><tr>
+ <td>&lt;code&gt;virgo:immediateShutdown&lt;/code&gt; </td>
+ <td>Stops a running Virgo instance immediately.</td>
+ </tr><tr>
+ <td>&lt;code&gt;virgo:deploy&lt;/code&gt; </td>
+ <td>Deploys an OSGi bundle to a running Virgo instance.</td>
+ </tr><tr>
+ <td>&lt;code&gt;virgo:undeploy&lt;/code&gt; </td>
+ <td>Undeploys an OSGi bundle from a running Virgo instance.</td>
+ </tr><tr>
+ <td>&lt;code&gt;virgo:refresh&lt;/code&gt; </td>
+ <td>Refreshs an already installed module on a running Virgo instance.</td>
+ </tr><tr>
+ <td>&lt;code&gt;virgo:bundleRefresh&lt;/code&gt; </td>
+ <td>Refreshs an already installed OSGi bundle on a running Virgo instance.</td>
+ </tr></table></div><div class="section" title="Simple example POM"><div class="titlepage"><div><div><h3 class="title"><a name="Simple_example_POM"></a>Simple example POM</h3></div></div></div><p>Once the plugin has been build and installed in the local Maven repository it can be used within a Maven project. Following is a simple example of a pom file that uses the Maven plugin.&amp;nbsp;
+&lt; pre&gt;&amp;lt;project xmlns="
+ <a class="ulink" href="http://maven.apache.org/POM/4.0.0&amp;quot" target="_top">http://maven.apache.org/POM/4.0.0&amp;quot</a>; xmlns:xsi="
+ <a class="ulink" href="http://www.w3.org/2001/XMLSchema-instance&amp;quot" target="_top">http://www.w3.org/2001/XMLSchema-instance&amp;quot</a>;
+ xsi:schemaLocation="
+ <a class="ulink" href="http://maven.apache.org/POM/4.0.0" target="_top">http://maven.apache.org/POM/4.0.0</a>
+ <a class="ulink" href="http://maven.apache.org/xsd/maven-4.0.0.xsd&amp;quot;&amp;amp;gt" target="_top">http://maven.apache.org/xsd/maven-4.0.0.xsd&amp;quot;&amp;amp;gt</a>;
+ &amp;lt;modelVersion&amp;gt;4.0.0&amp;lt;/modelVersion&amp;gt;
+ &amp;lt;groupId&amp;gt;org.example.osgi&amp;lt;/groupId&amp;gt;
+ &amp;lt;artifactId&amp;gt;test-bundle&amp;lt;/artifactId&amp;gt;
+ &amp;lt;version&amp;gt;0.0.1-SNAPSHOT&amp;lt;/version&amp;gt;
+ &amp;lt;packaging&amp;gt;bundle&amp;lt;/packaging&amp;gt;
+ &amp;lt;name&amp;gt;OSGi Test Bundle&amp;lt;/name&amp;gt;
+ &amp;lt;properties&amp;gt;
+ &amp;lt;project.build.sourceEncoding&amp;gt;UTF-8&amp;lt;/project.build.sourceEncoding&amp;gt;
+ &amp;lt;/properties&amp;gt;
+ &amp;lt;build&amp;gt;
+ &amp;lt;plugins&amp;gt;
+ &amp;lt;plugin&amp;gt;
+ &amp;lt;groupId&amp;gt;org.apache.felix&amp;lt;/groupId&amp;gt;
+ &amp;lt;artifactId&amp;gt;maven-bundle-plugin&amp;lt;/artifactId&amp;gt;
+ &amp;lt;version&amp;gt;2.3.6&amp;lt;/version&amp;gt;
+ &amp;lt;extensions&amp;gt;true&amp;lt;/extensions&amp;gt;
+ &amp;lt;configuration&amp;gt;
+ &amp;lt;instructions&amp;gt;
+ &amp;lt;Bundle-SymbolicName&amp;gt;${project.groupId}.${project.artifactId}&amp;lt;/Bundle-SymbolicName&amp;gt;
+ &amp;lt;Bundle-Name&amp;gt;${project.name}&amp;lt;/Bundle-Name&amp;gt;
+ &amp;lt;Bundle-Version&amp;gt;${project.version}&amp;lt;/Bundle-Version&amp;gt;
+ &amp;lt;/instructions&amp;gt;
+ &amp;lt;/configuration&amp;gt;
+ &amp;lt;/plugin&amp;gt;
+ &amp;lt;plugin&amp;gt;
+ &amp;lt;groupId&amp;gt;net.flybyte.virgo&amp;lt;/groupId&amp;gt;
+ &amp;lt;artifactId&amp;gt;virgo-maven-plugin&amp;lt;/artifactId&amp;gt;
+ &amp;lt;version&amp;gt;1.0.0&amp;lt;/version&amp;gt;
+ &amp;lt;configuration&amp;gt;
+ &amp;lt;virgoRoot&amp;gt;C:/Java/virgo-tomcat-server-3.0.2.RELEASE&amp;lt;/virgoRoot&amp;gt;
+ &amp;lt;/configuration&amp;gt;
+ &amp;lt;/plugin&amp;gt;
+ &amp;lt;/plugins&amp;gt;
+ &amp;lt;/build&amp;gt;
+&amp; lt;/project&amp;gt;
+&lt; /pre&gt;
+ More examples can be found in the documentation. Following are some exemplary Maven commands.
+&lt; pre&gt;mvn virgo:start &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;-- will start a Virgo instance
+ mvn clean package virgo:deploy &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;-- will create an artifact and deploy it to Virgo&lt;/pre&gt;
+ </p></div></div><div class="navfooter"><hr><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="ch11s03.html">Prev</a>&nbsp;</td><td align="center" width="20%"><a accesskey="u" href="ch11.html">Up</a></td><td align="right" width="40%">&nbsp;<a accesskey="n" href="ch11s05.html">Next</a></td></tr><tr><td valign="top" align="left" width="40%">&nbsp;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td valign="top" align="right" width="40%">&nbsp;</td></tr></table></div></body></html> \ No newline at end of file
diff --git a/org.eclipse.virgo.ide.doc/tooling/ch11s05.html b/org.eclipse.virgo.ide.doc/tooling/ch11s05.html
new file mode 100644
index 0000000..a07307e
--- /dev/null
+++ b/org.eclipse.virgo.ide.doc/tooling/ch11s05.html
@@ -0,0 +1,3 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Importing Virgo Projects into Eclipse</title><meta content="DocBook XSL Stylesheets V1.76.0" name="generator"><link rel="home" href="index.html" title="Virgo Tools Guide"><link rel="up" href="ch11.html" title="Chapter&nbsp;11.&nbsp;Installation and Release Notes"><link rel="prev" href="ch11s04.html" title="Maven plugin"><link rel="next" href="ch11s06.html" title="FAQ"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table summary="Navigation header" width="100%"><tr><td align="left" width="20%"><a accesskey="p" href="ch11s04.html">Prev</a>&nbsp;</td><th align="center" width="60%">&nbsp;</th><td align="right" width="20%">&nbsp;<a accesskey="n" href="ch11s06.html">Next</a></td></tr></table><hr></div><div class="section" title="Importing Virgo Projects into Eclipse"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Importing_Virgo_Projects_into_Eclipse"></a>Importing Virgo Projects into Eclipse</h2></div></div></div><p>See
+ <a class="ulink" href="http://wiki.eclipse.org/Virgo/Committers#Eclipse_Setup" target="_top">Eclipse Setup</a> under the Committers tab.
+ </p></div><div class="navfooter"><hr><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="ch11s04.html">Prev</a>&nbsp;</td><td align="center" width="20%"><a accesskey="u" href="ch11.html">Up</a></td><td align="right" width="40%">&nbsp;<a accesskey="n" href="ch11s06.html">Next</a></td></tr><tr><td valign="top" align="left" width="40%">&nbsp;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td valign="top" align="right" width="40%">&nbsp;</td></tr></table></div></body></html> \ No newline at end of file
diff --git a/org.eclipse.virgo.ide.doc/tooling/ch11s06.html b/org.eclipse.virgo.ide.doc/tooling/ch11s06.html
new file mode 100644
index 0000000..2bd7341
--- /dev/null
+++ b/org.eclipse.virgo.ide.doc/tooling/ch11s06.html
@@ -0,0 +1,32 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>FAQ</title><meta content="DocBook XSL Stylesheets V1.76.0" name="generator"><link rel="home" href="index.html" title="Virgo Tools Guide"><link rel="up" href="ch11.html" title="Chapter&nbsp;11.&nbsp;Installation and Release Notes"><link rel="prev" href="ch11s05.html" title="Importing Virgo Projects into Eclipse"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table summary="Navigation header" width="100%"><tr><td align="left" width="20%"><a accesskey="p" href="ch11s05.html">Prev</a>&nbsp;</td><th align="center" width="60%">&nbsp;</th><td align="right" width="20%">&nbsp;</td></tr></table><hr></div><div class="section" title="FAQ"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="FAQ"></a>FAQ</h2></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
+ <span class="bold"><strong>How do I turn on (or turn off) automatic Manifest generation? (Bundlor)</strong></span>
+ </p></li></ul></div><p>Bundlor is not used by default, you must create you own template file and then turn on incremental manifest generation. Right-click your Virgo project, select the Virgo subcategory from the context menu and select Enable (or Disable) Incremental Generation of MANIFEST.MF File. You can also modify this setting from the Overview page of the Bundle Manifest Editor, under the Bundle Actions section.</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
+ <span class="bold"><strong>Sometimes I'd like to automatically update my Manifest without having to turn on the automatic Manifest setting. How can I do this?</strong></span>
+ </p></li></ul></div><p>Right-click your Virgo project, select the Virgo subcategory from the context menu and select Run Generation of MANIFEST.MF File. This command has a keybinding that you may customize through Eclipse's Keys preferences. You can also perform an automatic update of the Manifest from the Overview page of the Bundle Manifest Editor, under the Bundle Actions section.</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
+ <span class="bold"><strong>Automatic Manifest generation doesn't appear to picking up changes to my source files.</strong></span>
+ </p></li></ul></div><p>Sometimes Manifest generation may behave differently depending on whether the tools are configured to scan source folders or to scan output folders. To modify this setting right-click your Virgo project, select properties and select the Virgo -&gt; Manifest Generation subcategory. If Manifest generation isn't working correctly for you, uncheck the "Scan output folders instead of source folders to generate MANIFEST.MF" setting and re-run the Manifest generation. If your Manifest is not being properly generated under either setting, please file a bug.</p><p>
+ <a class="ulink" href="/wiki/image:virgo-manifest-generation.png" target="_top">image:virgo-manifest-generation.png</a>
+ </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
+ <span class="bold"><strong>My Virgo project is validating its dependencies against the wrong Virgo runtime! How do I manage server runtimes for my Virgo projects?</strong></span>
+ </p></li></ul></div><p>If you've deployed your Virgo projects to multiple Virgo runtimes the tools will associate the project with each runtime, but will only validate against one runtime. In order to manage which Virgo runtime your bundle dependencies are validated against, right-click on the project, select Properties and select the Targeted Runtimes category. From this dialog you can give priority to a particular Virgo runtime.</p><p>
+ <a class="ulink" href="/wiki/image:virgo-targeted-runtimes.png" target="_top">image:virgo-targeted-runtimes.png</a>
+ </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
+ <span class="bold"><strong>How do I create a Web Application Bundle?</strong></span>
+ </p></li></ul></div><p>To create a web application bundle choose to create a normal bundle project, but on the Bundle Content panel select the additional property entitled "Web Application Bundle". On the Bundle Properties panel enter a suitable context path for the application as the Web-ContextPath.</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
+ <span class="bold"><strong>How do I export a Web Application Bundle (WAB)? Export -&gt; Bundle Project produces an incorrect product.</strong></span>
+ </p></li></ul></div><p>To export a WAB invoke Export -&gt; Web -&gt; WAR File</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
+ <span class="bold"><strong>Virgo Jetty Server (VJS) does not startup correctly and I see a 503 error when I go to
+ <a class="ulink" href="http://localhost:8080/admin" target="_top">http://localhost:8080/admin</a>
+ </strong></span>
+ </p></li></ul></div><p>This can happen after starting VJS clean because VJS is looking for a directory at $KERNEL_HOME/work/tmp but no tmp directory exists. A workaround is to start VJS from the command line without the -clean command, which will create the tmp directory. VJS can then be used from the tools. This bug and workaround are documented at
+ <a class="ulink" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=384288" target="_top">https://bugs.eclipse.org/bugs/show_bug.cgi?id=384288</a>
+ </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
+ <span class="bold"><strong>Can I get a deeper look into the state of the server from the Virgo Tools?</strong></span>
+ </p></li></ul></div><p>Yes! If you double-click a Virgo server runtime in the Servers view, you'll open up the server editor, with several pages of information. The Repository, Bundle Overview, Bundle Dependency Graph, and Server Console pages all give valuable insight into the state of the server. The Virgo perspective also provides several views into the Virgo Repository, Virgo Properties and Virgo Logs. See the Virgo Tooling Guide for more information.</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
+ <span class="bold"><strong>I want to install Virgo Tools. Should I install all of this neat looking stuff under Virgo Add-ons?</strong></span>
+ </p></li></ul></div><p>We really don't recommend doing so (see
+ <a class="link" href="ch11s02.html#Install_Virgo" title="Install Virgo">Install_Virgo</a>). Select only Virgo Tooling and Eclipse will take care of installing anything the tooling relies on.
+ </p><p>
+ <a class="ulink" href="/wiki/Category:Virgo" target="_top">Category:Virgo</a>
+ <a class="ulink" href="/wiki/Category:EclipseRT" target="_top">Category:EclipseRT</a>&lt;/rev&gt;&lt;/revisions&gt;&lt;/page&gt;&lt;/pages&gt;&lt;/query&gt;&lt;/api&gt;
+ </p></div><div class="navfooter"><hr><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="ch11s05.html">Prev</a>&nbsp;</td><td align="center" width="20%"><a accesskey="u" href="ch11.html">Up</a></td><td align="right" width="40%">&nbsp;</td></tr><tr><td valign="top" align="left" width="40%">&nbsp;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td valign="top" align="right" width="40%">&nbsp;</td></tr></table></div></body></html> \ No newline at end of file
diff --git a/org.eclipse.virgo.ide.doc/tooling/images/bundle-references.png b/org.eclipse.virgo.ide.doc/tooling/images/bundle-references.png
new file mode 100644
index 0000000..ba5b7fc
--- /dev/null
+++ b/org.eclipse.virgo.ide.doc/tooling/images/bundle-references.png
Binary files differ
diff --git a/org.eclipse.virgo.ide.doc/tooling/images/create-par-project.png b/org.eclipse.virgo.ide.doc/tooling/images/create-par-project.png
new file mode 100644
index 0000000..f6cc48e
--- /dev/null
+++ b/org.eclipse.virgo.ide.doc/tooling/images/create-par-project.png
Binary files differ
diff --git a/org.eclipse.virgo.ide.doc/tooling/images/create-plan-project.png b/org.eclipse.virgo.ide.doc/tooling/images/create-plan-project.png
new file mode 100644
index 0000000..8beb2e9
--- /dev/null
+++ b/org.eclipse.virgo.ide.doc/tooling/images/create-plan-project.png
Binary files differ
diff --git a/org.eclipse.virgo.ide.doc/tooling/images/new-plan-project.png b/org.eclipse.virgo.ide.doc/tooling/images/new-plan-project.png
new file mode 100644
index 0000000..8d79050
--- /dev/null
+++ b/org.eclipse.virgo.ide.doc/tooling/images/new-plan-project.png
Binary files differ
diff --git a/org.eclipse.virgo.ide.doc/tooling/images/par-content.png b/org.eclipse.virgo.ide.doc/tooling/images/par-content.png
new file mode 100644
index 0000000..749657f
--- /dev/null
+++ b/org.eclipse.virgo.ide.doc/tooling/images/par-content.png
Binary files differ
diff --git a/org.eclipse.virgo.ide.doc/tooling/index.html b/org.eclipse.virgo.ide.doc/tooling/index.html
index 727bb28..e0601d3 100644
--- a/org.eclipse.virgo.ide.doc/tooling/index.html
+++ b/org.eclipse.virgo.ide.doc/tooling/index.html
@@ -1,3 +1,389 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Virgo Tools Guide</title><meta content="DocBook XSL Stylesheets V1.76.0" name="generator"><link rel="home" href="index.html" title="Virgo Tools Guide"><link rel="next" href="ch01.html" title="Chapter&nbsp;1.&nbsp;Tooling"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table summary="Navigation header" width="100%"><tr><td align="left" width="20%">&nbsp;</td><th align="center" width="60%">&nbsp;</th><td align="right" width="20%">&nbsp;<a accesskey="n" href="ch01.html">Next</a></td></tr></table><hr></div><div class="book" title="Virgo Tools Guide"><div class="titlepage"><div><div><h1 class="title"><a name="N10001"></a>Virgo Tools Guide</h1></div><div><div class="authorgroup"><div class="author"><h3 class="author"><span class="firstname">Ramnivas</span> <span class="surname">Laddad</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Colin</span> <span class="surname">Yates</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Sam</span> <span class="surname">Brannen</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Rob</span> <span class="surname">Harrop</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Christian</span> <span class="surname">Dupuis</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Andy</span> <span class="surname">Wilkinson</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Glyn</span> <span class="surname">Normington</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Steve</span> <span class="surname">Powell</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Christopher</span> <span class="surname">Frost</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Miles</span> <span class="surname">Parker</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Leo</span> <span class="surname">Dos Santos</span></h3></div><div class="author"><h3 class="author"><span class="firstname">GianMaria</span> <span class="surname">Romanato</span></h3></div></div></div><div><p class="releaseinfo">3.5.0</p></div><div><div class="legalnotice" title="Legal Notice"><a name="N10058"></a><p>Copyright &copy; 2012 VMware Inc.</p><p>Copyright &copy; 2016 GianMaria Romanato</p></div></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="ch01.html">1. Tooling</a></span></dt><dt><span class="chapter"><a href="ch02.html">2. What's New</a></span></dt><dd><dl><dt><span class="section"><a href="ch02.html#1.5.0_Release">1.5.0 Release</a></span></dt><dd><dl><dt><span class="section"><a href="ch02.html#UI_15">UI</a></span></dt></dl></dd><dt><span class="section"><a href="ch02s02.html">1.0.0 Release</a></span></dt><dd><dl><dt><span class="section"><a href="ch02s02.html#UI">UI</a></span></dt><dt><span class="section"><a href="ch02s02.html#Quality">Quality</a></span></dt></dl></dd><dt><span class="section"><a href="ch02s03.html">1.0.0 M4</a></span></dt><dd><dl><dt><span class="section"><a href="ch02s03.html#Improved_Server_Support">Improved Server Support</a></span></dt><dt><span class="section"><a href="ch02s03.html#UI_2">UI</a></span></dt><dt><span class="section"><a href="ch02s03.html#Documentation_and_Help">Documentation and Help</a></span></dt><dt><span class="section"><a href="ch02s03.html#Installation_Process">Installation Process</a></span></dt><dt><span class="section"><a href="ch02s03.html#Quality_2">Quality</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="ch03.html">3. Running a Virgo Runtime Environment</a></span></dt><dt><span class="chapter"><a href="ch04.html">4. Server Perspective and Views</a></span></dt><dd><dl><dt><span class="section"><a href="ch04.html#server-perspective">Virgo Perspective</a></span></dt><dt><span class="section"><a href="ch04s02.html">Views</a></span></dt><dd><dl><dt><span class="section"><a href="ch04s02.html#views-respository">Repository View</a></span></dt><dt><span class="section"><a href="ch04s02.html#views-properties">Properties View</a></span></dt><dt><span class="section"><a href="ch04s02.html#views-logs">Logs View</a></span></dt><dt><span class="section"><a href="ch04s02.html#views-console">Console View</a></span></dt></dl></dd><dt><span class="section"><a href="ch04s03.html">Virgo Server Projects</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch05.html">5. Server Editor</a></span></dt><dd><dl><dt><span class="section"><a href="ch05.html#N10229">Overview Page</a></span></dt><dt><span class="section"><a href="ch05s02.html">Repository Page</a></span></dt><dt><span class="section"><a href="ch05s03.html">Bundle Overview Page</a></span></dt><dt><span class="section"><a href="ch05s04.html">Bundle Dependency Graph Page</a></span></dt><dt><span class="section"><a href="ch05s05.html">Server Console Page</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch06.html">6. Developing OSGi Bundles</a></span></dt><dd><dl><dt><span class="section"><a href="ch06.html#tooling-developing-resolving-bundle-dependencies">Resolving Bundle Dependencies</a></span></dt><dt><span class="section"><a href="ch06s02.html">Editing the Manifest</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch07.html">7. Developing OSGi Bundles using Plug-in Development Environment
- (PDE)
- </a></span></dt><dd><dl><dt><span class="section"><a href="ch07.html#pde_dependencies">Resolving Bundle Dependencies</a></span></dt><dt><span class="section"><a href="ch07s02.html">Server Runtime Wizard</a></span></dt><dt><span class="section"><a href="ch07s03.html">PDE Bundle projects</a></span></dt><dt><span class="section"><a href="ch07s04.html">Publishing</a></span></dt><dt><span class="section"><a href="ch07s05.html">Migration actions</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch08.html">8. Developing PARs</a></span></dt><dt><span class="chapter"><a href="ch09.html">9. Deploying Applications</a></span></dt><dt><span class="chapter"><a href="ch10.html">10. Installation and Release Notes</a></span></dt><dd><dl><dt><span class="section"><a href="ch10.html#Features">Features</a></span></dt><dt><span class="section"><a href="ch10s02.html">Installation</a></span></dt><dd><dl><dt><span class="section"><a href="ch10s02.html#Install_Eclipse">Install Eclipse</a></span></dt><dt><span class="section"><a href="ch10s02.html#Install_Virgo">Install Virgo</a></span></dt><dt><span class="section"><a href="ch10s02.html#Update_Sites">Update Sites</a></span></dt></dl></dd><dt><span class="section"><a href="ch10s03.html">Known Issues</a></span></dt><dt><span class="section"><a href="ch10s04.html">Maven plugin</a></span></dt><dd><dl><dt><span class="section"><a href="ch10s04.html#Build">Build</a></span></dt><dt><span class="section"><a href="ch10s04.html#Goals">Goals</a></span></dt><dt><span class="section"><a href="ch10s04.html#Simple_example_POM">Simple example POM</a></span></dt></dl></dd><dt><span class="section"><a href="ch10s05.html">Importing Virgo Projects into Eclipse</a></span></dt><dt><span class="section"><a href="ch10s06.html">FAQ</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%">&nbsp;</td><td align="center" width="20%">&nbsp;</td><td align="right" width="40%">&nbsp;<a accesskey="n" href="ch01.html">Next</a></td></tr></table></div></body></html> \ No newline at end of file
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Virgo Tools Guide</title>
+<meta content="DocBook XSL Stylesheets V1.76.0" name="generator">
+<link rel="home" href="index.html" title="Virgo Tools Guide">
+<link rel="next" href="ch01.html" title="Chapter&nbsp;1.&nbsp;Tooling">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084"
+ alink="#0000FF">
+ <div class="navheader">
+ <table summary="Navigation header" width="100%">
+ <tr>
+ <td align="left" width="20%">&nbsp;</td>
+ <th align="center" width="60%">&nbsp;</th>
+ <td align="right" width="20%">&nbsp;<a accesskey="n"
+ href="ch01.html">Next</a></td>
+ </tr>
+ </table>
+ <hr>
+ </div>
+ <div class="book" title="Virgo Tools Guide">
+ <div class="titlepage">
+ <div>
+ <div>
+ <h1 class="title">
+ <a name="N10001"></a>Virgo Tools Guide
+ </h1>
+ </div>
+ <div>
+ <div class="authorgroup">
+ <div class="author">
+ <h3 class="author">
+ <span class="firstname">Ramnivas</span> <span class="surname">Laddad</span>
+ </h3>
+ </div>
+ <div class="author">
+ <h3 class="author">
+ <span class="firstname">Colin</span> <span class="surname">Yates</span>
+ </h3>
+ </div>
+ <div class="author">
+ <h3 class="author">
+ <span class="firstname">Sam</span> <span class="surname">Brannen</span>
+ </h3>
+ </div>
+ <div class="author">
+ <h3 class="author">
+ <span class="firstname">Rob</span> <span class="surname">Harrop</span>
+ </h3>
+ </div>
+ <div class="author">
+ <h3 class="author">
+ <span class="firstname">Christian</span> <span class="surname">Dupuis</span>
+ </h3>
+ </div>
+ <div class="author">
+ <h3 class="author">
+ <span class="firstname">Andy</span> <span class="surname">Wilkinson</span>
+ </h3>
+ </div>
+ <div class="author">
+ <h3 class="author">
+ <span class="firstname">Glyn</span> <span class="surname">Normington</span>
+ </h3>
+ </div>
+ <div class="author">
+ <h3 class="author">
+ <span class="firstname">Steve</span> <span class="surname">Powell</span>
+ </h3>
+ </div>
+ <div class="author">
+ <h3 class="author">
+ <span class="firstname">Christopher</span> <span class="surname">Frost</span>
+ </h3>
+ </div>
+ <div class="author">
+ <h3 class="author">
+ <span class="firstname">Miles</span> <span class="surname">Parker</span>
+ </h3>
+ </div>
+ <div class="author">
+ <h3 class="author">
+ <span class="firstname">Leo</span> <span class="surname">Dos
+ Santos</span>
+ </h3>
+ </div>
+ <div class="author">
+ <h3 class="author">
+ <span class="firstname">GianMaria</span> <span class="surname">Romanato</span>
+ </h3>
+ </div>
+ </div>
+ </div>
+ <div>
+ <p class="releaseinfo">3.5.0</p>
+ </div>
+ <div>
+ <div class="legalnotice" title="Legal Notice">
+ <a name="N10058"></a>
+ <p>Copyright &copy; 2012 VMware Inc.</p>
+ <p>Copyright &copy; 2016 GianMaria Romanato</p>
+ </div>
+ </div>
+ </div>
+ <hr>
+ </div>
+ <div class="toc">
+ <p>
+ <b>Table of Contents</b>
+ </p>
+ <dl>
+ <dt>
+ <span class="chapter"><a href="ch01.html">1. Tooling</a></span>
+ </dt>
+ <dt>
+ <span class="chapter"><a href="ch02.html">2. What's New</a></span>
+ </dt>
+ <dd>
+ <dl>
+ <dt>
+ <span class="section"><a href="ch02.html#1.5.0_Release">1.5.0
+ Release</a></span>
+ </dt>
+ <dd>
+ <dl>
+ <dt>
+ <span class="section"><a href="ch02.html#UI_15">UI</a></span>
+ </dt>
+ </dl>
+ </dd>
+ <dt>
+ <span class="section"><a href="ch02s02.html">1.0.0
+ Release</a></span>
+ </dt>
+ <dd>
+ <dl>
+ <dt>
+ <span class="section"><a href="ch02s02.html#UI">UI</a></span>
+ </dt>
+ <dt>
+ <span class="section"><a href="ch02s02.html#Quality">Quality</a></span>
+ </dt>
+ </dl>
+ </dd>
+ <dt>
+ <span class="section"><a href="ch02s03.html">1.0.0 M4</a></span>
+ </dt>
+ <dd>
+ <dl>
+ <dt>
+ <span class="section"><a
+ href="ch02s03.html#Improved_Server_Support">Improved
+ Server Support</a></span>
+ </dt>
+ <dt>
+ <span class="section"><a href="ch02s03.html#UI_2">UI</a></span>
+ </dt>
+ <dt>
+ <span class="section"><a
+ href="ch02s03.html#Documentation_and_Help">Documentation
+ and Help</a></span>
+ </dt>
+ <dt>
+ <span class="section"><a
+ href="ch02s03.html#Installation_Process">Installation
+ Process</a></span>
+ </dt>
+ <dt>
+ <span class="section"><a href="ch02s03.html#Quality_2">Quality</a></span>
+ </dt>
+ </dl>
+ </dd>
+ </dl>
+ </dd>
+ <dt>
+ <span class="chapter"><a href="ch03.html">3. Running a
+ Virgo Runtime Environment</a></span>
+ </dt>
+ <dt>
+ <span class="chapter"><a href="ch04.html">4. Server
+ Perspective and Views</a></span>
+ </dt>
+ <dd>
+ <dl>
+ <dt>
+ <span class="section"><a
+ href="ch04.html#server-perspective">Virgo Perspective</a></span>
+ </dt>
+ <dt>
+ <span class="section"><a href="ch04s02.html">Views</a></span>
+ </dt>
+ <dd>
+ <dl>
+ <dt>
+ <span class="section"><a
+ href="ch04s02.html#views-respository">Repository View</a></span>
+ </dt>
+ <dt>
+ <span class="section"><a
+ href="ch04s02.html#views-properties">Properties View</a></span>
+ </dt>
+ <dt>
+ <span class="section"><a href="ch04s02.html#views-logs">Logs
+ View</a></span>
+ </dt>
+ <dt>
+ <span class="section"><a
+ href="ch04s02.html#views-console">Console View</a></span>
+ </dt>
+ </dl>
+ </dd>
+ <dt>
+ <span class="section"><a href="ch04s03.html">Virgo
+ Server Projects</a></span>
+ </dt>
+ </dl>
+ </dd>
+ <dt>
+ <span class="chapter"><a href="ch05.html">5. Server
+ Editor</a></span>
+ </dt>
+ <dd>
+ <dl>
+ <dt>
+ <span class="section"><a href="ch05.html#N1022F">Overview
+ Page</a></span>
+ </dt>
+ <dt>
+ <span class="section"><a href="ch05s02.html">Repository
+ Page</a></span>
+ </dt>
+ <dt>
+ <span class="section"><a href="ch05s03.html">Bundle
+ Overview Page</a></span>
+ </dt>
+ <dt>
+ <span class="section"><a href="ch05s04.html">Bundle
+ Dependency Graph Page</a></span>
+ </dt>
+ <dt>
+ <span class="section"><a href="ch05s05.html">Server
+ Console Page</a></span>
+ </dt>
+ </dl>
+ </dd>
+ <dt>
+ <span class="chapter"><a href="ch06.html">6. Developing
+ OSGi Bundles</a></span>
+ </dt>
+ <dd>
+ <dl>
+ <dt>
+ <span class="section"><a
+ href="ch06.html#tooling-developing-resolving-bundle-dependencies">Resolving
+ Bundle Dependencies</a></span>
+ </dt>
+ <dt>
+ <span class="section"><a href="ch06s02.html">Editing
+ the Manifest</a></span>
+ </dt>
+ </dl>
+ </dd>
+ <dt>
+ <span class="chapter"><a href="ch07.html">7. Developing
+ OSGi Bundles using Plug-in Development Environment (PDE) </a></span>
+ </dt>
+ <dd>
+ <dl>
+ <dt>
+ <span class="section"><a href="ch07.html#pde_dependencies">Resolving
+ Bundle Dependencies</a></span>
+ </dt>
+ <dt>
+ <span class="section"><a href="ch07s02.html">Server
+ Runtime Wizard</a></span>
+ </dt>
+ <dt>
+ <span class="section"><a href="ch07s03.html">PDE
+ Bundle projects</a></span>
+ </dt>
+ <dt>
+ <span class="section"><a href="ch07s04.html">Publishing</a></span>
+ </dt>
+ <dt>
+ <span class="section"><a href="ch07s05.html">Migration
+ actions</a></span>
+ </dt>
+ </dl>
+ </dd>
+ <dt>
+ <span class="chapter"><a href="ch08.html">8. Developing
+ Plans</a></span>
+ </dt>
+ <dd>
+ <dl>
+ <dt>
+ <span class="section"><a href="ch08.html#planBenefits">Benefit
+ of using Plan files</a></span>
+ </dt>
+ <dt>
+ <span class="section"><a href="ch08s02.html">Discovery
+ of Plan files in the workspace</a></span>
+ </dt>
+ </dl>
+ </dd>
+ <dt>
+ <span class="chapter"><a href="ch09.html">9. Developing
+ PARs</a></span>
+ </dt>
+ <dt>
+ <span class="chapter"><a href="ch10.html">10. Deploying
+ Applications</a></span>
+ </dt>
+ <dt>
+ <span class="chapter"><a href="ch11.html">11.
+ Installation and Release Notes</a></span>
+ </dt>
+ <dd>
+ <dl>
+ <dt>
+ <span class="section"><a href="ch11.html#Features">Features</a></span>
+ </dt>
+ <dt>
+ <span class="section"><a href="ch11s02.html">Installation</a></span>
+ </dt>
+ <dd>
+ <dl>
+ <dt>
+ <span class="section"><a
+ href="ch11s02.html#Install_Eclipse">Install Eclipse</a></span>
+ </dt>
+ <dt>
+ <span class="section"><a
+ href="ch11s02.html#Install_Virgo">Install Virgo</a></span>
+ </dt>
+ <dt>
+ <span class="section"><a
+ href="ch11s02.html#Update_Sites">Update Sites</a></span>
+ </dt>
+ </dl>
+ </dd>
+ <dt>
+ <span class="section"><a href="ch11s03.html">Known
+ Issues</a></span>
+ </dt>
+ <dt>
+ <span class="section"><a href="ch11s04.html">Maven
+ plugin</a></span>
+ </dt>
+ <dd>
+ <dl>
+ <dt>
+ <span class="section"><a href="ch11s04.html#Build">Build</a></span>
+ </dt>
+ <dt>
+ <span class="section"><a href="ch11s04.html#Goals">Goals</a></span>
+ </dt>
+ <dt>
+ <span class="section"><a
+ href="ch11s04.html#Simple_example_POM">Simple example POM</a></span>
+ </dt>
+ </dl>
+ </dd>
+ <dt>
+ <span class="section"><a href="ch11s05.html">Importing
+ Virgo Projects into Eclipse</a></span>
+ </dt>
+ <dt>
+ <span class="section"><a href="ch11s06.html">FAQ</a></span>
+ </dt>
+ </dl>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="navfooter">
+ <hr>
+ <table summary="Navigation footer" width="100%">
+ <tr>
+ <td align="left" width="40%">&nbsp;</td>
+ <td align="center" width="20%">&nbsp;</td>
+ <td align="right" width="40%">&nbsp;<a accesskey="n"
+ href="ch01.html">Next</a></td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html> \ No newline at end of file
diff --git a/org.eclipse.virgo.ide.doc/tooling/toc.xml b/org.eclipse.virgo.ide.doc/tooling/toc.xml
index a6e23cc..1c5dcbf 100644
--- a/org.eclipse.virgo.ide.doc/tooling/toc.xml
+++ b/org.eclipse.virgo.ide.doc/tooling/toc.xml
@@ -1 +1 @@
-<toc topic="tooling/index.html" label="Virgo Tools Guide"><topic href="tooling/ch01.html" label="Tooling"></topic><topic href="tooling/ch02.html" label="What's New"><topic href="tooling/ch02.html#1.5.0_Release" label="1.5.0 Release"><topic href="tooling/ch02.html#UI_15" label="UI"><topic href="tooling/ch02.html#Wizards" label="Wizards"><topic href="tooling/ch02.html#Server_Runtime_Wizard" label="Server Runtime Wizard"></topic><topic href="tooling/ch02.html#PDE_Project_Wizard" label="PDE Project Wizard"></topic></topic><topic href="tooling/ch02.html#Server_Editor" label="Server Editor"></topic></topic></topic><topic href="tooling/ch02s02.html" label="1.0.0 Release"><topic href="tooling/ch02s02.html#UI" label="UI"><topic href="tooling/ch02s02.html#Views" label="Views"><topic href="tooling/ch02s02.html#Properties_View" label="Properties View"></topic><topic href="tooling/ch02s02.html#Logs_View" label="Logs View"></topic></topic><topic href="tooling/ch02s02.html#Virgo_Server_Projects" label="Virgo Server Projects"></topic></topic><topic href="tooling/ch02s02.html#Quality" label="Quality"></topic></topic><topic href="tooling/ch02s03.html" label="1.0.0 M4"><topic href="tooling/ch02s03.html#Improved_Server_Support" label="Improved Server Support"></topic><topic href="tooling/ch02s03.html#UI_2" label="UI"><topic href="tooling/ch02s03.html#Virgo_Perspective" label="Virgo Perspective"></topic><topic href="tooling/ch02s03.html#Views_2" label="Views"><topic href="tooling/ch02s03.html#Outline_View" label="Outline View"></topic><topic href="tooling/ch02s03.html#Artifacts_View" label="Artifacts View"></topic><topic href="tooling/ch02s03.html#Servers_View" label="Servers View"></topic></topic></topic><topic href="tooling/ch02s03.html#Documentation_and_Help" label="Documentation and Help"></topic><topic href="tooling/ch02s03.html#Installation_Process" label="Installation Process"></topic><topic href="tooling/ch02s03.html#Quality_2" label="Quality"></topic></topic></topic><topic href="tooling/ch03.html" label="Running a Virgo Runtime Environment"></topic><topic href="tooling/ch04.html" label="Server Perspective and Views"><topic href="tooling/ch04.html#server-perspective" label="Virgo Perspective"></topic><topic href="tooling/ch04s02.html" label="Views"><topic href="tooling/ch04s02.html#views-respository" label="Repository View"></topic><topic href="tooling/ch04s02.html#views-properties" label="Properties View"></topic><topic href="tooling/ch04s02.html#views-logs" label="Logs View"></topic><topic href="tooling/ch04s02.html#views-console" label="Console View"></topic></topic><topic href="tooling/ch04s03.html" label="Virgo Server Projects"></topic></topic><topic href="tooling/ch05.html" label="Server Editor"><topic href="tooling/ch05.html#N10229" label="Overview Page"></topic><topic href="tooling/ch05s02.html" label="Repository Page"></topic><topic href="tooling/ch05s03.html" label="Bundle Overview Page"></topic><topic href="tooling/ch05s04.html" label="Bundle Dependency Graph Page"></topic><topic href="tooling/ch05s05.html" label="Server Console Page"></topic></topic><topic href="tooling/ch06.html" label="Developing OSGi Bundles"><topic href="tooling/ch06.html#tooling-developing-resolving-bundle-dependencies" label="Resolving Bundle Dependencies"></topic><topic href="tooling/ch06s02.html" label="Editing the Manifest"></topic></topic><topic href="tooling/ch07.html" label="Developing OSGi Bundles using Plug-in Development Environment (PDE)"><topic href="tooling/ch07.html#pde_dependencies" label="Resolving Bundle Dependencies"></topic><topic href="tooling/ch07s02.html" label="Server Runtime Wizard"></topic><topic href="tooling/ch07s03.html" label="PDE Bundle projects"></topic><topic href="tooling/ch07s04.html" label="Publishing"></topic><topic href="tooling/ch07s05.html" label="Migration actions"></topic></topic><topic href="tooling/ch08.html" label="Developing PARs"></topic><topic href="tooling/ch09.html" label="Deploying Applications"></topic><topic href="tooling/ch10.html" label="Installation and Release Notes"><topic href="tooling/ch10.html#Features" label="Features"></topic><topic href="tooling/ch10s02.html" label="Installation"><topic href="tooling/ch10s02.html#Install_Eclipse" label="Install Eclipse"></topic><topic href="tooling/ch10s02.html#Install_Virgo" label="Install Virgo"></topic><topic href="tooling/ch10s02.html#Update_Sites" label="Update Sites"></topic></topic><topic href="tooling/ch10s03.html" label="Known Issues"></topic><topic href="tooling/ch10s04.html" label="Maven plugin"><topic href="tooling/ch10s04.html#Build" label="Build"></topic><topic href="tooling/ch10s04.html#Goals" label="Goals"></topic><topic href="tooling/ch10s04.html#Simple_example_POM" label="Simple example POM"></topic></topic><topic href="tooling/ch10s05.html" label="Importing Virgo Projects into Eclipse"></topic><topic href="tooling/ch10s06.html" label="FAQ"></topic></topic></toc> \ No newline at end of file
+<toc topic="tooling/index.html" label="Virgo Tools Guide"><topic href="tooling/ch01.html" label="Tooling"></topic><topic href="tooling/ch02.html" label="What's New"><topic href="tooling/ch02.html#1.5.0_Release" label="1.5.0 Release"><topic href="tooling/ch02.html#UI_15" label="UI"><topic href="tooling/ch02.html#Wizards" label="Wizards"><topic href="tooling/ch02.html#Server_Runtime_Wizard" label="Server Runtime Wizard"></topic><topic href="tooling/ch02.html#PDE_Project_Wizard" label="PDE Project Wizard"></topic><topic href="tooling/ch02.html#Plan_Project_Wizard" label="Plan Project Wizard"></topic></topic><topic href="tooling/ch02.html#Server_Editor" label="Server Editor"></topic></topic></topic><topic href="tooling/ch02s02.html" label="1.0.0 Release"><topic href="tooling/ch02s02.html#UI" label="UI"><topic href="tooling/ch02s02.html#Views" label="Views"><topic href="tooling/ch02s02.html#Properties_View" label="Properties View"></topic><topic href="tooling/ch02s02.html#Logs_View" label="Logs View"></topic></topic><topic href="tooling/ch02s02.html#Virgo_Server_Projects" label="Virgo Server Projects"></topic></topic><topic href="tooling/ch02s02.html#Quality" label="Quality"></topic></topic><topic href="tooling/ch02s03.html" label="1.0.0 M4"><topic href="tooling/ch02s03.html#Improved_Server_Support" label="Improved Server Support"></topic><topic href="tooling/ch02s03.html#UI_2" label="UI"><topic href="tooling/ch02s03.html#Virgo_Perspective" label="Virgo Perspective"></topic><topic href="tooling/ch02s03.html#Views_2" label="Views"><topic href="tooling/ch02s03.html#Outline_View" label="Outline View"></topic><topic href="tooling/ch02s03.html#Artifacts_View" label="Artifacts View"></topic><topic href="tooling/ch02s03.html#Servers_View" label="Servers View"></topic></topic></topic><topic href="tooling/ch02s03.html#Documentation_and_Help" label="Documentation and Help"></topic><topic href="tooling/ch02s03.html#Installation_Process" label="Installation Process"></topic><topic href="tooling/ch02s03.html#Quality_2" label="Quality"></topic></topic></topic><topic href="tooling/ch03.html" label="Running a Virgo Runtime Environment"></topic><topic href="tooling/ch04.html" label="Server Perspective and Views"><topic href="tooling/ch04.html#server-perspective" label="Virgo Perspective"></topic><topic href="tooling/ch04s02.html" label="Views"><topic href="tooling/ch04s02.html#views-respository" label="Repository View"></topic><topic href="tooling/ch04s02.html#views-properties" label="Properties View"></topic><topic href="tooling/ch04s02.html#views-logs" label="Logs View"></topic><topic href="tooling/ch04s02.html#views-console" label="Console View"></topic></topic><topic href="tooling/ch04s03.html" label="Virgo Server Projects"></topic></topic><topic href="tooling/ch05.html" label="Server Editor"><topic href="tooling/ch05.html#N1022F" label="Overview Page"></topic><topic href="tooling/ch05s02.html" label="Repository Page"></topic><topic href="tooling/ch05s03.html" label="Bundle Overview Page"></topic><topic href="tooling/ch05s04.html" label="Bundle Dependency Graph Page"></topic><topic href="tooling/ch05s05.html" label="Server Console Page"></topic></topic><topic href="tooling/ch06.html" label="Developing OSGi Bundles"><topic href="tooling/ch06.html#tooling-developing-resolving-bundle-dependencies" label="Resolving Bundle Dependencies"></topic><topic href="tooling/ch06s02.html" label="Editing the Manifest"></topic></topic><topic href="tooling/ch07.html" label="Developing OSGi Bundles using Plug-in Development Environment (PDE)"><topic href="tooling/ch07.html#pde_dependencies" label="Resolving Bundle Dependencies"></topic><topic href="tooling/ch07s02.html" label="Server Runtime Wizard"></topic><topic href="tooling/ch07s03.html" label="PDE Bundle projects"></topic><topic href="tooling/ch07s04.html" label="Publishing"></topic><topic href="tooling/ch07s05.html" label="Migration actions"></topic></topic><topic href="tooling/ch08.html" label="Developing Plans"><topic href="tooling/ch08.html#planBenefits" label="Benefit of using Plan files"></topic><topic href="tooling/ch08s02.html" label="Discovery of Plan files in the workspace"></topic></topic><topic href="tooling/ch09.html" label="Developing PARs"></topic><topic href="tooling/ch10.html" label="Deploying Applications"></topic><topic href="tooling/ch11.html" label="Installation and Release Notes"><topic href="tooling/ch11.html#Features" label="Features"></topic><topic href="tooling/ch11s02.html" label="Installation"><topic href="tooling/ch11s02.html#Install_Eclipse" label="Install Eclipse"></topic><topic href="tooling/ch11s02.html#Install_Virgo" label="Install Virgo"></topic><topic href="tooling/ch11s02.html#Update_Sites" label="Update Sites"></topic></topic><topic href="tooling/ch11s03.html" label="Known Issues"></topic><topic href="tooling/ch11s04.html" label="Maven plugin"><topic href="tooling/ch11s04.html#Build" label="Build"></topic><topic href="tooling/ch11s04.html#Goals" label="Goals"></topic><topic href="tooling/ch11s04.html#Simple_example_POM" label="Simple example POM"></topic></topic><topic href="tooling/ch11s05.html" label="Importing Virgo Projects into Eclipse"></topic><topic href="tooling/ch11s06.html" label="FAQ"></topic></topic></toc> \ No newline at end of file
diff --git a/org.eclipse.virgo.ide.doc/wiki/Virgo/Virgo.html b/org.eclipse.virgo.ide.doc/wiki/Virgo/Virgo.html
index f6c8a7d..7157af6 100644
--- a/org.eclipse.virgo.ide.doc/wiki/Virgo/Virgo.html
+++ b/org.eclipse.virgo.ide.doc/wiki/Virgo/Virgo.html
@@ -26,6 +26,14 @@
</tr>
</table><hr/>
<p>
+ <a href="http://wiki.eclipse.org/Category:Virgo" title="Category:Virgo" target="doc_external">Category:Virgo</a>
+ <a href="http://wiki.eclipse.org/Category:EclipseRT" title="Category:EclipseRT" target="doc_external">Category:EclipseRT</a>
+ </p>
+ <p>
+ <a href="http://wiki.eclipse.org/Category:Virgo" title="Category:Virgo" target="doc_external">Category:Virgo</a>
+ {{DEFAULTCATEGORYSORT:{{SUBPAGENAME}}}}
+ </p>
+ <p>
<img align="middle" border="0" src="images/Virgo-logo.png"/>
</p>
<h3 id="Welcome_to_the_wiki_pages_of_the_.27.27Virgo.27.27_project.2C_a_sub-project_of_.5B.5BRT.7CEclipseRT.5D.5D.">Welcome to the wiki pages of the ''Virgo'' project, a sub-project of [[RT|EclipseRT]].</h3>
diff --git a/org.eclipse.virgo.ide.doc/wiki/toc.xml b/org.eclipse.virgo.ide.doc/wiki/toc.xml
index 0ec146f..8657306 100644
--- a/org.eclipse.virgo.ide.doc/wiki/toc.xml
+++ b/org.eclipse.virgo.ide.doc/wiki/toc.xml
@@ -1,27 +1,27 @@
<?xml version='1.0' encoding='utf-8' ?>
-<toc topic="wiki/Virgo/Virgo.html" label="Virgo Wiki">
+<toc topic="Virgo/Virgo.html" label="Virgo Wiki">
<topic label="Concepts">
- <link toc="wiki/Virgo-Concepts-toc.xml" />
+ <link toc="Virgo-Concepts-toc.xml" />
</topic>
<topic label="Frequently Asked Questions">
- <link toc="wiki/Virgo-FAQ-toc.xml" />
+ <link toc="Virgo-FAQ-toc.xml" />
</topic>
<topic label="Source">
- <link toc="wiki/Virgo-Source-toc.xml" />
+ <link toc="Virgo-Source-toc.xml" />
</topic>
<topic label="Build">
- <link toc="wiki/Virgo-Build-toc.xml" />
+ <link toc="Virgo-Build-toc.xml" />
</topic>
<topic label="Test">
- <link toc="wiki/Virgo-Test-toc.xml" />
+ <link toc="Virgo-Test-toc.xml" />
</topic>
<topic label="Future">
- <link toc="wiki/Virgo-FAQ-toc.xml" />
+ <link toc="Virgo-FAQ-toc.xml" />
</topic>
<topic label="Community">
- <link toc="wiki/Virgo-Community-toc.xml" />
+ <link toc="Virgo-Community-toc.xml" />
</topic>
<topic label="Committers">
- <link toc="wiki/Virgo-Committers-toc.xml" />
+ <link toc="Virgo-Committers-toc.xml" />
</topic>
</toc>
diff --git a/org.eclipse.virgo.ide.facet.core/META-INF/MANIFEST.MF b/org.eclipse.virgo.ide.facet.core/META-INF/MANIFEST.MF
index 3746670..af184ea 100644
--- a/org.eclipse.virgo.ide.facet.core/META-INF/MANIFEST.MF
+++ b/org.eclipse.virgo.ide.facet.core/META-INF/MANIFEST.MF
@@ -31,3 +31,4 @@ Require-Bundle: org.eclipse.ui,
Bundle-ActivationPolicy: lazy
Export-Package: org.eclipse.virgo.ide.facet.core
Bundle-Localization: plugin
+Import-Package: org.eclipse.ui.ide.undo
diff --git a/org.eclipse.virgo.ide.facet.core/src/org/eclipse/virgo/ide/facet/core/AbstractOperation.java b/org.eclipse.virgo.ide.facet.core/src/org/eclipse/virgo/ide/facet/core/AbstractOperation.java
new file mode 100644
index 0000000..cf79afb
--- /dev/null
+++ b/org.eclipse.virgo.ide.facet.core/src/org/eclipse/virgo/ide/facet/core/AbstractOperation.java
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (c) 2016 GianMaria Romanato
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * GianMaria Romanato - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.virgo.ide.facet.core;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+
+import org.eclipse.core.resources.IWorkspaceRunnable;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+
+/**
+ * Base class for runnables used for creating/changing projects
+ */
+public abstract class AbstractOperation implements IWorkspaceRunnable {
+
+ public AbstractOperation() {
+ super();
+ }
+
+ protected String readResourceFromClassPath(String path, String charset) throws CoreException {
+ InputStream is = getClass().getResourceAsStream(path);
+ if (is != null) {
+ try {
+ InputStreamReader r = new InputStreamReader(is, charset);
+ StringBuilder sb = new StringBuilder();
+ int c;
+ while ((c = r.read()) != -1) {
+ sb.append((char) c);
+ }
+ return sb.toString();
+ } catch (IOException e) {
+ throw new CoreException(new Status(IStatus.ERROR, FacetCorePlugin.PLUGIN_ID, e.getMessage(), e));
+ } finally {
+ try {
+ is.close();
+ } catch (IOException e) {
+ }
+ }
+ } else {
+ throw new CoreException(new Status(IStatus.ERROR, FacetCorePlugin.PLUGIN_ID, "Template file missing " + path)); //$NON-NLS-1$
+ }
+
+ }
+
+} \ No newline at end of file
diff --git a/org.eclipse.virgo.ide.facet.core/src/org/eclipse/virgo/ide/facet/core/CreatePlanProjectOperation.java b/org.eclipse.virgo.ide.facet.core/src/org/eclipse/virgo/ide/facet/core/CreatePlanProjectOperation.java
new file mode 100644
index 0000000..f16308c
--- /dev/null
+++ b/org.eclipse.virgo.ide.facet.core/src/org/eclipse/virgo/ide/facet/core/CreatePlanProjectOperation.java
@@ -0,0 +1,170 @@
+/*******************************************************************************
+ * Copyright (c) 2016 GianMaria Romanato
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * GianMaria Romanato - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.virgo.ide.facet.core;
+
+import java.io.ByteArrayInputStream;
+import java.io.UnsupportedEncodingException;
+import java.net.URI;
+import java.text.MessageFormat;
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IProjectDescription;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jdt.core.IClasspathEntry;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.launching.JavaRuntime;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.ide.undo.CreateProjectOperation;
+import org.eclipse.ui.ide.undo.WorkspaceUndoUtil;
+import org.eclipse.wst.common.project.facet.core.IFacetedProject;
+import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
+
+/**
+ * CreatePlanProjectOperation creates a new plan project. A plan project is a Java project with the plan facet. The
+ * operation optionally creates an empty plan file as well.
+ * <p>
+ */
+public class CreatePlanProjectOperation extends AbstractOperation {
+
+ private static final String UTF_8 = "UTF-8";
+
+ private static final String TEMPLATE_PATH = "/org/eclipse/virgo/ide/facet/internal/core/plan_template.xml";
+
+ private static final String WST_FACET_NATURE = org.eclipse.wst.common.project.facet.core.internal.FacetCorePlugin.PLUGIN_ID + ".nature"; //$NON-NLS-1$
+
+ private final IProject projectHandle;
+
+ private final URI location;
+
+ private final Shell shell;
+
+ private final boolean scoped;
+
+ private final boolean atomic;
+
+ private final String planName;
+
+ private IFile planFile;
+
+ /**
+ * Creates a new instance
+ *
+ * @param projectHandle the handle to the project to be created
+ * @param location an optional location if the project is not to be created in the default location
+ * @param planName an optional plan name is a plan name is to be created within the project
+ * @param scoped whether the plan is scoped
+ * @param atomic whether the plan is atomic
+ * @param shell a shell for error reporting
+ */
+ public CreatePlanProjectOperation(IProject projectHandle, URI location, String planName, boolean scoped, boolean atomic, Shell shell) {
+ Assert.isNotNull(projectHandle, "projectHandle cannot be null"); //$NON-NLS-1$
+ Assert.isNotNull(shell, "shell cannot be null"); //$NON-NLS-1$
+ this.projectHandle = projectHandle;
+ this.location = location;
+ this.shell = shell;
+ this.scoped = scoped;
+ this.atomic = atomic;
+ this.planName = planName;
+ }
+
+ public void run(IProgressMonitor monitor) throws CoreException {
+ monitor.beginTask("", planName != null ? 4 : 3);
+
+ IWorkspace workspace = ResourcesPlugin.getWorkspace();
+ IProjectDescription description = workspace.newProjectDescription(projectHandle.getName());
+ description.setLocationURI(location);
+
+ // create the new project operation
+ CreateProjectOperation op = new CreateProjectOperation(description, "");
+ try {
+ op.execute(new NullProgressMonitor(), WorkspaceUndoUtil.getUIInfoAdapter(shell));
+ } catch (ExecutionException e1) {
+ CoreException cex = new CoreException(new Status(IStatus.ERROR, FacetCorePlugin.PLAN_FACET_ID, e1.getMessage()));
+ cex.initCause(e1);
+ throw cex;
+ }
+ monitor.worked(1);
+
+ // make it a Java/Plan project
+ description = projectHandle.getDescription();
+ String[] natures = description.getNatureIds();
+ String[] newNatures = new String[natures.length + 3];
+ System.arraycopy(natures, 0, newNatures, 0, natures.length);
+ System.arraycopy(new String[] { WST_FACET_NATURE, FacetCorePlugin.PLAN_NATURE_ID, JavaCore.NATURE_ID }, 0, newNatures, natures.length, 3);
+ description.setNatureIds(newNatures);
+ projectHandle.setDescription(description, null);
+
+ monitor.worked(1);
+
+ // setup classpath
+ IJavaProject javaProject = JavaCore.create(projectHandle);
+ IFolder binFolder = projectHandle.getFolder("bin");
+ binFolder.create(false, true, null);
+ javaProject.setOutputLocation(binFolder.getFullPath(), null);
+
+ IFolder sourceFolder = projectHandle.getFolder("src");
+ sourceFolder.create(false, true, null);
+ IClasspathEntry sourceEntry = JavaCore.newSourceEntry(sourceFolder.getFullPath());
+
+ List<IClasspathEntry> entries = Arrays.asList(sourceEntry, JavaRuntime.getDefaultJREContainerEntry());
+ javaProject.setRawClasspath(entries.toArray(new IClasspathEntry[entries.size()]), null);
+
+ IFacetedProject fProject = ProjectFacetsManager.create(projectHandle, true, null);
+ fProject.installProjectFacet(ProjectFacetsManager.getProjectFacet(FacetCorePlugin.PLAN_FACET_ID).getDefaultVersion(), null, null);
+
+ monitor.worked(1);
+
+ if (planName != null) {
+ String content = readResourceFromClassPath(TEMPLATE_PATH, UTF_8);
+ content = MessageFormat.format(content, planName, scoped, atomic);
+ IPath p = new Path(planName);
+ if (!"plan".equals(p.getFileExtension())) {
+ p = p.addFileExtension("plan");
+ }
+ planFile = sourceFolder.getFile(p);
+ try {
+ planFile.create(new ByteArrayInputStream(content.getBytes(UTF_8)), true, null);
+ } catch (UnsupportedEncodingException e) {
+ throw new RuntimeException(e); // will never happen, all JVMs support UTF-8
+ }
+ monitor.worked(1);
+
+ }
+
+ monitor.done();
+ }
+
+ /**
+ * Returns the plan file created by this operation, or null if no plan file has been created.
+ *
+ * @return plan file or null
+ */
+ public IFile getPlanFile() {
+ return planFile;
+ }
+
+}
diff --git a/org.eclipse.virgo.ide.facet.core/src/org/eclipse/virgo/ide/facet/core/FacetUtils.java b/org.eclipse.virgo.ide.facet.core/src/org/eclipse/virgo/ide/facet/core/FacetUtils.java
index 4c1d5b0..3662eba 100644
--- a/org.eclipse.virgo.ide.facet.core/src/org/eclipse/virgo/ide/facet/core/FacetUtils.java
+++ b/org.eclipse.virgo.ide.facet.core/src/org/eclipse/virgo/ide/facet/core/FacetUtils.java
@@ -7,6 +7,7 @@
*
* Contributors:
* SpringSource, a division of VMware, Inc. - initial API and implementation
+ * GianMaria Romanato - add utilities for management of nested plans
*******************************************************************************/
package org.eclipse.virgo.ide.facet.core;
@@ -19,15 +20,25 @@ import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
import java.util.HashSet;
+import java.util.LinkedHashSet;
import java.util.List;
+import java.util.Map;
+import java.util.Queue;
import java.util.Set;
+import java.util.concurrent.ArrayBlockingQueue;
+import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceVisitor;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Status;
@@ -37,8 +48,14 @@ import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.emf.ecore.xmi.PackageNotFoundException;
+import org.eclipse.jdt.core.IClasspathEntry;
+import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.ui.statushandlers.StatusManager;
+import org.eclipse.virgo.ide.facet.internal.core.Plan;
+import org.eclipse.virgo.ide.facet.internal.core.PlanReader;
+import org.eclipse.virgo.ide.facet.internal.core.PlanReference;
import org.eclipse.virgo.ide.par.Bundle;
import org.eclipse.virgo.ide.par.Par;
import org.eclipse.virgo.ide.par.ParPackage;
@@ -49,6 +66,7 @@ import org.eclipse.wst.common.project.facet.core.FacetedProjectFramework;
*
* @author Christian Dupuis
* @author Leo Dos Santos
+ * @author GianMaria Romanato
* @since 1.0.0
*/
public class FacetUtils {
@@ -203,4 +221,225 @@ public class FacetUtils {
return null;
}
+ /**
+ * Gets all the plan files found in the given project.
+ *
+ * @param project
+ * @return
+ */
+ public static Collection<IFile> getPlansInPlanProject(IProject project) {
+ if (!isPlanProject(project)) {
+ return Collections.emptyList();
+ }
+
+ final List<IFile> planFiles = new ArrayList<IFile>();
+
+ // Collect output locations if java project
+ final Set<IPath> outputLocations = new HashSet<IPath>();
+ try {
+ if (FacetUtils.hasNature(project, JavaCore.NATURE_ID)) {
+ IJavaProject je = JavaCore.create(project);
+ try {
+ outputLocations.add(je.getOutputLocation());
+ for (IClasspathEntry entry : je.getRawClasspath()) {
+ if (entry.getEntryKind() == IClasspathEntry.CPE_SOURCE) {
+ if (entry.getOutputLocation() != null) {
+ outputLocations.add(entry.getOutputLocation());
+ }
+ }
+ }
+ } catch (JavaModelException e) {
+ // safe to ignore
+ }
+ }
+ project.accept(new IResourceVisitor() {
+
+ public boolean visit(IResource resource) throws CoreException {
+ if (resource.isTeamPrivateMember() || resource.isDerived()) {
+ return false;
+ }
+ if (resource instanceof IFile && "plan".equals(resource.getFileExtension())) {
+ planFiles.add((IFile) resource);
+ } else if (resource instanceof IContainer) {
+ IPath path = ((IContainer) resource).getFullPath();
+ for (IPath outputLocation : outputLocations) {
+ if (outputLocation.isPrefixOf(path)) {
+ return false;
+ }
+ }
+ return true;
+ }
+ return true;
+ }
+ });
+ } catch (CoreException e) {
+ // TODO CD log exception
+ }
+
+ return planFiles;
+ }
+
+ /**
+ * Returns all the plans in the workspace as a map project to list of plan files
+ *
+ * @return
+ */
+ private static Map<IProject, Collection<IFile>> getPlansInWorkspace() {
+ Map<IProject, Collection<IFile>> plans = new HashMap<IProject, Collection<IFile>>();
+ IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
+ for (IProject iProject : projects) {
+ if (iProject.isOpen() && isPlanProject(iProject)) {
+ Collection<IFile> ps = getPlansInPlanProject(iProject);
+ plans.put(iProject, ps);
+ }
+ }
+ return plans;
+ }
+
+ /**
+ * Returns the list of nested plans for a given plan file, including the given plan file as the first one. The look
+ * only in the planFile project, unless the project is also a Java project. In such case, the project classpath is
+ * used to look for plans in required projects.
+ *
+ * @param planFile the plan file
+ * @param recurse whether the method should return only direct children of the file (false) or recurse and collect
+ * all descendants (true)
+ * @return
+ */
+ public static List<IFile> getNestedPlanFiles(IFile planFile, boolean recurse) {
+ if (!isPlanProject(planFile)) {
+ return Collections.emptyList();
+ }
+
+ // parse the top level plan file
+ PlanReader reader = new PlanReader();
+ Plan topLevelPlan;
+ try {
+ topLevelPlan = reader.read(planFile);
+ } catch (Exception e1) {
+ return Collections.emptyList();
+ }
+
+ List<PlanReference> nestedReferences = topLevelPlan.getNestedPlans();
+
+ if (nestedReferences.isEmpty()) {
+ return Collections.emptyList();
+ }
+
+ List<IFile> nestedPlanFiles = new ArrayList<IFile>();
+
+ /*
+ * examine the containing Java project class path (if a Java projecT) and find all the required Java projects.
+ * Nested plans will be searched not only in the current project but also in its dependencies
+ */
+ List<IProject> orderedProjects = getOrderedProjectDependencies(planFile.getProject());
+ orderedProjects.add(0, planFile.getProject());
+
+ Map<IProject, Collection<IFile>> allPlans = FacetUtils.getPlansInWorkspace();
+
+ // used for searching a nested plan that is referred only by name (no version)
+ Map<String, Plan> name2PlanLookup = new HashMap<String, Plan>();
+
+ // used for searching a nested plan that is referred by name and version
+ Map<PlanReference, Plan> ref2Plan = new HashMap<PlanReference, Plan>();
+
+ // plan to related file
+ Map<PlanReference, IFile> ref2File = new HashMap<PlanReference, IFile>();
+
+ // loop over the list of ordered projects and search for plans
+ for (IProject iProject : orderedProjects) {
+ Collection<IFile> candidates = allPlans.get(iProject);
+ if (candidates != null) {
+ for (IFile iFile : candidates) {
+ // ignore self
+ if (!planFile.equals(iFile)) {
+ try {
+ Plan p = reader.read(iFile);
+ PlanReference r = p.asRefence();
+
+ /*
+ * in case of duplicate plans (same name and version) first found in classpath wins and
+ * found is assumed to be the right one
+ */
+ if (!ref2Plan.containsKey(r)) {
+ // add for name+version lookup
+ ref2Plan.put(r, p);
+
+ /*
+ * in case of duplicates plans with the same name and different version if an outer plan
+ * is referring to a nested plan via name only, the first found in classpath wins
+ */
+ if (!name2PlanLookup.containsKey(r.getName())) {
+ name2PlanLookup.put(r.getName(), p);
+ }
+
+ ref2File.put(r, iFile);
+
+ }
+ } catch (Exception e) {
+ // ignore
+ }
+ }
+ }
+ }
+ }
+
+ // finally compute the list of nested plans. Use a queue instead of recursion.
+ Queue<PlanReference> toBeProcessed = new ArrayBlockingQueue<PlanReference>(ref2Plan.size() + 1);
+ Set<PlanReference> alreadyProcessed = new HashSet<PlanReference>();
+ toBeProcessed.addAll(nestedReferences);
+
+ while (toBeProcessed.peek() != null) {
+ PlanReference planReference = toBeProcessed.poll();
+ alreadyProcessed.add(planReference);
+
+ // search for exact match name + version
+ Plan nestedPlan = ref2Plan.get(planReference); // search for exact match name + version
+ if (nestedPlan == null && planReference.getVersion() == null) {
+ nestedPlan = name2PlanLookup.get(planReference.getName());
+ }
+
+ if (nestedPlan != null) {
+ IFile nestedFile = ref2File.get(nestedPlan.asRefence());
+
+ nestedPlanFiles.add(nestedFile);
+
+ for (PlanReference aRef : nestedPlan.getNestedPlans()) {
+ if (recurse && !alreadyProcessed.contains(aRef)) {
+ toBeProcessed.add(aRef);
+ }
+ }
+ }
+ }
+
+ return nestedPlanFiles;
+ }
+
+ /**
+ * Returns the ordered list of project dependencies for the given Java project or an empty list if the project is
+ * not a Java project.
+ *
+ * @param project the Java project
+ * @return the list of required projects
+ */
+ private static List<IProject> getOrderedProjectDependencies(IProject project) {
+ LinkedHashSet<IProject> projects = new LinkedHashSet<IProject>();
+ if (FacetUtils.hasNature(project, JavaCore.NATURE_ID)) {
+ IJavaProject je = JavaCore.create(project);
+ String[] names;
+ try {
+ names = je.getRequiredProjectNames();
+ for (String prjName : names) {
+ IProject prj = ResourcesPlugin.getWorkspace().getRoot().getProject(prjName);
+ if (prj.exists() && prj.isOpen() && isPlanProject(prj)) {
+ projects.add(prj);
+ projects.addAll(getOrderedProjectDependencies(prj));
+ }
+ }
+ } catch (JavaModelException e) {
+ }
+ }
+ return new ArrayList<IProject>(projects);
+ }
+
}
diff --git a/org.eclipse.virgo.ide.facet.core/src/org/eclipse/virgo/ide/facet/internal/core/Artifact.java b/org.eclipse.virgo.ide.facet.core/src/org/eclipse/virgo/ide/facet/internal/core/Artifact.java
new file mode 100644
index 0000000..087b55e
--- /dev/null
+++ b/org.eclipse.virgo.ide.facet.core/src/org/eclipse/virgo/ide/facet/internal/core/Artifact.java
@@ -0,0 +1,94 @@
+/*******************************************************************************
+ * Copyright (c) 2016 GianMaria Romanato
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * GianMaria Romanato - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.virgo.ide.facet.internal.core;
+
+import org.osgi.framework.Version;
+
+/**
+ * Represents an artifact listed in a plan. Providers proper implementation of {@link #equals(Object)} and
+ * {@link #hashCode()}.
+ */
+public abstract class Artifact {
+
+ protected Artifact(String name, Version version) {
+ super();
+ this.name = name;
+ this.version = version;
+ }
+
+ protected final String name;
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((name == null) ? 0 : name.hashCode());
+ result = prime * result + ((version == null) ? 0 : version.hashCode());
+ return result;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ Artifact other = (Artifact) obj;
+ if (name == null) {
+ if (other.name != null) {
+ return false;
+ }
+ } else if (!name.equals(other.name)) {
+ return false;
+ }
+ if (version == null) {
+ if (other.version != null) {
+ return false;
+ }
+ } else if (!version.equals(other.version)) {
+ return false;
+ }
+ return true;
+ }
+
+ protected final Version version;
+
+ /**
+ * Gets the artifact name.
+ *
+ * @return
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * Gets the artifact version.
+ *
+ * @return version or null if version was not specified.
+ */
+ public Version getVersion() {
+ return version;
+ }
+
+} \ No newline at end of file
diff --git a/org.eclipse.virgo.ide.facet.core/src/org/eclipse/virgo/ide/facet/internal/core/BundleReference.java b/org.eclipse.virgo.ide.facet.core/src/org/eclipse/virgo/ide/facet/internal/core/BundleReference.java
new file mode 100644
index 0000000..2656beb
--- /dev/null
+++ b/org.eclipse.virgo.ide.facet.core/src/org/eclipse/virgo/ide/facet/internal/core/BundleReference.java
@@ -0,0 +1,24 @@
+/*******************************************************************************
+ * Copyright (c) 2016 GianMaria Romanato
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * GianMaria Romanato - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.virgo.ide.facet.internal.core;
+
+import org.osgi.framework.Version;
+
+/**
+ * Represents a reference to a bundle.
+ */
+public class BundleReference extends Artifact {
+
+ /* package */ BundleReference(String name, Version version) {
+ super(name, version);
+ }
+}
diff --git a/org.eclipse.virgo.ide.facet.core/src/org/eclipse/virgo/ide/facet/internal/core/Plan.java b/org.eclipse.virgo.ide.facet.core/src/org/eclipse/virgo/ide/facet/internal/core/Plan.java
new file mode 100644
index 0000000..a8641ff
--- /dev/null
+++ b/org.eclipse.virgo.ide.facet.core/src/org/eclipse/virgo/ide/facet/internal/core/Plan.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2016 GianMaria Romanato
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * GianMaria Romanato - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.virgo.ide.facet.internal.core;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.osgi.framework.Version;
+
+/**
+ * Represents a plan in the workspace and includes the list of referred plans. Note that this class does not intend to
+ * represent the full content of a plan file, just the minimum needed by the Tooling for deploying plans to the Virgo
+ * Runtime.
+ */
+public final class Plan extends PlanReference {
+
+ /**
+ * Gets this plan as a {@link PlanReference}. Useful for comparing this plan with a reference from another plan to
+ * identify whether such other bundle refers to this plan.
+ *
+ * @return
+ */
+ public PlanReference asRefence() {
+ return new PlanReference(getName(), getVersion());
+ }
+
+ private final List<Artifact> nestedArtifacts;
+
+ /* default */ Plan(String name, Version version, List<Artifact> nestedArtifacts) {
+ super(name, version);
+ this.nestedArtifacts = nestedArtifacts;
+ }
+
+ /**
+ * Returns the list of nested artifacts.
+ * @return
+ */
+ public List<Artifact> getNestedArtifacts() {
+ return nestedArtifacts;
+ }
+
+ /**
+ * A view over nested artifacts that returns plan references.
+ * @return
+ */
+ public List<PlanReference> getNestedPlans() {
+ List<PlanReference> refs = new ArrayList<PlanReference>();
+ for (Artifact a : nestedArtifacts) {
+ if (a instanceof PlanReference) {
+ refs.add((PlanReference) a);
+ }
+ }
+ return refs;
+ }
+}
diff --git a/org.eclipse.virgo.ide.facet.core/src/org/eclipse/virgo/ide/facet/internal/core/PlanReader.java b/org.eclipse.virgo.ide.facet.core/src/org/eclipse/virgo/ide/facet/internal/core/PlanReader.java
new file mode 100644
index 0000000..85fac12
--- /dev/null
+++ b/org.eclipse.virgo.ide.facet.core/src/org/eclipse/virgo/ide/facet/internal/core/PlanReader.java
@@ -0,0 +1,162 @@
+/*******************************************************************************
+ * Copyright (c) 2016 GianMaria Romanato
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * GianMaria Romanato - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.virgo.ide.facet.internal.core;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Properties;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.eclipse.core.resources.IFile;
+import org.osgi.framework.Version;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+import org.xml.sax.ErrorHandler;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+
+/**
+ * A reader that builds a minimal plan descriptor for a plan file in the workspace. This class is a simplified version
+ * of a similar class existing in the Virgo Server runtime. This parser is not able to capture all the features of a
+ * plan; it just creates a minimal Plan object which lists the plan name, version and any other referred plan. Other
+ * type of child artifacts (e.g. bundles) or plan attributes (e.g. URI) are ignored as they are not relevant for the
+ * purpose of deploying workspace plan to the Virgo Runtime Environment.
+ *
+ */
+public final class PlanReader {
+
+ private static final String PLAN = "plan"; //$NON-NLS-1$
+
+ private static final String TYPE_ATTRIBUTE = "type"; //$NON-NLS-1$
+
+ private static final String NAME_ATTRIBUTE = "name"; //$NON-NLS-1$
+
+ private static final String VERSION_ATTRIBUTE = "version"; //$NON-NLS-1$
+
+ private static final String ARTIFACT_ELEMENT = "artifact"; //$NON-NLS-1$
+
+ private static final String ATTRIBUTE_ELEMENT = "attribute"; //$NON-NLS-1$
+
+ private static final String VALUE_ATTRIBUTE = "value"; //$NON-NLS-1$
+
+ private static final String SCHEMA_LANGUAGE_ATTRIBUTE = "http://java.sun.com/xml/jaxp/properties/schemaLanguage"; //$NON-NLS-1$
+
+ private static final String XSD_SCHEMA_LANGUAGE = "http://www.w3.org/2001/XMLSchema"; //$NON-NLS-1$
+
+ private static final Object BUNDLE = "bundle"; //$NON-NLS-1$
+
+ /**
+ * Creates a {@link PlanDescriptor} meta-data artifact from an {@link InputStream}
+ *
+ * @param inputStream from which the plan is to be read
+ * @return The plan descriptor (meta-data) from the input stream
+ */
+ public Plan read(IFile file) {
+ org.eclipse.core.runtime.Assert.isNotNull(file, "file cannot be null");
+ InputStream inputStream = null;
+ try {
+ inputStream = file.getContents();
+ Document doc = readDocument(inputStream);
+ Element element = doc.getDocumentElement();
+ return parsePlanElement(file, element);
+ } catch (Exception e) {
+ throw new RuntimeException("Failed to read plan descriptor", e);
+ } finally {
+ if (inputStream != null) {
+ try {
+ inputStream.close();
+ } catch (IOException e) {
+ }
+ }
+ }
+ }
+
+ private Document readDocument(InputStream inputStream) throws ParserConfigurationException, SAXException, IOException {
+ DocumentBuilder builder = createDocumentBuilderFactory().newDocumentBuilder();
+ builder.setErrorHandler(new ErrorHandler() {
+
+ public void warning(SAXParseException exception) throws SAXException {
+ }
+
+ public void fatalError(SAXParseException exception) throws SAXException {
+ throw exception;
+ }
+
+ public void error(SAXParseException exception) throws SAXException {
+ throw exception;
+ }
+ });
+ return builder.parse(inputStream);
+ }
+
+ private DocumentBuilderFactory createDocumentBuilderFactory() {
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ factory.setValidating(false);
+ factory.setNamespaceAware(false);
+ factory.setAttribute(SCHEMA_LANGUAGE_ATTRIBUTE, XSD_SCHEMA_LANGUAGE);
+ return factory;
+ }
+
+ private Plan parsePlanElement(IFile file, Element element) {
+ String name = element.getAttribute(NAME_ATTRIBUTE);
+ Version version = new Version(element.getAttribute(VERSION_ATTRIBUTE));
+
+ Properties attributes = parseAttributes(element);
+ List<Artifact> artifacts = parseNestedArtifacts(element.getElementsByTagName(ARTIFACT_ELEMENT), attributes);
+
+ return new Plan(name, version, artifacts);
+ }
+
+ private Properties parseAttributes(Element element) {
+ Properties result = new Properties();
+ NodeList attributeElements = element.getElementsByTagName(ATTRIBUTE_ELEMENT);
+ for (int x = 0; x < attributeElements.getLength(); x++) {
+ Element attribute = (Element) attributeElements.item(x);
+
+ String name = attribute.getAttribute(NAME_ATTRIBUTE);
+ String value = attribute.getAttribute(VALUE_ATTRIBUTE);
+
+ result.put(name, value);
+ }
+ return result;
+ }
+
+ private List<Artifact> parseNestedArtifacts(NodeList artifactElements, Properties attributes) {
+ List<Artifact> refs = new ArrayList<Artifact>();
+ for (int i = 0; i < artifactElements.getLength(); i++) {
+ Element artifactElement = (Element) artifactElements.item(i);
+
+ String type = artifactElement.getAttribute(TYPE_ATTRIBUTE);
+ String name = artifactElement.getAttribute(NAME_ATTRIBUTE);
+ String versionString = artifactElement.getAttribute(VERSION_ATTRIBUTE);
+ Version version = null;
+ if (versionString != null && !versionString.isEmpty()) {
+ version = new Version(versionString);
+ }
+
+ if (PLAN.equals(type)) {
+ refs.add(new PlanReference(name, version));
+ } else if (BUNDLE.equals(type)) {
+ refs.add(new BundleReference(name, version));
+ }
+ }
+
+ return refs;
+ }
+
+}
diff --git a/org.eclipse.virgo.ide.facet.core/src/org/eclipse/virgo/ide/facet/internal/core/PlanReference.java b/org.eclipse.virgo.ide.facet.core/src/org/eclipse/virgo/ide/facet/internal/core/PlanReference.java
new file mode 100644
index 0000000..511b3e7
--- /dev/null
+++ b/org.eclipse.virgo.ide.facet.core/src/org/eclipse/virgo/ide/facet/internal/core/PlanReference.java
@@ -0,0 +1,26 @@
+/*******************************************************************************
+ * Copyright (c) 2016 GianMaria Romanato
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * GianMaria Romanato - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.virgo.ide.facet.internal.core;
+
+import org.osgi.framework.Version;
+
+/**
+ * Represents a reference to a nested plan. Provides a proper implementation of {@link #equals(Object)} and
+ * {@link #hashCode()} and can be used in collections for structural equality.
+ */
+public class PlanReference extends Artifact {
+
+ public PlanReference(String name, Version version) {
+ super(name, version);
+ }
+
+} \ No newline at end of file
diff --git a/org.eclipse.virgo.ide.facet.core/src/org/eclipse/virgo/ide/facet/internal/core/plan_template.xml b/org.eclipse.virgo.ide.facet.core/src/org/eclipse/virgo/ide/facet/internal/core/plan_template.xml
new file mode 100644
index 0000000..6f07463
--- /dev/null
+++ b/org.eclipse.virgo.ide.facet.core/src/org/eclipse/virgo/ide/facet/internal/core/plan_template.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<plan name="{0}" version="1.0.0" scoped="{1}" atomic="{2}"
+ xmlns="http://www.springsource.org/schema/dm-server/plan" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="
+ http://www.springsource.org/schema/dm-server/plan
+ http://www.springsource.org/schema/dm-server/plan/springsource-dm-server-plan.xsd">
+
+ <!-- <artifact type="plan" name="my.nested.plan" /> -->
+ <!-- <artifact type="bundle" name="my.bundle.symbolic.name" /> -->
+</plan>
+ \ No newline at end of file
diff --git a/org.eclipse.virgo.ide.manifest.core/src/org/eclipse/virgo/ide/module/core/ServerModuleDelegate.java b/org.eclipse.virgo.ide.manifest.core/src/org/eclipse/virgo/ide/module/core/ServerModuleDelegate.java
index 2f3cfab..00f7b52 100644
--- a/org.eclipse.virgo.ide.manifest.core/src/org/eclipse/virgo/ide/module/core/ServerModuleDelegate.java
+++ b/org.eclipse.virgo.ide.manifest.core/src/org/eclipse/virgo/ide/module/core/ServerModuleDelegate.java
@@ -7,6 +7,7 @@
*
* Contributors:
* SpringSource, a division of VMware, Inc. - initial API and implementation
+ * GianMaria Romanato - support for nested plans
*******************************************************************************/
package org.eclipse.virgo.ide.module.core;
@@ -82,11 +83,35 @@ public class ServerModuleDelegate extends ProjectModule {
@Override
public IModuleResource[] members() throws CoreException {
- IPath moduleRelativePath = Path.EMPTY;
- // Handle simple case of project being a bundle first
+ IModule module = getModule();
final Set<IModuleResource> resources = new LinkedHashSet<IModuleResource>();
- if (getModule().getModuleType().getId().equals(FacetCorePlugin.BUNDLE_FACET_ID)) {
+
+ /*
+ * Add recursion to collect nested elements. This method now returns as members of toplevel plans all nested
+ * plans and bundles collected via recursion.
+ *
+ * Originally it was returning only direct children and assuming they were bundles, which made it impossible for
+ * the tools to deploy nested plans.
+ *
+ * Note that when top level plans with nested plans are added to the virgo runtime, they are added as a tree of
+ * IModule objects. However, apparently WTP does not properly deal with arbitrary nesting of modules and just
+ * publishes resources for the top level modules and their direct children.
+ *
+ * As such to overcome this limitation the following code fools WTP by providing as resources of the top level
+ * plan all resources contained in nested plans and nested bundles, even if they are represented by different
+ * IModule instances in memory.
+ */
+ deepGetMembers(module, resources);
+
+ return resources.toArray(new IModuleResource[resources.size()]);
+ }
+
+ private void deepGetMembers(IModule module, final Set<IModuleResource> resources) throws CoreException, JavaModelException {
+ IPath moduleRelativePath = Path.EMPTY;
+ // Handle simple case of project being a bundle first
+
+ if (module.getModuleType().getId().equals(FacetCorePlugin.BUNDLE_FACET_ID)) {
if (FacetUtils.hasProjectFacet(getProject(), FacetCorePlugin.WEB_FACET_ID)) {
IModule[] modules = ServerUtil.getModules(getProject());
for (IModule webModule : modules) {
@@ -99,7 +124,7 @@ public class ServerModuleDelegate extends ProjectModule {
resources.addAll(getMembers(getProject(), moduleRelativePath));
}
// More complex handling of PAR and nested bundle project
- else if (getModule().getModuleType().getId().equals(FacetCorePlugin.PAR_FACET_ID)) {
+ else if (module.getModuleType().getId().equals(FacetCorePlugin.PAR_FACET_ID)) {
// Get the META-INF folder of the PAR first
IResource metaInfFolder = getProject().findMember(BundleManifestCorePlugin.MANIFEST_FOLDER_NAME);
@@ -126,12 +151,12 @@ public class ServerModuleDelegate extends ProjectModule {
}, IResource.DEPTH_ONE, false);
// Iterate nested bundle projects
- for (IModule module : getChildModules()) {
+ for (IModule childModule : getChildModules()) {
// Special handling of par nested wars with bundle nature
- if (FacetUtils.hasProjectFacet(module.getProject(), FacetCorePlugin.WEB_FACET_ID)) {
- moduleRelativePath = new Path(module.getProject().getName() + ".war");
- ModuleDelegate delegate = (ModuleDelegate) module.loadAdapter(ModuleDelegate.class, null);
+ if (FacetUtils.hasProjectFacet(childModule.getProject(), FacetCorePlugin.WEB_FACET_ID)) {
+ moduleRelativePath = new Path(childModule.getProject().getName() + ".war");
+ ModuleDelegate delegate = (ModuleDelegate) childModule.loadAdapter(ModuleDelegate.class, null);
IModuleResource[] members = delegate.members();
for (IModuleResource member : members) {
@@ -143,38 +168,39 @@ public class ServerModuleDelegate extends ProjectModule {
}
}
// All other bundles project nested in a par
- else if (FacetUtils.isBundleProject(module.getProject())) {
- String moduleFolderName = module.getProject().getName() + ".jar";
+ else if (FacetUtils.isBundleProject(childModule.getProject())) {
+ String moduleFolderName = childModule.getProject().getName() + ".jar";
moduleRelativePath = new Path(moduleFolderName);
ModuleFolder folder = new ModuleFolder(null, moduleFolderName, Path.EMPTY);
- folder.setMembers(getMembers(module.getProject(), moduleRelativePath).toArray(new IModuleResource[0]));
+ folder.setMembers(getMembers(childModule.getProject(), moduleRelativePath).toArray(new IModuleResource[0]));
resources.add(folder);
}
}
}
// handling for plan projects
- else if (getModule().getModuleType().getId().equals(FacetCorePlugin.PLAN_FACET_ID)) {
+ else if (module.getModuleType().getId().equals(FacetCorePlugin.PLAN_FACET_ID)) {
// Get the plan file
- String fileName = getModule().getId();
+ String fileName = module.getId();
fileName = fileName.substring(fileName.indexOf(':') + 1);
IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(fileName));
if (!file.exists()) {
- return resources.toArray(new IModuleResource[resources.size()]);
+ return;
}
ModuleFile planFile = new ModuleFile(file, file.getName(), moduleRelativePath);
resources.add(planFile);
// Iterate nested bundle projects
- for (IModule module : getChildModules()) {
+ ModuleDelegate delegate0 = (ModuleDelegate) module.loadAdapter(ModuleDelegate.class, null);
+ for (IModule childModule : delegate0.getChildModules()) {
// Special handling of par nested wars with bundle nature
- if (FacetUtils.hasProjectFacet(module.getProject(), FacetCorePlugin.WEB_FACET_ID)) {
- moduleRelativePath = new Path(module.getProject().getName() + ".war");
- ModuleDelegate delegate = (ModuleDelegate) module.loadAdapter(ModuleDelegate.class, null);
+ if (FacetUtils.hasProjectFacet(childModule.getProject(), FacetCorePlugin.WEB_FACET_ID)) {
+ moduleRelativePath = new Path(childModule.getProject().getName() + ".war");
+ ModuleDelegate delegate1 = (ModuleDelegate) childModule.loadAdapter(ModuleDelegate.class, null);
- IModuleResource[] members = delegate.members();
+ IModuleResource[] members = delegate1.members();
for (IModuleResource member : members) {
if (member instanceof IModuleFile) {
resources.add(new ParModuleFile((IModuleFile) member, moduleRelativePath));
@@ -184,17 +210,20 @@ public class ServerModuleDelegate extends ProjectModule {
}
}
// All other bundles project nested in a par
- else if (FacetUtils.isBundleProject(module.getProject())) {
- String moduleFolderName = module.getProject().getName() + ".jar";
+ else if (FacetUtils.isBundleProject(childModule.getProject())) {
+ String moduleFolderName = childModule.getProject().getName() + ".jar";
moduleRelativePath = new Path(moduleFolderName);
ModuleFolder folder = new ModuleFolder(null, moduleFolderName, Path.EMPTY);
- folder.setMembers(getMembers(module.getProject(), moduleRelativePath).toArray(new IModuleResource[0]));
+ folder.setMembers(getMembers(childModule.getProject(), moduleRelativePath).toArray(new IModuleResource[0]));
resources.add(folder);
- } else if (FacetUtils.isParProject(module.getProject())) {
- moduleRelativePath = new Path(module.getProject().getName() + ".par");
- ModuleDelegate delegate = (ModuleDelegate) module.loadAdapter(ModuleDelegate.class, null);
-
- IModuleResource[] members = delegate.members();
+ } else if (FacetUtils.isPlanProject(childModule.getProject())) {
+ // enter recursion
+ deepGetMembers(childModule, resources);
+ } else if (FacetUtils.isParProject(childModule.getProject())) {
+ moduleRelativePath = new Path(childModule.getProject().getName() + ".par");
+ ModuleDelegate delegate2 = (ModuleDelegate) childModule.loadAdapter(ModuleDelegate.class, null);
+
+ IModuleResource[] members = delegate2.members();
for (IModuleResource member : members) {
if (member instanceof IModuleFile) {
resources.add(new ParModuleFile((IModuleFile) member, moduleRelativePath));
@@ -204,9 +233,8 @@ public class ServerModuleDelegate extends ProjectModule {
}
}
}
- }
- return resources.toArray(new IModuleResource[resources.size()]);
+ }
}
/**
@@ -474,13 +502,24 @@ public class ServerModuleDelegate extends ProjectModule {
return true;
}
- public Set<IModule> getPlanDependencies(IFile file) {
+ private Set<IModule> getPlanDependencies(IFile file) {
if (file == null || !file.exists()) {
return Collections.emptySet();
}
Set<IModule> modules = new HashSet<IModule>();
+ /* add recursion to collect nested plans */
+ getPlanDependencies0(file, modules);
+
+ return modules;
+ }
+
+ private void getPlanDependencies0(IFile file, Set<IModule> modules) {
+ if (file == null || !file.exists()) {
+ return;
+ }
+
try {
DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = docBuilder.parse(file.getContents(true));
@@ -511,6 +550,21 @@ public class ServerModuleDelegate extends ProjectModule {
}
}
}
+ } else if ("plan".equals(type)) {
+ List<IFile> nested = FacetUtils.getNestedPlanFiles(file, false);
+ for (IFile iFile : nested) {
+ IModule[] mmmm = ServerUtil.getModules(iFile.getProject());
+ for (IModule iModule : mmmm) {
+ String fileName = iModule.getId();
+ fileName = fileName.substring(fileName.indexOf(':') + 1);
+ IFile file2 = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(fileName));
+ if (iFile.equals(file2)) {
+ modules.add(iModule);
+ break;
+ }
+ }
+
+ }
} else if ("par".equals(type)) {
IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
for (IProject candidate : projects) {
@@ -540,6 +594,5 @@ public class ServerModuleDelegate extends ProjectModule {
new Status(IStatus.ERROR, "Problem while getting plan dependencies.", BundleManifestCorePlugin.PLUGIN_ID, e));
}
- return modules;
}
}
diff --git a/org.eclipse.virgo.ide.manifest.core/src/org/eclipse/virgo/ide/module/core/ServerModuleFactoryDelegate.java b/org.eclipse.virgo.ide.manifest.core/src/org/eclipse/virgo/ide/module/core/ServerModuleFactoryDelegate.java
index 2f82438..a137701 100644
--- a/org.eclipse.virgo.ide.manifest.core/src/org/eclipse/virgo/ide/module/core/ServerModuleFactoryDelegate.java
+++ b/org.eclipse.virgo.ide.manifest.core/src/org/eclipse/virgo/ide/module/core/ServerModuleFactoryDelegate.java
@@ -12,11 +12,11 @@
package org.eclipse.virgo.ide.module.core;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
-import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
@@ -24,10 +24,6 @@ import org.eclipse.core.resources.IResourceVisitor;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
-import org.eclipse.jdt.core.IClasspathEntry;
-import org.eclipse.jdt.core.IJavaProject;
-import org.eclipse.jdt.core.JavaCore;
-import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.virgo.ide.facet.core.FacetCorePlugin;
import org.eclipse.virgo.ide.facet.core.FacetUtils;
import org.eclipse.wst.server.core.IModule;
@@ -75,46 +71,11 @@ public class ServerModuleFactoryDelegate extends ProjectModuleFactoryDelegate {
// Every project can also be a plan project
if (FacetUtils.isPlanProject(project)) {
-
- // Collect output locations if java project
- final Set<IPath> outputLocations = new HashSet<IPath>();
- try {
- if (FacetUtils.hasNature(project, JavaCore.NATURE_ID)) {
- IJavaProject je = JavaCore.create(project);
- try {
- outputLocations.add(je.getOutputLocation());
- for (IClasspathEntry entry : je.getRawClasspath()) {
- if (entry.getEntryKind() == IClasspathEntry.CPE_SOURCE) {
- if (entry.getOutputLocation() != null) {
- outputLocations.add(entry.getOutputLocation());
- }
- }
- }
- } catch (JavaModelException e) {
- // safe to ignore
- }
- }
- project.accept(new IResourceVisitor() {
-
- public boolean visit(IResource resource) throws CoreException {
- if (resource instanceof IFile && resource.getName().endsWith(".plan")) {
- modules.add(createModule(resource.getFullPath().toString(),
- resource.getProject().getName() + "/" + resource.getProjectRelativePath().toString(), FacetCorePlugin.PLAN_FACET_ID,
- "2.0", project));
- } else if (resource instanceof IContainer) {
- IPath path = ((IContainer) resource).getFullPath();
- for (IPath outputLocation : outputLocations) {
- if (outputLocation.isPrefixOf(path)) {
- return false;
- }
- }
- return true;
- }
- return true;
- }
- });
- } catch (CoreException e) {
- // TODO CD log exception
+ Collection<IFile> files = FacetUtils.getPlansInPlanProject(project);
+ for (IFile resource : files) {
+ modules.add(createModule(resource.getFullPath().toString(),
+ resource.getProject().getName() + "/" + resource.getProjectRelativePath().toString(), FacetCorePlugin.PLAN_FACET_ID, "2.0",
+ project));
}
}
return modules.toArray(new IModule[modules.size()]);
diff --git a/org.eclipse.virgo.ide.pde.core/src/org/eclipse/virgo/ide/pde/core/internal/cmd/SetupProjectOperation.java b/org.eclipse.virgo.ide.pde.core/src/org/eclipse/virgo/ide/pde/core/internal/cmd/SetupProjectOperation.java
index a763f74..8de05c1 100644
--- a/org.eclipse.virgo.ide.pde.core/src/org/eclipse/virgo/ide/pde/core/internal/cmd/SetupProjectOperation.java
+++ b/org.eclipse.virgo.ide.pde.core/src/org/eclipse/virgo/ide/pde/core/internal/cmd/SetupProjectOperation.java
@@ -1,10 +1,17 @@
+/*******************************************************************************
+ * Copyright (c) 2015 GianMaria Romanato
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * GianMaria Romanato - initial API and implementation
+ *******************************************************************************/
package org.eclipse.virgo.ide.pde.core.internal.cmd;
import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.text.MessageFormat;
import java.util.ArrayList;
@@ -27,6 +34,7 @@ import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.pde.core.project.IBundleProjectDescription;
import org.eclipse.pde.core.project.IBundleProjectService;
+import org.eclipse.virgo.ide.facet.core.AbstractOperation;
import org.eclipse.virgo.ide.facet.core.FacetCorePlugin;
import org.eclipse.virgo.ide.pde.core.internal.Constants;
import org.eclipse.wst.common.project.facet.core.IFacetedProject;
@@ -40,7 +48,7 @@ import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
* PDE project that has been modified after initial creation.
* <p>
*/
-public class SetupProjectOperation implements IWorkspaceRunnable {
+public class SetupProjectOperation extends AbstractOperation implements IWorkspaceRunnable {
private static final String WST_FACET_NATURE = org.eclipse.wst.common.project.facet.core.internal.FacetCorePlugin.PLUGIN_ID + ".nature"; //$NON-NLS-1$
@@ -187,31 +195,6 @@ public class SetupProjectOperation implements IWorkspaceRunnable {
}
}
- private String readResourceFromClassPath(String path, String charset) throws CoreException {
- InputStream is = getClass().getResourceAsStream(path);
- if (is != null) {
- try {
- InputStreamReader r = new InputStreamReader(is, charset);
- StringBuilder sb = new StringBuilder();
- int c;
- while ((c = r.read()) != -1) {
- sb.append((char) c);
- }
- return sb.toString();
- } catch (IOException e) {
- throw new CoreException(new Status(IStatus.ERROR, Constants.PLUGIN_ID, e.getMessage(), e));
- } finally {
- try {
- is.close();
- } catch (IOException e) {
- }
- }
- } else {
- throw new CoreException(new Status(IStatus.ERROR, Constants.PLUGIN_ID, "Template file missing " + path)); //$NON-NLS-1$
- }
-
- }
-
private IPath configureWABClasspath(IProject project) throws CoreException, JavaModelException {
IJavaProject javaProject = (IJavaProject) project.getNature(JavaCore.NATURE_ID);
javaProject.setOutputLocation(project.getFullPath().append(BIN), null);
diff --git a/org.eclipse.virgo.ide.runtime.core/META-INF/MANIFEST.MF b/org.eclipse.virgo.ide.runtime.core/META-INF/MANIFEST.MF
index 3cb568f..9b07734 100644
--- a/org.eclipse.virgo.ide.runtime.core/META-INF/MANIFEST.MF
+++ b/org.eclipse.virgo.ide.runtime.core/META-INF/MANIFEST.MF
@@ -51,8 +51,7 @@ Require-Bundle: org.eclipse.ui,
org.eclipse.libra.framework.editor.core;bundle-version="0.1.0",
org.eclipse.libra.framework.editor.ui;bundle-version="0.1.0",
org.eclipse.jdt.ui
-Import-Package: org.apache.commons.collections.collection,
- org.apache.commons.lang,
+Import-Package: org.apache.commons.lang,
org.apache.commons.logging
Export-Package: org.eclipse.virgo.ide.bundlerepository.domain,
org.eclipse.virgo.ide.internal.utils.json,
diff --git a/org.eclipse.virgo.ide.runtime.core/src/org/eclipse/virgo/ide/runtime/core/IServerBehaviour.java b/org.eclipse.virgo.ide.runtime.core/src/org/eclipse/virgo/ide/runtime/core/IServerBehaviour.java
index c37ee9f..b685c20 100644
--- a/org.eclipse.virgo.ide.runtime.core/src/org/eclipse/virgo/ide/runtime/core/IServerBehaviour.java
+++ b/org.eclipse.virgo.ide.runtime.core/src/org/eclipse/virgo/ide/runtime/core/IServerBehaviour.java
@@ -58,4 +58,10 @@ public interface IServerBehaviour extends IURLProvider {
void onModulePublishStateChange(IModule[] modules, int publishStateNone);
+ /**
+ * Returns the server deploy directory. This corresponds to the stage folder created
+ * by the Virgo Tools within the Virgo home folder.
+ */
+ public IPath getServerDeployDirectory();
+
}
diff --git a/org.eclipse.virgo.ide.runtime.core/src/org/eclipse/virgo/ide/runtime/internal/core/Server.java b/org.eclipse.virgo.ide.runtime.core/src/org/eclipse/virgo/ide/runtime/internal/core/Server.java
index 8f3481a..87f079f 100644
--- a/org.eclipse.virgo.ide.runtime.core/src/org/eclipse/virgo/ide/runtime/internal/core/Server.java
+++ b/org.eclipse.virgo.ide.runtime.core/src/org/eclipse/virgo/ide/runtime/internal/core/Server.java
@@ -7,6 +7,7 @@
*
* Contributors:
* SpringSource, a division of VMware, Inc. - initial API and implementation
+ * GianMaria Romanato - support for nested plans
*******************************************************************************/
package org.eclipse.virgo.ide.runtime.internal.core;
@@ -53,6 +54,7 @@ import org.eclipse.wst.server.core.model.ServerDelegate;
*
* @author Christian Dupuis
* @author Leo Dos Santos
+ * @author GianMaria Romanato
* @since 1.0.0
*/
public class Server extends ServerDelegate implements IServer, IServerWorkingCopy {
@@ -140,7 +142,7 @@ public class Server extends ServerDelegate implements IServer, IServerWorkingCop
IModuleType moduleType = module[0].getModuleType();
- if (module.length == 1 && moduleType != null) {
+ if (module.length > 0 && moduleType != null) {
if (FacetCorePlugin.WEB_FACET_ID.equals(moduleType.getId())) {
IWebModule webModule = (IWebModule) module[0].loadAdapter(IWebModule.class, null);
if (webModule != null) {
@@ -153,7 +155,13 @@ public class Server extends ServerDelegate implements IServer, IServerWorkingCop
return parModule.getChildModules();
}
} else if (FacetCorePlugin.PLAN_FACET_ID.equals(moduleType.getId())) {
- ServerModuleDelegate planModule = (ServerModuleDelegate) module[0].loadAdapter(ServerModuleDelegate.class, null);
+ /*
+ * To support nested plans now the tooling creates an IModule tree where top level plans have nested
+ * plans or bundles as children. WTP is passing back the path from the root to a given module as a
+ * parameter to this method to get the children, so here children are computed only for the last item in
+ * the list (module.length -1)
+ **/
+ ServerModuleDelegate planModule = (ServerModuleDelegate) module[module.length - 1].loadAdapter(ServerModuleDelegate.class, null);
if (planModule != null) {
return planModule.getChildModules();
}
diff --git a/org.eclipse.virgo.ide.runtime.core/src/org/eclipse/virgo/ide/runtime/internal/core/ServerPublishOperation.java b/org.eclipse.virgo.ide.runtime.core/src/org/eclipse/virgo/ide/runtime/internal/core/ServerPublishOperation.java
index 630c079..b8fb6f9 100644
--- a/org.eclipse.virgo.ide.runtime.core/src/org/eclipse/virgo/ide/runtime/internal/core/ServerPublishOperation.java
+++ b/org.eclipse.virgo.ide.runtime.core/src/org/eclipse/virgo/ide/runtime/internal/core/ServerPublishOperation.java
@@ -83,6 +83,7 @@ public class ServerPublishOperation extends PublishOperation {
boolean shouldReployChild = false;
IProject project = this.modules[0].getProject();
+ // not a bundle, not a par, not a plan -> a WST Web Project
if (!FacetUtils.isBundleProject(project) && !FacetUtils.isParProject(project)
&& ServerUtils.getServer(this.server).getChildModules(this.modules) != null && !FacetUtils.isPlanProject(project)) {
for (IModule module : ServerUtils.getServer(this.server).getChildModules(this.modules)) {
@@ -110,42 +111,6 @@ public class ServerPublishOperation extends PublishOperation {
}
/**
- * Checks if the given <code>file</code> is a root node that is a known Spring namespace.
- */
- // private boolean checkIfSpringConfigurationFile(IFile file) {
- // IStructuredModel model = null;
- // try {
- // model =
- // StructuredModelManager.getModelManager().getExistingModelForRead(file);
- // if (model == null) {
- // model = StructuredModelManager.getModelManager().getModelForRead(file);
- // }
- // if (model != null) {
- // IDOMDocument document = ((DOMModelImpl) model).getDocument();
- // if (document != null && document.getDocumentElement() != null) {
- // String namespaceUri = document.getDocumentElement().getNamespaceURI();
- // if (NamespaceUtils.DEFAULT_NAMESPACE_URI.equals(namespaceUri)
- // || new
- // DelegatingNamespaceHandlerResolver(JdtUtils.getClassLoader(file.getProject(),
- // null),
- // null).resolve(namespaceUri) != null) {
- // return false;
- // }
- // }
- // }
- // }
- // catch (Exception e) {
- // }
- // finally {
- // if (model != null) {
- // model.releaseFromRead();
- // }
- // model = null;
- // }
- // return true;
- // }
-
- /**
* Check if resource delta only contains static resources
*/
private boolean onlyStaticResources(IModuleResourceDelta delta, Set<IModuleFile> files) {
diff --git a/org.eclipse.virgo.ide.runtime.core/src/org/eclipse/virgo/ide/runtime/internal/core/command/JmxServerDeployCommand.java b/org.eclipse.virgo.ide.runtime.core/src/org/eclipse/virgo/ide/runtime/internal/core/command/JmxServerDeployCommand.java
index 48437fe..6829e77 100644
--- a/org.eclipse.virgo.ide.runtime.core/src/org/eclipse/virgo/ide/runtime/internal/core/command/JmxServerDeployCommand.java
+++ b/org.eclipse.virgo.ide.runtime.core/src/org/eclipse/virgo/ide/runtime/internal/core/command/JmxServerDeployCommand.java
@@ -7,6 +7,7 @@
*
* Contributors:
* SpringSource, a division of VMware, Inc. - initial API and implementation
+ * GianMaria Romanato - bug fixing
*******************************************************************************/
package org.eclipse.virgo.ide.runtime.internal.core.command;
@@ -31,7 +32,7 @@ import org.eclipse.wst.server.core.IModule;
* @author Christian Dupuis
* @since 1.0.1
*/
-public class JmxServerDeployCommand extends AbstractJmxServerDeployerCommand<CompositeData>implements IServerCommand<DeploymentIdentity> {
+public class JmxServerDeployCommand extends AbstractJmxServerDeployerCommand<CompositeData> implements IServerCommand<DeploymentIdentity> {
private static final String ITEM_SYMBOLIC_NAME = "symbolicName"; //$NON-NLS-1$
@@ -88,7 +89,7 @@ public class JmxServerDeployCommand extends AbstractJmxServerDeployerCommand<Com
@Override
protected Object[] getOperationArguments() {
URI uri = null;
- if (this.module.getModuleType().getId().equals(FacetCorePlugin.PLAN_FACET_ID)) {
+ if (isPlan()) {
String fileName = this.module.getId();
fileName = fileName.substring(fileName.lastIndexOf('/') + 1);
uri = getUri(this.serverBehaviour.getModuleDeployUri(this.module).append(fileName));
@@ -98,6 +99,10 @@ public class JmxServerDeployCommand extends AbstractJmxServerDeployerCommand<Com
return new Object[] { uri.toString(), false };
}
+ private boolean isPlan() {
+ return this.module.getModuleType().getId().equals(FacetCorePlugin.PLAN_FACET_ID);
+ }
+
/**
* {@inheritDoc}
*/
diff --git a/org.eclipse.virgo.ide.ui/plugin.properties b/org.eclipse.virgo.ide.ui/plugin.properties
index 9b18382..f0354a3 100644
--- a/org.eclipse.virgo.ide.ui/plugin.properties
+++ b/org.eclipse.virgo.ide.ui/plugin.properties
@@ -2,4 +2,7 @@ pluginName=Eclipse Virgo IDE (UI)
providerName=Eclipse.org - Virgo
pdeProjectWizard.name=PDE Bundle Project
-pdeProjectWizard.desc=Create a new PDE bundle project \ No newline at end of file
+pdeProjectWizard.desc=Create a new PDE bundle project
+
+planProjectWizard.name=Plan Project
+planProjectWizard.desc=Create a new Plan project \ No newline at end of file
diff --git a/org.eclipse.virgo.ide.ui/plugin.xml b/org.eclipse.virgo.ide.ui/plugin.xml
index 24febeb..13a5121 100644
--- a/org.eclipse.virgo.ide.ui/plugin.xml
+++ b/org.eclipse.virgo.ide.ui/plugin.xml
@@ -9,6 +9,7 @@
*
* Contributors:
* SpringSource - initial API and implementation
+ * GianMaria Romanato - new wizards and bugfixes
*******************************************************************************/
-->
<plugin>
@@ -58,6 +59,20 @@
%pdeProjectWizard.desc
</description>
</wizard>
+ <wizard
+ category="org.eclipse.virgo.ide.ui.category"
+ class="org.eclipse.virgo.ide.ui.wizards.NewPlanProjectWizard"
+ finalPerspective="org.eclipse.virgo.ide.runtime.ui.perspective"
+ hasPages="true"
+ icon="icons/full/obj16/par_project_obj.gif"
+ id="org.eclipse.virgo.ide.ui.planprojectwizard"
+ name="%planProjectWizard.name"
+ project="true">
+ <description>
+ %planProjectWizard.desc
+ </description>
+ </wizard>
+
</extension>
@@ -370,6 +385,9 @@
</newWizardShortcut>
<newWizardShortcut
id="org.eclipse.virgo.ide.ui.pdeprojectwizard">
+ </newWizardShortcut>
+ <newWizardShortcut
+ id="org.eclipse.virgo.ide.ui.planprojectwizard">
</newWizardShortcut>
<newWizardShortcut
id="org.eclipse.virgo.ide.ui.wizards.parProject">
@@ -558,6 +576,26 @@
</or>
</enablement>
</commonWizard>
+ <commonWizard
+ type="new"
+ wizardId="org.eclipse.virgo.ide.ui.planprojectwizard">
+ <enablement>
+ <or>
+ <with
+ variable="selection">
+ <count
+ value="0">
+ </count>
+ </with>
+ <instanceof
+ value="org.eclipse.core.resources.IProject">
+ </instanceof>
+ <instanceof
+ value="org.eclipse.core.resources.IWorkspaceRoot">
+ </instanceof>
+</or>
+ </enablement>
+ </commonWizard>
</extension>
<extension
point="org.eclipse.ui.views">
diff --git a/org.eclipse.virgo.ide.ui/src/org/eclipse/virgo/ide/ui/internal/actions/ConvertPlugInProject.java b/org.eclipse.virgo.ide.ui/src/org/eclipse/virgo/ide/ui/internal/actions/ConvertPlugInProject.java
index 7935133..3060f10 100644
--- a/org.eclipse.virgo.ide.ui/src/org/eclipse/virgo/ide/ui/internal/actions/ConvertPlugInProject.java
+++ b/org.eclipse.virgo.ide.ui/src/org/eclipse/virgo/ide/ui/internal/actions/ConvertPlugInProject.java
@@ -1,3 +1,13 @@
+/*******************************************************************************
+ * Copyright (c) 2016 GianMaria Romanato
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * GianMaria Romanato - initial API and implementation
+ *******************************************************************************/
package org.eclipse.virgo.ide.ui.internal.actions;
@@ -55,8 +65,7 @@ public class ConvertPlugInProject extends AbstractConvertAction implements IObje
@Override
protected boolean showConfirmationDialog() {
- return MessageDialog.openQuestion(this.part.getSite().getShell(), Messages.ConvertPlugInProject_title,
- Messages.ConvertPlugInProject_message);
+ return MessageDialog.openQuestion(this.part.getSite().getShell(), Messages.ConvertPlugInProject_title, Messages.ConvertPlugInProject_message);
}
}
diff --git a/org.eclipse.virgo.ide.ui/src/org/eclipse/virgo/ide/ui/wizards/Messages.java b/org.eclipse.virgo.ide.ui/src/org/eclipse/virgo/ide/ui/wizards/Messages.java
index c5babfd..3006a53 100644
--- a/org.eclipse.virgo.ide.ui/src/org/eclipse/virgo/ide/ui/wizards/Messages.java
+++ b/org.eclipse.virgo.ide.ui/src/org/eclipse/virgo/ide/ui/wizards/Messages.java
@@ -45,6 +45,18 @@ public class Messages extends NLS {
public static String NewPDEProjectWizard_title;
+ public static String NewPlanProjectFilePage_atomic_label;
+
+ public static String NewPlanProjectFilePage_scoped_label;
+
+ public static String NewPlanProjectNamePage_description;
+
+ public static String NewPlanProjectNamePage_plan_label;
+
+ public static String NewPlanProjectNamePage_title;
+
+ public static String NewPlanProjectWizard_title;
+
public static String ProjectContentPageStrings_bundle_content;
public static String ProjectContentPageStrings_bundle_content_desc;
diff --git a/org.eclipse.virgo.ide.ui/src/org/eclipse/virgo/ide/ui/wizards/NewPlanProjectFilePage.java b/org.eclipse.virgo.ide.ui/src/org/eclipse/virgo/ide/ui/wizards/NewPlanProjectFilePage.java
new file mode 100644
index 0000000..e791667
--- /dev/null
+++ b/org.eclipse.virgo.ide.ui/src/org/eclipse/virgo/ide/ui/wizards/NewPlanProjectFilePage.java
@@ -0,0 +1,138 @@
+/*******************************************************************************
+ * Copyright (c) 2015 GianMaria Romanato
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * GianMaria Romanato - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.virgo.ide.ui.wizards;
+
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * A wizard page for specifying a Web Bundle context root.
+ * <p />
+ *
+ */
+public class NewPlanProjectFilePage extends WizardPage {
+
+ /**
+ * The page name.
+ */
+ public static final String PAGE_NAME = NewPlanProjectFilePage.class.getSimpleName();
+
+ public NewPlanProjectFilePage() {
+ super(PAGE_NAME);
+ setTitle(Messages.NewPlanProjectNamePage_title);
+ setDescription(Messages.NewPlanProjectNamePage_description);
+ }
+
+ private String planName;
+
+ private Label planNameLabel;
+
+ private Text planNameText;
+
+ private Button scoped;
+
+ private Button atomic;
+
+ /**
+ * {@inheritDoc}
+ */
+ public void createControl(Composite parent) {
+ Composite container = new Composite(parent, SWT.NONE);
+ container.setLayout(new GridLayout());
+ createContextRootSection(container);
+ setControl(container);
+ }
+
+ /**
+ * Creates the context root text field.
+ *
+ * @param container the parent composite
+ */
+ protected void createContextRootSection(Composite container) {
+ container.setLayout(new GridLayout(3, false));
+ container.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ this.planNameLabel = new Label(container, SWT.NONE);
+ this.planNameLabel.setText(Messages.NewPlanProjectNamePage_plan_label);
+
+ this.planNameText = new Text(container, SWT.BORDER | SWT.SINGLE);
+ GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).grab(true, false).span(2, 1).applyTo(this.planNameText);
+
+ this.scoped = new Button(container, SWT.CHECK);
+ scoped.setText(Messages.NewPlanProjectFilePage_scoped_label);
+ scoped.setSelection(false);
+
+ this.atomic = new Button(container, SWT.CHECK);
+ atomic.setText(Messages.NewPlanProjectFilePage_atomic_label);
+ atomic.setSelection(true);
+
+ this.planNameText.addModifyListener(new ModifyListener() {
+
+ public void modifyText(ModifyEvent e) {
+ NewPlanProjectFilePage.this.modifyText(e);
+ }
+ });
+ }
+
+ /**
+ * Validates the context root.
+ *
+ * @param e the modify event fired by the text widget
+ */
+ protected void modifyText(ModifyEvent e) {
+ planName = null;
+
+ String name = planNameText.getText();
+
+ IStatus nameStatus = ResourcesPlugin.getWorkspace().validateName(name, IResource.FILE);
+
+ if (!nameStatus.isOK()) {
+ setErrorMessage(nameStatus.getMessage());
+ setPageComplete(false);
+ return;
+ }
+
+ planName = name;
+ setPageComplete(true);
+ setErrorMessage(null);
+ }
+
+ /**
+ * Returns the value of the plan name.
+ *
+ * @return the plan name
+ */
+ public String getPlanName() {
+ return planName;
+ }
+
+ public boolean isScoped() {
+ return scoped.getSelection();
+ }
+
+ public boolean isAtomic() {
+ return atomic.getSelection();
+ }
+
+}
diff --git a/org.eclipse.virgo.ide.ui/src/org/eclipse/virgo/ide/ui/wizards/NewPlanProjectWizard.java b/org.eclipse.virgo.ide.ui/src/org/eclipse/virgo/ide/ui/wizards/NewPlanProjectWizard.java
new file mode 100644
index 0000000..59ee936
--- /dev/null
+++ b/org.eclipse.virgo.ide.ui/src/org/eclipse/virgo/ide/ui/wizards/NewPlanProjectWizard.java
@@ -0,0 +1,105 @@
+/*******************************************************************************
+ * Copyright (c) 2016 GianMaria Romanato
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * GianMaria Romanato - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.virgo.ide.ui.wizards;
+
+import java.lang.reflect.InvocationTargetException;
+import java.net.URI;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.pde.internal.ui.wizards.NewWizard;
+import org.eclipse.ui.IEditorDescriptor;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.dialogs.WizardNewProjectCreationPage;
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.statushandlers.StatusManager;
+import org.eclipse.virgo.ide.facet.core.CreatePlanProjectOperation;
+import org.eclipse.virgo.ide.ui.ServerIdeUiPlugin;
+
+public class NewPlanProjectWizard extends NewWizard {
+
+ WizardNewProjectCreationPage mainPage;
+
+ private NewPlanProjectFilePage planPage;
+
+ public NewPlanProjectWizard() {
+ super();
+ setWindowTitle(Messages.NewPlanProjectWizard_title);
+ setDefaultPageImageDescriptor(ServerIdeUiPlugin.getImageDescriptor("full/wizban/wizban-par.png")); //$NON-NLS-1$
+ setNeedsProgressMonitor(true);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void addPages() {
+ super.addPages();
+ mainPage = new WizardNewProjectCreationPage("planPage");
+ mainPage.setTitle(Messages.NewPlanProjectNamePage_title);
+ mainPage.setDescription(Messages.NewPlanProjectNamePage_description);
+ addPage(mainPage);
+ planPage = new NewPlanProjectFilePage();
+ addPage(planPage);
+ }
+
+ @Override
+ public boolean performFinish() {
+
+ URI location = null;
+ if (!mainPage.useDefaults()) {
+ location = mainPage.getLocationURI();
+ }
+
+ String name = planPage.getPlanName();
+ boolean atomic = planPage.isAtomic();
+ boolean scoped = planPage.isScoped();
+
+ final CreatePlanProjectOperation operation = new CreatePlanProjectOperation(mainPage.getProjectHandle(), location, name, scoped, atomic,
+ getShell());
+
+ try {
+ getContainer().run(true, false, new IRunnableWithProgress() {
+
+ public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
+ try {
+ ResourcesPlugin.getWorkspace().run(operation, monitor);
+ } catch (CoreException e) {
+ StatusManager.getManager().handle(e.getStatus(), StatusManager.LOG | StatusManager.SHOW);
+ }
+ }
+ });
+ } catch (Exception e) {
+ IStatus s = new Status(IStatus.ERROR, ServerIdeUiPlugin.PLUGIN_ID, e.getMessage(), e);
+ StatusManager.getManager().handle(s, StatusManager.LOG | StatusManager.SHOW);
+ }
+
+
+ IFile file = operation.getPlanFile();
+ if (file!=null) {
+ IEditorDescriptor editorDesc = PlatformUI.getWorkbench().getEditorRegistry().getDefaultEditor(file.getName());
+ try {
+ PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().openEditor(new FileEditorInput(file), editorDesc.getId());
+ } catch (PartInitException e) {
+ // ignore
+ }
+ }
+ return true;
+ }
+
+}
diff --git a/org.eclipse.virgo.ide.ui/src/org/eclipse/virgo/ide/ui/wizards/messages.properties b/org.eclipse.virgo.ide.ui/src/org/eclipse/virgo/ide/ui/wizards/messages.properties
index 0152f53..32c0de3 100644
--- a/org.eclipse.virgo.ide.ui/src/org/eclipse/virgo/ide/ui/wizards/messages.properties
+++ b/org.eclipse.virgo.ide.ui/src/org/eclipse/virgo/ide/ui/wizards/messages.properties
@@ -17,6 +17,12 @@ NewPDEProjectWABPage_context_root=Context root:
NewPDEProjectWABPage_description=Specify a Context root if you want the project to be a WAB
NewPDEProjectWABPage_title=Web Application Bundle
NewPDEProjectWizard_title=New Virgo PDE Bundle Project
+NewPlanProjectFilePage_atomic_label=Atomic
+NewPlanProjectFilePage_scoped_label=Scoped
+NewPlanProjectNamePage_description=Create a new Plan project
+NewPlanProjectNamePage_plan_label=Plan name
+NewPlanProjectNamePage_title=New Plan project
+NewPlanProjectWizard_title=New Plan Project
ProjectContentPageStrings_bundle_content=Bundle Content
ProjectContentPageStrings_bundle_content_desc=Enter the data required to generate the bundle.
ProjectContentPageStrings_bundle_desc=Bundle Description
diff --git a/org.eclipse.virgo.ide/MarsTargetPlatform2.target b/org.eclipse.virgo.ide/MarsTargetPlatform2.target
new file mode 100644
index 0000000..8d8b20a
--- /dev/null
+++ b/org.eclipse.virgo.ide/MarsTargetPlatform2.target
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?pde version="3.8"?><target name="Virgo Target" sequenceNumber="102">
+<locations>
+<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="true" type="InstallableUnit">
+<unit id="org.eclipse.libra.framework.feature.feature.group" version="0.3.1.201405141436"/>
+<unit id="org.eclipse.libra.framework.editor.feature.feature.group" version="0.3.1.201405141436"/>
+<unit id="org.eclipse.libra.warproducts.feature.feature.group" version="0.3.1.201405141436"/>
+<unit id="org.eclipse.libra.facet.feature.feature.group" version="0.3.1.201405141436"/>
+<repository location="http://download.eclipse.org/libra/milestones"/>
+</location>
+<location path="${eclipse_home}" type="Profile"/>
+<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="true" type="InstallableUnit">
+<unit id="org.eclipse.virgo.medic.feature.group" version="3.6.4.RELEASE"/>
+<unit id="org.eclipse.virgo.kernel.feature.group" version="3.6.4.RELEASE"/>
+<unit id="org.eclipse.virgo.util.feature.group" version="3.6.4.RELEASE"/>
+<repository location="http://download.eclipse.org/virgo/updatesite/3.6.4.RELEASE"/>
+</location>
+<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="true" type="InstallableUnit">
+<unit id="org.eclipse.virgo.bundlor.feature.group" version="1.1.0.RELEASE"/>
+<repository location="http://download.eclipse.org/virgo/release/BNDLR/1.1.0.RELEASE/updatesite"/>
+</location>
+<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="true" type="InstallableUnit">
+<unit id="org.eclipse.orbit.build.feature.set1.feature.group" version="1.0.0.v201505191900-FK1FQbFSRLsJSwpFNlpe5-cPz-oD"/>
+<repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20150519210750/repository/"/>
+</location>
+<location path="/home/giamma/Virgo/other_bundles" type="Directory"/>
+</locations>
+</target>

Back to the top