[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/> * Copyright 2007 Wyona<br/> */</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/> * A simple HelloWorldResource which extends BasicXMLResource to output "Hello World!" in XML<br/> */</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/>    <br/>    </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/>    <br/>    </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/>    </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/>    <br/>    </span><s!
pan clas
s="com">/*<br/>     * This method is executed when submitting the form provided in the default view (probably implemented as a jelly template).<br/>     */</span><span class="pln"><br/>    </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/>        </span><span class="com">// get parameters as string submitted by the form</span><span class="pln"><br/>        <br/>        </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/>        </span><span class="com">// add an info message displayed in the done view jelly template</span><span class="pln"><br/>        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/>        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/>    </span><span class="pun">}</span><span class="pln"><br/><br/>    </span><span clas!
s="com">/*<br/>     * This method is executed w!
hen canc
eling the form provided in the default view (probably implemented as a jelly template).<br/>     */</span><span class="pln"><br/>    </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/>        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/>    </span><span class="pun">}</span><span class="pln"><br/><br/>    </span><span class="com">/*<br/>     * Implement some test which are tested before the usecase will e execut!
ed<br/>     */</span><span class="pln"><br/>    </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/>        </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/>        </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/>            addError</span><span class="pun">(</span><span class="str">"You did not enter hello"</span><span class="pun">);</span><span class="pln"><br/>            </span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">;</span><span class="pln"><br/>        </span><span class="pun">}</span><span class="pln"><br/>        </span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">;</span><span class="pln"><br/>    </span><span class="pun">}</span><span class="pln"><br/>    <br/>    </span><span class="com">/*<br/>     * Provide a java object to be used by as a jelly template implemented view<br/>     */</span><span class="pln"><br/>    </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/>        </span><span class="kwd">return</span><span class="pln"> getDate</span><span class="pun">();</span><span class="pln"><br/>    </span><span class="pun">}</span><span class="pln"><br/>    <br/>    </span><span class="com">/*<br/>     * Private helper method for this example. returns a String with the current date and time<br/>     */</span><span class="pln"><br/>    </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/> !
;  
    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/>        </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/>        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/>        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/>        </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/>    </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"><?</span><span class="embsrc"><span class="pln">xml version</span><span class="pun">=</span><span class="str">"1.0"</span></span><span class="tag">?></span><span class="pln"><br/><br/></span><span class="tag"><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">></span><span class="pln"><br/>  </span><span class="tag"><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">></span><span class="pln"><br/>  <br/>    </span><span class="tag"><yanel:custom-config></span><span class="pln"><br/>    </span><span class="tag">!
<views></span><span class="pln"><br/>      </span><span class="tag"><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">></span><span class="pln"><br/>        </span><span class="tag"><template></span><span class="pln">/default.jelly</span><span class="tag"></template></span><span class="pln"><br/>      </span><span class="tag"></view></span><span class="pln"><br/>      </span><span class="tag"><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">></span><span class="pln"><br/>        </span><span class="tag!
"><template></span><span class="pln">/done.jelly</span><!
span cla
ss="tag"></template></span><span class="pln"><br/>      </span><span class="tag"></view></span><span class="pln"><br/>      </span><span class="tag"><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">></span><span class="pln"><br/>        </span><span class="tag"><template></span><span class="pln">/done.jelly</span><span class="tag"></template></span><span class="pln"><br/>      </span><span class="tag"></view></span><span class="pln"><br/>    </span><span class="tag"></views></span><span class="pln"><br/>  </span><span class="tag"></yanel:custom-config></span><span class="pln"><br/></span><span class="tag"></yanel:resource-config></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"><?</span><span class="embsrc"><span class="pln">xml version</span><span class="pun">=</span><span class="str">"1.0"</span></span><span class="tag">?></span><span class="pln"><br/></span><span class="tag"><j:jelly </span><span class="atn">xmlns:j</span><span class="tag">=</span><span class="atv">"jelly:core"</span><span class="tag">></span><span class="pln"><br/>  </span><span class="tag"><html </span><span class="atn">xmlns</span><span class="tag">=</span><span class="atv">"http://www.w3.org/1999/xhtml"</span><span class="tag">></span><span class="pln"><br/>    </span><span class="tag"><body></span><span class="pln"><br/>      </span><span class="tag"><h1></span><span class="pln">Usecase started</span><span class="tag"></h1></span><span class="pln"><br/>      </span><span class="tag"><p></span><span class="pln">${resource.getErrorMessages()}</spa!
n><span class="tag"></p></span><span class="pln"><br/>      </span><span class="tag"><p></span><span class="pln">${resource.getInfoMessages()}</span><span class="tag"></p></span><span class="pln"><br/>      </span><span class="tag"><form </span><span class="atn">action</span><span class="tag">=</span><span class="atv">""</span><span class="tag">></span><span class="pln"><br/>        </span><span class="tag"><p></span><span class="pln">Now it's: ${resource.getExampleString()}</span><span class="tag"></p></span><span class="pln"><br/>        </span><span class="tag"><p></span><span class="pln">Enter "hello" in the inputfied:</span><span class="tag"></p></span><span class="pln"><br/>        </span><span class="tag"><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">></span><span class="pln"><br/>        </span><span class="tag"><br/></span><span class="pln"><br/>        </span><span class="tag"><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">></span><span class="pln"><br/>        </span><span class="tag"><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">></span><span class="pln"><br/>        </span><span class="tag"><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">></span><span class="pln"><br/>      </span><span class="tag"></form></span><span class="pln"><br/>    </span><span class="tag"></body></span><span class="pln"><br/>  </span><span class="tag"></html></span><span class="pln"><br/></span><span class="tag"></j:jelly></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"><?</span><span class="embsrc"><span class="pln">xml version</span><span class="pun">=</span><span class="str">"1.0"</span></span><span class="tag">?></span><span class="pln"><br/></span><span class="tag"><j:jelly </span><span class="atn">xmlns:j</span><span class="tag">=</span><span class="atv">"jelly:core"</span><span class="tag">></span><span class="pln"><br/>  </span><span class="tag"><html </span><span class="atn">xmlns</span><span class="tag">=</span><span class="atv">"http://www.w3.org/1999/xhtml"</span><span class="tag">></span><span class="pln"><br/>    </span><span class="tag"><body></span><span class="pln"><br/>      </span><span class="tag"><h1></span><span class="pln">Usecase finished</span><span class="tag"></h1></span><span class="pln"><br/>      </span><span class="tag"><p></span><span class="pln">${resource.getErrorMessages()}</sp!
an><span class="tag"></p></span><span class="pln"><br/>      </span><span class="tag"><p></span><span class="pln">${resource.getInfoMessages()}</span><span class="tag"></p></span><span class="pln"><br/>    </span><span class="tag"></body></span><span class="pln"><br/>  </span><span class="tag"></html></span><span class="pln"><br/></span><span class="tag"></j:jelly></span></pre>
+
+</div>
+ </body>
+</html>
More information about the Yanel-commits
mailing list