Thanks a lot for all the help guys. It's appreciated :-)

To be fair all it would take is two extra lines of code to call my
method from that 3rd party page but it's more the principle of the
matter here than what can or can't be done.

We've actually managed to come up with a solution which means we don't
need to touch anything to do with the core page which is brilliant.
It's just going to mean a couple of scheduled tasks running in the
background doing some updating and house cleaning.

Thanks again,
James



On Jan 18, 1:56 pm, "Marc Esher" <[EMAIL PROTECTED]> wrote:
> In that code I posted (which probably won't work anyway), there's no editing
> of the 3rd party code. he's injecting methods into objects, not literally
> modifying code.
>
> best.
>
> marc
>
> On Jan 18, 2008 8:36 AM, Alan Livie <[EMAIL PROTECTED]> wrote:
>
>
>
>
>
> > The problem with this is he would still have to edit the 3rd party code to
> > use the new cfc.
>
> > If the cfc's are managed by a factory / Coldspring then its less of a
> > problem as the change would only need to happen in the factory / coldspring
> > xml config file
>
> > The new cfc could extend the 3rd party one and polymorphism can be used to
> > override the method as suggested below.
>
> > If the cfc's are not managed by a factory then 3rd party code would need
> > to change to call the new cfc in which case the original cfc may as well be
> > changed.
>
> > It's not an easy one!
> > ________________________________________
> > From: [email protected] [EMAIL PROTECTED] On Behalf Of Marc
> > Esher [EMAIL PROTECTED]
> > Sent: 18 January 2008 13:19
> > To: [email protected]
> > Subject: [CFCDEV] Re: Running a child method without a parent knowing -
> > Can it be done?
>
> > this is probably way out there, and it's certainly far more confusing and
> > probably less maintainable and overall a bigger pain in the butt than your
> > proposed solution, but it's friday so what the hell:
>
> > i think you technically could do something like this:
>
> > you could have a new component that had these functions:
>
> > <cfcomponent hint="something i'm gonna inject">
>
> >  <cffunction name="method1">
> >     ....args same as original method1's arguments ...
>
> >    <cfset originalMethod1(arg1=arg1, arg2=arg2....)>
>
> >   <cfset doMyDateStuff()>
>
> >  </cffunction>
>
> >  <cffunction name="doMyDateStuff">
> >     ... do my date stuff here ...
> >  </cffunction>
>
> > </cfcomponent>
>
> > i'm assuming you at least have an instance of the original component
> > containing method 1, or access to that component, so:
>
> > in your code somewheres:
>
> > <cfset myInjector = createObject("component","MyInjector")>
>
> > Now's where it gets weird:
>
> > <!--- 'copy' method 1 into a new function --->
> > <cfset thirdPartyObject["originalMethod1"] = thirdPartyObject["method1"]>
>
> > <!--- override original method 1 with the method1 from your injector --->
> > <cfset thirdPartyObject["doMyDateStuff"] = myInjector["doMyDateStuff"]>
> > <cfset thirdPartyObject["method1"] = myInjector["method1"]>
>
> > when method1 is called, it's going to call the original method 1 that you
> > created by "copy", then it's going to call your date function.
>
> > Now, what I don't know is: A) whether this will work at all. probably not.
> >  B) whether when you overwrite method1 it also technically overwrites
> > originalMethod1 since originalMethod1 just points to method 1. That's my
> > suspicion.
>
> > But hey, if you have nothing else to do and want to futz around with
> > creating hard to understand, unmaintainable method injection stuff that will
> > break whenever ThirdParty releases a new version, it might be fun to at
> > least give it a shot.
>
> > have a great day.
>
> > marc
>
> > On Jan 18, 2008 6:47 AM, Clarkee21 <[EMAIL PROTECTED]<mailto:
> > [EMAIL PROTECTED]>> wrote:
>
> > Hi Marc,
>
> > Yeah we did consider that but there was a few twists and turns to that
> > solution which would have resulted in us basically rewritting the core
> > method as a database script.
>
> > I've actually just had a bit of a brainstorm with one of the guys here
> > and I think we might have come up with a solution in that we just
> > leave the dates and run a scheduled task to wipe any redundant data at
> > a later stage.
>
> > Cheers,
> > James
>
> > On Jan 18, 11:30am, "Marc Esher" < [EMAIL PROTECTED]<mailto:
> > [EMAIL PROTECTED]>> wrote:
> > > I've never heard of anything native in CF for doing this.
>
> > > I'm going to assume that if you're asking this there isn't much use in
> > going
> > > back to the 3rd party tool creators and asking them to add listener
> > hooks.
>
> > > but what about doing it the old fashioned way: putting a trigger on your
> > DB
> > > that looks for changes from 1 to 0 in that column and then responds
> > > appropriately.
>
> > > Best,
>
> > > marc
>
> > > On Jan 18, 2008 6:11 AM, Clarkee21 <[EMAIL PROTECTED]<mailto:
> > [EMAIL PROTECTED]>> wrote:
>
> > > > Hi guys,
>
> > > > I'm a bit of an OO newbie so I was wondering if someone on here might
> > > > be able to help me find an approach to my problem.
>
> > > > I have two methods -
> > > > Method #1 is a core part of a 3rd party open source application we're
> > > > running in-house.
> > > > Method #2 is part of a plugin I'm developing for this application.
>
> > > > Method #1 is used to simply switch a section of a page on or off. In
> > > > other words is sets a DB field "visible" to 0 or 1 depending on the
> > > > section's current status.
>
> > > > Method #2 is used to reset two date fields in my table.
>
> > > > What I want to do is somehow have method #2 executed the moment method
> > > > #1 has run but, and here is the twist, I don't want to have to rewrite
> > > > anything in method #1 or it's object. This is mainly because a) we're
> > > > planning to release this back out into the community at a later stage
> > > > so I'd rather have it as a single directory of stand-alone files and
> > > > b) it would mean we'd have to insert the code into method #1 again and
> > > > retest if we ever upgraded.
>
> > > > Is there anyway that method #2 can "listen" for method #1 being
> > > > executed without method #1 being aware that there is anything else
> > > > going on?
>
> > > > Cheers,
> > > > James- Hide quoted text -
>
> > > - Show quoted text -- Hide quoted text -
>
> - Show quoted text -
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"CFCDev" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/cfcdev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to