[transfer-dev] Re: is there an issue with the codegen abstractbasegenerator's use of structCopy() in CF9
Thanks Mark. I book marked the adobe bug tracker.. seems like it might come in handy when researching these issues before posting to fw lists. Guess I'll just keep the state=duplicate(arguments); change I had made in my copy of the framework until something happens with this bug.. just gotta remember to use my svn url on a new deployment and not the public one. On Mar 17, 4:38 pm, Mark Mandel mark.man...@gmail.com wrote: Sorry about the late reply. Looks like this is a bug in CF9 that they are looking at fixing. http://cfbugs.adobe.com/cfbugreport/flexbugui/cfbugtracker/main.html#... Just got the email: * The bug entered on Thursday, July 23, 2009 has been marked verified by Adobe ColdFusion Team. This means Adobe ColdFusion Team has verified the behavior you've observed. (If this email is addressed to you directly, you've logged this bug. Otherwise, you've subscribed to this bug through the Adobe beta site and are receiving a BCC.) Targeted for: ColdFusion 9.0.1, Beta 1 Note: Any targeting information included above is an estimate. Targeting can change during the course of bug triage. Product Area: CFML Function (General) Severity: 6 - Low (Easy workaround only affects small group) Description: Doing a StructCopy() on the arguments scope doesn't return a copy of the arguments scope - it simply returns the arguments scope.This is very confusing, as changes to the returned struct from StructCopy() also occur on the arguments scope, as it is a reference. * On Sat, Mar 13, 2010 at 7:43 AM, Adam Drew epne...@gmail.com wrote: Mark, Just curious if you've encountered this issue.. on like 87 of the AbstractBaseGenerator you use structCopy() to set the local state from the agruments.. then later you delete two arguments (path, and escapeCFML) from that state struct.. however, it then goes on to throw an escapeCFML not found in arguments error on my CF9 apps unless i change that to a Duplicate(arguments).. is this a known issue or could it be something else? regards, Adam Drew -- Before posting questions to the group please read: http://groups.google.com/group/transfer-dev/web/how-to-ask-support-qu... Try out the new Transfer ORM Custom Google Search: http://www.google.com/cse/home?cx=002375903941309441958:2s7wbd5ocb8 You received this message because you are subscribed to the Google Groups transfer-dev group. To post to this group, send email to transfer-dev@googlegroups.com To unsubscribe from this group, send email to transfer-dev+unsubscr...@googlegroups.comtransfer-dev%2bunsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/transfer-dev?hl=en -- E: mark.man...@gmail.com T:http://www.twitter.com/neurotic W:www.compoundtheory.com Hands-on ColdFusion ORM Training @ cf.Objective() 2010www.ColdFusionOrmTraining.com/ -- Before posting questions to the group please read: http://groups.google.com/group/transfer-dev/web/how-to-ask-support-questions-on-transfer Try out the new Transfer ORM Custom Google Search: http://www.google.com/cse/home?cx=002375903941309441958:2s7wbd5ocb8 You received this message because you are subscribed to the Google Groups transfer-dev group. To post to this group, send email to transfer-dev@googlegroups.com To unsubscribe from this group, send email to transfer-dev+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/transfer-dev?hl=en To unsubscribe from this group, send email to transfer-dev+unsubscribegooglegroups.com or reply to this email with the words REMOVE ME as the subject.
[transfer-dev] is there an issue with the codegen abstractbasegenerator's use of structCopy() in CF9
Mark, Just curious if you've encountered this issue.. on like 87 of the AbstractBaseGenerator you use structCopy() to set the local state from the agruments.. then later you delete two arguments (path, and escapeCFML) from that state struct.. however, it then goes on to throw an escapeCFML not found in arguments error on my CF9 apps unless i change that to a Duplicate(arguments).. is this a known issue or could it be something else? regards, Adam Drew -- Before posting questions to the group please read: http://groups.google.com/group/transfer-dev/web/how-to-ask-support-questions-on-transfer Try out the new Transfer ORM Custom Google Search: http://www.google.com/cse/home?cx=002375903941309441958:2s7wbd5ocb8 You received this message because you are subscribed to the Google Groups transfer-dev group. To post to this group, send email to transfer-dev@googlegroups.com To unsubscribe from this group, send email to transfer-dev+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/transfer-dev?hl=en
[transfer-dev] Re: CF9
Alternatively, has anyone given considering to turning transfer into a wrapper about CF9's inbuilt hibernate support to allow a migration path? That would be tricky, considering they work in some pretty significantly different ways, including but not limited to configuration. Although I have not thought about using Transfer to wrap CF9 ORM in any way shape or form.. I do plan on using Transfer's codegen to dupe my objects for use with CF9 ORM. This is based on some work I had been doing with odegen for decorators, ddl, and xml templates just prior to the release of CF9 beta.. now seeing the cf9 orm implementation, I still still find value in using Transfer as the shoe fits... I believe one could create an abstract ORM layer which supports both ORMs in any of your applications mainly by rolling some orm factory/ service/gateway combo with some codegen templates for each ORM.. then some application.cfc logic to determine which ORM to generate for and load up based on the server version in use, but maybe I'm am crazy. I will deploy on CF9 ORM and want to take full advantage of it's benefits within my application, but maybe a client is on CF8 or even CF7(argh).. So wherever possible I would like to have the same frameworks behind both versions of my application, and I really think Transfer will help me realize this and continue to play a significant role in my applications architecture going forward... From what I have seen recently I get the feeling that all things CF ORM are going to start boiling real soon.. I just hope we can keep things in context. CF9 is amazingly good.. but so is Transfer... Yet, neither techonlogy will help you if you do not understand when you should be using a o2m, m2o, m2m, or a o2o, bi-m2m... I still find this hard to nail down in some of my more complex models... Just imagine all the CF people who have never used an ORM before and are going to be getting started with CF9-Hibernate.. They are going to end up relying on Transfer's users for these answers... as I already know this group has been a invaluable resource for me... I just wanted to say, thanks people! --~--~-~--~~~---~--~~ Before posting questions to the group please read: http://groups.google.com/group/transfer-dev/web/how-to-ask-support-questions-on-transfer You received this message because you are subscribed to the Google Groups transfer-dev group. To post to this group, send email to transfer-dev@googlegroups.com To unsubscribe from this group, send email to transfer-dev-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/transfer-dev?hl=en -~--~~~~--~~--~--~---
[transfer-dev] Re: transfer.codegen (BER)
gen:commentComment Text Here/gen:comment Which would generate the comment text wrapped with the getCommentStart () and getCommentEnd() tags !--- Comment Text Here --- or !-- Comment Text Here -- or /* Comment Text Here */ Anyways, I'm not really sure that I really *need* this at this point since I could just type out the comments normally in the template.. I was thinking it would be nice to have in a gen:comment since my generators already know what the comment start and end looked like. On Jun 13, 6:19 pm, Mark Mandel mark.man...@gmail.com wrote: Adam, I'm not 100% sure what you are talking about could you give me an example? Are you saying you want a standard Template comment? i.e. a comment syntax that is always ignored in the template? Mark On Sun, Jun 14, 2009 at 12:55 AM, Adam Drew epne...@gmail.com wrote: Mark, I feel like I need a comment tag for the templates so that whatever comment method is being used by my generator is used in the template.. in this way I could standardize my template writing regardless if I'm wrighting CFCs, CFMs, XMLs, or DDLs,.. I'm going to review the block, compact, and template tags to see if i am missing something and come up with the answer on my own.. but let me know if I am missing something or if you have any thoughts about this. AD -- E: mark.man...@gmail.com W:www.compoundtheory.com --~--~-~--~~~---~--~~ Before posting questions to the group please read: http://groups.google.com/group/transfer-dev/web/how-to-ask-support-questions-on-transfer You received this message because you are subscribed to the Google Groups transfer-dev group. To post to this group, send email to transfer-dev@googlegroups.com To unsubscribe from this group, send email to transfer-dev-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/transfer-dev?hl=en -~--~~~~--~~--~--~---
[transfer-dev] Re: transfer.codegen (BER)
To be more specific, here is a dump of the type of precision data i'm looking to use with the DDL struct CHAR_OCTET_LENGTH 0 COLUMN_DEFAULT_VALUE[empty string] COLUMN_NAME id COLUMN_SIZE 18 DECIMAL_DIGITS 0 IS_FOREIGNKEY NO IS_NULLABLE NO IS_PRIMARYKEY YES ORDINAL_POSITION1 REFERENCED_PRIMARYKEY N/A REFERENCED_PRIMARYKEY_TABLE N/A REMARKS [empty string] TYPE_NAME numeric() identity --~--~-~--~~~---~--~~ Before posting questions to the group please read: http://groups.google.com/group/transfer-dev/web/how-to-ask-support-questions-on-transfer You received this message because you are subscribed to the Google Groups transfer-dev group. To post to this group, send email to transfer-dev@googlegroups.com To unsubscribe from this group, send email to transfer-dev-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/transfer-dev?hl=en -~--~~~~--~~--~--~---
[transfer-dev] Re: transfer.codegen (BER)
To follow up on topic.. I got my xml generator working beautifully by overloading the init() function and setting setCommentStart(! --); .. I ended up creating an AbstractXMLGenerator which I extend myself for the different types of xml config I need for my forms, validations, searchs, audits, and many other areas of object specific metadata configurations... Now I'm thinking that to be able to generate DDL based on Transfer.XML seams to be the next logical step for me because basically right now I am doing the complete reverse of that process with an cb interceptor and a set of Service/Gateway objects.. I created a CFDatasourceGateway which uses DBInfo based on the concepts found in the TransferConfig project, and I have my TranseferConfigService use it to generate me some transfer.xml based on some specific conventions I've used in my SQL database. This introspects the DB and generates the transfer.xml (w/Packages, M2O, O2M + M2M Relationships)... The next interceptors loads Transfer and runs my generators based on that So if I could implement a DDL generator in addition this would allow me to either build the database up in SQL with my abstract model conventions and then generate my transfer.xml from that.. or just build my transfer.xml and then generate the database based on that... either way, having this ability to go either way with the development process would be nothing short of sick... I will post any progress on the subject, Thanks for the suggestions. -Adam On Jun 12, 9:21 pm, Mark Mandel mark.man...@gmail.com wrote: A side note on all this... if anyone wants to write a generator to output DDL table generation based on Transfer meta data... that would be pretty cool ;o) Mark On Fri, Jun 12, 2009 at 10:20 AM, Adam Drew epne...@gmail.com wrote: But what IF you have the cb app redirect the client to the static ColdDoc URL no matter what.. the afterConfigurationLoad interceptor would *update* the ColdDoc's static BER folder before redirecting the client there... and all you would have to do after a significant API change was restart the public CB app with a fwreinit password. Maybe I had tooo much Hop Stooopid tonight. On Jun 11, 8:11 pm, Mark Mandel mark.man...@gmail.com wrote: Because ColdDoc does static generation of the HTML files, not a runt time generation. Could always do it on a scheduled task I guess... ;o) Mark On Fri, Jun 12, 2009 at 10:04 AM, Adam Drew epne...@gmail.com wrote: nvm.. i know what codldoc is cause i am using it...I was over reading your statement but seriously now.. with thinking about this quickly ... couldn't I set up a lightweight coldbox app to introspect my SVN repsoitory, check out the latest trunk to a secured current ber folder, in order to then have ColdDoc load and display the API? .. basically afterConfigurationLoad If my SVN trunk revision is greater then that of the local working copy (publicy documented version) for my current BER, then update the working copy before loading ColdDoc On Jun 11, 7:44 pm, Adam Drew epne...@gmail.com wrote: ColdDoc..? Is this a Mark+Luis project happening under my radar? What i mean is who is the *we* you reference with the ColdDoc and what is the problem with the BER? I have been playing with some java SVN component that lets me introspect Trunks, Branches and Tags and the whole self documenting SVN concept is pretty interesting to me.. I would love to see more resources! I'll let you know if anything comes up with my codegen experiance.. I have written 3 custom generators at this point.. a DecoratorGenerator, ServiceGenerator, GatewayGenerator.. and now I've begun my MetadataGenerator... it's kinda clear for me at this point what i need to do.. My concern was the handling of the CFML comment in XML .. I had previously gone through the AbstractBaseGenerator (actually first thing).. but some how overlooked the idea that that i could just setCommentStart() and setCommentEnd ().. Now I am wondering should I do this in my run() implementation or do I override the init() caling super.init() so I can then setCommentStart () and setCommentEnd()? -AD On Jun 11, 7:14 pm, Mark Mandel mark.man...@gmail.com wrote: No worries! Let me know if you run into any issues. Mark On Fri, Jun 12, 2009 at 9:12 AM, Adam Drew epne...@gmail.com wrote: This is why your the man.. because you knew what i wanted and you gave it right to me.. The two things you should probably take note of : In the init() of the AbstractBaseGenerator, you can see where I have: setCommentStart(! ---); setCommentEnd(---); THANKS. On Jun 11, 7:05 pm, Mark Mandel mark.man...@gmail.com wrote: Ah very nice! This would be easier
[transfer-dev] Re: transfer.codegen (BER)
Mark, I feel like I need a comment tag for the templates so that whatever comment method is being used by my generator is used in the template.. in this way I could standardize my template writing regardless if I'm wrighting CFCs, CFMs, XMLs, or DDLs,.. I'm going to review the block, compact, and template tags to see if i am missing something and come up with the answer on my own.. but let me know if I am missing something or if you have any thoughts about this. AD --~--~-~--~~~---~--~~ Before posting questions to the group please read: http://groups.google.com/group/transfer-dev/web/how-to-ask-support-questions-on-transfer You received this message because you are subscribed to the Google Groups transfer-dev group. To post to this group, send email to transfer-dev@googlegroups.com To unsubscribe from this group, send email to transfer-dev-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/transfer-dev?hl=en -~--~~~~--~~--~--~---
[transfer-dev] transfer.codegen (BER)
Hey Mark, I started playing with the transfer.codegen functionality in the BER in an attempt to replace my current usage of TransferConfig+Illudium PU-36 (riaforge) by implementing a chain of Coldbox Interceptors that have my special layer to do some *active* codegen during a CB+Transfer +CS app start up (afterConfigurationLoad + afterAspectsLoad if dev = true). I am currently generating concrete objects for my abstract decorators, gateways and services using the method described above and each of these are working as expected, and beautifully I might add.. especially with the protected block feature allowing me to re-generate the *protected* functions in my concrete CFCs as I refine a specific domain model, all the while leaving the *custom* code in my concrete objects alone... anyone can say what they want about the practice... but this really makes me happy :) Now, I want to generate some custom/specific metadata to use with say ValidateThis!, Majik, or for that matter any other library, toolkit, framework, et al..) using the transfer object metadata and other information i've gathered up during the interceptor chain with my services + factories... I have not tried to generate any XML yet as I just started writing the generator, and then began a template and started to think. I have reviewed the codegen doc (WIP), and honestly, I have not gone through the source enough to answer the following questions so, as I work things out here, I was hoping that maybe you could confirm for me if things should function the same when generating XML files as with CFCs in my custom generator? Should my template be named *.xml .. and my generator write *.xml... Will protected blocks work? ect. Thanks in advance for considerations extended, and for such an AMAZING addition to our toolkit. --~--~-~--~~~---~--~~ Before posting questions to the group please read: http://groups.google.com/group/transfer-dev/web/how-to-ask-support-questions-on-transfer You received this message because you are subscribed to the Google Groups transfer-dev group. To post to this group, send email to transfer-dev@googlegroups.com To unsubscribe from this group, send email to transfer-dev-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/transfer-dev?hl=en -~--~~~~--~~--~--~---
[transfer-dev] Re: transfer.codegen (BER)
This is why your the man.. because you knew what i wanted and you gave it right to me.. The two things you should probably take note of : In the init() of the AbstractBaseGenerator, you can see where I have: setCommentStart(! ---); setCommentEnd(---); THANKS. On Jun 11, 7:05 pm, Mark Mandel mark.man...@gmail.com wrote: Ah very nice! This would be easier, if we had ColdDoc for the BER release, but I haven't worked out the best way to do that... Where you want to be looking is the AbstractBaseGenerator - as this is what you will be extending. Writing your own Generators, you will have to look through the code a bit, as it is the best resource for doing this sort of stuff. The two things you should probably take note of : In the init() of the AbstractBaseGenerator, you can see where I have: setCommentStart(! ---); setCommentEnd(---); This is where you can tell the generator what code comments look like in whatever you are generating, so you may want to override these in your generator, as you are generting XML and probably want --! and -- rather than the extra - The other thing to look at - check out the API for writeTemplate(), since you are generating XML, you can tell it to escapeCFML=false, so that you don't have to use the $$ and {{ and }} syntax - although, maybe for XML you may want to leave that capability, I'll leave that up to you. Other than that - protected block should still work, and as long as you have writeTemplate() point to XML files, it will write XML files. Have a look at the source for the Decorator generator, and the API for the AbstractBaseGenerator - it should be pretty clear (hopefuly). Mark On Fri, Jun 12, 2009 at 8:54 AM, Adam Drew epne...@gmail.com wrote: Hey Mark, I started playing with the transfer.codegen functionality in the BER in an attempt to replace my current usage of TransferConfig+Illudium PU-36 (riaforge) by implementing a chain of Coldbox Interceptors that have my special layer to do some *active* codegen during a CB+Transfer +CS app start up (afterConfigurationLoad + afterAspectsLoad if dev = true). I am currently generating concrete objects for my abstract decorators, gateways and services using the method described above and each of these are working as expected, and beautifully I might add.. especially with the protected block feature allowing me to re-generate the *protected* functions in my concrete CFCs as I refine a specific domain model, all the while leaving the *custom* code in my concrete objects alone... anyone can say what they want about the practice... but this really makes me happy :) Now, I want to generate some custom/specific metadata to use with say ValidateThis!, Majik, or for that matter any other library, toolkit, framework, et al..) using the transfer object metadata and other information i've gathered up during the interceptor chain with my services + factories... I have not tried to generate any XML yet as I just started writing the generator, and then began a template and started to think. I have reviewed the codegen doc (WIP), and honestly, I have not gone through the source enough to answer the following questions so, as I work things out here, I was hoping that maybe you could confirm for me if things should function the same when generating XML files as with CFCs in my custom generator? Should my template be named *.xml .. and my generator write *.xml... Will protected blocks work? ect. Thanks in advance for considerations extended, and for such an AMAZING addition to our toolkit. -- E: mark.man...@gmail.com W:www.compoundtheory.com --~--~-~--~~~---~--~~ Before posting questions to the group please read: http://groups.google.com/group/transfer-dev/web/how-to-ask-support-questions-on-transfer You received this message because you are subscribed to the Google Groups transfer-dev group. To post to this group, send email to transfer-dev@googlegroups.com To unsubscribe from this group, send email to transfer-dev-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/transfer-dev?hl=en -~--~~~~--~~--~--~---
[transfer-dev] Re: transfer.codegen (BER)
ColdDoc..? Is this a Mark+Luis project happening under my radar? What i mean is who is the *we* you reference with the ColdDoc and what is the problem with the BER? I have been playing with some java SVN component that lets me introspect Trunks, Branches and Tags and the whole self documenting SVN concept is pretty interesting to me.. I would love to see more resources! I'll let you know if anything comes up with my codegen experiance.. I have written 3 custom generators at this point.. a DecoratorGenerator, ServiceGenerator, GatewayGenerator.. and now I've begun my MetadataGenerator... it's kinda clear for me at this point what i need to do.. My concern was the handling of the CFML comment in XML .. I had previously gone through the AbstractBaseGenerator (actually first thing).. but some how overlooked the idea that that i could just setCommentStart() and setCommentEnd ().. Now I am wondering should I do this in my run() implementation or do I override the init() caling super.init() so I can then setCommentStart () and setCommentEnd()? -AD On Jun 11, 7:14 pm, Mark Mandel mark.man...@gmail.com wrote: No worries! Let me know if you run into any issues. Mark On Fri, Jun 12, 2009 at 9:12 AM, Adam Drew epne...@gmail.com wrote: This is why your the man.. because you knew what i wanted and you gave it right to me.. The two things you should probably take note of : In the init() of the AbstractBaseGenerator, you can see where I have: setCommentStart(! ---); setCommentEnd(---); THANKS. On Jun 11, 7:05 pm, Mark Mandel mark.man...@gmail.com wrote: Ah very nice! This would be easier, if we had ColdDoc for the BER release, but I haven't worked out the best way to do that... Where you want to be looking is the AbstractBaseGenerator - as this is what you will be extending. Writing your own Generators, you will have to look through the code a bit, as it is the best resource for doing this sort of stuff. The two things you should probably take note of : In the init() of the AbstractBaseGenerator, you can see where I have: setCommentStart(! ---); setCommentEnd(---); This is where you can tell the generator what code comments look like in whatever you are generating, so you may want to override these in your generator, as you are generting XML and probably want --! and -- rather than the extra - The other thing to look at - check out the API for writeTemplate(), since you are generating XML, you can tell it to escapeCFML=false, so that you don't have to use the $$ and {{ and }} syntax - although, maybe for XML you may want to leave that capability, I'll leave that up to you. Other than that - protected block should still work, and as long as you have writeTemplate() point to XML files, it will write XML files. Have a look at the source for the Decorator generator, and the API for the AbstractBaseGenerator - it should be pretty clear (hopefuly). Mark On Fri, Jun 12, 2009 at 8:54 AM, Adam Drew epne...@gmail.com wrote: Hey Mark, I started playing with the transfer.codegen functionality in the BER in an attempt to replace my current usage of TransferConfig+Illudium PU-36 (riaforge) by implementing a chain of Coldbox Interceptors that have my special layer to do some *active* codegen during a CB+Transfer +CS app start up (afterConfigurationLoad + afterAspectsLoad if dev = true). I am currently generating concrete objects for my abstract decorators, gateways and services using the method described above and each of these are working as expected, and beautifully I might add.. especially with the protected block feature allowing me to re-generate the *protected* functions in my concrete CFCs as I refine a specific domain model, all the while leaving the *custom* code in my concrete objects alone... anyone can say what they want about the practice... but this really makes me happy :) Now, I want to generate some custom/specific metadata to use with say ValidateThis!, Majik, or for that matter any other library, toolkit, framework, et al..) using the transfer object metadata and other information i've gathered up during the interceptor chain with my services + factories... I have not tried to generate any XML yet as I just started writing the generator, and then began a template and started to think. I have reviewed the codegen doc (WIP), and honestly, I have not gone through the source enough to answer the following questions so, as I work things out here, I was hoping that maybe you could confirm for me if things should function the same when generating XML files as with CFCs in my custom generator? Should my template be named *.xml .. and my generator write *.xml... Will protected blocks work? ect. Thanks in advance for considerations
[transfer-dev] Re: transfer.codegen (BER)
nvm.. i know what codldoc is cause i am using it...I was over reading your statement but seriously now.. with thinking about this quickly ... couldn't I set up a lightweight coldbox app to introspect my SVN repsoitory, check out the latest trunk to a secured current ber folder, in order to then have ColdDoc load and display the API? .. basically afterConfigurationLoad If my SVN trunk revision is greater then that of the local working copy (publicy documented version) for my current BER, then update the working copy before loading ColdDoc On Jun 11, 7:44 pm, Adam Drew epne...@gmail.com wrote: ColdDoc..? Is this a Mark+Luis project happening under my radar? What i mean is who is the *we* you reference with the ColdDoc and what is the problem with the BER? I have been playing with some java SVN component that lets me introspect Trunks, Branches and Tags and the whole self documenting SVN concept is pretty interesting to me.. I would love to see more resources! I'll let you know if anything comes up with my codegen experiance.. I have written 3 custom generators at this point.. a DecoratorGenerator, ServiceGenerator, GatewayGenerator.. and now I've begun my MetadataGenerator... it's kinda clear for me at this point what i need to do.. My concern was the handling of the CFML comment in XML .. I had previously gone through the AbstractBaseGenerator (actually first thing).. but some how overlooked the idea that that i could just setCommentStart() and setCommentEnd ().. Now I am wondering should I do this in my run() implementation or do I override the init() caling super.init() so I can then setCommentStart () and setCommentEnd()? -AD On Jun 11, 7:14 pm, Mark Mandel mark.man...@gmail.com wrote: No worries! Let me know if you run into any issues. Mark On Fri, Jun 12, 2009 at 9:12 AM, Adam Drew epne...@gmail.com wrote: This is why your the man.. because you knew what i wanted and you gave it right to me.. The two things you should probably take note of : In the init() of the AbstractBaseGenerator, you can see where I have: setCommentStart(! ---); setCommentEnd(---); THANKS. On Jun 11, 7:05 pm, Mark Mandel mark.man...@gmail.com wrote: Ah very nice! This would be easier, if we had ColdDoc for the BER release, but I haven't worked out the best way to do that... Where you want to be looking is the AbstractBaseGenerator - as this is what you will be extending. Writing your own Generators, you will have to look through the code a bit, as it is the best resource for doing this sort of stuff. The two things you should probably take note of : In the init() of the AbstractBaseGenerator, you can see where I have: setCommentStart(! ---); setCommentEnd(---); This is where you can tell the generator what code comments look like in whatever you are generating, so you may want to override these in your generator, as you are generting XML and probably want --! and -- rather than the extra - The other thing to look at - check out the API for writeTemplate(), since you are generating XML, you can tell it to escapeCFML=false, so that you don't have to use the $$ and {{ and }} syntax - although, maybe for XML you may want to leave that capability, I'll leave that up to you. Other than that - protected block should still work, and as long as you have writeTemplate() point to XML files, it will write XML files. Have a look at the source for the Decorator generator, and the API for the AbstractBaseGenerator - it should be pretty clear (hopefuly). Mark On Fri, Jun 12, 2009 at 8:54 AM, Adam Drew epne...@gmail.com wrote: Hey Mark, I started playing with the transfer.codegen functionality in the BER in an attempt to replace my current usage of TransferConfig+Illudium PU-36 (riaforge) by implementing a chain of Coldbox Interceptors that have my special layer to do some *active* codegen during a CB+Transfer +CS app start up (afterConfigurationLoad + afterAspectsLoad if dev = true). I am currently generating concrete objects for my abstract decorators, gateways and services using the method described above and each of these are working as expected, and beautifully I might add.. especially with the protected block feature allowing me to re-generate the *protected* functions in my concrete CFCs as I refine a specific domain model, all the while leaving the *custom* code in my concrete objects alone... anyone can say what they want about the practice... but this really makes me happy :) Now, I want to generate some custom/specific metadata to use with say ValidateThis!, Majik, or for that matter any other library, toolkit, framework, et al..) using the transfer object metadata and other information i've
[transfer-dev] Re: transfer.codegen (BER)
But what IF you have the cb app redirect the client to the static ColdDoc URL no matter what.. the afterConfigurationLoad interceptor would *update* the ColdDoc's static BER folder before redirecting the client there... and all you would have to do after a significant API change was restart the public CB app with a fwreinit password. Maybe I had tooo much Hop Stooopid tonight. On Jun 11, 8:11 pm, Mark Mandel mark.man...@gmail.com wrote: Because ColdDoc does static generation of the HTML files, not a runt time generation. Could always do it on a scheduled task I guess... ;o) Mark On Fri, Jun 12, 2009 at 10:04 AM, Adam Drew epne...@gmail.com wrote: nvm.. i know what codldoc is cause i am using it...I was over reading your statement but seriously now.. with thinking about this quickly ... couldn't I set up a lightweight coldbox app to introspect my SVN repsoitory, check out the latest trunk to a secured current ber folder, in order to then have ColdDoc load and display the API? .. basically afterConfigurationLoad If my SVN trunk revision is greater then that of the local working copy (publicy documented version) for my current BER, then update the working copy before loading ColdDoc On Jun 11, 7:44 pm, Adam Drew epne...@gmail.com wrote: ColdDoc..? Is this a Mark+Luis project happening under my radar? What i mean is who is the *we* you reference with the ColdDoc and what is the problem with the BER? I have been playing with some java SVN component that lets me introspect Trunks, Branches and Tags and the whole self documenting SVN concept is pretty interesting to me.. I would love to see more resources! I'll let you know if anything comes up with my codegen experiance.. I have written 3 custom generators at this point.. a DecoratorGenerator, ServiceGenerator, GatewayGenerator.. and now I've begun my MetadataGenerator... it's kinda clear for me at this point what i need to do.. My concern was the handling of the CFML comment in XML .. I had previously gone through the AbstractBaseGenerator (actually first thing).. but some how overlooked the idea that that i could just setCommentStart() and setCommentEnd ().. Now I am wondering should I do this in my run() implementation or do I override the init() caling super.init() so I can then setCommentStart () and setCommentEnd()? -AD On Jun 11, 7:14 pm, Mark Mandel mark.man...@gmail.com wrote: No worries! Let me know if you run into any issues. Mark On Fri, Jun 12, 2009 at 9:12 AM, Adam Drew epne...@gmail.com wrote: This is why your the man.. because you knew what i wanted and you gave it right to me.. The two things you should probably take note of : In the init() of the AbstractBaseGenerator, you can see where I have: setCommentStart(! ---); setCommentEnd(---); THANKS. On Jun 11, 7:05 pm, Mark Mandel mark.man...@gmail.com wrote: Ah very nice! This would be easier, if we had ColdDoc for the BER release, but I haven't worked out the best way to do that... Where you want to be looking is the AbstractBaseGenerator - as this is what you will be extending. Writing your own Generators, you will have to look through the code a bit, as it is the best resource for doing this sort of stuff. The two things you should probably take note of : In the init() of the AbstractBaseGenerator, you can see where I have: setCommentStart(! ---); setCommentEnd(---); This is where you can tell the generator what code comments look like in whatever you are generating, so you may want to override these in your generator, as you are generting XML and probably want --! and -- rather than the extra - The other thing to look at - check out the API for writeTemplate(), since you are generating XML, you can tell it to escapeCFML=false, so that you don't have to use the $$ and {{ and }} syntax - although, maybe for XML you may want to leave that capability, I'll leave that up to you. Other than that - protected block should still work, and as long as you have writeTemplate() point to XML files, it will write XML files. Have a look at the source for the Decorator generator, and the API for the AbstractBaseGenerator - it should be pretty clear (hopefuly). Mark On Fri, Jun 12, 2009 at 8:54 AM, Adam Drew epne...@gmail.com wrote: Hey Mark, I started playing with the transfer.codegen functionality in the BER in an attempt to replace my current usage of TransferConfig+Illudium PU-36 (riaforge) by implementing a chain of Coldbox Interceptors that have my special layer to do some *active* codegen during a CB+Transfer +CS app start up
[transfer-dev] Re: Decorator after populate method?
Yes... basically it wraps the TransferDecorator using CF8's onMissingMethod() functionality I would suggest that if you haven't yet, go check out the work Peter Bell did with the coldfusion IBO on riaforge.org.. The TIBO started as a slightly modified IBO, it now has a fairly similar api, but extends my BaseObject and also incorporates my own Paginator and Filter objects, its implementation in Transfer is all is based on the abstract transfer service/gateway/ decorator ideas that Bob S. and Paul M. and others have been graciously sharing with us for a while (great work!!!) At the moment, I am using the TIBO mainly in my UI while i develop it rather then for things going on in my service layer, but I don't see any reason I couldn't or shouldn't also be able to use it anywhere i need to as well.. However, right now I am in the middle of fleshing out the basic filter/ paginator functionality when it comes to user sessions other caching issues.. I think I have it mostly licked, but I need to do some more work. Another topic for another day maybe. Basically, It all looks something kinda like this... __ AbstractDecorator: getDisplayTitle() : string return getTransferObject().getName(); __ UserDecorator - AbstractDecorator getDisplayTitle(); //overrides abstractdecorator, return getTransferObject().getUsername(); __ BaseObject: init(args); configure(); get(val); set(val); new(object); add(scope,val); exists(val); onMissingMethod() : get[PropertyName] or get[InstanceVar] set[PropertyName] or set[InstanceVar] new[Transient] // (Paginator/Filter) __ TIBO - BaseObject configure(); load(gateway,paginator,filter); loadStruct(pos); filter(string); reset(); next(); populate(); moveTo(pos); getPKValue() getIsPersisted() : Always TRUE getIsDirty() getPosition(); getCount(); getPage(); getPaginator(); getFilter(); __ Controller: ibo = userService.getIterator(); __ View: ibo.reset(); #ibo.getPaginator().render()# if (ibo.next()) { #ibo.getPKValue()# #ibo.getDisplayTitle()# #ibo.getIsPersisted()# } Hope that helps you visualize it a little bit.. its a lot more complicated .. so you should start by checking out the work by Peter, Bob, and Paul on riaforge if you haven't already Please excuse any typos and psudo code, been a busy day.. Regards, -adam On Mar 13, 12:34 pm, John Whish john.wh...@googlemail.com wrote: @Adam, that TIBO sounds interesting. Does it pick up the 'custom' behaviour from the decorator or do you end up duplicating code? --~--~-~--~~~---~--~~ Before posting questions to the group please read: http://groups.google.com/group/transfer-dev/web/how-to-ask-support-questions-on-transfer You received this message because you are subscribed to the Google Groups transfer-dev group. To post to this group, send email to transfer-dev@googlegroups.com To unsubscribe from this group, send email to transfer-dev-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/transfer-dev?hl=en -~--~~~~--~~--~--~---
[transfer-dev] Re: Decorator after populate method?
to create in one shot), then don't use a OneToMany. Use a ManyToOne, i.e. person.setCompany(company). OneToMany, is meant for very specific, tightly related relationships. For me, that means something like 10 or maybe 100 related objects at most. The actual number is up to you but following my own advice, I would not really want Transfer to be creating more than 100 related objects. For example: A User has a BillingAccount. If your business model is such that most BillingAccounts have one User, or if most BillingAccounts have only a few Users, then use a OneToMany if you wish. i.e. User.setParentBillingAccount(). However, a User also has an AccountType. AccountType is probably quite generic and could be associated with thousands or tens of thousands of Users. In such a case, do NOT use a OneToMany. Use a ManyToOne, i.e. User.setAccountType(). On Fri, Mar 13, 2009 at 12:16 PM, Adam Drew epne...@gmail.com wrote: @Brian, Are you advising the use of a manyToOne instead of oneToMany with large collections strictly because of transfer performance issues? Or is there some other relationship guidance behind that? I understand the potential for issues with only having oneToMany relationships.. but so far, I have been working on a fairly complex model with over 200 objects.. some of those objects have oneToManys with collections of 10K+, I use lazy, proxied, oneToManys on those transfer objects. Then i use a TIBO for displaying, paginating, or filtering those large collections where performance issues arise... It's not done yet, but honestly I'm very pleased with the overall functionality and performance of this approach thus far, however the TIBO is not a part of the transfer so i understand that, as a best practice with a strict transfer implementation.. that a manytoOne maybe the best route for performance concerns until future features are added... However, The TIBO is a topic i had brought up in the past on the list.. and is something I plan on posting a component someplace one day for anyone here who is interested when I can get the implementation cleaned-up and stable enough for what I need to do with it.. hopefully it works for someone other then myself. I guess I'm just curious if I'm missing some caveats about the oneToMany+TIBO approach I've been spending some time on... I have have not yet worked it out on manyToOnes.. but plan on doing so... and I would be interested to hear your input on this topic in regards to oneToManys vs manyToOnes... Regards, Adam --~--~-~--~~~---~--~~ Before posting questions to the group please read: http://groups.google.com/group/transfer-dev/web/how-to-ask-support-questions-on-transfer You received this message because you are subscribed to the Google Groups transfer-dev group. To post to this group, send email to transfer-dev@googlegroups.com To unsubscribe from this group, send email to transfer-dev-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/transfer-dev?hl=en -~--~~~~--~~--~--~---
[transfer-dev] Transfer + Java SE Development Kit 6u12
Cheers! I have been developing my Majik for a little over a year now, and I have been using a number of different development setups and test beds to work out my issues.. but I've always using the latest release of Transfer with CF8's default JVM running.. 1.6.4-9? those of you familiar with that JVMs class loader issues can only imagine how and where I was bogging down while building a fully OO-CF framework based RIA with +300 DB tables Transfer objects.. and well, um too many objects really At this very moment, I can not even think of ever using the shipped CF8 JVM again!! I am so happy right now because those performance issues have always bothered me, and made me second guess the architectures and patterns I had chosen to vest myself in over the past three years... since I was unsuccessful in my attempts to get 1.6.10 running in the past according to blogs which I had read while using the google... I gave up for a while.. but decided to give it a go again today after setting up a Win7+CF8+IIS7+SQL2008Express test bed. I just wanted to get any feedback from the group from anyone using the JVM 6u12 release with transfer.. has it been tested by anyone yet? what are you're thoughts? is there a previous version that you guys would reccomend for use with transfer? So far, i am getting _amazing_ performance gain results compared with only a few hours ago today... Just felt like sharing this in case anyone else was interested. -adam Majik Ferret Solutions --~--~-~--~~~---~--~~ Before posting questions to the group please read: http://groups.google.com/group/transfer-dev/web/how-to-ask-support-questions-on-transfer You received this message because you are subscribed to the Google Groups transfer-dev group. To post to this group, send email to transfer-dev@googlegroups.com To unsubscribe from this group, send email to transfer-dev-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/transfer-dev?hl=en -~--~~~~--~~--~--~---
[transfer-dev] Re: Iterating Transfer Object
I think all I need is a setLimit() on the TIBO - I'm presently working up a uml for my _plan_ which once complete, i could email to those interested for review, comment, and revision... On Dec 5, 10:34 pm, Chris Peterson [EMAIL PROTECTED] wrote: Ya know, if we are going to roll this, why not build a paging model into it from the git go? I bet tons of folks have done that already or have their own hacks around it (I perform my sql query for ID's only, for the specific page of results i want, then loop and return the transfer objects as a part of a structure with totalPages, currentPage, itemsPerPage, and the TO array. just thinkin out loud here Chris On Fri, Dec 5, 2008 at 10:13 PM, Adam Drew [EMAIL PROTECTED] wrote: I'm getting the feeling that either you guys don't have your own implementation of this pattern in transfer, or your just holding out on me.. ;) @Peter.. How have you used transfer with your IBO pattern? Does LightBase use Transfer? @Chris I would like to suggest that we define the scope of the TIOB responsibilities, and dependencies, and then specify the functionality and implementations which are required for our general use cases... @John I would be able to commit a super alpha tag once we lay this thing out... and I would look froward to as much testing and feedback as possible...besides I need some extra validation in my life =). For Follow Up: Does anyone have any caveats or advice they can share when approaching this? Mark, Is this an abomination of the TransferObject?? What are some of the other design around practices in use? Any one else interested in collaborating/helping/testing? I remain, Adam Drew On Dec 5, 7:48 pm, John Allen [EMAIL PROTECTED] wrote: I design around this, but would love to check it out when/if super alpha. On Fri, Dec 5, 2008 at 6:49 AM, Chris Peterson [EMAIL PROTECTED] wrote: I want to see this too =) With the latest proxy object support and lazy loading, I have been using an array of transfer objects in a few places, which I would love to gut and replace with something like your TIBO (Transfer Iterating Business Object, lets spread the word, thats the new acronym). If you need a tester let me know =) Chris Peterson On Fri, Dec 5, 2008 at 6:20 AM, Peter Bell [EMAIL PROTECTED] wrote: Im certainly interested in seeing how this progresses :-) Peter On Dec 5, 2008, at 1:05 AM, Adam wrote: I am trying to create an IteratingTransferObject, or AbastractIteratingObject, or IteratingBusinessObject (IBO) as described by Mr. Peter Bell... I need something to kill the OIP evil do-er with transfer objects from large tables that _need_ the concrete, mixin, and abstract code to perform accordingly... (validation/documentation/business objects, ui, ajax calls, mvc plugins, services, gateways..) I was never never able to find, or didn't look in the right places for a solid example of the pattern in use with transfer. I think it's a great idea, so I did a quick and dirty test in my model .. this dirty test gave my ui an unscientifically estimation of 80%!! reduction in load times on large record sets, as compared to when i just use very large transfer object collections. In my proof of concept I immediately ran into a few things right of the bat that would require some rethinking and refactoring.. But I don't want to run off into the desert with no water if there is another route... My ITO is a factory generated, beanInjected, wrapper on a new transfer object that is being populated() by my Abstract Decorator and looped over a cached query,. so when i get one of these 'transferObjects' it's not exactly being created by Transfer, and I found that i was getting a PK = 0 and isPersisted = false and isDirty=true. I quickly hacked my wrapper to get the PK from the instance.recordset, insted of the TO just to make it work but I cant move any further with this until i get my head around the Performance / Development/ Cost involved... or at least make me feel comfortable that it's going to work until adobe _hopefully_ fixes the OIP in CF9???.. I'm just looking for any feedback from anyone with any interest in my topic.. Thanks Guys! -- Hey! I dont tell you how to tell me what to do, so dont tell me how to do what you tell me to do! ~ Bender (Futurama) -- Hey! I dont tell you how to tell me what to do, so dont tell me how to do what you tell me to do! ~ Bender (Futurama) --~--~-~--~~~---~--~~ Before posting questions to the group please read: http://groups.google.com/group/transfer-dev/web/how-to-ask-support-questions-on-transfer You received this message because you are subscribed to the Google Groups