[Yanel-commits] rev 38163 - public/yanel/trunk/src/realms/yanel-website/content

simon at wyona.com simon at wyona.com
Wed Aug 20 23:14:13 CEST 2008


Author: simon
Date: 2008-08-20 23:14:12 +0200 (Wed, 20 Aug 2008)
New Revision: 38163

Added:
   public/yanel/trunk/src/realms/yanel-website/content/16c9b116-d3ff-4984-b492-05e0d618d7b4
Log:
tutorial content added

Added: public/yanel/trunk/src/realms/yanel-website/content/16c9b116-d3ff-4984-b492-05e0d618d7b4
===================================================================
--- public/yanel/trunk/src/realms/yanel-website/content/16c9b116-d3ff-4984-b492-05e0d618d7b4	                        (rev 0)
+++ public/yanel/trunk/src/realms/yanel-website/content/16c9b116-d3ff-4984-b492-05e0d618d7b4	2008-08-20 21:14:12 UTC (rev 38163)
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <title>Documentation</title>
+  </head>
+  <body>
+<h3 id="section-Create+simple+usecase+resource-type+based+on+ExecutableUsecaseResource-ImplementingASimpleUsecaseBasedOnTheExecutableUsecaseResource"> Implementing a simple usecase based on the ExecutableUsecaseResource</h3>
+<ul><li>we just change the HelloWorldResource example we created in the tutorial <a href="create_a_simple_xml_hello-world_resource-type_based_on_basicxmlresource.html">Create a simple hello-world resource-type</a>
+</li></ul><div class="prettify">
+<pre class="prettyprint"><span class="com">/*<br/>&#160;* Copyright 2007 Wyona<br/>&#160;*/</span><span class="pln"><br/><br/></span><span class="kwd">package</span><span class="pln"> org</span><span class="pun">.</span><span class="pln">yourname</span><span class="pun">.</span><span class="pln">yanel</span><span class="pun">.</span><span class="pln">impl</span><span class="pun">.</span><span class="pln">resources</span><span class="pun">;</span><span class="pln"><br/><br/></span><span class="kwd">import</span><span class="pln"> org</span><span class="pun">.</span><span class="pln">wyona</span><span class="pun">.</span><span class="pln">yanel</span><span class="pun">.</span><span class="pln">impl</span><span class="pun">.</span><span class="pln">resources</span><span class="pun">.</span><span class="pln">usecase</span><span class="pun">.</span><span class="typ">ExecutableUsecaseResource</span><span class="pun">;</span><span class="pln"><br/></span><span class="kwd">import</!
 span><span class="pln"> org</span><span class="pun">.</span><span class="pln">wyona</span><span class="pun">.</span><span class="pln">yanel</span><span class="pun">.</span><span class="pln">impl</span><span class="pun">.</span><span class="pln">resources</span><span class="pun">.</span><span class="pln">usecase</span><span class="pun">.</span><span class="typ">UsecaseException</span><span class="pun">;</span><span class="pln"><br/><br/></span><span class="kwd">import</span><span class="pln"> java</span><span class="pun">.</span><span class="pln">io</span><span class="pun">.</span><span class="typ">ByteArrayInputStream</span><span class="pun">;</span><span class="pln"><br/></span><span class="kwd">import</span><span class="pln"> java</span><span class="pun">.</span><span class="pln">io</span><span class="pun">.</span><span class="typ">InputStream</span><span class="pun">;</span><span class="pln"><br/><br/></span><span class="kwd">import</span><span class="pln"> org</span><sp!
 an class="pun">.</span><span class="pln">apache</span><span cl!
 ass="pun
">.</span><span class="pln">log4j</span><span class="pun">.</span><span class="typ">Logger</span><span class="pun">;</span><span class="pln"><br/><br/><br/></span><span class="com">/**<br/>&#160;* A simple HelloWorldResource which extends BasicXMLResource to output "Hello World!" in XML<br/>&#160;*/</span><span class="pln"><br/></span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">class</span><span class="pln"> </span><span class="typ">HelloWorldResource</span><span class="pln"> </span><span class="kwd">extends</span><span class="pln"> </span><span class="typ">ExecutableUsecaseResource</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br/>&#160; &#160; <br/>&#160; &#160; </span><span class="kwd">private</span><span class="pln"> </span><span class="kwd">static</span><span class="pln"> </span><span class="typ">Logger</span><span class="pln"> log </span><span class="pun">=</span><span class="pln"> </span><span class="typ">L!
 ogger</span><span class="pun">.</span><span class="pln">getLogger</span><span class="pun">(</span><span class="typ">HelloWorldResource</span><span class="pun">.</span><span class="kwd">class</span><span class="pun">);</span><span class="pln"><br/>&#160; &#160; <br/>&#160; &#160; </span><span class="kwd">protected</span><span class="pln"> </span><span class="kwd">static</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> PARAM_EXAMPLE_FORM_FIELD </span><span class="pun">=</span><span class="pln"> </span><span class="str">"example-form-field"</span><span class="pun">;</span><span class="pln"><br/>&#160; &#160; </span><span class="kwd">protected</span><span class="pln"> </span><span class="kwd">static</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> PARAM_EXAMPLE_FORM_FIELD_DATE </span><span class="pun">=</span><span class="pln"> </span><span class="str">"example-form-field-date"</span><span class="pun">;</span><sp!
 an class="pln"><br/>&#160; &#160; <br/>&#160; &#160; </span><s!
 pan clas
s="com">/*<br/>&#160; &#160; &#160;* This method is executed when submitting the form provided in the default view (probably implemented as a jelly template).<br/>&#160; &#160; &#160;*/</span><span class="pln"><br/>&#160; &#160; </span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> execute</span><span class="pun">()</span><span class="pln"> </span><span class="kwd">throws</span><span class="pln"> </span><span class="typ">UsecaseException</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br/>&#160; &#160; &#160; &#160; </span><span class="com">// get parameters as string submitted by the form</span><span class="pln"><br/>&#160; &#160; &#160; &#160; <br/>&#160; &#160; &#160; &#160; </span><span class="typ">String</span><span class="pln"> exampleFormFieldDate </span><span class="pun">=</span><span class="pln"> getParameterAsString</span><span class="pun">(</span><span class="pln">PARAM_EXAMPLE_!
 FORM_FIELD_DATE</span><span class="pun">);</span><span class="pln"><br/>&#160; &#160; &#160; &#160; </span><span class="com">// add an info message displayed in the done view jelly template</span><span class="pln"><br/>&#160; &#160; &#160; &#160; addInfoMessage</span><span class="pun">(</span><span class="str">"Usecase successfully executed. You accessed the default-view of the usecase at: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> exampleFormFieldDate </span><span class="pun">+</span><span class="pln"> </span><span class="str">". "</span><span class="pun">);</span><span class="pln"><br/>&#160; &#160; &#160; &#160; addInfoMessage</span><span class="pun">(</span><span class="str">"And now is: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> getDate</span><span class="pun">());</span><span class="pln"><br/>&#160; &#160; </span><span class="pun">}</span><span class="pln"><br/><br/>&#160; &#160; </span><span clas!
 s="com">/*<br/>&#160; &#160; &#160;* This method is executed w!
 hen canc
eling the form provided in the default view (probably implemented as a jelly template).<br/>&#160; &#160; &#160;*/</span><span class="pln"><br/>&#160; &#160; </span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> cancel</span><span class="pun">()</span><span class="pln"> </span><span class="kwd">throws</span><span class="pln"> </span><span class="typ">UsecaseException</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br/>&#160; &#160; &#160; &#160; addInfoMessage</span><span class="pun">(</span><span class="str">"The usecase was canceled at: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> getDate</span><span class="pun">());</span><span class="pln"><br/>&#160; &#160; </span><span class="pun">}</span><span class="pln"><br/><br/>&#160; &#160; </span><span class="com">/*<br/>&#160; &#160; &#160;* Implement some test which are tested before the usecase will e execut!
 ed<br/>&#160; &#160; &#160;*/</span><span class="pln"><br/>&#160; &#160; </span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">boolean</span><span class="pln"> checkPreconditions</span><span class="pun">()</span><span class="pln"> </span><span class="kwd">throws</span><span class="pln"> </span><span class="typ">UsecaseException</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br/>&#160; &#160; &#160; &#160; </span><span class="typ">String</span><span class="pln"> exampleFormField </span><span class="pun">=</span><span class="pln"> getParameterAsString</span><span class="pun">(</span><span class="pln">PARAM_EXAMPLE_FORM_FIELD</span><span class="pun">);</span><span class="pln"><br/>&#160; &#160; &#160; &#160; </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">exampleFormField</span><span class="pun">.</span><span class="pln">equals</span><span class="pun">(</span><spa!
 n class="str">"hello"</span><span class="pun">))</span><span c!
 lass="pl
n"> </span><span class="pun">{</span><span class="pln"><br/>&#160; &#160; &#160; &#160; &#160; &#160; addError</span><span class="pun">(</span><span class="str">"You did not enter hello"</span><span class="pun">);</span><span class="pln"><br/>&#160; &#160; &#160; &#160; &#160; &#160; </span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">;</span><span class="pln"><br/>&#160; &#160; &#160; &#160; </span><span class="pun">}</span><span class="pln"><br/>&#160; &#160; &#160; &#160; </span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">;</span><span class="pln"><br/>&#160; &#160; </span><span class="pun">}</span><span class="pln"><br/>&#160; &#160; <br/>&#160; &#160; </span><span class="com">/*<br/>&#160; &#160; &#160;* Provide a java object to be used by as a jelly template implemented view<br/>&#160; &#160; &#160;*/</span><span class="pln"><br/>&#160; &#160; </span>!
 <span class="kwd">public</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> getExampleString</span><span class="pun">()</span><span class="pln"> </span><span class="kwd">throws</span><span class="pln"> </span><span class="typ">Exception</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br/>&#160; &#160; &#160; &#160; </span><span class="kwd">return</span><span class="pln"> getDate</span><span class="pun">();</span><span class="pln"><br/>&#160; &#160; </span><span class="pun">}</span><span class="pln"><br/>&#160; &#160; <br/>&#160; &#160; </span><span class="com">/*<br/>&#160; &#160; &#160;* Private helper method for this example. returns a String with the current date and time<br/>&#160; &#160; &#160;*/</span><span class="pln"><br/>&#160; &#160; </span><span class="kwd">private</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> getDate</span><span class="pun">()</span><span class="pln">!
  </span><span class="pun">{</span><span class="pln"><br/>&#160!
 ; &#160;
 &#160; &#160; java</span><span class="pun">.</span><span class="pln">util</span><span class="pun">.</span><span class="typ">Calendar</span><span class="pln"> cal </span><span class="pun">=</span><span class="pln"> java</span><span class="pun">.</span><span class="pln">util</span><span class="pun">.</span><span class="typ">Calendar</span><span class="pun">.</span><span class="pln">getInstance</span><span class="pun">(</span><span class="pln">java</span><span class="pun">.</span><span class="pln">util</span><span class="pun">.</span><span class="typ">TimeZone</span><span class="pun">.</span><span class="pln">getDefault</span><span class="pun">());</span><span class="pln"> <br/>&#160; &#160; &#160; &#160; </span><span class="typ">String</span><span class="pln"> DATE_FORMAT </span><span class="pun">=</span><span class="pln"> </span><span class="str">"yyyy-MM-dd HH:mm:ss"</span><span class="pun">;</span><span class="pln"> <br/>&#160; &#160; &#160; &#160; java</span><span class="!
 pun">.</span><span class="pln">text</span><span class="pun">.</span><span class="typ">SimpleDateFormat</span><span class="pln"> sdf </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> java</span><span class="pun">.</span><span class="pln">text</span><span class="pun">.</span><span class="typ">SimpleDateFormat</span><span class="pun">(</span><span class="pln">DATE_FORMAT</span><span class="pun">);</span><span class="pln"><br/>&#160; &#160; &#160; &#160; sdf</span><span class="pun">.</span><span class="pln">setTimeZone</span><span class="pun">(</span><span class="pln">java</span><span class="pun">.</span><span class="pln">util</span><span class="pun">.</span><span class="typ">TimeZone</span><span class="pun">.</span><span class="pln">getDefault</span><span class="pun">());</span><span class="pln"> <br/>&#160; &#160; &#160; &#160; </span><span class="kwd">return</span><span class="pln"> sdf</span><span class="pun">.</span><!
 span class="pln">format</span><span class="pun">(</span><span !
 class="p
ln">cal</span><span class="pun">.</span><span class="pln">getTime</span><span class="pun">());</span><span class="pln"> <br/>&#160; &#160; </span><span class="pun">}</span><span class="pln"><br/></span><span class="pun">}</span></pre>
+
+</div>
+<h3 id="section-Create+simple+usecase+resource-type+based+on+ExecutableUsecaseResource-TheRcExample">the rc example:</h3>
+<div class="prettify">
+<pre class="prettyprint"><span class="tag">&lt;?</span><span class="embsrc"><span class="pln">xml version</span><span class="pun">=</span><span class="str">"1.0"</span></span><span class="tag">?&gt;</span><span class="pln"><br/><br/></span><span class="tag">&lt;yanel:resource-config </span><span class="atn">xmlns:yanel</span><span class="tag">=</span><span class="atv">"http://www.wyona.org/yanel/rti/1.0"</span><span class="tag">&gt;</span><span class="pln"><br/>&#160; </span><span class="tag">&lt;yanel:rti </span><span class="atn">name</span><span class="tag">=</span><span class="atv">"hello-world"</span><span class="tag"> </span><span class="atn">namespace</span><span class="tag">=</span><span class="atv">"http://yourname.org/yanel/resource/1.0"</span><span class="atn">/</span><span class="tag">&gt;</span><span class="pln"><br/>&#160; <br/>&#160; &#160; </span><span class="tag">&lt;yanel:custom-config&gt;</span><span class="pln"><br/>&#160; &#160; </span><span class="tag">!
 &lt;views&gt;</span><span class="pln"><br/>&#160; &#160; &#160; </span><span class="tag">&lt;view </span><span class="atn">id</span><span class="tag">=</span><span class="atv">"default"</span><span class="tag"> </span><span class="atn">type</span><span class="tag">=</span><span class="atv">"jelly"</span><span class="tag">&gt;</span><span class="pln"><br/>&#160; &#160; &#160; &#160; </span><span class="tag">&lt;template&gt;</span><span class="pln">/default.jelly</span><span class="tag">&lt;/template&gt;</span><span class="pln"><br/>&#160; &#160; &#160; </span><span class="tag">&lt;/view&gt;</span><span class="pln"><br/>&#160; &#160; &#160; </span><span class="tag">&lt;view </span><span class="atn">id</span><span class="tag">=</span><span class="atv">"done"</span><span class="tag"> </span><span class="atn">type</span><span class="tag">=</span><span class="atv">"jelly"</span><span class="tag">&gt;</span><span class="pln"><br/>&#160; &#160; &#160; &#160; </span><span class="tag!
 ">&lt;template&gt;</span><span class="pln">/done.jelly</span><!
 span cla
ss="tag">&lt;/template&gt;</span><span class="pln"><br/>&#160; &#160; &#160; </span><span class="tag">&lt;/view&gt;</span><span class="pln"><br/>&#160; &#160; &#160; </span><span class="tag">&lt;view </span><span class="atn">id</span><span class="tag">=</span><span class="atv">"cancel"</span><span class="tag"> </span><span class="atn">type</span><span class="tag">=</span><span class="atv">"jelly"</span><span class="tag">&gt;</span><span class="pln"><br/>&#160; &#160; &#160; &#160; </span><span class="tag">&lt;template&gt;</span><span class="pln">/done.jelly</span><span class="tag">&lt;/template&gt;</span><span class="pln"><br/>&#160; &#160; &#160; </span><span class="tag">&lt;/view&gt;</span><span class="pln"><br/>&#160; &#160; </span><span class="tag">&lt;/views&gt;</span><span class="pln"><br/>&#160; </span><span class="tag">&lt;/yanel:custom-config&gt;</span><span class="pln"><br/></span><span class="tag">&lt;/yanel:resource-config&gt;</span></pre>
+
+</div>
+<h3 id="section-Create+simple+usecase+resource-type+based+on+ExecutableUsecaseResource-TheJellyTemplatesNeededForThisExample">The jelly templates needed for this example</h3>
+<h4 id="section-Create+simple+usecase+resource-type+based+on+ExecutableUsecaseResource-DefaultView">default view</h4>
+<div class="prettify">
+<pre class="prettyprint"><span class="tag">&lt;?</span><span class="embsrc"><span class="pln">xml version</span><span class="pun">=</span><span class="str">"1.0"</span></span><span class="tag">?&gt;</span><span class="pln"><br/></span><span class="tag">&lt;j:jelly </span><span class="atn">xmlns:j</span><span class="tag">=</span><span class="atv">"jelly:core"</span><span class="tag">&gt;</span><span class="pln"><br/>&#160; </span><span class="tag">&lt;html </span><span class="atn">xmlns</span><span class="tag">=</span><span class="atv">"http://www.w3.org/1999/xhtml"</span><span class="tag">&gt;</span><span class="pln"><br/>&#160; &#160; </span><span class="tag">&lt;body&gt;</span><span class="pln"><br/>&#160; &#160; &#160; </span><span class="tag">&lt;h1&gt;</span><span class="pln">Usecase started</span><span class="tag">&lt;/h1&gt;</span><span class="pln"><br/>&#160; &#160; &#160; </span><span class="tag">&lt;p&gt;</span><span class="pln">${resource.getErrorMessages()}</spa!
 n><span class="tag">&lt;/p&gt;</span><span class="pln"><br/>&#160; &#160; &#160; </span><span class="tag">&lt;p&gt;</span><span class="pln">${resource.getInfoMessages()}</span><span class="tag">&lt;/p&gt;</span><span class="pln"><br/>&#160; &#160; &#160; </span><span class="tag">&lt;form </span><span class="atn">action</span><span class="tag">=</span><span class="atv">""</span><span class="tag">&gt;</span><span class="pln"><br/>&#160; &#160; &#160; &#160; </span><span class="tag">&lt;p&gt;</span><span class="pln">Now it's: ${resource.getExampleString()}</span><span class="tag">&lt;/p&gt;</span><span class="pln"><br/>&#160; &#160; &#160; &#160; </span><span class="tag">&lt;p&gt;</span><span class="pln">Enter "hello" in the inputfied:</span><span class="tag">&lt;/p&gt;</span><span class="pln"><br/>&#160; &#160; &#160; &#160; </span><span class="tag">&lt;input </span><span class="atn">type</span><span class="tag">=</span><span class="atv">"text"</span><span class="tag"> </span!
 ><span class="atn">name</span><span class="tag">=</span><span !
 class="a
tv">"example-form-field"</span><span class="tag"> </span><span class="atn">value</span><span class="tag">=</span><span class="atv">""</span><span class="atn">/</span><span class="tag">&gt;</span><span class="pln"><br/>&#160; &#160; &#160; &#160; </span><span class="tag">&lt;br/&gt;</span><span class="pln"><br/>&#160; &#160; &#160; &#160; </span><span class="tag">&lt;input </span><span class="atn">type</span><span class="tag">=</span><span class="atv">"hidden"</span><span class="tag"> </span><span class="atn">name</span><span class="tag">=</span><span class="atv">"example-form-field-date"</span><span class="tag"> </span><span class="atn">value</span><span class="tag">=</span><span class="atv">"${resource.getExampleString()}"</span><span class="atn">/</span><span class="tag">&gt;</span><span class="pln"><br/>&#160; &#160; &#160; &#160; </span><span class="tag">&lt;input </span><span class="atn">type</span><span class="tag">=</span><span class="atv">"submit"</span><span class="!
 tag"> </span><span class="atn">name</span><span class="tag">=</span><span class="atv">"submit"</span><span class="atn">/</span><span class="tag">&gt;</span><span class="pln"><br/>&#160; &#160; &#160; &#160; </span><span class="tag">&lt;input </span><span class="atn">type</span><span class="tag">=</span><span class="atv">"submit"</span><span class="tag"> </span><span class="atn">name</span><span class="tag">=</span><span class="atv">"cancel"</span><span class="tag"> </span><span class="atn">value</span><span class="tag">=</span><span class="atv">"Cancel"</span><span class="atn">/</span><span class="tag">&gt;</span><span class="pln"><br/>&#160; &#160; &#160; </span><span class="tag">&lt;/form&gt;</span><span class="pln"><br/>&#160; &#160; </span><span class="tag">&lt;/body&gt;</span><span class="pln"><br/>&#160; </span><span class="tag">&lt;/html&gt;</span><span class="pln"><br/></span><span class="tag">&lt;/j:jelly&gt;</span></pre>
+
+</div>
+<h4 id="section-Create+simple+usecase+resource-type+based+on+ExecutableUsecaseResource-DoneView">done view</h4>
+<div class="prettify">
+<pre class="prettyprint"><span class="tag">&lt;?</span><span class="embsrc"><span class="pln">xml version</span><span class="pun">=</span><span class="str">"1.0"</span></span><span class="tag">?&gt;</span><span class="pln"><br/></span><span class="tag">&lt;j:jelly </span><span class="atn">xmlns:j</span><span class="tag">=</span><span class="atv">"jelly:core"</span><span class="tag">&gt;</span><span class="pln"><br/>&#160; </span><span class="tag">&lt;html </span><span class="atn">xmlns</span><span class="tag">=</span><span class="atv">"http://www.w3.org/1999/xhtml"</span><span class="tag">&gt;</span><span class="pln"><br/>&#160; &#160; </span><span class="tag">&lt;body&gt;</span><span class="pln"><br/>&#160; &#160; &#160; </span><span class="tag">&lt;h1&gt;</span><span class="pln">Usecase finished</span><span class="tag">&lt;/h1&gt;</span><span class="pln"><br/>&#160; &#160; &#160; </span><span class="tag">&lt;p&gt;</span><span class="pln">${resource.getErrorMessages()}</sp!
 an><span class="tag">&lt;/p&gt;</span><span class="pln"><br/>&#160; &#160; &#160; </span><span class="tag">&lt;p&gt;</span><span class="pln">${resource.getInfoMessages()}</span><span class="tag">&lt;/p&gt;</span><span class="pln"><br/>&#160; &#160; </span><span class="tag">&lt;/body&gt;</span><span class="pln"><br/>&#160; </span><span class="tag">&lt;/html&gt;</span><span class="pln"><br/></span><span class="tag">&lt;/j:jelly&gt;</span></pre>
+
+</div>
+  </body>
+</html>



More information about the Yanel-commits mailing list