
Homestar9
Contributor
Homestar9
Contributor
Activity
‎Jan 21, 2025
03:29 PM
Agreed, thanks @Charlie Arehart. It's a shame Adobe has been teasing Standard Edition users with this feature for over 16 years, when the actual bug is that Standard users aren't supposed to see the setting. It's like letting a kid hold an ice cream cone, but they don't get to taste it!
... View more
‎Jan 20, 2025
11:31 AM
Thank you, @BKBK; I believe you are correct. Someone submitted a bug a few years back but then mistakenly set the status to "withdrawn". I have created the bug report here: https://tracker.adobe.com/#/view/CF-4225202
... View more
‎Jan 17, 2025
02:22 PM
I am running ACF 2021 (2021.0.18.330341) standard edition, and attempting to configure mail settings. I noticed something strange where, when I check the box "Maintain Connection to Mail Server" and then "Submit Changes", the box shows as unchecked, despite seeing the green "Server has been updated successfully" message: This feels like a bug to me. Can anyone else confirm if they have the same issue. I tried enabling TLS connections on and off to see if it made a difference. It does not. Note: I have a successful connecction to the SMTP server and can send mail fine. The reason why I want to enable this setting is because we frequently send out a "burst" of emails at once and read that enabling this feature is recommended.
... View more
‎Sep 29, 2023
03:38 PM
2 Upvotes
@J E L, thanks for offering the workaround. However, as OP described, the bug exists when text is selected, and you are using the color picker. You cannot select colors from the swatches panel. This feature used to work in older versions but is currently broken.
... View more
‎Sep 29, 2023
01:49 PM
This issue still persists in Photoshop 25.0 on Windows.
... View more
‎Feb 22, 2022
02:05 PM
1 Upvote
We've all built forms that use common reference data like country codes/names, states, etc. Historically I've always stored this type of information in a database that I would query as needed. However, some types of reference data may change once in awhile (e.g. zip/postal codes) and maintaining that data across apps can be a bit cumbersome. Now that I've started thinking about apps from a modular HMVC approach (Coldbox fanboy here), I played with the idea of moving reference data into an external module that could be more easily updated and shared, both between apps and with the CF community (e.g. Forgebox). To play around with this concept further, I created a generic module called "DataLib" that would store US States. The first thing I did was eliminate the database dependency, and instead, I stored all of the reference data as a .json file residing in the module. I then created a component that, when instantiated, would read the reference data and deserialize it for CFML use. Here's an example of my first experiment: Structure /modules_app/dataLib/ModuleConfig.cfc // Coldbox module file /modules_app/dataLib/models/UsStates.cfc // The CFC that is responsible for providing data /modules_app/dataLib/data/usStates.json // the raw JSON file containing the data The UsStates.cfc file might look something like this: component
hint="I am the the US State data library"
{
/**
* Constructor
*/
function init() {
// read the data file into the private scope
variables.states = deSerializeJson( fileRead( expandPath( "/dataLib/data/usstates.json" ) ) );
return this;
}
/**
* list
* Returns the data
*/
struct function list() {
return variables.states;
}
/**
* listAsArray
* returns the data as an array
* todo: force the array to be alphabetical.
*/
array function listAsArray() {
var stateArray = [];
variables.states.each( function( key, value ) {
stateArray.append( { "name": value, "initials": key } );
} );
return stateArray;
} I had a few thoughts about my approach: 1. I love the modularity and ability to store the actual data separately. When the US finally decides to conquer Canada, updating the json file would be extremely easy and it could be pushed to Github, Forgebox, or wherever. 2. I am concerned about the performance implications of using fileRead() to consume the JSON file during instantation. I could make the component a singleton, but for larger reference data (e.g. ZipCodes), I don't like the idea of all that data sitting in memory during the lifespan of the app. For smaller data sets like countries/states, keeping things in memory doesn't smell bad to me. Perhaps this method of storing reference data is ideal only for smaller data sets. Larger data sets like zip codes likely belong in the database, especially since you typically query a subset of data instead of the whole thing at once and databases are good at that type of thing. 3. I also like the idea of adding data manipulation methods onto the component. For example, requesting the data in array format, sorted, etc would be pretty easy to implement and provide useful utilities for consumption. What do you think? How do you handle storing commonly used reference data? Can you see any other flaws in modulizing small reference data sets like I've done in my example?
... View more
‎Jan 21, 2022
04:37 PM
2 Upvotes
Thanks for putting together the example, BKBK. The problem is that Adobe isn't following the spec when it generates the Content-Disposition Filename. It outputs the full path of the file like this: Content-Disposition: form-data; name="attachment"; filename="C:\helloworld.txt" When it should output like this: Content-Disposition: form-data; name="attachment"; filename="helloworld.txt" Spec Reference There's no doubt you can extract just the filename if you're working with a system you control. However, I have encountered issues with 3rd party APIs (e.g. Mailgun) that don't parse the filename and wind up including the path in the final file. I contacted Adobe and I am happy to announce that they have a working hotfix for ACF 2018 that I have tested thoroughly on top of update 13 in development and production. Hopefully Adobe will release this fix in the next official update for 2018 and 2021, but in the meantime, if anyone else is struggling with the issue, please reach out to ColdFusion support and ask for hf201800-4212578
... View more
‎Dec 14, 2021
09:12 PM
@BKBK, my responses to your questions are below: Does sending an attachment like that actually work? Absolutely. See https://cfdocs.org/cfhttpparam (type: file) for details If so, could you please share the cfhttp/cfhttpparam that works. Sure thing, you'll need to create a dummy endpoint (I like Beeceptor) and update the URL as well as the path to the file you actually want to upload. For example, just create a simple txt file. <cfscript>
cfhttp(
method="POST",
url="https://angrysam.free.beeceptor.com", // create your own endpoint on https://beeceptor.com/
result="result"
) {
cfhttpparam(
name="attachment",
type="file",
file="C:\helloworld.txt" // replace with a path to a real file on your system
);
}
writedump( result );
</cfscript>​ If you look at the data Beeceptor receives, you'll see your server's full path was revealed like this: Content-Disposition: form-data; name="attachment"; filename="C:\helloworld.txt" Lucee follows the spec correctly and will use this header instead: Content-Disposition: form-data; name="attachment"; filename="helloworld.txt"
... View more
‎Nov 30, 2021
07:12 AM
Thanks @BKBK. I wish I could do just that. However CFHTTPPARAM doesn't allow the `filename` attribute and the docs specify that the `file` attribute must be the full path to the actual file on disk: "Applies to File type; ignored for all other types. The absolute path to the file that is sent in the request body." cfhttpparam(
name="attachment",
type="file",
file="C:\myFiles\documents\Sample_Adobe_PDF_Document.pdf"
); FYI Lucee handles files in cfhttparam properly and creates the right filename attribute in the request: Content-Disposition: form-data; name="attachment"; filename="Sample_Adobe_PDF_Document.pdf"
Content-Type: application/pdf
... View more
‎Nov 29, 2021
11:53 AM
I recently ran into an issue when interacting with Mailgun's API via CFHTTP whenever we attempted to send a file attachment. The problem is that the recipient's email attachment file name always contains the full path of the file as passed to the cfhttparam file attribute. For example, if my actual filename was "Sample_Adobe_PDF_Document.pdf", Mailgun would send the attachment as "c:myfilesdocumentsSample_Adobe_PDF_Document.pdf". Weird right? I created a dummy API endpoint on beeceptor.com to see what CFHTTP was sending Mailgun, and this is the header that ColdFusion sends: Content-Disposition: form-data; name="attachment"; filename="c:\myFiles\documents\Sample_Adobe_PDF_Document.pdf"
Content-Type: application/pdf At first I figured this was a problem with Mailgun and that they weren't properly parsing the filename, from the POST data. However, when I look at the web specifications for Content-Disposition Filename, it says: "Is followed by a string containing the original name of the file transmitted. The filename is always optional and must not be used blindly by the application: path information should be stripped, and conversion to the server file system rules should be done. This parameter provides mostly indicative information. When used in combination with Content-Disposition: attachment, it is used as the default filename for an eventual "Save As" dialog presented to the user" ColdFusion requires the full path of the file be used in cfhttparam, so I don't think this is a mistake from my end. It also doesn't make sense for ACF to reveal the full internal path of the file in a POST request. Some might argue that sending this data is a security concern. I tested this in ACF 2016, ACF 2018, and ACF 2021. All versions include the full path of the file in the POST request. What do you think? Let me know if you think this is a bug and I'll create a ticket.
... View more
‎Nov 26, 2021
12:27 PM
Update: This appears to be the same issue as discussed here: https://community.adobe.com/t5/coldfusion-discussions/coldfusion-2021-release-and-coldfusion-2018-release-september-updates/m-p/12385986#M189855
... View more
‎Nov 26, 2021
11:52 AM
I just upgraded a server from ACF 2016 to ACF 2018 and I started receiving a strange java.lang.ArrayIndexOutOfBoundsException error message on some Query of Query (QofQ) statements. What's strange is that the exception only occurs when I have SELECT * in the statement. When I actually specify the columns by name, the exception goes away. Unfortunately I can't replace the issue on www.trycf.com because I need an actual database query to start from. Here's a simplified example of a query that throws the exception: <cfquery dbtype="query" name="tempInvoices">
SELECT *
FROM invoices
</cfquery> Replacing it with the column names (or this), fixes the issue: <cfquery dbtype="query" name="tempInvoices">
SELECT #invoices.columnList# <!--- I can also list out the columns and it works --->
FROM invoices
</cfquery> The exception looks like this: Has anyone else encountered this before? This feels like a bug in ACF 2018 since it worked in ACF 2016 and earlier. Edit: This may be the result of a bug introduced in ACF 2018 Update 12 as noted here: https://tracker.adobe.com/#/view/CF-4212389 My example doesn't have the ORDER BY column like the example in the bug report, but it sounds like similar behavior. Hopefully the fix will be included in the next update.
... View more
‎Oct 29, 2021
01:44 PM
2 Upvotes
Thanks @Dave Watts for passing along instructions for manually removing CF 2016. However, I figured out how to get the uninstaller to work. I started with a fresh reboot, made sure CF 2016 services were stopped and then manually executed the uninstaller from the commandline (as admin). I opened the Task Manager and noticed there were two instances of coldfusion.exe running. I double checked by inspecting the file location of the process and sure enough, one of the instances was CF 2016's copy of coldfusion.exe. I manually terminated the process and boom, the uninstaller proceeded as expected! So long, ACF 2016, thanks for all the fish!
... View more
‎Oct 29, 2021
09:00 AM
I successfully upgraded Adobe ColdFusion 2016 to 2018. Once complete, I attempted to uninstall ACF 2016 using the windows uninstaller as well as via the command line. I've tried rebooting the system, making sure services are turned off and/or disabled, but it always hangs on the screen that says: "Please wait, Adobe ColdFusion 2016 is being configured for your system. This may take a moment...". When I fire up the Task Manager I see the ColdFusion Launcher Application isn't using any CPU so it's just sitting there. I am running Windows Server 2012 R2. If anyone has any tips for removing the old version, please let me know.
... View more
‎Sep 15, 2021
07:58 AM
Now see this is why I love the CFML community! I thoroughly enjoyed reading everyone's take on my code experiment and many of the responses gave me a lot to think about. Thanks to everyone who participated. If you had presented me with this problem 2 years ago I would have gone with the more performant `keyExists()` method even if it meant creating `if` statements a mile long. However, nowadays I prioritize code readability (and simplicity) since we have to share our code with others so often - whether it's online or with colleagues. Therefore, in my actual app, I switched to the "isDefined()" solution because it does what I want in a single line and any developer will understand my intent immediately. @bradwood.com introduced the safe navigation possibility which I hadn't considered before. I actually attempted to update the sample benchmark to see how it would stack up, but I must be implementing it incorrectly because I couldn't figure out the best way to use safe navigation to detect if a particular nested key exists or not. Here's the example I tested and couldn't get it to work: // the root struct we will test against
myStruct = {
apiResponse = {
body = "i am the body",
headers = {
status_code = "405",
status = {
code: "200"
}
}
}
};
writeDump( myStruct?.apiResponse?.headers?.status_code ); // 405
writeDump( isNull( myStruct?.apiResponse?.headers?.status_code ) ); // true??? If anyone has any tips regarding a way to use safe navigation in this scenario to test for the existence of a key, please feel free to chime in. Also, I have no idea why the `isNull()` method returns `true` when a key value actually exists.
... View more
‎Sep 07, 2021
03:10 PM
I write a lot of apps that interact with external APIs. Often times the data returned by 3rd parties is a deeply nested structure of data - and occasionally the 3rd party isn't reliable enough to send consistent response structures so I need to check for the existence of structure keys to avoid errors (frustrating, I know). Here's an example of what several response objects might look like from the same API {
// Response sample 1:
apiResponse: {
data: {
errors: [ "surname is invalid" ]
}
}
// Response sample 2:
apiResponse: {
error: "The system is currently offline"
}
// Response sample 3:
apiResponse: {
data: {
name: [ "john smith" ]
}
}
} When I digest the data, I check the `apiResponse` for the existence of keys and sub keys before processing. However, it can be pretty tedious from a coding perspective to write out expressions that check for the existence of every single sub-key like this: if (
arguments.apiResponse.keyExists( "data" ) &&
arguments.apiResponse.data.keyExists( "errors" )
) {
// ... do something
} I wanted to simplify the code, and unfortunately `structKeyExists()` does not support nested keys. My first instinct was to use the 'isDefined()` function to check for the existence of the full struct key path. However, the `isDefined()` function has been mostly vilified by the CFML community for performance/security reasons (related discussion related StackOverflow) Here's the same `if` statement from above using `isDefined()` instead: if ( isDefined( "arguments.apiResponse.data.errors" ) ) {
// ... do something
} Much cleaner, right? Howver, what about the performance implications? `isDefined()` by design will check various scopes to see if the variable exists, which can be slow. I wrote a small UDF that I theorized would be more efficient than `isDefined()` and could allow me to dynamically check a struct for the existence of a key. Here's what I came up with: boolean function structHasKey( required struct struct, required string key ) {
var keyArray = listToArray( arguments.key, "." );
var subStruct = arguments.struct;
for ( var item in keyArray ) {
if ( !subStruct.keyExists( item ) ) {
return false;
}
subStruct = subStruct[ item ];
}
return true;
} With this new UDF, we can make the same check as above like this: if ( structHasKey( arguments.apiResponse, "data.errors" ) ) {
// ... do something
} I wrote a simple benchmark to see how this UDF stacks up against `isDefined()` and the traditional approach of using `structKeyExists()`. Now, I realize TryCF isn't the most scientifically appropriate benchmarking tool, but it's interesting to see how the various CFML engines (Adobe/Lucee) handle the different approaches. I also believe `isDefined()` must perform differently based on the number of variables present in the URL/FORM (and other) scopes that it checks. After running the TryCF gist 20-30 times, the fastest method was the old-school `structKeyExists()`. Both the UDF method and `isDefined()` traded between 2nd and 3rd place quite often - especially depending on the CF engine so I wasn't able to make a final consensus. If I were a betting man, i would have thought my UDF was going to beat `isDefined()` every time, but the overhead of executing the UDF must outweigh any benefit of the approach. If anyone has any tips on improving the UDF, or my test setup, let me know as I'd love to play with this concept more.
... View more
‎Sep 03, 2021
09:18 AM
@Dave Watts yes, you are correct. My intent was to use some type of environment detection so that I could set `this.datasource` dynamically. I like the INI example and it's similar to using an .env file from within Commandbox. The trick is that `this.datasource` gets reset on every request as @BKBK indicated so I would need to detect the environment on every request as well. I'm just thinking out loud here, but maybe I could read the INI file and use it to set some `application` scope variables which could contain the proper value for `this.datasource`. Example (untested code): // application.cfc
param name="application.dsn" default="productionDsn";
this.datasource = application.dsn;
function onApplicationStart() {
// ... read ini/env file
application.dsn = "..." // set the dsn to the result of environment detection
} @BKBK, your BaseApplication.cfc example is interesting and would work well for multiple sub-applications inside of some type of master application. However, my challenge was to see if I could use `this.datasource` dynamically based on the app's environment (dev/production/staging/etc). Or perhaps I didn't understand the example properly - I'm still waiting for my morning coffee to kick in. 😉 Side note, I like the AppPropertyChanger.cfc sample code. While, it's not exactly what I'm trying to do in my particular challenge, it's a very creative approach!
... View more
‎Aug 30, 2021
08:09 AM
In a perfect world, yes all three environments would be on different instances. However, with some clients production and staging reside on the same CF server. In the latter case, I might have production/staging databases on the same server with a different DSN like this: production: 'mydatabase' staging: 'mydatabase_staging'
... View more
‎Aug 29, 2021
03:31 PM
Great reply @BKBK and I liked your Fort Knox analogy. It makes complete sense why my code example wouldn't work because this.datasource would be reset on every subsequent request. I didn't want to get into the details of why I wanted to change the default datasource for simplicity sake. However, my goal is to utilize different datasources depending on some type of environment detection, similar to how you can have various configurations load in a ColdBox app depending on whether you are in production, development, or staging. If you were running a full modern CFML app with Commandbox servers, you could probably use your .env file to specify different datasources depending on the environment. However, if your production and staging servers relied n more "old school" IIS installations without Commandbox, it can be a little trickier to accomplish the same task. In a perfect world, I'd love to have Coldbox's /config/coldbox.cfc file change the applications `this.datasource` value based on the environment. In the past, when I did specify a `datasource` value in all my queries, I had my DAOs check the Coldbox config for the proper datasource name. Your code examples have given me some ideas for exploring the concept further. Another possibility would be to bake the environment detection using regular expression checks against the host name into Application.cfc - however IMO it would be much cooler if the DSN swap could be done using the config/coldbox.cfc file. Either way, thanks for your input!
... View more
‎Aug 25, 2021
11:16 AM
Hi Charlie, In this case, I'm using QB (query builder), but the main benefit would be to have the default datasource defined without having to specify `datasource="foo"` in every query.
... View more
‎Aug 25, 2021
10:10 AM
We all know the benefits of being able to write `this.datasource` in your Application.cfc. However, does anyone know if there's a way to override or change this value elseware in the app? For example, you might have a configuration CFC or JSON file that would need the App to use a different `this.datasource` value. It would be great to be able to change this on the fly if needed. My only theory as of now (untested) would be to create a method in the Application.cfc which would re-assign the datasource dynamically like this: function setDatasource() {
// read configuration file...
this.datasource = 'foo';
} You could then call this method somewhere in your app using the application scope like this: `application.setDatasource()` Any thoughts or input would be most welcome 🙂
... View more
‎Jul 07, 2021
07:52 AM
@Priyank Shrivastava. unfortunately the Adobe Community won't let me send DM. I get an error message every time that says "You have reached the limit for number of private messages that you can send for now. Please try again later.". What's funny is I have never sent a DM on the forums before. I guess the limit is 0. 😉 Is there another way to get in touch with you like email, Twitter, etc?
... View more
‎Jul 06, 2021
02:17 PM
Did you ever get this straightened out to get your 2018 license? I am in a similar prediciment.
... View more
‎Jun 21, 2021
10:03 AM
1 Upvote
My recommendation would be to make sure that examples use more "real world" variable naming conventions. It's not good practice to name variables ambiguous things like "x" or "y", and code examples should reflect that. I would also use language that is suited towards someone that might just be getting started programming in ColdFusion. IMO documentation should read like a beginner's tutorial and not a technical whitepaper. Documentation should be informal, inviting, and user-friendly. You wouldn't want to scare off anyone who's using CFML for the first time - especially for a page that talks about how to use a fundamental part of the language. I also believe that including comments in code examples is a good idea. If I were writing documentation on getting values from structs, I would probably change it to something like this: // set the value of the 'firstName' key inside of a structure.
user.firstName = "Dave";
// the following ways of outputting the value of 'firstName' are equivelant.
writeDump( user.firstName );
writeDump( user[ "firstName" ] ); If you are looking for inspiration, I very much like the way Ortus put together the introduction to CFML programming here: https://modern-cfml.ortusbooks.com/ I believe that if Adobe made their documentation this user-friendly we would see greater CFML adoption from younger programmers that are just getting started out.
... View more
‎Jun 21, 2021
09:03 AM
Just in case @CreativeDev-e isn't trolling and is instead out of the loop. I recommend checking out the Modernize or Die weekly podcast: https://www.ortussolutions.com/learn/modernize-or-die Listen or watch that for a few weeks and you'll surely see how CFML is still a well-loved and adopted platform all over the world. Edit: I can't believe I forgot to mention the Online ColdFusion Meetup that Charlie organizes on a weekly basis. If you're interested in CFML and want to connect with other community members, I 100% recommend checking this out: https://www.meetup.com/coldfusionmeetup/
... View more
‎Jun 15, 2021
03:58 PM
Hi Charlie, You're totally right. I assumed that section was referring to `variables.myVar.a.b` as a path of nested struct keys and not a single key named `myVar.a.b`. I think with a little cleaning up and expanding on the sample code, Adobe could make the explanation a little clearer. The first thing I think of when I see period notation like that is that the value represents a nested struct - but maybe that's just me.
... View more
‎Jun 15, 2021
12:54 PM
There appears to be a significant bug in Adobe's ColdFusion Documentation on getting variables with period references. Under the "getting a variable" heading it shows the following sample code: <cfoutput>myVar.a.b is: #Variables["myVar.a.b"]#</cfoutput> However, you can't reference a struct key like that in any version of ACF. Here's a snippet that will throw an error every time you try to execute it (change the server to try different versions). Here's the code: <cfscript>
variables.myVar.a.b = "apple";
writeDump( variables[ "myVar.a.b" ] );
</cfscript> Oddly enough, I feel like CFML should work as the documentation describes. It is too bad that it does not.
... View more
‎Mar 24, 2021
12:34 AM
4 Upvotes
Well, I did some more digging and found others experiencing the same issue I was having on the Adobe Bug Tracker: https://tracker.adobe.com/#/view/CF-4208310 The TLDR is to clear out your C:\ColdFusion2016\cfusion\wwwroot\WEB-INF\cfclasses folder after you update ACF 2016. -- Edit 6/2/2021: You will also need to restart CFML services after clearing out the cfclasses folder.
... View more
‎Mar 24, 2021
12:06 AM
Hello CFers, I installed the ColdFusion 2016 Update 17 (from Update 16) which came out this week and unfortunately all of my Coldbox sites are getting 500 errors when trying to load them. The line that is causing the error is as follows: `variables.thisRoute.handler = arguments.handler ?: "";` The error that is being generated in the logs is: "Error","ajp-nio-127.0.0.1-8016-exec-12","03/23/21","22:31:22","6A70E1E9B0E6E14EC4590A014F4D5C13","coldfusion.runtime.CFPage._isDefinedElvis(Ljava/lang/String;)Ljava/lang/Object; The specific sequence of files included or processed is: C:\websites\mysite.com\wwwroot\index.cfm, line: 1217 " java.lang.NoSuchMethodError: coldfusion.runtime.CFPage._isDefinedElvis(Ljava/lang/String;)Ljava/lang/Object; at cfRouter2ecfc1597072887$func_CF_ANONYMOUSCLOSURE_ELVIS1155.runFunction(C:\websites\mysite.com\wwwroot\coldbox\system\web\routing\Router.cfc:1217) at coldfusion.runtime.Closure.invoke(Closure.java:109) at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:389) at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:95) at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:340) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:235) at coldfusion.runtime.CfJspPage._invokeUDF(CfJspPage.java:3697) at coldfusion.runtime.CfJspPage._invokeUDF(CfJspPage.java:3677) at coldfusion.runtime.CfJspPage._invokeElvisUDF(CfJspPage.java:3601) at cfRouter2ecfc1597072887$funcROUTE.runFunction(C:\websites\mysite.com\wwwroot\coldbox\system\web\routing\Router.cfc:1217) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:493) at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:389) at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:95) at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:340) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:235) at coldfusion.runtime.CfJspPage._invokeUDF(CfJspPage.java:3697) at coldfusion.runtime.CfJspPage._invokeUDF(CfJspPage.java:3677) at cfRouter2ecfc467509851$funcCONFIGURE.runFunction(C:\websites\mysite.com\wwwroot\config\Router.cfc:7) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:493) at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:389) at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:95) at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:340) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:235) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:654) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:443) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:413) at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:3247) at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:3224) at cfRoutingService2ecfc1094123460$funcLOADROUTER.runFunction(C:\websites\mysite.com\wwwroot\coldbox\system\web\services\RoutingService.cfc:121) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:493) at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:389) at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:95) at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:340) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:235) at coldfusion.runtime.CfJspPage._invokeUDF(CfJspPage.java:3697) at coldfusion.runtime.CfJspPage._invokeUDF(CfJspPage.java:3677) at cfRoutingService2ecfc1094123460$funcONCONFIGURATIONLOAD.runFunction(C:\websites\mysite.com\wwwroot\coldbox\system\web\services\RoutingService.cfc:53) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:493) at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:389) at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:95) at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:340) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:235) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:654) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:443) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:413) at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:3247) at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:3224) at cfLoaderService2ecfc757761125$funcLOADAPPLICATION.runFunction(C:\websites\mysite.com\wwwroot\coldbox\system\web\services\LoaderService.cfc:66) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:493) at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:426) at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:389) at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:95) at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:340) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:235) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:654) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:443) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:413) at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:3247) at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:3224) at cfBootstrap2ecfc1975085538$funcLOADCOLDBOX.runFunction(C:\websites\mysite.com\wwwroot\coldbox\system\Bootstrap.cfc:98) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:493) at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:389) at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:95) at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:340) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:235) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:654) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:443) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:413) at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:3247) at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:3224) at cfapplication2ecfc1140908838$funcONAPPLICATIONSTART.runFunction(C:\websites\mysite.com\wwwroot\application.cfc:69) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:493) at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:426) at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:389) at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:95) at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:340) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:235) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:654) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:443) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:413) at coldfusion.runtime.AppEventInvoker.invoke(AppEventInvoker.java:114) at coldfusion.runtime.AppEventInvoker.onApplicationStart(AppEventInvoker.java:237) at coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:345) at coldfusion.filter.RequestMonitorFilter.invoke(RequestMonitorFilter.java:43) at coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40) at coldfusion.filter.PathFilter.invoke(PathFilter.java:153) at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:94) at coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28) at coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38) at coldfusion.filter.NoCacheFilter.invoke(NoCacheFilter.java:60) at coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38) at coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22) at coldfusion.filter.CachingFilter.invoke(CachingFilter.java:62) at coldfusion.CfmServlet.service(CfmServlet.java:223) at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42) at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:200) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:544) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:359) at org.apache.coyote.ajp.AjpProcessor.service(AjpProcessor.java:552) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:831) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1634) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.base/java.lang.Thread.run(Thread.java:834) I know ColdFusion 2016 is EOL but is there a channel I can use to let Adobe know their update broke some essential functionality?
... View more
‎Aug 27, 2020
08:53 AM
1 Upvote
This issue still seems to be prevalent in XD version 32.0.22.11. XD will not see fonts added by FontBase even though every other Creative Cloud app (Photoshop, Illustrator, etc.) seems to recognize them. The workaround of activating a font in Adobe Fonts does seem to still work, even though it's annoying. Here's how you do it, just in case anyone is new to CC. 0. Make sure XD is not open. 1. Log into fonts.adobe.com and select a font. I always use https://fonts.adobe.com/fonts/gin because it's easy to remember. 2. Activate the font. 3. You should see a popup notification on Windows from Creative Cloud that the font was added. 4. Fire up XD. You should see your Fontbase fonts have been added.
... View more