jetty-start / fixing build + work towards demo-base
diff --git a/jetty-start/src/main/java/org/eclipse/jetty/start/DownloadArg.java b/jetty-start/src/main/java/org/eclipse/jetty/start/DownloadArg.java
new file mode 100644
index 0000000..837b33c
--- /dev/null
+++ b/jetty-start/src/main/java/org/eclipse/jetty/start/DownloadArg.java
@@ -0,0 +1,107 @@
+//
+//  ========================================================================
+//  Copyright (c) 1995-2013 Mort Bay Consulting Pty. Ltd.
+//  ------------------------------------------------------------------------
+//  All rights reserved. This program and the accompanying materials
+//  are made available under the terms of the Eclipse Public License v1.0
+//  and Apache License v2.0 which accompanies this distribution.
+//
+//      The Eclipse Public License is available at
+//      http://www.eclipse.org/legal/epl-v10.html
+//
+//      The Apache License v2.0 is available at
+//      http://www.opensource.org/licenses/apache2.0.php
+//
+//  You may elect to redistribute this code under either of these licenses.
+//  ========================================================================
+//
+
+package org.eclipse.jetty.start;
+
+public class DownloadArg
+{
+    public String uri;
+    public String location;
+
+    public DownloadArg(String uriLocation)
+    {
+        String parts[] = uriLocation.split(":",3);
+        if (parts.length != 3)
+        {
+            throw new IllegalArgumentException("Not <http uri>:<location>");
+        }
+        if (!"http".equalsIgnoreCase(parts[0]))
+        {
+            throw new IllegalArgumentException("Download only supports http protocol");
+        }
+        if (!parts[1].startsWith("//"))
+        {
+            throw new IllegalArgumentException("Download URI invalid: " + uriLocation);
+        }
+        this.uri = String.format("%s:%s",parts[0],parts[1]);
+        this.location = parts[2];
+    }
+
+    @Override
+    public boolean equals(Object obj)
+    {
+        if (this == obj)
+        {
+            return true;
+        }
+        if (obj == null)
+        {
+            return false;
+        }
+        if (getClass() != obj.getClass())
+        {
+            return false;
+        }
+        DownloadArg other = (DownloadArg)obj;
+        if (uri == null)
+        {
+            if (other.uri != null)
+            {
+                return false;
+            }
+        }
+        else if (!uri.equals(other.uri))
+        {
+            return false;
+        }
+        if (location == null)
+        {
+            if (other.location != null)
+            {
+                return false;
+            }
+        }
+        else if (!location.equals(other.location))
+        {
+            return false;
+        }
+        return true;
+    }
+
+    @Override
+    public int hashCode()
+    {
+        final int prime = 31;
+        int result = 1;
+        result = (prime * result) + ((uri == null)?0:uri.hashCode());
+        result = (prime * result) + ((location == null)?0:location.hashCode());
+        return result;
+    }
+
+    @Override
+    public String toString()
+    {
+        StringBuilder builder = new StringBuilder();
+        builder.append("DownloadArg [uri=");
+        builder.append(uri);
+        builder.append(", location=");
+        builder.append(location);
+        builder.append("]");
+        return builder.toString();
+    }
+}
\ No newline at end of file
diff --git a/jetty-start/src/test/java/org/eclipse/jetty/start/ModulesTest.java b/jetty-start/src/test/java/org/eclipse/jetty/start/ModulesTest.java
index fadd30c..70aac23 100644
--- a/jetty-start/src/test/java/org/eclipse/jetty/start/ModulesTest.java
+++ b/jetty-start/src/test/java/org/eclipse/jetty/start/ModulesTest.java
@@ -42,7 +42,7 @@
 
         Modules modules = new Modules();
         modules.registerAll(basehome);
-        Assert.assertThat("Module count",modules.count(),is(29));
+        Assert.assertThat("Module count",modules.count(),is(28));
     }
 
     @Test
diff --git a/jetty-start/src/test/resources/usecases/home/modules/demo.mod b/jetty-start/src/test/resources/usecases/home/modules/demo.mod
deleted file mode 100644
index af06453..0000000
--- a/jetty-start/src/test/resources/usecases/home/modules/demo.mod
+++ /dev/null
@@ -1,16 +0,0 @@
-#
-# Jetty Demo Module
-#
-
-DEPEND=jndi
-DEPEND=jaas
-DEPEND=rewrite
-DEPEND=client
-DEPEND=annotations
-DEPEND=websocket
-DEPEND=webapp
-
-LIB=demo/lib/*.jar
-
-demo/test-realm.xml
-demo/jetty-demo.xml
diff --git a/tests/test-webapps/test-jaas-webapp/pom.xml b/tests/test-webapps/test-jaas-webapp/pom.xml
index ba827d2..9e58548 100644
--- a/tests/test-webapps/test-jaas-webapp/pom.xml
+++ b/tests/test-webapps/test-jaas-webapp/pom.xml
@@ -34,7 +34,7 @@
               <!-- Mandatory. This system property tells JAAS where to find the login module configuration file -->
             <systemProperty>
               <name>java.security.auth.login.config</name>
-              <value>${basedir}/src/main/config/demo/login.conf</value>
+              <value>${basedir}/src/main/config/demo-base/etc/login.conf</value>
             </systemProperty>
           </systemProperties>
            <webAppConfig>
diff --git a/tests/test-webapps/test-jaas-webapp/src/main/config/demo/login.conf b/tests/test-webapps/test-jaas-webapp/src/main/config/demo-base/etc/login.conf
similarity index 65%
rename from tests/test-webapps/test-jaas-webapp/src/main/config/demo/login.conf
rename to tests/test-webapps/test-jaas-webapp/src/main/config/demo-base/etc/login.conf
index aa0736f..a97b0ed 100644
--- a/tests/test-webapps/test-jaas-webapp/src/main/config/demo/login.conf
+++ b/tests/test-webapps/test-jaas-webapp/src/main/config/demo-base/etc/login.conf
@@ -1,5 +1,5 @@
 xyz {
 org.eclipse.jetty.jaas.spi.PropertyFileLoginModule required
 debug="true"
-file="${jetty.home}/demo/login.properties";
+file="${jetty.base}/etc/login.properties";
 };
diff --git a/tests/test-webapps/test-jaas-webapp/src/main/config/demo/login.properties b/tests/test-webapps/test-jaas-webapp/src/main/config/demo-base/etc/login.properties
similarity index 100%
rename from tests/test-webapps/test-jaas-webapp/src/main/config/demo/login.properties
rename to tests/test-webapps/test-jaas-webapp/src/main/config/demo-base/etc/login.properties
diff --git a/tests/test-webapps/test-jaas-webapp/src/main/config/demo/webapps/test-jaas.xml b/tests/test-webapps/test-jaas-webapp/src/main/config/demo-base/webapps/test-jaas.xml
similarity index 100%
rename from tests/test-webapps/test-jaas-webapp/src/main/config/demo/webapps/test-jaas.xml
rename to tests/test-webapps/test-jaas-webapp/src/main/config/demo-base/webapps/test-jaas.xml
diff --git a/tests/test-webapps/test-jaas-webapp/src/main/webapp/index.html b/tests/test-webapps/test-jaas-webapp/src/main/webapp/index.html
index 5b4f50d..521db42 100644
--- a/tests/test-webapps/test-jaas-webapp/src/main/webapp/index.html
+++ b/tests/test-webapps/test-jaas-webapp/src/main/webapp/index.html
@@ -24,7 +24,7 @@
      etc/jetty-jaas.xml
     </pre>
   </p>
-  <p>For the jetty distribution demos, jaas is already enabled in the start.d/900-demo.ini file and sets the jaas.login.conf property to demo/login.conf  for use with the demo/webapps/test-jaas.war web application.  </p>
+  <p>For the jetty distribution demos, jaas is already enabled in the demo-base/start.ini file and sets the jaas.login.conf property to ${jetty.base}/etc/login.conf  for use with the demo-base/webapps/test-jaas.war web application.  </p>
 
 <p>The full source of this demonstration is available <a
 href="http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/tree/tests/test-webapps/test-jaas-webapp">here</a>.</p>
diff --git a/tests/test-webapps/test-jetty-webapp/pom.xml b/tests/test-webapps/test-jetty-webapp/pom.xml
index 231bde4..9b6377b 100644
--- a/tests/test-webapps/test-jetty-webapp/pom.xml
+++ b/tests/test-webapps/test-jetty-webapp/pom.xml
@@ -147,7 +147,7 @@
           <loginServices>
             <loginService implementation="org.eclipse.jetty.security.HashLoginService">
               <name>Test Realm</name>
-              <config>src/main/config/demo/realm.properties</config>
+              <config>src/main/config/demo-base/etc/realm.properties</config>
             </loginService>
           </loginServices>
         </configuration>
diff --git a/tests/test-webapps/test-jetty-webapp/src/main/assembly/embedded-jetty-web-for-webbundle.xml b/tests/test-webapps/test-jetty-webapp/src/main/assembly/embedded-jetty-web-for-webbundle.xml
index 8c10dad..911b947 100644
--- a/tests/test-webapps/test-jetty-webapp/src/main/assembly/embedded-jetty-web-for-webbundle.xml
+++ b/tests/test-webapps/test-jetty-webapp/src/main/assembly/embedded-jetty-web-for-webbundle.xml
@@ -28,7 +28,7 @@
   <Set name="extractWAR">true</Set>
   <Set name="copyWebDir">false</Set>
   <Set name="defaultsDescriptor"><SystemProperty name="jetty.home" default="."/>/etc/webdefault.xml</Set>
-  <Set name="overrideDescriptor"><SystemProperty name="jetty.base" default="."/>/demo/override-web.xml</Set>
+  <Set name="overrideDescriptor"><SystemProperty name="jetty.base" default="."/>/etc/override-web.xml</Set>
 
   <!-- virtual hosts
   <Set name="virtualHosts">
diff --git a/tests/test-webapps/test-jetty-webapp/src/main/assembly/web-bundle.xml b/tests/test-webapps/test-jetty-webapp/src/main/assembly/web-bundle.xml
index 95eb503..c220f51 100644
--- a/tests/test-webapps/test-jetty-webapp/src/main/assembly/web-bundle.xml
+++ b/tests/test-webapps/test-jetty-webapp/src/main/assembly/web-bundle.xml
@@ -27,7 +27,7 @@
       <destName>jetty-web.xml</destName>
     </file>
     <file>
-      <source>src/main/config/demo/realm.properties</source>
+      <source>src/main/config/demo-base/etc/realm.properties</source>
       <outputDirectory>WEB-INF</outputDirectory>
       <destName>realm.properties</destName>
     </file>
diff --git a/tests/test-webapps/test-jetty-webapp/src/main/config/demo/jetty-demo.xml b/tests/test-webapps/test-jetty-webapp/src/main/config/demo-base/etc/demo-rewrite-rules.xml
similarity index 80%
rename from tests/test-webapps/test-jetty-webapp/src/main/config/demo/jetty-demo.xml
rename to tests/test-webapps/test-jetty-webapp/src/main/config/demo-base/etc/demo-rewrite-rules.xml
index 36fefd1..35a8f87 100644
--- a/tests/test-webapps/test-jetty-webapp/src/main/config/demo/jetty-demo.xml
+++ b/tests/test-webapps/test-jetty-webapp/src/main/config/demo-base/etc/demo-rewrite-rules.xml
@@ -7,26 +7,6 @@
 <Configure id="Server" class="org.eclipse.jetty.server.Server">
 
   <!-- ============================================================= -->
-  <!-- Add demo/webapps to deployment manager scans                  -->
-  <!-- ============================================================= -->
-  <Ref refid="DeploymentManager">
-    <Call id="webappprovider" name="addAppProvider">
-      <Arg>
-        <New class="org.eclipse.jetty.deploy.providers.WebAppProvider">
-          <Set name="monitoredDirName"><Property name="jetty.base" default="." />/demo/webapps</Set>
-          <Set name="defaultsDescriptor"><Property name="jetty.home" default="." />/etc/webdefault.xml</Set>
-          <Set name="scanInterval">1</Set>
-          <Set name="extractWars">true</Set>
-          <Set name="configurationManager">
-            <New class="org.eclipse.jetty.deploy.PropertiesConfigurationManager"/>
-          </Set>
-        </New>
-      </Arg>
-    </Call>
-  </Ref>
-
-
-  <!-- ============================================================= -->
   <!-- Add rewrite rules                                             -->
   <!-- ============================================================= -->
   <Ref refid="Rewrite">
diff --git a/tests/test-webapps/test-jetty-webapp/src/main/config/demo/override-web.xml b/tests/test-webapps/test-jetty-webapp/src/main/config/demo-base/etc/override-web.xml
similarity index 100%
rename from tests/test-webapps/test-jetty-webapp/src/main/config/demo/override-web.xml
rename to tests/test-webapps/test-jetty-webapp/src/main/config/demo-base/etc/override-web.xml
diff --git a/tests/test-webapps/test-jetty-webapp/src/main/config/demo/realm.properties b/tests/test-webapps/test-jetty-webapp/src/main/config/demo-base/etc/realm.properties
similarity index 100%
rename from tests/test-webapps/test-jetty-webapp/src/main/config/demo/realm.properties
rename to tests/test-webapps/test-jetty-webapp/src/main/config/demo-base/etc/realm.properties
diff --git a/tests/test-webapps/test-jetty-webapp/src/main/config/demo/test-realm.xml b/tests/test-webapps/test-jetty-webapp/src/main/config/demo-base/etc/test-realm.xml
similarity index 96%
rename from tests/test-webapps/test-jetty-webapp/src/main/config/demo/test-realm.xml
rename to tests/test-webapps/test-jetty-webapp/src/main/config/demo-base/etc/test-realm.xml
index 97fccac..d5c776b 100644
--- a/tests/test-webapps/test-jetty-webapp/src/main/config/demo/test-realm.xml
+++ b/tests/test-webapps/test-jetty-webapp/src/main/config/demo-base/etc/test-realm.xml
@@ -12,7 +12,7 @@
       <Arg>
         <New class="org.eclipse.jetty.security.HashLoginService">
           <Set name="name">Test Realm</Set>
-          <Set name="config"><Property name="demo.realm" default="demo/realm.properties"/></Set>
+          <Set name="config"><Property name="demo.realm" default="etc/realm.properties"/></Set>
           <Set name="refreshInterval">0</Set>
         </New>
       </Arg>
diff --git a/tests/test-webapps/test-jetty-webapp/src/main/config/demo-base/start.ini b/tests/test-webapps/test-jetty-webapp/src/main/config/demo-base/start.ini
new file mode 100644
index 0000000..6600770
--- /dev/null
+++ b/tests/test-webapps/test-jetty-webapp/src/main/config/demo-base/start.ini
@@ -0,0 +1,33 @@
+#
+# Example of providing a demo configuration, using a ${jetty.base}
+# 
+
+# We want to serve content over http
+--module=http
+
+# Have webapps be deployed normally from webapps directory
+--module=deploy
+
+# We are using annotations + jndi
+--module=annotations
+--module=jndi
+
+# Enable security via jaas, and configure it
+--module=jaas
+jaas.login.conf=demo/login.conf
+
+# Enable rewrite examples
+--module=rewrite
+etc/demo-rewrite-rules.xml
+
+# The async behavior examples use http client to access remote systems
+--module=client
+
+# Websocket chat examples needs websocket enabled
+--module=websocket
+
+# Create and configure the test realm
+etc/test-realm.xml
+demo.realm=demo/realm.properties
+
+
diff --git a/tests/test-webapps/test-jetty-webapp/src/main/config/demo/webapps/test.xml b/tests/test-webapps/test-jetty-webapp/src/main/config/demo-base/webapps/test.xml
similarity index 97%
rename from tests/test-webapps/test-jetty-webapp/src/main/config/demo/webapps/test.xml
rename to tests/test-webapps/test-jetty-webapp/src/main/config/demo-base/webapps/test.xml
index b26d9fc..09f59b7 100644
--- a/tests/test-webapps/test-jetty-webapp/src/main/config/demo/webapps/test.xml
+++ b/tests/test-webapps/test-jetty-webapp/src/main/config/demo-base/webapps/test.xml
@@ -27,7 +27,7 @@
   <Set name="extractWAR">true</Set>
   <Set name="copyWebDir">false</Set>
   <Set name="defaultsDescriptor"><Property name="jetty.home" default="."/>/etc/webdefault.xml</Set>
-  <Set name="overrideDescriptor"><Property name="jetty.base" default="."/>/demo/override-web.xml</Set>
+  <Set name="overrideDescriptor"><Property name="jetty.base" default="."/>/etc/override-web.xml</Set>
   
 
   <!-- virtual hosts
@@ -55,7 +55,7 @@
     <Set name="loginService">
       <New class="org.eclipse.jetty.security.HashLoginService">
         <Set name="name">Test Realm</Set>
-        <Set name="config"><SystemProperty name="jetty.base" default="."/>/demo/realm.properties</Set>
+        <Set name="config"><SystemProperty name="jetty.base" default="."/>/etc/realm.properties</Set>
             <!-- To enable reload of realm when properties change, uncomment the following lines -->
             <!-- changing refreshInterval (in seconds) as desired                                -->
             <!--
diff --git a/tests/test-webapps/test-jetty-webapp/src/main/config/modules/demo.mod b/tests/test-webapps/test-jetty-webapp/src/main/config/modules/demo.mod
deleted file mode 100644
index 6404856..0000000
--- a/tests/test-webapps/test-jetty-webapp/src/main/config/modules/demo.mod
+++ /dev/null
@@ -1,20 +0,0 @@
-#
-# Jetty Demo Module
-#
-
-DEPEND=jaas
-DEPEND=jndi
-DEPEND=rewrite
-DEPEND=client
-DEPEND=annotations
-DEPEND=websocket
-DEPEND=deploy
-
-LIB=demo/lib/*.jar
-
-demo/test-realm.xml
-demo/jetty-demo.xml
-
-INI=--module=jaas
-INI=demo.realm=demo/realm.properties
-INI=jaas.login.conf=demo/login.conf
diff --git a/tests/test-webapps/test-jetty-webapp/src/test/java/org/eclipse/jetty/TestServer.java b/tests/test-webapps/test-jetty-webapp/src/test/java/org/eclipse/jetty/TestServer.java
index 9080216..fde8fab 100644
--- a/tests/test-webapps/test-jetty-webapp/src/test/java/org/eclipse/jetty/TestServer.java
+++ b/tests/test-webapps/test-jetty-webapp/src/test/java/org/eclipse/jetty/TestServer.java
@@ -154,7 +154,7 @@
         // Setup context
         HashLoginService login = new HashLoginService();
         login.setName("Test Realm");
-        login.setConfig(jetty_root + "/tests/test-webapps/test-jetty-webapp/src/main/config/demo/realm.properties");
+        login.setConfig(jetty_root + "/tests/test-webapps/test-jetty-webapp/src/main/config/demo-base/etc/realm.properties");
         server.addBean(login);
 
         File log=File.createTempFile("jetty-yyyy_mm_dd", "log");
diff --git a/tests/test-webapps/test-jndi-webapp/src/main/assembly/config.xml b/tests/test-webapps/test-jndi-webapp/src/main/assembly/config.xml
index dd9e7a5..7946043 100644
--- a/tests/test-webapps/test-jndi-webapp/src/main/assembly/config.xml
+++ b/tests/test-webapps/test-jndi-webapp/src/main/assembly/config.xml
@@ -18,14 +18,14 @@
     </fileSet>
     <fileSet>
       <directory>target</directory>
-      <outputDirectory>demo/webapps</outputDirectory>
+      <outputDirectory>demo-base/webapps</outputDirectory>
       <includes>
         <include>test-jndi.xml</include>
       </includes>
     </fileSet>
     <fileSet>
       <directory>target/lib/jndi</directory>
-      <outputDirectory>demo/lib</outputDirectory>
+      <outputDirectory>demo-base/lib/ext</outputDirectory>
       <includes>
         <include>*.jar</include>
       </includes>
diff --git a/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/assembly/config.xml b/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/assembly/config.xml
index 71666db..f16ec5f 100644
--- a/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/assembly/config.xml
+++ b/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/assembly/config.xml
@@ -18,14 +18,14 @@
     </fileSet>
     <fileSet>
       <directory>target</directory>
-      <outputDirectory>demo/webapps</outputDirectory>
+      <outputDirectory>demo-base/webapps</outputDirectory>
       <includes>
         <include>test-spec.xml</include>
       </includes>
     </fileSet>
     <fileSet>
       <directory>target/lib/jndi</directory>
-      <outputDirectory>demo/lib</outputDirectory>
+      <outputDirectory>demo-base/lib/ext</outputDirectory>
       <includes>
         <include>*.jar</include>
       </includes>