changed: #createWebServiceCodeFor:
authorClaus Gittinger <cg@exept.de>
Thu, 02 Jun 2011 12:40:29 +0200
changeset 9934 e8885f059bea
parent 9933 f7fda774209a
child 9935 5a0685d2ee90
changed: #createWebServiceCodeFor: better intitial examples
SmalltalkCodeGeneratorTool.st
--- a/SmalltalkCodeGeneratorTool.st	Fri May 13 12:33:41 2011 +0200
+++ b/SmalltalkCodeGeneratorTool.st	Thu Jun 02 12:40:29 2011 +0200
@@ -1063,12 +1063,12 @@
     metaClass := aClass theMetaclass.
     className := nonMetaClass name.
 
-    (nonMetaClass includesSelector:#process:) ifFalse:[
+    (nonMetaClass includesSelector:#page1:) ifFalse:[
         txt :=
-'process:aRequest
-    "This is the web services main processing method.
-     It will be invoked for every incoming webBrowser-request.
-     The argument, aRequest contains the parameters (url, fields, parameters etc.)."
+'page1:aRequest
+    "This is a sample page-generation method. 
+     This uses the simplest possible way to generate html: generating plain HTML. 
+     See page2 for a more structured example."
 
     |response|
 
@@ -1085,6 +1085,82 @@
         self
             compile:txt
             forClass:nonMetaClass 
+            inCategory:'response generation - pages'.
+    ].
+
+    (nonMetaClass includesSelector:#page2:) ifFalse:[
+        txt :=
+'page2:aRequest
+    "This is a sample page-generation method. 
+     This uses a slightly more convenient way to generate html: using an HTML tree builder. 
+     Event better examples to follow..."
+
+    |page|
+
+    page := HTML::TreeBuilder newDocument.
+    page
+        head;
+            title:''Hello'';
+        headEnd;
+        body;
+            h1:''Hello World'';
+            div;
+                nlsText:''here is some text and '';
+                a; href:''page3''; 
+                    text:''an anchor'';
+                aEnd;
+                text:'' and an image: '';
+                img:(httpServer graphicLinkIdFor:(ToolbarIconLibrary smiley_cool) expirationTimeDelta:30 seconds);
+            divEnd;
+        bodyEnd.
+
+    aRequest reply:(page htmlString).
+'.
+        self
+            compile:txt
+            forClass:nonMetaClass 
+            inCategory:'response generation - pages'.
+    ].
+
+    (nonMetaClass includesSelector:#page3:) ifFalse:[
+        txt :=
+'page3:aRequest
+    "This is a sample page which generates plain text (i.e. nit html)."
+
+    aRequest response
+        contentType:''text/plain'';
+        data:''This is some plain text,
+without any html formatting.''
+'.
+        self
+            compile:txt
+            forClass:nonMetaClass 
+            inCategory:'response generation - pages'.
+    ].
+
+    (nonMetaClass includesSelector:#process:) ifFalse:[
+        txt :=
+'process:aRequest
+    "This is the web services main processing method.
+     It will be invoked for every incoming webBrowser-request.
+     The argument, aRequest contains the parameters (url, fields, parameters etc.); browse HTTPRequest for details.
+     Its response object collects any returned html or other contents. Browse HTTPResponse for more info.
+
+     Here, the simplest possible dipatch method is used: a hardcoded switch on the URL..."
+
+    |whichPage|
+
+    whichPage := aRequest pathRelativeToService.
+    "/ two example pages...
+    ( #( ''page1'' ''page2'' ''page3'' ) includes:whichPage ) ifTrue:[
+        self perform:(whichPage,'':'') asSymbol with:aRequest.
+        ^ self.
+    ].
+    aRequest reportNotFound:''No such page in this service''.
+'.
+        self
+            compile:txt
+            forClass:nonMetaClass 
             inCategory:'response generation'.
     ].
 
@@ -1117,7 +1193,7 @@
 
     self executeCollectedChangesNamed:('Add WebService Code for ' , className).
 
-    "Modified: / 1.2.1998 / 16:10:03 / cg"
+    "Modified: / 02-06-2011 / 12:39:27 / cg"
 !
 
 createWidgetCodeFor:aClass
@@ -2254,5 +2330,5 @@
 !SmalltalkCodeGeneratorTool class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/SmalltalkCodeGeneratorTool.st,v 1.3 2011-02-10 15:58:13 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/SmalltalkCodeGeneratorTool.st,v 1.4 2011-06-02 10:40:29 cg Exp $'
 ! !