[OGo-MacOSX] How can I have the application running in the background without using the windows server

Marcus Müller macosx@opengroupware.org
Mon, 3 Apr 2006 11:20:14 +0200


--Apple-Mail-1-392574081
Content-Transfer-Encoding: 7bit
Content-Type: text/plain;
	charset=US-ASCII;
	delsp=yes;
	format=flowed


On 01.04.2006, at 15:58, Helge Hess wrote:

> On 1. Apr 2006, at 13:01 Uhr, Marcus Mueller wrote:
>> The new implementation is really nice ... it's very close to the  
>> WebObjects idea of doing things (it's using DirectActions and  
>> standard accessor methods for mapping the positional arguments in  
>> an XML-RPC call to the parameters probably used in the direct  
>> action ... very nifty indeed). However, the setup in the  
>> product.plist currently has one glitch ... you have to use the  
>> RequestHandler as the object for adding categories (XML-RPC  
>> methods) to - not the Application object.
>
> I'm pretty sure this isn't the case. You need to define the methods  
> on the SoObject you address in your XML-RPC calls. If you have
>
>   /myapp/so/Calendar
>
> you need to define your methods on the "Calendar" object.
>
> If you need to define the methods on your request handler, you  
> probably use a URL like URL:
>   /myapp/[something]
> which I think returns a WORequestHandler in the path lookup.

Correct. I'm posting to /RPC2 ... thanks for your detailed  
explanation. Just for clarity's sake, I then need to add the  
"categories" to the SoObjectRequestHandler object, i.e.:

--- snip ---
   categories = {
     SoObjectRequestHandler = {
       methods = {
         "system.listMethods" = {
           protectedBy = "View";
           actionClass = "BMSOPEAction";
           actionName  = "listSystemMethods";
           arguments   = { positionalKeys = ( ); };
         };
       };
     };
   };
--- snap ---

> Notably another option supported by SOPE (this is also how its done  
> in Zope) is to use the XML-RPC package name for path processing.  
> Say you want to invoke
>
>   calendar.events.addEvent()
>
> you can either directly map the "calendar.events.addEvent" method  
> in product.plist OR you just map the "addEvent" method and use an  
> object hierarchy like:
>
>   /myapp/so/calendar/events
>
> to define the XML-RPC call. SOPE will automatically revert to  
> namespace processing if it can't find fully qualified method on the  
> target object. (see SoObjectXmlRpcDispatcher.m)

I see. This really offers quite some flexibility, although I can't  
think of a situation where this might be very useful. It's nice to  
have it, though.

Cheers,

   Marcus

-- 
Marcus Mueller  .  .  .  crack-admin/coder ;-)
Mulle kybernetiK  .  http://www.mulle-kybernetik.com
Current projects: http://www.mulle-kybernetik.com/znek/



--Apple-Mail-1-392574081
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=ISO-8859-1

<HTML><BODY style=3D"word-wrap: break-word; -khtml-nbsp-mode: space; =
-khtml-line-break: after-white-space; "><BR><DIV><DIV>On 01.04.2006, at =
15:58, Helge Hess wrote:</DIV><BR =
class=3D"Apple-interchange-newline"><BLOCKQUOTE type=3D"cite"><DIV =
style=3D"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; =
margin-left: 0px; ">On 1. Apr 2006, at 13:01 Uhr, Marcus Mueller =
wrote:</DIV> <BLOCKQUOTE type=3D"cite"><DIV style=3D"margin-top: 0px; =
margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">The new =
implementation is really nice ... it's very close to the WebObjects idea =
of doing things (it's using DirectActions and standard accessor methods =
for mapping the positional arguments in an XML-RPC call to the =
parameters probably used in the direct action ... very nifty indeed). =
However, the setup in the product.plist currently has one glitch ... you =
have to use the RequestHandler as the object for adding categories =
(XML-RPC methods) to - not the Application object.</DIV> =
</BLOCKQUOTE><DIV style=3D"margin-top: 0px; margin-right: 0px; =
margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV =
style=3D"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; =
margin-left: 0px; ">I'm pretty sure this isn't the case. You need to =
define the methods on the SoObject you address in your XML-RPC calls. If =
you have</DIV><DIV style=3D"margin-top: 0px; margin-right: 0px; =
margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV =
style=3D"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; =
margin-left: 0px; "><SPAN class=3D"Apple-converted-space">=A0 =
</SPAN>/myapp/so/Calendar</DIV><DIV style=3D"margin-top: 0px; =
margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: =
14px; "><BR></DIV><DIV style=3D"margin-top: 0px; margin-right: 0px; =
margin-bottom: 0px; margin-left: 0px; ">you need to define your methods =
on the "Calendar" object.</DIV><DIV style=3D"margin-top: 0px; =
margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: =
14px; "><BR></DIV><DIV style=3D"margin-top: 0px; margin-right: 0px; =
margin-bottom: 0px; margin-left: 0px; ">If you need to define the =
methods on your request handler, you probably use a URL like =
URL:</DIV><DIV style=3D"margin-top: 0px; margin-right: 0px; =
margin-bottom: 0px; margin-left: 0px; "><SPAN =
class=3D"Apple-converted-space">=A0 </SPAN>/myapp/[something]</DIV><DIV =
style=3D"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; =
margin-left: 0px; ">which I think returns a WORequestHandler in the path =
lookup.</DIV></BLOCKQUOTE><DIV><BR =
class=3D"khtml-block-placeholder"></DIV><DIV>Correct. I'm posting to =
/RPC2 ... thanks for your detailed explanation. Just for clarity's sake, =
I then need to add the "categories" to the=A0SoObjectRequestHandler =
object, i.e.:</DIV><DIV><BR =
class=3D"khtml-block-placeholder"></DIV><DIV>--- snip ---</DIV><DIV>=A0 =
categories =3D {</DIV><DIV>=A0 =A0 SoObjectRequestHandler =3D =
{</DIV><DIV>=A0 =A0 =A0 methods =3D {</DIV><DIV>=A0 =A0 =A0=A0 =
=A0"system.listMethods" =3D {</DIV><DIV>=A0 =A0 =A0 =A0 =A0 protectedBy =
=3D "View";</DIV><DIV>=A0 =A0 =A0 =A0 =A0 actionClass =3D =
"BMSOPEAction";</DIV><DIV>=A0 =A0 =A0 =A0 =A0 actionName=A0 =3D =
"listSystemMethods";</DIV><DIV>=A0 =A0 =A0 =A0 =A0 arguments=A0=A0 =3D { =
positionalKeys =3D ( ); };</DIV><DIV>=A0 =A0 =A0 =A0 };</DIV><DIV>=A0 =A0 =
=A0 };</DIV><DIV>=A0 =A0 };</DIV><DIV>=A0 };</DIV><DIV>--- snap =
---</DIV><BR><BLOCKQUOTE type=3D"cite"><DIV style=3D"margin-top: 0px; =
margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Notably =
another option supported by SOPE (this is also how its done in Zope) is =
to use the XML-RPC package name for path processing. Say you want to =
invoke</DIV><DIV style=3D"margin-top: 0px; margin-right: 0px; =
margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV =
style=3D"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; =
margin-left: 0px; "><SPAN class=3D"Apple-converted-space">=A0 =
</SPAN>calendar.events.addEvent()</DIV><DIV style=3D"margin-top: 0px; =
margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: =
14px; "><BR></DIV><DIV style=3D"margin-top: 0px; margin-right: 0px; =
margin-bottom: 0px; margin-left: 0px; ">you can either directly map the =
"calendar.events.addEvent" method in product.plist OR you just map the =
"addEvent" method and use an object hierarchy like:</DIV><DIV =
style=3D"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; =
margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style=3D"margin-top: =
0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><SPAN =
class=3D"Apple-converted-space">=A0 =
</SPAN>/myapp/so/calendar/events</DIV><DIV style=3D"margin-top: 0px; =
margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: =
14px; "><BR></DIV><DIV style=3D"margin-top: 0px; margin-right: 0px; =
margin-bottom: 0px; margin-left: 0px; ">to define the XML-RPC call. SOPE =
will automatically revert to namespace processing if it can't find fully =
qualified method on the target object. (see =
SoObjectXmlRpcDispatcher.m)</DIV></BLOCKQUOTE></DIV><DIV><BR =
class=3D"khtml-block-placeholder"></DIV>I see. This really offers quite =
some flexibility, although I can't think of a situation where this might =
be very useful. It's nice to have it, though.<DIV><BR><DIV> <SPAN =
class=3D"Apple-style-span" style=3D"border-collapse: separate; =
border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Helvetica; =
font-size: 12px; font-style: normal; font-variant: normal; font-weight: =
normal; letter-spacing: normal; line-height: normal; text-align: auto; =
-khtml-text-decorations-in-effect: none; text-indent: 0px; =
-apple-text-size-adjust: auto; text-transform: none; orphans: 2; =
white-space: normal; widows: 2; word-spacing: 0px; "><SPAN =
class=3D"Apple-style-span" style=3D"border-collapse: separate; =
border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Helvetica; =
font-size: 12px; font-style: normal; font-variant: normal; font-weight: =
normal; letter-spacing: normal; line-height: normal; text-align: auto; =
-khtml-text-decorations-in-effect: none; text-indent: 0px; =
-apple-text-size-adjust: auto; text-transform: none; orphans: 2; =
white-space: normal; widows: 2; word-spacing: 0px; "><P style=3D"margin: =
0.0px 0.0px 0.0px 0.0px"><FONT face=3D"Helvetica" size=3D"3" =
style=3D"font: 12.0px Helvetica">Cheers,</FONT></P><P style=3D"margin: =
0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: =
14.0px"><BR></P><P style=3D"margin: 0.0px 0.0px 0.0px 0.0px"><FONT =
face=3D"Helvetica" size=3D"3" style=3D"font: 12.0px Helvetica"><SPAN =
class=3D"Apple-converted-space">=A0<SPAN =
class=3D"Apple-converted-space">=A0</SPAN></SPAN>Marcus</FONT></P><P =
style=3D"margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; =
min-height: 14.0px"><BR></P><P style=3D"margin: 0.0px 0.0px 0.0px =
0.0px"><FONT face=3D"Helvetica" size=3D"3" style=3D"font: 12.0px =
Helvetica">--<SPAN class=3D"Apple-converted-space">=A0</SPAN></FONT></P><P=
 style=3D"margin: 0.0px 0.0px 0.0px 0.0px"><FONT face=3D"Helvetica" =
size=3D"3" style=3D"font: 12.0px Helvetica">Marcus Mueller<SPAN =
class=3D"Apple-converted-space">=A0<SPAN =
class=3D"Apple-converted-space">=A0</SPAN></SPAN>.<SPAN =
class=3D"Apple-converted-space">=A0<SPAN =
class=3D"Apple-converted-space">=A0</SPAN></SPAN>.<SPAN =
class=3D"Apple-converted-space">=A0<SPAN =
class=3D"Apple-converted-space">=A0</SPAN></SPAN>.<SPAN =
class=3D"Apple-converted-space">=A0<SPAN =
class=3D"Apple-converted-space">=A0</SPAN></SPAN>crack-admin/coder =
;-)</FONT></P><P style=3D"margin: 0.0px 0.0px 0.0px 0.0px"><FONT =
face=3D"Helvetica" size=3D"3" style=3D"font: 12.0px Helvetica">Mulle =
kybernetiK<SPAN class=3D"Apple-converted-space">=A0<SPAN =
class=3D"Apple-converted-space">=A0</SPAN></SPAN>.<SPAN =
class=3D"Apple-converted-space">=A0<SPAN =
class=3D"Apple-converted-space">=A0</SPAN></SPAN><A =
href=3D"http://www.mulle-kybernetik.com">http://www.mulle-kybernetik.com</=
A></FONT></P><P style=3D"margin: 0.0px 0.0px 0.0px 0.0px"><FONT =
face=3D"Helvetica" size=3D"3" style=3D"font: 12.0px Helvetica">Current =
projects:=A0<A =
href=3D"http://www.mulle-kybernetik.com/znek/">http://www.mulle-kybernetik=
.com/znek/</A></FONT></P><BR =
class=3D"Apple-interchange-newline"></SPAN></SPAN> =
</DIV><BR></DIV></BODY></HTML>=

--Apple-Mail-1-392574081--