HTTP in cfscript

503 views
Skip to first unread message

Judah McAuley

unread,
Sep 10, 2010, 5:23:53 PM9/10/10
to ra...@googlegroups.com
HTTP doesn't seem to be implemented in cfscript, at least I get the
following error when doing a call like:

new http();

results in: invalid component definition, can't find HTTP

I searched the wiki and Jira but couldn't find a ticket that seems to
match it, so two things I guess.

1. Is cfhttp implemented in cfscript yet?

2. If not, is there a Jira issue or should I add one?

Cheers,
Judah

Michael Offner

unread,
Sep 10, 2010, 6:02:24 PM9/10/10
to ra...@googlegroups.com
This is one of the CFCs located in auto import package
"org.railo.cfml" ("com.adobe.coldfusion" in acf9), Railo does not have
this CFCs yet, but they are on the way, Andrea can say more about
this.

/micha

2010/9/10, Judah McAuley <judah....@gmail.com>:

Judah McAuley

unread,
Sep 10, 2010, 6:12:14 PM9/10/10
to ra...@googlegroups.com
So I don't need to add a Jira item then? I have no problems with the
cfscript version of http not being there yet, I just wanted to make
sure that if that was true that it was noted somewhere.

Judah

Michael Offner

unread,
Sep 10, 2010, 6:24:42 PM9/10/10
to ra...@googlegroups.com
I think there is already a task for this in jira


2010/9/11, Judah McAuley <judah....@gmail.com>:

Andrea Campolonghi

unread,
Sep 11, 2010, 3:03:30 AM9/11/10
to ra...@googlegroups.com
Judah,

I have just yesterday pushed the code to micha.
We will support soon query,mail,ftp,feed and http.

I am not sure yet if we can do that for next patch but I think will be surely in 3.2

More to come.

Andrea

2010/9/11 Michael Offner <mic...@getrailo.com>



--
Andrea Campolonghi
and...@getrailo.org

Sean Corfield

unread,
Sep 14, 2010, 1:38:53 AM9/14/10
to ra...@googlegroups.com
On Fri, Sep 10, 2010 at 2:23 PM, Judah McAuley <judah....@gmail.com> wrote:
> HTTP doesn't seem to be implemented in cfscript, at least I get the
> following error when doing a call like:
>
> new http();

FWIW, this was unanimously considered not core, not extended core by
the CFML Advisory Committee (even Adobe).

The most popular solution was:

http attr=val attr=val {
httpparam ...;
}

even tho' Adobe didn't implement that.

Railo has implemented that, however. And the Adobe-style CFC-based
solution will be in Railo soon.
--
Sean A Corfield -- (904) 302-SEAN
Railo Technologies, Inc. -- http://getrailo.com/
An Architect's View -- http://corfield.org/

"If you're not annoying somebody, you're not really alive."
-- Margaret Atwood

Judah McAuley

unread,
Sep 14, 2010, 3:26:48 PM9/14/10
to ra...@googlegroups.com
That's good to know Sean but are you saying that http is implemented
in cfscript already? I didn't see it on the wiki. I'll try some
examples out at lunch time but are you saying that this should work?

var myresult = '';
http name="myresult" url="http://google.com" {
q="Railo"
}

and that would do a GET search of google?

Cheers,
Judah

Todd Rafferty

unread,
Sep 14, 2010, 4:37:03 PM9/14/10
to ra...@googlegroups.com
Must be something more to it, I tried it and got:

Message Missing [;] or [line feed] after expression
Stacktrace The Error Occurred in
C:\Dev\websites\testbed\www\index.cfm: line 2
1: <cfscript>
2: http name="myresult" url="http://google.com"{
3: q="Railo"
4: };

btw, Judah? None of the new stuff is on the wiki. We're still trying to get old stuff on the wiki. :)
--
~Todd Rafferty ** Volunteer Railo Open Source Community Manager ** http://getrailo.org/

Judah McAuley

unread,
Sep 14, 2010, 4:50:33 PM9/14/10
to ra...@googlegroups.com
Yes, I know things are still in a state of flux on the wiki. I'm not overly concerned, I was just a bit confused by Sean's response as I hadn't seen that syntax before. I should make myself a reminder to go do some documentation tasks on the wiki, speaking of.

judah

Todd Rafferty

unread,
Sep 14, 2010, 5:42:57 PM9/14/10
to ra...@googlegroups.com
If your wiki account needs to be adjusted, poke me offlist.

Sean Corfield

unread,
Sep 14, 2010, 6:27:43 PM9/14/10
to ra...@googlegroups.com
On Tue, Sep 14, 2010 at 12:26 PM, Judah McAuley <judah....@gmail.com> wrote:
> That's good to know Sean but are you saying that http is implemented
> in cfscript already?

The docs haven't caught up with the BER yet.

> var myresult = '';
> http name="myresult" url="http://google.com" {
>  q="Railo"
> }

What is q="Railo" meant to be? Did you mean httpparam name="q"
value="Railo" or something similar?

Judah McAuley

unread,
Sep 14, 2010, 6:33:50 PM9/14/10
to ra...@googlegroups.com
On Tue, Sep 14, 2010 at 3:27 PM, Sean Corfield <seanco...@gmail.com> wrote:
> On Tue, Sep 14, 2010 at 12:26 PM, Judah McAuley <judah....@gmail.com> wrote:
>> That's good to know Sean but are you saying that http is implemented
>> in cfscript already?
>
> The docs haven't caught up with the BER yet.
>
>> var myresult = '';
>> http name="myresult" url="http://google.com" {
>>  q="Railo"
>> }
>
> What is q="Railo" meant to be? Did you mean httpparam name="q"
> value="Railo" or something similar?

Maybe, I don't know. That was the point, I'm not sure what the syntax
is :) I was guessing a set of name-value pairs but it looks like you
mean use the httpparam keyword with a name attribute and value
attribute. Makes sense, thanks.

Judah

Sean Corfield

unread,
Sep 14, 2010, 11:34:08 PM9/14/10
to ra...@googlegroups.com
On Tue, Sep 14, 2010 at 3:33 PM, Judah McAuley <judah....@gmail.com> wrote:
> Maybe, I don't know. That was the point, I'm not sure what the syntax
> is :) I was guessing a set of name-value pairs but it looks like you
> mean use the httpparam keyword with a name attribute and value
> attribute. Makes sense, thanks.

Write it out in tags and then remove the "<cf" at the beginning of
each tag and the ">" at the end of each tag. It's meant to be very
consistent.

That consistency is why I was disappointed the CFML Advisory Committee
couldn't all agree on the approach. What we have in ACF9 is a mix of
all sorts of stuff. Some tags are like functions (with (parentheses
around attributes)), some are like 'tags' (without <cf and > but with
bare attributes and { } for the body), some are CFCs. It really is a
bit of a mess (and neither Adam nor Ben seemed to like it when it was
discussed on the committee - but Adobe were too far along in CF9 to
change direction, unfortunately).

rex

unread,
Sep 15, 2010, 1:23:07 AM9/15/10
to ra...@googlegroups.com
yep, just tried this and it worked:

<cfscript>
http result="xx" url="http://www.google.com/"{
    //httpparam name="q" value="hello" type="url";
};
writeDump(xx);
</cfscript>

I don't know what params to pass, that's why I commented it. 

I like this consistency that you are talking about.  It's so hard to figure out some of these cfscript implementations by Adobe.  Some tags that used to take a couple of lines are horrendous now!  Like a 3-line cfquery would now be 5 lines in script!

Sean Corfield

unread,
Sep 15, 2010, 2:31:41 AM9/15/10
to ra...@googlegroups.com
On Tue, Sep 14, 2010 at 10:23 PM, rex <li...@pgrworld.com> wrote:
> I like this consistency that you are talking about.  It's so hard to figure
> out some of these cfscript implementations by Adobe.  Some tags that used to
> take a couple of lines are horrendous now!  Like a 3-line cfquery would now
> be 5 lines in script!

<cfquery name="result" datasource="myDB">
select * from user where status =
<cfqueryparam cfsqltype="cf_sql_integer" value="#statusId#"/>
</cfquery>

becomes:

query name="result" datasource="myDB" {
writeOutput( 'select * from user where status = ' );
queryparam cfsqltype="cf_sql_integer" value="#statusId#";
}

(in Railo, at least)

rex

unread,
Sep 15, 2010, 3:56:21 AM9/15/10
to ra...@googlegroups.com
yep, I like it better in Railo than in CF.  That cfquery becomes this adobe cfscript:

    result = new query();
    result.setDatasource("myDB");
    result.setSql("select * from user where status = :variable");
    result.addParam(name="variable", value=statusId, cfsqltype="cf_sql_integer");
    result = result.execute().getResult();

huh? addParam() and result.execute().getResult()?!

Judah McAuley

unread,
Sep 15, 2010, 12:42:29 PM9/15/10
to ra...@googlegroups.com
Thanks for the heads up on the tag to script thought process for
Railo, that makes sense and will make it easier for me to guess what's
likely to work.

A question though on the cfquery example, how do you specify multiple
params? Do you do some sort of variable replacement or do you have to
do some sort of string concatenation?

Cheers,
Judah

Todd Rafferty

unread,
Sep 15, 2010, 1:44:57 PM9/15/10
to ra...@googlegroups.com
Note that it is a writeOutput(), so I'm guessing this:

 query name="result" datasource="myDB" {
      writeOutput( 'select * from user where status = ' );
      queryparam cfsqltype="cf_sql_integer" value="#statusId#";
      writeOutput(' AND foo_id = ' );
      queryparam cfsqltype="cf_sql_integer" value="#fooId#";

Andrew Penhorwood

unread,
Sep 15, 2010, 8:35:41 PM9/15/10
to ra...@googlegroups.com
The simplicity of CFML has been taken over by these poor decisions at Adobe.  writeOutput() here just seems very wrong to me. 

Andrew Penhorwood 
-- 
Best regards,
Andrew Penhorwood
and...@coldbits.com
www.coldbits.com
336-501-0958 cell

Todd Rafferty

unread,
Sep 15, 2010, 10:37:33 PM9/15/10
to ra...@googlegroups.com
Adobe has nothing to do with writeOutput being used here.

Sean Corfield

unread,
Sep 16, 2010, 1:29:42 AM9/16/10
to ra...@googlegroups.com
On Wed, Sep 15, 2010 at 5:35 PM, Andrew Penhorwood <and...@coldbits.com> wrote:
The simplicity of CFML has been taken over by these poor decisions at Adobe.  writeOutput() here just seems very wrong to me.

Please don't make me explain this one again :)

This was one of the most heated discussions on the CFML Advisory Committee - and in the various blog posts I wrote about it. There's no good way to provide a cfscript equivalent to cfquery or cfmail because those allow the generated body of the tag to be used as text. For example:

<cfmail ... >
    This is text in the email.
    <cfif someCondition>
        <cfset someFunctionCall() />
        Some more #text# in the email.
    </cfif>
</cfmail>
 
The problem in cfscript is that you can't tell code from 'output' so easily. In tags, <cf..> is always code and everything else is generated text. That means you need something explicit for output, which is where writeOutput() comes in:

mail ... {
    writeOutput( 'This is text in the email.' );
    if ( someCondition ) {
        someFunctionCall();
        writeOutput( 'Some more #text# in the email.' );
    }
}

The 'obvious' (but wrong) suggestion is just to allow strings in the body of mail. However, consider someFunctionCall() above: if it generates output, that output is part of the mail body - in both cases. On the other hand, suppose it just returns a string? In the first case, it definitely isn't part of the mail body. What about the second case? If raw strings should be part of the output, what about expressions that yield strings? What would be the difference between:

    "Some text";
    "Some text" & someFunctionCall();
    someFunctionCall() & "Some text";
    someFunctionCall();

So the logical answer is that someFunctionCall(); would contribute to the email body if it returned a string... which doesn't match the tag version in an unpleasant way...

Worse, if you call any function that happens to return a value, you have to do something with that result to avoid it contributing to the mail body.

Consider something like this:

    obj.setSomeProperty( 42 );

Does that contribute to the mail body or not? If it has a void returntype, you can say 'no' but what it it returns the object itself? What if it returns a string (maybe "success" / "failure")?

Hopefully you can see why the 'obvious' simplification can't work?

So that means we *must* have some way to identify _output_ in amongst the code. The simplest solution is just writeOutput() and, so far, no one has come up with a better solution (that actually works).

Michael Offner

unread,
Sep 16, 2010, 2:36:35 AM9/16/10
to ra...@googlegroups.com
In Railo you can use "echo" instead of "writeOutput" as well or you
make your own Build in function like "out", "print", "write" ...

/micha

2010/9/16, Sean Corfield <seanco...@gmail.com>:

Andrew Penhorwood

unread,
Sep 16, 2010, 8:37:50 AM9/16/10
to Railo
@sean - Thanks for the explanation. While I hear you "Please don't
make me explain this one again :) ". If the past discussions from the
CAC were public maybe we would all be on the same page.

@everyone
I looked back over this thread but I could not tell who implemented
what syntax. But I want to comment once more on this writeOutput().
Here is the example give by someone higher up in the thread.

query name="result" datasource="myDB" {
writeOutput( 'select * from user where status = ' );
queryparam cfsqltype="cf_sql_integer" value="#statusId#";
writeOutput(' AND foo_id = ' );
queryparam cfsqltype="cf_sql_integer" value="#fooId#";
}

But writeOutput() should be reserved for output to the user (generated
content). There is no output to the user in this code above. What is
happening above is input to a method call. So it would have made more
sense to add some consistent method for handling these situations like
a new "function" queryText('select * form user where...'). Not that I
like that option but I would never be confused by this use of
writeOutput.

It seems to me that this is what should have happened.

query name="result" datasource="myDB" {
select * from user where status = queryparam
cfsqltype="cf_sql_integer" value="#statusId#";
AND foo_id = queryparam cfsqltype="cf_sql_integer"
value="#fooId#";
}

When the compiler hits the { it knows that query statement follows.
It also knows that we are not looking for generated content in this
situation. So we process this whole block with that in mind.

Andrew Penhorwood

On Sep 16, 2:36 am, Michael Offner <mich...@getrailo.com> wrote:
> In Railo you can use "echo" instead of "writeOutput" as well or you
> make your own Build in function like "out", "print", "write" ...
>
> /micha
>
> 2010/9/16, Sean Corfield <seancorfi...@gmail.com>:
> > Railo Technologies, Inc. --http://getrailo.com/
> > An Architect's View --http://corfield.org/

Todd Rafferty

unread,
Sep 16, 2010, 8:43:22 AM9/16/10
to ra...@googlegroups.com

On Thu, Sep 16, 2010 at 8:37 AM, Andrew Penhorwood <and...@coldbits.com> wrote:
@sean - Thanks for the explanation.  While I hear you "Please don't
make me explain this one again :) ".  If the past discussions from the
CAC were public maybe we would all be on the same page.
 
There's nothing that Sean could have done to make the CAC public. Sean is just being frustrated (for a good reason) at the moment and you'll have to let it slide.
 
@everyone
I looked back over this thread but I could not tell who implemented
what syntax.  But I want to comment once more on this writeOutput().
Here is the example give by someone higher up in the thread.

Said someone was me and it was a "guess" on my part based on what Sean initially wrote. Since I haven't seen or heard of any corrections, I can only assume my guess was correct.
 
 query name="result" datasource="myDB" {
     writeOutput( 'select * from user where status = ' );
     queryparam cfsqltype="cf_sql_integer" value="#statusId#";
     writeOutput(' AND foo_id = ' );
     queryparam cfsqltype="cf_sql_integer" value="#fooId#";
}

But writeOutput() should be reserved for output to the user (generated
content).  There is no output to the user in this code above.  What is
happening above is input to a method call.  So it would have made more
sense to add some consistent method for handling these situations like
a new "function" queryText('select * form user where...').  Not that I
like that option but I would never be confused by this use of
writeOutput.

Micha suggested using echo instead. In theory, perhaps cfsavecontent would be a better usage here.
 
It seems to me that this is what should have happened.

 query name="result" datasource="myDB" {
     select * from user where status = queryparam
cfsqltype="cf_sql_integer" value="#statusId#";
     AND foo_id = queryparam cfsqltype="cf_sql_integer"
value="#fooId#";
}

Sean already explained why there needs to be a way for the function to know what was declared as a string vs. being able to call functions within the block, etc.

Michael Offner

unread,
Sep 16, 2010, 9:56:30 AM9/16/10
to ra...@googlegroups.com
taking writeOutput was not a choice, this is how cfmlworks.

writeoutput writes to the nearest BodyContent/JSPWriter (http://download.oracle.com/javaee/1.4/api/javax/servlet/jsp/tagext/BodyContent.html) or in simpler words
writeoutput writes to the body of the nearest tag or the root and what the tag/root does with this content is up to the tag/root

for example:
cfmail - send the content as mail and delete it
cfquery - send to datasource and delete it.
cfloop - give it to the parent tag or root body
root - write it to the response stream

this is how cfml works, but let's compare some examples

Simple Output:
Tag: Now:<cfoutput>#now()#</cfoutput>
Script:<cfscript>writeOutput("Now:");writeOutput(now());</cfscript>

loop:
Tag <cfloop from=1 to=10 index="i"><cfoutput>#i#</cfoutput></cfloop>
Script:<cfscript>for(i=1;i<=10;i++){writeOutput(i);}</cfscript>

mail:
Tag <cfmail ...>Hello <cfoutput>#name#</cfoutput></cfmail >
Script:<cfscript>mail ... {writeOutput("Hello ");writeOutput(name);}</cfscript>

something like this:
 query name="result" datasource="myDB" {
     select * from user where status = queryparam
cfsqltype="cf_sql_integer" value="#statusId#";
     AND foo_id = queryparam cfsqltype="cf_sql_integer"
value="#fooId#";
}
is impossible to parse and even it would be possible it breaks completely with the existing cfscript syntax.

/micha








2010/9/16 Todd Rafferty <to...@getrailo.org>

Andrew Penhorwood

unread,
Sep 16, 2010, 11:26:33 AM9/16/10
to Railo
Michael,

Thanks for the explanation.

Andrew Penhorwood

On Sep 16, 9:56 am, Michael Offner <mich...@getrailo.com> wrote:
> taking writeOutput was not a choice, this is how cfmlworks.
>
> writeoutput writes to the nearest BodyContent/JSPWriter (http://download.oracle.com/javaee/1.4/api/javax/servlet/jsp/tagext/Bo...)
> or in simpler words
> writeoutput writes to the body of the nearest tag or the root and what the
> tag/root does with this content is up to the tag/root
>
> for example:
> cfmail - send the content as mail and delete it
> cfquery - send to datasource and delete it.
> cfloop - give it to the parent tag or root body
> root - write it to the response stream
>
> this is how cfml works, but let's compare some examples
>
> Simple Output:
> Tag: Now:<cfoutput>#now()#</cfoutput>
> Script:<cfscript>writeOutput("Now:");writeOutput(now());</cfscript>
>
> loop:
> Tag <cfloop from=1 to=10 index="i"><cfoutput>#i#</cfoutput></cfloop>
> Script:<cfscript>for(i=1;i<=10;i++){writeOutput(i);}</cfscript>
>
> mail:
> Tag <cfmail ...>Hello <cfoutput>#name#</cfoutput></cfmail >
> Script:<cfscript>mail ... {writeOutput("Hello ");
> writeOutput(name);}</cfscript>
>
> something like this:
> * query name="result" datasource="myDB" {
>      select * from user where status = queryparam
> cfsqltype="cf_sql_integer" value="#statusId#";
>      AND foo_id = queryparam cfsqltype="cf_sql_integer"
> value="#fooId#";}*
>
> is impossible to parse and even it would be possible it
> breaks completely with the existing cfscript syntax.
>
> /micha
>
> 2010/9/16 Todd Rafferty <t...@getrailo.org>

Sean Corfield

unread,
Sep 16, 2010, 12:19:05 PM9/16/10
to ra...@googlegroups.com
On Thu, Sep 16, 2010 at 5:37 AM, Andrew Penhorwood <and...@coldbits.com> wrote:
> @sean - Thanks for the explanation.  While I hear you "Please don't
> make me explain this one again :) ".  If the past discussions from the
> CAC were public maybe we would all be on the same page.

Don't get me started on that either :)

I asked for the archives to be open from day one... When the committee
broke down, I asked again...

>  query name="result" datasource="myDB" {
>      writeOutput( 'select * from user where status = ' );
>      queryparam cfsqltype="cf_sql_integer" value="#statusId#";
>      writeOutput(' AND foo_id = ' );
>      queryparam cfsqltype="cf_sql_integer" value="#fooId#";
> }
>
> But writeOutput() should be reserved for output to the user (generated
> content).  There is no output to the user in this code above.

No, look at the tag version again. Whatever is output in the body of
the tag is treated as the SQL. It's the same with <cfmail>

> happening above is input to a method call.  So it would have made more
> sense to add some consistent method for handling these situations like
> a new "function" queryText('select * form user where...').

Would you want a separate function for every tag??

> It seems to me that this is what should have happened.
>
>  query name="result" datasource="myDB" {
>      select * from user where status = queryparam
> cfsqltype="cf_sql_integer" value="#statusId#";
>      AND foo_id = queryparam cfsqltype="cf_sql_integer"
> value="#fooId#";
> }

That is not syntactically possible. You must have a way to tell SQL
from code - that a machine / compiler can do automatically. The
solution has to work for <cfmail> in script as well. There has to be a
single, consistent syntax.

Again, read my original email carefully to see why it's all about output.


--
Sean A Corfield -- (904) 302-SEAN

Railo Technologies, Inc. -- http://getrailo.com/
An Architect's View -- http://corfield.org/

Sean Corfield

unread,
Sep 16, 2010, 12:23:35 PM9/16/10
to ra...@googlegroups.com
On Thu, Sep 16, 2010 at 5:43 AM, Todd Rafferty <to...@getrailo.org> wrote:
> Micha suggested using echo instead. In theory, perhaps cfsavecontent would
> be a better usage here.

Note that there is a savecontent construct in cfscript:

savecontent variable="foo" {
writeOutput( 'This is output' );
this.is = 'code';
}

That works on ACF and Railo. foo contains 'This is output' (without
quotes). Again, it's all about output. In savecontent, in query, in
mail. Because that's how the <cf..> tags work.

But the CAC folks felt it was ugly and even tho' Adobe implemented
savecontent, they didn't do the same for query and mail - but they
took the same approach for lock, transaction and thread... just
remember those aren't about processing an output stream.


--
Sean A Corfield -- (904) 302-SEAN

Railo Technologies, Inc. -- http://getrailo.com/
An Architect's View -- http://corfield.org/

Andrew Penhorwood

unread,
Sep 16, 2010, 2:45:33 PM9/16/10
to Railo
Sean,

My java skills are limited so until Michael explanation it, I did not
know what writeOutput did behind the scene. Now that I get the
writeOutput function it makes sense. I would not recommend a "new
function" for every script tag just a consistent way of doing it.

I have also been following along and I know that you wanted a more
open approach to the CAC adventure. I am sorry that did not happen.
I am sure you have noticed I am just frustrated with the way the whole
CFML stuff has developed at Macromedia and now Adobe. I love CFML and
I have paid my bills with it for the last 10 years.

If time permitted I would get into the Railo source and begin to
understand how all of the parts fit together. But at this point I
don't have the time so my comments are from a consistent CFML code
perspective not "what technically can happen" perspective.

At the end of the day I have happy that Railo & OpenBD exists and that
both camps care where CFML is going. I will most likely continue to
be frustrated with the choices made by Adobe.

Andrew Penhorwood

On Sep 16, 12:23 pm, Sean Corfield <seancorfi...@gmail.com> wrote:
> On Thu, Sep 16, 2010 at 5:43 AM, Todd Rafferty <t...@getrailo.org> wrote:
> > Micha suggested using echo instead. In theory, perhaps cfsavecontent would
> > be a better usage here.
>
> Note that there is a savecontent construct in cfscript:
>
> savecontent variable="foo" {
>     writeOutput( 'This is output' );
>     this.is = 'code';
>
> }
>
> That works on ACF and Railo. foo contains 'This is output' (without
> quotes). Again, it's all about output. In savecontent, in query, in
> mail. Because that's how the <cf..> tags work.
>
> But the CAC folks felt it was ugly and even tho' Adobe implemented
> savecontent, they didn't do the same for query and mail - but they
> took the same approach for lock, transaction and thread... just
> remember those aren't about processing an output stream.
> --
> Sean A Corfield -- (904) 302-SEAN
> Railo Technologies, Inc. --http://getrailo.com/
> An Architect's View --http://corfield.org/

Sean Corfield

unread,
Sep 16, 2010, 3:56:38 PM9/16/10
to ra...@googlegroups.com
On Thu, Sep 16, 2010 at 11:45 AM, Andrew Penhorwood <and...@coldbits.com> wrote:
> My java skills are limited so until Michael explanation it, I did not
> know what writeOutput did behind the scene.  Now that I get the
> writeOutput function it makes sense.  I would not recommend a "new
> function" for every script tag just a consistent way of doing it.

Cool. I just wanted to check since you suggested queryText() and I
wondered if you had in mind mailText() etc.

> I have also been following along and I know that you wanted a more
> open approach to the CAC adventure.  I am sorry that did not happen.

Me too :(

> I am sure you have noticed I am just frustrated with the way the whole
> CFML stuff has developed at Macromedia and now Adobe.  I love CFML and
> I have paid my bills with it for the last 10 years.

Likewise (almost - I joined Macromedia in 2000 as Senior IT Architect
and started doing CFML in late 2001). My work since then has been
mostly CF-focused. Until other engines appeared, ColdFusion was a
"product" more than a "language / compiler" so the proprietary nature
didn't really matter so much - remember it was competing against ASP
in the Allaire days, another closed, proprietary "product".

> If time permitted I would get into the Railo source and begin to
> understand how all of the parts fit together.

Even I haven't had that luxury yet... :)


--
Sean A Corfield -- (904) 302-SEAN

Railo Technologies, Inc. -- http://getrailo.com/
An Architect's View -- http://corfield.org/

Reply all
Reply to author
Forward
0 new messages