You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2011/04/26 20:24:13 UTC

svn commit: r1096837 [14/14] - in /incubator/isis/trunk: core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/map/ core/metamodel/src/main/java/org/apache/isis/core/met...

Modified: incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/util/Dump.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/util/Dump.java?rev=1096837&r1=1096836&r2=1096837&view=diff
==============================================================================
--- incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/util/Dump.java (original)
+++ incubator/isis/trunk/core/metamodel/src/main/java/org/apache/isis/core/metamodel/util/Dump.java Tue Apr 26 18:24:05 2011
@@ -17,9 +17,8 @@
  *  under the License.
  */
 
+package org.apache.isis.core.metamodel.util;
 
-package org.apache.isis.core.metamodel.util;
-
 import java.util.List;
 
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
@@ -42,22 +41,22 @@ import org.apache.isis.core.metamodel.sp
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociationFilters;
 
 import com.google.common.collect.Lists;
-
-public final class Dump {
-
-	private static DebugBuilder debugBuilder;
-
-	private Dump() {}
-
-	
-	///////////////////////////////////////////////////////////////////////
-	// specification
-	///////////////////////////////////////////////////////////////////////
-
-	/**
-	 * @see #specification(ObjectAdapter, DebugBuilder)
-	 * @see #specification(ObjectSpecification, DebugBuilder)
-	 */
+
+public final class Dump {
+
+    private static DebugBuilder debugBuilder;
+
+    private Dump() {
+    }
+
+    // /////////////////////////////////////////////////////////////////////
+    // specification
+    // /////////////////////////////////////////////////////////////////////
+
+    /**
+     * @see #specification(ObjectAdapter, DebugBuilder)
+     * @see #specification(ObjectSpecification, DebugBuilder)
+     */
     public static String specification(final ObjectAdapter adapter) {
         final DebugBuilder debugBuilder = new DebugString();
         specification(adapter, debugBuilder);
@@ -69,14 +68,13 @@ public final class Dump {
      * {@link ObjectSpecification} ( {@link ObjectAdapter#getSpecification()}) of the provided {@link ObjectAdapter}
      * 
      * @see #specification(ObjectAdapter)
-	 * @see #specification(ObjectSpecification, DebugBuilder)
+     * @see #specification(ObjectSpecification, DebugBuilder)
      */
     public static void specification(final ObjectAdapter adapter, final DebugBuilder debugBuilder) {
         final ObjectSpecification specification = adapter.getSpecification();
         specification(specification, debugBuilder);
     }
 
-
     public static void specification(final ObjectSpecification specification, final DebugBuilder debugBuilder) {
         try {
             debugBuilder.appendTitle(specification.getClass().getName());
@@ -116,8 +114,7 @@ public final class Dump {
         if (facetTypes.length == 0) {
             debugBuilder.appendln("none");
         } else {
-            for (int i = 0; i < facetTypes.length; i++) {
-                final Class<? extends Facet> type = facetTypes[i];
+            for (final Class<? extends Facet> type : facetTypes) {
                 final Facet facet = specification.getFacet(type);
                 debugBuilder.appendln(facet.toString());
             }
@@ -149,7 +146,8 @@ public final class Dump {
         return names;
     }
 
-    private static void specificationActionMethods(final ObjectSpecification specification, final DebugBuilder debugBuilder) {
+    private static void specificationActionMethods(final ObjectSpecification specification,
+        final DebugBuilder debugBuilder) {
         try {
             final List<ObjectAction> userActions = specification.getObjectActions(ActionType.USER);
             final List<ObjectAction> explActions = specification.getObjectActions(ActionType.EXPLORATION);
@@ -161,13 +159,14 @@ public final class Dump {
         }
     }
 
-    private static void specificationServiceMethods(final ObjectSpecification specification, final DebugBuilder debugBuilder) {
+    private static void specificationServiceMethods(final ObjectSpecification specification,
+        final DebugBuilder debugBuilder) {
         try {
             final List<ObjectAction> userActions = specification.getServiceActionsReturning(ActionType.USER);
             final List<ObjectAction> explActions = specification.getServiceActionsReturning(ActionType.EXPLORATION);
             final List<ObjectAction> prototypeActions = specification.getServiceActionsReturning(ActionType.PROTOTYPE);
             final List<ObjectAction> debActions = specification.getServiceActionsReturning(ActionType.DEBUG);
-            specificationMethods(userActions, explActions, prototypeActions,debActions, debugBuilder);
+            specificationMethods(userActions, explActions, prototypeActions, debActions, debugBuilder);
         } catch (final RuntimeException e) {
             debugBuilder.appendException(e);
         }
@@ -182,8 +181,8 @@ public final class Dump {
         }
         debugBuilder.unindent();
 
-        final List<ObjectAssociation> fields2 = specification
-                .getAssociations(ObjectAssociationFilters.STATICALLY_VISIBLE_ASSOCIATIONS);
+        final List<ObjectAssociation> fields2 =
+            specification.getAssociations(ObjectAssociationFilters.STATICALLY_VISIBLE_ASSOCIATIONS);
         debugBuilder.appendln("Static");
         debugBuilder.indent();
         for (int i = 0; i < fields2.size(); i++) {
@@ -208,20 +207,22 @@ public final class Dump {
                     }
                     final String help = field.getHelp();
                     if (help != null && !help.equals("")) {
-                        debugBuilder
-                                .appendln("Help", help.substring(0, Math.min(30, help.length()))
-                                        + (help.length() > 30 ? "..." : ""));
+                        debugBuilder.appendln("Help", help.substring(0, Math.min(30, help.length()))
+                            + (help.length() > 30 ? "..." : ""));
                     }
 
                     debugBuilder.appendln("ID", field.getIdentifier());
                     debugBuilder.appendln("Short ID", field.getId());
                     debugBuilder.appendln("Name", field.getName());
-                    final String type = field.isOneToManyAssociation() ? "Collection" : field.isOneToOneAssociation() ? "Object" : "Unknown";
+                    final String type =
+                        field.isOneToManyAssociation() ? "Collection" : field.isOneToOneAssociation() ? "Object"
+                            : "Unknown";
                     debugBuilder.appendln("Type", type);
                     debugBuilder.appendln("Has identity", !field.getSpecification().isCollectionOrIsAggregated());
                     debugBuilder.appendln("Spec", field.getSpecification().getFullIdentifier());
 
-                    debugBuilder.appendln("Flags", (field.isAlwaysHidden() ? "" : "Visible ")
+                    debugBuilder
+                        .appendln("Flags", (field.isAlwaysHidden() ? "" : "Visible ")
                             + (field.isNotPersisted() ? "Not Persisted " : " ")
                             + (field.isMandatory() ? "Mandatory " : ""));
 
@@ -230,8 +231,8 @@ public final class Dump {
                         debugBuilder.appendln("Facets");
                         debugBuilder.indent();
                         boolean none = true;
-                        for (int j = 0; j < facets.length; j++) {
-                            debugBuilder.appendln(field.getFacet(facets[j]).toString());
+                        for (final Class<? extends Facet> facet : facets) {
+                            debugBuilder.appendln(field.getFacet(facet).toString());
                             none = false;
                         }
                         if (none) {
@@ -251,13 +252,11 @@ public final class Dump {
 
     }
 
-    private static void specificationMethods(
-            final List<ObjectAction> userActions,
-            final List<ObjectAction> explActions,
-            final List<ObjectAction> prototypeActions,
-            final List<ObjectAction> debugActions,
-            final DebugBuilder debugBuilder) {
-		if (userActions.size() == 0 && explActions.size() == 0 && prototypeActions.size() == 0 && debugActions.size() == 0) {
+    private static void specificationMethods(final List<ObjectAction> userActions,
+        final List<ObjectAction> explActions, final List<ObjectAction> prototypeActions,
+        final List<ObjectAction> debugActions, final DebugBuilder debugBuilder) {
+        if (userActions.size() == 0 && explActions.size() == 0 && prototypeActions.size() == 0
+            && debugActions.size() == 0) {
             debugBuilder.appendln("no actions...");
         } else {
             appendActionDetails(debugBuilder, "User actions", userActions);
@@ -267,22 +266,20 @@ public final class Dump {
         }
     }
 
-	private static void appendActionDetails(final DebugBuilder debug, String desc,
-	        List<ObjectAction> actions) {
-		debug.appendln(desc);
-		debug.indent();
-		for (int i = 0; i < actions.size(); i++) {
-		    actionDetails(actions.get(i), 8, i, debug);
-		}
-		debug.unindent();
-	}
-
-    private static void actionDetails(
-    			final ObjectAction objectAction, 
-    			final int indent, 
-    			final int count, 
-    			final DebugBuilder debugBuilder) {
-        debugBuilder.appendln((count + 1) + "." + objectAction.getId() + " (" + objectAction.getClass().getName() + ")");
+    private static void appendActionDetails(final DebugBuilder debug, final String desc,
+        final List<ObjectAction> actions) {
+        debug.appendln(desc);
+        debug.indent();
+        for (int i = 0; i < actions.size(); i++) {
+            actionDetails(actions.get(i), 8, i, debug);
+        }
+        debug.unindent();
+    }
+
+    private static void actionDetails(final ObjectAction objectAction, final int indent, final int count,
+        final DebugBuilder debugBuilder) {
+        debugBuilder
+            .appendln((count + 1) + "." + objectAction.getId() + " (" + objectAction.getClass().getName() + ")");
         debugBuilder.indent();
         final int newIndent = indent + 4;
         try {
@@ -308,8 +305,8 @@ public final class Dump {
                 if (facets.length > 0) {
                     debugBuilder.appendln("Facets");
                     debugBuilder.indent();
-                    for (int j = 0; j < facets.length; j++) {
-                        debugBuilder.appendln(objectAction.getFacet(facets[j]).toString());
+                    for (final Class<? extends Facet> facet : facets) {
+                        debugBuilder.appendln(objectAction.getFacet(facet).toString());
                     }
                     debugBuilder.unindent();
                 }
@@ -331,8 +328,8 @@ public final class Dump {
                         debugBuilder.appendln(")");
                         debugBuilder.indent();
                         final Class<? extends Facet>[] parameterFacets = p.get(j).getFacetTypes();
-                        for (int i = 0; i < parameterFacets.length; i++) {
-                            debugBuilder.appendln(p.get(j).getFacet(parameterFacets[i]).toString());
+                        for (final Class<? extends Facet> parameterFacet : parameterFacets) {
+                            debugBuilder.appendln(p.get(j).getFacet(parameterFacet).toString());
                         }
                         debugBuilder.unindent();
                     }
@@ -369,9 +366,9 @@ public final class Dump {
         return str.toString();
     }
 
-	///////////////////////////////////////////////////////////////////////
-	// adapter
-	///////////////////////////////////////////////////////////////////////
+    // /////////////////////////////////////////////////////////////////////
+    // adapter
+    // /////////////////////////////////////////////////////////////////////
 
     /**
      * @see #adapter(ObjectAdapter, DebugBuilder)
@@ -385,9 +382,7 @@ public final class Dump {
     /**
      * @see #adapter(ObjectAdapter)
      */
-    public static void adapter(
-    		final ObjectAdapter adapter, 
-    		final DebugBuilder builder) {
+    public static void adapter(final ObjectAdapter adapter, final DebugBuilder builder) {
         try {
             builder.appendln("Adapter", adapter.getClass().getName());
             builder.appendln("Class", adapter.getObject() == null ? "none" : adapter.getObject().getClass().getName());
@@ -402,24 +397,23 @@ public final class Dump {
             builder.appendln("OID", adapter.getOid());
             builder.appendln("State", adapter.getResolveState());
             builder.appendln("Version", adapter.getVersion());
-            
+
         } catch (final RuntimeException e) {
             builder.appendException(e);
         }
 
     }
 
+    // /////////////////////////////////////////////////////////////////////
+    // graph
+    // /////////////////////////////////////////////////////////////////////
 
-	///////////////////////////////////////////////////////////////////////
-	// graph
-	///////////////////////////////////////////////////////////////////////
-
     /**
      * Creates an ascii object graph diagram for the specified object, up to three levels deep.
      * 
      * @see #graph(ObjectAdapter, AuthenticationSession, DebugBuilder)
      */
-    public static String graph(final ObjectAdapter adapter, AuthenticationSession authenticationSession) {
+    public static String graph(final ObjectAdapter adapter, final AuthenticationSession authenticationSession) {
         debugBuilder = new DebugString();
         graph(adapter, authenticationSession, debugBuilder);
         return debugBuilder.toString();
@@ -430,11 +424,12 @@ public final class Dump {
      * 
      * @see #graph(ObjectAdapter, AuthenticationSession)
      */
-    public static void graph(final ObjectAdapter object, AuthenticationSession authenticationSession, final DebugBuilder debugBuilder) {
+    public static void graph(final ObjectAdapter object, final AuthenticationSession authenticationSession,
+        final DebugBuilder debugBuilder) {
         simpleObject(object, debugBuilder);
         debugBuilder.appendln();
         debugBuilder.append(object);
-        graph(object, 0, Lists.<ObjectAdapter>newArrayList(), authenticationSession, debugBuilder);
+        graph(object, 0, Lists.<ObjectAdapter> newArrayList(), authenticationSession, debugBuilder);
     }
 
     private static void simpleObject(final ObjectAdapter collectionAdapter, final DebugBuilder debugBuilder) {
@@ -443,13 +438,13 @@ public final class Dump {
         if (objectSpec.isCollection()) {
             final CollectionFacet facet = CollectionFacetUtils.getCollectionFacetFromSpec(collectionAdapter);
             int i = 1;
-            for (ObjectAdapter element : facet.collection(collectionAdapter)) {
+            for (final ObjectAdapter element : facet.collection(collectionAdapter)) {
                 debugBuilder.appendln(i++ + " " + element.titleString());
             }
-        } else  {
+        } else {
             // object is a regular Object
             try {
-                List<ObjectAssociation> fields = objectSpec.getAssociations();
+                final List<ObjectAssociation> fields = objectSpec.getAssociations();
                 for (int i = 0; i < fields.size(); i++) {
                     final ObjectAssociation field = fields.get(i);
                     final ObjectAdapter obj = field.get(collectionAdapter);
@@ -467,20 +462,16 @@ public final class Dump {
         }
     }
 
-	
-	private static void collectionGraph(
-            final ObjectAdapter collectionAdapter,
-            final int level,
-            final List<ObjectAdapter> ignoreAdapters,
-            final AuthenticationSession authenticationSession, 
-            final DebugBuilder debugBuilder) {
-
-        if (ignoreAdapters.contains(collectionAdapter)) {
-            debugBuilder.append("*\n");
-        } else {
-            ignoreAdapters.add(collectionAdapter);
+    private static void collectionGraph(final ObjectAdapter collectionAdapter, final int level,
+        final List<ObjectAdapter> ignoreAdapters, final AuthenticationSession authenticationSession,
+        final DebugBuilder debugBuilder) {
+
+        if (ignoreAdapters.contains(collectionAdapter)) {
+            debugBuilder.append("*\n");
+        } else {
+            ignoreAdapters.add(collectionAdapter);
             final CollectionFacet facet = CollectionFacetUtils.getCollectionFacetFromSpec(collectionAdapter);
-            for (ObjectAdapter element : facet.collection(collectionAdapter)) {
+            for (final ObjectAdapter element : facet.collection(collectionAdapter)) {
                 graphIndent(level, debugBuilder);
                 debugBuilder.append(element);
                 if (ignoreAdapters.contains(element)) {
@@ -488,79 +479,70 @@ public final class Dump {
                 } else {
                     graph(element, level + 1, ignoreAdapters, authenticationSession, debugBuilder);
                 }
-			}
-        }
-    }
-
-    private static void graph(
-    		final ObjectAdapter adapter, 
-    		final int level, 
-    		final List<ObjectAdapter> ignoreAdapters, 
-    		final AuthenticationSession authenticationSession, 
-    		final DebugBuilder debugBuilder) {
-        if (level > 3) {
-            debugBuilder.appendln("..."); // only go 3 levels?
-        } else {
-            debugBuilder.append("\n");
-            if (adapter.getSpecification().isCollection()) {
-                collectionGraph(adapter, level, ignoreAdapters, authenticationSession, debugBuilder);
-            } else if (adapter.getSpecification().isNotCollection()) {
-                objectGraph(adapter, level, ignoreAdapters, debugBuilder, authenticationSession);
-            } else {
-                debugBuilder.append("??? " + adapter);
-            }
-        }
-    }
-
-    private static void graphIndent(final int level, final DebugBuilder debugBuilder) {
-        for (int indent = 0; indent < level; indent++) {
-            debugBuilder.append(DebugUtils.indentString(4) + "|");
-        }
-        debugBuilder.append(DebugUtils.indentString(4) + "+--");
-    }
-
-    private static void objectGraph(
-    		final ObjectAdapter adapter, 
-    		final int level, 
-    		final List<ObjectAdapter> ignoreAdapters, 
-    		final DebugBuilder s, 
-    		final AuthenticationSession authenticationSession) {
-    	ignoreAdapters.add(adapter);
-
-        try {
-            // work through all its fields
-            List<ObjectAssociation> fields = adapter.getSpecification().getAssociations();
-            for (int i = 0; i < fields.size(); i++) {
-                final ObjectAssociation field = fields.get(i);
-                final ObjectAdapter obj = field.get(adapter);
-                final String name = field.getId();
-                graphIndent(level, s);
-
-				if (field.isVisible(authenticationSession, adapter).isVetoed()) {
-                    s.append(name + ": (not visible)");
-                    s.append("\n");
-                } else {
-                    if (obj == null) {
-                        s.append(name + ": null\n");
-                        /*
-                         * } else if (obj.getSpecification().isParseable()) { s.append(name + ": " +
-                         * obj.titleString()); s.append("\n");
-                         */} else {
-                        if (ignoreAdapters.contains(obj)) {
-                            s.append(name + ": " + obj + "*\n");
-                        } else {
-                            s.append(name + ": " + obj);
-                            graph(obj, level + 1, ignoreAdapters, authenticationSession, s);
-
-                        }
-                    }
-                }
-            }
-        } catch (final RuntimeException e) {
-            s.appendException(e);
-        }
-    }
-
+            }
+        }
+    }
+
+    private static void graph(final ObjectAdapter adapter, final int level, final List<ObjectAdapter> ignoreAdapters,
+        final AuthenticationSession authenticationSession, final DebugBuilder debugBuilder) {
+        if (level > 3) {
+            debugBuilder.appendln("..."); // only go 3 levels?
+        } else {
+            debugBuilder.append("\n");
+            if (adapter.getSpecification().isCollection()) {
+                collectionGraph(adapter, level, ignoreAdapters, authenticationSession, debugBuilder);
+            } else if (adapter.getSpecification().isNotCollection()) {
+                objectGraph(adapter, level, ignoreAdapters, debugBuilder, authenticationSession);
+            } else {
+                debugBuilder.append("??? " + adapter);
+            }
+        }
+    }
+
+    private static void graphIndent(final int level, final DebugBuilder debugBuilder) {
+        for (int indent = 0; indent < level; indent++) {
+            debugBuilder.append(DebugUtils.indentString(4) + "|");
+        }
+        debugBuilder.append(DebugUtils.indentString(4) + "+--");
+    }
+
+    private static void objectGraph(final ObjectAdapter adapter, final int level,
+        final List<ObjectAdapter> ignoreAdapters, final DebugBuilder s,
+        final AuthenticationSession authenticationSession) {
+        ignoreAdapters.add(adapter);
+
+        try {
+            // work through all its fields
+            final List<ObjectAssociation> fields = adapter.getSpecification().getAssociations();
+            for (int i = 0; i < fields.size(); i++) {
+                final ObjectAssociation field = fields.get(i);
+                final ObjectAdapter obj = field.get(adapter);
+                final String name = field.getId();
+                graphIndent(level, s);
+
+                if (field.isVisible(authenticationSession, adapter).isVetoed()) {
+                    s.append(name + ": (not visible)");
+                    s.append("\n");
+                } else {
+                    if (obj == null) {
+                        s.append(name + ": null\n");
+                        /*
+                         * } else if (obj.getSpecification().isParseable()) { s.append(name + ": " + obj.titleString());
+                         * s.append("\n");
+                         */} else {
+                        if (ignoreAdapters.contains(obj)) {
+                            s.append(name + ": " + obj + "*\n");
+                        } else {
+                            s.append(name + ": " + obj);
+                            graph(obj, level + 1, ignoreAdapters, authenticationSession, s);
+
+                        }
+                    }
+                }
+            }
+        } catch (final RuntimeException e) {
+            s.appendException(e);
+        }
+    }
 
-
-}
+}

Modified: incubator/isis/trunk/progmodels/src/docbkx/guide/isis-progmodels.xml
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/progmodels/src/docbkx/guide/isis-progmodels.xml?rev=1096837&r1=1096836&r2=1096837&view=diff
==============================================================================
--- incubator/isis/trunk/progmodels/src/docbkx/guide/isis-progmodels.xml (original)
+++ incubator/isis/trunk/progmodels/src/docbkx/guide/isis-progmodels.xml Tue Apr 26 18:24:05 2011
@@ -48,7 +48,7 @@
     forth. The collection of programming conventions is termed a "programming
     model", and is pluggable.</para>
 
-    <para>This documentation describes how to use and customize the default
+    <para>This guide describes how to use and customize the default
     programming models, or to use other available programming models (for
     example, for other JVM-based languages).</para>
 
@@ -79,8 +79,12 @@
           <listitem>
             <para>Wrapper Programming Model</para>
 
-            <para>This part of the guide (see <xref
-            linkend="prt.Wrapper" />)</para>
+            <para>The wrapper programming model enables a domain object to be
+            "wrapped" by a proxy so that interactions with it by other domain
+            objects are "as if" through the viewer. This part of the guide
+            (see <xref linkend="prt.Wrapper" />) describes how to configure
+            your application in order that your domain objects can take
+            advantage of this capabilities.</para>
           </listitem>
         </itemizedlist></para>
     </sect1>
@@ -142,7 +146,7 @@
       <emphasis>applib</emphasis> <package>[oai:applib]</package> module. If
       using the <emphasis>default runtime</emphasis>
       <package>[oai.runtimes:dflt]</package> then the Java 5 programming model
-      is configured by default . </para>
+      is configured by default .</para>
 
       <para>The chapters in this part of the guide describe:</para>
 
@@ -374,7 +378,7 @@
           <para>writing domain objects in Groovy</para>
 
           <para>Guidance on how to follow the <emphasis>Apache Isis</emphasis>
-          coding conventions while programming in Groovy. </para>
+          coding conventions while programming in Groovy.</para>
         </listitem>
 
         <listitem>

Modified: incubator/isis/trunk/security/src/docbkx/guide/isis-security.xml
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/security/src/docbkx/guide/isis-security.xml?rev=1096837&r1=1096836&r2=1096837&view=diff
==============================================================================
--- incubator/isis/trunk/security/src/docbkx/guide/isis-security.xml (original)
+++ incubator/isis/trunk/security/src/docbkx/guide/isis-security.xml Tue Apr 26 18:24:05 2011
@@ -53,22 +53,68 @@
   <preface id="preface">
     <title>Preface</title>
 
-    <para><emphasis>*** Apache Isis</emphasis> is designed to allow
-    programmers rapidly develop domain-driven applications following the
-    <ulink url="http://en.wikipedia.org/wiki/Naked_Objects">Naked
-    Objects</ulink> pattern. It is made up of a core framework plus a number
-    of supporting implementations, and supports various viewers and object
-    stores. Apache Isis is hosted at the <ulink
-    url="http://incubator.apache.org/isis">Apache Foundation</ulink>, and is
-    licensed under <ulink
+    <para><emphasis>Apache Isis</emphasis> is designed to allow programmers
+    rapidly develop domain-driven applications following the <ulink
+    url="http://en.wikipedia.org/wiki/Naked_Objects">Naked Objects</ulink>
+    pattern. It is made up of a core framework that supports supports various
+    viewers, along with <acronym>API</acronym>s and implementations relating
+    to security, the programming model, the runtime (persistence) and profile
+    stores (user preferences). <emphasis>Apache Isis</emphasis> is hosted at
+    the <ulink url="http://incubator.apache.org/isis">Apache
+    Foundation</ulink>, and is licensed under <ulink
     url="http://www.apache.org/licenses/LICENSE-2.0.html">Apache Software
     License v2</ulink>.</para>
 
-    <para>This guide is written for ...</para>
+    <para>The security <acronym>API</acronym> covers authentication and
+    authorization. A number of different security implementations, and this
+    guide explains how to configure them, as well as how to go about
+    implementing your own implementation.</para>
 
-    <para></para>
+    <sect1>
+      <title>Who this Guide is For</title>
 
-    <para></para>
+      <para>This guide is written for deployers looking to configure
+      <emphasis>Isis</emphasis> to run with a specific existing security
+      implementation, and for programmers wishing to develop their own custom
+      implementation. It is divided into the following parts:<itemizedlist>
+          <listitem>
+            <para>Isis Security Implementations</para>
+
+            <para>This part of the guide (see <xref
+            linkend="prt.IsisImplementations" />) covers the default (Java 5)
+            programming model, how to customize it, and how to extend
+            it.</para>
+          </listitem>
+
+          <listitem>
+            <para>Writing a Custom Implementation</para>
+
+            <para>This part of the guide (see <xref
+            linkend="prt.WritingACustomImplementation" />) describes how to go
+            about writing your own custom implementation of the security
+            <acronym>API</acronym>.</para>
+          </listitem>
+
+          <listitem>
+            <para>Configuring the Runtime</para>
+
+            <para>This part of the guide (see <xref
+            linkend="prt.ConfiguringTheRuntime" />) describes how to configure
+            your application to use a specified security
+            implementation.</para>
+          </listitem>
+        </itemizedlist></para>
+    </sect1>
+
+    <sect1>
+      <title>How this Guide relates to other Documentation</title>
+
+      <para>*** todo</para>
+
+      <para>*** x-ref the core docs.</para>
+
+      <para></para>
+    </sect1>
   </preface>
 
   <chapter id="chp.SecurityApi">
@@ -177,24 +223,28 @@
   </chapter>
 
   <part>
-    <title>Default (No-op) Security Implementation</title>
+    <title>Isis Security Implementations</title>
+
+    <partintro>
+      <para>***</para>
+    </partintro>
 
     <chapter>
-      <title></title>
+      <title>Default (No-op) Security Implementation</title>
 
-      <section>
-        <title></title>
+      <abstract>
+        <para>*** yada yada</para>
+      </abstract>
 
-        <para></para>
-      </section>
-    </chapter>
-  </part>
+      <sect1>
+        <title>***</title>
 
-  <part>
-    <title>File Security Implementation</title>
+        <para><emphasis>*** yada yadat</emphasis></para>
+      </sect1>
+    </chapter>
 
     <chapter id="chp.FileIntro">
-      <title>Introduction</title>
+      <title>File Security Implementation</title>
 
       <abstract>
         <para>*** yada yada</para>
@@ -211,21 +261,12 @@
 
         <para><remark></remark></para>
 
-        <para>x-ref Core documentation.</para>
-
-        <para></para>
-
         <para></para>
 
         <para>... also, move into the next chapters</para>
 
         <para></para>
 
-        <para>Starting [[NAME]] requires a user name and password . (The
-        exception is when running in exploration mode, which uses default
-        values). The simplest way to specify the list of user names and
-        passwords is in a passwords file.</para>
-
         <sect2>
           <title>Authentication using a passwords file</title>
 
@@ -606,13 +647,9 @@ isis.authorization.file.blacklist=disall
         </sect2>
       </sect1>
     </chapter>
-  </part>
-
-  <part>
-    <title>LDAP Security Implementation</title>
 
     <chapter>
-      <title>Introduction</title>
+      <title>LDAP Security Implementation</title>
 
       <abstract>
         <para>*** yada yada</para>
@@ -802,4 +839,54 @@ isis.authorization=ldap</programlisting>
       </sect1>
     </chapter>
   </part>
+
+  <part>
+    <title>Configuring the Runtime</title>
+
+    <partintro>
+      <para>***</para>
+
+      <para></para>
+    </partintro>
+
+    <chapter>
+      <title>Configuring the Default Runtime</title>
+
+      <abstract>
+        <para>*** yada yada</para>
+      </abstract>
+
+      <para></para>
+
+      <sect1>
+        <title>Exploration Mode</title>
+
+        <para></para>
+
+        <para></para>
+      </sect1>
+
+      <sect1>
+        <title>Prototype Mode</title>
+
+        <para></para>
+
+        <para></para>
+      </sect1>
+    </chapter>
+  </part>
+
+  <part>
+    <title>Implementing a custom Security Implementation</title>
+
+    <chapter>
+      <title></title>
+
+      <section>
+        <title></title>
+
+        <para></para>
+      </section>
+    </chapter>
+  </part>
 </book>

Modified: incubator/isis/trunk/src/docbkx/guide/isis-contributors-guide.xml
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/src/docbkx/guide/isis-contributors-guide.xml?rev=1096837&r1=1096836&r2=1096837&view=diff
==============================================================================
--- incubator/isis/trunk/src/docbkx/guide/isis-contributors-guide.xml (original)
+++ incubator/isis/trunk/src/docbkx/guide/isis-contributors-guide.xml Tue Apr 26 18:24:05 2011
@@ -284,8 +284,7 @@
                 <para>To install the free edition, it is necessary to install
                 the <acronym>GMF</acronym> at the same time (see this <ulink
                 url="http://www.soyatec.com/forum/viewtopic.php?t=898&amp;sid=1a1388b502a12114e6b8f28d7bbdee2a">forum
-                posting</ulink>). Note also that at the time of writing
-                Soyatec only supported up to Eclipse 3.5.</para>
+                posting</ulink>).</para>
               </listitem>
             </itemizedlist>