incubator-aries-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From z..@apache.org
Subject svn commit: r921781 - in /incubator/aries/trunk/tutorials/blueprint/tutorial-assembly: ./ src/ src/main/ src/main/assemblies/ src/main/docs/ src/main/docs/images/ src/main/docs/style/ src/main/dropins/ src/main/java/ src/main/resources/ src/main/resour...
Date Thu, 11 Mar 2010 10:27:24 GMT
Author: zoe
Date: Thu Mar 11 10:27:23 2010
New Revision: 921781

URL: http://svn.apache.org/viewvc?rev=921781&view=rev
Log:
ARIES-226 Missing from the previous commit

Added:
    incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/
    incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/pom.xml
    incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/
    incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/
    incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/assemblies/
    incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/assemblies/distro-assembly.xml
    incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/docs/
    incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/docs/images/
    incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/docs/images/Arieslogo_Horizontal.gif   (with props)
    incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/docs/images/apache-incubator-logo.png   (with props)
    incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/docs/images/bg.png   (with props)
    incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/docs/instructions.html
    incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/docs/style/
    incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/docs/style/site.css
    incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/dropins/
    incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/java/
    incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/resources/
    incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/resources/configuration/
    incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/resources/configuration/config.ini
    incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/scripts/
    incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/scripts/build.bat
    incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/scripts/build.sh   (with props)
    incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/scripts/run.bat
    incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/scripts/run.sh
    incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/scripts/start_platform.bat
    incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/scripts/start_platform.sh
    incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/test/

Added: incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/pom.xml
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/pom.xml?rev=921781&view=auto
==============================================================================
--- incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/pom.xml (added)
+++ incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/pom.xml Thu Mar 11 10:27:23 2010
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="UTF-8"?>
+	<!--
+		Licensed to the Apache Software Foundation (ASF) under one or more
+		contributor license agreements. See the NOTICE file distributed with
+		this work for additional information regarding copyright ownership.
+		The ASF licenses this file to You under the Apache License, Version
+		2.0 (the "License"); you may not use this file except in compliance
+		with the License. You may obtain a copy of the License at
+
+		http://www.apache.org/licenses/LICENSE-2.0 Unless required by
+		applicable law or agreed to in writing, software distributed under the
+		License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+		CONDITIONS OF ANY KIND, either express or implied. See the License for
+		the specific language governing permissions and limitations under the
+		License.
+	-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+	<modelVersion>4.0.0</modelVersion>
+
+        <parent>
+              <groupId>org.apache.aries.tutorials.blueprint</groupId>
+              <artifactId>blueprint</artifactId>
+              <version>0.1-incubating-SNAPSHOT</version>
+        </parent>
+
+
+	<groupId>org.apache.aries.tutorials.blueprint</groupId>
+	<artifactId>tutorial-assembly</artifactId>
+	<name>Greeter Tutorial Assembly</name>
+	<version>0.1-incubating-SNAPSHOT</version>
+	<packaging>pom</packaging>
+
+	<dependencies>
+
+                <!-- External (platform) dependencies -->
+
+		<dependency>
+			<groupId>org.apache.felix</groupId>
+			<artifactId>org.apache.felix.fileinstall</artifactId>
+			<version>2.0.0</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.eclipse</groupId>
+			<artifactId>osgi</artifactId>
+			<version>3.5.0.v20090520</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.eclipse.equinox</groupId>
+			<artifactId>cm</artifactId>
+			<version>3.2.0-v20070116</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.eclipse.osgi</groupId>
+			<artifactId>services</artifactId>
+			<version>3.1.200-v20070605</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.ops4j.pax.logging</groupId>
+			<artifactId>pax-logging-api</artifactId>
+			<version>1.4</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.ops4j.pax.logging</groupId>
+			<artifactId>pax-logging-service</artifactId>
+			<version>1.4</version>
+			<exclusions>
+				<exclusion>
+					<groupId>log4j</groupId>
+					<artifactId>log4j</artifactId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+ 
+                <!-- Internal (Aries) dependencies -->
+
+		<dependency>
+			<groupId>org.apache.aries.blueprint</groupId>
+			<artifactId>org.apache.aries.blueprint</artifactId>
+			<version>0.1-incubating-SNAPSHOT</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.apache.aries</groupId>
+			<artifactId>org.apache.aries.util</artifactId>
+			<version>0.1-incubating-SNAPSHOT</version>
+		</dependency>
+
+                <!-- Sample application dependencies -->
+
+		<dependency>
+			<groupId>org.apache.aries.tutorials.blueprint</groupId>
+			<artifactId>org.apache.aries.tutorials.blueprint.greeter.api</artifactId>
+			<version>0.1-incubating-SNAPSHOT</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.apache.aries.tutorials.blueprint</groupId>
+			<artifactId>org.apache.aries.tutorials.blueprint.greeter.client.blueprint</artifactId>
+			<version>0.1-incubating-SNAPSHOT</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.apache.aries.tutorials.blueprint</groupId>
+			<artifactId>org.apache.aries.tutorials.blueprint.greeter.client.osgi</artifactId>
+			<version>0.1-incubating-SNAPSHOT</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.apache.aries.tutorials.blueprint</groupId>
+			<artifactId>org.apache.aries.tutorials.blueprint.greeter.server.blueprint</artifactId>
+			<version>0.1-incubating-SNAPSHOT</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.apache.aries.tutorials.blueprint</groupId>
+			<artifactId>org.apache.aries.tutorials.blueprint.greeter.server.osgi</artifactId>
+			<version>0.1-incubating-SNAPSHOT</version>
+		</dependency>
+
+	</dependencies>
+
+	<modules>
+		<module>../tutorial-modules/greeter-api</module>
+		<module>../tutorial-modules/greeter-client-blueprint</module>
+		<module>../tutorial-modules/greeter-client-osgi</module>
+		<module>../tutorial-modules/greeter-server-blueprint</module>
+		<module>../tutorial-modules/greeter-server-osgi</module>
+	</modules>
+
+	<build>
+		<plugins>
+			<plugin>
+				<artifactId>maven-assembly-plugin</artifactId>
+				<version>2.2-beta-5</version>
+				<configuration>
+					<descriptors>
+						<descriptor>src/main/assemblies/distro-assembly.xml</descriptor>
+					</descriptors>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+</project>

Added: incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/assemblies/distro-assembly.xml
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/assemblies/distro-assembly.xml?rev=921781&view=auto
==============================================================================
--- incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/assemblies/distro-assembly.xml (added)
+++ incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/assemblies/distro-assembly.xml Thu Mar 11 10:27:23 2010
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8"?>
+	<!--
+		Licensed to the Apache Software Foundation (ASF) under one or more
+		contributor license agreements. See the NOTICE file distributed with
+		this work for additional information regarding copyright ownership.
+		The ASF licenses this file to You under the Apache License, Version
+		2.0 (the "License"); you may not use this file except in compliance
+		with the License. You may obtain a copy of the License at
+
+		http://www.apache.org/licenses/LICENSE-2.0 Unless required by
+		applicable law or agreed to in writing, software distributed under the
+		License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+		CONDITIONS OF ANY KIND, either express or implied. See the License for
+		the specific language governing permissions and limitations under the
+		License.
+	-->
+<assembly
+	xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
+
+	<id>distribution</id>
+
+	<formats>
+		<format>zip</format>
+<!--		<format>tar.gz</format> -->
+	</formats>
+	<includeBaseDirectory>false</includeBaseDirectory>
+
+ 	<moduleSets>
+		<moduleSet>
+			<sources>
+				<fileSets>
+					<fileSet>
+                                        	<excludes>
+							<exclude>target/**</exclude>
+							<exclude>.*/**</exclude>
+						</excludes>
+					</fileSet> 
+				</fileSets> 
+				<outputDirectoryMapping>source/${module.artifactId}</outputDirectoryMapping>
+			</sources>
+		</moduleSet>
+	</moduleSets>
+
+	<dependencySets> 
+		<dependencySet>
+			<excludes>
+				<exclude>greeter*</exclude>
+			</excludes>
+			<outputDirectory>/platform</outputDirectory>
+		</dependencySet> 
+		<dependencySet>
+			<includes>
+				<include>greeter*</include>
+			</includes>
+			<outputDirectory>/bin</outputDirectory>
+		</dependencySet>
+	</dependencySets>
+
+	<fileSets>
+		<fileSet>
+			<directory>src/main/resources</directory>
+			<outputDirectory>/platform</outputDirectory>
+		</fileSet>
+		<fileSet>
+			<directory>src/main/dropins</directory>
+			<outputDirectory>/dropins</outputDirectory>
+		</fileSet>
+		<fileSet>
+			<directory>src/main/docs</directory>
+			<outputDirectory>/docs</outputDirectory>
+		</fileSet>
+	</fileSets>
+
+	<files>
+		<file>
+			<source>src/main/scripts/start_platform.sh</source>
+			<outputDirectory>scripts</outputDirectory>
+			<destName>start_platform.sh</destName>
+			<fileMode>0777</fileMode>
+		</file>
+		<file>
+			<source>src/main/scripts/run.sh</source>
+			<outputDirectory>scripts</outputDirectory>
+			<destName>run.sh</destName>
+			<fileMode>0777</fileMode>
+		</file>
+		<file>
+			<source>src/main/scripts/build.sh</source>
+			<outputDirectory>scripts</outputDirectory>
+			<destName>build.sh</destName>
+			<fileMode>0777</fileMode>
+		</file>
+	</files>
+
+</assembly>

Added: incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/docs/images/Arieslogo_Horizontal.gif
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/docs/images/Arieslogo_Horizontal.gif?rev=921781&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/docs/images/Arieslogo_Horizontal.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/docs/images/apache-incubator-logo.png
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/docs/images/apache-incubator-logo.png?rev=921781&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/docs/images/apache-incubator-logo.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/docs/images/bg.png
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/docs/images/bg.png?rev=921781&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/docs/images/bg.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/docs/instructions.html
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/docs/instructions.html?rev=921781&view=auto
==============================================================================
--- incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/docs/instructions.html (added)
+++ incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/docs/instructions.html Thu Mar 11 10:27:23 2010
@@ -0,0 +1,532 @@
+
+       <!--
+                Licensed to the Apache Software Foundation (ASF) under one or more
+                contributor license agreements. See the NOTICE file distributed with
+                this work for additional information regarding copyright ownership.
+                The ASF licenses this file to You under the Apache License, Version
+                2.0 (the "License"); you may not use this file except in compliance
+                with the License. You may obtain a copy of the License at
+
+                http://www.apache.org/licenses/LICENSE-2.0 Unless required by
+                applicable law or agreed to in writing, software distributed under the
+                License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+                CONDITIONS OF ANY KIND, either express or implied. See the License for
+                the specific language governing permissions and limitations under the
+                License.
+        -->
+<html>
+<link rel=StyleSheet href="style/site.css" type="text/css">
+<header>
+<TABLE width="100%" cellpadding="0" cellspacing="0">
+	<TR width="100%">
+		<TD id="cell-0-0" colspan="2">&nbsp;</TD>
+		<TD id="cell-0-1">&nbsp;</TD>
+		<TD id="cell-0-2" colspan="2">&nbsp;</TD>
+	</TR>
+	<TR width="100%">
+		<TD id="cell-1-2" colspan="5">
+		<DIV style="padding: 40px;">
+		<DIV id="banner"><!-- Banner -->
+		<TABLE border="0" cellpadding="0" cellspacing="0" width="100%">
+			<TR>
+				<TD align="left" class="topbardiv" nowrap=""><A
+					href="http://incubator.apache.org/aries/"
+					title="Apache Aries (incubating)"> <IMG border="0"
+					src="images/Arieslogo_Horizontal.gif"> </A></TD>
+				<TD align="right" nowrap="">
+				<div class=tutorialHeader>Blueprint Tutorial</div>
+			</TR>
+		</TABLE>
+		</DIV>
+		</DIV>
+		</TD>
+
+	</TR>
+	<TR width="100%">
+		<TD id="cell-2-0" colspan="2">&nbsp;</TD>
+		<TD id="cell-2-1">&nbsp;</TD>
+		<TD id="cell-2-2" colspan="2">&nbsp;</TD>
+	</TR>
+</TABLE>
+</header>
+<body>
+<div class=wiki-content>
+<h1>Setting up</h1>
+
+<p>This set of instructions will take you through modifying and
+running the code in the tutorial. To run through the tutorial you will
+need:
+
+<ul>
+	<li>A laptop</li>
+	<li>Java (Version 1.5 or greater)</li>
+	<li>Maven (Version 2.2.1 or greater)</li>
+</ul>
+
+
+<p>Before beginning the tutorial code we need to check that you can
+run the OSGi platform and applications. We will refer to the directory
+that you extracted the zip or tar file in as [toplevel]. We will use
+Linux commands in the instructions - if you don't know what the
+equivalent Windows commands are please ask.</p>
+
+<p>To check that you are able to run the OSGi sample code run these
+commands from a shell prompt:</p>
+<div class=code>cd [toplevel]/scripts<br>
+./start_platform.sh</div>
+<p>You should see the Equinox OSGi console come up. The 'ss' command
+lists the state of the platform. Issue the 'ss' command:
+<div class=code>osgi> ss</div>
+
+<p>Leave this running in one window as we will return to it later. Open a new window/shell, we
+will use the new shell to run some samples.</p>
+
+<p>In the new shell, change directory to [toplevel]/bin and copy the following
+three files into the [toplevel]/dropins directory:</p>
+<div class=code>greeter-api-1.0.0-incubating-SNAPSHOT.jar<br>
+greeter-client-osgi-1.0.0-incubating-SNAPSHOT.jar<br>
+greeter-server-osgi-1.0.0-incubating-SNAPSHOT.jar<br>
+</div>
+<p>This installs those bundles in the OSGi framework. Back in the OSGi console window, type 'ss' again, you should see
+three new bundles in the 'INSTALLED' state. Start all three new bundles
+starting with the <b>greeter-server-osgi</b> bundle. To do this, issue the 'start' command
+followed by the bundle ID:</p>
+<div class=code>osgi> start [ID]</div>
+<p>Where 'ID' is the number of the bundle.</p>
+
+<p>When you start the <b>greeter-client-osgi</b> bundle you will see some output - we
+will come back to this later in the tutorial.</p>
+
+<p>Back in the other shell, navigate to [toplevel]/dropins and
+delete everything - this will uninstall the bundles.</p>
+
+<p>Finally check the OSGi console to confirm that the three
+bundles have gone by issuing another 'ss' command.</p>
+
+<p>Later in the tutorial you will be using Maven to build the sample
+code. As it is unlikely that there will be a reliable network
+connection, a Maven repository is supplied with the course material. To
+use the supplied repository, change to the [toplevel]/scripts directory
+and extract the repository file appropriate to your platform (it will be
+called fullrepo_{platform}.*) <b>in the scripts directory</b>. Rename
+the extracted directory 'fullrepo'. Check that the 'fullrepo' directory contains repository.xml.</p>
+
+
+<h1>Converting the OSGi Client.</h1>
+
+<p>The projects greeter-client-osgi, greeter-server-osgi, and
+greeter-api together comprise a simple application demonstrating
+publication and consumption of an OSGi service. By following the steps
+below, you will gradually migrate the application to use blueprint,
+which will demonstrate how blueprint can help to simplify such projects.</p>
+
+<p>In the next section ('Minimum conversion') we will go through the
+minimum number of steps necessary to convert the client code to use
+blueprint. In the section after that ('Finishing the client') we will go
+through some more extensive changes to the client which extend its use
+of blueprint.</p>
+
+<h2>Minimum conversion</h2>
+
+
+<p>In this section we will take the minimum number of actions to
+convert the greeter client application to use blueprint.</p>
+
+<p>First, take a look at the the client class, the source is located here:</p>
+<div class=code>
+[toplevel]/source/greeter-client-osgi/src/main/java/org/apache/aries/samples/tutorial/blueprint/greeter/client/osgi/ClientBundleActivator.java
+</div>
+<p>This class (activator) does two things:</p>
+<ol>
+	<li>Instantiates the test class (GreeterTestClient)</li>
+	<li>Invokes the 'doRequests()' method from the GreeterTestClient
+	class.</li>
+</ol>
+
+<h3>Removing the activator</h3>
+
+
+<p>In the following steps we will develop blueprint to carry out the tasks that are currently handled by the activator, the first
+step is to delete the activator class. For example, on linux:</p>
+<div class=code>rm
+source/greeter-client-osgi/src/main/java/org/apache/aries/samples/tutorial/blueprint/greeter/client/osgi/ClientBundleActivator.java
+</div>
+<p>The next step is to edit the file
+[toplevel]/source/greeter-client-osgi/pom.xml, and remove the line:</p>
+<div class=code>&lt;Bundle-Activator&gt;org.apache.aries.samples.tutorial.blueprint.greeter.client.osgi.ClientBundleActivator&lt;/Bundle-Activator&gt;
+</div>
+
+<h3>Replacing the functionality of the activator with blueprint</h3>
+
+
+<p>If you were to rebuild the bundle at this point it would still
+build and deploy, but without the activator the test class would not be
+invoked and there would be no output when the client bundle was started.
+In this step we will use blueprint to replace what the activator was
+doing - creating an instance of the test class and calling one of its
+methods.</p>
+
+
+<p>Start by adding an OSGI-INF/blueprint directory under the
+greeter-client-osgi/src/main/resources folder:</p>
+<div class=code>mkdir -p
+[toplevel]/source/greeter-client-osgi/src/main/resources/OSGI-INF/blueprint
+</div>
+<p>In the newly created blueprint directory, create a blueprint.xml
+file containing the following blueprint 'template'.</p>
+<div class=code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br>
+&lt;blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"&gt;<br>
+&lt;/blueprint&gt;<br>
+</div>
+
+<p>Note: The name of the file can be anything you like that ends in
+.xml - blueprint.xml is a popular choice.</p>
+
+<p>Now, add a bean element to represent the test class; remember the
+activator was used to create an instance of this class, now we will use blueprint to do
+the same. Add the bean element shown below within the blueprint XML element.</p>
+<div class=code>&lt;bean id="clientBean" <br>
+&nbsp;&nbsp;&nbsp;&nbsp;class="org.apache.aries.samples.tutorial.blueprint.greeter.client.osgi.GreeterTestClient"&gt;
+&lt;/bean&gt;</div>
+<p>The blueprint container will attempt to instantiate the class
+(GreeterTestClient) with a zero argument constructor by default. However
+- there is no zero argument constructor in the GreeterTestClient class;
+the only constructor has the signature GreeterTestClient(BundleContext
+b, String clientID). We can tell blueprint to use this by adding some
+arguments inside the bean like this:</p>
+<div class=code>&lt;argument ref="blueprintBundleContext"/&gt;<br>
+&lt;argument value="My blueprint client ID"/&gt;<br>
+</div>
+<p>These arguments will be fed to the constructor. The string "My
+blueprint client ID" will be used directly, while the
+'blueprintBundleContext' references a special bean - we are not going to
+worry about this now, it's beyond the scope of the tutorial.</p>
+
+<p>If we were to build and deploy now, we'd discover the
+GreeterTestClient is constructed, but the 'doRequests' method is not invoked.</p>
+
+<p>For this last part of the puzzle, we'll use the blueprint bean
+'init-method' attribute, which specifies a method to be called after a
+bean is constructed. To use the 'init-method', add</p>
+<div class=code>init-method="doRequests"</div>
+<p>to the bean element. You should now have something like this in
+your blueprint xml file:</p>
+<div class=code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br>
+&lt;blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"&gt;<br>
+&nbsp;&nbsp;&lt;bean id="clientBean" class="org.apache.aries.samples.tutorial.blueprint.greeter.client.osgi.GreeterTestClient"<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;init-method="doRequests"&gt;<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&lt;argument value="My blueprint client ID"/&gt;<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&lt;argument ref="blueprintBundleContext"/&gt;<br>
+&nbsp;&nbsp;&lt;/bean&gt;<br>
+&lt;/blueprint&gt;<br>
+</div>
+<p>Finally we need to build and re-deploy the client we have just
+changed.</p>
+
+<p>To build the code, run the script build.sh (or build.bat) in the
+[toplevel]/scripts directory. If you are using your own Maven repository
+the commands are:</p>
+<div class=code>./build.sh greeter-api<br>
+./build.sh greeter-server-osgi<br>
+./build.sh greeter-client-osgi<br>
+</div>
+
+<p>If you are using the local Maven repository provided with the
+tutorial, the commands are:</p>
+
+<div class=code>./build.sh localrepo greeter-api<br>
+./build.sh localrepo greeter-server-osgi<br>
+./build.sh localrepo greeter-client-osgi<br>
+</div>
+
+<p>To run your sample, from the the [toplevel]/scripts directory:</p>
+<div class=code>./run.sh</div>
+<p>this will copy the jar files generated in the build step to
+[toplevel]/dropins and hence install the application.</p>
+
+<p>Now look back to the OSGi console, start the bundles (server
+first!), and check that they run. Clean the dropins directory again by
+removing all the files from it.</p>
+
+
+<p>At this point we have a blueprint client running without a bundle
+activator. However, when we look at the content of the
+GreeterTestClient class, it's doing all sorts of OSGi service related things
+that blueprint could do much more simply. In the next section we will see how
+use of blueprint can lead to much a much cleaner service invocation.</p>
+
+<h2>Finishing the client</h2>
+
+
+<p>The client code (GreeterTestClient) was written to demonstrate a
+few common approaches to invoking an OSGi service. For example, there is
+a proxy class, hiding a tracker, which passes the requests on
+to the service (see inner class GreeterMessageServiceProxy). The really quite nasty 
+'look it up and use it all in one hit.. ' approach
+is demonstrated in the method doRequestUsingImmediateLookup().</p>
+
+<p>Those experienced with OSGi will recognise the usual hidden
+selection of service usage bugs, for example, failing to unget the
+service in all cases, not handling situations when the service goes away
+after being looked up, etc.</p>
+
+<p>Blueprint can help us avoid most of the common errors
+demonstrated in this code. So, let's get started and convert this client
+code to use blueprint.</p>
+
+<h3>Removing the old test implementations</h3>
+
+
+<p>The current contents of the client is written to show various
+OSGi ways of invoking a service. Since we're going to have blueprint
+take care of this for us, we can remove the old OSGi service API usage.</p>
+
+<p>In the class:</p>
+<div class=code>
+greeter-client-osgi/src/main/java/org/apache/aries/samples/tutorial/blueprint/greeter/client/osgi/GreeterTestClient.java
+</div>
+<p>Remove the following methods:
+<ul>
+	<li>doRequestUsingImmediateLookup</li>
+	<li>doRequestUsingTracker</li>
+	<li>doRequestUsingCachedService</li>
+</ul>
+
+<p>Also remove:
+<ul>
+	<li>The inner class 'GreeterMessageServiceProxy'</li>
+	<li>The field 'owningContext'</li>
+	<li>The field 'cachedService'</li>
+	<li>The field 'tracker'</li>
+	<li>The entire content of the constructor method, except the first
+	line.</li>
+</ul>
+
+<p>Now, you should have removed everything from the class
+except:
+<ul>
+	<li>The field 'clientID'</li>
+	<li>The field 'proxy'</li>
+	<li>The first line of the constructor</li>
+	<li>The 'doRequests' method.</li>
+	<li>The 'doRequestUsingProxy' method.</li>
+	<li>The 'printResult' method.</li>
+</ul>
+
+
+
+<h3>Preparing for blueprint</h3>
+
+
+<p>In this section we will add code that makes the client a lot more
+like a java-bean by adding a setter for the proxy and removing the old
+bundle context related elements from both the Java code and blueprint
+xml.</p>
+
+<p>Continuing to edit the GreeterTestClient class, remove all but
+the first two lines of the 'doRequests' method, it should now just
+contain:</p>
+<div class=code>System.out.println("Proxy based...");<br>
+doRequestUsingProxy();</div>
+
+<p>Now add a setter for the proxy,</p>
+<div class=code>public void setProxy(GreeterMessageService p){<br>
+&nbsp;&nbsp;this.proxy = p;<br>
+}</div>
+<p>and, since we're not using it any more, remove the BundleContext
+from the class constructor. Like this:
+
+<div class=code>public GreeterTestClient(String clientID) {<br>
+&nbsp;&nbsp;this.clientID = clientID;<br>
+}<br>
+</div>
+
+<p>Finally, save and close the GreeterTestClient class.
+
+<p>The last step is to modify the blueprint xml to reflect these
+changes. Edit the blueprint xml you created earlier:</p>
+<div class=code>
+[toplevel]/source/greeter-client-osgi/src/main/resources/OSGI_INF/blueprint/blueprint.xml
+</div>
+<p>Remove the following line from the blueprint xml</p>
+<div class=code>&lt;argument ref="blueprintBundleContext"/&gt;</div>
+<p>This ensures that the blueprint matches the modified constructor in the
+GreeterTestClient class.</p>
+
+
+<h3>Adding blueprint to the client</h3>
+
+
+<p>At this point we have code which will compile, but is not yet
+complete. We have a client that will instantly null pointer if we
+attempt to run it. Looking back at the GreeterTestClient class, when the
+doRequests() method is invoked by the init-method declaration in the
+blueprint xml, this in turn calls doRequestUsingProxy() which calls
+getGreetingMessage() on the proxy variable. However, this variable is
+initialised to null and never changed.</p>
+
+<p>We need to make sure we set the 'proxy' variable. We can do this
+using blueprint!</p>
+
+<p>Back in the xml file:</p>
+<div class=code>
+[toplevel]/source/greeter-client-osgi/src/main/resources/OSGI_INF/blueprint/blueprint.xml
+</div>
+
+<p>Add a 'reference' element, that refers to the greeter service. To
+do this add the folowing xml inside &lt;blueprint&gt; but not inside the
+&lt;bean&gt; element.</p>
+<div class=code>&lt;reference id="greeterService" interface="org.apache.aries.samples.tutorial.blueprint.greeter.api.GreeterMessageService"<br>
+&nbsp;&nbsp;timeout="10000" availability="mandatory"/&gt;</div>
+<p>This sets up a blueprint component with the ID 'greeterService',
+which will appear to its users as an instance of the interface
+specified, with its implementation being backed by an OSGi service
+claiming to meet that interface.</p>
+
+<p>Note: This is the most simple possible blueprint service - there
+are many more powerful ways to use services within blueprint.</p>
+
+<p>Notice that we added the 'availability="mandatory"' attribute.
+This will ensure that the client will not start if if there are no
+services available implementing the interface. If you started the client
+before the service in any of the previous steps you would have seen a
+stack trace, making the service mandatory avoids this issue.</p>
+
+<p>The last step is to inject the 'greeterService' reference into
+our test client using a property element. Add this line inside the bean
+definition</p>
+<div class=code>&lt;property name="proxy"
+ref="greeterService"/&gt;</div>
+<p>This will invoke the 'setProxy' method we added earlier and pass
+in a blueprint service proxy, hooked up to any OSGi service
+implementing the GreeterMessageService.</p>
+
+
+<p>The complete blueprint.xml file should now look like this:</p>
+<div class=code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br>
+&lt;blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"&gt;<br>
+
+&nbsp;&nbsp;&lt;reference id="greeterService" interface="org.apache.aries.samples.tutorial.blueprint.greeter.api.GreeterMessageService"<br>
+&nbsp;&nbsp;&nbsp;&nbsp;timeout="10000" availability="mandatory"/&gt;<br>
+&nbsp;&nbsp;&lt;bean id="clientBean" class="org.apache.aries.samples.tutorial.blueprint.greeter.client.osgi.GreeterTestClient"<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;init-method="doRequests"&gt;<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&lt;argument value="My blueprint client ID"/&gt;<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&lt;property name="proxy"
+ref="greeterService"/&gt;<br>
+&nbsp;&nbsp;&lt;/bean&gt;<br>
+&lt;/blueprint&gt;</div>
+<p>That is all we need to do to the client. At this stage, rebuild
+the client as you did at the end of the minimum conversion and watch it
+running in the OSGi console. The steps are repeated here for
+convenience.</p>
+
+<p>To build the code, run the script build.sh (or build.bat) in the
+[toplevel]/scripts directory. If you are using your own Maven repository
+the commands are:</p>
+<div class=code>
+./build.sh greeter-client-osgi<br>
+</div>
+
+<p>If you are using the local Maven repository provided with the
+tutorial, the commands are:</p>
+
+<div class=code>
+./build.sh localrepo greeter-client-osgi<br>
+</div>
+
+<p>To run your sample, from the the [toplevel]/scripts directory:</p>
+<div class=code>./run.sh</div>
+<p>this will copy the jar files generated in the build step to
+[toplevel]/dropins and hence install the application.</p>
+
+
+<p>Now look back to the OSGi console, start the bundles (server
+first!), and check that they run. Clean the dropins directory again by
+removing all the files from it.</p>
+
+
+
+<p>We're done with the client, and it's time to turn our attention
+to the server side of things. Converting the server is very similar to
+converting the client, but a lot simpler, as the only OSGi related bits
+in the current server are limited to instantiating and registering the
+service.</p>
+
+<h1>Converting the OSGi service</h1>
+
+<p>The service creation and registration is once again being handled
+by a Bundle Activator, this time it's at..
+<div class=code>
+[toplevel]/greeter-server-osgi/src/main/java/org/apache/samples/tutorial/blueprint/greeter/server/osgi/ServiceRegisteringActivator.java
+</div>
+<p>Have a quick look at what this class is doing, make a quick note
+of how it creates and initialises the service implementation, and how it
+manages the service registration.</p>
+
+<p>Delete the class. We'll be replacing it entirely with a blueprint
+version.</p>
+<p>Start by adding an OSGI-INF directory to the
+greeter-server-osgi/src/main/resources folder.</p>
+
+<p>In the OSGI-INF directory, add a blueprint directory</p>
+
+<p>In the blueprint directory, create an xml file called
+blueprint.xml.</p>
+
+<p>In the xml file, add the main blueprint element and usual xml
+boilerplate.</p>
+<div class=code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br>
+&lt;blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"&gt;<br>
+&lt;/blueprint&gt;<br>
+</div>
+<p>Let's start by having blueprint create the instance of the
+implementation of our service. Add a bean element with the service
+implementation class "GreeterMessageServiceImpl" as its target class.</p>
+<div class=code>&lt;bean id="serverBean"
+class="org.apache.aries.samples.tutorial.blueprint.greeter.server.osgi.GreeterMessageServiceImpl">
+&lt;/bean></div>
+<p>Now we need to initalise it, just as the original activator did.
+The activator set the sender id in the Service by using the 'setSender'
+method. We can have blueprint do this for us with a property element.</p>
+<div class=code>&lt;property name="sender" value="Blueprint Greeting Service"/></div>
+<p>Great... we have a server bundle, which if built and
+deployed, would create an implementation of the service and set the
+sender id on it. Unfortunately, no-one would be able to see it as we have not published it
+to the OSGi registry. The blueprint '&lt;service&gt;' element is required to publish the service:</p>
+<div class=code>&lt;service id="greeterService"<br>
+&nbsp;&nbsp;interface="org.apache.aries.samples.tutorial.blueprint.greeter.api.GreeterMessageService"<br>
+&nbsp;&nbsp;ref="serverBean"&gt;<br>
+&lt;/service&gt;</div>
+<p>Putting it all together, you should have ended up with something
+a little like this...</p>
+<div class=code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br>
+&lt;blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"&gt;<br>
+
+&nbsp;&nbsp;&lt;bean id="serverBean"
+class="org.apache.aries.samples.tutorial.blueprint.greeter.server.osgi.GreeterMessageServiceImpl"&gt;<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;property name="sender"
+value="Blueprint Greeting Service"/&gt;<br>
+&nbsp;&nbsp;&lt;/bean&gt;<br>
+<br>
+&nbsp;&nbsp;&lt;service id="greeterService"<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;interface="org.apache.aries.samples.tutorial.blueprint.greeter.api.GreeterMessageService"<br>
+&nbsp;&nbsp;&nbsp;&nbsp;ref="serverBean"&gt;<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&lt;/service&gt;<br>
+
+&lt;/blueprint&gt;<br>
+</div>
+
+<p>Finally, before you rebuild, you will need to edit the file:</p>
+<div class=code>[toplevel]/source/greeter-server-osgi/pom.xml</div>
+<p>and remove the line:</p>
+<div class=code>
+&lt;Bundle-Activator&gt;org.apache.aries.samples.tutorial.blueprint.greeter.server.osgi.ServiceRegisteringActivator&lt;/Bundle-Activator&gt;
+</div>
+<p>When you build and deploy the server bundle now, we should be
+able to see it all working as expected again.</p>
+
+<p>Congratulations! You have completed the final step in converting
+the greeter application to use blueprint.</p>
+</div>
+</body>
+</html>

Added: incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/docs/style/site.css
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/docs/style/site.css?rev=921781&view=auto
==============================================================================
--- incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/docs/style/site.css (added)
+++ incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/docs/style/site.css Thu Mar 11 10:27:23 2010
@@ -0,0 +1,1581 @@
+body {
+  margin: 0;
+  padding: 0;
+}
+
+#cell-0-0 { background: white url( '../images/bg02-white-left-nogr.png' ) repeat-y right top; }
+#cell-0-1 { height: 1em; width: 85%; }
+#cell-0-2 { background: transparent url( '../images/bg02-white-right-nogr.png' ) repeat-y left top; }
+#cell-1-0 { background: transparent url( '../images/bg.png' ) repeat-x top; }
+#cell-1-1 { background: transparent url( '../images/bg02-purple-left.png' ) no-repeat right top; width:13px; }
+#cell-1-2 { background: transparent url( '../images/bg.png' ) repeat-x top; width:100%; }
+#banner { height: 80px; } 
+#cell-1-3 { background: transparent url( '../images/bg02-purple-right.png' ) no-repeat left top; width:13px; }
+#cell-1-4 { background: transparent url( '../images/bg.png' ) repeat-x top; }
+#cell-2-0 { background: white url( '../images/bg02-white-left-nogr.png' ) repeat-y right top; }
+#cell-2-1 { height: 1em; width: 85%; }
+#cell-2-2 { background: white url( '../images/bg02-white-right-nogr.png' ) repeat-y left top; }
+#cell-3-0 { background: transparent url( '../images/bg.png' ) repeat-x top; }
+#cell-3-1 { background: transparent url( '../images/bg02-purple-left.png' ) no-repeat right top; width:13px; }
+#cell-3-2 { background: transparent url( '../images/bg.png' ) repeat-x top; width:85%; } 
+#cell-3-3 { background: transparent url( '../images/bg02-purple-right.png' ) no-repeat left top; width:13px; }
+#cell-3-4 { background: transparent url( '../images/bg.png' ) repeat-x top; }
+#cell-4-0 { background: white url( '../images/bg02-white-left-nogr.png' ) repeat-y right top; }
+#cell-4-1 { height: 1em; width: 85%; }
+#cell-4-2 { background: transparent url( '../images/bg02-white-right-nogr.png' ) repeat-y left top; }
+
+#banner {
+  font-size: 200%;
+  margin: 0 20px;
+  text-align: center;
+  background: transparent;
+}
+#top-menu {
+  margin: 0px 25px;
+  padding: 2px; 
+  line-height: 100%;
+  font-family: Verdana, arial, sans-serif;
+  font-weight: bold;	
+  font-size: 11px;
+  color: white;
+  line-height: 13px;
+  overflow: none;
+}
+#top-menu a:link, #top-menu a:visited {
+  color: #ffffff;
+  text-decoration: none;
+}
+#top-menu a:active, #top-menu a:hover {
+  color: #bfaecd;
+  text-decoration: underline;
+}
+#top-menu sup img {
+  height: 0px;
+  width: 0px;
+}
+
+#footer {
+  padding: 0px 50px 0px 50px; 
+  min-height: 0em;
+  text-align: center;
+  color: #bfaecd;
+  font-size: 65%;
+  font-family: Verdana, arial, sans-serif;
+}
+#footer a:link, #footer a:visited {
+  color: white;
+  text-decoration: none;
+}
+#footer a:hover {
+  color: white;
+  text-decoration: underline;
+}
+
+#wrapper-menu-page-right {
+  background: transparent url( '../images/left-box-right.png' ) repeat-y right;
+}
+
+#wrapper-menu-page-bottom {
+  background: transparent url( '../images/left-box-bottom.png' ) no-repeat right bottom;
+}
+
+#wrapper-menu-page-top {
+  background: transparent url( '../images/left-box-top.png' ) no-repeat right top;
+}
+
+#menu-page {
+  width: 200px;
+  color: #bfaecd;
+  font-family: Verdana, arial, sans-serif;
+  font-weight: bold;	
+  margin: 0px;
+  padding: 17px 11px 17px 0px;
+  text-align: left;
+  margin-left: 0px;
+  line-height: 1em;
+}
+
+#menu-page ul {
+  margin: 0;
+  padding: 0;
+  padding-left: 35px;
+  font-size: 75%;
+}
+
+#menu-page h3 {
+  font-size: 75%;
+  text-transform: uppercase;
+  margin: 1em 0 0.3em 0;
+  color: #bfaecd;
+  font-weight: normal;
+  letter-spacing: 0.15em;
+  background: url('../images/BigBullet.png') no-repeat 0pt;
+  background-position:left center;
+  margin-left:15px;
+  padding-left: 20px;
+  font-family: Verdana, arial, sans-serif;
+  font-weight: bold;	
+}
+
+#menu-page a:link, #menu-page a:visited {
+  color: black;
+}
+
+#menu-page a:hover {
+  color: #bfaecd;
+}
+
+#content {
+  padding: 20px 0px 0px 0px;
+  display: block;
+  text-align: left;
+  height: 100%;
+  width: 100%;
+  color: black;
+}
+
+h2 {
+  font-size: 110%;
+}
+
+h3 {
+  font-size: 100%;
+}
+
+a:link, a:visited {
+  color: #bfaecd;
+  text-decoration: none;
+}
+
+a:hover {
+  color: #666;
+  text-decoration: none;
+}
+
+
+table.align {
+  padding: 0px;
+  border: none;
+}
+
+td.align {
+  padding: 0px;
+  border: none;
+}
+
+/*********************************************************************
+ CSS Elements that are part of the confluence rendered xhtml
+ *********************************************************************/
+.wiki-content {
+	font-family: Verdana, arial, sans-serif;
+	font-size: 11px;
+	line-height: 16px;
+	color: #000000;
+	font-weight: normal;
+	padding-top: 10px;
+	padding-bottom: 10px;
+	margin-left:25px;
+	margin-right:25px;
+}
+
+/*
+** when this stylesheet is used for the Tiny MCE Wysiwyg editor's edit area, we can't
+** use an id=PageContent or class=wiki-content, so we must
+** set the body style to that used for PageContent, and p to that used for wiki-content.
+*/
+
+.monospaceInput {
+    font:12px monospace
+}
+
+.tutorialHeader {
+	font-family: Verdana, arial, sans-serif;
+	font-size: 200%;
+	color: white;
+}
+
+.wiki-content p, .commentblock p {
+
+    margin: 16px 0px 16px 0px;
+    padding: 0px;
+
+}
+
+.wiki-content-preview {
+    padding: 5px;
+    border-left: 1px solid #7b5d94;
+    border-right: 1px solid #7b5d94;
+}
+
+ul, ol {
+    margin-top: 2px;
+    margin-bottom: 2px;
+    padding-top: 0px;
+    padding-bottom: 0px;
+}
+
+pre {
+    padding: 0px;
+    margin-top: 5px;
+    margin-left: 15px;
+    margin-bottom: 5px;
+    margin-right: 5px;
+    text-align: left;
+}
+
+.helpheading {
+    font-weight: bold;
+    background-color: #D0D9BD;
+        border-bottom: 1px solid #7b5d94;
+        padding: 4px 4px 4px 4px;
+        margin: 0px;
+        margin-top: 10px;
+}
+.helpcontent {
+        padding: 4px 4px 20px 4px;
+    background-color: #f5f7f1;
+}
+
+.code {
+ 	border: 1px dashed #7b5d94;
+ 	 padding: 4px 4px 4px 4px;
+    font-size: 11px;
+	font-family: Courier;
+    margin-left: 30px;
+    margin-right: 30px;
+	line-height: 13px;
+	background-color: #f7f2f9;
+}
+
+.focusedComment {
+    background: #ffffce;
+}
+
+.commentBox, .focusedComment {
+    padding: 10px;
+    margin: 5px 0 5px 0;
+    border: 1px #bbb solid;
+}
+
+.codeHeader {
+    background-color: #f0f0f0;
+ 	border-bottom: 1px dashed #7b5d94;
+    padding: 3px;
+	text-align: center;
+}
+
+.codeContent {
+    text-align: left;
+    background-color: #f0f0f0;
+    padding: 3px;
+}
+
+.preformatted {
+ 	border: 1px dashed #7b5d94;
+    font-size: 11px;
+	font-family: Courier;
+    margin: 10px;
+	line-height: 13px;
+}
+
+.preformattedHeader {
+    background-color: #f0f0f0;
+ 	border-bottom: 1px dashed #7b5d94;
+    padding: 3px;
+	text-align: center;
+}
+
+.preformattedContent {
+    background-color: #f0f0f0;
+    padding: 3px;
+}
+
+.panel {
+ 	border: 1px dashed #7b5d94;
+    margin: 10px;
+    margin-top: 0px;
+}
+
+.panelHeader {
+    background-color: #f0f0f0;
+ 	border-bottom: 1px dashed #7b5d94;
+    padding: 3px;
+	text-align: center;
+}
+
+.panelContent {
+    background-color: #f0f0f0;
+    padding: 5px;
+}
+
+.anonymousAlert {
+    background-color: #f0f0f0;
+ 	border: 1px dashed red;
+    font-size: 11px;
+    padding: 10px 5px 10px 5px;
+    margin: 4px;
+	line-height: 13px;
+}
+
+.lockAlert {
+    background-color: #f0f0f0;
+    width: 50%;
+ 	border: 1px dashed red;
+    font-size: 11px;
+    padding: 10px 5px 10px 5px;
+    margin: 4px;
+	line-height: 13px;
+}
+
+
+.code-keyword {
+  color: #000091;
+  background-color: inherit;
+}
+
+.code-object {
+  color: #910091;
+  background-color: inherit;
+}
+
+.code-quote {
+  color: #009100;
+  background-color: inherit;
+}
+
+.code-comment {
+  color: #808080;
+  background-color: inherit;
+}
+
+
+.code-xml .code-keyword {
+  color: inherit;
+  font-weight: bold;
+}
+
+.code-tag {
+  color: #000091;
+  background-color: inherit;
+}
+
+.breadcrumbs {
+    background-color: #f0f0f0;
+ 	border-color: #7b5d94;
+	border-width: 1px 0px 1px 0px;
+	border-style: solid;
+    font-size: 11px;
+    padding: 3px 0px 3px 0px;
+}
+
+.navmenu {
+    border: 1px solid #ccc;
+}
+
+.menuheading {
+    font-weight: bold;
+    background-color: #f0f0f0;
+ 	border-bottom: 1px solid #7b5d94;
+	padding: 4px 4px 2px 4px;
+}
+
+.menuitems {
+	padding: 4px 4px 20px 4px;
+}
+
+.rightpanel {
+    border-left: 1px solid #ccc;
+    border-bottom: 1px solid #ccc;
+}
+
+#helpheading {
+    text-align: left;
+    font-weight: bold;
+    background-color: #D0D9BD;
+ 	border-bottom: 1px solid #7b5d94;
+	padding: 4px 4px 4px 4px;
+	margin: 0px;
+}
+#helpcontent {
+	padding: 4px 4px 4px 4px;
+    background-color: #f5f7f1;
+}
+.helptab-unselected {
+    font-weight: bold;
+	padding: 5px;
+    background-color: #f5f7f1;
+}
+.helptab-selected {
+    font-weight: bold;
+    background-color: #D0D9BD;
+	padding: 5px;
+}
+.helptabs {
+    margin: 0px;
+    background-color: #f5f7f1;
+	padding: 5px;
+}
+.infopanel-heading {
+    font-weight: bold;
+	padding: 4px 0px 2px 0px;
+}
+
+.pagebody {
+}
+
+.pageheader {
+	padding: 5px 5px 5px 0px;
+ 	border-bottom: 1px solid #7b5d94;
+}
+
+.steptitle {
+	font-size: 18px;
+	font-weight: bold;
+	font-family: Arial, sans-serif;
+	color: #3c4672;
+	margin-bottom: 7px;
+}
+
+.substeptitle {
+    font-size: 12px;
+    font-weight: bold;
+    font-family: Arial, sans-serif;
+    color: #3c4672;
+    margin: 2px 4px 4px 4px;
+    padding: 2px 4px 1px 4px;
+}
+
+.stepdesc {
+    font-family: Verdana, arial, sans-serif;
+	font-size: 11px;
+	line-height: 16px;
+	font-weight: normal;
+    color: #666666;
+    margin-top: 7px;
+    margin-bottom: 7px;
+}
+
+.steplabel {
+    font-weight: bold;
+    margin-right: 4px;
+    color: black;
+    float: left;
+    width: 15%;
+    text-align: right;
+}
+
+.stepfield {
+    background: #f0f0f0;
+    padding: 5px;
+}
+
+.submitButtons{
+    margin-top:5px;
+    text-align:right;
+}
+
+.formtitle {
+	font-size: 12px;
+	font-weight: bold;
+	font-family: Arial, sans-serif;
+	color: #3c4672;
+}
+
+.sectionbottom {
+    border-bottom: 1px solid #7b5d94;
+}
+
+.topRow {
+    border-top: 2px solid #7b5d94;
+}
+
+.tabletitle {
+	font-size: 14px;
+	font-weight: bold;
+	font-family: Arial, sans-serif;
+    padding: 3px 0px 2px 0px;
+    margin: 8px 4px 2px 0px;
+	color: #3c4672;
+	border-bottom: 2px solid #7b5d94;
+}
+.pagesubheading {
+    color: #666666;
+    font-size: 10px;
+    padding: 0px 0px 5px 0px;
+}
+
+HR {
+	color: 7b5d94;
+	height: 1;
+}
+
+A:link, A:visited, A:active, A:hover {
+  color: #bfaecd;
+}
+
+A:hover {
+  text-decoration: underline;
+}
+
+h1 A:link, h1 A:visited, h1 A:active {
+	text-decoration: none;
+}
+
+h1 A:hover {
+    border-bottom: 1px dotted #3c4672;
+}
+
+.wiki-content > :first-child, .commentblock > :first-child {
+    margin-top: 3px;
+}
+
+.logocell {
+    padding: 10px;
+}
+
+input {
+	font-family: verdana, geneva, arial, sans-serif;
+	font-size: 11px;
+	color: #000000;
+}
+
+textarea, textarea.editor {
+	font-family: verdana, geneva, arial, sans-serif;
+	font-size: 11px;
+	color: #333333;
+}
+
+/* use logoSpaceLink instead.
+.spacenametitle {
+	font: 21px/31px Impact, Arial, Helvetica;
+    font-weight: 100;
+    color: #999999;
+	margin: 0px;
+}
+.spacenametitle img {
+  margin: 0 0 -4px 0;
+}
+.spacenametitle a {
+    text-decoration: none;
+    color: #999999;
+}
+.spacenametitle a:visited {
+    text-decoration: none;
+    color: #999999;
+}*/
+
+.spacenametitle-printable {
+	font: 20px/25px Impact, Arial, Helvetica;
+    font-weight: 100;
+    color: #999999;
+	margin: 0px;
+}
+.spacenametitle-printable a {
+    text-decoration: none;
+    color: #999999;
+}
+.spacenametitle-printable a:visited {
+    text-decoration: none;
+    color: #999999;
+}
+
+.blogDate {
+	font-weight: bold;
+	text-decoration: none;
+	color: black;
+}
+
+.blogSurtitle {
+    background: #f0f0f0;
+ 	border: 1px solid #ddd;
+	padding: 3px;
+	margin: 1px 1px 10px 1px;
+}
+
+.blogHeading {
+    font-size: 20px;
+    line-height: normal;
+    font-weight: bold;
+    padding: 0px;
+    margin: 0px;
+}
+
+.blogHeading a {
+   text-decoration: none;
+   color: black;
+}
+
+.endsection {
+	align: right;
+	color: #666666;
+	margin-top: 10px;
+}
+.endsectionleftnav {
+	align: right;
+	color: #666666;
+	margin-top: 10px;
+}
+
+h1 {
+	font-size: 24px;
+	line-height: normal;
+	font-weight: bold;
+	background-color: #f0f0f0;
+	color: #3c4672;
+ 	border-bottom: 1px solid #7b5d94;
+	padding: 2px;
+	margin: 36px 0px 4px 0px;
+}
+
+h2 {
+	font-size: 18px;
+	line-height: normal;
+	font-weight: bold;
+	background-color: #f0f0f0;
+ 	border-bottom: 1px solid #7b5d94;
+	padding: 2px;
+	margin: 27px 0px 4px 0px;
+}
+
+h3 {
+	font-size: 14px;
+	line-height: normal;
+	font-weight: bold;
+	background-color: #f0f0f0;
+	padding: 2px;
+	margin: 21px 0px 4px 0px;
+}
+
+h4 {
+	font-size: 12px;
+	line-height: normal;
+	font-weight: bold;
+	background-color: #f0f0f0;
+	padding: 2px;
+	margin: 18px 0px 4px 0px;
+}
+
+h4.search {
+	font-size: 12px;
+	line-height: normal;
+	font-weight: normal;
+	background-color: #f0f0f0;
+	padding: 4px;
+	margin: 18px 0px 4px 0px;
+}
+
+h5 {
+	font-size: 10px;
+	line-height: normal;
+	font-weight: bold;
+	background-color: #f0f0f0;
+	padding: 2px;
+	margin: 14px 0px 4px 0px;
+}
+
+h6 {
+	font-size: 8px;
+	line-height: normal;
+	font-weight: bold;
+	background-color: #f0f0f0;
+	padding: 2px;
+	margin: 14px 0px 4px 0px;
+}
+
+.smallfont {
+    font-size: 10px;
+}
+.descfont {
+    font-size: 10px;
+    color: #666666;
+}
+.smallerfont {
+    font-size: 9px;
+}
+.smalltext {
+    color: #666666;
+    font-size: 10px;
+}
+.smalltext a {
+    color: #666666;
+}
+.smalltext-blue {
+    color: #7b5d94;
+    font-size: 10px;
+}
+.surtitle {
+    margin-left: 1px;
+    margin-bottom: 5px;
+    font-size: 14px;
+    color: #666666;
+}
+
+/* css hack found here:  http://www.fo3nix.pwp.blueyonder.co.uk/tutorials/css/hacks/ */
+.navItemOver { font-size: 10px; font-weight: bold; color: #ffffff; background-color: #3c4672; cursor: hand; voice-family: '\'}\''; voice-family:inherit; cursor: pointer;}
+.navItemOver a { color: #ffffff; background-color:#3c4672; text-decoration: none; }
+.navItemOver a:visited { color: #ffffff; background-color:#3c4672; text-decoration: none; }
+.navItemOver a:hover { color: #ffffff; background-color:#3c4672; text-decoration: none; }
+.navItem { font-size: 10px; font-weight: bold; color: #ffffff; background-color: #7b5d94; }
+.navItem a { color: #ffffff; text-decoration: none; }
+.navItem a:hover { color: #ffffff; text-decoration: none; }
+.navItem a:visited { color: #ffffff; text-decoration: none; }
+
+div.padded { padding: 4px; }
+div.thickPadded { padding: 10px; }
+h3.macrolibrariestitle {
+    margin: 0px 0px 0px 0px;
+}
+
+div.centered { text-align: center; margin: 10px; }
+div.centered table {margin: 0px auto; text-align: left; }
+
+.tableview table {
+    margin: 0;
+}
+
+.tableview th {
+    text-align: left;
+    color: #3c4672;
+    font-size: 12px;
+    padding: 5px 0px 0px 5px;
+    border-bottom: 2px solid #7b5d94;
+}
+.tableview td {
+    text-align: left;
+    border-color: #ccc;
+    border-width: 0px 0px 1px 0px;
+    border-style: solid;
+    margin: 0;
+    padding: 4px 10px 4px 5px;
+}
+
+.grid {
+    margin: 2px 0px 5px 0px;
+    border-collapse: collapse;
+}
+.grid th  {
+    border: 1px solid #ccc;
+    padding: 2px 4px 2px 4px;
+    background: #f0f0f0;
+    text-align: center;
+}
+.grid td  {
+    border: 1px solid #ccc;
+    padding: 3px 4px 3px 4px;
+}
+.gridHover {
+	background-color: #f9f9f9;
+}
+
+td.infocell {
+    background-color: #f0f0f0;
+}
+.label {
+	font-weight: bold;
+	color: #3c4672;
+}
+.error {
+	background-color: #fcc;
+}
+
+.errorBox {
+	background-color: #fcc;
+    border: 1px solid #c00;
+    padding: 5px;
+    margin: 5px;
+}
+
+.errorMessage {
+	color: #c00;
+}
+
+.success {
+	background-color: #dfd;
+}
+
+.successBox {
+	background-color: #dfd;
+    border: 1px solid #090;
+    padding: 5px;
+    margin-top:5px;
+    margin-bottom:5px;
+}
+
+blockquote {
+	padding-left: 10px;
+	padding-right: 10px;
+	margin-left: 5px;
+	margin-right: 0px;
+	border-left: 1px solid #7b5d94;
+}
+
+table.confluenceTable
+{
+    margin: 5px;
+    border-collapse: collapse;
+}
+
+/* Added as a temporary fix for CONF-4223. The table elements appear to be inheriting the border: none attribute from the sectionMacro class */
+table.confluenceTable td.confluenceTd
+{
+    border-width: 1px;
+    border-style: solid;
+    border-color: #ccc;
+    padding: 3px 4px 3px 4px;
+}
+
+/* Added as a temporary fix for CONF-4223. The table elements appear to be inheriting the border: none attribute from the sectionMacro class */
+table.confluenceTable th.confluenceTh
+{
+    border-width: 1px;
+    border-style: solid;
+    border-color: #ccc;
+    padding: 3px 4px 3px 4px;
+    background-color: #f0f0f0;
+    text-align: center;
+}
+
+td.confluenceTd
+{
+    border-width: 1px;
+    border-style: solid;
+    border-color: #ccc;
+    padding: 3px 4px 3px 4px;
+}
+
+th.confluenceTh
+{
+    border-width: 1px;
+    border-style: solid;
+    border-color: #ccc;
+    padding: 3px 4px 3px 4px;
+    background-color: #f0f0f0;
+    text-align: center;
+}
+
+DIV.small {
+	font-size: 9px;
+}
+
+H1.pagename {
+	margin-top: 0px;
+}
+
+IMG.inline  {}
+
+.loginform {
+    margin: 5px;
+    border: 1px solid #ccc;
+}
+
+/* The text how the "This is a preview" comment should be shown. */
+.previewnote { text-align: center;
+                font-size: 11px;
+                    color: red; }
+
+/* How the preview content should be shown */
+.previewcontent { background: #E0E0E0; }
+
+/* How the system messages should be shown (DisplayMessage.jsp) */
+.messagecontent { background: #E0E0E0; }
+
+/* How the "This page has been modified..." -comment should be shown. */
+.conflictnote { }
+
+.createlink {
+    color: maroon;
+}
+a.createlink {
+    color: maroon;
+}
+.templateparameter {
+    font-size: 9px;
+    color: darkblue;
+}
+
+.diffadded {
+    background: #ddffdd;
+    padding: 1px 1px 1px 4px;
+	border-left: 4px solid darkgreen;
+}
+.diffdeleted {
+    color: #999;
+    background: #ffdddd;
+    padding: 1px 1px 1px 4px;
+	border-left: 4px solid darkred;
+}
+.diffnochange {
+    padding: 1px 1px 1px 4px;
+	border-left: 4px solid lightgrey;
+}
+.differror {
+    background: brown;
+}
+.diff {
+    font-family: lucida console, courier new, fixed-width;
+	font-size: 12px;
+	line-height: 14px;
+}
+.diffaddedchars {
+    background-color:#99ff99;
+    font-weight:bolder;
+}
+.diffremovedchars {
+    background-color:#ff9999;
+    text-decoration: line-through;
+    font-weight:bolder;
+}
+
+.greybackground {
+    background: #f0f0f0
+}
+
+.greybox {
+ 	border: 1px solid #ddd;
+	padding: 3px;
+	margin: 1px 1px 10px 1px;
+}
+
+.borderedGreyBox {
+    border: 1px solid #cccccc;
+    background-color: #f0f0f0;
+    padding: 10px;
+}
+
+.greyboxfilled {
+ 	border: 1px solid #ddd;
+	padding: 5px;
+	margin: 10px 1px 10px 1px;
+	background: #f0f0f0;
+}
+
+.navBackgroundBox {
+    padding: 5px 5px 5px 5px;
+    font-size: 22px;
+	font-weight: bold;
+	font-family: Arial, sans-serif;
+	color: white;
+    background: #7b5d94;
+    text-decoration: none;
+}
+
+.previewBoxTop {
+	background-color: #f0f0f0;
+    border-width: 1px 1px 0px 1px;
+    border-style: solid;
+    border-color: #7b5d94;
+    padding: 5px;
+    margin: 5px 0px 0px 0px;
+    text-align: center;
+}
+.previewContent {
+    background-color: #fff;
+ 	border-color: #7b5d94;
+	border-width: 0px 1px 0px 1px;
+	border-style: solid;
+	padding: 10px;
+	margin: 0px;
+}
+.previewBoxBottom {
+	background-color: #f0f0f0;
+    border-width: 0px 1px 1px 1px;
+    border-style: solid;
+    border-color: #7b5d94;
+    padding: 5px;
+    margin: 0px 0px 5px 0px;
+    text-align: center;
+}
+
+.functionbox {
+    background-color: #f0f0f0;
+ 	border: 1px solid #7b5d94;
+	padding: 3px;
+	margin: 1px 1px 10px 1px;
+}
+
+.functionbox-greyborder {
+    background-color: #f0f0f0;
+ 	border: 1px solid #ddd;
+	padding: 3px;
+	margin: 1px 1px 10px 1px;
+}
+
+.search-highlight {
+    background-color: #ffffcc;
+}
+
+/* normal (white) background */
+.rowNormal {
+    background-color: #ffffff;
+ }
+
+/* alternate (pale yellow) background */
+.rowAlternate {
+    background-color: #f7f7f7;
+}
+
+/* used in the list attachments table */
+.rowAlternateNoBottomColor {
+    background-color: #f7f7f7;
+}
+
+.rowAlternateNoBottomNoColor {
+}
+
+.rowAlternateNoBottomColor td {
+    border-bottom: 0px;
+}
+
+.rowAlternateNoBottomNoColor td {
+    border-bottom: 0px;
+}
+
+/* row highlight (grey) background */
+.rowHighlight {
+    background-color: #f0f0f0;
+
+}
+
+TD.greenbar {FONT-SIZE: 2px; BACKGROUND: #00df00; BORDER: 1px solid #9c9c9c; PADDING: 0px; }
+TD.redbar {FONT-SIZE: 2px; BACKGROUND: #df0000; BORDER: 1px solid #9c9c9c; PADDING: 0px; }
+TD.darkredbar {FONT-SIZE: 2px; BACKGROUND: #af0000; BORDER: 1px solid #9c9c9c; PADDING: 0px; }
+
+TR.testpassed {FONT-SIZE: 2px; BACKGROUND: #ddffdd; PADDING: 0px; }
+TR.testfailed {FONT-SIZE: 2px; BACKGROUND: #ffdddd; PADDING: 0px; }
+
+.toolbar  {
+    margin: 0px;
+    border-collapse: collapse;
+}
+
+.toolbar td  {
+    border: 1px solid #ccc;
+    padding: 2px 2px 2px 2px;
+    color: #ccc;
+}
+
+td.noformatting {
+    border-width: 0px;
+    border-style: none;
+    text-align: center;
+	padding: 0px;
+}
+
+.commentblock {
+    margin: 12px 0 12px 0;
+}
+
+/*
+ * Divs displaying the license information, if necessary.
+ */
+.license-eval, .license-none, .license-nonprofit {
+    border-top: 1px solid #bbbbbb;
+    text-align: center;
+    font-size: 10px;
+    font-family: Verdana, Arial, Helvetica, sans-serif;
+}
+
+.license-eval, .license-none {
+    background-color: #ffcccc;
+}
+
+.license-eval b, .license-none b {
+    color: #990000
+}
+
+.license-nonprofit {
+    background-color: #ffffff;
+}
+
+/*
+ * The shadow at the bottom of the page between the main content and the
+ * "powered by" section.
+ */
+.bottomshadow {
+    height: 12px;
+    background-image: url("$req.contextPath/images/border/border_bottom.gif");
+    background-repeat: repeat-x;
+}
+
+/*
+ * Styling of the operations box
+ */
+.navmenu .operations li, .navmenu .operations ul {
+    list-style: none;
+    margin-left: 0;
+    padding-left: 0;
+}
+
+.navmenu .operations ul {
+    margin-bottom: 9px;
+}
+
+.navmenu .label {
+    font-weight: inherit;
+}
+
+/*
+ * Styling of ops as a toolbar
+ */
+.toolbar div {
+    display: none;
+}
+
+.toolbar .label {
+    display: none;
+}
+
+.toolbar .operations {
+    display: block;
+}
+
+.toolbar .operations ul {
+    display: inline;
+    list-style: none;
+    margin-left: 10px;
+    padding-left: 0;
+}
+
+.toolbar .operations li {
+    list-style: none;
+    display: inline;
+}
+
+/* list page navigational tabs */
+#foldertab {
+padding: 3px 0px 3px 8px;
+margin-left: 0;
+border-bottom: 1px solid #7b5d94;
+font: bold 11px Verdana, sans-serif;
+}
+
+#foldertab li {
+list-style: none;
+margin: 0;
+display: inline;
+}
+
+#foldertab li a {
+padding: 3px 0.5em;
+margin-left: 3px;
+border: 1px solid #7b5d94;
+border-bottom: none;
+background: #7b5d94;
+text-decoration: none;
+}
+
+#foldertab li a:link { color: #ffffff; }
+#foldertab li a:visited { color: #ffffff; }
+
+#foldertab li a:hover {
+color: #ffffff;
+background: #3c4672;
+border-color: #3c4672;
+}
+
+#foldertab li a.current {
+background: white;
+border-bottom: 1px solid white;
+color: black;
+}
+
+#foldertab li a.current:link { color: black; }
+#foldertab li a.current:visited { color: black; }
+#foldertab li a.current:hover {
+background: white;
+border-bottom: 1px solid white;
+color: black;
+}
+
+/* alphabet list */
+ul#squaretab {
+margin-left: 0;
+padding-left: 0;
+white-space: nowrap;
+font: bold 8px Verdana, sans-serif;
+}
+
+#squaretab li {
+display: inline;
+list-style-type: none;
+}
+
+#squaretab a {
+padding: 2px 6px;
+border: 1px solid #7b5d94;
+}
+
+#squaretab a:link, #squaretab a:visited {
+color: #fff;
+background-color: #7b5d94;
+text-decoration: none;
+}
+
+#squaretab a:hover {
+color: #ffffff;
+background-color: #3c4672;
+border-color: #3c4672;
+text-decoration: none;
+}
+
+#squaretab li a#current {
+background: white;
+color: black;
+}
+
+.blogcalendar * {
+    font-family:verdana, arial, sans-serif;
+    font-size:x-small;
+    font-weight:normal;
+    line-height:140%;
+    padding:2px;
+}
+
+
+table.blogcalendar {
+    border: 1px solid #7b5d94;
+}
+
+.blogcalendar th.calendarhead, a.calendarhead {
+    font-size:x-small;
+    font-weight:bold;
+    padding:2px;
+    text-transform:uppercase;
+    background-color: #7b5d94;
+    color: #ffffff;
+    letter-spacing: .3em;
+    text-transform: uppercase;
+}
+
+.calendarhead:visited {color: white;}
+.calendarhead:active {color: white;}
+.calendarhead:hover {color: white;}
+
+.blogcalendar th {
+    font-size:x-small;
+    font-weight:bold;
+    padding:2px;
+    background-color:#f0f0f0;
+}
+
+.blogcalendar td {
+    font-size:x-small;
+    font-weight:normal;
+}
+
+.searchGroup { padding: 0 0 10px 0; background: #f0f0f0; }
+.searchGroupHeading { font-size: 10px; font-weight: bold; color: #ffffff; background-color: #7b5d94; padding: 2px 4px 1px 4px; }
+.searchItem { padding: 1px 4px 1px 4px; }
+.searchItemSelected { padding: 1px 4px 1px 4px; font-weight: bold; background: #ddd; }
+
+/* permissions page styles */
+.permissionHeading {
+    border-bottom: #bbb; border-width: 0 0 1px 0; border-style: solid; font-size: 16px; text-align: left;
+}
+.permissionTab {
+    border-width: 0 0 0 1px; border-style: solid; background: #7b5d94; color: #ffffff; font-size: 10px;
+}
+.permissionSuperTab {
+    border-width: 0 0 0 1px; border-style: solid; background: #3c4672; color: #ffffff;
+}
+.permissionCell {
+    border-left: #bbb; border-width: 0 0 0 1px; border-style: solid;
+}
+
+/* warning panel */
+.warningPanel { background: #FFFFCE; border:#F0C000 1px solid; padding: 8px; margin: 10px; }
+/* alert panel */
+.alertPanel { background: #FFCCCC; border:#C00 1px solid; padding: 8px; margin: 10px; }
+
+/* side menu highlighting (e.g. space content screen) */
+.optionPadded { padding: 2px; }
+.optionSelected { background-color: #ffffcc; padding: 2px; border: 1px solid #ddd; margin: -1px; }
+.optionSelected a { font-weight: bold; text-decoration: none; color: black; }
+
+/* information macros */
+.noteMacro { border-style: solid; border-width: 1px; border-color: #F0C000; background-color: #FFFFCE; text-align:left; margin-top: 5px; margin-bottom: 5px}
+.warningMacro { border-style: solid; border-width: 1px; border-color: #c00; background-color: #fcc; text-align:left; margin-top: 5px; margin-bottom: 5px}
+.infoMacro { border-style: solid; border-width: 1px; border-color: #7b5d94; background-color: #D8E4F1; text-align:left; margin-top: 5px; margin-bottom: 5px}
+.tipMacro { border-style: solid; border-width: 1px; border-color: #090; background-color: #dfd; text-align:left; margin-top: 5px; margin-bottom: 5px}
+.informationMacroPadding { padding: 5px 0 0 5px; }
+
+table.infoMacro td, table.warningMacro td, table.tipMacro td, table.noteMacro td, table.sectionMacro td {
+    border: none;
+}
+
+table.sectionMacroWithBorder td.columnMacro { border-style: dashed; border-width: 1px; border-color: #cccccc;}
+
+/* styles for links in the top bar */
+.topBarDiv a:link {color: #ffffff;}
+.topBarDiv a:visited {color: #ffffff;}
+.topBarDiv a:active {color: #ffffff;}
+.topBarDiv a:hover {color: #ffffff;}
+.topBarDiv {color: #ffffff;}
+
+.topBar {
+    background-color: #3c4672;
+}
+
+
+/* styles for extended operations */
+.greyLinks a:link {color: #666666; text-decoration:underline;}
+.greyLinks a:visited {color: #666666; text-decoration:underline;}
+.greyLinks a:active {color: #666666; text-decoration:underline;}
+.greyLinks a:hover {color: #666666; text-decoration:underline;}
+.greyLinks {color: #666666; display:block; padding: 10px}
+
+.logoSpaceLink {color: #999999; text-decoration: none}
+.logoSpaceLink a:link {color: #999999; text-decoration: none}
+.logoSpaceLink a:visited {color: #999999; text-decoration: none}
+.logoSpaceLink a:active {color: #999999; text-decoration: none}
+.logoSpaceLink a:hover {color: #3c4672; text-decoration: none}
+
+/* basic panel (basicpanel.vmd) style */
+.basicPanelContainer {border: 1px solid #7b5d94; margin-top: 2px; margin-bottom: 8px; width: 100%}
+.basicPanelTitle {padding: 5px; margin: 0px; background-color: #f0f0f0; color: black; font-weight: bold;}
+.basicPanelBody {padding: 5px; margin: 0px}
+
+.separatorLinks a:link {color: white}
+.separatorLinks a:visited {color: white}
+.separatorLinks a:active {color: white}
+
+.greynavbar {background-color: #f0f0f0; border-top: 1px solid #7b5d94; margin-top: 2px}
+
+div.headerField {
+    float: left;
+    width: auto;
+    height: 100%;
+}
+
+.headerFloat {
+    margin-left: auto;
+    width: 50%;
+}
+
+.headerFloatLeft {
+    float: left;
+    margin-right: 20px;
+    margin-bottom: 10px;
+}
+
+#headerRow {
+    padding: 10px;
+}
+
+div.license-personal {
+   background-color: #3c4672;
+   color: #ffffff;
+}
+
+div.license-personal a {
+   color: #ffffff;
+}
+
+.greyFormBox {
+    border: 1px solid #cccccc;
+    padding: 5px;
+}
+
+/* IE automatically adds a margin before and after form tags. Use this style to remove that */
+.marginlessForm {
+    margin: 0px;
+}
+
+.openPageHighlight {
+    background-color: #ffffcc;
+    padding: 2px;
+    border: 1px solid #ddd;
+}
+
+.editPageInsertLinks, .editPageInsertLinks a
+{
+    color: #666666;
+    font-weight: bold;
+    font-size: 10px;
+}
+
+/* Style for label heatmap. */
+.top10 a {
+    font-weight: bold;
+    font-size: 2em;
+    color: #3c4672;
+}
+.top25 a {
+    font-weight: bold;
+    font-size: 1.6em;
+    color: #3c4672;
+}
+.top50 a {
+    font-size: 1.4em;
+    color: #3c4672;
+}
+.top100 a {
+    font-size: 1.2em;
+    color: #3c4672;
+}
+
+.heatmap {
+    list-style:none;
+    width: 95%;
+    margin: 0px auto;
+}
+
+.heatmap a {
+    text-decoration:none;
+}
+
+.heatmap a:hover {
+    text-decoration:underline;
+}
+
+.heatmap li {
+    display: inline;
+}
+
+.minitab {
+padding: 3px 0px 3px 8px;
+margin-left: 0;
+margin-top: 1px;
+margin-bottom: 0px;
+border-bottom: 1px solid #7b5d94;
+font: bold 9px Verdana, sans-serif;
+text-decoration: none;
+float:none;
+}
+.selectedminitab {
+padding: 3px 0.5em;
+margin-left: 3px;
+margin-top: 1px;
+border: 1px solid #7b5d94;
+background: white;
+border-bottom: 1px solid white;
+color: #000000;
+text-decoration: none;
+}
+.unselectedminitab {
+padding: 3px 0.5em;
+margin-left: 3px;
+margin-top: 1px;
+border: 1px solid #7b5d94;
+border-bottom: none;
+background: #7b5d94;
+color: #ffffff;
+text-decoration: none;
+}
+
+a.unselectedminitab:hover {
+color: #ffffff;
+background: #3c4672;
+border-color: #3c4672;
+}
+
+a.unselectedminitab:link { color: white; }
+a.unselectedminitab:visited { color: white; }
+
+a.selectedminitab:link { color: black; }
+a.selectedminitab:visited { color: black; }
+
+.linkerror { background-color: #fcc;}
+
+a.labelOperationLink:link {text-decoration: underline}
+a.labelOperationLink:active {text-decoration: underline}
+a.labelOperationLink:visited {text-decoration: underline}
+a.labelOperationLink:hover {text-decoration: underline}
+
+a.newLabel:link {background-color: #ddffdd}
+a.newLabel:active {background-color: #ddffdd}
+a.newLabel:visited {background-color: #ddffdd}
+a.newLabel:hover {background-color: #ddffdd}
+
+ul.square {list-style-type: square}
+
+.inline-control-link {
+    background: #ffc;
+    font-size: 9px;
+    color: #666;
+    padding: 2px;
+    text-transform: uppercase;
+    text-decoration: none;
+}
+
+
+.inline-control-link a:link {text-decoration: none}
+.inline-control-link a:active {text-decoration: none}
+.inline-control-link a:visited {text-decoration: none}
+.inline-control-link a:hover {text-decoration: none}
+
+.inline-control-link {
+    background: #ffc;
+    font-size: 9px;
+    color: #666;
+    padding: 2px;
+    text-transform: uppercase;
+    text-decoration: none;
+    cursor: pointer;
+}
+
+div.auto_complete {
+    width: 350px;
+    background: #fff;
+}
+div.auto_complete ul {
+    border: 1px solid #888;
+    margin: 0;
+    padding: 0;
+    width: 100%;
+    list-style-type: none;
+}
+div.auto_complete ul li {
+    margin: 0;
+    padding: 3px;
+}
+div.auto_complete ul li.selected {
+    background-color: #ffb;
+}
+div.auto_complete ul strong.highlight {
+    color: #800;
+    margin: 0;
+    padding: 0;
+}
+
+/******* Edit Page Styles *******/
+.toogleFormDiv{
+    border:1px solid #A7A6AA;
+    background-color:white;
+    padding:5px;
+    margin-top: 5px;
+}
+
+.toogleInfoDiv{
+    border:1px solid #A7A6AA;
+    background-color:white;
+    display:none;
+    padding:5px;
+    margin-top: 10px;
+}
+
+.inputSection{
+    margin-bottom:20px;
+}
+
+#editBox{
+   border:1px solid lightgray;
+   background-color:#F0F0F0;
+}
+
+/******* Left Navigation Theme Styles ********/
+.leftnav li a {
+    text-decoration:none;
+    color:white;
+    margin:0px;
+    display:block;
+    padding:2px;
+    padding-left:5px;
+    background-color: #7b5d94;
+    border-top:1px solid #7b5d94;
+}
+
+.leftnav li a:active {color:white;}
+.leftnav li a:visited {color:white;}
+.leftnav li a:hover {background-color: #3c4672; color:white;}
+

Added: incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/resources/configuration/config.ini
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/resources/configuration/config.ini?rev=921781&view=auto
==============================================================================
--- incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/resources/configuration/config.ini (added)
+++ incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/resources/configuration/config.ini Thu Mar 11 10:27:23 2010
@@ -0,0 +1,5 @@
+osgi.bundles=org.apache.felix.fileinstall-2.0.0@start,cm-3.2.0-v20070116@start,services-3.1.200-v20070605@start,pax-logging-api-1.4.jar@start,pax-logging-service-1.4.jar@start,org.apache.aries.util-1.0.0-incubating-SNAPSHOT.jar@start,org.apache.aries.blueprint-1.0.0-incubating-SNAPSHOT.jar@start,org.apache.aries.samples.blueprint.helloworld.api@start,org.apache.aries.samples.blueprint.helloworld.server,org.apache.aries.samples.blueprint.helloworld.client
+felix.fileinstall.dir=../dropins
+felix.fileinstall.bundles.new.start=false
+eclipse.ignoreApp=true
+org.ops4j.pax.logging.DefaultServiceLog.level=INFO

Added: incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/scripts/build.bat
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/scripts/build.bat?rev=921781&view=auto
==============================================================================
--- incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/scripts/build.bat (added)
+++ incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/scripts/build.bat Thu Mar 11 10:27:23 2010
@@ -0,0 +1,7 @@
+@echo off
+setlocal 
+cd %~dp0
+
+echo Building project %1
+cd ../source/%1
+mvn clean install

Added: incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/scripts/build.sh
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/scripts/build.sh?rev=921781&view=auto
==============================================================================
--- incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/scripts/build.sh (added)
+++ incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/scripts/build.sh Thu Mar 11 10:27:23 2010
@@ -0,0 +1,9 @@
+#!/bin/sh
+scriptDir=`pwd`/`dirname $0`
+project=$1
+
+if [ "${project}" != "NONE" ]; then
+  echo Building project ${project}
+  cd "../source/${project}"
+  mvn clean install
+fi

Propchange: incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/scripts/build.sh
------------------------------------------------------------------------------
    svn:executable = *

Added: incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/scripts/run.bat
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/scripts/run.bat?rev=921781&view=auto
==============================================================================
--- incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/scripts/run.bat (added)
+++ incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/scripts/run.bat Thu Mar 11 10:27:23 2010
@@ -0,0 +1,7 @@
+setlocal 
+cd %~dp0
+copy ..\source\greeter-api\target\*.jar ..\dropins
+
+copy ..\source\greeter-server-osgi\target\*.jar ..\dropins
+
+copy ..\source\greeter-client-osgi\target\*.jar ..\dropins

Added: incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/scripts/run.sh
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/scripts/run.sh?rev=921781&view=auto
==============================================================================
--- incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/scripts/run.sh (added)
+++ incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/scripts/run.sh Thu Mar 11 10:27:23 2010
@@ -0,0 +1,5 @@
+#!/bin/sh
+scriptDir=`dirname $0`
+cp "${scriptDir}/../source/greeter-api/target/"*.jar "${scriptDir}/../dropins"
+cp "${scriptDir}/../source/greeter-server-osgi/target/"*.jar "${scriptDir}/../dropins"
+cp "${scriptDir}/../source/greeter-client-osgi/target/"*.jar "${scriptDir}/../dropins"

Added: incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/scripts/start_platform.bat
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/scripts/start_platform.bat?rev=921781&view=auto
==============================================================================
--- incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/scripts/start_platform.bat (added)
+++ incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/scripts/start_platform.bat Thu Mar 11 10:27:23 2010
@@ -0,0 +1,5 @@
+setlocal
+cd %~dp0
+cd ..\platform
+
+java -jar osgi-3.5.0.v20090520.jar -console -clean
\ No newline at end of file

Added: incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/scripts/start_platform.sh
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/scripts/start_platform.sh?rev=921781&view=auto
==============================================================================
--- incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/scripts/start_platform.sh (added)
+++ incubator/aries/trunk/tutorials/blueprint/tutorial-assembly/src/main/scripts/start_platform.sh Thu Mar 11 10:27:23 2010
@@ -0,0 +1,4 @@
+#!/bin/sh
+scriptDir=`pwd`/`dirname $0`
+cd "${scriptDir}/../platform"
+java -jar osgi-3.5.0.v20090520.jar -console -clean



Mime
View raw message