Author: marrs
Date: Thu Mar 29 16:32:22 2012
New Revision: 1306968
URL: http://svn.apache.org/viewvc?rev=1306968&view=rev
Log:
Moved some stuff around in the dev-doc folder. Added the first design document.
Added:
ace/site/trunk/content/dev-doc/analysis/
ace/site/trunk/content/dev-doc/analysis/index.mdtext
- copied unchanged from r1306824,
ace/site/trunk/content/dev-doc/analysis.mdtext
ace/site/trunk/content/dev-doc/design/
ace/site/trunk/content/dev-doc/design/index.mdtext
- copied unchanged from r1306824,
ace/site/trunk/content/dev-doc/design.mdtext
ace/site/trunk/content/dev-doc/design/remote-interfaces.mdtext
ace/site/trunk/content/dev-doc/design/remoteinterfaces-components.svg
ace/site/trunk/content/dev-doc/design/src/
ace/site/trunk/content/dev-doc/design/src/remoteinterfaces-components.graffle
ace/site/trunk/content/dev-doc/requirements/
ace/site/trunk/content/dev-doc/requirements/index.mdtext
- copied unchanged from r1306824,
ace/site/trunk/content/dev-doc/requirements.mdtext
ace/site/trunk/content/dev-doc/requirements/roles.mdtext
- copied unchanged from r1306824,
ace/site/trunk/content/dev-doc/roles.mdtext
ace/site/trunk/content/dev-doc/requirements/use-cases/
- copied from r1306824, ace/site/trunk/content/dev-doc/use-cases/
Removed:
ace/site/trunk/content/dev-doc/analysis.mdtext
ace/site/trunk/content/dev-doc/design.mdtext
ace/site/trunk/content/dev-doc/requirements.mdtext
ace/site/trunk/content/dev-doc/roles.mdtext
ace/site/trunk/content/dev-doc/use-cases/
Modified:
ace/site/trunk/templates/sidenav.html
Added: ace/site/trunk/content/dev-doc/design/remote-interfaces.mdtext
URL:
http://svn.apache.org/viewvc/ace/site/trunk/content/dev-doc/design/remote-interfaces.mdtext?rev=1306968&view=auto
==============================================================================
--- ace/site/trunk/content/dev-doc/design/remote-interfaces.mdtext (added)
+++ ace/site/trunk/content/dev-doc/design/remote-interfaces.mdtext Thu Mar 29
16:32:22 2012
@@ -0,0 +1,81 @@
+Title: Remote Interfaces Design
+
+Summary
+=======
+
+This document describes the generic design of the remote interfaces that can
be used to access a system within the ACE topology. The design can be divided
into three separate logical components: the connectors, the protocol adapters
and session management.
+
+The connectors provide the interfaces to the system. In general, you can have
more than one, for example in ACE we can define a client connector that allows
us to talk to the ACE server.
+
+The protocol adapters expose interfaces through a specific protocol. A REST
adapter provides access through the HTTP protocol, and specific UI adapters can
be used to interact with a user using a specific web or desktop framework. In
future extensions, adapters can also implement JMX management for example.
+
+Session management is responsible for managing authentication and
authorization across all protocol adapters. This makes sessions a first class
citizen in the design and abstracts them away from protocol specific sessions.
+
+Design
+======
+
+The design is based on the 4+1 View, which means we look at the logical view,
process view, use case design, implementation view and deployment view to
arrive at the full design.
+
+### Logical View
+
+<object data="remote-interfaces-components.svg" type="image/svg+xml"
class="span12"></object>
+
+The design is split into three components:
+
+1. Protocol Adapters. For every protocol that we support, we have to create a
protocol adapter, whose responsibility it is to expose connector interfaces.
Connectors are discovered by leveraging the service registry using the
whiteboard pattern. The protocol adapter talks to the session manager for
managing sessions and making sure certain permissions have been given to the
authenticated user. If the protocol itself also supports the notion of
sessions, it's the adapters responsibility to ensure that the life cycle of the
protocol specific session is aligned with our own sessions.
+
+2. Connectors. Each connector, which is implemented as a collection of one or
more OSGi services, provides a specific API to talk to a system. An example is
the client API. Which services make up a connector is specified in the design
of a component.
+
+3. Session Manager. Responsible for managing sessions and the authentication
and authorization of actors that use them. The session manager will be invoked
by protocol adapters. It leverages the OSGi User Admin service to provide users
with credentials, roles and permissions. The session manager is allowed to
expire sessions if it needs to, so protocol adapters should always check if a
session is still open.
+
+### Process View
+
+Incoming calls arrive at a protocol implementation. As soon as they reach one
of our adapters, the adapter should synchronously talk to the session manager,
because it needs to check for the proper authentication and authorization
before it can continue.
+
+A session manager is allowed to spawn a background thread for session
expiration purposes, but implementations can also decide to leverage Java
features such as "weak" references, or use synchronous expiration as a side
effect of incoming calls.
+
+### Use Case Design
+
+There are two major use cases that are designed explicitly here:
+
+1. Register Connector Services
+2. Invoke Operation
+
+#### Register Connector Services
+
+##### Normal Flow
+
+1. A component registers a service in the OSGi service registry.
+2. The protocol adapter, listening whiteboard style, is notified and validates
the service.
+3. The protocol adapter hands over the service to a protocol specific factory
that creates an adapter.
+4. The protocol adapter registers the created adapter with the protocol
implementation.
+
+#### Invoke Operation
+
+##### Normal Flow
+
+1. An actor invokes an operation on a service.
+2. The invocation arrives at the protocol adapter, who looks up or creates the
session with the session manager.
+3. The protocol adapter checks if the actor is authenticated and authorized to
invoke this operation.
+4. The protocol adapter invokes the operation on the connector associated with
this adapter.
+
+### Implementation View
+
+The implementation views for the different connectors and protocol adapters
can be found in the designs of these components.
+
+The implementation view for the session manager consists of:
+
+* o.a.a.client.repository.SessionFactory - the interface for a factory that
can be used to create and destroy sessions;
+* o.a.a.client.repository.impl.Activator - the implementation of the session
factory.
+
+Note that this current implementation is specific to the client, because for
now that is the only place where we have sessions (the other connectors are
essentially stateless).
+
+### Deployment View
+
+The connectors and protocol adapters are deployed as different bundles:
+
+* o.a.a.client.repository.api - contains the API for the client connector and
session manager;
+* o.a.a.client.repository.impl- contains the implementation for the session
manager and client connector
+* o.a.a.client.repository.* - various bundles that also contain parts of the
implementation of the client connector;
+* o.a.a.client.rest - protocol adapter for the REST client API;
+* o.a.a.webui.vaadin - protocol adapter for the Vaadin based web UI.
Added: ace/site/trunk/content/dev-doc/design/remoteinterfaces-components.svg
URL:
http://svn.apache.org/viewvc/ace/site/trunk/content/dev-doc/design/remoteinterfaces-components.svg?rev=1306968&view=auto
==============================================================================
--- ace/site/trunk/content/dev-doc/design/remoteinterfaces-components.svg
(added)
+++ ace/site/trunk/content/dev-doc/design/remoteinterfaces-components.svg Thu
Mar 29 16:32:22 2012
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="1 -2 524 194"
width="524pt" height="194pt"><metadata
xmlns:dc="http://purl.org/dc/elements/1.1/"><dc:date>2012-03-29
15:58Z</dc:date><!-- Produced by OmniGraffle Professional 5.3.6
--></metadata><defs><font-face font-family="Helvetica" font-size="12"
units-per-em="1000" underline-position="-75.683594"
underline-thickness="49.316406" slope="0" x-height="522.94922"
cap-height="717.28516" ascent="770.01953" descent="-229.98047"
font-weight="500"><font-face-src><font-face-name
name="Helvetica"/></font-face-src></font-face><marker orient="auto"
overflow="visible" markerUnits="strokeWidth" id="StickArrow_Marker" viewBox="-1
-4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0
0 M 0 -3 L 8 0 L 0 3" fill="none" stroke="currentColor"
stroke-width="1"/></g></marker></defs><g stroke="none" stroke-opacity="1"
stroke-dasharray="none" fill="none" fill-opacity="1
"><title>Canvas 1</title><g><title>Layer 1</title><rect x="34.615372" y="15"
width="124.38464" height="55.43802" fill="white"/><rect x="34.615372" y="15"
width="124.38464" height="55.43802" stroke="black" stroke-linecap="round"
stroke-linejoin="round" stroke-width="1"/><text transform="translate(39.615376
35.71901)" fill="black"><tspan font-family="Helvetica" font-size="12"
font-weight="500" x="35.846619" y="11"
textLength="42.691406">protocol</tspan></text><rect x="12.000019" y="26.43959"
width="37.6923" height="10.559624" fill="white"/><rect x="12.000019"
y="26.43959" width="37.6923" height="10.559624" stroke="black"
stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect
x="12.000019" y="48.438797" width="37.6923" height="10.559624"
fill="white"/><rect x="12.000019" y="48.438797" width="37.6923"
height="10.559624" stroke="black" stroke-linecap="round"
stroke-linejoin="round" stroke-width="1"/><rect x="207.61539" y="15"
width="124.38464" height="55.43802" fi
ll="white"/><rect x="207.61539" y="15" width="124.38464" height="55.43802"
stroke="black" stroke-linecap="round" stroke-linejoin="round"
stroke-width="1"/><text transform="translate(212.61539 35.71901)"
fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500"
x="13.830017" y="11" textLength="86.72461">protocol adapter</tspan></text><rect
x="185.00003" y="26.43959" width="37.692291" height="10.559624"
fill="white"/><rect x="185.00003" y="26.43959" width="37.692291"
height="10.559624" stroke="black" stroke-linecap="round"
stroke-linejoin="round" stroke-width="1"/><rect x="185.00003" y="48.438797"
width="37.692291" height="10.559624" fill="white"/><rect x="185.00003"
y="48.438797" width="37.692291" height="10.559624" stroke="black"
stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect
x="207.61536" y="112" width="124.38464" height="55.43802" fill="white"/><rect
x="207.61536" y="112" width="124.38464" height="55.43802" stroke="black"
stroke-l
inecap="round" stroke-linejoin="round" stroke-width="1"/><text
transform="translate(212.61536 132.71901)" fill="black"><tspan
font-family="Helvetica" font-size="12" font-weight="500" x="11.5009155" y="11"
textLength="91.38281">session manager</tspan></text><rect x="185" y="123.43959"
width="37.692291" height="10.5596313" fill="white"/><rect x="185" y="123.43959"
width="37.692291" height="10.5596313" stroke="black" stroke-linecap="round"
stroke-linejoin="round" stroke-width="1"/><rect x="185" y="145.43881"
width="37.692291" height="10.5596313" fill="white"/><rect x="185" y="145.43881"
width="37.692291" height="10.5596313" stroke="black" stroke-linecap="round"
stroke-linejoin="round" stroke-width="1"/><rect x="380.61539" y="14.999985"
width="124.38464" height="55.43802" fill="white"/><rect x="380.61539"
y="14.999985" width="124.38464" height="55.43802" stroke="black"
stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text
transform="translate(385.61539 35.718994
)" fill="black"><tspan font-family="Helvetica" font-size="12"
font-weight="500" x="30.842712" y="11"
textLength="52.69922">connector</tspan></text><rect x="358.00003" y="26.43959"
width="37.692322" height="10.559624" fill="white"/><rect x="358.00003"
y="26.43959" width="37.692322" height="10.559624" stroke="black"
stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect
x="358.00003" y="48.438797" width="37.692322" height="10.559624"
fill="white"/><rect x="358.00003" y="48.438797" width="37.692322"
height="10.559624" stroke="black" stroke-linecap="round"
stroke-linejoin="round" stroke-width="1"/><line x1="159" y1="42.71901"
x2="197.71539" y2="42.71901" marker-end="url(#StickArrow_Marker)"
stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"
stroke-dasharray="4,4"/><line x1="332.00006" y1="42.71901" x2="370.71536"
y2="42.718998" marker-end="url(#StickArrow_Marker)" stroke="black"
stroke-linecap="round" stroke-linejoin="round" stroke-wid
th="1" stroke-dasharray="4,4"/><line x1="269.80771" y1="70.438026"
x2="269.80768" y2="102.1" marker-end="url(#StickArrow_Marker)" stroke="black"
stroke-linecap="round" stroke-linejoin="round" stroke-width="1"
stroke-dasharray="4,4"/></g></g></svg>
Added:
ace/site/trunk/content/dev-doc/design/src/remoteinterfaces-components.graffle
URL:
http://svn.apache.org/viewvc/ace/site/trunk/content/dev-doc/design/src/remoteinterfaces-components.graffle?rev=1306968&view=auto
==============================================================================
---
ace/site/trunk/content/dev-doc/design/src/remoteinterfaces-components.graffle
(added)
+++
ace/site/trunk/content/dev-doc/design/src/remoteinterfaces-components.graffle
Thu Mar 29 16:32:22 2012
@@ -0,0 +1,619 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>ActiveLayerIndex</key>
+ <integer>0</integer>
+ <key>ApplicationVersion</key>
+ <array>
+ <string>com.omnigroup.OmniGrafflePro</string>
+ <string>138.33.0.157554</string>
+ </array>
+ <key>AutoAdjust</key>
+ <true/>
+ <key>BackgroundGraphic</key>
+ <dict>
+ <key>Bounds</key>
+ <string>{{0, 0}, {559, 783}}</string>
+ <key>Class</key>
+ <string>SolidGraphic</string>
+ <key>ID</key>
+ <integer>2</integer>
+ <key>Style</key>
+ <dict>
+ <key>shadow</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>stroke</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ </dict>
+ </dict>
+ <key>CanvasOrigin</key>
+ <string>{0, 0}</string>
+ <key>ColumnAlign</key>
+ <integer>1</integer>
+ <key>ColumnSpacing</key>
+ <real>36</real>
+ <key>CreationDate</key>
+ <string>2012-03-29 15:54:32 +0000</string>
+ <key>Creator</key>
+ <string>Marcel Offermans</string>
+ <key>DisplayScale</key>
+ <string>1 0/72 in = 1 0/72 in</string>
+ <key>GraphDocumentVersion</key>
+ <integer>8</integer>
+ <key>GraphicsList</key>
+ <array>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>33</integer>
+ </dict>
+ <key>ID</key>
+ <integer>40</integer>
+ <key>Points</key>
+ <array>
+ <string>{269.80771, 70.438026}</string>
+ <string>{269.80768, 112}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>HeadArrow</key>
+ <string>StickArrow</string>
+ <key>Pattern</key>
+ <integer>1</integer>
+ <key>TailArrow</key>
+ <string>0</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>29</integer>
+ <key>Info</key>
+ <integer>1</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>37</integer>
+ </dict>
+ <key>ID</key>
+ <integer>39</integer>
+ <key>Points</key>
+ <array>
+ <string>{332.00006, 42.719009}</string>
+ <string>{380.61536, 42.718994}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>HeadArrow</key>
+ <string>StickArrow</string>
+ <key>Pattern</key>
+ <integer>1</integer>
+ <key>TailArrow</key>
+ <string>0</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>29</integer>
+ <key>Info</key>
+ <integer>3</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>29</integer>
+ </dict>
+ <key>ID</key>
+ <integer>38</integer>
+ <key>Points</key>
+ <array>
+ <string>{159.00002, 42.719009}</string>
+ <string>{207.61539, 42.719009}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>HeadArrow</key>
+ <string>StickArrow</string>
+ <key>Pattern</key>
+ <integer>1</integer>
+ <key>TailArrow</key>
+ <string>0</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>25</integer>
+ <key>Info</key>
+ <integer>3</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>Group</string>
+ <key>Graphics</key>
+ <array>
+ <dict>
+ <key>Bounds</key>
+ <string>{{358.00003, 48.438797},
{37.692299, 10.559624}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>ID</key>
+ <integer>35</integer>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>shadow</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ </dict>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{358.00003, 26.43959},
{37.692299, 10.559624}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>ID</key>
+ <integer>36</integer>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>shadow</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ </dict>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{380.61539, 14.999985},
{124.38464, 55.438019}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>ID</key>
+ <integer>37</integer>
+ <key>Magnets</key>
+ <array>
+ <string>{0, 1}</string>
+ <string>{0, -1}</string>
+ <string>{1, 0}</string>
+ <string>{-1, 0}</string>
+ </array>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict/>
+ <key>Text</key>
+ <dict>
+ <key>Text</key>
+
<string>{\rtf1\ansi\ansicpg1252\cocoartf1138\cocoasubrtf320
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\fs24 \cf0 connector}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ </dict>
+ </array>
+ <key>ID</key>
+ <integer>34</integer>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>Group</string>
+ <key>Graphics</key>
+ <array>
+ <dict>
+ <key>Bounds</key>
+ <string>{{185, 145.43881}, {37.692299,
10.559624}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>ID</key>
+ <integer>31</integer>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>shadow</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ </dict>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{185, 123.43959}, {37.692299,
10.559624}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>ID</key>
+ <integer>32</integer>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>shadow</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ </dict>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{207.61536, 112}, {124.38464,
55.438019}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>ID</key>
+ <integer>33</integer>
+ <key>Magnets</key>
+ <array>
+ <string>{0, 1}</string>
+ <string>{0, -1}</string>
+ <string>{1, 0}</string>
+ <string>{-1, 0}</string>
+ </array>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict/>
+ <key>Text</key>
+ <dict>
+ <key>Text</key>
+
<string>{\rtf1\ansi\ansicpg1252\cocoartf1138\cocoasubrtf320
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\fs24 \cf0 session manager}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ </dict>
+ </array>
+ <key>ID</key>
+ <integer>30</integer>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>Group</string>
+ <key>Graphics</key>
+ <array>
+ <dict>
+ <key>Bounds</key>
+ <string>{{185.00003, 48.438797},
{37.692299, 10.559624}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>ID</key>
+ <integer>27</integer>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>shadow</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ </dict>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{185.00003, 26.43959},
{37.692299, 10.559624}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>ID</key>
+ <integer>28</integer>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>shadow</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ </dict>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{207.61539, 15}, {124.38464,
55.438019}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>ID</key>
+ <integer>29</integer>
+ <key>Magnets</key>
+ <array>
+ <string>{0, 1}</string>
+ <string>{0, -1}</string>
+ <string>{1, 0}</string>
+ <string>{-1, 0}</string>
+ </array>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict/>
+ <key>Text</key>
+ <dict>
+ <key>Text</key>
+
<string>{\rtf1\ansi\ansicpg1252\cocoartf1138\cocoasubrtf320
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\fs24 \cf0 protocol adapter}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ </dict>
+ </array>
+ <key>ID</key>
+ <integer>26</integer>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>Group</string>
+ <key>Graphics</key>
+ <array>
+ <dict>
+ <key>Bounds</key>
+ <string>{{12.000019, 48.438797},
{37.692299, 10.559624}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>ID</key>
+ <integer>23</integer>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>shadow</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ </dict>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{12.000019, 26.43959},
{37.692299, 10.559624}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>ID</key>
+ <integer>24</integer>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>shadow</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ </dict>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{34.615376, 15}, {124.38464,
55.438019}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>ID</key>
+ <integer>25</integer>
+ <key>Magnets</key>
+ <array>
+ <string>{0, 1}</string>
+ <string>{0, -1}</string>
+ <string>{1, 0}</string>
+ <string>{-1, 0}</string>
+ </array>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict/>
+ <key>Text</key>
+ <dict>
+ <key>Text</key>
+
<string>{\rtf1\ansi\ansicpg1252\cocoartf1138\cocoasubrtf320
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\fs24 \cf0 protocol}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ </dict>
+ </array>
+ <key>ID</key>
+ <integer>22</integer>
+ </dict>
+ </array>
+ <key>GridInfo</key>
+ <dict/>
+ <key>GuidesLocked</key>
+ <string>NO</string>
+ <key>GuidesVisible</key>
+ <string>YES</string>
+ <key>HPages</key>
+ <integer>1</integer>
+ <key>ImageCounter</key>
+ <integer>1</integer>
+ <key>KeepToScale</key>
+ <false/>
+ <key>Layers</key>
+ <array>
+ <dict>
+ <key>Lock</key>
+ <string>NO</string>
+ <key>Name</key>
+ <string>Layer 1</string>
+ <key>Print</key>
+ <string>YES</string>
+ <key>View</key>
+ <string>YES</string>
+ </dict>
+ </array>
+ <key>LayoutInfo</key>
+ <dict>
+ <key>Animate</key>
+ <string>NO</string>
+ <key>circoMinDist</key>
+ <real>18</real>
+ <key>circoSeparation</key>
+ <real>0.0</real>
+ <key>layoutEngine</key>
+ <string>dot</string>
+ <key>neatoSeparation</key>
+ <real>0.0</real>
+ <key>twopiSeparation</key>
+ <real>0.0</real>
+ </dict>
+ <key>LinksVisible</key>
+ <string>NO</string>
+ <key>MagnetsVisible</key>
+ <string>NO</string>
+ <key>MasterSheets</key>
+ <array/>
+ <key>ModificationDate</key>
+ <string>2012-03-29 15:58:41 +0000</string>
+ <key>Modifier</key>
+ <string>Marcel Offermans</string>
+ <key>NotesVisible</key>
+ <string>NO</string>
+ <key>Orientation</key>
+ <integer>2</integer>
+ <key>OriginVisible</key>
+ <string>NO</string>
+ <key>PageBreaks</key>
+ <string>YES</string>
+ <key>PrintInfo</key>
+ <dict>
+ <key>NSBottomMargin</key>
+ <array>
+ <string>float</string>
+ <string>41</string>
+ </array>
+ <key>NSHorizonalPagination</key>
+ <array>
+ <string>int</string>
+ <string>0</string>
+ </array>
+ <key>NSLeftMargin</key>
+ <array>
+ <string>float</string>
+ <string>18</string>
+ </array>
+ <key>NSPaperSize</key>
+ <array>
+ <string>coded</string>
+
<string>BAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAx7X05TU2l6ZT1mZn2WgVMCgUoDhg==</string>
+ </array>
+ <key>NSPrintReverseOrientation</key>
+ <array>
+ <string>int</string>
+ <string>0</string>
+ </array>
+ <key>NSRightMargin</key>
+ <array>
+ <string>float</string>
+ <string>18</string>
+ </array>
+ <key>NSTopMargin</key>
+ <array>
+ <string>float</string>
+ <string>18</string>
+ </array>
+ </dict>
+ <key>PrintOnePage</key>
+ <false/>
+ <key>ReadOnly</key>
+ <string>NO</string>
+ <key>RowAlign</key>
+ <integer>1</integer>
+ <key>RowSpacing</key>
+ <real>36</real>
+ <key>SheetTitle</key>
+ <string>Canvas 1</string>
+ <key>SmartAlignmentGuidesActive</key>
+ <string>YES</string>
+ <key>SmartDistanceGuidesActive</key>
+ <string>YES</string>
+ <key>UniqueID</key>
+ <integer>1</integer>
+ <key>UseEntirePage</key>
+ <false/>
+ <key>VPages</key>
+ <integer>1</integer>
+ <key>WindowInfo</key>
+ <dict>
+ <key>CurrentSheet</key>
+ <integer>0</integer>
+ <key>ExpandedCanvases</key>
+ <array>
+ <dict>
+ <key>name</key>
+ <string>Canvas 1</string>
+ </dict>
+ </array>
+ <key>Frame</key>
+ <string>{{946, 240}, {693, 938}}</string>
+ <key>ListView</key>
+ <true/>
+ <key>OutlineWidth</key>
+ <integer>142</integer>
+ <key>RightSidebar</key>
+ <false/>
+ <key>ShowRuler</key>
+ <true/>
+ <key>Sidebar</key>
+ <true/>
+ <key>SidebarWidth</key>
+ <integer>120</integer>
+ <key>VisibleRegion</key>
+ <string>{{0, 0}, {558, 783}}</string>
+ <key>Zoom</key>
+ <real>1</real>
+ <key>ZoomValues</key>
+ <array>
+ <array>
+ <string>Canvas 1</string>
+ <real>1</real>
+ <real>1</real>
+ </array>
+ </array>
+ </dict>
+ <key>saveQuickLookFiles</key>
+ <string>YES</string>
+</dict>
+</plist>
Modified: ace/site/trunk/templates/sidenav.html
URL:
http://svn.apache.org/viewvc/ace/site/trunk/templates/sidenav.html?rev=1306968&r1=1306967&r2=1306968&view=diff
==============================================================================
--- ace/site/trunk/templates/sidenav.html (original)
+++ ace/site/trunk/templates/sidenav.html Thu Mar 29 16:32:22 2012
@@ -37,16 +37,16 @@
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Developer
Documentation <b class="caret"></b></a>
<ul class="dropdown-menu">
<li>
- <a href="/dev-doc/requirements.html">Requirements</a>
+ <a href="/dev-doc/requirements/">Requirements</a>
</li>
<li>
<a href="/dev-doc/architecture.html">Architecture</a>
</li>
<li>
- <a href="/dev-doc/analysis.html">Analysis</a>
+ <a href="/dev-doc/analysis/">Analysis</a>
</li>
<li>
- <a href="/dev-doc/design.html">Design</a>
+ <a href="/dev-doc/design/">Design</a>
</li>
<li>
<a href="/dev-doc/coding-standards.html">Coding Standards</a>