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/05/11 13:47:47 UTC
svn commit: r1101841 [2/2] - in /incubator/isis/trunk:
core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/maxlen/
core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/member/ordering/
core/metamodel/src/main/java/org/apach...
Modified: incubator/isis/trunk/src/site/apt/where-to-start.apt
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/src/site/apt/where-to-start.apt?rev=1101841&r1=1101840&r2=1101841&view=diff
==============================================================================
--- incubator/isis/trunk/src/site/apt/where-to-start.apt (original)
+++ incubator/isis/trunk/src/site/apt/where-to-start.apt Wed May 11 11:47:45 2011
@@ -27,11 +27,13 @@ Where to Start?
mvn archetype:generate \
-D archetypeCatalog=http://incubator.apache.org/isis \
-D archetypeGroupId=org.apache.isis.support \
- -D archetypeArtifactId=quickstart-archetype
+ -D archetypeArtifactId=quickstart-archetype \
+ -D groupId=com.mycompany \
+ -D artifactId=myapp
+------------------------------------------------------------
- The {{{./quickstart-app.html}quickstart app}} page has an overview
+ The {{{./quickstart-app.html}quickstart app}} page has more detail
of the generated application and how to run it.
Note: <currently the archetype is only available from the Apache snapshot
@@ -58,16 +60,11 @@ Documentation
After that, you probably should look through the {{{./core/docbkx/pdf/isis-core.pdf}core}}
documentation. This provides more detail on the design and architecture of Isis, along
- with the key APIs. It also describes how to deploy your application in various configurations
- (webapp, standalone or client/server).
+ with the key APIs.
- Once you have an understanding of those APIs, you may want to start using customizing the
- {{{./default}default}} implementations (where supported), or start to use some of the
- {{{./alternative}alternative}} implementations. The alternative implementations tend to be
- more sophisticated and offer more in the way of customization. In either case, you'll find
- the information you need in the user guides for each of the components.
-
- The documentation for all of the components is listed {{{./documentation.html}here}}.
+ Once you have an understanding of those APIs, you'll probably want to delve into individual
+ implementations of the APIs, such as the programming model, security, viewers or the
+ runtime (persistence). You'll find documentation for all of these components {{{./documentation.html}here}}.
What Else is There?
@@ -76,7 +73,7 @@ What Else is There?
In the future, we also hope to provide a selection of off-the-shelf domain
services and value types integrations for you to reuse; these will be hosted
- within the {{{./support/domain/index.html}domain}} library. (Until then, why
+ within a "domain" library. (Until then, why
not contribute some of your own ? ;-).
Modified: incubator/isis/trunk/src/site/resources/archetype-catalog.xml
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/src/site/resources/archetype-catalog.xml?rev=1101841&r1=1101840&r2=1101841&view=diff
==============================================================================
--- incubator/isis/trunk/src/site/resources/archetype-catalog.xml (original)
+++ incubator/isis/trunk/src/site/resources/archetype-catalog.xml Wed May 11 11:47:45 2011
@@ -1,13 +1,11 @@
-<archetype-catalog xmlns="http://maven.apache.org/plugins/maven-archetype-plugi
-n/archetype-catalog/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/arc
-hetype-catalog/1.0.0 http://maven.apache.org/xsd/archetype-catalog-1.0.0.xsd">
+<archetype-catalog xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-catalog/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-catalog/1.0.0 http://maven.apache.org/xsd/archetype-catalog-1.0.0.xsd">
<archetypes>
<archetype>
<groupId>org.apache.isis.support</groupId>
<artifactId>quickstart-archetype</artifactId>
<version>0.1.2-incubating-SNAPSHOT</version>
- <repository>https://repository.apache.org/content/groups/snapshots-group/
+ <repository>http://repository.apache.org/content/groups/snapshots-group/
</repository>
<description>Isis Quickstart Archetype</description>
</archetype>
@@ -15,7 +13,7 @@ hetype-catalog/1.0.0 http://maven.apache
<groupId>org.apache.isis.support</groupId>
<artifactId>quickstart-archetype</artifactId>
<version>0.1.1-incubating-SNAPSHOT</version>
- <repository>https://repository.apache.org/content/groups/snapshots-group/
+ <repository>http://repository.apache.org/content/groups/snapshots-group/
</repository>
<description>Isis Quickstart Archetype</description>
</archetype>
@@ -23,7 +21,7 @@ hetype-catalog/1.0.0 http://maven.apache
<groupId>org.apache.isis.support</groupId>
<artifactId>quickstart-archetype</artifactId>
<version>0.1.0-incubating-SNAPSHOT</version>
- <repository>https://repository.apache.org/content/groups/snapshots-group/
+ <repository>http://repository.apache.org/content/groups/snapshots-group/
</repository>
<description>Isis Quickstart Archetype</description>
</archetype>
Modified: incubator/isis/trunk/src/site/site.xml
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/src/site/site.xml?rev=1101841&r1=1101840&r2=1101841&view=diff
==============================================================================
--- incubator/isis/trunk/src/site/site.xml (original)
+++ incubator/isis/trunk/src/site/site.xml Wed May 11 11:47:45 2011
@@ -78,13 +78,17 @@
href="http://mail-archives.apache.org/mod_mbox/incubator-isis-dev/" />
<item name="Subscribe"
href="mailto:isis-dev-subscribe@incubator.apache.org" />
+ <item name="Markmail (RSS)"
+ href="http://incubator.markmail.org/search/?q=isis-dev" />
+ <item name="Gmane (NNTP)"
+ href="http://blog.gmane.org/gmane.comp.apache.incubator.isis.devel" />
</item>
<!--
<item name="Twitter (#ApacheIsis)" href="http://search.twitter.com/search?q=%23ApacheIsis" />
-->
<item name="Wiki" href="https://cwiki.apache.org/confluence/display/ISIS/Index" />
<item name="JIRA" href="https://issues.apache.org/jira/browse/ISIS" />
- <item name="CI" href="https://hudson.apache.org/hudson/job/isis-trunk-ubuntu" />
+ <item name="CI" href="https://builds.apache.org/hudson/job/isis-trunk-windows" />
<item name="Isis Extras" href="http://code.google.com/a/apache-extras.org/p/isis-extras/" />
</menu>
Modified: incubator/isis/trunk/support/quickstart/viewer-html/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/support/quickstart/viewer-html/src/main/webapp/WEB-INF/web.xml?rev=1101841&r1=1101840&r2=1101841&view=diff
==============================================================================
--- incubator/isis/trunk/support/quickstart/viewer-html/src/main/webapp/WEB-INF/web.xml (original)
+++ incubator/isis/trunk/support/quickstart/viewer-html/src/main/webapp/WEB-INF/web.xml Wed May 11 11:47:45 2011
@@ -24,8 +24,8 @@
</filter>
<filter>
- <filter-name>StaticContentFilter</filter-name>
- <filter-class>org.apache.isis.core.webapp.content.StaticContentFilter</filter-class>
+ <filter-name>ResourceCachingFilter</filter-name>
+ <filter-class>org.apache.isis.core.webapp.content.ResourceCachingFilter</filter-class>
<init-param>
<param-name>CacheTime</param-name>
<param-value>86400</param-value>
@@ -33,19 +33,19 @@
</filter>
<filter-mapping>
- <filter-name>StaticContentFilter</filter-name>
+ <filter-name>ResourceCachingFilter</filter-name>
<url-pattern>*.css</url-pattern>
</filter-mapping>
<filter-mapping>
- <filter-name>StaticContentFilter</filter-name>
+ <filter-name>ResourceCachingFilter</filter-name>
<url-pattern>*.png</url-pattern>
</filter-mapping>
<filter-mapping>
- <filter-name>StaticContentFilter</filter-name>
+ <filter-name>ResourceCachingFilter</filter-name>
<url-pattern>*.jpg</url-pattern>
</filter-mapping>
<filter-mapping>
- <filter-name>StaticContentFilter</filter-name>
+ <filter-name>ResourceCachingFilter</filter-name>
<url-pattern>*.gif</url-pattern>
</filter-mapping>
Modified: incubator/isis/trunk/support/quickstart/viewer-restful/ide/eclipse/launch/quickstart-viewer-restful.launch
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/support/quickstart/viewer-restful/ide/eclipse/launch/quickstart-viewer-restful.launch?rev=1101841&r1=1101840&r2=1101841&view=diff
==============================================================================
--- incubator/isis/trunk/support/quickstart/viewer-restful/ide/eclipse/launch/quickstart-viewer-restful.launch (original)
+++ incubator/isis/trunk/support/quickstart/viewer-restful/ide/eclipse/launch/quickstart-viewer-restful.launch Wed May 11 11:47:45 2011
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
-<listEntry value="/quickstart-viewer-restful"/>
+<listEntry value="/org.apache.isis.runtimes.dflt.webserver/src/main/java/org/apache/isis/WebServer.java"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
-<listEntry value="4"/>
+<listEntry value="1"/>
</listAttribute>
<mapAttribute key="org.eclipse.debug.core.preferred_launchers">
<mapEntry key="[debug]" value="org.eclipse.jdt.launching.localJavaApplication"/>
Modified: incubator/isis/trunk/support/quickstart/viewer-restful/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/support/quickstart/viewer-restful/src/main/webapp/WEB-INF/web.xml?rev=1101841&r1=1101840&r2=1101841&view=diff
==============================================================================
--- incubator/isis/trunk/support/quickstart/viewer-restful/src/main/webapp/WEB-INF/web.xml (original)
+++ incubator/isis/trunk/support/quickstart/viewer-restful/src/main/webapp/WEB-INF/web.xml Wed May 11 11:47:45 2011
@@ -1,18 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4"
- xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
+ xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
- <display-name>Restful Claims</display-name>
+ <display-name>Restful Claims</display-name>
- <listener>
- <listener-class>org.apache.isis.runtimes.dflt.webapp.IsisWebAppBootstrapper</listener-class>
- </listener>
-
- <context-param>
- <param-name>isis.viewers</param-name>
- <param-value>restful</param-value>
- </context-param>
+ <listener>
+ <listener-class>org.apache.isis.runtimes.dflt.webapp.IsisWebAppBootstrapper</listener-class>
+ </listener>
+
+ <context-param>
+ <param-name>isis.viewers</param-name>
+ <param-value>restful</param-value>
+ </context-param>
<context-param>
<param-name>javax.ws.rs.Application</param-name>
@@ -22,48 +22,78 @@
<filter>
<filter-name>IsisSessionFilter</filter-name>
<filter-class>org.apache.isis.runtimes.dflt.webapp.IsisSessionFilter</filter-class>
- <init-param>
- <!-- trusted client, so no authentication required -->
- <param-name>authenticationSessionLookupStrategy</param-name>
- <param-value>org.apache.isis.viewer.restful.viewer.authentication.AuthenticationSessionLookupStrategyTrusted</param-value>
- </init-param>
+ <init-param>
+ <!-- trusted client, so no authentication required -->
+ <param-name>authenticationSessionLookupStrategy</param-name>
+ <param-value>org.apache.isis.viewer.restful.viewer.authentication.AuthenticationSessionLookupStrategyTrusted</param-value>
+ </init-param>
+ </filter>
+
+ <filter>
+ <filter-name>ResourceCachingFilter</filter-name>
+ <filter-class>org.apache.isis.core.webapp.content.ResourceCachingFilter</filter-class>
+ <init-param>
+ <param-name>CacheTime</param-name>
+ <param-value>86400</param-value>
+ </init-param>
</filter>
- <filter-mapping>
- <filter-name>IsisSessionFilter</filter-name>
- <url-pattern>*</url-pattern>
- </filter-mapping>
-
- <listener>
- <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class>
- </listener>
-
- <servlet>
- <servlet-name>RestEasy</servlet-name>
- <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
- </servlet>
-
- <servlet>
- <servlet-name>Resource</servlet-name>
- <servlet-class>org.apache.isis.core.webapp.content.ResourceServlet</servlet-class>
- </servlet>
-
- <servlet-mapping>
- <servlet-name>RestEasy</servlet-name>
- <url-pattern>/</url-pattern>
- </servlet-mapping>
-
- <servlet-mapping>
- <servlet-name>Resource</servlet-name>
- <url-pattern>*.js</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>Resource</servlet-name>
- <url-pattern>*.gif</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>Resource</servlet-name>
- <url-pattern>*.png</url-pattern>
- </servlet-mapping>
+ <filter-mapping>
+ <filter-name>IsisSessionFilter</filter-name>
+ <url-pattern>*</url-pattern>
+ </filter-mapping>
+
+ <filter-mapping>
+ <filter-name>ResourceCachingFilter</filter-name>
+ <url-pattern>*.js</url-pattern>
+ </filter-mapping>
+ <filter-mapping>
+ <filter-name>ResourceCachingFilter</filter-name>
+ <url-pattern>*.css</url-pattern>
+ </filter-mapping>
+ <filter-mapping>
+ <filter-name>ResourceCachingFilter</filter-name>
+ <url-pattern>*.jpg</url-pattern>
+ </filter-mapping>
+ <filter-mapping>
+ <filter-name>ResourceCachingFilter</filter-name>
+ <url-pattern>*.png</url-pattern>
+ </filter-mapping>
+ <filter-mapping>
+ <filter-name>ResourceCachingFilter</filter-name>
+ <url-pattern>*.gif</url-pattern>
+ </filter-mapping>
+
+ <listener>
+ <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class>
+ </listener>
+
+ <servlet>
+ <servlet-name>RestEasy</servlet-name>
+ <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
+ </servlet>
+
+ <servlet>
+ <servlet-name>Resource</servlet-name>
+ <servlet-class>org.apache.isis.core.webapp.content.ResourceServlet</servlet-class>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>RestEasy</servlet-name>
+ <url-pattern>/</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>Resource</servlet-name>
+ <url-pattern>*.js</url-pattern>
+ </servlet-mapping>
+ <servlet-mapping>
+ <servlet-name>Resource</servlet-name>
+ <url-pattern>*.gif</url-pattern>
+ </servlet-mapping>
+ <servlet-mapping>
+ <servlet-name>Resource</servlet-name>
+ <url-pattern>*.png</url-pattern>
+ </servlet-mapping>
</web-app>
Modified: incubator/isis/trunk/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/field/TextParseableFieldImpl.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/field/TextParseableFieldImpl.java?rev=1101841&r1=1101840&r2=1101841&view=diff
==============================================================================
--- incubator/isis/trunk/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/field/TextParseableFieldImpl.java (original)
+++ incubator/isis/trunk/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/field/TextParseableFieldImpl.java Wed May 11 11:47:45 2011
@@ -24,11 +24,11 @@ import org.apache.isis.core.metamodel.ad
import org.apache.isis.core.metamodel.consent.Allow;
import org.apache.isis.core.metamodel.consent.Consent;
import org.apache.isis.core.metamodel.consent.Veto;
+import org.apache.isis.core.metamodel.facets.maxlen.MaxLengthFacet;
import org.apache.isis.core.metamodel.facets.multiline.MultiLineFacet;
import org.apache.isis.core.metamodel.facets.object.parseable.InvalidEntryException;
import org.apache.isis.core.metamodel.facets.object.parseable.ParseableFacet;
-import org.apache.isis.core.metamodel.facets.propparam.maxlength.MaxLengthFacet;
-import org.apache.isis.core.metamodel.facets.typicallength.TypicalLengthFacet;
+import org.apache.isis.core.metamodel.facets.typicallen.TypicalLengthFacet;
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.OneToOneAssociation;
Modified: incubator/isis/trunk/viewer/html/src/main/java/org/apache/isis/viewer/html/HtmlViewerInstaller.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/html/src/main/java/org/apache/isis/viewer/html/HtmlViewerInstaller.java?rev=1101841&r1=1101840&r2=1101841&view=diff
==============================================================================
--- incubator/isis/trunk/viewer/html/src/main/java/org/apache/isis/viewer/html/HtmlViewerInstaller.java (original)
+++ incubator/isis/trunk/viewer/html/src/main/java/org/apache/isis/viewer/html/HtmlViewerInstaller.java Wed May 11 11:47:45 2011
@@ -21,7 +21,7 @@ package org.apache.isis.viewer.html;
import org.apache.isis.core.commons.lang.MapUtils;
import org.apache.isis.core.webapp.content.ResourceServlet;
-import org.apache.isis.core.webapp.content.StaticContentFilter;
+import org.apache.isis.core.webapp.content.ResourceCachingFilter;
import org.apache.isis.runtimes.dflt.runtime.Isis;
import org.apache.isis.runtimes.dflt.runtime.installerregistry.installerapi.IsisViewerInstallerAbstract;
import org.apache.isis.runtimes.dflt.runtime.viewer.IsisViewer;
@@ -71,7 +71,7 @@ public class HtmlViewerInstaller extends
webAppSpec.addServletSpecification(LogonServlet.class, LOGON_PAGE_MAPPED);
webAppSpec.addServletSpecification(ControllerServlet.class, DYNAMIC_CONTENT);
- webAppSpec.addFilterSpecification(StaticContentFilter.class, MapUtils.asMap("CacheTime", "86400"),
+ webAppSpec.addFilterSpecification(ResourceCachingFilter.class, MapUtils.asMap("CacheTime", "86400"),
STATIC_CONTENT);
webAppSpec.addServletSpecification(ResourceServlet.class, STATIC_CONTENT);
Modified: incubator/isis/trunk/viewer/html/src/main/java/org/apache/isis/viewer/html/task/EditTask.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/html/src/main/java/org/apache/isis/viewer/html/task/EditTask.java?rev=1101841&r1=1101840&r2=1101841&view=diff
==============================================================================
--- incubator/isis/trunk/viewer/html/src/main/java/org/apache/isis/viewer/html/task/EditTask.java (original)
+++ incubator/isis/trunk/viewer/html/src/main/java/org/apache/isis/viewer/html/task/EditTask.java Wed May 11 11:47:45 2011
@@ -25,9 +25,9 @@ import org.apache.isis.core.metamodel.ad
import org.apache.isis.core.metamodel.adapter.ResolveState;
import org.apache.isis.core.metamodel.adapter.util.AdapterUtils;
import org.apache.isis.core.metamodel.consent.Consent;
+import org.apache.isis.core.metamodel.facets.maxlen.MaxLengthFacet;
import org.apache.isis.core.metamodel.facets.multiline.MultiLineFacet;
-import org.apache.isis.core.metamodel.facets.propparam.maxlength.MaxLengthFacet;
-import org.apache.isis.core.metamodel.facets.typicallength.TypicalLengthFacet;
+import org.apache.isis.core.metamodel.facets.typicallen.TypicalLengthFacet;
import org.apache.isis.core.metamodel.spec.ActionType;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
Modified: incubator/isis/trunk/viewer/restful/src/docbkx/guide/isis-restful-viewer.xml
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/restful/src/docbkx/guide/isis-restful-viewer.xml?rev=1101841&r1=1101840&r2=1101841&view=diff
==============================================================================
--- incubator/isis/trunk/viewer/restful/src/docbkx/guide/isis-restful-viewer.xml (original)
+++ incubator/isis/trunk/viewer/restful/src/docbkx/guide/isis-restful-viewer.xml Wed May 11 11:47:45 2011
@@ -542,7 +542,7 @@
above.</para>
</sect2>
- <sect2>
+ <sect2 id="sec.TheViewerRestfulModule">
<title>The Viewer-Restful Module</title>
<para>Although the <emphasis>quickrun</emphasis> module is convenient
@@ -608,9 +608,21 @@
<para>An <emphasis>Isis</emphasis> session is required in order for
the <emphasis>restful viewer</emphasis> to interact with the
<emphasis>Isis</emphasis> runtime and interrogate the
- metamodel/retrieve domain objects. This is accomplished through the
- <classname>IsisSessionFilter</classname> (defined in the default
- runtime, <package>[oai.runtimes.dflt:webapp]</package>):</para>
+ metamodel/retrieve domain objects.</para>
+
+ <para>The first part of the required configuration is to set up an
+ <emphasis>Isis</emphasis> "context"; basically a set of factories
+ that are used to create a session for each subsequent request. This
+ is done using a context listener (defined in the <emphasis>default
+ runtime</emphasis>,
+ <package>[oai.runtimes.dflt:webapp]</package>):</para>
+
+ <programlisting><listener>
+ <listener-class>org.apache.isis.runtimes.dflt.webapp.IsisWebAppBootstrapper</listener-class>
+</listener></programlisting>
+
+ <para>The session is created for each request using the
+ <classname>IsisSessionFilter</classname>:</para>
<programlisting><filter>
<filter-name>IsisSessionFilter</filter-name>
@@ -2693,19 +2705,38 @@ public interface UserResource {
<para>At some point you'll presumably want to deploy your domain object
using <emphasis>restful viewer</emphasis> as a webapp. The quickstart
- archetype already sets up the viewer-restful module that will generate a
- WAR file; however, you may want to adjust its configuration in terms of
- two areas: authentication, and persistence. This chapter discusses these
- points.</para>
-
- <para></para>
-
- <para>*** hmmm... just discovered two versions of IsisSessionFilter... one
- in </para>
-
- <para></para>
-
- <para></para>
+ archetype already sets up the <package>viewer-restful</package> module
+ that will generate a <acronym>WAR</acronym> file; however, you may want to
+ adjust its configuration in terms of two areas: authentication, and
+ persistence. This chapter discusses these points.</para>
+
+ <para><note>
+ <para>These instructions assume that the restful viewer is being
+ deployed using the <emphasis>default runtime</emphasis>
+ <package>(oai.runtimes:dflt)</package>. At the time of writing this is
+ the only runtime available; in the future there may be other runtimes
+ which will have their own specific deployment requirements</para>
+ </note></para>
+
+ <sect1 id="sec.DeploymentType">
+ <title>Deployment Modes</title>
+
+ <para>By default the <classname>IsisWebAppBootstrapper</classname>
+ context listener (described in <xref
+ linkend="sec.TheViewerRestfulModule" />) will bootstrap Isis in the
+ "SERVER" deployment type. This means that an authentication is required,
+ that the sessions will be bound as thread-locals, and that the
+ persistence mechanism will be defaulted appropriately.</para>
+
+ <para>The deployment type can be changed to other settings, though; most
+ notably you may wish to change to SERVER_EXPLORATION or
+ SERVER_PROTOTYPE. This is done using a context parameter:</para>
+
+ <programlisting><context-param>
+ <param-name>deploymentType</param-name>
+ <param-value>SERVER_EXPLORATION</param-value>
+</context-param></programlisting>
+ </sect1>
<sect1 id="sec.Authentication">
<title>Authentication</title>
@@ -2721,20 +2752,21 @@ public interface UserResource {
<para>The <emphasis>restful viewer</emphasis> therefore uses
<emphasis>Isis</emphasis>' own authentication mechanism, with
authentication performed for each RESTful call. What this means depends
- on the deploymentType:</para>
+ on the deployment type (see <xref
+ linkend="sec.DeploymentType" />):</para>
<itemizedlist>
<listitem>
<para>if running in SERVER_EXPLORATION mode, then authentication is
- in effect switched off; no credentials are supplied, and Naked
- Objects will use the first exploration user defined in
- nakedobjects.properties, or a fallback "exploration" user
- otherwise</para>
+ in effect switched off; no credentials are supplied, and the
+ framework will use the first exploration user defined in
+ <emphasis>isis.properties</emphasis>, or a fallback "exploration"
+ user otherwise</para>
<para>For example, if running in SERVER_EXPLORATION mode, then you
can specify the user using:</para>
- <programlisting>nakedobjects.exploration.users=sven:role1, dick:role2, bob:role1|role2</programlisting>
+ <programlisting>isis.exploration.users=sven:role1, dick:role2, bob:role1|role2</programlisting>
</listitem>
<listitem>
@@ -2750,8 +2782,8 @@ public interface UserResource {
supports multiple concurrent users.</para>
</note>
- <para>Calling Restful Objects in SERVER mode with no credentials will
- result in an exception:</para>
+ <para>Running the Restful Objects in SERVER mode with no credentials
+ will result in an exception:</para>
<screenshot>
<screeninfo>Server mode, no credentials</screeninfo>
@@ -2782,44 +2814,87 @@ public interface UserResource {
<itemizedlist>
<listitem>
- <para><classname>NakedObjectsSessionFilter</classname> uses the
+ <para><classname>IsisSessionFilter</classname> uses the
<varname>authenticationManagerLookupStrategy</varname> property to
specify a strategy for both finding credentials and for validating
- them against the Naked Objects authentication manager.</para>
+ them against the <emphasis>Apache Isis</emphasis> authentication
+ manager.</para>
- <para>The implementation provided by <emphasis>Restful
- Objects</emphasis> -
- <classname>AuthenticationSessionLookupStrategyExtended</classname>
- in the package
+ <para>The <emphasis>restful viewer</emphasis> provides two
+ additional implementations of this that you can use:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>The
+ <classname>oai.viewer.restful.viewer.authentication.AuthenticationSessionLookupStrategyParams</classname>
+ implementation extends the default behaviour by also looking up
+ credentials using the username and password parameters. Once
+ validated, it also binds the results to the
+ <classname>HttpSession</classname> so that future interactions
+ do not credentials.</para>
+ </listitem>
+
+ <listitem>
+ <para>The
+ <classname>oai.viewer.restful.viewer.authentication.AuthenticationSessionLookupStrategyTrusted</classname>
+ implementation ensures that an (exploration) session is always
+ present (if a session isn't available from the default
+ implementation).</para>
+ </listitem>
+ </itemizedlist>
+
+ <para> -
+ <classname>AuthenticationSessionLookupStrategyParams</classname> in
+ the package
<classname>org.starobjects.restful.viewer.authentication</classname>
- - is responsible for looking up credentials using the username and
- password parameters. Once validated, it also binds the results to
- the <classname>HttpSession</classname> so that future interactions
- do not credentials.</para>
+ - </para>
+
+ <para>In both cases these can be configured using:</para>
+
+ <programlisting><filter>
+ <filter-name>IsisSessionFilter</filter-name>
+ <filter-class>org.apache.isis.runtimes.dflt.webapp.IsisSessionFilter</filter-class>
+ <init-param>
+ <param-name>authenticationSessionLookupStrategy</param-name>
+ <param-value>org.apache.isis.viewer.restful.viewer.authentication.AuthenticationSessionLookupStrategyTrusted</param-value>
+ </init-param>
+</filter></programlisting>
</listitem>
<listitem>
- <para>If you lookup strategy implementation delegates to the Naked
- Objects authentication manager (recommended), you might also want to
- change the Naked Objects'
- <classname>AuthenticationManager</classname> implementation itself.
- This is done using the
- <varname>nakedobjects.authentication</varname> key in
- <filename>nakedobjects.properties</filename>:</para>
+ <para>Alternatively, you can change the implementation of
+ <classname>AuthenticationManager</classname> that
+ <emphasis>Isis</emphasis>' delegates to. This is done using the
+ <varname>isis.authentication</varname> key in
+ <filename>isis.properties</filename>:</para>
- <programlisting>isis.authentication=com.mycompany.nakedobjects.authentication.MyAuthenticationManagerInstaller</programlisting>
+ <programlisting>isis.authentication=com.mycompany.isis.authentication.MyAuthenticationManagerInstaller</programlisting>
</listitem>
</itemizedlist>
<para>In the future there will doubtless be standardized (WS-* style)
approaches for RESTful authenticatication, but the above should provide
enough flexibility in the meantime.</para>
+
+ <note>
+ <para>Note that the archetype explicitly specifies the authentication
+ mechanism as no-op.</para>
+ </note>
</sect1>
<sect1>
<title>Runtime / Persistence</title>
- <para></para>
+ <para>The persistence mechanism (aka object store) is determined using
+ isis.persistence key in isis.properties. For example, to use the XML
+ object store, you would specify:</para>
+
+ <programlisting>isis.persistor=xml</programlisting>
+
+ <para><note>
+ <para>Note that the archetype explicitly specifies the object store
+ as in-memory.</para>
+ </note></para>
</sect1>
</chapter>
</book>
Modified: incubator/isis/trunk/viewer/restful/viewer/src/main/java/org/apache/isis/viewer/restful/viewer/authentication/AuthenticationSessionLookupStrategyParams.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/restful/viewer/src/main/java/org/apache/isis/viewer/restful/viewer/authentication/AuthenticationSessionLookupStrategyParams.java?rev=1101841&r1=1101840&r2=1101841&view=diff
==============================================================================
--- incubator/isis/trunk/viewer/restful/viewer/src/main/java/org/apache/isis/viewer/restful/viewer/authentication/AuthenticationSessionLookupStrategyParams.java (original)
+++ incubator/isis/trunk/viewer/restful/viewer/src/main/java/org/apache/isis/viewer/restful/viewer/authentication/AuthenticationSessionLookupStrategyParams.java Wed May 11 11:47:45 2011
@@ -27,6 +27,8 @@ import org.apache.isis.core.runtime.auth
import org.apache.isis.runtimes.dflt.runtime.system.context.IsisContext;
import org.apache.isis.runtimes.dflt.webapp.auth.AuthenticationSessionLookupStrategyDefault;
+import com.google.common.base.Strings;
+
public class AuthenticationSessionLookupStrategyParams extends AuthenticationSessionLookupStrategyDefault {
@Override
@@ -40,7 +42,7 @@ public class AuthenticationSessionLookup
final String user = httpServletRequest.getParameter("user");
final String password = httpServletRequest.getParameter("password");
- if (user == null || password == null) {
+ if (Strings.isNullOrEmpty(user) || Strings.isNullOrEmpty(password)) {
return null;
}
final AuthenticationRequestPassword request = new AuthenticationRequestPassword(user, password);
Modified: incubator/isis/trunk/viewer/restful/viewer/src/main/java/org/apache/isis/viewer/restful/viewer/resources/ResourceAbstract.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/restful/viewer/src/main/java/org/apache/isis/viewer/restful/viewer/resources/ResourceAbstract.java?rev=1101841&r1=1101840&r2=1101841&view=diff
==============================================================================
--- incubator/isis/trunk/viewer/restful/viewer/src/main/java/org/apache/isis/viewer/restful/viewer/resources/ResourceAbstract.java (original)
+++ incubator/isis/trunk/viewer/restful/viewer/src/main/java/org/apache/isis/viewer/restful/viewer/resources/ResourceAbstract.java Wed May 11 11:47:45 2011
@@ -135,7 +135,7 @@ public abstract class ResourceAbstract {
final Element div = xhtmlRenderer.div_p("Logged in as", null);
final Element ul = xhtmlRenderer.ul(HtmlClass.SESSION);
- ul.appendChild(xhtmlRenderer.li_a("/user", getSession().getUserName(), "user", "resource", HtmlClass.USER));
+ ul.appendChild(xhtmlRenderer.li_a("user", getSession().getUserName(), "user", "resource", HtmlClass.USER));
div.appendChild(ul);
return div;
@@ -146,10 +146,10 @@ public abstract class ResourceAbstract {
final Element ul = xhtmlRenderer.ul(HtmlClass.RESOURCES);
- ul.appendChild(xhtmlRenderer.li_a("/services", "Services", "services", "resources", HtmlClass.RESOURCE));
- ul.appendChild(xhtmlRenderer.li_a("/specs", "Specifications (MetaModel)", "specs", "resources",
+ ul.appendChild(xhtmlRenderer.li_a("services", "Services", "services", "resources", HtmlClass.RESOURCE));
+ ul.appendChild(xhtmlRenderer.li_a("specs", "Specifications (MetaModel)", "specs", "resources",
HtmlClass.RESOURCE));
- ul.appendChild(xhtmlRenderer.li_a("/user", "User (Security)", "user", "resources", HtmlClass.RESOURCE));
+ ul.appendChild(xhtmlRenderer.li_a("user", "User (Security)", "user", "resources", HtmlClass.RESOURCE));
div.appendChild(ul);
return div;
Modified: incubator/isis/trunk/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/edit/FieldFactory.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/edit/FieldFactory.java?rev=1101841&r1=1101840&r2=1101841&view=diff
==============================================================================
--- incubator/isis/trunk/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/edit/FieldFactory.java (original)
+++ incubator/isis/trunk/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/edit/FieldFactory.java Wed May 11 11:47:45 2011
@@ -21,10 +21,10 @@ package org.apache.isis.viewer.scimpi.di
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.facets.help.HelpFacet;
+import org.apache.isis.core.metamodel.facets.maxlen.MaxLengthFacet;
import org.apache.isis.core.metamodel.facets.multiline.MultiLineFacet;
import org.apache.isis.core.metamodel.facets.object.parseable.ParseableFacet;
-import org.apache.isis.core.metamodel.facets.propparam.maxlength.MaxLengthFacet;
-import org.apache.isis.core.metamodel.facets.typicallength.TypicalLengthFacet;
+import org.apache.isis.core.metamodel.facets.typicallen.TypicalLengthFacet;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
Modified: incubator/isis/trunk/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.java?rev=1101841&r1=1101840&r2=1101841&view=diff
==============================================================================
--- incubator/isis/trunk/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.java (original)
+++ incubator/isis/trunk/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.java Wed May 11 11:47:45 2011
@@ -19,8 +19,8 @@
package org.apache.isis.viewer.wicket.ui.components.scalars;
-import org.apache.isis.core.metamodel.facets.propparam.maxlength.MaxLengthFacet;
-import org.apache.isis.core.metamodel.facets.typicallength.TypicalLengthFacet;
+import org.apache.isis.core.metamodel.facets.maxlen.MaxLengthFacet;
+import org.apache.isis.core.metamodel.facets.typicallen.TypicalLengthFacet;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.viewer.wicket.model.models.ScalarModel;
import org.apache.wicket.AttributeModifier;
Modified: incubator/isis/trunk/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldParseableAbstract.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldParseableAbstract.java?rev=1101841&r1=1101840&r2=1101841&view=diff
==============================================================================
--- incubator/isis/trunk/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldParseableAbstract.java (original)
+++ incubator/isis/trunk/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldParseableAbstract.java Wed May 11 11:47:45 2011
@@ -19,7 +19,7 @@
package org.apache.isis.viewer.wicket.ui.components.scalars;
-import org.apache.isis.core.metamodel.facets.propparam.maxlength.MaxLengthFacet;
+import org.apache.isis.core.metamodel.facets.maxlen.MaxLengthFacet;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.viewer.wicket.model.models.ScalarModel;
import org.apache.wicket.markup.html.form.TextField;