You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by rm...@apache.org on 2013/03/24 18:45:02 UTC

[05/24] Restructuring Scimpi to remove dependencies and enable easier testing.

http://git-wip-us.apache.org/repos/asf/isis/blob/49518c89/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/DebugCollectionView.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/DebugCollectionView.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/DebugCollectionView.java
index 9137783..bab6e54 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/DebugCollectionView.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/DebugCollectionView.java
@@ -23,33 +23,33 @@ import java.util.List;
 
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.viewer.scimpi.dispatcher.AbstractObjectProcessor;
-import org.apache.isis.viewer.scimpi.dispatcher.processor.Request;
-import org.apache.isis.viewer.scimpi.dispatcher.view.HelpLink;
+import org.apache.isis.viewer.scimpi.dispatcher.processor.TagProcessor;
+import org.apache.isis.viewer.scimpi.dispatcher.view.AbstractObjectProcessor;
 import org.apache.isis.viewer.scimpi.dispatcher.view.field.LinkedObject;
+import org.apache.isis.viewer.scimpi.dispatcher.view.other.HelpLink;
 
 public class DebugCollectionView extends AbstractObjectProcessor {
 
     @Override
-    public void process(final Request request, final ObjectAdapter object) {
-        final String cls = request.getOptionalProperty(CLASS, "form");
+    public void process(final TagProcessor tagProcessor, final ObjectAdapter object) {
+        final String cls = tagProcessor.getOptionalProperty(CLASS, "form");
         final String classString = " class=\"" + cls + "\"";
-        String title = request.getOptionalProperty(FORM_TITLE);
-        final String oddRowClass = request.getOptionalProperty(ODD_ROW_CLASS);
-        final String evenRowClass = request.getOptionalProperty(EVEN_ROW_CLASS);
-        final boolean showIcons = request.isRequested(SHOW_ICON, true);
+        String title = tagProcessor.getOptionalProperty(FORM_TITLE);
+        final String oddRowClass = tagProcessor.getOptionalProperty(ODD_ROW_CLASS);
+        final String evenRowClass = tagProcessor.getOptionalProperty(EVEN_ROW_CLASS);
+        final boolean showIcons = tagProcessor.isRequested(SHOW_ICON, true);
 
     }
 
-    private void write(final Request request, final ObjectAdapter object, final List<ObjectAssociation> fields,
+    private void write(final TagProcessor tagProcessor, final ObjectAdapter object, final List<ObjectAssociation> fields,
         final LinkedObject[] linkFields, final String classString, final String title, final String oddRowClass,
         final String evenRowClass, final boolean showIcons) {
-        request.appendHtml("<div" + classString + ">");
+        tagProcessor.appendHtml("<div" + classString + ">");
         if (title != null) {
-            request.appendHtml("<div class=\"title\">");
-            request.appendAsHtmlEncoded(title);
-            request.appendHtml("</div>");
-            HelpLink.append(request, object.getSpecification().getDescription(), object.getSpecification().getHelp());
+            tagProcessor.appendHtml("<div class=\"title\">");
+            tagProcessor.appendAsHtmlEncoded(title);
+            tagProcessor.appendHtml("</div>");
+            HelpLink.append(tagProcessor, object.getSpecification().getDescription(), object.getSpecification().getHelp());
         }
      /*   
         final List<ObjectAssociation> fields =
@@ -97,7 +97,7 @@ public class DebugCollectionView extends AbstractObjectProcessor {
             request.appendHtml("</div>");
         }
         */
-        request.appendHtml("</div>");
+        tagProcessor.appendHtml("</div>");
         
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/49518c89/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/DebugObjectView.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/DebugObjectView.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/DebugObjectView.java
index 09563a2..cb16c94 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/DebugObjectView.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/DebugObjectView.java
@@ -29,9 +29,9 @@ import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociationFilters;
 import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.viewer.scimpi.dispatcher.AbstractObjectProcessor;
-import org.apache.isis.viewer.scimpi.dispatcher.context.RequestContext.Scope;
-import org.apache.isis.viewer.scimpi.dispatcher.processor.Request;
+import org.apache.isis.viewer.scimpi.dispatcher.context.Request.Scope;
+import org.apache.isis.viewer.scimpi.dispatcher.processor.TagProcessor;
+import org.apache.isis.viewer.scimpi.dispatcher.view.AbstractObjectProcessor;
 import org.apache.isis.viewer.scimpi.dispatcher.view.display.FieldValue;
 import org.apache.isis.viewer.scimpi.dispatcher.view.field.LinkedObject;
 
@@ -39,25 +39,25 @@ import org.apache.isis.viewer.scimpi.dispatcher.view.field.LinkedObject;
 public class DebugObjectView extends AbstractObjectProcessor {
 
     @Override
-    public void process(final Request request, final ObjectAdapter object) {
-        final String classString = " class=\"" + request.getOptionalProperty(CLASS, "form debug") + "\"";
-        final String objectLink = request.getOptionalProperty(OBJECT + "-" + LINK_VIEW, request.getViewPath());
+    public void process(final TagProcessor tagProcessor, final ObjectAdapter object) {
+        final String classString = " class=\"" + tagProcessor.getOptionalProperty(CLASS, "form debug") + "\"";
+        final String objectLink = tagProcessor.getOptionalProperty(OBJECT + "-" + LINK_VIEW, tagProcessor.getViewPath());
         // final String collectionLink = request.getOptionalProperty(COLLECTION + "-" + LINK_VIEW, request.getViewPath());
-        final String oddRowClass = request.getOptionalProperty(ODD_ROW_CLASS);
-        final String evenRowClass = request.getOptionalProperty(EVEN_ROW_CLASS);
-        final boolean showIcons = request.isRequested(SHOW_ICON, true);
+        final String oddRowClass = tagProcessor.getOptionalProperty(ODD_ROW_CLASS);
+        final String evenRowClass = tagProcessor.getOptionalProperty(EVEN_ROW_CLASS);
+        final boolean showIcons = tagProcessor.isRequested(SHOW_ICON, true);
 
         ObjectSpecification specification = object.getSpecification();
 
-        request.appendHtml("<div" + classString + ">");
-        request.appendHtml("<div class=\"title\">");
-        request.appendAsHtmlEncoded(specification.getSingularName() + " - " + specification.getFullIdentifier());
-        request.appendHtml("</div>");
+        tagProcessor.appendHtml("<div" + classString + ">");
+        tagProcessor.appendHtml("<div class=\"title\">");
+        tagProcessor.appendAsHtmlEncoded(specification.getSingularName() + " - " + specification.getFullIdentifier());
+        tagProcessor.appendHtml("</div>");
 
         Version version = object.getVersion();
-        request.appendHtml("<div class=\"version\">");
-        request.appendAsHtmlEncoded("#" + version.sequence() + " - " + version.getUser() + " (" + version.getTime() + ")" );
-        request.appendHtml("</div>");
+        tagProcessor.appendHtml("<div class=\"version\">");
+        tagProcessor.appendAsHtmlEncoded("#" + version.sequence() + " - " + version.getUser() + " (" + version.getTime() + ")" );
+        tagProcessor.appendHtml("</div>");
 
         final List<ObjectAssociation> fields = specification.getAssociations(ObjectAssociationFilters.ALL);
 
@@ -73,9 +73,9 @@ public class DebugObjectView extends AbstractObjectProcessor {
             } else {
                 cls = " class=\"field " + (evenRowClass == null ? EVEN_ROW_CLASS : evenRowClass) + "\"";
             }
-            request.appendHtml("<div " + cls + "><span class=\"label\">");
-            request.appendAsHtmlEncoded(field.getName());
-            request.appendHtml(":</span>");
+            tagProcessor.appendHtml("<div " + cls + "><span class=\"label\">");
+            tagProcessor.appendAsHtmlEncoded(field.getName());
+            tagProcessor.appendHtml(":</span>");
             
             final boolean isNotParseable =
                 !fields.get(i).getSpecification().containsFacet(ParseableFacet.class);
@@ -84,44 +84,44 @@ public class DebugObjectView extends AbstractObjectProcessor {
      //           linkedObject = new LinkedObject(field.isOneToManyAssociation() ? collectionLink : objectLink);
                 linkedObject = new LinkedObject(objectLink);
             }
-            addField(request, object, field, linkedObject, showIcons);
+            addField(tagProcessor, object, field, linkedObject, showIcons);
             
             if (field.isOneToManyAssociation()) {
                 Collection collection = (Collection) field.get(object).getObject();
                 if (collection.size() == 0) {
-                    request.appendHtml("[empty]");
+                    tagProcessor.appendHtml("[empty]");
                 } else {
                     // request.appendHtml(collection.size() + " elements");
                    
-                    request.appendHtml("<ol>");
+                    tagProcessor.appendHtml("<ol>");
                     
                    for (Object element : collection) {
                        ObjectAdapter adapterFor = IsisContext.getPersistenceSession().getAdapterManager().getAdapterFor(element);
                        IsisContext.getPersistenceSession().resolveImmediately(adapterFor);
 
-                       String id = request.getContext().mapObject(adapterFor, linkedObject.getScope(), Scope.INTERACTION);
+                       String id = tagProcessor.getContext().mapObject(adapterFor, linkedObject.getScope(), Scope.INTERACTION);
 
-                       request.appendHtml("<li class=\"element\">");
-                       request.appendHtml("<a href=\"" + linkedObject.getForwardView() + "?" + linkedObject.getVariable() + "="
-                               + id + request.getContext().encodedInteractionParameters() + "\">");
-                       request.appendHtml(element.toString());
-                       request.appendHtml("</a></li>");
+                       tagProcessor.appendHtml("<li class=\"element\">");
+                       tagProcessor.appendHtml("<a href=\"" + linkedObject.getForwardView() + "?" + linkedObject.getVariable() + "="
+                               + id + tagProcessor.getContext().encodedInteractionParameters() + "\">");
+                       tagProcessor.appendHtml(element.toString());
+                       tagProcessor.appendHtml("</a></li>");
                    }
-                   request.appendHtml("</ol>");
+                   tagProcessor.appendHtml("</ol>");
                 }
             } else {
-                FieldValue.write(request, object, field, linkedObject, "value", showIcons, 0);
+                FieldValue.write(tagProcessor, object, field, linkedObject, "value", showIcons, 0);
             }
 
             
             
-            request.appendHtml("</div>");
+            tagProcessor.appendHtml("</div>");
         }
-        request.appendHtml("</div>");
+        tagProcessor.appendHtml("</div>");
     }
 
     protected void addField(
-            final Request request,
+            final TagProcessor tagProcessor,
             final ObjectAdapter object,
             final ObjectAssociation field,
             final LinkedObject linkedObject,

http://git-wip-us.apache.org/repos/asf/isis/blob/49518c89/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/DebuggerLink.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/DebuggerLink.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/DebuggerLink.java
index 795d272..64c7ecb 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/DebuggerLink.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/DebuggerLink.java
@@ -19,30 +19,30 @@
 
 package org.apache.isis.viewer.scimpi.dispatcher.view.debug;
 
-import org.apache.isis.viewer.scimpi.dispatcher.AbstractElementProcessor;
-import org.apache.isis.viewer.scimpi.dispatcher.context.RequestContext;
-import org.apache.isis.viewer.scimpi.dispatcher.processor.Request;
+import org.apache.isis.viewer.scimpi.dispatcher.context.Request;
+import org.apache.isis.viewer.scimpi.dispatcher.processor.TagProcessor;
+import org.apache.isis.viewer.scimpi.dispatcher.view.AbstractElementProcessor;
 
 public class DebuggerLink extends AbstractElementProcessor {
 
     @Override
-    public void process(final Request request) {
-        if (request.getContext().isDebugDisabled()) {
-            request.skipUntilClose();
+    public void process(final TagProcessor tagProcessor) {
+        if (tagProcessor.getContext().isDebugDisabled()) {
+            tagProcessor.skipUntilClose();
             return;
         }
 
-        final RequestContext context = request.getContext();
-        final Object result = context.getVariable(RequestContext.RESULT);
-        request.appendHtml("<div class=\"debug\">");
-        request.appendHtml("<a class=\"debug-link\" href=\"/debug/debug.shtml\" target=\"debug\" title=\"debug\" >...</a>");
+        final Request context = tagProcessor.getContext();
+        final Object result = context.getVariable(Request.RESULT);
+        tagProcessor.appendHtml("<div class=\"debug\">");
+        tagProcessor.appendHtml("<a class=\"debug-link\" href=\"/debug/debug.shtml\" target=\"debug\" title=\"debug\" >...</a>");
         if (result != null) {
-            request.appendHtml(" <a href=\"/debug/object.shtml?_result=" + result + "\" target=\"debug\"  title=\"debug instance\">...</a>");
+            tagProcessor.appendHtml(" <a href=\"/debug/object.shtml?_result=" + result + "\" target=\"debug\"  title=\"debug instance\">...</a>");
         }
-        request.appendHtml(" <span class=\"debug-link\" onclick=\"$('#page-debug').toggle()\" alt=\"show/hide debug details\">...</span>");
-        request.appendHtml("</div>");
+        tagProcessor.appendHtml(" <span class=\"debug-link\" onclick=\"$('#page-debug').toggle()\" alt=\"show/hide debug details\">...</span>");
+        tagProcessor.appendHtml("</div>");
 
-        request.processUtilCloseTag();
+        tagProcessor.processUtilCloseTag();
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/isis/blob/49518c89/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/Diagnostics.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/Diagnostics.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/Diagnostics.java
index 037812e..0033c55 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/Diagnostics.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/Diagnostics.java
@@ -22,54 +22,55 @@ package org.apache.isis.viewer.scimpi.dispatcher.view.debug;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.debug.DebugHtmlString;
 import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.viewer.scimpi.dispatcher.AbstractElementProcessor;
-import org.apache.isis.viewer.scimpi.dispatcher.context.RequestContext;
-import org.apache.isis.viewer.scimpi.dispatcher.processor.Request;
+import org.apache.isis.viewer.scimpi.Names;
+import org.apache.isis.viewer.scimpi.dispatcher.context.Request;
+import org.apache.isis.viewer.scimpi.dispatcher.processor.TagProcessor;
+import org.apache.isis.viewer.scimpi.dispatcher.view.AbstractElementProcessor;
 
 public class Diagnostics extends AbstractElementProcessor {
 
     @Override
-    public void process(final Request request) {
-        if (request.getContext().isDebugDisabled()) {
+    public void process(final TagProcessor tagProcessor) {
+        if (tagProcessor.getContext().isDebugDisabled()) {
             return;
         }
 
-        final String type = request.getOptionalProperty(TYPE, "page");
-        final boolean isForced = request.isRequested("force");
-        if (isForced || request.getContext().showDebugData()) {
-            request.appendHtml("<div class=\"debug\">");
+        final String type = tagProcessor.getOptionalProperty(TYPE, "page");
+        final boolean isForced = tagProcessor.isRequested("force");
+        if (isForced || tagProcessor.getContext().showDebugData()) {
+            tagProcessor.appendHtml("<div class=\"debug\">");
             if ("page".equals(type)) {
-                request.appendHtml("<pre>");
-                final RequestContext context = request.getContext();
-                request.appendHtml("URI:  " + context.getUri());
-                request.appendHtml("\n");
-                request.appendHtml("File: " + context.fullFilePath(context.getResourceFile()));
-                final String result = (String) request.getContext().getVariable(RequestContext.RESULT);
+                tagProcessor.appendHtml("<pre>");
+                final Request context = tagProcessor.getContext();
+                tagProcessor.appendHtml("URI:  " + context.getUri());
+                tagProcessor.appendHtml("\n");
+                tagProcessor.appendHtml("File: " + context.fullFilePath(context.getResourceFile()));
+                final String result = (String) tagProcessor.getContext().getVariable(Names.RESULT);
                 if (result != null) {
-                    request.appendHtml("\n");
-                    request.appendHtml("Object: " + result);
+                    tagProcessor.appendHtml("\n");
+                    tagProcessor.appendHtml("Object: " + result);
                 }
-                request.appendHtml("</pre>");
+                tagProcessor.appendHtml("</pre>");
             } else if ("session".equals(type)) {
-                request.appendHtml("<pre>");
+                tagProcessor.appendHtml("<pre>");
                 final AuthenticationSession session = IsisContext.getAuthenticationSession();
-                request.appendHtml("Session:  " + session.getUserName() + " " + session.getRoles());
-                request.appendHtml("</pre>");
+                tagProcessor.appendHtml("Session:  " + session.getUserName() + " " + session.getRoles());
+                tagProcessor.appendHtml("</pre>");
             } else if ("variables".equals(type)) {
-                final RequestContext context = request.getContext();
+                final Request context = tagProcessor.getContext();
                 final DebugHtmlString debug = new DebugHtmlString();
                 debug.appendln("", "");
                 context.append(debug, "variables");
                 debug.close();
-                request.appendHtml(debug.toString());
+                tagProcessor.appendHtml(debug.toString());
             } else if ("processing".equals(type)) {
-                request.appendHtml("<pre>");
-                request.appendHtml(request.getContext().getDebugTrace());
-                request.appendHtml("</pre>");
+                tagProcessor.appendHtml("<pre>");
+                tagProcessor.appendHtml(tagProcessor.getContext().getDebugTrace());
+                tagProcessor.appendHtml("</pre>");
             } else {
-                request.appendHtml("<i>No such type " + type + "</i>");
+                tagProcessor.appendHtml("<i>No such type " + type + "</i>");
             }
-            request.appendHtml("</div>");
+            tagProcessor.appendHtml("</div>");
         }
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/49518c89/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/Log.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/Log.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/Log.java
index 02144ad..ae07894 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/Log.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/Log.java
@@ -19,20 +19,20 @@
 
 package org.apache.isis.viewer.scimpi.dispatcher.view.debug;
 
-import org.apache.isis.viewer.scimpi.dispatcher.AbstractElementProcessor;
-import org.apache.isis.viewer.scimpi.dispatcher.processor.Request;
+import org.apache.isis.viewer.scimpi.dispatcher.processor.TagProcessor;
+import org.apache.isis.viewer.scimpi.dispatcher.view.AbstractElementProcessor;
 import org.apache.log4j.Logger;
 
 public class Log extends AbstractElementProcessor {
 
     @Override
-    public void process(final Request request) {
-        String name = request.getRequiredProperty(NAME);
+    public void process(final TagProcessor tagProcessor) {
+        String name = tagProcessor.getRequiredProperty(NAME);
         Logger logger = Logger.getLogger(name);
         
-        request.pushNewBuffer();
-        request.processUtilCloseTag();
-        final String message = request.popBuffer();
+        tagProcessor.pushNewBuffer();
+        tagProcessor.processUtilCloseTag();
+        final String message = tagProcessor.popBuffer();
         logger.info(message);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/49518c89/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/LogLevel.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/LogLevel.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/LogLevel.java
index e12c9bc..9c954e6 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/LogLevel.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/LogLevel.java
@@ -22,31 +22,31 @@ package org.apache.isis.viewer.scimpi.dispatcher.view.debug;
 import org.apache.log4j.Level;
 import org.apache.log4j.LogManager;
 
-import org.apache.isis.viewer.scimpi.dispatcher.AbstractElementProcessor;
-import org.apache.isis.viewer.scimpi.dispatcher.processor.Request;
+import org.apache.isis.viewer.scimpi.dispatcher.processor.TagProcessor;
+import org.apache.isis.viewer.scimpi.dispatcher.view.AbstractElementProcessor;
 
 public class LogLevel extends AbstractElementProcessor {
 
     @Override
-    public void process(final Request request) {
+    public void process(final TagProcessor tagProcessor) {
 
-        String view = request.getOptionalProperty(VIEW, request.getViewPath());
-        view = request.getContext().fullFilePath(view);
+        String view = tagProcessor.getOptionalProperty(VIEW, tagProcessor.getViewPath());
+        view = tagProcessor.getContext().fullFilePath(view);
         final Level level = LogManager.getRootLogger().getLevel();
-        final boolean showSelector = request.isRequested(SHOW_SELECT, true);
+        final boolean showSelector = tagProcessor.isRequested(SHOW_SELECT, true);
         if (showSelector) {
-            request.appendHtml("<form action=\"log.app\" type=\"post\" >");
-            request.appendHtml("<input type=\"hidden\" name=\"view\" value=\"" + view + "\" />");
-            request.appendHtml("<select name=\"level\">");
+            tagProcessor.appendHtml("<form action=\"log.app\" type=\"post\" >");
+            tagProcessor.appendHtml("<input type=\"hidden\" name=\"view\" value=\"" + view + "\" />");
+            tagProcessor.appendHtml("<select name=\"level\">");
             for (final Level l : new Level[] { Level.OFF, Level.FATAL, Level.ERROR, Level.WARN, Level.INFO, Level.DEBUG, Level.TRACE }) {
                 final String settings = level + "\"" + (level == l ? " selected=\"selected\" " : "");
-                request.appendHtml("<option " + settings + ">" + l + "</option>");
+                tagProcessor.appendHtml("<option " + settings + ">" + l + "</option>");
             }
-            request.appendHtml("<input type=\"submit\" value=\"Change Level\" />");
-            request.appendHtml("</select>");
-            request.appendHtml("</form>");
+            tagProcessor.appendHtml("<input type=\"submit\" value=\"Change Level\" />");
+            tagProcessor.appendHtml("</select>");
+            tagProcessor.appendHtml("</form>");
         } else {
-            request.appendHtml(level.toString());
+            tagProcessor.appendHtml(level.toString());
         }
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/49518c89/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/Members.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/Members.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/Members.java
index 9fc0665..4f9e084 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/Members.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/Members.java
@@ -30,10 +30,10 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectActionContainer.Contrib
 import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
 import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.viewer.scimpi.dispatcher.AbstractElementProcessor;
-import org.apache.isis.viewer.scimpi.dispatcher.ForbiddenException;
-import org.apache.isis.viewer.scimpi.dispatcher.ScimpiException;
-import org.apache.isis.viewer.scimpi.dispatcher.processor.Request;
+import org.apache.isis.viewer.scimpi.ForbiddenException;
+import org.apache.isis.viewer.scimpi.ScimpiException;
+import org.apache.isis.viewer.scimpi.dispatcher.processor.TagProcessor;
+import org.apache.isis.viewer.scimpi.dispatcher.view.AbstractElementProcessor;
 
 public class Members extends AbstractElementProcessor {
 
@@ -50,16 +50,16 @@ public class Members extends AbstractElementProcessor {
     }
 
     @Override
-    public void process(final Request request) {
-        if (request.getContext().isDebugDisabled()) {
+    public void process(final TagProcessor tagProcessor) {
+        if (tagProcessor.getContext().isDebugDisabled()) {
             return;
         }
 
-        final String id = request.getOptionalProperty(OBJECT);
-        final String fieldName = request.getOptionalProperty(FIELD);
-        request.appendHtml("<pre class=\"debug\">");
+        final String id = tagProcessor.getOptionalProperty(OBJECT);
+        final String fieldName = tagProcessor.getOptionalProperty(FIELD);
+        tagProcessor.appendHtml("<pre class=\"debug\">");
         try {
-            ObjectAdapter object = request.getContext().getMappedObjectOrResult(id);
+            ObjectAdapter object = tagProcessor.getContext().getMappedObjectOrResult(id);
             ObjectAssociation field = null;
             if (fieldName != null) {
                 field = object.getSpecification().getAssociation(fieldName);
@@ -68,40 +68,40 @@ public class Members extends AbstractElementProcessor {
                 }
                 object = field.get(object);
             }
-            request.processUtilCloseTag();
+            tagProcessor.processUtilCloseTag();
 
             final ObjectSpecification specification = field == null ? object.getSpecification() : field.getSpecification();
 
-            request.appendHtml(specification.getSingularName() + " (" + specification.getFullIdentifier() + ") \n");
+            tagProcessor.appendHtml(specification.getSingularName() + " (" + specification.getFullIdentifier() + ") \n");
             final List<ObjectAssociation> fields = specification.getAssociations();
             for (final ObjectAssociation fld : fields) {
                 if (!fld.isAlwaysHidden()) {
-                    request.appendHtml("   " + fld.getId() + " - '" + fld.getName() + "' -> " + fld.getSpecification().getSingularName() + (fld.isOneToManyAssociation() ? " (collection of)" : "") + "\n");
+                    tagProcessor.appendHtml("   " + fld.getId() + " - '" + fld.getName() + "' -> " + fld.getSpecification().getSingularName() + (fld.isOneToManyAssociation() ? " (collection of)" : "") + "\n");
                 }
             }
-            request.appendHtml("   --------------\n");
+            tagProcessor.appendHtml("   --------------\n");
             final List<ObjectAction> actions = specification.getObjectActions(ActionType.USER, Contributed.INCLUDED);
             ;
             for (final ObjectAction action : actions) {
-                request.appendHtml("   " + action.getId() + " (");
+                tagProcessor.appendHtml("   " + action.getId() + " (");
                 boolean first = true;
                 for (final ObjectActionParameter parameter : action.getParameters()) {
                     if (!first) {
-                        request.appendHtml(", ");
+                        tagProcessor.appendHtml(", ");
                     }
-                    request.appendHtml(parameter.getSpecification().getSingularName());
+                    tagProcessor.appendHtml(parameter.getSpecification().getSingularName());
                     first = false;
                 }
-                request.appendHtml(")" + " - '" + action.getName() + "'");
+                tagProcessor.appendHtml(")" + " - '" + action.getName() + "'");
                 if (action.getSpecification() != null) {
-                    request.appendHtml(" -> " + action.getSpecification().getSingularName() + ")");
+                    tagProcessor.appendHtml(" -> " + action.getSpecification().getSingularName() + ")");
                 }
-                request.appendHtml("\n");
+                tagProcessor.appendHtml("\n");
             }
         } catch (final ScimpiException e) {
-            request.appendHtml("Debug failed: " + e.getMessage());
+            tagProcessor.appendHtml("Debug failed: " + e.getMessage());
         }
-        request.appendHtml("</pre>");
+        tagProcessor.appendHtml("</pre>");
     }
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/49518c89/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/ShowDebug.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/ShowDebug.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/ShowDebug.java
index 895f9a6..5ed423b 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/ShowDebug.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/ShowDebug.java
@@ -19,17 +19,17 @@
 
 package org.apache.isis.viewer.scimpi.dispatcher.view.debug;
 
-import org.apache.isis.viewer.scimpi.dispatcher.AbstractElementProcessor;
-import org.apache.isis.viewer.scimpi.dispatcher.processor.Request;
+import org.apache.isis.viewer.scimpi.dispatcher.processor.TagProcessor;
+import org.apache.isis.viewer.scimpi.dispatcher.view.AbstractElementProcessor;
 
 public class ShowDebug extends AbstractElementProcessor {
 
     @Override
-    public void process(final Request request) {
-        if (request.getContext().isDebugDisabled()) {
-            request.skipUntilClose();
+    public void process(final TagProcessor tagProcessor) {
+        if (tagProcessor.getContext().isDebugDisabled()) {
+            tagProcessor.skipUntilClose();
         } else {
-            request.processUtilCloseTag();
+            tagProcessor.processUtilCloseTag();
         }
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/49518c89/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/Specification.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/Specification.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/Specification.java
index 1421290..db6cc57 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/Specification.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/Specification.java
@@ -26,53 +26,53 @@ import org.apache.commons.lang.StringUtils;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.viewer.scimpi.dispatcher.AbstractElementProcessor;
-import org.apache.isis.viewer.scimpi.dispatcher.context.RequestContext;
-import org.apache.isis.viewer.scimpi.dispatcher.processor.Request;
+import org.apache.isis.viewer.scimpi.dispatcher.context.Request;
+import org.apache.isis.viewer.scimpi.dispatcher.processor.TagProcessor;
+import org.apache.isis.viewer.scimpi.dispatcher.view.AbstractElementProcessor;
 
 
 public class Specification extends AbstractElementProcessor {
 
     @Override
-    public void process(final Request request) {
-        final RequestContext context = request.getContext();
+    public void process(final TagProcessor tagProcessor) {
+        final Request context = tagProcessor.getContext();
         if (context.isDebugDisabled()) {
             return;
         }
 
-        if (request.isRequested("always") || context.getDebug() == RequestContext.Debug.ON) {
-            request.appendHtml("<div class=\"debug\">");
-            request.appendHtml("<pre>");
+        if (tagProcessor.isRequested("always") || context.getDebug() == Request.Debug.ON) {
+            tagProcessor.appendHtml("<div class=\"debug\">");
+            tagProcessor.appendHtml("<pre>");
 
-            final String id = request.getOptionalProperty("object");
+            final String id = tagProcessor.getOptionalProperty("object");
             final ObjectAdapter object = context.getMappedObjectOrResult(id);
             final ObjectSpecification specification = object.getSpecification();
-            String type = request.getOptionalProperty(TYPE, "details");
+            String type = tagProcessor.getOptionalProperty(TYPE, "details");
 
             if (type.equals("graph")) {
-                specificationGraph(request, specification, null, new ArrayList<ObjectSpecification>(), 0);
+                specificationGraph(tagProcessor, specification, null, new ArrayList<ObjectSpecification>(), 0);
             } else if (type.equals("details")) {
-                specificationDetails(request, specification);
+                specificationDetails(tagProcessor, specification);
             } else {
-                request.appendHtml("invalid type: " + type);
+                tagProcessor.appendHtml("invalid type: " + type);
             }
 
-            request.appendHtml("</pre>");
-            request.appendHtml("</div>");
+            tagProcessor.appendHtml("</pre>");
+            tagProcessor.appendHtml("</div>");
         }
     }
 
-    private void specificationDetails(final Request request, final ObjectSpecification specification) {
-        renderName(request, specification);
+    private void specificationDetails(final TagProcessor tagProcessor, final ObjectSpecification specification) {
+        renderName(tagProcessor, specification);
         final List<ObjectAssociation> fields = specification.getAssociations();
         for (int i = 0; i < fields.size(); i++) {
-            request.appendHtml("    " + fields.get(i).getName() + " (" + fields.get(i).getSpecification().getSingularName()
+            tagProcessor.appendHtml("    " + fields.get(i).getName() + " (" + fields.get(i).getSpecification().getSingularName()
                     + ") \n");
         }
     }
 
     private void specificationGraph(
-            Request request,
+            TagProcessor tagProcessor,
             ObjectSpecification specification,
             String fieldName,
             List<ObjectSpecification> processed,
@@ -81,15 +81,15 @@ public class Specification extends AbstractElementProcessor {
             return;
         }
 
-        request.appendHtml(StringUtils.repeat("    ", level));
+        tagProcessor.appendHtml(StringUtils.repeat("    ", level));
         if (processed.contains(specification)) {
-            request.appendHtml("* ");
+            tagProcessor.appendHtml("* ");
         }
-        request.appendHtml(specification.getFullIdentifier());
+        tagProcessor.appendHtml(specification.getFullIdentifier());
         if (fieldName != null) {
-            request.appendHtml(" (" + fieldName + ")");
+            tagProcessor.appendHtml(" (" + fieldName + ")");
         }
-        request.appendHtml("\n");
+        tagProcessor.appendHtml("\n");
 
         if (processed.contains(specification)) {
             return;
@@ -102,12 +102,12 @@ public class Specification extends AbstractElementProcessor {
             if (fieldSpecification.isValue()) {
                 continue;
             }
-            specificationGraph(request, fieldSpecification, fields.get(i).getName(), processed, level + 1);
+            specificationGraph(tagProcessor, fieldSpecification, fields.get(i).getName(), processed, level + 1);
         }
     }
 
-    private void renderName(final Request request, final ObjectSpecification specification) {
-        request.appendHtml(specification.getSingularName() + " (" + specification.getFullIdentifier() + ") \n");
+    private void renderName(final TagProcessor tagProcessor, final ObjectSpecification specification) {
+        tagProcessor.appendHtml(specification.getSingularName() + " (" + specification.getFullIdentifier() + ") \n");
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/isis/blob/49518c89/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/ThrowException.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/ThrowException.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/ThrowException.java
index 65af85e..8a458b8 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/ThrowException.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/ThrowException.java
@@ -20,18 +20,18 @@
 package org.apache.isis.viewer.scimpi.dispatcher.view.debug;
 
 import org.apache.isis.core.commons.exceptions.IsisException;
-import org.apache.isis.viewer.scimpi.dispatcher.AbstractElementProcessor;
-import org.apache.isis.viewer.scimpi.dispatcher.processor.Request;
+import org.apache.isis.viewer.scimpi.dispatcher.processor.TagProcessor;
+import org.apache.isis.viewer.scimpi.dispatcher.view.AbstractElementProcessor;
 
 public class ThrowException extends AbstractElementProcessor {
 
     @Override
-    public void process(final Request request) {
-        if (request.getContext().isDebugDisabled()) {
+    public void process(final TagProcessor tagProcessor) {
+        if (tagProcessor.getContext().isDebugDisabled()) {
             return;
         }
 
-        final String message = request.getOptionalProperty("message", "Exception throw for testing purposes");
+        final String message = tagProcessor.getOptionalProperty("message", "Exception throw for testing purposes");
         throw new IsisException(message);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/49518c89/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/AbstractFormView.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/AbstractFormView.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/AbstractFormView.java
index 872f657..28c3c65 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/AbstractFormView.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/AbstractFormView.java
@@ -28,11 +28,11 @@ import org.apache.isis.core.metamodel.facets.object.parseable.ParseableFacet;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociationFilters;
 import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.viewer.scimpi.dispatcher.AbstractObjectProcessor;
-import org.apache.isis.viewer.scimpi.dispatcher.processor.Request;
-import org.apache.isis.viewer.scimpi.dispatcher.view.HelpLink;
+import org.apache.isis.viewer.scimpi.dispatcher.processor.TagProcessor;
+import org.apache.isis.viewer.scimpi.dispatcher.view.AbstractObjectProcessor;
 import org.apache.isis.viewer.scimpi.dispatcher.view.field.LinkedFieldsBlock;
 import org.apache.isis.viewer.scimpi.dispatcher.view.field.LinkedObject;
+import org.apache.isis.viewer.scimpi.dispatcher.view.other.HelpLink;
 
 public abstract class AbstractFormView extends AbstractObjectProcessor {
 
@@ -42,22 +42,22 @@ public abstract class AbstractFormView extends AbstractObjectProcessor {
     }
 
     @Override
-    public void process(final Request request, final ObjectAdapter object) {
+    public void process(final TagProcessor tagProcessor, final ObjectAdapter object) {
         final LinkedFieldsBlock tag = new LinkedFieldsBlock();
 
         if (object != null) {
-            final String id = request.getOptionalProperty(ID, object.getSpecification().getShortIdentifier()); 
-            final String cls = request.getOptionalProperty(CLASS, "form");
+            final String id = tagProcessor.getOptionalProperty(ID, object.getSpecification().getShortIdentifier()); 
+            final String cls = tagProcessor.getOptionalProperty(CLASS, "form");
             final String classString = " id=\"" + id + "\" class=\"" + cls + "\"";
-            String title = request.getOptionalProperty(FORM_TITLE);
-            final String oddRowClass = request.getOptionalProperty(ODD_ROW_CLASS);
-            final String evenRowClass = request.getOptionalProperty(EVEN_ROW_CLASS);
-            final String labelDelimiter = request.getOptionalProperty(LABEL_DELIMITER, ":");
-            final boolean showIcons = request.isRequested(SHOW_ICON, showIconByDefault()); 
-            String linkAllView = request.getOptionalProperty(LINK_VIEW);
+            String title = tagProcessor.getOptionalProperty(FORM_TITLE);
+            final String oddRowClass = tagProcessor.getOptionalProperty(ODD_ROW_CLASS);
+            final String evenRowClass = tagProcessor.getOptionalProperty(EVEN_ROW_CLASS);
+            final String labelDelimiter = tagProcessor.getOptionalProperty(LABEL_DELIMITER, ":");
+            final boolean showIcons = tagProcessor.isRequested(SHOW_ICON, showIconByDefault()); 
+            String linkAllView = tagProcessor.getOptionalProperty(LINK_VIEW);
 
-            request.setBlockContent(tag);
-            request.processUtilCloseTag();
+            tagProcessor.setBlockContent(tag);
+            tagProcessor.processUtilCloseTag();
 
             final AuthenticationSession session = IsisContext.getAuthenticationSession(); 
             List<ObjectAssociation> associations = object.getSpecification().getAssociations(ObjectAssociationFilters.dynamicallyVisible(session, object, Where.OBJECT_FORMS));
@@ -65,7 +65,7 @@ public abstract class AbstractFormView extends AbstractObjectProcessor {
             final LinkedObject[] linkFields = tag.linkedFields(fields);
 
             if (linkAllView != null) {
-                linkAllView = request.getContext().fullUriPath(linkAllView);
+                linkAllView = tagProcessor.getContext().fullUriPath(linkAllView);
                 for (int i = 0; i < linkFields.length; i++) {
                     final boolean isObject = fields.get(i).isOneToOneAssociation();
                     final boolean isNotParseable = !fields.get(i).getSpecification().containsFacet(ParseableFacet.class);
@@ -79,14 +79,14 @@ public abstract class AbstractFormView extends AbstractObjectProcessor {
                 title = null;
             }
 
-            write(request, object, fields, linkFields, classString, title, labelDelimiter, oddRowClass, evenRowClass, showIcons);
+            write(tagProcessor, object, fields, linkFields, classString, title, labelDelimiter, oddRowClass, evenRowClass, showIcons);
         } else {
-            request.skipUntilClose(); 
+            tagProcessor.skipUntilClose(); 
         }
     }
 
     private void write(
-            final Request request,
+            final TagProcessor tagProcessor,
             final ObjectAdapter object,
             final List<ObjectAssociation> fields,
             final LinkedObject[] linkFields,
@@ -96,12 +96,12 @@ public abstract class AbstractFormView extends AbstractObjectProcessor {
             final String oddRowClass,
             final String evenRowClass,
             final boolean showIcons) {
-        request.appendHtml("<div" + classString + ">");
+        tagProcessor.appendHtml("<div" + classString + ">");
         if (title != null) {
-            request.appendHtml("<div class=\"title\">");
-            request.appendAsHtmlEncoded(title);
-            request.appendHtml("</div>");
-            HelpLink.append(request, object.getSpecification().getDescription(), object.getSpecification().getHelp());
+            tagProcessor.appendHtml("<div class=\"title\">");
+            tagProcessor.appendAsHtmlEncoded(title);
+            tagProcessor.appendHtml("</div>");
+            HelpLink.append(tagProcessor, object.getSpecification().getDescription(), object.getSpecification().getHelp());
         }
         int row = 1;
         for (int i = 0; i < fields.size(); i++) {
@@ -120,19 +120,19 @@ public abstract class AbstractFormView extends AbstractObjectProcessor {
             } else {
                 cls = " class=\"field " + (evenRowClass == null ? EVEN_ROW_CLASS : evenRowClass) + "\"";
             }
-            request.appendHtml("<div " + cls + description + "><span class=\"label\">");
-            request.appendAsHtmlEncoded(field.getName());
-            request.appendHtml(labelDelimiter + "</span>");
+            tagProcessor.appendHtml("<div " + cls + description + "><span class=\"label\">");
+            tagProcessor.appendAsHtmlEncoded(field.getName());
+            tagProcessor.appendHtml(labelDelimiter + "</span>");
             final LinkedObject linkedObject = linkFields[i];
-            addField(request, object, field, linkedObject, showIcons);
-            HelpLink.append(request, field.getDescription(), field.getHelp());
-            request.appendHtml("</div>");
+            addField(tagProcessor, object, field, linkedObject, showIcons);
+            HelpLink.append(tagProcessor, field.getDescription(), field.getHelp());
+            tagProcessor.appendHtml("</div>");
         }
-        request.appendHtml("</div>");
+        tagProcessor.appendHtml("</div>");
     }
 
-    protected void addField(final Request request, final ObjectAdapter object, final ObjectAssociation field, final LinkedObject linkedObject, final boolean showIcons) {
-        FieldValue.write(request, object, field, linkedObject, null, showIcons, 0);
+    protected void addField(final TagProcessor tagProcessor, final ObjectAdapter object, final ObjectAssociation field, final LinkedObject linkedObject, final boolean showIcons) {
+        FieldValue.write(tagProcessor, object, field, linkedObject, null, showIcons, 0);
     }
 
     protected boolean ignoreField(final ObjectAssociation objectField) {

http://git-wip-us.apache.org/repos/asf/isis/blob/49518c89/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/AbstractTableView.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/AbstractTableView.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/AbstractTableView.java
index 9482209..f47bd60 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/AbstractTableView.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/AbstractTableView.java
@@ -31,11 +31,11 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociationFilters;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.persistence.Persistor;
-import org.apache.isis.viewer.scimpi.dispatcher.AbstractElementProcessor;
-import org.apache.isis.viewer.scimpi.dispatcher.ScimpiException;
-import org.apache.isis.viewer.scimpi.dispatcher.context.RequestContext;
-import org.apache.isis.viewer.scimpi.dispatcher.context.RequestContext.Scope;
-import org.apache.isis.viewer.scimpi.dispatcher.processor.Request;
+import org.apache.isis.viewer.scimpi.ScimpiException;
+import org.apache.isis.viewer.scimpi.dispatcher.context.Request;
+import org.apache.isis.viewer.scimpi.dispatcher.context.Request.Scope;
+import org.apache.isis.viewer.scimpi.dispatcher.processor.TagProcessor;
+import org.apache.isis.viewer.scimpi.dispatcher.view.AbstractElementProcessor;
 
 public abstract class AbstractTableView extends AbstractElementProcessor {
 
@@ -47,18 +47,18 @@ public abstract class AbstractTableView extends AbstractElementProcessor {
     private final Where where = Where.ALL_TABLES;
 
     @Override
-    public void process(final Request request) {
-        final RequestContext context = request.getContext();
+    public void process(final TagProcessor tagProcessor) {
+        final Request context = tagProcessor.getContext();
 
         ObjectAdapter collection;
         String parentObjectId = null;
         boolean isFieldEditable = false;
-        final String field = request.getOptionalProperty(FIELD);
-        final String tableClass = request.getOptionalProperty(CLASS);
+        final String field = tagProcessor.getOptionalProperty(FIELD);
+        final String tableClass = tagProcessor.getOptionalProperty(CLASS);
         ObjectSpecification elementSpec;
         String tableId;
         if (field != null) {
-            final String objectId = request.getOptionalProperty(OBJECT);
+            final String objectId = tagProcessor.getOptionalProperty(OBJECT);
             final ObjectAdapter object = context.getMappedObjectOrResult(objectId);
             if (object == null) {
                 throw new ScimpiException("No object for result or " + objectId);
@@ -73,24 +73,24 @@ public abstract class AbstractTableView extends AbstractElementProcessor {
             final TypeOfFacet facet = objectField.getFacet(TypeOfFacet.class);
             elementSpec = facet.valueSpec();
             parentObjectId = objectId == null ? context.mapObject(object, Scope.REQUEST) : objectId;
-            tableId = request.getOptionalProperty(ID, field);
+            tableId = tagProcessor.getOptionalProperty(ID, field);
         } else {
-            final String id = request.getOptionalProperty(COLLECTION);
+            final String id = tagProcessor.getOptionalProperty(COLLECTION);
             collection = context.getMappedObjectOrResult(id);
             elementSpec = collection.getElementSpecification();
-            tableId = request.getOptionalProperty(ID, collection.getElementSpecification().getShortIdentifier());
+            tableId = tagProcessor.getOptionalProperty(ID, collection.getElementSpecification().getShortIdentifier());
         }
 
-        final String summary = request.getOptionalProperty("summary");
-        final String rowClassesList = request.getOptionalProperty(ROW_CLASSES, ODD_ROW_CLASS + "|" + EVEN_ROW_CLASS);
+        final String summary = tagProcessor.getOptionalProperty("summary");
+        final String rowClassesList = tagProcessor.getOptionalProperty(ROW_CLASSES, ODD_ROW_CLASS + "|" + EVEN_ROW_CLASS);
         String[] rowClasses = null;
         if (rowClassesList.length() > 0) {
             rowClasses = rowClassesList.split("[,|/]");
         }
 
         final List<ObjectAssociation> allFields = elementSpec.getAssociations(ObjectAssociationFilters.WHEN_VISIBLE_IRRESPECTIVE_OF_WHERE);
-        final TableContentWriter rowBuilder = createRowBuilder(request, context, isFieldEditable ? parentObjectId : null, allFields, collection);
-        write(request, collection, summary, rowBuilder, tableId, tableClass, rowClasses);
+        final TableContentWriter rowBuilder = createRowBuilder(tagProcessor, context, isFieldEditable ? parentObjectId : null, allFields, collection);
+        write(tagProcessor, collection, summary, rowBuilder, tableId, tableClass, rowClasses);
 
     }
 
@@ -98,27 +98,27 @@ public abstract class AbstractTableView extends AbstractElementProcessor {
         return IsisContext.getPersistenceSession();
     }
 
-    protected abstract TableContentWriter createRowBuilder(final Request request, RequestContext context, final String parent, final List<ObjectAssociation> allFields, ObjectAdapter collection);
+    protected abstract TableContentWriter createRowBuilder(final TagProcessor tagProcessor, Request context, final String parent, final List<ObjectAssociation> allFields, ObjectAdapter collection);
 
     public static void write(
-            final Request request,
+            final TagProcessor tagProcessor,
             final ObjectAdapter collection,
             final String summary,
             final TableContentWriter rowBuilder,
             final String tableId,
             final String tableClass,
             final String[] rowClasses) {
-        final RequestContext context = request.getContext();
+        final Request context = tagProcessor.getContext();
 
         final String summarySegment = summary == null ? "" : (" summary=\"" + summary + "\"");
         final String idSegment = tableId == null ? "" : (" id=\"" + tableId + "\""); 
         final String classSegment = tableClass == null ? "" : (" class=\"" + tableClass + "\"");
-        request.appendHtml("<table" + idSegment + classSegment + summarySegment + ">");
-        rowBuilder.writeCaption(request);
-        rowBuilder.writeHeaders(request);
-        rowBuilder.writeFooters(request);
+        tagProcessor.appendHtml("<table" + idSegment + classSegment + summarySegment + ">");
+        rowBuilder.writeCaption(tagProcessor);
+        rowBuilder.writeHeaders(tagProcessor);
+        rowBuilder.writeFooters(tagProcessor);
 
-        request.appendHtml("<tbody>");
+        tagProcessor.appendHtml("<tbody>");
         final CollectionFacet facet = collection.getSpecification().getFacet(CollectionFacet.class);
         final Iterator<ObjectAdapter> iterator = facet.iterator(collection);
         int row = 1;
@@ -130,13 +130,13 @@ public abstract class AbstractTableView extends AbstractElementProcessor {
             if (rowClasses != null) {
                 cls = " class=\"" + rowClasses[row % rowClasses.length] + "\"";
             }
-            request.appendHtml("<tr" + cls + ">");
-            rowBuilder.writeElement(request, context, element);
-            request.appendHtml("</tr>");
+            tagProcessor.appendHtml("<tr" + cls + ">");
+            rowBuilder.writeElement(tagProcessor, context, element);
+            tagProcessor.appendHtml("</tr>");
             row++;
         }
-        request.appendHtml("</tbody>");
-        request.appendHtml("</table>");
+        tagProcessor.appendHtml("</tbody>");
+        tagProcessor.appendHtml("</table>");
         
         rowBuilder.tidyUp();
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/49518c89/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/AddMessage.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/AddMessage.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/AddMessage.java
index acb53eb..4e3bbbb 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/AddMessage.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/AddMessage.java
@@ -21,16 +21,16 @@ package org.apache.isis.viewer.scimpi.dispatcher.view.display;
 
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.transaction.MessageBroker;
-import org.apache.isis.viewer.scimpi.dispatcher.AbstractElementProcessor;
-import org.apache.isis.viewer.scimpi.dispatcher.processor.Request;
+import org.apache.isis.viewer.scimpi.dispatcher.processor.TagProcessor;
+import org.apache.isis.viewer.scimpi.dispatcher.view.AbstractElementProcessor;
 
 public class AddMessage extends AbstractElementProcessor {
 
     @Override
-    public void process(final Request request) {
-        request.pushNewBuffer();
-        request.processUtilCloseTag();
-        final String content = request.popBuffer();
+    public void process(final TagProcessor tagProcessor) {
+        tagProcessor.pushNewBuffer();
+        tagProcessor.processUtilCloseTag();
+        final String content = tagProcessor.popBuffer();
 
         final MessageBroker messageBroker = IsisContext.getMessageBroker();
         messageBroker.addMessage(content);

http://git-wip-us.apache.org/repos/asf/isis/blob/49518c89/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/AddWarning.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/AddWarning.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/AddWarning.java
index 59d3dcc..bc56ffc 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/AddWarning.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/AddWarning.java
@@ -21,16 +21,16 @@ package org.apache.isis.viewer.scimpi.dispatcher.view.display;
 
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.transaction.MessageBroker;
-import org.apache.isis.viewer.scimpi.dispatcher.AbstractElementProcessor;
-import org.apache.isis.viewer.scimpi.dispatcher.processor.Request;
+import org.apache.isis.viewer.scimpi.dispatcher.processor.TagProcessor;
+import org.apache.isis.viewer.scimpi.dispatcher.view.AbstractElementProcessor;
 
 public class AddWarning extends AbstractElementProcessor {
 
     @Override
-    public void process(final Request request) {
-        request.pushNewBuffer();
-        request.processUtilCloseTag();
-        final String content = request.popBuffer();
+    public void process(final TagProcessor tagProcessor) {
+        tagProcessor.pushNewBuffer();
+        tagProcessor.processUtilCloseTag();
+        final String content = tagProcessor.popBuffer();
 
         final MessageBroker messageBroker = IsisContext.getMessageBroker();
         messageBroker.addWarning(content);

http://git-wip-us.apache.org/repos/asf/isis/blob/49518c89/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/Errors.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/Errors.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/Errors.java
index 960997d..a172df4 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/Errors.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/Errors.java
@@ -19,32 +19,32 @@
 
 package org.apache.isis.viewer.scimpi.dispatcher.view.display;
 
-import org.apache.isis.viewer.scimpi.dispatcher.AbstractElementProcessor;
-import org.apache.isis.viewer.scimpi.dispatcher.processor.Request;
+import org.apache.isis.viewer.scimpi.dispatcher.processor.TagProcessor;
+import org.apache.isis.viewer.scimpi.dispatcher.view.AbstractElementProcessor;
 
 public class Errors extends AbstractElementProcessor {
 
     @Override
-    public void process(final Request request) {
-        final String cls = request.getOptionalProperty(CLASS);
+    public void process(final TagProcessor tagProcessor) {
+        final String cls = tagProcessor.getOptionalProperty(CLASS);
         final StringBuffer buffer = new StringBuffer();
-        write(request, cls, buffer);
+        write(tagProcessor, cls, buffer);
         if (buffer.length() > 0) {
-            request.appendHtml("<div class=\"error\">");
-            request.appendHtml(buffer.toString());
-            request.appendHtml("</div>");
+            tagProcessor.appendHtml("<div class=\"error\">");
+            tagProcessor.appendHtml(buffer.toString());
+            tagProcessor.appendHtml("</div>");
         }
     }
 
-    public static void write(final Request request, String cls, final StringBuffer buffer) {
+    public static void write(final TagProcessor tagProcessor, String cls, final StringBuffer buffer) {
         if (cls == null) {
             cls = "error";
         }
-        final String message = (String) request.getContext().getVariable("_error-message");
+        final String message = (String) tagProcessor.getContext().getVariable("_error-message");
         if (message != null) {
             buffer.append(message);
         }
-        final String details = (String) request.getContext().getVariable("_error-details");
+        final String details = (String) tagProcessor.getContext().getVariable("_error-details");
         if (details != null) {
             buffer.append(details);
         }

http://git-wip-us.apache.org/repos/asf/isis/blob/49518c89/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/Feedback.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/Feedback.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/Feedback.java
index f734ce2..e8f4cd8 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/Feedback.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/Feedback.java
@@ -19,22 +19,22 @@
 
 package org.apache.isis.viewer.scimpi.dispatcher.view.display;
 
-import org.apache.isis.viewer.scimpi.dispatcher.AbstractElementProcessor;
-import org.apache.isis.viewer.scimpi.dispatcher.processor.Request;
+import org.apache.isis.viewer.scimpi.dispatcher.processor.TagProcessor;
+import org.apache.isis.viewer.scimpi.dispatcher.view.AbstractElementProcessor;
 
 public class Feedback extends AbstractElementProcessor {
 
     @Override
-    public void process(final Request request) {
-        final String cls = request.getOptionalProperty(CLASS);
+    public void process(final TagProcessor tagProcessor) {
+        final String cls = tagProcessor.getOptionalProperty(CLASS);
         final StringBuffer buffer = new StringBuffer();
-        Errors.write(request, cls, buffer);
+        Errors.write(tagProcessor, cls, buffer);
         Warnings.write(cls, buffer);
         Messages.write(cls, buffer);
         if (buffer.length() > 0) {
-            request.appendHtml("<div class=\"feedback\">");
-            request.appendHtml(buffer.toString());
-            request.appendHtml("</div>");
+            tagProcessor.appendHtml("<div class=\"feedback\">");
+            tagProcessor.appendHtml(buffer.toString());
+            tagProcessor.appendHtml("</div>");
         }
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/49518c89/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/FieldLabel.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/FieldLabel.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/FieldLabel.java
index 32e2cd8..7447424 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/FieldLabel.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/FieldLabel.java
@@ -23,10 +23,10 @@ import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
 import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.viewer.scimpi.dispatcher.AbstractElementProcessor;
-import org.apache.isis.viewer.scimpi.dispatcher.ForbiddenException;
-import org.apache.isis.viewer.scimpi.dispatcher.ScimpiException;
-import org.apache.isis.viewer.scimpi.dispatcher.processor.Request;
+import org.apache.isis.viewer.scimpi.ForbiddenException;
+import org.apache.isis.viewer.scimpi.ScimpiException;
+import org.apache.isis.viewer.scimpi.dispatcher.processor.TagProcessor;
+import org.apache.isis.viewer.scimpi.dispatcher.view.AbstractElementProcessor;
 
 public class FieldLabel extends AbstractElementProcessor {
 
@@ -38,10 +38,10 @@ public class FieldLabel extends AbstractElementProcessor {
     private final Where where = Where.ANYWHERE;
 
     @Override
-    public void process(final Request request) {
-        final String id = request.getOptionalProperty(OBJECT);
-        final String fieldName = request.getRequiredProperty(FIELD);
-        final ObjectAdapter object = request.getContext().getMappedObjectOrResult(id);
+    public void process(final TagProcessor tagProcessor) {
+        final String id = tagProcessor.getOptionalProperty(OBJECT);
+        final String fieldName = tagProcessor.getRequiredProperty(FIELD);
+        final ObjectAdapter object = tagProcessor.getContext().getMappedObjectOrResult(id);
         final ObjectAssociation field = object.getSpecification().getAssociation(fieldName);
         if (field == null) {
             throw new ScimpiException("No field " + fieldName + " in " + object.getSpecification().getFullIdentifier());
@@ -49,13 +49,13 @@ public class FieldLabel extends AbstractElementProcessor {
         if (field.isVisible(IsisContext.getAuthenticationSession(), object, where).isVetoed()) {
             throw new ForbiddenException(field, ForbiddenException.VISIBLE);
         }
-        String delimiter = request.getOptionalProperty("delimiter");
+        String delimiter = tagProcessor.getOptionalProperty("delimiter");
         if (delimiter == null) {
             delimiter = ": ";
         } else if (delimiter.equals("")) {
             delimiter = null;
         }
-        write(request, field, delimiter);
+        write(tagProcessor, field, delimiter);
     }
 
     @Override
@@ -63,7 +63,7 @@ public class FieldLabel extends AbstractElementProcessor {
         return "label";
     }
 
-    public static void write(final Request content, final ObjectAssociation field, final String delimiter) {
+    public static void write(final TagProcessor content, final ObjectAssociation field, final String delimiter) {
         final String description = field.getDescription();
         final String titleSegment = description == null || description.equals("") ? null : ("title=\"" + description + "\"");
         content.appendHtml("<span class=\"label\"" + titleSegment + ">");

http://git-wip-us.apache.org/repos/asf/isis/blob/49518c89/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/FieldValue.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/FieldValue.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/FieldValue.java
index e739603..bc68ca2 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/FieldValue.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/FieldValue.java
@@ -27,11 +27,11 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
 import org.apache.isis.core.progmodel.facets.value.booleans.BooleanValueFacet;
 import org.apache.isis.core.runtime.persistence.ObjectNotFoundException;
 import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.viewer.scimpi.dispatcher.AbstractElementProcessor;
-import org.apache.isis.viewer.scimpi.dispatcher.ForbiddenException;
-import org.apache.isis.viewer.scimpi.dispatcher.ScimpiException;
-import org.apache.isis.viewer.scimpi.dispatcher.context.RequestContext.Scope;
-import org.apache.isis.viewer.scimpi.dispatcher.processor.Request;
+import org.apache.isis.viewer.scimpi.ForbiddenException;
+import org.apache.isis.viewer.scimpi.ScimpiException;
+import org.apache.isis.viewer.scimpi.dispatcher.context.Request.Scope;
+import org.apache.isis.viewer.scimpi.dispatcher.processor.TagProcessor;
+import org.apache.isis.viewer.scimpi.dispatcher.view.AbstractElementProcessor;
 import org.apache.isis.viewer.scimpi.dispatcher.view.field.LinkedObject;
 
 public class FieldValue extends AbstractElementProcessor {
@@ -44,11 +44,11 @@ public class FieldValue extends AbstractElementProcessor {
     private final Where where = Where.ANYWHERE;
 
     @Override
-    public void process(final Request request) {
-        final String className = request.getOptionalProperty(CLASS);
-        final String id = request.getOptionalProperty(OBJECT);
-        final String fieldName = request.getRequiredProperty(FIELD);
-        final ObjectAdapter object = request.getContext().getMappedObjectOrResult(id);
+    public void process(final TagProcessor tagProcessor) {
+        final String className = tagProcessor.getOptionalProperty(CLASS);
+        final String id = tagProcessor.getOptionalProperty(OBJECT);
+        final String fieldName = tagProcessor.getRequiredProperty(FIELD);
+        final ObjectAdapter object = tagProcessor.getContext().getMappedObjectOrResult(id);
         final ObjectAssociation field = object.getSpecification().getAssociation(fieldName);
         if (field == null) {
             throw new ScimpiException("No field " + fieldName + " in " + object.getSpecification().getFullIdentifier());
@@ -56,10 +56,10 @@ public class FieldValue extends AbstractElementProcessor {
         if (field.isVisible(IsisContext.getAuthenticationSession(), object, where).isVetoed()) {
             throw new ForbiddenException(field, ForbiddenException.VISIBLE);
         }
-        final boolean isIconShowing = request.isRequested(SHOW_ICON, showIconByDefault());
-        final int truncateTo = Integer.valueOf(request.getOptionalProperty(TRUNCATE, "0")).intValue();
+        final boolean isIconShowing = tagProcessor.isRequested(SHOW_ICON, showIconByDefault());
+        final int truncateTo = Integer.valueOf(tagProcessor.getOptionalProperty(TRUNCATE, "0")).intValue();
 
-        write(request, object, field, null, className, isIconShowing, truncateTo);
+        write(tagProcessor, object, field, null, className, isIconShowing, truncateTo);
     }
 
     @Override
@@ -67,28 +67,28 @@ public class FieldValue extends AbstractElementProcessor {
         return "field";
     }
 
-    public static void write(final Request request, final ObjectAdapter object, final ObjectAssociation field, final LinkedObject linkedField, final String className, final boolean showIcon, final int truncateTo) {
+    public static void write(final TagProcessor tagProcessor, final ObjectAdapter object, final ObjectAssociation field, final LinkedObject linkedField, final String className, final boolean showIcon, final int truncateTo) {
 
         final ObjectAdapter fieldReference = field.get(object);
 
         if (fieldReference != null) {
             final String classSection = "class=\"" + (className == null ? "value" : className) + "\"";
-            request.appendHtml("<span " + classSection + ">");
+            tagProcessor.appendHtml("<span " + classSection + ">");
             if (field.isOneToOneAssociation()) {
                 try {
                     IsisContext.getPersistenceSession().resolveImmediately(fieldReference);
                 } catch (final ObjectNotFoundException e) {
-                    request.appendHtml(e.getMessage() + "</span>");
+                    tagProcessor.appendHtml(e.getMessage() + "</span>");
                 }
             }
 
             if (!field.getSpecification().containsFacet(ParseableFacet.class) && showIcon) {
-                request.appendHtml("<img class=\"small-icon\" src=\"" + request.getContext().imagePath(fieldReference) + "\" alt=\"" + field.getSpecification().getShortIdentifier() + "\"/>");
+                tagProcessor.appendHtml("<img class=\"small-icon\" src=\"" + tagProcessor.getContext().imagePath(fieldReference) + "\" alt=\"" + field.getSpecification().getShortIdentifier() + "\"/>");
             }
 
             if (linkedField != null) {
-                final String id = request.getContext().mapObject(fieldReference, linkedField.getScope(), Scope.INTERACTION);
-                request.appendHtml("<a href=\"" + linkedField.getForwardView() + "?" + linkedField.getVariable() + "=" + id + request.getContext().encodedInteractionParameters() + "\">");
+                final String id = tagProcessor.getContext().mapObject(fieldReference, linkedField.getScope(), Scope.INTERACTION);
+                tagProcessor.appendHtml("<a href=\"" + linkedField.getForwardView() + "?" + linkedField.getVariable() + "=" + id + tagProcessor.getContext().encodedInteractionParameters() + "\">");
             }
             String value = fieldReference == null ? "" : fieldReference.titleString();
             if (truncateTo > 0 && value.length() > truncateTo) {
@@ -103,15 +103,15 @@ public class FieldValue extends AbstractElementProcessor {
                 final boolean flag = facet.isSet(fieldReference);
                 final String valueSegment = flag ? " checked=\"checked\"" : "";
                 final String disabled = " disabled=\"disabled\"";
-                request.appendHtml("<input type=\"checkbox\"" + valueSegment + disabled + " />");
+                tagProcessor.appendHtml("<input type=\"checkbox\"" + valueSegment + disabled + " />");
             } else {
-                request.appendAsHtmlEncoded(value);
+                tagProcessor.appendAsHtmlEncoded(value);
             }
 
             if (linkedField != null) {
-                request.appendHtml("</a>");
+                tagProcessor.appendHtml("</a>");
             }
-            request.appendHtml("</span>");
+            tagProcessor.appendHtml("</span>");
         }
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/49518c89/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/GetField.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/GetField.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/GetField.java
index 3da420d..4a76b6a 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/GetField.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/GetField.java
@@ -30,12 +30,12 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
 import org.apache.isis.core.progmodel.facets.value.date.DateValueFacet;
 import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.viewer.scimpi.dispatcher.AbstractElementProcessor;
-import org.apache.isis.viewer.scimpi.dispatcher.ForbiddenException;
-import org.apache.isis.viewer.scimpi.dispatcher.ScimpiException;
-import org.apache.isis.viewer.scimpi.dispatcher.context.RequestContext;
-import org.apache.isis.viewer.scimpi.dispatcher.context.RequestContext.Scope;
-import org.apache.isis.viewer.scimpi.dispatcher.processor.Request;
+import org.apache.isis.viewer.scimpi.ForbiddenException;
+import org.apache.isis.viewer.scimpi.ScimpiException;
+import org.apache.isis.viewer.scimpi.dispatcher.context.Request;
+import org.apache.isis.viewer.scimpi.dispatcher.context.Request.Scope;
+import org.apache.isis.viewer.scimpi.dispatcher.processor.TagProcessor;
+import org.apache.isis.viewer.scimpi.dispatcher.view.AbstractElementProcessor;
 
 public class GetField extends AbstractElementProcessor {
 
@@ -47,10 +47,10 @@ public class GetField extends AbstractElementProcessor {
     private final Where where = Where.ANYWHERE;
 
     @Override
-    public void process(final Request request) {
-        final String id = request.getOptionalProperty(OBJECT);
-        final String fieldName = request.getRequiredProperty(FIELD);
-        final ObjectAdapter object = request.getContext().getMappedObjectOrResult(id);
+    public void process(final TagProcessor tagProcessor) {
+        final String id = tagProcessor.getOptionalProperty(OBJECT);
+        final String fieldName = tagProcessor.getRequiredProperty(FIELD);
+        final ObjectAdapter object = tagProcessor.getContext().getMappedObjectOrResult(id);
         if (object == null) {
             throw new ScimpiException("No object to get field for: " + fieldName + " - " + id);
         }
@@ -63,35 +63,35 @@ public class GetField extends AbstractElementProcessor {
             throw new ForbiddenException(field, ForbiddenException.VISIBLE);
         }
 
-        String pattern = request.getOptionalProperty("decimal-format");
+        String pattern = tagProcessor.getOptionalProperty("decimal-format");
         Format format = null;
         if (pattern != null) {
             format = new DecimalFormat(pattern);
         }
-        pattern = request.getOptionalProperty("date-format");
+        pattern = tagProcessor.getOptionalProperty("date-format");
         if (pattern != null) {
             format = new SimpleDateFormat(pattern);
         }
 
-        final String name = request.getOptionalProperty(RESULT_NAME, fieldName);
-        final String scopeName = request.getOptionalProperty(SCOPE);
-        final Scope scope = RequestContext.scope(scopeName, Scope.REQUEST);
+        final String name = tagProcessor.getOptionalProperty(RESULT_NAME, fieldName);
+        final String scopeName = tagProcessor.getOptionalProperty(SCOPE);
+        final Scope scope = Request.scope(scopeName, Scope.REQUEST);
 
-        process(request, object, field, format, name, scope);
+        process(tagProcessor, object, field, format, name, scope);
     }
 
-    protected void process(final Request request, final ObjectAdapter object, final ObjectAssociation field, final Format format, final String name, final Scope scope) {
+    protected void process(final TagProcessor tagProcessor, final ObjectAdapter object, final ObjectAssociation field, final Format format, final String name, final Scope scope) {
         final ObjectAdapter fieldReference = field.get(object);
         if (format != null && fieldReference.isValue()) {
             final DateValueFacet facet = fieldReference.getSpecification().getFacet(DateValueFacet.class);
             final Date date = facet.dateValue(fieldReference);
             final String value = format.format(date);
-            request.appendDebug("    " + object + " -> " + value);
-            request.getContext().addVariable(name, Request.getEncoder().encoder(value), scope);
+            tagProcessor.appendDebug("    " + object + " -> " + value);
+            tagProcessor.getContext().addVariable(name, TagProcessor.getEncoder().encoder(value), scope);
         } else {
-            final String source = fieldReference == null ? "" : request.getContext().mapObject(fieldReference, scope);
-            request.appendDebug("    " + object + " -> " + source);
-            request.getContext().addVariable(name, source, scope);
+            final String source = fieldReference == null ? "" : tagProcessor.getContext().mapObject(fieldReference, scope);
+            tagProcessor.appendDebug("    " + object + " -> " + source);
+            tagProcessor.getContext().addVariable(name, source, scope);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/49518c89/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/IncludeObject.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/IncludeObject.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/IncludeObject.java
index aa3bfff..0972dd9 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/IncludeObject.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/IncludeObject.java
@@ -30,10 +30,10 @@ import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
 import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.viewer.scimpi.dispatcher.AbstractElementProcessor;
-import org.apache.isis.viewer.scimpi.dispatcher.ForbiddenException;
-import org.apache.isis.viewer.scimpi.dispatcher.context.RequestContext.Scope;
-import org.apache.isis.viewer.scimpi.dispatcher.processor.Request;
+import org.apache.isis.viewer.scimpi.ForbiddenException;
+import org.apache.isis.viewer.scimpi.dispatcher.context.Request.Scope;
+import org.apache.isis.viewer.scimpi.dispatcher.processor.TagProcessor;
+import org.apache.isis.viewer.scimpi.dispatcher.view.AbstractElementProcessor;
 
 /**
  * Element to include another file that will display an object.
@@ -48,29 +48,29 @@ public class IncludeObject extends AbstractElementProcessor {
     private final Where where = Where.ANYWHERE;
 
     @Override
-    public void process(final Request request) {
-        final String path = request.getOptionalProperty("file");
-        String id = request.getOptionalProperty(OBJECT);
-        final String fieldName = request.getOptionalProperty(FIELD);
-        ObjectAdapter object = request.getContext().getMappedObjectOrResult(id);
+    public void process(final TagProcessor tagProcessor) {
+        final String path = tagProcessor.getOptionalProperty("file");
+        String id = tagProcessor.getOptionalProperty(OBJECT);
+        final String fieldName = tagProcessor.getOptionalProperty(FIELD);
+        ObjectAdapter object = tagProcessor.getContext().getMappedObjectOrResult(id);
         if (fieldName != null) {
             final ObjectAssociation field = object.getSpecification().getAssociation(fieldName);
             if (field.isVisible(IsisContext.getAuthenticationSession(), object, where).isVetoed()) {
                 throw new ForbiddenException(field, ForbiddenException.VISIBLE);
             }
             object = field.get(object);
-            id = request.getContext().mapObject(object, Scope.REQUEST);
+            id = tagProcessor.getContext().mapObject(object, Scope.REQUEST);
         }
 
         if (object != null) {
             IsisContext.getPersistenceSession().resolveImmediately(object);
-            request.getContext().addVariable("_object", id, Scope.REQUEST);
-            importFile(request, path);
+            tagProcessor.getContext().addVariable("_object", id, Scope.REQUEST);
+            importFile(tagProcessor, path);
         }
-        request.closeEmpty();
+        tagProcessor.closeEmpty();
     }
 
-    private static void importFile(final Request request, final String path) {
+    private static void importFile(final TagProcessor tagProcessor, final String path) {
         // TODO load in file via HtmlFileParser
         final File file = new File(path);
         BufferedReader reader = null;
@@ -79,10 +79,10 @@ public class IncludeObject extends AbstractElementProcessor {
                 reader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
                 String line;
                 while ((line = reader.readLine()) != null) {
-                    request.appendHtml(line);
+                    tagProcessor.appendHtml(line);
                 }
             } else {
-                request.appendHtml("<P classs=\"error\">File " + path + " not found to import</P>");
+                tagProcessor.appendHtml("<P classs=\"error\">File " + path + " not found to import</P>");
             }
         } catch (final FileNotFoundException e) {
             throw new RuntimeException(e);