<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Naked Objects</title>
	<atom:link href="http://blog.nakedobjects.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.nakedobjects.org</link>
	<description>Ideas and experiences relating to the Naked Objects framework</description>
	<lastBuildDate>Thu, 11 Mar 2010 11:27:27 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Submitting patches</title>
		<link>http://blog.nakedobjects.org/2010/03/11/submitting-patches/</link>
		<comments>http://blog.nakedobjects.org/2010/03/11/submitting-patches/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 11:26:32 +0000</pubDate>
		<dc:creator>rmatthews</dc:creator>
				<category><![CDATA[Naked Objects]]></category>

		<guid isPermaLink="false">http://blog.nakedobjects.org/?p=110</guid>
		<description><![CDATA[Patches for bug fixes, improvements and extension are welcomed and sought by the Naked Objects development team. The process is simple: get the latest code; make your changes; create a patch file; and email it to us. As most development is done within the Eclipse IDE that is the best place to create the patches, [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-weight: normal;font-size: 13px">Patches for bug fixes, improvements and extension are welcomed and sought by the Naked Objects development team. The process is simple: get the latest code; make your changes; create a patch file; and email it to us. As most development is done within the Eclipse IDE that is the best place to create the patches, although patches created in other ways (as long as they following the standard structure) are fine too. We will look at using both Eclipse and Subversion here.</span></p>
<h2>Getting the latest code</h2>
<p>It is important that you make changes against the latest version of the development code so that it easier merge. Code that is easier to merge gets incorporated more quickly.</p>
<p>The latest version of the source can be checked out of the Subversion repository using the following command:</p>
<pre><span id="more-110"></span>$ svn co http://nakedobjects.svn.sourceforge.net/svnroot/nakedobjects/framework/trunk nakedobjects</pre>
<p>or, assuming you have already checked it out, then ensure that it up-to-date:</p>
<pre>$ cd nakedobjects
$ svn up</pre>
<h2>Changing the code</h2>
<p>Make the changes to your local copy ensuring that you use the same coding style and formatting (see <a href="http://nakedobjects.org/framework.html">code style</a> for details and for the location of the Eclipse settings to assist you).</p>
<h2>Creating the patch</h2>
<p>A patch is just a special file that details what files are affected and what the changes are. This way a set of related changes can be grouped together and the size of the file is minimal.</p>
<h3>Creating from within Eclipse</h3>
<p>Creating a patch from within Eclipse can be done easily, but only if you are have one of the Subversion plug-ins installed and the project is shared (see the <tt>Team/Share...</tt> option).</p>
<p>From within Eclipse open up the contextual menu (right-click) on the file, package or project that has been changed and select the <tt>Team/Create Patch...</tt> option. In the dialog (shown below) that comes up specify a <em>descriptive</em> file name and confirm that all the files that are checked are the ones that you want to submit. Press the <tt>Finish</tt> button to create the patch file.</p>
<p><img class="alignnone size-medium wp-image-112" src="http://blog.nakedobjects.org/wp-content/uploads/2010/03/create-patch-dialog-300x262.png" alt="create-patch-dialog" width="300" height="262" /></p>
<h3>Creating using Subversion</h3>
<p>Subversion&#8217;s <tt>diff</tt> command will do a similar thing, but of course you need to use the command line. (You can also use other Subversion clients, such as Tortoise, but you need to find out which menu items correspond to the diff command). Use the following command with a specific project (as shown here), package or file identified to create the patch and redirect the output to a file. Here we are creating a patch for the whole of the runtime project and placing it in the file <tt>fixture-patch.txt</tt>.</p>
<pre>$ svn diff core/runtime &gt; fixture-patch.txt</pre>
<p>NOTE &#8211; when using Subversion&#8217;s diff command only those files that are under Subversion&#8217;s control are included. Specifically new files are not part of that set until they have been added (using <tt>svn add</tt>). So to submit new files either add them with the appropriate <tt>svn</tt> command or submit them separately.</p>
<h3>An example file</h3>
<p>The result of this is a file like this (which has been truncated to save space):</p>
<pre>Index: /home/rcm/no-development/workspace_DEV_4.0/nakedobjects/core/runtime/src/main/java/org/nakedobjects/runtime/fixture/ObjectFixtureService.java
===================================================================
--- /home/rcm/no-development/workspace_DEV_4.0/nakedobjects/core/runtime/src/main/java/org/nakedobjects/runtime/fixture/ObjectFixtureService.java	(revision 14471)
+++ /home/rcm/no-development/workspace_DEV_4.0/nakedobjects/core/runtime/src/main/java/org/nakedobjects/runtime/fixture/ObjectFixtureService.java	(working copy)
@@ -2,10 +2,12 @@

 import java.io.BufferedReader;
 import java.io.File;
+import java.io.FileNotFoundException;
 import java.io.FileReader;
 import java.io.FileWriter;
 import java.io.IOException;
 import java.io.PrintWriter;
+import java.io.Reader;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
@@ -28,6 +30,7 @@
 import org.nakedobjects.metamodel.spec.feature.OneToOneAssociation;
 import org.nakedobjects.metamodel.util.CollectionFacetUtils;
 import org.nakedobjects.runtime.context.NakedObjectsContext;
+import org.nakedobjects.runtime.fixturesinstaller.FixtureException;

 public class ObjectFixtureService {
@@ -55,6 +58,9 @@

         public NakedObject get(String data) {
             int pos = data.indexOf('#');
+            if (pos == -1) {
+                throw new FixtureException("read failed - object spec: " + data);
+            }
             String id = data.substring(pos + 1);
             NakedObject object = idMap.get(id);
             if (object == null) {</pre>
<p>This was produced using Subversion. The file produced by Eclipse is the same except it has a couple of comments at the top, one of which indicates which project the changes come from.</p>
<h2>Submitting the patch</h2>
<p>Now simply email the patch to us. The email address is <a href="mailto:patches@nakedobjects.org">patches@nakedobjects.org</a>. The subject line should start with the text <em>PATCH:</em> so that they are not picked out as Spam. Attach the files to the email and in the body explain what the patch is for and what changes it makes. This will help the developers assess the patches and apply them quickly. Please also ensure your email address is correct so that we can contact you if necessary.</p>
<p>When we receive a patch we will load it up using Eclipse and can immediately see what changes will be made. After checking the changes they will be applied to the code and checked in. If you have requested a response we will then email you to let you know what change has been applied.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nakedobjects.org/2010/03/11/submitting-patches/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blog by .MOz &#8211; NOF in NetBeans</title>
		<link>http://blog.nakedobjects.org/2010/03/01/blog-by-moz-nof-in-netbeans/</link>
		<comments>http://blog.nakedobjects.org/2010/03/01/blog-by-moz-nof-in-netbeans/#comments</comments>
		<pubDate>Mon, 01 Mar 2010 19:48:26 +0000</pubDate>
		<dc:creator>rmatthews</dc:creator>
				<category><![CDATA[Naked Objects]]></category>

		<guid isPermaLink="false">http://blog.nakedobjects.org/?p=103</guid>
		<description><![CDATA[I&#8217;ve just come across a post that shows how to use Naked Objects with NetBeans &#8211; see How to create a simple Naked Objects Application in NetBeans.  This is great as I and the other developers happen to use Eclipse we don&#8217;t tend to talk much about the other tools that are around; we just don&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just come across a post that shows how to use Naked Objects with NetBeans &#8211; see <a title="Blog posting" href="http://phpcamp.net/toolbar/how-to-create-a-simple-naked-objects-application-in-netbeans" target="_blank">How to create a simple Naked Objects Application in NetBeans</a>.  This is great as I and the other developers happen to use Eclipse we don&#8217;t tend to talk much about the other tools that are around; we just don&#8217;t have any experience with them. So if you are using NetBeans then I encourage you to check out this post and find out how to do it. As one of the comment says, it is possible to use Maven to set up NetBeans for you so hopefully there will a new posting about that soon.</p>
<p>If you are using Naked Objects with other development tools, or using it in ways that are not talked about then please write about it, or contact me at rmatthews at nakedobjects dot org  and I&#8217;ll create a posting for you.  If you do write something, or mention Naked Objects elsewhere, then please let me know so I can add a link to it. Thanks.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nakedobjects.org/2010/03/01/blog-by-moz-nof-in-netbeans/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Using the Eclipse templates</title>
		<link>http://blog.nakedobjects.org/2010/03/01/using-the-eclipse-templates/</link>
		<comments>http://blog.nakedobjects.org/2010/03/01/using-the-eclipse-templates/#comments</comments>
		<pubDate>Mon, 01 Mar 2010 13:03:26 +0000</pubDate>
		<dc:creator>rmatthews</dc:creator>
				<category><![CDATA[Naked Objects]]></category>

		<guid isPermaLink="false">http://blog.nakedobjects.org/?p=88</guid>
		<description><![CDATA[The latest release of Naked Objects (version 4) provides a set of templates for quickly adding snippets to your domain classes, from properties and collections to title and dependencies.
To set up Eclipse so these are available you need to import the template files that are included in the distribution. In both the Ant and Maven based distributions they [...]]]></description>
			<content:encoded><![CDATA[<p>The latest release of Naked Objects (version 4) provides a set of templates for quickly adding snippets to your domain classes, from properties and collections to title and dependencies.</p>
<p>To set up Eclipse so these are available you need to import the template files that are included in the distribution. In both the Ant and Maven based distributions they can be found the following directory:</p>
<pre>resources
|-- ide
|   `-- eclipse
|       |-- launch
|       `-- templates
|           |-- jmock2-templates.xml
|           |-- junit4-templates.xml
|           `-- nakedobjects-templates.xml</pre>
<p>Open up Eclipse&#8217;s preferences dialog (<tt>Windows</tt>/<tt>Preferences</tt>) and navigate to <tt>Java</tt> &#8211; <tt>Editor</tt> - <tt>Template</tt>. Click the <tt>Import</tt> button, browse to the <tt>templates</tt> directory, select the <tt>nakedobjects-templates.xml</tt> file and press OK. A series of templates will be added prefixed with <em>no </em>such as <em>noa</em>, <em>nol</em>, <em>nop</em> etc. Press OK to commit the changes and you are ready to use them.</p>
<p>For example, to insert a property type <em>nop</em> in the editor window within the class declations and press <tt>ctrl-space</tt> to bring up the available templates.</p>
<p><img class="alignnone size-medium wp-image-94" src="http://blog.nakedobjects.org/wp-content/uploads/2010/03/template-list-300x110.png" alt="List of all available templates" width="300" height="110" /></p>
<p><span id="more-88"></span></p>
<p>Each template has a brief description and the template result is shown in the box next to the list. Selecting the template inserts the code into your file at the cursor replacing the template name that you typed.</p>
<p><img class="alignnone size-medium wp-image-93" src="http://blog.nakedobjects.org/wp-content/uploads/2010/03/template-insert-300x134.png" alt="Template insert" width="300" height="134" /></p>
<p>It also highlights the parts that you can change. So in this example, when we type <em>Purchase</em>, tab, <em>Date</em>, tab, and <em>date</em> we end up with a complete property declaration for a Date value that will display with the label <em>Date</em> as we can see below.</p>
<p><img class="alignnone size-medium wp-image-95" src="http://blog.nakedobjects.org/wp-content/uploads/2010/03/template-complete-300x194.png" alt="The edited result" width="300" height="194" /></p>
<p>The other files each provide a couple of templates for building Junit version 4 tests and using JMock.</p>
<p>The available Naked Objects templates are:-</p>
<table border="0">
<tbody>
<tr>
<th align="right">noa</th>
<td>Action</td>
</tr>
<tr>
<th align="right">noacho</th>
<td>Action argument N choices</td>
</tr>
<tr>
<th align="right">noadef</th>
<td>Action argument defaults</td>
</tr>
<tr>
<th align="right">noadis</th>
<td>Action disabling</td>
</tr>
<tr>
<th align="right">noahid</th>
<td>Action hiding</td>
</tr>
<tr>
<th align="right">noaval</th>
<td>Action validation</td>
</tr>
<tr>
<th align="right">noc-1m</th>
<td>Collection (1:m bidir parent)</td>
</tr>
<tr>
<th align="right">noc-mmc</th>
<td>Collection (m:m bidir child)</td>
</tr>
<tr>
<th align="right">noc-mmp</th>
<td>Collection (m:m bidir parent)</td>
</tr>
<tr>
<th align="right">nocdis</th>
<td>Collection disabling</td>
</tr>
<tr>
<th align="right">nochid</th>
<td>Collection hiding</td>
</tr>
<tr>
<th align="right">nocl</th>
<td>Collection (list)</td>
</tr>
<tr>
<th align="right">nocmod</th>
<td>Collection modify</td>
</tr>
<tr>
<th align="right">nocs</th>
<td>Collection (set)</td>
</tr>
<tr>
<th align="right">nocval</th>
<td>Collection validation</td>
</tr>
<tr>
<th align="right">nod</th>
<td>Dependencies region</td>
</tr>
<tr>
<th align="right">nods</th>
<td>Dependencies &#8211; injected service</td>
</tr>
<tr>
<th align="right">nofp</th>
<td>Factory &#8211; new instance (persistent)</td>
</tr>
<tr>
<th align="right">noft</th>
<td>Factory &#8211; new instance (transient)</td>
</tr>
<tr>
<th align="right">noid</th>
<td>Identification region</td>
</tr>
<tr>
<th align="right">noidicon</th>
<td>Identification &#8211; icon</td>
</tr>
<tr>
<th align="right">noidtitle</th>
<td>Identification &#8211; title</td>
</tr>
<tr>
<th align="right">nol</th>
<td>Lifecycle region</td>
</tr>
<tr>
<th align="right">nolc</th>
<td>Lifecycle &#8211; create</td>
</tr>
<tr>
<th align="right">noll</th>
<td>Lifecycle &#8211; load</td>
</tr>
<tr>
<th align="right">nolp</th>
<td>Lifecycle &#8211; persist</td>
</tr>
<tr>
<th align="right">nolr</th>
<td>Lifecycle &#8211; remove</td>
</tr>
<tr>
<th align="right">nolu</th>
<td>Lifecycle &#8211; update</td>
</tr>
<tr>
<th align="right">nop</th>
<td>Property</td>
</tr>
<tr>
<th align="right">nop-11c</th>
<td>Property (1:1 bidir child)</td>
</tr>
<tr>
<th align="right">nop-11p</th>
<td>Property (1:1 bidir parent)</td>
</tr>
<tr>
<th align="right">nop-m1</th>
<td>Property (m:1 bidir child)</td>
</tr>
<tr>
<th align="right">nopcho</th>
<td>Property choices</td>
</tr>
<tr>
<th align="right">nopdef</th>
<td>Property defaults</td>
</tr>
<tr>
<th align="right">nopdis</th>
<td>Property disabling</td>
</tr>
<tr>
<th align="right">nophid</th>
<td>Property hiding</td>
</tr>
<tr>
<th align="right">nopmod</th>
<td>Property modify</td>
</tr>
<tr>
<th align="right">nopval</th>
<td>Property validation</td>
</tr>
<tr>
<th align="right">nosa</th>
<td>Search for all</td>
</tr>
<tr>
<th align="right">nosafil</th>
<td>Search for all matching</td>
</tr>
<tr>
<th align="right">nosffil</th>
<td>Search for first matching</td>
</tr>
<tr>
<th align="right">nosufil</th>
<td>Search for unique matching</td>
</tr>
<tr>
<th align="right">noval</th>
<td>Object-level validation</td>
</tr>
</tbody>
</table>
<p><span style="line-height: normal;font-size: small"><br />
</span></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nakedobjects.org/2010/03/01/using-the-eclipse-templates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting started with the Maven archetype</title>
		<link>http://blog.nakedobjects.org/2010/01/26/getting-started-with-the-maven-archetype/</link>
		<comments>http://blog.nakedobjects.org/2010/01/26/getting-started-with-the-maven-archetype/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 20:51:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Naked Objects]]></category>

		<guid isPermaLink="false">http://blog.nakedobjects.org/?p=78</guid>
		<description><![CDATA[Creating new Java projects from scratch can be a bit tortuous as you have to
provide the right component, some initial code and some way of building
it. Using Maven these problems can all be resolved so that starting a new
project is exceptionally easy process. Specifically it will create a new
set of directories and files, add in [...]]]></description>
			<content:encoded><![CDATA[<p>Creating new Java projects from scratch can be a bit tortuous as you have to<br />
provide the right component, some initial code and some way of building<br />
it. Using Maven these problems can all be resolved so that starting a new<br />
project is exceptionally easy process. Specifically it will create a new<br />
set of directories and files, add in the build definitions and ensure all<br />
the dependent resources are available. This is the work of the Maven<br />
Archetype plugin.</p>
<p>Naked Objects uses the feature of Maven to create new Naked Object<br />
application in a couple of commands. What I am going to describe now is<br />
the same as for other Maven archetype, the only additional task is to<br />
specify where the archetype is to be found. We maintain that catalog on<br />
our website so to build a application from scratch type in the following<br />
(assuming that you have Maven 2.1 or 2.2 installed, see<br />
http://maven.apache.org/download.html).</p>
<pre>$ mvn archetype:generate -DarchetypeCatalog=http://nakedobjects.org</pre>
<p>You will then be prompted with a list of archetypes (at time of<br />
writing there is only one).</p>
<p><span id="more-78"></span></p>
<pre>Choose archetype:
1: http://nakedobjects.org -&gt; application-archetype (Naked Objects Application)
Choose a number:  (1):</pre>
<p>Enter &#8216;1&#8242; and press return. Once prompted enter a group ID, an<br />
artifact ID, a version number and a suitable package name. The group and<br />
artifact IDs combine to form a unique name for you project and typically<br />
the group ID is used across all you different projects &#8211; a suitable choice<br />
here is your domain name reversed, e.g., com.mycompany. The version and<br />
packages prompts provide suitable defaults and can be left as such unless<br />
you have good reason to change them.</p>
<p>After entering these details you are asked to confirm, so &#8216; y&#8217; must<br />
be entered. The following example shows me setting up a test project to<br />
explore an idea. I have used org.test as the group ID so I do not clutter<br />
up my project space, and I can more simply and safely remove all my test<br />
stuff from the Maven repsository by deleting the org/test directory.</p>
<pre>Define value for groupId: : org.test
Define value for artifactId: : expenses
Define value for version:  1.0-SNAPSHOT: :
Define value for package:  org.test: :
Confirm properties configuration:
groupId: org.test
artifactId: expenses
version: 1.0-SNAPSHOT
package: org.test
 Y: : y</pre>
<p>I now have directory called expenses and that contains the<br />
following:-</p>
<pre>expenses/
|-- commandline
|   |-- config
|   |-- ide
|   |-- pom.xml
|   `-- src
|-- dom
|   |-- pom.xml
|   `-- src
|-- fixture
|   |-- pom.xml
|   `-- src
|-- pom.xml
|-- service
|   |-- pom.xml
|   `-- src
`-- webapp
    |-- ide
    |-- pom.xml
    `-- srcconfig</pre>
<p>This is our recommended directory structure for projects so that<br />
they separate out the different parts of the application. Its probably too<br />
complex for simple projects, but it is the right thing for larger ones.</p>
<p>With the project created the first thing to do is build it and<br />
confirm it runs.</p>
<pre>$ cd expenses
$ mvn package</pre>
<p>This compile the source code, runs any tests and packages up the<br />
results in the typical Maven fashion. If you go to the target directory in<br />
the commandline directory you will find a distribution file (ending in<br />
.zip) and a directory of the same name with the contents expanded into it.<br />
If you go into that directory you can run the application, so following on<br />
this example:</p>
<pre>$ cd commandline/target/expenses-commandline-1.0-SNAPSHOT-commandline.dir/expenses-commandline-1.0-SNAPSHOT/</pre>
<p>you will see the following config</p>
<pre>expenses.jar
images
lib
nakedobjects.bat
nakedobjects.sh</pre>
<p>Run the application using the script</p>
<pre>$ ./nakedobjects.sh</pre>
<p>Login with sven/pass and ensure that you have a single class<br />
available to you. That&#8217;s all there is to it, all the work is done by<br />
Maven!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nakedobjects.org/2010/01/26/getting-started-with-the-maven-archetype/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scimpi release 0.4</title>
		<link>http://blog.nakedobjects.org/2009/11/18/scimpi-release-0-4/</link>
		<comments>http://blog.nakedobjects.org/2009/11/18/scimpi-release-0-4/#comments</comments>
		<pubDate>Tue, 17 Nov 2009 23:51:51 +0000</pubDate>
		<dc:creator>rmatthews</dc:creator>
				<category><![CDATA[Naked Objects]]></category>

		<guid isPermaLink="false">http://blog.nakedobjects.org/?p=67</guid>
		<description><![CDATA[Following on from Dan Haywood&#8217;s talk yesterday at Devoxx09, I have made Scimpi available for you to play with.  Instructions are available on the new web page (see http://scimpi.org/) .  It&#8217;s very simple to get started using Maven&#8217;s archetype facility. To create a new webapp use the following command:
$ mvn archetype:generate -DarchetypeCatalog=http://nakedobjects.org/snapshot-catalog.xml
Select the scimpi-archetype-quickstart archetype [...]]]></description>
			<content:encoded><![CDATA[<p>Following on from <a href="http://danhaywood.com/" target="_blank">Dan Haywood&#8217;s</a> talk yesterday at <a href="http://www.devoxx.com/display/DV09/Introducing+Scimpi" target="_blank">Devoxx09</a>, I have made Scimpi available for you to play with.  Instructions are available on the new web page (see <a href="http://scimpi.org/getting-started.html" target="_blank">http://scimpi.org/</a>) .  It&#8217;s very simple to get started using Maven&#8217;s archetype facility. To create a new webapp use the following command:</p>
<pre>$ mvn archetype:generate -DarchetypeCatalog=http://nakedobjects.org/snapshot-catalog.xml</pre>
<p>Select the <em>scimpi-archetype-quickstart</em> archetype and after entering a suitable <em>group id</em> and <em>artifact id </em>you are ready to build and run the application.</p>
<pre>$ cd mywebapp
$ mvn install
$ mvn jetty:run</pre>
<p>Now browse to <span style="color: #888888">http://localhost:8080/<em>mywebapp</em>/</span> (where the last part needs to be the artifact ID that you specified in the first step) to see the opening page. This uses a very simple domain model with only one class so the view is not very interesting yet.</p>
<p><img class="alignnone size-medium wp-image-68" src="http://blog.nakedobjects.org/wp-content/uploads/2009/11/Screenshot-Application-template-Mozilla-Firefox-300x203.png" alt="Screenshot-Application template - Mozilla Firefox" width="300" height="203" /></p>
<p>With it running, it&#8217;s time to add details to the existing class and add some new ones. And it&#8217;s time to look at the documentation (see <a href="http://scimpi.org" target="_blank">http://scimpi.org</a>).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nakedobjects.org/2009/11/18/scimpi-release-0-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New web sites</title>
		<link>http://blog.nakedobjects.org/2009/11/18/new-web-sites/</link>
		<comments>http://blog.nakedobjects.org/2009/11/18/new-web-sites/#comments</comments>
		<pubDate>Tue, 17 Nov 2009 23:51:20 +0000</pubDate>
		<dc:creator>rmatthews</dc:creator>
				<category><![CDATA[Naked Objects]]></category>

		<guid isPermaLink="false">http://blog.nakedobjects.org/?p=72</guid>
		<description><![CDATA[We have been reviewing our documentation strategy and have now adopted Maven&#8217;s site format.  This allows us to keep the website and documentation in perfect sync and avoid both the need for duplication and the problem of having to hunt for the content when it is only in one place.  The existing documentation is now [...]]]></description>
			<content:encoded><![CDATA[<p>We have been reviewing our documentation strategy and have now adopted Maven&#8217;s site format.  This allows us to keep the website and documentation in perfect sync and avoid both the need for duplication and the problem of having to hunt for the content when it is only in one place.  The existing documentation is now an integral part of the web site, and the whole thing can also be <a href="http://nakedobjects.org/downloads.html">downloaded</a> as a set of web pages or a single PDF file.</p>
<p>With such a dramatic changes there could be a few teething problems so please bear with us as we resolve these and let us know if you come across anything that&#8217;s not right. Specifically email <em>webmaster at nakedobjects dot org</em>.</p>
<p>The web sites are <a href="http://www.nakedobjects.org">http://www.nakedobjects.org</a> and <a href="http://www.scimpi.org">http://www.scimpi.org</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nakedobjects.org/2009/11/18/new-web-sites/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting started with Naked Objects Version 4.0</title>
		<link>http://blog.nakedobjects.org/2009/08/13/getting-started-with-naked-objects-version-4-0/</link>
		<comments>http://blog.nakedobjects.org/2009/08/13/getting-started-with-naked-objects-version-4-0/#comments</comments>
		<pubDate>Thu, 13 Aug 2009 19:54:08 +0000</pubDate>
		<dc:creator>rmatthews</dc:creator>
				<category><![CDATA[Naked Objects]]></category>

		<guid isPermaLink="false">http://blog.nakedobjects.org/?p=50</guid>
		<description><![CDATA[As we have recently released the next version of Naked Objects I thought it would be a good idea to do a series of blogs introducing various aspects of it.  The first is about how to get it and run it.
Naked Objects is available, as before, from SourceForge (http://sourceforge.net/projects/nakedobjects/) but now you have a choice [...]]]></description>
			<content:encoded><![CDATA[<p>As we have recently released the next version of Naked Objects I thought it would be a good idea to do a series of blogs introducing various aspects of it.  The first is about how to get it and run it.</p>
<p>Naked Objects is available, as before, from SourceForge (http://sourceforge.net/projects/nakedobjects/) but now you have a choice about how you use it: with Maven, Ant or just using the jars with your favourite IDE. Maven provides the most flexibility, so that is what I&#8217;m going to look at now.  Although with Maven you can get up and running without downloading anything from SourceForge, I strongly recommend that you start off by downloading <strong>nakedobjects-4.n.n-for-maven.zip</strong> or <strong>nakedobjects-4.n.n-for-maven.tar.gz</strong> from the <a href="http://sourceforge.net/projects/nakedobjects/files/nakedobjects/" target="_blank">download page</a>.  This will ensure that you have access to the documentation, some useful resources like icons and a set of examples that you can browse and run, and later experiment with. Once downloaded extract the contents and you&#8217;ll end up with a directory called <strong>nakedobjects-4.n.n</strong>.</p>
<p><span id="more-50"></span></p>
<h2>Running an example</h2>
<p>Let&#8217;s start off by looking at the examples to see what Naked Objects looks like when it runs.</p>
<p>Before we can run anything we need to build it.  Using Maven we can do this in one step. So go to one of the example&#8217;s directory, in this case we use the claims one as it the simplest, and use the <strong>package</strong> goal to compile and package it all.</p>
<pre>$ cd nakedobjects-4.0.0/examples/orders
$ mvn package
[INFO] Scanning for projects...
Downloading: http://repo1.maven.org/maven2/org/nakedobjects/release/4.0.0/release-4.0.0.pom
7K downloaded
[INFO] ------------------------------------------------------------------------
[INFO] Building Example Orders DOM
[INFO]    task-segment: [package]
[INFO] ------------------------------------------------------------------------
[INFO] [resources:resources]
[INFO] Using default encoding to copy filtered resources.
Downloading: http://repo1.maven.org/maven2/org/nakedobjects/applib/4.0.0/applib-4.0.0.pom
2K downloaded
Downloading: http://repo1.maven.org/maven2/org/nakedobjects/core/4.0.0/core-4.0.0.pom
5K downloaded
Downloading: http://repo1.maven.org/maven2/org/nakedobjects/nakedobjects-parent/5/nakedobjects-parent-5.pom
14K downloaded
:
:
:
Downloading: http://repo1.maven.org/maven2/org/nakedobjects/plugins/xml-persistor/1.0.0/xml-persistor-1.0.0.jar
53K downloaded
Downloading: http://repo1.maven.org/maven2/org/nakedobjects/plugins/xstream-marshalling/1.0.0/xstream-marshalling-1.0.0.jar
7K downloaded
Downloading: http://repo1.maven.org/maven2/org/nakedobjects/core/remoting/4.0.0/remoting-4.0.0.jar
195K downloaded
[INFO] [compiler:compile]
[INFO] Nothing to compile - all classes are up to date
[INFO] [resources:testResources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:testCompile]
[INFO] No sources to compile
[INFO] [surefire:test]
[INFO] No tests to run.
[INFO] [jar:jar]
[INFO] [assembly:single {execution: default}]
[INFO] Reading assembly descriptor: src/main/assembly/descriptor.xml
[INFO] Processing DependencySet (output=lib)
[INFO] Building zip: /home/bob/tmp/nakedobjects-4.0.0/examples/orders/target/orders-demo-4.0.0-commandline.zip
[WARNING] Assembly file: /home/bob/tmp/nakedobjects-4.0.0/examples/orders/target/orders-demo-4.0.0-commandline.zip is not a regular file (it may be a directory). It cannot be attached to the project build for installation or deployment.
[INFO] Processing DependencySet (output=lib)
[INFO] Copying files to /home/bob/tmp/nakedobjects-4.0.0/examples/orders/target/orders-demo-4.0.0-commandline.dir
[WARNING] Assembly file: /home/bob/tmp/nakedobjects-4.0.0/examples/orders/target/orders-demo-4.0.0-commandline.dir is not a regular file (it may be a directory). It cannot be attached to the project build for installation or deployment.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1 minute 21 seconds
[INFO] Finished at: Wed Aug 12 20:13:35 BST 2009
[INFO] Final Memory: 25M/495M
[INFO] ------------------------------------------------------------------------
$
</pre>
<p>As you can see from the output Maven downloads all the dependencies that the application needs, compiles the code, tests it and then creates a distribution for it. The results can be seen in <em>commandline/target/</em> where there is both a zip file and exploded version. Before sending the zip files to all you friends lets take a look at it. So go into the exploded version and run the <em>nakedobjects</em> script.</p>
<pre>$ cd target/orders-demo-4.0.0-commandline.dir/orders-demo-4.0.0/
$ ./nakedobjects.sh
</pre>
<p>When started you will be prompted for a user name and password. Enter <em>sven</em> and <em>pass</em> and press the <em>Logon</em> button.</p>
<p>The opening screen shows a set of service objects. Here we have right-clicked on the <em>Products</em> icons to access its actions.<br />
<img src="http://blog.nakedobjects.org/wp-content/uploads/2009/08/opening-screen.png" alt="" /></p>
<p>These actions correspond to the two public methods in the <em>ProductRepository</em> class:</p>
<pre class="brush: java">    public List&lt;Product&gt; showAll() {
        return allInstances(Product.class);
    }

    public Product findByCode(@Named(&quot;Code&quot;) final String code) {
        return firstMatch(Product.class, new Filter&lt;Product&gt;() {
            public boolean accept(Product obj) {
                return code.equals(obj.getCode());
            }
        });
    }
</pre>
<p>What important to remember here, and in all the following screen shots is that the views are created from the code that I am showing you.  There is no code in the application for creating these views, it is Naked Objects building a model of the domain objects and then creating views automatically to show the objects to the user.  This will be further demonstrated later when we use another interface to show the same objects.</p>
<p>After selecting the Show All option, a list of all the products is opened. Double clicking on one of those opens up a view for that specific object.</p>
<p><img src="http://blog.nakedobjects.org/wp-content/uploads/2009/08/open-views.png" alt="" /></p>
<p>This time it is the properties (the get/set method pairs) that are used and shown as fields. Notice that the properties are annotated to indicate things like length, and that the code property should only be enabled until the object is persisted.  As well as the properties there is also an object title method that is picked up by convention. This method just returns a String to use as the title, and in this case uses a utility class to build the title from the properties.</p>
<pre class="brush: java">    public String title() {
        TitleBuffer t = new TitleBuffer();
        if (getCode() != null){
           t.append(getCode());
           t.append(&quot;:&quot;, getDescription());
        }
        return t.toString();
    }

    private String code;
    @TypicalLength(9)
    @MaxLength(9)
    @Disabled(When.ONCE_PERSISTED)
    public String getCode() {
        return this.code;
    }
    public void setCode(String code) {
        this.code = code;
    }

    private String description;
    @TypicalLength(50)
    @MaxLength(255)
    public String getDescription() {
        return this.description;
    }
    public void setDescription(String description) {
        this.description = description;
    }

    private Double price;
    public Double getPrice() {
        return this.price;
    }
    public void setPrice(Double price) {
        this.price = price;
    }</pre>
<p>The next screen shots shows a view for a particular customer, which differs in layout as it contains a collection. After right-clicking on the customer&#8217;s icon the order&#8217;s singular public method is shown as an action.  There is also a submenu that provides the options available from the <em>Orders</em> service object, in this case these is just the one and that accept a <em>Customer</em> objects as it one parameter.</p>
<p><img src="http://blog.nakedobjects.org/wp-content/uploads/2009/08/action-on-object.png" alt="" /></p>
<p>After clicking on this option, a dialog is brought up to allow the methods parameters to be entered.  The method being</p>
<pre class="brush: java">   public void placeOrder(
            Product p,
            @Named(&quot;Quantity&quot;) Integer quantity ) {
        Order order = (Order)getContainer().newTransientInstance(Order.class);
        order.modifyCustomer(this);
        order.modifyProduct(p);
        order.setOrderDate(new Date(Clock.getTime()));
        order.setQuantity(quantity);
        addToOrders(order);
        modifyLastOrder(order);
        getContainer().persist(order);
    }</pre>
<p><img src="http://blog.nakedobjects.org/wp-content/uploads/2009/08/action-dialog.png" alt="" /></p>
<p>As you can see from the method&#8217;s code this will create a new <em>Order</em> object and sets up its properties using a combination of the entered values, the current <em>Customer</em> object and some other programmatically derived values. When the OK button is pressed the dialog will be closed, this method will be called and then any changed views updated. In this case the <em>Customer</em> object was changed by having the new item added to its order list. The next screen shot show this after the user has clicked on the new item in the tree view on the left-hand side, which results in the new object being show on the right-hand side.</p>
<p><img src="http://blog.nakedobjects.org/wp-content/uploads/2009/08/new-object.png" alt="" /></p>
<p>Now for another viewer. Shut down the application by right-clicking on the background and selecting Quit. Next run the script again but with a parameter to indicate that the HTML viewer is to be used</p>
<pre>
$ ./nakedobjects.sh --viewer html
</pre>
<p>Now open up a web browser and open the URL <em>http://localhost:8080/logon.app</em> and log in as before with <em>sven </em>and<em> pass</em></p>
<p>The opening page shows the same three service object, this time across the top of the page.  In this next screen shot I have clicked the <em>Products</em> link and get presented with the options from the product repository.</p>
<p><img src="http://blog.nakedobjects.org/wp-content/uploads/2009/08/html-intro.png" alt="" /></p>
<p>This time I click the <em>Show All</em> link instead of double-clicking the icons. This shows a list of the products, each of which is hyperlinked.  I have not click on them yet as the HTML viewer only shows one object at a time.</p>
<p><img src="http://blog.nakedobjects.org/wp-content/uploads/2009/08/html-llist.png" alt="" /></p>
<p>Clicking on one of the items in the list open it up and adds the list to the history bar (titled &#8220;6 Objects&#8221;).</p>
<p><img src="http://blog.nakedobjects.org/wp-content/uploads/2009/08/Screenshot-850-18003-Stripy-Wasp-Catcher.png" alt="" /></p>
<p>Using the <em>Find Customer</em> option on the <em>Customers</em> service object I then searched for a specific customer that resulted in the following screen.</p>
<p><img src="http://blog.nakedobjects.org/wp-content/uploads/2009/08/Screenshot-Richard-Pawson.png" alt="" /></p>
<p>As for the earlier web page this one does not show us the contained objects, but provides us with a link to the list of orders. The options in this viewer are shown on the left hand side as links instead of as a popup menu.  But as in Drag and Drop user interface all the available actions are shown. Again, clicking on the right link, this time the <em>Place Order&#8230;</em> one, we open up a dialog that prompts us for the parameters of the underlying method.</p>
<p><img src="http://blog.nakedobjects.org/wp-content/uploads/2009/08/Screenshot-Place-Order.png" alt="" /></p>
<p>After changing the fields if needed we press on the <em>Ok</em> button and the action method is run creating a new order and adding it to the customer&#8217;s order list as we saw before.</p>
<p><img src="http://blog.nakedobjects.org/wp-content/uploads/2009/08/Screenshot-Richard-Pawson-2.png" alt="" /></p>
<p>That concludes my first blog about the new version of Naked Objects.  I suggest that you try a few of things out on the <em>Order</em> project, adding new properties and public methods and see how the user interfaces change.  In the next part I&#8217;ll show you how create a new application from scratch using a Maven archetype.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nakedobjects.org/2009/08/13/getting-started-with-naked-objects-version-4-0/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>What&#8217;s happening with Naked Objects and Scimpi</title>
		<link>http://blog.nakedobjects.org/2009/07/01/whats-happening-june09/</link>
		<comments>http://blog.nakedobjects.org/2009/07/01/whats-happening-june09/#comments</comments>
		<pubDate>Wed, 01 Jul 2009 16:41:31 +0000</pubDate>
		<dc:creator>rmatthews</dc:creator>
				<category><![CDATA[Naked Objects]]></category>

		<guid isPermaLink="false">http://blog.nakedobjects.org/2009/07/01/whats-happening-with-naked-objects-and-scimpi/</guid>
		<description><![CDATA[Very little has been seen on this blog and the Naked Objects website for quite a while, so people are beginning to wonder what is happening. If, however, you look at the project pages on SourceForge, our bug database or browse the source code repository you will see that a huge amount is going on.  [...]]]></description>
			<content:encoded><![CDATA[<p>Very little has been seen on this blog and the Naked Objects website for quite a while, so people are beginning to wonder what is happening. If, however, you look at the project pages on SourceForge, our bug database or browse the source code repository you will see that a huge amount is going on.  For the last 18 months we have been extremely busy working on Naked Objects version 4.Naked Objects version 4 has be substaintially re-architected<span id="more-19"></span>to allow for future expansion while numerous improvement and features have also been added. Previously the framework was targeted specifically at the application developer, who wrote applications that the framework would bring to life. Now we are providing the facilities to extend and enhance the framework as well; so new persistence mechanisms, user interfaces and  tools can be created.</p>
<p>The reflector has been practically rewritten to create a more fine grained meta-model of the domain objects that Naked Objects is working with, allowing you to redefine part, or all, of the programming model. This also provides consistency in accessing and manipulating the domain objects both within the framework and in its extensions. The programming model itself has essentially remained the same bar a few minor tweaks and some subtle improvements, so an existing version 3.0 applications should run with minimal work (although, as the package names have been rationalised throughout, the imports will need updating).  One significant change is the automatic calling of <em>objectChanged</em> and <em>resolve</em> in the setter and getter methods so that these calls are no longer necessary within your application code. Other minor changes include the correcting of method names such as <em>makePersistent</em> to <em>persist</em> and <em>saved</em>/<em>saving</em> to <em>persisted</em>/<em>persisting</em>.</p>
<p>Part of the move toward greater extensibility is a more componentised structure to the framework, where specific component can be installed at runtime providing different user interfaces, persistence mechanisms and so on.  Other projects have now been started that provide new components, such as a JPA based persistor and an RCP viewer.</p>
<p>Other interesting additions and changes include:</p>
<ul>
<li>HTTP remoting</li>
<li>More views &#8211; grid, calendar, histogram &#8211; and better feedback in the DND viewer with  stylable windows, buttons etc</li>
<li>Runnable in the Naked Objects container, a Web container, or standalone via Jetty</li>
<li>New Value type allowing you to define new value such as URL,  email address, temperature, geocode</li>
<li>An email service and objects</li>
<li>Perspectives have been replaced with user profiles, which are more comprehensive and are stored separately from the domain objects</li>
<li>Headless viewer for applying business logic between POJOs</li>
<li>Ability to embed headless Naked Objects in other systems</li>
<li>Junit4 runner for testing Naked Objects applications (utilizing the Headless viewer)</li>
</ul>
<p>All this hard work is now available as a beta release, while the core release will be made in about a months time, with a target date of the 27th July. Other components will be available as well and will follow their own release schedules.</p>
<p>This latest version is available in two different ways.  As before a tarball/zip file can be downloaded from the <a href="https://sourceforge.net/project/showfiles.php?group_id=160910&amp;package_id=181105">downloads page</a> on SourceForge and includes the core framework, documentation, examples and a range of plugins including those available from elsewhere. We have also started making the artifacts available using Maven. For this the simplest way to get started is to use the archetypes that we have created to build some template applications. To use this you will need to specify our archetype catalogue as follows:</p>
<pre>$ mvn archetype:generate -DarchetypeCatalog=http://nakedobjects.org</pre>
<p>Scimpi is a web development framework that builds on the Naked Objects framework (please see my previous blog). This is being updated in line with the development of the underlying framework and a new release will be available around the same time.</p>
<p>Finally I should mention Dan Haywood&#8217;s upcoming book &#8220;Domain-Driven Design Using Naked Objects&#8221;. You can obtain it from the <a href="http://www.pragprog.com/titles/dhnako/domain-driven-design-using-naked-objects">Pragmatic Programmers</a> web site. This talks about how install and use Naked Objects and in a way that follows the style of Domain Driven development. The writing of this book has been instrumental to the further development of Naked Objects and my thanks go to Dan for his hard work in the redesigning and development of this release.And finally, thanks to all of you for your ongoing interest and support.</p>
<p>Robert Matthews</p>
<p>PS thanks to the anonymous commenter for prompting this update.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nakedobjects.org/2009/07/01/whats-happening-june09/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The Scimpi Framework</title>
		<link>http://blog.nakedobjects.org/2008/05/08/the-scimpi-framework/</link>
		<comments>http://blog.nakedobjects.org/2008/05/08/the-scimpi-framework/#comments</comments>
		<pubDate>Thu, 08 May 2008 20:15:28 +0000</pubDate>
		<dc:creator>rmatthews</dc:creator>
				<category><![CDATA[Naked Objects]]></category>

		<guid isPermaLink="false">http://blog.nakedobjects.org/2008/05/08/the-scimpi-framework/</guid>
		<description><![CDATA[We have spent the last few months creating a new web development framework, which we have called Scimpi &#8211; see http://www.scimpi.org.  No doubt your immediate thought will be: surely there are too many web frameworks already, why create another one? Well, unlike a project rationalisation I saw today on SourceForge, it was not because [...]]]></description>
			<content:encoded><![CDATA[<p>We have spent the last few months creating a new web development framework, which we have called Scimpi &#8211; see <a href="http://www.scimpi.org">http://www.scimpi.org</a>.  No doubt your immediate thought will be: surely there are too many web frameworks already, why create another one? Well, unlike a project rationalisation I saw today on <a href="http://sourceforge.net">SourceForge</a>, it was not because I wanted to brush up on my coding. We wrote it because Naked Objects is currently ignoring the biggest development area going; that of web applications.  What Naked Objects currently offers is a unique choice of generic user interfaces<span id="more-13"></span>that give the user complete, yet controlled, access to a complex domain model.  What can&#8217;t be done with the framework is to create an interface that is more &#8217;scripted&#8217;, that guides the user through specific tasks. While the generic user interfaces are ideal for the <em>problem solver</em> working within a complicated domain, they are not optimal for the typical <em>process follower</em> working within a simpler domain, or when working on small isolated task within a larger, more complex, system.  For the latter type there tend to fewer options to offer and fewer possibilities to cater for. Therefore, such an interface will tend to be more prescriptive, but obviously there is some overlap between the two categories. While the generic interface involves absolutely no work to make it available, using a conventional web application framework to create a browser based user interface, however, requires an inordinate amount of work by comparison.  Typically it would require the writing of controller and bean classes, crafting of JSP pages that access those beans and writing configuration files to tie these things together.  Not only that, but there are also things like validation, security and internationalisation to be considered. Doing all this seems too much  like hard work, particularly when you can already do everything that the domain model permits through the generic interface that magically appeared when simply exploring the domain model.</p>
<p>To make web application development simple there should only be one file per page, and each page should only detail what is absolutely necessary, keeping them short yet readable. For example, if I want to show an object then I should not need to work through each field laying out labels and content; simple markup that says &#8217;show object x&#8217; should be all that is needed.  Hence Scimpi was designed to process HTML pages with additional markup that dynamically generates HTML snippets to include with the static markup.  Each dynamic tag interacts with the Naked Objects framework and generates suitable markup to allow tasks like displaying and editing objects, running actions, building tables etc., to quickly  build up dynamic web pages. There are controllers within the system and others can be added, but these are specialised devices, rather than a mandatory part of process.  Also, as there are no new controllers to be written and the only interactions are defined within the the HMTL markup, there is no need for any configuration files, which just link together those disparate parts.  This may seem at odds with the contemporary web application development process, but in reality all you are doing in defining Scimpi pages is detailing how your users will interact with the system, and this is no different than directing a user in exactly how to the use the generic user interface to complete a task.</p>
<p>In creating this framework we specifically chose not to use JSP as the mechanism to create the pages as these allow, and potentially encourage, code to be included.  Scimpi pages need no code, they rely solely on the behaviour provided within the domain model.  The pages are therefore simply HTML pages with additional markup.Just to show how simple the process is here are a couple of example pages.</p>
<p>File 1: example1.shtml</p>
<pre>
<pre class="brush: html">&lt;html&gt;
  &lt;head&gt;
    &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;style/screen.css&quot;/&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;swf:run-action object=&quot;service:claims&quot; method=&quot;allClaims&quot;/&gt;
    &lt;swf:table/&gt;
  &lt;/body&gt;
&lt;/html&gt;</pre>
</pre>
<p>Screen shot 1: a table generated from the results of the <em>allClaims</em> method<a title="Scimpi example 1" href="http://blog.nakedobjects.org/wp-content/uploads/2008/05/scimpi-example-1.png"><img src="http://blog.nakedobjects.org/wp-content/uploads/2008/05/scimpi-example-1.png" alt="Scimpi example 1" /></a>File 2: example2.shtml</p>
<pre>
<pre class="brush: html">&lt;html&gt;
  &lt;head&gt;
    &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;style/screen.css&quot;/&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;swf:run-action object=&quot;service:claims&quot; method=&quot;findClaims&quot;&gt;
      &lt;swf:parameter number=&quot;1&quot; value=&quot;city&quot;/&gt;
    &lt;/swf:run-action&gt;
    &lt;swf:short-form/&gt;
  &lt;/body&gt;
&lt;/html&gt;</pre>
</pre>
<p>Screen shot 2: a form generated from an <em>findClaims</em> action with an included parameter<a title="Scimple example 2" href="http://blog.nakedobjects.org/wp-content/uploads/2008/05/scimpi-example-21.png"><img src="http://blog.nakedobjects.org/wp-content/uploads/2008/05/scimpi-example-21.png" alt="Scimple example 2" /></a>File 3: example3.shtml</p>
<pre>
<pre class="brush: html">&lt;html&gt;
  &lt;head&gt;
    &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;style/screen.css&quot;/&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;swf:action-form object=&quot;service:claims&quot; method=&quot;findClaims&quot;/&gt;
  &lt;/body&gt;
&lt;/html&gt;</pre>
</pre>
<p>Screen shot 3: an entry form for running the same <em>findClaims</em> action, where the parameter is now prompted for<a title="Scimpi example 3" href="http://blog.nakedobjects.org/wp-content/uploads/2008/05/scimi-example-3.png"><img src="http://blog.nakedobjects.org/wp-content/uploads/2008/05/scimi-example-3.png" alt="Scimpi example 3" /></a>I now have to start looking at other things, but the first release is going to be made available on SourceForge shortly.</p>
<p>For the moment the documentation and framework can be downloaded from the Scimpi website. (See <a href="http://scimpi.org/downloads/index.shtml">http://scimpi.org/downloads/index.shtml</a> for both addresses.)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nakedobjects.org/2008/05/08/the-scimpi-framework/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Aspects of Domain Model Management</title>
		<link>http://blog.nakedobjects.org/2008/01/10/aspects-of-domain-model-management/</link>
		<comments>http://blog.nakedobjects.org/2008/01/10/aspects-of-domain-model-management/#comments</comments>
		<pubDate>Thu, 10 Jan 2008 08:50:11 +0000</pubDate>
		<dc:creator>Richard Pawson</dc:creator>
				<category><![CDATA[Naked Objects]]></category>

		<guid isPermaLink="false">http://blog.nakedobjects.org/2008/01/10/aspects-of-domain-model-management/</guid>
		<description><![CDATA[For those interested in Domain Driven Design, there is an interesting article on InfoQ, by Mats Helander:  Aspects of Domain Model Management.  In the resulting discussion, Dan Haywood has made a couple of useful postings concerning the Naked Objects approach to dealing with the issues raised.
Richard
]]></description>
			<content:encoded><![CDATA[<p>For those interested in Domain Driven Design, there is an interesting article on InfoQ, by Mats Helander:  <a href="http://www.infoq.com/articles/aspects-of-domain-model-mgmt" title="Aspects of Domain Model Management">Aspects of Domain Model Management.</a>  In the resulting discussion, Dan Haywood has made a couple of useful postings concerning the Naked Objects approach to dealing with the issues raised.</p>
<p>Richard</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nakedobjects.org/2008/01/10/aspects-of-domain-model-management/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

