[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--