Loading ...
Sorry, an error occurred while loading the content.

RE: [soaplite] General Question

Expand Messages
  • David Mullens
    Hi, Thanks for the help... I m having trouble with the statement: die No such method... n unless exists $%methods_map{$method}; It seems to be
    Message 1 of 5 , Aug 1, 2001
    • 0 Attachment
      Hi,

      Thanks for the help... I'm having trouble with the statement:

      die "No such method...\n" unless exists $%methods_map{$method};

      It seems to be $%methods_map{$method} that is causing the trouble. I get
      the error: Bareword found where operator expected at ./MainInterface.cgi
      line 21, near "$%methods_map"
      (Missing operator before methods_map?)

      Since I'm new to perl, I'm not sure what the problem is. It works fine if I
      put it in the die "No.....$%methods_map{$method}"..... statement.

      Thanks for the help.

      DAve.



      -----Original Message-----
      From: soaplite@yahoogroups.com [mailto:soaplite@yahoogroups.com]
      Sent: Tuesday, July 31, 2001 8:44 PM
      To: soaplite@yahoogroups.com
      Subject: Re: [soaplite] General Question
      Importance: Low


      Hi, David!

      >> I'm wanting to have several small scripts (modules) called from a
      >> large main
      it IS definitely possible. Yet I'm not sure that is right approach.
      Combination of URI and method will tell you what module/method to
      use. You want to fix URI and map method to different combinations of
      module/method on server side. Doable, but I'd rather create one
      AUTOLOAD function and build it dynamically from hash:

      use SOAP::Transport::HTTP;
      SOAP::Transport::HTTP::CGI
      -> dispatch_to('MainInterface')
      -> handle;

      package MainInterface;

      use vars qw($AUTOLOAD);

      my %methods_map = (
      method1 => ['package', 'method'],
      method2 => ['package', 'method1'],
      );

      sub AUTOLOAD {
      my $method = substr($AUTOLOAD, rindex($AUTOLOAD, '::') + 2);
      return if $method eq 'DESTROY';

      die "No such method...\n" unless exists $%methods_map{$method};
      my($package, $method) = @{$methods_map{$method}};
      eval "require $package" or die;
      # little trick that allows you to implement
      # method (OO) rather than function calls
      $method = "${package}::$method";
      shift->$method(@_);
      # don't forget that first parameter is class/object
      # shift it if you don't need that
      }

      All other modules can be implemented in usual fashion.

      >> In the Methods module, I would have
      >>
      >> use SOAP::Transport::HTTP;
      >> SOAP::Transport::HTTP::CGI
      >> -> dispatch_to('Modules')
      >> -> handle;
      you don't need that in Methods module, only usual module code.

      >> Is this possible? Right now I'm getting an access denied.
      Access denien where? Could you provide request/response payload if
      you still have problems? Hope it helps.

      Best wishes, Paul.

      --- David Mullens <damullens@...> wrote:
      >> Hi,
      >>
      >> I'm wanting to have several small scripts (modules) called from a
      >> large main
      >> script. The main script would basically have:
      >>
      >>
      >> use SOAP::Transport::HTTP;
      >> SOAP::Transport::HTTP::CGI
      >> -> dispatch_to('MainInterface')
      >> -> handle;
      >>
      >> package MainInterface;
      >>
      >> use Methods;
      >>
      >> sub methodName {
      >> &Methods::method_Name;
      >> }
      >>
      >>
      >>
      >> In the Methods module, I would have
      >>
      >> use SOAP::Transport::HTTP;
      >> SOAP::Transport::HTTP::CGI
      >> -> dispatch_to('Modules')
      >> -> handle;
      >>
      >> sub method_Name {
      >> # some type of logic here
      >>
      >> return $whatever;
      >> }
      >>
      >>
      >> For each subroutine in the main script, there would be a module.
      >>
      >> The reason why we are wanting to implement SOAP this way, is so we
      >> can
      >> setup the endpoint url in a database (or java properties file) and
      >> the
      >> person programming the client won't have to worry about different
      >> endpoints,
      >> only the method to call. We can create new modules, then enter
      >> them in our
      >> main endpoint script. The main script will take care of the call.
      >>
      >> When ever something needs to be updated, we don't have to touch the
      >> main
      >> endpoint script at all. We can edit whatever module we want.
      >> There is a
      >> chance that we will have 200 or so modules when all is finished.
      >>
      >> Is this possible? Right now I'm getting an access denied.
      >>
      >> Is this the best way to implement things? We really don't want one
      >> script
      >> with 200 subroutines (at least with all the logic) and we don't
      >> want one
      >> script for each endpoint. We thought if we implement it with one
      >> main
      >> script calling different modules, it would be easier to maintain.
      >>
      >>
      >>
      >> Thanks for any suggestions,
      >>
      >> Dave.
      >>
      >>
      >> ------------------------ Yahoo! Groups Sponsor
      >>
      >> To unsubscribe from this group, send an email to:
      >> soaplite-unsubscribe@yahoogroups.com
      >>
      >>
      >>
      >> Your use of Yahoo! Groups is subject to
      >> http://docs.yahoo.com/info/terms/
      >>
      >>


      __________________________________________________
      Do You Yahoo!?
      Make international calls for as low as $.04/minute with Yahoo! Messenger
      http://phonecard.yahoo.com/


      To unsubscribe from this group, send an email to:
      soaplite-unsubscribe@yahoogroups.com



      Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
    • Paul Kulchenko
      Hi, David! ... should be: die No such method... n unless exists $methods_map{$method}; I didn t test it, just typed out of my head. ... I advise you to stay
      Message 2 of 5 , Aug 1, 2001
      • 0 Attachment
        Hi, David!

        > Thanks for the help... I'm having trouble with the statement:
        >
        > die "No such method...\n" unless exists $%methods_map{$method};
        should be:

        die "No such method...\n" unless exists $methods_map{$method};

        I didn't test it, just typed out of my head.

        > Since I'm new to perl, I'm not sure what the problem is. It works
        I advise you to stay with more simple case (access from your client
        only classes/methods you really have on server) and then move toward
        more complex case you discussed.

        Best wishes, Paul.

        --- David Mullens <damullens@...> wrote:
        > Hi,
        >
        > Thanks for the help... I'm having trouble with the statement:
        >
        > die "No such method...\n" unless exists $%methods_map{$method};
        >
        > It seems to be $%methods_map{$method} that is causing the trouble.
        > I get
        > the error: Bareword found where operator expected at
        > ./MainInterface.cgi
        > line 21, near "$%methods_map"
        > (Missing operator before methods_map?)
        >
        > Since I'm new to perl, I'm not sure what the problem is. It works
        > fine if I
        > put it in the die "No.....$%methods_map{$method}"..... statement.
        >
        > Thanks for the help.
        >
        > DAve.
        >
        >
        >
        > -----Original Message-----
        > From: soaplite@yahoogroups.com [mailto:soaplite@yahoogroups.com]
        > Sent: Tuesday, July 31, 2001 8:44 PM
        > To: soaplite@yahoogroups.com
        > Subject: Re: [soaplite] General Question
        > Importance: Low
        >
        >
        > Hi, David!
        >
        > >> I'm wanting to have several small scripts (modules) called from
        > a
        > >> large main
        > it IS definitely possible. Yet I'm not sure that is right approach.
        > Combination of URI and method will tell you what module/method to
        > use. You want to fix URI and map method to different combinations
        > of
        > module/method on server side. Doable, but I'd rather create one
        > AUTOLOAD function and build it dynamically from hash:
        >
        > use SOAP::Transport::HTTP;
        > SOAP::Transport::HTTP::CGI
        > -> dispatch_to('MainInterface')
        > -> handle;
        >
        > package MainInterface;
        >
        > use vars qw($AUTOLOAD);
        >
        > my %methods_map = (
        > method1 => ['package', 'method'],
        > method2 => ['package', 'method1'],
        > );
        >
        > sub AUTOLOAD {
        > my $method = substr($AUTOLOAD, rindex($AUTOLOAD, '::') + 2);
        > return if $method eq 'DESTROY';
        >
        > die "No such method...\n" unless exists $%methods_map{$method};
        > my($package, $method) = @{$methods_map{$method}};
        > eval "require $package" or die;
        > # little trick that allows you to implement
        > # method (OO) rather than function calls
        > $method = "${package}::$method";
        > shift->$method(@_);
        > # don't forget that first parameter is class/object
        > # shift it if you don't need that
        > }
        >
        > All other modules can be implemented in usual fashion.
        >
        > >> In the Methods module, I would have
        > >>
        > >> use SOAP::Transport::HTTP;
        > >> SOAP::Transport::HTTP::CGI
        > >> -> dispatch_to('Modules')
        > >> -> handle;
        > you don't need that in Methods module, only usual module code.
        >
        > >> Is this possible? Right now I'm getting an access denied.
        > Access denien where? Could you provide request/response payload if
        > you still have problems? Hope it helps.
        >
        > Best wishes, Paul.
        >
        > --- David Mullens <damullens@...> wrote:
        > >> Hi,
        > >>
        > >> I'm wanting to have several small scripts (modules) called from
        > a
        > >> large main
        > >> script. The main script would basically have:
        > >>
        > >>
        > >> use SOAP::Transport::HTTP;
        > >> SOAP::Transport::HTTP::CGI
        > >> -> dispatch_to('MainInterface')
        > >> -> handle;
        > >>
        > >> package MainInterface;
        > >>
        > >> use Methods;
        > >>
        > >> sub methodName {
        > >> &Methods::method_Name;
        > >> }
        > >>
        > >>
        > >>
        > >> In the Methods module, I would have
        > >>
        > >> use SOAP::Transport::HTTP;
        > >> SOAP::Transport::HTTP::CGI
        > >> -> dispatch_to('Modules')
        > >> -> handle;
        > >>
        > >> sub method_Name {
        > >> # some type of logic here
        > >>
        > >> return $whatever;
        > >> }
        > >>
        > >>
        > >> For each subroutine in the main script, there would be a module.
        > >>
        > >> The reason why we are wanting to implement SOAP this way, is so
        > we
        > >> can
        > >> setup the endpoint url in a database (or java properties file)
        > and
        > >> the
        > >> person programming the client won't have to worry about
        > different
        > >> endpoints,
        > >> only the method to call. We can create new modules, then enter
        > >> them in our
        > >> main endpoint script. The main script will take care of the
        > call.
        > >>
        > >> When ever something needs to be updated, we don't have to touch
        > the
        > >> main
        > >> endpoint script at all. We can edit whatever module we want.
        > >> There is a
        > >> chance that we will have 200 or so modules when all is
        > finished.
        > >>
        > >> Is this possible? Right now I'm getting an access denied.
        > >>
        > >> Is this the best way to implement things? We really don't want
        > one
        > >> script
        > >> with 200 subroutines (at least with all the logic) and we don't
        > >> want one
        > >> script for each endpoint. We thought if we implement it with
        > one
        > >> main
        > >> script calling different modules, it would be easier to
        > maintain.
        > >>
        > >>
        > >>
        > >> Thanks for any suggestions,
        > >>
        > >> Dave.
        > >>
        > >>
        > >> ------------------------ Yahoo! Groups Sponsor
        > >>
        > >> To unsubscribe from this group, send an email to:
        > >> soaplite-unsubscribe@yahoogroups.com
        > >>
        > >>
        > >>
        > >> Your use of Yahoo! Groups is subject to
        > >> http://docs.yahoo.com/info/terms/
        > >>
        > >>
        >
        >
        > __________________________________________________
        > Do You Yahoo!?
        > Make international calls for as low as $.04/minute with Yahoo!
        > Messenger
        > http://phonecard.yahoo.com/
        >
        >
        > To unsubscribe from this group, send an email to:
        > soaplite-unsubscribe@yahoogroups.com
        >
        >
        >
        > Your use of Yahoo! Groups is subject to
        > http://docs.yahoo.com/info/terms/
        >
        >
        >
        >
        >
        === message truncated ===


        __________________________________________________
        Do You Yahoo!?
        Make international calls for as low as $.04/minute with Yahoo! Messenger
        http://phonecard.yahoo.com/
      • David Mullens
        Thanks again for all your help! I think I see how I can do it now! You ve helped a lot. Now on to authentication....... Peace, Dave. ... From:
        Message 3 of 5 , Aug 1, 2001
        • 0 Attachment
          Thanks again for all your help! I think I see how I can do it now! You've
          helped a lot.

          Now on to authentication.......

          Peace,

          Dave.

          -----Original Message-----
          From: soaplite@yahoogroups.com [mailto:soaplite@yahoogroups.com]
          Sent: Wednesday, August 01, 2001 12:32 PM
          To: soaplite@yahoogroups.com
          Subject: RE: [soaplite] General Question
          Importance: Low


          Hi, David!

          >> Thanks for the help... I'm having trouble with the statement:
          >>
          >> die "No such method...\n" unless exists $%methods_map{$method};
          should be:

          die "No such method...\n" unless exists $methods_map{$method};

          I didn't test it, just typed out of my head.

          >> Since I'm new to perl, I'm not sure what the problem is. It works
          I advise you to stay with more simple case (access from your client
          only classes/methods you really have on server) and then move toward
          more complex case you discussed.

          Best wishes, Paul.

          --- David Mullens <damullens@...> wrote:
          >> Hi,
          >>
          >> Thanks for the help... I'm having trouble with the statement:
          >>
          >> die "No such method...\n" unless exists $%methods_map{$method};
          >>
          >> It seems to be $%methods_map{$method} that is causing the trouble.
          >> I get
          >> the error: Bareword found where operator expected at
          >> ./MainInterface.cgi
          >> line 21, near "$%methods_map"
          >> (Missing operator before methods_map?)
          >>
          >> Since I'm new to perl, I'm not sure what the problem is. It works
          >> fine if I
          >> put it in the die "No.....$%methods_map{$method}"..... statement.
          >>
          >> Thanks for the help.
          >>
          >> DAve.
          >>
          >>
          >>
          >> -----Original Message-----
          >> From: soaplite@yahoogroups.com [mailto:soaplite@yahoogroups.com]
          >> Sent: Tuesday, July 31, 2001 8:44 PM
          >> To: soaplite@yahoogroups.com
          >> Subject: Re: [soaplite] General Question
          >> Importance: Low
          >>
          >>
          >> Hi, David!
          >>
          >> >> I'm wanting to have several small scripts (modules) called from
          >> a
          >> >> large main
          >> it IS definitely possible. Yet I'm not sure that is right approach.
          >> Combination of URI and method will tell you what module/method to
          >> use. You want to fix URI and map method to different combinations
          >> of
          >> module/method on server side. Doable, but I'd rather create one
          >> AUTOLOAD function and build it dynamically from hash:
          >>
          >> use SOAP::Transport::HTTP;
          >> SOAP::Transport::HTTP::CGI
          >> -> dispatch_to('MainInterface')
          >> -> handle;
          >>
          >> package MainInterface;
          >>
          >> use vars qw($AUTOLOAD);
          >>
          >> my %methods_map = (
          >> method1 => ['package', 'method'],
          >> method2 => ['package', 'method1'],
          >> );
          >>
          >> sub AUTOLOAD {
          >> my $method = substr($AUTOLOAD, rindex($AUTOLOAD, '::') + 2);
          >> return if $method eq 'DESTROY';
          >>
          >> die "No such method...\n" unless exists $%methods_map{$method};
          >> my($package, $method) = @{$methods_map{$method}};
          >> eval "require $package" or die;
          >> # little trick that allows you to implement
          >> # method (OO) rather than function calls
          >> $method = "${package}::$method";
          >> shift->$method(@_);
          >> # don't forget that first parameter is class/object
          >> # shift it if you don't need that
          >> }
          >>
          >> All other modules can be implemented in usual fashion.
          >>
          >> >> In the Methods module, I would have
          >> >>
          >> >> use SOAP::Transport::HTTP;
          >> >> SOAP::Transport::HTTP::CGI
          >> >> -> dispatch_to('Modules')
          >> >> -> handle;
          >> you don't need that in Methods module, only usual module code.
          >>
          >> >> Is this possible? Right now I'm getting an access denied.
          >> Access denien where? Could you provide request/response payload if
          >> you still have problems? Hope it helps.
          >>
          >> Best wishes, Paul.
          >>
          >> --- David Mullens <damullens@...> wrote:
          >> >> Hi,
          >> >>
          >> >> I'm wanting to have several small scripts (modules) called from
          >> a
          >> >> large main
          >> >> script. The main script would basically have:
          >> >>
          >> >>
          >> >> use SOAP::Transport::HTTP;
          >> >> SOAP::Transport::HTTP::CGI
          >> >> -> dispatch_to('MainInterface')
          >> >> -> handle;
          >> >>
          >> >> package MainInterface;
          >> >>
          >> >> use Methods;
          >> >>
          >> >> sub methodName {
          >> >> &Methods::method_Name;
          >> >> }
          >> >>
          >> >>
          >> >>
          >> >> In the Methods module, I would have
          >> >>
          >> >> use SOAP::Transport::HTTP;
          >> >> SOAP::Transport::HTTP::CGI
          >> >> -> dispatch_to('Modules')
          >> >> -> handle;
          >> >>
          >> >> sub method_Name {
          >> >> # some type of logic here
          >> >>
          >> >> return $whatever;
          >> >> }
          >> >>
          >> >>
          >> >> For each subroutine in the main script, there would be a module.
          >> >>
          >> >> The reason why we are wanting to implement SOAP this way, is so
          >> we
          >> >> can
          >> >> setup the endpoint url in a database (or java properties file)
          >> and
          >> >> the
          >> >> person programming the client won't have to worry about
          >> different
          >> >> endpoints,
          >> >> only the method to call. We can create new modules, then enter
          >> >> them in our
          >> >> main endpoint script. The main script will take care of the
          >> call.
          >> >>
          >> >> When ever something needs to be updated, we don't have to touch
          >> the
          >> >> main
          >> >> endpoint script at all. We can edit whatever module we want.
          >> >> There is a
          >> >> chance that we will have 200 or so modules when all is
          >> finished.
          >> >>
          >> >> Is this possible? Right now I'm getting an access denied.
          >> >>
          >> >> Is this the best way to implement things? We really don't want
          >> one
          >> >> script
          >> >> with 200 subroutines (at least with all the logic) and we don't
          >> >> want one
          >> >> script for each endpoint. We thought if we implement it with
          >> one
          >> >> main
          >> >> script calling different modules, it would be easier to
          >> maintain.
          >> >>
          >> >>
          >> >>
          >> >> Thanks for any suggestions,
          >> >>
          >> >> Dave.
          >> >>
          >> >>
          >> >> ------------------------ Yahoo! Groups Sponsor
          >> >>
          >> >> To unsubscribe from this group, send an email to:
          >> >> soaplite-unsubscribe@yahoogroups.com
          >> >>
          >> >>
          >> >>
          >> >> Your use of Yahoo! Groups is subject to
          >> >> http://docs.yahoo.com/info/terms/
          >> >>
          >> >>
          >>
          >>
          >> __________________________________________________
          >> Do You Yahoo!?
          >> Make international calls for as low as $.04/minute with Yahoo!
          >> Messenger
          >> http://phonecard.yahoo.com/
          >>
          >>
          >> To unsubscribe from this group, send an email to:
          >> soaplite-unsubscribe@yahoogroups.com
          >>
          >>
          >>
          >> Your use of Yahoo! Groups is subject to
          >> http://docs.yahoo.com/info/terms/
          >>
          >>
          >>
          >>
          >>
          === message truncated ===


          __________________________________________________
          Do You Yahoo!?
          Make international calls for as low as $.04/minute with Yahoo! Messenger
          http://phonecard.yahoo.com/


          To unsubscribe from this group, send an email to:
          soaplite-unsubscribe@yahoogroups.com



          Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
        Your message has been successfully submitted and would be delivered to recipients shortly.