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 2015/04/30 18:59:29 UTC

[02/19] isis git commit: ISIS-1133: reorganizing some of the new adocs; developing script for instant local rebuild / preview.

http://git-wip-us.apache.org/repos/asf/isis/blob/90f26cf6/adocs/documentation/src/main/asciidoc/user-guide/user-guide-reference-web-xml.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/user-guide/user-guide-reference-web-xml.adoc b/adocs/documentation/src/main/asciidoc/user-guide/user-guide-reference-web-xml.adoc
deleted file mode 100644
index bc6da88..0000000
--- a/adocs/documentation/src/main/asciidoc/user-guide/user-guide-reference-web-xml.adoc
+++ /dev/null
@@ -1,8 +0,0 @@
-= web.xml Configuration
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR  CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
-:_basedir: ../
-:_imagesdir: images/
-
-IMPORTANT: TODO
-
-

http://git-wip-us.apache.org/repos/asf/isis/blob/90f26cf6/adocs/documentation/src/main/asciidoc/user-guide/user-guide-reference.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/user-guide/user-guide-reference.adoc b/adocs/documentation/src/main/asciidoc/user-guide/user-guide-reference.adoc
deleted file mode 100644
index caea6de..0000000
--- a/adocs/documentation/src/main/asciidoc/user-guide/user-guide-reference.adoc
+++ /dev/null
@@ -1,25 +0,0 @@
-= Reference
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR  CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
-:_basedir: ../
-:_imagesdir: images/
-
-IMPORTANT: TODO
-
-include::user-guide-reference-recognized-methods.adoc[leveloffset=+1]
-
-include::user-guide-reference-recognized-annotations.adoc[leveloffset=+1]
-
-include::user-guide-reference-recognized-configuration-properties.adoc[leveloffset=+1]
-
-include::user-guide-reference-domain-services.adoc[leveloffset=+1]
-
-include::user-guide-reference-value-types.adoc[leveloffset=+1]
-
-include::user-guide-reference-applib-utility-classes.adoc[leveloffset=+1]
-
-include::user-guide-reference-convenience-superclasses.adoc[leveloffset=+1]
-
-include::user-guide-reference-cmd-line-args.adoc[leveloffset=+1]
-
-include::user-guide-reference-web-xml.adoc[leveloffset=+1]
-

http://git-wip-us.apache.org/repos/asf/isis/blob/90f26cf6/adocs/documentation/src/main/asciidoc/user-guide/user-guide-restful-viewer.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/user-guide/user-guide-restful-viewer.adoc b/adocs/documentation/src/main/asciidoc/user-guide/user-guide-restful-viewer.adoc
deleted file mode 100644
index 460c570..0000000
--- a/adocs/documentation/src/main/asciidoc/user-guide/user-guide-restful-viewer.adoc
+++ /dev/null
@@ -1,35 +0,0 @@
-= Restful Viewer
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR  CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
-:_basedir: ../
-:_imagesdir: images/
-
-IMPORTANT: TODO
-
-## Features
-
-### Restful Objects Specification
-### Pretty printing
-
-
-
-## Configuration
-
-### Honor UI hints
-
-### Suppressing elements of the representations
-
-### Simplified object representation
-
-
-
-## Extending the viewer
-
-Discussed in <<Extending the Restful viewer>>
-
-
-
-## Hints and Tips
-
-### Using Chrome Tools
-
-### AngularJS Tips
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/90f26cf6/adocs/documentation/src/main/asciidoc/user-guide/user-guide-testing-bdd-integ-test-support.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/user-guide/user-guide-testing-bdd-integ-test-support.adoc b/adocs/documentation/src/main/asciidoc/user-guide/user-guide-testing-bdd-integ-test-support.adoc
deleted file mode 100644
index 714abc5..0000000
--- a/adocs/documentation/src/main/asciidoc/user-guide/user-guide-testing-bdd-integ-test-support.adoc
+++ /dev/null
@@ -1,7 +0,0 @@
-= BDD/Integ Test Support
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR  CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
-:_basedir: ../
-:_imagesdir: images/
-
-IMPORTANT: TODO
-

http://git-wip-us.apache.org/repos/asf/isis/blob/90f26cf6/adocs/documentation/src/main/asciidoc/user-guide/user-guide-testing-fake-data.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/user-guide/user-guide-testing-fake-data.adoc b/adocs/documentation/src/main/asciidoc/user-guide/user-guide-testing-fake-data.adoc
deleted file mode 100644
index a31b65b..0000000
--- a/adocs/documentation/src/main/asciidoc/user-guide/user-guide-testing-fake-data.adoc
+++ /dev/null
@@ -1,11 +0,0 @@
-= Fake Data
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR  CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
-:_basedir: ../
-:_imagesdir: images/
-
-IMPORTANT: TODO
-
-WARN: Isis Addons, not ASF.
-
-link:https://github.com/isisaddons/isis-module-fakedata
-

http://git-wip-us.apache.org/repos/asf/isis/blob/90f26cf6/adocs/documentation/src/main/asciidoc/user-guide/user-guide-testing-fixture-scripts.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/user-guide/user-guide-testing-fixture-scripts.adoc b/adocs/documentation/src/main/asciidoc/user-guide/user-guide-testing-fixture-scripts.adoc
deleted file mode 100644
index d4d3ffe..0000000
--- a/adocs/documentation/src/main/asciidoc/user-guide/user-guide-testing-fixture-scripts.adoc
+++ /dev/null
@@ -1,65 +0,0 @@
-= Fixture Scripts
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR  CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
-:_basedir: ../
-:_imagesdir: images/
-
-IMPORTANT: TODO
-
-
-## API and Usage
-
-IMPORTANT: TODO
-
-## SudoService (1.9.0-SNAPSHOT)
-
-Sometimes in our fixture scripts we want to perform a business action runnin as a particular user.  This might be for the usual reason - so that our fixtures accurately reflect the reality of the system with all business constraints enforced using the `WrapperFactory` - or more straightforwardly it might be simply that the action depends on the identity of the user invoking the action.
-
-An example of the latter case is in the link:[todoapp]'s `ToDoItem` class:
-
-[source,java]
-.Production code that depends on current user
-----
-public ToDoItem newToDo(
-        @Parameter(regexPattern = "\\w[@&:\\-\\,\\.\\+ \\w]*") @ParameterLayout(named="Description")
-        final String description,
-        @ParameterLayout(named="Category")
-        final Category category,
-        @Parameter(optionality = Optionality.OPTIONAL) @ParameterLayout(named="Subcategory")
-        final Subcategory subcategory,
-        @Parameter(optionality = Optionality.OPTIONAL) @ParameterLayout(named="Due by")
-        final LocalDate dueBy,
-        @Parameter(optionality = Optionality.OPTIONAL) @ParameterLayout(named="Cost")
-        final BigDecimal cost) {
-    return newToDo(description, category, subcategory, currentUserName(), dueBy, cost);
-}
-private String currentUserName() {
-    return container.getUser().getName(); // <1>
-}
-----
-<1> is the current user.
-
-The fixture for this can use the `SudoService` to run a block of code as a specified user:
-
-[source,java]
-.Fixture Script
-----
-final String description = ...
-final Category category = ...
-final Subcategory subcategory = ...
-final LocalDate dueBy = ...
-final BigDecimal cost = ...
-final Location location = ...
-
-toDoItem = sudoService.sudo(username,
-        new Callable<ToDoItem>() {
-            @Override
-            public ToDoItem call() {
-                final ToDoItem toDoItem = wrap(toDoItems).newToDo(
-                        description, category, subcategory, dueBy, cost);
-                wrap(toDoItem).setLocation(location);
-                return toDoItem;
-            }
-        });
-----
-
-Behind the scenes the `SudoService` simply talks to the `DomainObjectContainer` to override the user returned by the `getUser()` API.  It is possible to override both users and roles.

http://git-wip-us.apache.org/repos/asf/isis/blob/90f26cf6/adocs/documentation/src/main/asciidoc/user-guide/user-guide-testing-integ-test-support.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/user-guide/user-guide-testing-integ-test-support.adoc b/adocs/documentation/src/main/asciidoc/user-guide/user-guide-testing-integ-test-support.adoc
deleted file mode 100644
index 399c2e7..0000000
--- a/adocs/documentation/src/main/asciidoc/user-guide/user-guide-testing-integ-test-support.adoc
+++ /dev/null
@@ -1,19 +0,0 @@
-= Integration Test Support
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR  CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
-:_basedir: ../
-:_imagesdir: images/
-
-IMPORTANT: TODO
-
-
-## Introduction
-
-IMPORTANT: TODO
-
-## Using the WrapperFactory
-
-IMPORTANT: TODO
-
-## IsisConfigurationForJdoIntegTests
-
-IMPORTANT: TODO

http://git-wip-us.apache.org/repos/asf/isis/blob/90f26cf6/adocs/documentation/src/main/asciidoc/user-guide/user-guide-testing-unit-test-support.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/user-guide/user-guide-testing-unit-test-support.adoc b/adocs/documentation/src/main/asciidoc/user-guide/user-guide-testing-unit-test-support.adoc
deleted file mode 100644
index fefae90..0000000
--- a/adocs/documentation/src/main/asciidoc/user-guide/user-guide-testing-unit-test-support.adoc
+++ /dev/null
@@ -1,200 +0,0 @@
-= Unit Test Support
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR  CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
-:_basedir: ../
-:_imagesdir: images/
-
-Isis Core provides a number of unit test helpers for you to use (if you wish) to test your domain objects.  To use, update the `pom.xml`:
-
-[source,xml]
-----
-<dependency>
-    <groupId>org.apache.isis.core</groupId>
-    <artifactId>isis-core-unittestsupport</artifactId>
-    <scope>test</scope> // <1>
-</dependency>
-----
-<1> Normally `test`; usual Maven scoping rules apply.
-
-
-
-== ``SortedSet``s Contract Test
-
-This contract test automatically checks that all fields of type `java.util.Collection` are declared as `java.util.SortedSet`. In other words, it precludes either `java.util.List` or `java.util.Set` from being used as a collection.
-
-For example, the following passes the contract test:
-
-[source,java]
-----
-public class Department {
-    private SortedSet<Employee> employees = new TreeSet<Employee>();
-    ...
-}
-----
-
-whereas this would not:
-
-[source,java]
-----
-public class SomeDomainObject {
-    private List<Employee> employees = new ArrayList<Employee>();
-    ...
-}
-----
-
-If using the JDO/DataNucleus Objectstore then we strongly recommend that you implement this test, for several reasons:
-
-* First, ``Set``s align more closely to the relational model than do `List`s. A `List` must have an additional index to specify order.
-
-* Second, `SortedSet` is preferable to `Set` because then the order is well-defined and predictable (to an end user, to the programmer).
-
-The <<ObjectContracts>> utility class substantially simplifies the task of implementing `Comparable` in your domain classes.
-
-* Third, if the relationship is bidirectional then JDO/Objectstore will automatically maintain the relationship. See link:../components/objectstores/jdo/managed-1-to-m-relationships.html[here] for further discussion.
-
-To use the contract test, subclass `SortedSetsContractTestAbstract`, specifying the root package to search for domain classes.
-
-For example:
-
-[source,java]
-----
-public class SortedSetsContractTestAll extends SortedSetsContractTestAbstract {
-
-    public SortedSetsContractTestAll() {
-        super("org.estatio.dom");
-        withLoggingTo(System.out);
-    }
-}
-----
-
-
-
-
-== Injected Services Method Contract Test
-
-It is quite common for some basic services to be injected in a project-specific domain object superclass; for example a `ClockService` might generally be injected everywhere:
-
-[source,java]
-----
-public abstract class EstatioDomainObject {
-    protected ClockService clockService;
-    public void injectClockService(ClockService clockService) {
-        this.clockService = clockService;
-    }
-}
-----
-
-If a subclass inadvertantly overrides this method and provides its own `ClockService` field, then the field in the superclass will never initialized. As you might imagine, ``NullPointerException``s could then arise.
-
-This contract test automatically checks that the `injectXxx(...)` method, to allow for injected services, is not overridable, ie `final`.
-
-To use the contract test, , subclass `SortedSetsContractTestAbstract`, specifying the root package to search for domain classes.
-
-For example:
-
-[source,java]
-----
-public class InjectServiceMethodMustBeFinalContractTestAll extends InjectServiceMethodMustBeFinalContractTestAbstract {
-
-    public InjectServiceMethodMustBeFinalContractTestAll() {
-        super("org.estatio.dom");
-        withLoggingTo(System.out);
-    }
-}
-----
-
-
-
-
-== Bidirectional Contract Test
-
-This contract test automatically checks that bidirectional 1:m or 1:1 associations are being maintained correctly (assuming that they follow the link:../more-advanced-topics/how-to-04-060-How-to-set-up-and-maintain-bidirectional-relationships.html[mutual registration pattern]
-
-TIP: If using the link:../components/objectstores/jdo/about.html[JDO Object Store], then there is generally no need to programmatically maintain 1:m relationships (indeed it may introduce subtle errors). For more details, see link:../components/objectstores/jdo/managed-1-to-m-relationships.html[here]. Check out the link:../intro/resources/editor-templates.html[Eclipse templates] for further guidance.
-
-For example, suppose that `ParentDomainObject` and `ChildDomainObject` have a 1:m relationship (`ParentDomainObject#children` / `ChildDomainObject#parent`), and also `PeerDomainObject` has a 1:1 relationship with itself (`PeerDomainObject#next` / `PeerDomainObject#previous`).
-
-The following will exercise these relationships:
-
-[source,java]
-----
-public class BidirectionalRelationshipContractTestAll
-        extends BidirectionalRelationshipContractTestAbstract {
-
-    public BidirectionalRelationshipContractTestAll() {
-        super("org.apache.isis.core.unittestsupport.bidir",
-                ImmutableMap.<Class<?>,Instantiator>of(
-                    ChildDomainObject.class, new InstantiatorForChildDomainObject(),
-                    PeerDomainObject.class, new InstantiatorSimple(PeerDomainObjectForTesting.class)
-                ));
-        withLoggingTo(System.out);
-    }
-}
-----
-
-The first argument to the constructor scopes the search for domain objects; usually this would be something like `&quot;com.mycompany.dom&quot;`.
-
-The second argument provides a map of `Instantiator` for certain of the domain object types. This has two main purposes. First, for abstract classes, it nominates an alternative concrete class to be instantiated. Second, for classes (such as `ChildDomainObject`) that are `Comparable` and are held in a `SortedSet`), it provides the ability to ensure that different instances are unique when compared against each other. If no `Instantiator` is provided, then the contract test simply attempts to instantiates the class.
-
-If any of the supporting methods (`addToXxx()`, `removeFromXxx()`, `modifyXxx()` or `clearXxx()`) are missing, the relationship is skipped.
-
-To see what's going on (and to identify any skipped relationships), use the `withLoggingTo()` method call. If any assertion fails then the error should be descriptive enough to figure out the problem (without enabling logging).
-
-The example tests can be found https://github.com/apache/isis/tree/master/core/unittestsupport/src/test/java/org/apache/isis/core/unittestsupport/bidir[here].
-
-
-
-
-== JMock Extensions
-
-`JUnitRuleMockery2` is an extension to the JMock's `JunitRuleMockery`, providing a simpler API and also providing support for autowiring.
-
-For example, here we see that the class under test, an instance of `CollaboratingUsingSetterInjection`, is automatically wired up with its `Collaborator`:
-
-[source,java]
-----
-public class JUnitRuleMockery2Test_autoWiring_setterInjection_happyCase {
-
-    @Rule
-    public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_AND_CLASSES);
-
-    @Mock
-    private Collaborator collaborator;
-
-    @ClassUnderTest
-    private CollaboratingUsingSetterInjection collaborating;
-
-    @Test
-    public void wiring() {
-        assertThat(collaborating.collaborator, is(not(nullValue())));
-    }
-}
-----
-
-The example tests can be found https://github.com/apache/isis/tree/master/core/unittestsupport/src/test/java/org/apache/isis/core/unittestsupport/jmocking[here]
-
-
-
-
-== Value Objects Contract Test
-
-The `ValueTypeContractTestAbstract` automatically tests that a custom value type implements `equals()` and `hashCode()` correctly.
-
-For example, testing JDK's own `java.math.BigInteger` can be done as follows:
-
-[source,java]
-----
-public class ValueTypeContractTestAbstract_BigIntegerTest extends ValueTypeContractTestAbstract<BigInteger> {
-
-    @Override
-    protected List<BigInteger> getObjectsWithSameValue() {
-        return Arrays.asList(new BigInteger("1"), new BigInteger("1"));
-    }
-
-    @Override
-    protected List<BigInteger> getObjectsWithDifferentValue() {
-        return Arrays.asList(new BigInteger("2"));
-    }
-}
-----
-
-The example unit tests can be found https://github.com/apache/isis/tree/master/core/unittestsupport/src/test/java/org/apache/isis/core/unittestsupport/value[here].
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/90f26cf6/adocs/documentation/src/main/asciidoc/user-guide/user-guide-testing.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/user-guide/user-guide-testing.adoc b/adocs/documentation/src/main/asciidoc/user-guide/user-guide-testing.adoc
deleted file mode 100644
index bc2c280..0000000
--- a/adocs/documentation/src/main/asciidoc/user-guide/user-guide-testing.adoc
+++ /dev/null
@@ -1,22 +0,0 @@
-= Testing
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR  CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
-:_basedir: ../
-:_imagesdir: images/
-
-IMPORTANT: TODO
-
-include::user-guide-testing-unit-test-support.adoc[leveloffset=+1]
-
-include::user-guide-testing-integ-test-support.adoc[leveloffset=+1]
-
-include::user-guide-testing-bdd-integ-test-support.adoc[leveloffset=+1]
-
-include::user-guide-testing-fixture-scripts.adoc[leveloffset=+1]
-
-include::user-guide-testing-fake-data.adoc[leveloffset=+1]
-
-
-
-
-
-

http://git-wip-us.apache.org/repos/asf/isis/blob/90f26cf6/adocs/documentation/src/main/asciidoc/user-guide/user-guide-troubleshooting-datanucleus-logging.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/user-guide/user-guide-troubleshooting-datanucleus-logging.adoc b/adocs/documentation/src/main/asciidoc/user-guide/user-guide-troubleshooting-datanucleus-logging.adoc
deleted file mode 100644
index b6023b0..0000000
--- a/adocs/documentation/src/main/asciidoc/user-guide/user-guide-troubleshooting-datanucleus-logging.adoc
+++ /dev/null
@@ -1,10 +0,0 @@
-= Trouble Shooting: DataNucleus Logging
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR  CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
-:_basedir: ../
-:_imagesdir: images/
-
-IMPORTANT: TODO
-
-
-
-

http://git-wip-us.apache.org/repos/asf/isis/blob/90f26cf6/adocs/documentation/src/main/asciidoc/user-guide/user-guide-troubleshooting.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/user-guide/user-guide-troubleshooting.adoc b/adocs/documentation/src/main/asciidoc/user-guide/user-guide-troubleshooting.adoc
deleted file mode 100644
index b8a8c22..0000000
--- a/adocs/documentation/src/main/asciidoc/user-guide/user-guide-troubleshooting.adoc
+++ /dev/null
@@ -1,13 +0,0 @@
-= Trouble Shooting
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR  CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
-:_basedir: ../
-:_imagesdir: images/
-
-IMPORTANT: TODO
-
-## JDO/DataNucleus Logging
-
-include::user-guide-troubleshooting-datanucleus-logging.adoc[leveloffset=+1]
-
-
-

http://git-wip-us.apache.org/repos/asf/isis/blob/90f26cf6/adocs/documentation/src/main/asciidoc/user-guide/user-guide-wicket-viewer.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/user-guide/user-guide-wicket-viewer.adoc b/adocs/documentation/src/main/asciidoc/user-guide/user-guide-wicket-viewer.adoc
deleted file mode 100644
index 73fb31c..0000000
--- a/adocs/documentation/src/main/asciidoc/user-guide/user-guide-wicket-viewer.adoc
+++ /dev/null
@@ -1,74 +0,0 @@
-= Wicket Viewer
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR  CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
-:_basedir: ../
-:_imagesdir: images/
-
-IMPORTANT: TODO
-
-## Features/end-user usage
-
-### File upload/download
-
-### Bookmarked pages (sliding panel)
-
-### Recent pages (drop down)
-
-### Hints and copy URL
-
-### User Registration
-
-
-
-## Configuration
-
-### Brand logo
-
-### Suppressing 'sign up'
-
-### Suppressing 'password reset'
-
-### Suppressing 'remember me'
-
-### Number of bookmarked pages
-
-### Stripped Wicket tags
-
-### Disabling modal dialogs
-
-### Showing a theme chooser
-
-### Suppressing header and footer (embedded view)
-
-
-
-## Application-specific Customisation
-
-### Customising the Welcome page
-
-### Customising the About page
-
-### Specifying a default theme
-
-### Tweaking CSS classes
-
-### Custom Javascript
-
-### Auto-refresh page
-
-
-
-## Extending the viewer
-
-Discussed in <<Extending the Wicket viewer>>
-
-
-
-## Isis Add-ons (not ASF)
-
-### Excel download
-
-### Fullcalendar2
-
-### Gmap3
-
-### Wicked charts
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/90f26cf6/adocs/documentation/src/main/asciidoc/user-guide/user-guide.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/user-guide/user-guide.adoc b/adocs/documentation/src/main/asciidoc/user-guide/user-guide.adoc
index 7857ea4..8701fe3 100644
--- a/adocs/documentation/src/main/asciidoc/user-guide/user-guide.adoc
+++ b/adocs/documentation/src/main/asciidoc/user-guide/user-guide.adoc
@@ -4,25 +4,31 @@
 :_imagesdir: images/
 :numbered:
 
-include::user-guide-core-concepts.adoc[leveloffset=+1]
+include::user-guide_core-concepts.adoc[leveloffset=+1]
 
-include::user-guide-how-tos.adoc[leveloffset=+1]
+include::user-guide_getting-started.adoc[leveloffset=+1]
 
-include::user-guide-reference.adoc[leveloffset=+1]
+include::user-guide_how-tos.adoc[leveloffset=+1]
 
-include::user-guide-testing.adoc[leveloffset=+1]
+include::user-guide_reference.adoc[leveloffset=+1]
 
-include::user-guide-wicket-viewer.adoc[leveloffset=+1]
+include::user-guide_testing.adoc[leveloffset=+1]
 
-include::user-guide-restful-viewer.adoc[leveloffset=+1]
+include::user-guide_wicket-viewer.adoc[leveloffset=+1]
 
-include::user-guide-config-and-deployment.adoc[leveloffset=+1]
+include::user-guide_restful-viewer.adoc[leveloffset=+1]
 
-include::user-guide-isis-addons.adoc[leveloffset=+1]
+include::user-guide_background-execution.adoc[leveloffset=+1]
 
-include::user-guide-integrating-with-other-systems.adoc[leveloffset=+1]
+include::user-guide_config-and-deployment.adoc[leveloffset=+1]
 
-include::user-guide-extending.adoc[leveloffset=+1]
+include::user-guide_isis-addons.adoc[leveloffset=+1]
 
-include::user-guide-troubleshooting.adoc[leveloffset=+1]
+include::user-guide_integrating-with-other-systems.adoc[leveloffset=+1]
+
+include::user-guide_extending.adoc[leveloffset=+1]
+
+include::user-guide_troubleshooting.adoc[leveloffset=+1]
+
+include::user-guide_appendices.adoc[leveloffset=+1]
 

http://git-wip-us.apache.org/repos/asf/isis/blob/90f26cf6/adocs/documentation/src/main/asciidoc/user-guide/user-guide_appendices.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/user-guide/user-guide_appendices.adoc b/adocs/documentation/src/main/asciidoc/user-guide/user-guide_appendices.adoc
new file mode 100644
index 0000000..e493fc3
--- /dev/null
+++ b/adocs/documentation/src/main/asciidoc/user-guide/user-guide_appendices.adoc
@@ -0,0 +1,8 @@
+= Appendices
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR  CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+:_basedir: ../
+:_imagesdir: images/
+
+IMPORTANT: TODO
+
+include::user-guide_appendices_dev-env.adoc[leveloffset=+1]

http://git-wip-us.apache.org/repos/asf/isis/blob/90f26cf6/adocs/documentation/src/main/asciidoc/user-guide/user-guide_appendices_dev-env.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/user-guide/user-guide_appendices_dev-env.adoc b/adocs/documentation/src/main/asciidoc/user-guide/user-guide_appendices_dev-env.adoc
new file mode 100644
index 0000000..05afb9b
--- /dev/null
+++ b/adocs/documentation/src/main/asciidoc/user-guide/user-guide_appendices_dev-env.adoc
@@ -0,0 +1,8 @@
+= Setting up a Development Environment
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR  CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+:_basedir: ../
+:_imagesdir: images/
+
+IMPORTANT: TODO
+
+include::user-guide_appendices-dev-env-intellij.adoc[leveloffset=+1]

http://git-wip-us.apache.org/repos/asf/isis/blob/90f26cf6/adocs/documentation/src/main/asciidoc/user-guide/user-guide_appendices_dev-env_intellij.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/user-guide/user-guide_appendices_dev-env_intellij.adoc b/adocs/documentation/src/main/asciidoc/user-guide/user-guide_appendices_dev-env_intellij.adoc
new file mode 100644
index 0000000..2a2b07d
--- /dev/null
+++ b/adocs/documentation/src/main/asciidoc/user-guide/user-guide_appendices_dev-env_intellij.adoc
@@ -0,0 +1,362 @@
+= Setting up IntelliJ IDEA
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR  CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+:_basedir: ../../../
+:_imagesdir: images/
+:toc: right
+
+
+
+## Setting up and Configurating IntelliJ
+
+### Download and Install
+
+WARNING: This doc used IntelliJ Community Edition 14.1.1, with screenshots taken for Windows.  If you're a MacOS user, I'm sure you can adapt :-)
+
+https://www.jetbrains.com/idea/download/[Download] latest version of IntelliJ Community Edition, and install:
+
+Start the wizard, click through the welcome page:
+
+.IntelliJ Installation Wizard - Welcome page
+image::{_imagesdir}appendices/dev-env/intellij010-installing/010-welcome-page.png[width="400px"]
+
+Choose the location to install the IDE:
+
+.IntelliJ Installation Wizard - Choose Location
+image::{_imagesdir}appendices/dev-env/intellij010-installing/020-choose-location.png[width="400px"]
+
+Adjust any installation options as you prefer:
+
+.IntelliJ Installation Wizard - Installation Options
+image::{_imagesdir}appendices/dev-env/intellij010-installing/030-installation-options.png[width="400px"]
+
+and the start menu:
+
+.IntelliJ Installation Wizard - Start Menu Folder
+image::{_imagesdir}appendices/dev-env/intellij010-installing/040-start-menu-folder.png[width="400px"]
+
+and finish up the wizard:
+
+.IntelliJ Installation Wizard - Completing the Wizard
+image::{_imagesdir}appendices/dev-env/intellij010-installing/050-completing.png[width="400px"]
+
+Later on we'll specify the Apache Isis/ASF code style settings, so for now select `I do not want to import settings`:
+
+.IntelliJ Installation Wizard - Import Settings
+image::{_imagesdir}appendices/dev-env/intellij010-installing/060-import-settings-or-not.png[width="400px"]
+
+Finally, if you are young and trendy, set the UI theme to Darcula:
+
+.IntelliJ Installation Wizard Set UI Theme
+image::{_imagesdir}appendices/dev-env/intellij010-installing/070-set-ui-theme.png[width="600px"]
+
+
+
+
+### New Project
+
+In IntelliJ a project can contain multiple modules; these need not be physically located together.  (If you are previously an Eclipse user, you can think of it as similar to an Eclipse workspace).
+
+Start off by creating a new project:
+
+.IntelliJ Create New Project
+image::{_imagesdir}appendices/dev-env/intellij020-create-new-project/010-new-project-create.png[width="400px"]
+
+We want to create a new *Java* project:
+
+.IntelliJ Create New Project - Create a Java project
+image::{_imagesdir}appendices/dev-env/intellij020-create-new-project/020-java-project-setup-jdk.png[width="600px"]
+
+We therefore need to specify the JDK.
+
+NOTE: at the time of writing Isis supports only Java 7; Java 8 is scheduled for support in Isis v1.9.0
+
+
+.IntelliJ Create New Java Project - Select the JDK
+image::{_imagesdir}appendices/dev-env/intellij020-create-new-project/030-java-project-select-jdk.png[width="300px"]
+
+Specify the directory containing the JDK:
+
+.IntelliJ Create New Project - Select the JDK location
+image::{_imagesdir}appendices/dev-env/intellij020-create-new-project/050-name-and-location.png[width="400px"]
+
+Finally allow IntelliJ to create the directory for the new project:
+
+.IntelliJ Create New Project
+image::{_imagesdir}appendices/dev-env/intellij020-create-new-project/060-create-dir.png[width="200px"]
+
+
+
+### Import Settings
+
+Next we need to configure IntelliJ with ASF/Apache Isis' standard templates and coding conventions.  These are bundled as the `settings.jar` JAR file link:resources/appendices/dev-env/intellij/isis-settings.jar[download from the Isis website]).
+
+Import using: `File > Import Settings`, and specify the directory that you have downloaded the file to:
+
+.IntelliJ Import Settings - Specify JAR file
+image::{_imagesdir}appendices/dev-env/intellij030-import-settings/010-settings-import-jar.png[width="400px"]
+
+Select all the (two) categories of settings available in the JAR file:
+
+.IntelliJ Import Settings - Select all categories
+image::{_imagesdir}appendices/dev-env/intellij030-import-settings/020-select-all.png[width="300px"]
+
+And then restart:
+
+.IntelliJ Import Settings - Restart
+image::{_imagesdir}appendices/dev-env/intellij030-import-settings/030-restart.png[width="200px"]
+
+
+
+### Other Settings
+
+There are also some other miscellaneous settings that we recommend that you adjust (though these are not critical).
+
+First, specify an up-to-date Maven installation, using `File > Settings` (or `IntelliJ > Preferences` if on MacOS):
+
+.IntelliJ Other Settings - Maven Installation
+image::{_imagesdir}appendices/dev-env/intellij040-other-settings/010-maven-installation.png[width="600px"]
+
+Still on the Maven settings page, configure as follows:
+
+.IntelliJ Other Settings - Maven Configuration
+image::{_imagesdir}appendices/dev-env/intellij040-other-settings/020-maven-configuration.png[width="600px"]
+
+On the compiler settings page, ensure that `build automatically` is enabled (and optionally `compile independent modules in parallel`):
+
+.IntelliJ Other Settings - Compiler Settings
+image::{_imagesdir}appendices/dev-env/intellij040-other-settings/030-build-automatically.png[width="600px"]
+
+On the auto import page, check the `optimize imports on the fly` and `add unambiguous imports on the fly`
+
+.IntelliJ Other Settings - Auto Import
+image::{_imagesdir}appendices/dev-env/intellij040-other-settings/040-auto-import.png[width="600px"]
+
+
+
+### Plugins
+
+You might also want to set up some additional plugins, using `File > Settings > Plugins` (or equivalently `File > Other Settings > Configure Plugins`).
+
+Recommended are:
+* link:https://plugins.jetbrains.com/plugin/7179?pr=idea[Maven Helper] plugin
++
+Provides better visualization of dependency trees (similar to Eclipse)
+* link:https://github.com/asciidoctor/asciidoctor-intellij-plugin[AsciiDoctor] plugin
++
+Useful if you are doing any authoring of documents.
+
+Some others you might like to explore are:
+
+.IntelliJ Plugins
+image::{_imagesdir}appendices/dev-env/intellij050-some-plugins/020-some-plugins-confirmation.png[width="400px"]
+
+
+
+
+## Importing and Managing Maven Modules
+
+Let's load in some actual code!  We do this by importing the Maven modules.
+
+First up, open up the Maven tool window (`View > Tool Windows > Maven Projects`).  You can then use the 'plus' button to add Maven modules.  In the screenshot you can see we've loaded in Isis core; the modules are listed in the _Maven Projects_ window and corresponding (IntelliJ) modules are shown in the _Projects_ window:
+
+.IntelliJ Maven Module Management - Importing Maven modules
+image::{_imagesdir}appendices/dev-env/intellij100-maven-module-mgmt/010-maven-modules-view.png[width="730px"]
+
+We can then import another module (from some other directory).  For example, here we are importing the Isis Addons' todoapp example:
+
+.IntelliJ Maven Module Management - Importing another Module
+image::{_imagesdir}appendices/dev-env/intellij100-maven-module-mgmt/020-adding-another-module.png[width="400px"]
+
+You should then see the new Maven module loaded in the _Projects_ window and also the _Maven Projects_ window:
+
+.IntelliJ Maven Module Management -
+image::{_imagesdir}appendices/dev-env/intellij100-maven-module-mgmt/030-other-module-added.png[width="730px"]
+
+If any dependencies are already loaded in the project, then IntelliJ will automatically update the CLASSPATH to resolve to locally held modules (rather from `.m2/repository` folder).  So, for example (assuming that the `<version>` is correct, of course), the Isis todoapp will have local dependencies on the Isis core.
+
+You can press F4 (or use `File > Project Structure`) to see the resolved classpath for any of the modules loaded into the project.
+
+If you want to focus on one set of code (eg the Isis todoapp but not Isis core) then you _could_ remove the module; but better is to ignore those modules.  This will remove from the the _Projects_ window but keep them available in the _Maven Projects_ window for when you next want to work on them:
+
+.IntelliJ Maven Module Management - Ignoring Modules
+image::{_imagesdir}appendices/dev-env/intellij100-maven-module-mgmt/040-ignoring-modules.png[width="730px"]
+
+Confirm that it's ok to ignore these modules:
+
+.IntelliJ Maven Module Management - Ignoring Modules (ctd)
+image::{_imagesdir}appendices/dev-env/intellij100-maven-module-mgmt/050-ignoring-modules-2.png[width="300px"]
+
+All being well you should see that the _Projects_ window now only contains the code you are working on.  Its classpath dependencies will be adjusted (eg to resolve to Isis core from `.m2/repository`):
+
+.IntelliJ Maven Module Management - Updated Projects Window
+image::{_imagesdir}appendices/dev-env/intellij100-maven-module-mgmt/060-ignored-modules.png[width="730px"]
+
+
+
+## Running
+
+Let's see how to run both the app and the tests.
+
+### Running the App
+
+Once you've imported your Isis application, we should run it.  We do this by creating a Run configuration, using `Run > Edit Configurations`.
+
+Set up the details as follows:
+
+.IntelliJ Running the App - Run Configuration
+image::{_imagesdir}appendices/dev-env/intellij110-running-the-app/010-run-configuration.png[width="600px"]
+
+We specify the `Main class` to be `org.apache.isis.WebServer`; this is a wrapper around Jetty.  It's possible to pass program arguments to this (eg to automatically install fixtures), but for now leave this blank.
+
+Also note that `Use classpath of module` is the webapp module for your app, and that the `working directory` is `$MODULE_DIR$`.
+
+Next, and most importantly, configure the DataNucleus enhancer to run for your `dom` goal.  This can be done by defining a Maven goal to run before the app:
+
+.IntelliJ Running the App - Datanucleus Enhancer Goal
+image::{_imagesdir}appendices/dev-env/intellij110-running-the-app/020-datanucleus-enhancer-goal.png[width="400px"]
+
+The `-o` flag in the goal means run off-line; this will run faster.
+
+WARNING: if you forget to set up the enhancer goal, or don't run it on the correct (dom) module, then you will get all sorts of errors when you startup.  These usually manifest themselves as class cast exception in DataNucleus.
+
+You should now be able to run the app using `Run > Run Configuration`.  The same configuration can also be used to debug the app if you so need.
+
+
+### Running the Unit Tests
+
+The easiest way to run the unit tests is just to right click on the `dom` module in the _Project Window_, and choose run unit tests.  Hopefully your tests will pass (!).
+
+.IntelliJ Running the App - Unit Tests Run Configuration
+image::{_imagesdir}appendices/dev-env/intellij110-running-the-app/030-running-unit-tests.png[width="600px"]
+
+As a side-effect, this will create a run configuration, very similar to the one we manually created for the main app:
+
+.IntelliJ Running the App - Unit Tests Run Configuration
+image::{_imagesdir}appendices/dev-env/intellij110-running-the-app/040-running-unit-tests-run-configuration.png[width="600px"]
+
+Thereafter, you should run units by selecting this configuration (if you use the right click approach you'll end up with lots of run configurations, all similar).
+
+### Running the Integration Tests
+
+Integration tests can be run in the same way as unit tests, however the `dom` module must also have been enhanced.
+
+One approach is to initially run the tests use the right click on the `integtests` module; the tests will fail because the code won't have been enhanced, but we can then go and update the run configuration to run the datanucleus enhancer goal (same as when running the application):
+
+.IntelliJ Running the App - Integration Tests Run Configuration
+image::{_imagesdir}appendices/dev-env/intellij110-running-the-app/050-running-integration-tests-run-configuration.png[width="600px"]
+
+
+
+## Hints and Tips
+
+### Keyboard Shortcuts Cheat Sheets
+
+You can download 1-page PDFs cheat sheets for IntelliJ's keyboard shortcuts:
+* for link:https://www.jetbrains.com/idea/docs/IntelliJIDEA_ReferenceCard.pdf[Windows]
+* for MacOS:https://www.jetbrains.com/idea/docs/IntelliJIDEA_ReferenceCard_Mac.pdf[MacOS]
+
+Probably the most important shortcut on them is for `Find Action`:
+- `ctrl-shift-A` on Windows
+- `cmd-shift-A` on MacOS.
+
+This will let you search for any action just by typing its name.
+
+### Switching between Tool Windows and Editors
+
+The Tool Windows are the views around the editor (to left, bottom and right).  It's possible to move these around to your preferred locations.
+
+* Use `alt-1` through `alt-9` (or `cmd-1` through `alt-9`) to select the tool windows
+** Press it twice and the tool window will hide itself; so can use to toggle
+* If in the _Project Window_ (say) and hit enter on a file, then it will be shown in the editor, but (conveniently) the focus remains in the tool window.  To switch to the editor, just press `Esc`.
+** If in the _Terminal Window_, you'll need to press `Shift-Esc`.
+* If on the editor and want to locate the file in (say) the _Project Window_, use `alt-F1`.
+* To change the size of any tool window, use `ctrl-shift-arrow`
+
+Using these shortcuts you can easily toggle between the tool windows and the editor, without using the mouse.  Peachy!
+
+### Navigating Around
+
+For all of the following, you don't need to type every letter, typing "ab" will actually search for ".*a.*b.*".
+
+* to open classes or files or methods that you know the name of:
+** `ctrl-N` to open class
+** `ctrl-shift-N` to open a file
+** (bit fiddly this) `ctrl-shift-alt-N` to search for any symbol.
+* open up dialog of recent files: `ctrl-E`
+* search for any file: `shift-shift`
+
+Navigating around:
+* find callers of a method (the call hierarchy): `ctrl-alt-H`
+* find subclasses or overrides: `ctrl-alt-B`
+* find superclasses/interface/declaration: `ctrl-B`
+
+Viewing the structure (ie outline) of a class
+* `ctrl-F12` will pop-up a dialog showing all members
+** hit `ctrl-F12` again to also see inherited members
+
+
+### Editing
+
+* Extend selection using `ctrl-W`
+** and contract it down again using `ctrl-shift-W`
+* to duplicate a line, it's `ctrl-D`
+** if you have some text selected (or even some lines), it'll actually duplicate the entire selection
+* to delete a line, it's `ctrl-X`
+* to move a line up or down: `shift-alt-up` and `shift-alt-down`
+** if you have selected several lines, it'll move them all togethe
+* `ctrl-shift-J` can be handy for joining lines together
+** just hit enter to split them apart (even in string quotes; IntelliJ will "do the right thing")
+
+### Intentions and Code Completion
+
+Massively useful is the "Intentions" popup; IntelliJ tries to guess what you might want to do.  You can activate this using`alt-enter`, whenever you see a lightbulb/tooltip in the margin of the current line.
+
+Code completion usually happens whenever you type '.'.  You can also use `ctrl-space` to bring these up.
+
+In certain circumstances (eg in methods0) you can also type `ctrl-shift-space` to get a smart list of methods etc that you might want to call.  Can be useful.
+
+Last, when invoking a method, use `ctrl-P` to see the parameter types.
+
+
+### Refactoring
+
+Loads of good stuff on the `Refactor` menu; most used are:
+
+* Rename (`shift-F6`)
+* Extract
+** method: `ctrl-alt-M`
+** variable: `ctrl-alt-V`
+* Inline method/variable: `ctrl-alt-N`
+* Change signature
+
+If you can't remember all those shortcuts, just use `ctrl-shift-alt-T` (might want to rebind that to something else!) and get a context-sensitive list of refactorings available for the currently selected object
+
+
+### Troubleshooting
+
+When a Maven module is imported, IntelliJ generates its own project files (suffix `.ipr`), and the application is actually built from that.
+
+Occasionally these don't keep in sync (even if auto-import of Maven modules has been enabled).
+
+To fix the issue, try:
+* reimport module
+* rebuild selected modules/entire project
+* remove and then re-add the project
+* restart, invalidating caches
+* hit StackOverflow (!)
+
+One thing worth knowing; IntelliJ actively scans the filesystem all the time.  It's therefore (almost always) fine to build the app from the Maven command line; IntelliJ will detect the changes and keep in sync.  If you want to force that, use `File > Synchronize`, `ctrl-alt-Y`.
+
+
+## Advanced
+
+In this section are a couple of options that will reduce the length of the change code/build/deploy/review feedback loop.
+
+
+### Setting up Dynamic Reloading
+
+IMPORTANT: TODO
+
+### Setting up JRebel
+
+IMPORTANT: TODO

http://git-wip-us.apache.org/repos/asf/isis/blob/90f26cf6/adocs/documentation/src/main/asciidoc/user-guide/user-guide_background-execution.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/user-guide/user-guide_background-execution.adoc b/adocs/documentation/src/main/asciidoc/user-guide/user-guide_background-execution.adoc
new file mode 100644
index 0000000..981aad8
--- /dev/null
+++ b/adocs/documentation/src/main/asciidoc/user-guide/user-guide_background-execution.adoc
@@ -0,0 +1,40 @@
+= Background Execution
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR  CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+:_basedir: ../
+:_imagesdir: images/
+
+IMPORTANT: TODO
+
+
+
+## JDO Implementation
+
+The `BackgroundCommandExecutionFromBackgroundCommandServiceJdo` is a concrete subclass of link:../../../../reference/non-ui/background-command-execution.html[BackgroundCommandExecution]. The intended use is for the class to be instantiated regularly (eg every 10 seconds) by a scheduler such as http://quartz.org[Quartz]) to poll for `Command`s to be executed, and then execute them.
+
+As you might imagine, this implementation queries for `Command`s persisted by the JDO implementations of link:../services/command-service-jdo.html[CommandService] and link:../services/background-command-service-jdo.html[BackgroundCommandService], using the `BackgroundCommandServiceJdoRepository`.
+
+The diagram below shows the inheritance hierarchy for this class:
+
+.Inheritance Hierarchy for `BackgroundCommandExecution`
+image::http://yuml.me/363b335f[width="600px"]
+
+
+[NOTE]
+----
+In 1.6.0 this implementation was released as part of `org.apache.isis.core:isis-module-command-jdo:1.6.0` and was also released as an http://github.com/isisaddons/isis-module-command[Isis addon] module.
+
+In 1.7.0+ only the http://github.com/isisaddons/isis-module-command[Isis addon] (non-ASF) implementation is released.
+----
+
+
+## Footnote
+
+NOTE: The diagrams on this page were created using http://yuml.me[yuml.me].
+
+[source]
+.DSL (http://yuml.me/edit/363b335f[yuml.me/363b335f]):
+----
+[AbstractIsisSessionTemplate|#doExecute()]^-[BackgroundCommandExecution|#findBackgroundCommandsToExecute()]
+[BackgroundCommandExecution]^-[BackgroundCommandExecutionFromBackgroundCommandServiceJdo]
+[BackgroundCommandExecutionFromBackgroundCommandServiceJdo]->injected[BackgroundCommandServiceJdoRepository|findBackgroundCommandsNotYetStarted()]
+----
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/90f26cf6/adocs/documentation/src/main/asciidoc/user-guide/user-guide_config-and-deployment.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/user-guide/user-guide_config-and-deployment.adoc b/adocs/documentation/src/main/asciidoc/user-guide/user-guide_config-and-deployment.adoc
new file mode 100644
index 0000000..55621d5
--- /dev/null
+++ b/adocs/documentation/src/main/asciidoc/user-guide/user-guide_config-and-deployment.adoc
@@ -0,0 +1,93 @@
+= Configuration and Deployment
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR  CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+:_basedir: ../
+:_imagesdir: images/
+
+IMPORTANT: TODO
+
+## Configuration Files
+
+Isis' own configuration properties are simple key-value pairs, typically held in in the `WEBINF/isis.properties` file.
+
+## Configuring the Webapp
+
+When running an Isis webapp, configuration properties are read from configuration files held in the `WEB-INF` directory.
+
+### Isis configuration
+
+The `WEBINF/isis.properties` file is always read and must exist.
+
+In addition, the following other properties are searched for and if present also read:
+
+* `viewer_wicket.properties` - if the Wicket UI (viewer) is in use
+* `viewer_restfulobjects.properties` - if the Restful Objects REST API (viewer) is in use
+* `viewer.properties` - for any shared UI configuration
+* `persistor_datanucleus.properties` - assuming the JDO/DataNucleus objectstore is in use
+* `persistor.properties` - for any shared objectstore configuration.  This typically is used to hold `JDBC` ``URL``s
+
+### Shiro configuration
+
+`WEB-INF/shiro.ini`
+
+### Configuring Isis to use Shiro
+
+For more on some specific use cases, see <<Configuring Shiro>>
+
+
+### JDO/DataNucleus configuration
+
+Any Isis properties with the prefix `isis.persistor.datanucleus.impl` are passed through directly to the JDO/DataNucleus objectstore (with the prefix stripped off, of course).
+
+DataNucleus will itself search for additional XML mapping files, eg `mappings.jdo`.  These an be used to override any annotations of annotated entities.
+
+## Configuring the Integration Tests
+
+Integration tests are configured programmatically, with a default set of properties to bootstrap the JDO/DataNucleus objectstore using an HSQLDB in-memory database.
+
+These can be overridden by subclassing `IsisConfigurationForJdoIntegTests`.
+
+
+
+## Isis Configuration Properties
+
+### Deployment Types
+
+
+
+## Configuring Shiro
+
+### Configuring Shiro to use LDAP
+
+### Format of Isis Permissions
+
+
+
+## Configuring DataNucleus
+
+### persistence.xml file
+
+### Eagerly Registering Entity Types
+
+### Disabling persistence-by-reachability
+
+### Transaction Management
+
+
+## Deployment
+
+### Externalized Configuration
+
+### JVM Args
+
+### Using a JNDI Datasource
+
+
+
+## NoSQL Support
+
+### Deploying on the Google App Engine
+
+### Using Neo4J
+
+
+

http://git-wip-us.apache.org/repos/asf/isis/blob/90f26cf6/adocs/documentation/src/main/asciidoc/user-guide/user-guide_core-concepts.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/user-guide/user-guide_core-concepts.adoc b/adocs/documentation/src/main/asciidoc/user-guide/user-guide_core-concepts.adoc
new file mode 100644
index 0000000..80a0b03
--- /dev/null
+++ b/adocs/documentation/src/main/asciidoc/user-guide/user-guide_core-concepts.adoc
@@ -0,0 +1,20 @@
+= Core Concepts
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR  CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+:_basedir: ../
+:_imagesdir: images/
+
+IMPORTANT: TODO
+
+include::user-guide_core-concepts-principles.adoc[leveloffset=+1]
+
+include::user-guide_core-concepts-apache-isis-vs.adoc[leveloffset=+1]
+
+include::user-guide_core-concepts-building-blocks.adoc[leveloffset=+1]
+
+include::user-guide_core-concepts-framework-provided-services.adoc[leveloffset=+2]
+
+
+## Honouring the Single Responsibility Principle
+
+### Behaviourally Complete vs Contributions
+

http://git-wip-us.apache.org/repos/asf/isis/blob/90f26cf6/adocs/documentation/src/main/asciidoc/user-guide/user-guide_core-concepts_apache-isis-vs.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/user-guide/user-guide_core-concepts_apache-isis-vs.adoc b/adocs/documentation/src/main/asciidoc/user-guide/user-guide_core-concepts_apache-isis-vs.adoc
new file mode 100644
index 0000000..c64344a
--- /dev/null
+++ b/adocs/documentation/src/main/asciidoc/user-guide/user-guide_core-concepts_apache-isis-vs.adoc
@@ -0,0 +1,14 @@
+= Apache Isis vs ...
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR  CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+:_basedir: ../
+:_imagesdir: images/
+
+IMPORTANT: TODO
+
+## vs Spring
+
+## vs JEE
+
+## vs Grails
+
+## vs Angular

http://git-wip-us.apache.org/repos/asf/isis/blob/90f26cf6/adocs/documentation/src/main/asciidoc/user-guide/user-guide_core-concepts_building-blocks.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/user-guide/user-guide_core-concepts_building-blocks.adoc b/adocs/documentation/src/main/asciidoc/user-guide/user-guide_core-concepts_building-blocks.adoc
new file mode 100644
index 0000000..50044a0
--- /dev/null
+++ b/adocs/documentation/src/main/asciidoc/user-guide/user-guide_core-concepts_building-blocks.adoc
@@ -0,0 +1,234 @@
+= Building Blocks
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR  CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+:_basedir: ../
+:_imagesdir: images/
+
+IMPORTANT: TODO
+
+## A MetaModel with Explicit and Inferred Semantics
+
+* use of annotations
+** reuse JEE annotations where possible
+* layout hints are overridable, to avoid restarting the app/speed up feedback
+
+
+## Domain Objects and Domain Services
+
+* domain model
+** domain objects
+*** domain entity
+*** view model
+** domain service
+** value type
+
+Anything else can be (should be) ignored by annotating with `@Programmatic`.
+
+
+
+## Properties, Collections and Actions
+
+
+
+## Domain Entities vs View Models
+
+`@DomainObject(nature=...)`
+
+
+
+## Domain Services
+
+Domain services consist of a set of logically grouped actions, and as such follow the same conventions as for entities. However, a service cannot have (persisted) properties, nor can it have (persisted) collections.
+
+Domain services are instantiated once and once only by the framework, and are used to centralize any domain logic that does not logically belong in a domain entity or value. Isis will automatically inject services into every domain entity that requests them, and into each other.
+
+For convenience you can inherit from AbstractService or one of its subclasses, but this is not mandatory.
+
+### Domain Services vs View Services
+
+`@DomainService(nature=...)`
+
+.Factories, Repositories and Services
+****
+A distinction is sometimes made between a factory (that creates object) and a repository (that is used to find existing objects).  You will find them discussed separately in Evans' link:Domain Driven Design[http://books.google.com/books/about/Domain_Driven_Design.html?id=hHBf4YxMnWMC], for example.
+
+In Apache Isis these are all implemented as domain services.  Indeed, it is quite common to have a domain service that acts as both a factory and a repository.
+****
+
+## Value Objects (Primitives)
+
+
+
+## Contributions
+
+
+
+## Event Bus
+
+
+
+
+
+
+=== Registering domain services
+
+As noted link:../../how-tos/how-to-09-010-How-to-register-domain-services,-repositories-and-factories.html[elsewhere], domain services (which includes repositories and factories) should be registered in the `isis.properties` configuration file, under `isis.services` key (a comma-separated list):
+
+For example:
+
+[source]
+----
+isis.services = com.mycompany.myapp.employee.Employees\,
+                com.mycompany.myapp.claim.Claims\,
+                ...
+----
+
+This will then result in the framework instantiating a single instance of each of the services listed.
+
+If all services reside under a common package, then the `isis.services.prefix` can specify this prefix:
+
+[source]
+----
+isis.services.prefix = com.mycompany.myapp
+isis.services = employee.Employees,\
+                claim.Claims,\
+                ...
+----
+
+This is quite rare, however; you will often want to use default implementations of domain services that are provided by the framework and so will not reside under this prefix.
+
+Examples of framework-provided services (as defined in the applib) can be found referenced from the main link:../../documentation.html[documentation] page. They include clock, auditing, publishing, exception handling, view model support, snapshots/mementos, and user/application settings management.
+
+=== Service scopes
+
+By default all domain services are considered to be singletons, and thread-safe.
+
+Sometimes though a service's lifetime is applicable only to a single request; in other words it is request-scoped.
+
+The CDI annotation `@javax.enterprise.context.RequestScoped` is used to indicate this fact:
+
+[source]
+----
+ @javax.enterprise.context.RequestScoped
+ public class MyService extends AbstractService {
+     ...
+ }
+----
+
+The framework provides a number of request-scoped services; these can be found referenced from the main link:../../documentation.html[documentation] page. They include scratchpad service, query results caching, and support for co-ordinating bulk actions.
+
+=== (Suppressing) contributed actions
+
+Any n-parameter action provided by a service will automatically be contributed to the list of actions for each of its (entity) parameters. From the viewpoint of the entity the action is called a contributed action.
+
+For example, given a service:
+
+[source]
+----
+public interface Library {
+    public Loan borrow(Loanable l, Borrower b);
+}
+----
+
+and the entities:
+
+[source]
+----
+public class Book implements Loanable { ... }y
+----
+
+and
+
+[source]
+----
+public class LibraryMember implements Borrower { ... }
+----
+
+then the `borrow(...)` action will be contributed to both `Book` and to `LibraryMember`.
+
+This is an important capability because it helps to decouple the concrete classes from the services.
+
+If necessary, though, this behaviour can be suppressed by annotating the service action with `@org.apache.isis.applib.annotations.NotContributed`.
+
+For example:
+
+[source]
+----
+public interface Library {
+    @NotContributed
+    public Loan borrow(Loanable l, Borrower b);
+}
+----
+
+If annotated at the interface level, then the annotation will be inherited by every concrete class. Alternatively the annotation can be applied at the implementation class level and only apply to that particular implementation.
+
+Note that an action annotated as being `@NotContributed` will still appear in the service menu for the service. If an action should neither be contributed nor appear in service menu items, then simply annotate it as `@Hidden`.
+
+=== (Suppressing) service menu items
+
+By default every action of a service (by which we also mean repositories and factories) will be rendered in the viewer, eg as a menu item for that service menu. This behaviour can be suppressed by annotating the action using `@org.apache.isis.applib.annotations.NotInServiceMenu`.
+
+For example:
+
+[source]
+----
+public interface Library {
+    @NotInServiceMenu
+    public Loan borrow(Loanable l, Borrower b);
+}
+----
+
+Note that an action annotated as being `@NotInServiceMenu` will still be contributed. If an action should neither be contributed nor appear in service menu items, then simply annotate it as `@Hidden`.
+
+Alternatively, this can be performed using a supporting method:
+
+[source]
+----
+public class LibraryImpl implements Library {
+    public Loan borrow(Loanable l, Borrower b) { ... }
+    public boolean notInServiceMenuBorrow() { ... }
+}
+----
+
+=== (Suppressing) service menus
+
+If none of the service menu items should appear, then the service itself should be annotated as `@Hidden`.
+
+For example:
+
+[source]
+----
+@Hidden
+public interface EmailService {
+    public void sendEmail(String to, String from, String subject, String body);
+    public void forwardEmail(String to, String from, String subject, String body);
+}
+----
+
+=== Initializing Services
+
+Services can optionally declare lifecycle callbacks to initialize them (when the app is deployed) and to shut them down (when the app is undeployed).
+
+An Isis session _is_ available when initialization occurs (so services can interact with the object store, for example).
+
+==== Initialization
+
+The framework will call any `public` method annotated with `@javax.annotation.PostConstruct` and with either no arguments of an argument of type `Map&lt;String,String&gt;`:
+
+or
+
+In the latter case, the framework passes in the configuration (`isis.properties` and any other component-specific configuration files).
+
+==== Shutdown
+
+Shutdown is similar; the framework will call any method annotated with `@javax.annotation.PreDestroy`:
+
+=== The getId() method
+
+Optionally, a service may provide a `getId()` method:
+
+[source]
+----
+public String getId()
+----
+
+This method returns a logical identifier for a service, independent of its implementation. Currently it used only by perspectives, providing a label by which to record the services that are available for a current user's profile. <!--See ? for more about profiles and perspectives.-->

http://git-wip-us.apache.org/repos/asf/isis/blob/90f26cf6/adocs/documentation/src/main/asciidoc/user-guide/user-guide_core-concepts_framework-provided-services.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/user-guide/user-guide_core-concepts_framework-provided-services.adoc b/adocs/documentation/src/main/asciidoc/user-guide/user-guide_core-concepts_framework-provided-services.adoc
new file mode 100644
index 0000000..36011ea
--- /dev/null
+++ b/adocs/documentation/src/main/asciidoc/user-guide/user-guide_core-concepts_framework-provided-services.adoc
@@ -0,0 +1,82 @@
+= Framework-provided Services
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR  CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+:_basedir: ../
+:_imagesdir: images/
+
+IMPORTANT: TODO
+
+## API vs SPI
+
+Most framework domain services are API: they exist to provide support functionality to the application's domain objects and services.  In this case an implementation of the service will be available, either by Apache Isis itself or by Isis Addons (non ASF).
+
+Some framework domain services are SPI: they exist primarily so that the application can influence the framework's behaviour.  In these cases there is (usually) no default implementation; it is up to the application to provide an implementation.
+
+## Autoregistration of Domain services
+
+Where a domain service has an implementation, it is (almost always) automatically registered just by virtue of being on the `CLASSPATH`.
+
+The one exception is <<ExceptionRecognizer>>.
+
+It is possible to replacing automatically-registered domain services.
+
+
+## Overview of Domain Services
+
+Unless indicated as SPI, each of the following has an implementation in Isis core.
+
+### `DomainObjectContainer`
+
+### `ClockService`
+
+### `IsisSupportJdo`
+
+### `ExceptionRecognizer`
+
+### `WrapperFactory`
+
+### `EventBusService`
+
+### Commands/Background
+
+#### `CommandContext`
+
+#### `BackgroundService`
+
+### Information Sharing
+
+#### `ScratchPad`
+
+#### `ActionInvocationContext`
+
+#### `QueryResultsCache`
+
+### `EmailService`
+
+### UserManagement
+
+#### `UserProfileService` (SPI)
+
+#### `UserRegistrationService` (SPI)
+
+#### `EmailNotificationService`
+
+
+### Bookmarks and Mementos
+
+#### `BookmarkService`
+
+#### `MementoService`
+
+#### `DeepLinkService`
+
+#### `XmlSnapshotService`
+
+
+
+
+
+
+
+
+
+

http://git-wip-us.apache.org/repos/asf/isis/blob/90f26cf6/adocs/documentation/src/main/asciidoc/user-guide/user-guide_core-concepts_principles.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/user-guide/user-guide_core-concepts_principles.adoc b/adocs/documentation/src/main/asciidoc/user-guide/user-guide_core-concepts_principles.adoc
new file mode 100644
index 0000000..19fe21d
--- /dev/null
+++ b/adocs/documentation/src/main/asciidoc/user-guide/user-guide_core-concepts_principles.adoc
@@ -0,0 +1,73 @@
+= Principles
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR  CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+:_basedir: ../
+:_imagesdir: images/
+
+IMPORTANT: TODO
+
+## Domain-Driven Design
+
+### Ubiquitous Language
+
+
+
+## Naked Objects Pattern
+
+[TIP]
+.Object Interface Mapping
+====
+Just as an ORM (such as link:http://datanucleus.org[DataNucleus] or link:http:hibernate.org[Hibernate]) maps domain entities to a database, you can think of Naked Objects as an OIM - mapping domain objects to a user interface.
+====
+
+* multiple UIs.
+
+
+
+## Hexagonal Architecture
+
+Originally described by Alistair Cockburn, the link:http://alistair.cockburn.us/Hexagonal+architecture[Hexagonal Architecture] ...
+
+[TIP]
+====
+The hexagonal architecture is also known as the link:http://c2.com/cgi/wiki?PortsAndAdaptersArchitecture:[Ports and Adapters] architecture or (less frequently) as the link:http://jeffreypalermo.com/blog/the-onion-architecture-part-1/[Onion] architecture.
+====
+
+
+
+## Decoupled Modules
+
+Using:
+
+* dependency injection of services
+* OO design techniques, eg dependency inversion principle
+* an in-memory event bus
+* applib
+
+.Aspect Oriented
+****
+Although not implemented using an aspect-oriented language such as AspectJ, Isis takes considerable inspiration from AOP concepts.
+
+For example, the UI visualization automatically provided by Isis can be thought of (and is!) treating the UI as a cross-cutting concern.
+
+Isis' also has support for traits/mixins through its <<Contributions>>.  This allows functionality from one class (a domain service) to be rendered as if it belongs to another (a domain object).
+
+
+* aspect-oriented design, such as traits/mix-ins (see <<Contributions>>) and interceptors and UI visualization as a cross-cutting concern
+****
+
+
+
+## Focuses on its Key Responsibilities
+
+* Isis is at heart a metamodel with runtime, and coordinates interations using an AOP set of principles
+* Apache Isis vs Isis Addons
+* Apache Isis vs Shiro vs DataNucleus
+
+
+
+## Testable Applications
+
+While Apache Isis can be used (very effectively) for simple CRUD-style applications, it is also intended to be used for complex business domains.  Ensuring that the business logic in such applications is correct means that the framework must (and does) provide robust testing support, both for developer-level unit testing and business-level (end-to-end) integration testing.
+
+
+

http://git-wip-us.apache.org/repos/asf/isis/blob/90f26cf6/adocs/documentation/src/main/asciidoc/user-guide/user-guide_extending.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/user-guide/user-guide_extending.adoc b/adocs/documentation/src/main/asciidoc/user-guide/user-guide_extending.adoc
new file mode 100644
index 0000000..ca54f2d
--- /dev/null
+++ b/adocs/documentation/src/main/asciidoc/user-guide/user-guide_extending.adoc
@@ -0,0 +1,25 @@
+= Extending
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR  CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+:_basedir: ../
+:_imagesdir: images/
+
+IMPORTANT: TODO
+
+include::user-guide_extending-programming-model.adoc[leveloffset=+1]
+
+
+
+## Extending the Wicket viewer
+
+### Writing a custom theme
+
+### Replacing page elements
+
+### Custom pages
+
+
+
+
+## Extending the Restful viewer
+
+### Custom Representations
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/90f26cf6/adocs/documentation/src/main/asciidoc/user-guide/user-guide_extending_programming-model.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/user-guide/user-guide_extending_programming-model.adoc b/adocs/documentation/src/main/asciidoc/user-guide/user-guide_extending_programming-model.adoc
new file mode 100644
index 0000000..c1d7d89
--- /dev/null
+++ b/adocs/documentation/src/main/asciidoc/user-guide/user-guide_extending_programming-model.adoc
@@ -0,0 +1,16 @@
+= Extending the Programming Model
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR  CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+:_basedir: ../
+:_imagesdir: images/
+
+IMPORTANT: TODO
+
+## Disallowing deprecated annotations
+
+## Custom validator
+
+## Finetuning the Programming Model
+
+## Layout metadata reader
+
+## Listener to create DB schema objects

http://git-wip-us.apache.org/repos/asf/isis/blob/90f26cf6/adocs/documentation/src/main/asciidoc/user-guide/user-guide_getting-started.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/user-guide/user-guide_getting-started.adoc b/adocs/documentation/src/main/asciidoc/user-guide/user-guide_getting-started.adoc
new file mode 100644
index 0000000..5167a21
--- /dev/null
+++ b/adocs/documentation/src/main/asciidoc/user-guide/user-guide_getting-started.adoc
@@ -0,0 +1,9 @@
+= Getting Started
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR  CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+:_basedir: ../
+:_imagesdir: images/
+
+IMPORTANT: TODO
+
+include::user-guide_getting-started-simpleapp-archetype.adoc[leveloffset=+1]
+

http://git-wip-us.apache.org/repos/asf/isis/blob/90f26cf6/adocs/documentation/src/main/asciidoc/user-guide/user-guide_getting-started_simpleapp-archetype.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/user-guide/user-guide_getting-started_simpleapp-archetype.adoc b/adocs/documentation/src/main/asciidoc/user-guide/user-guide_getting-started_simpleapp-archetype.adoc
new file mode 100644
index 0000000..1decbc9
--- /dev/null
+++ b/adocs/documentation/src/main/asciidoc/user-guide/user-guide_getting-started_simpleapp-archetype.adoc
@@ -0,0 +1,7 @@
+= SimpleApp Archetype
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR  CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+:_basedir: ../../
+:_imagesdir: images/
+
+IMPORTANT: TODO
+

http://git-wip-us.apache.org/repos/asf/isis/blob/90f26cf6/adocs/documentation/src/main/asciidoc/user-guide/user-guide_how-tos.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/user-guide/user-guide_how-tos.adoc b/adocs/documentation/src/main/asciidoc/user-guide/user-guide_how-tos.adoc
new file mode 100644
index 0000000..e3c6487
--- /dev/null
+++ b/adocs/documentation/src/main/asciidoc/user-guide/user-guide_how-tos.adoc
@@ -0,0 +1,39 @@
+= How-tos
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR  CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+:_basedir: ../
+:_imagesdir: images/
+
+IMPORTANT: TODO
+
+include::user-guide_how-tos_class-structure.adoc[leveloffset=+1]
+
+include::user-guide_how-tos_entity-relationships.adoc[leveloffset=+1]
+
+include::user-guide_how-tos_contributed-members.adoc[leveloffset=+1]
+
+include::user-guide_how-tos_derived-members.adoc[leveloffset=+1]
+
+include::user-guide_how-tos_crud.adoc[leveloffset=+1]
+
+include::user-guide_how-tos_ui-hints.adoc[leveloffset=+1]
+
+include::user-guide_how-tos_business-rules.adoc[leveloffset=+1]
+
+include::user-guide_how-tos_drop-downs-and-defaults.adoc[leveloffset=+1]
+
+include::user-guide_how-tos_triggering-events.adoc[leveloffset=+1]
+
+include::user-guide_how-tos_tips-n-tricks.adoc[leveloffset=+1]
+
+include::user-guide_how-tos_error-handling.adoc[leveloffset=+1]
+
+include::user-guide_how-tos_i18n.adoc[leveloffset=+1]
+
+include::user-guide_how-tos_multi-tenancy.adoc[leveloffset=+1]
+
+include::user-guide_how-tos_persistence-lifecycle.adoc[leveloffset=+1]
+
+
+
+
+