Chuck,

On 23. 1. 2015, at 23:59, Chuck Hill <ch...@gevityinc.com> wrote:
> You know, you really have excellent skills in finding very weird problems!  
> :-)

I am not sure whether it's something to be proud of, anyway! ;)

> I can’t think of where these would come from, other than a poorly written 
> client.  Are you using Ajax on the page?  Is this something JS is doing?

Hmmm... I'm not using Ajax, but there is a JS, which can -- in some cases -- 
reload the page ()... let me see...

... alas, nope. It does not seem to be the culprit.

Well, I sort of solved it by checking whether the market ID is non-null and 
whether there's a market for the ID etc, silently returning null if not -- so 
hopefully, it won't harm much.

Thanks a lot!
OC

> On 2015-01-23, 6:05 AM, "OC" wrote:
> 
> Hello there,
> 
> just yesterday, I was asked to make sure an image read from the database gets 
> always a fixed URL. Thus
> 
> (i) I replaced my original HTML code
> 
> ===
>   <wo:if condition="$sess.currentLanguageEnglish">
>     <wo:img data = "$sess.currentMarket.marketBannerDataEN" mimeType = 
> "$sess.currentMarket.marketBannerMIMEEN" />
>   </wo:if><wo:else>
>     <wo:img data = "$sess.currentMarket.marketBannerDataCZ" mimeType = 
> "$sess.currentMarket.marketBannerMIMECZ" />
>   </wo:else>
> ===
> 
> by simple
> 
> ===
>   <img src="$bannerImageURL"/>
> ===
> 
> (ii) in the component code, I've added a method
> 
> ===
>     String bannerImageURL() {
>         NSData 
> id=sess.currentLanguageEnglish?sess.currentMarket.marketBannerDataEN:sess.currentMarket.marketBannerDataCZ
>         def url=context.directActionURLForActionNamed('banner',new 
> NSDictionary([mkpk:sess.currentMarket.primaryKeyStringValue, size:id.length, 
> lang:sess.currentLanguageEnglish?'EN':'CZ']), NO/*session ID*/)
>         println "BANNERURL: $url"
>         return url
>     }
> ===
> 
> (iii) I've added an appropriate direct action
> 
> ===
>     WOActionResults bannerAction() {
>         def 
> mpk=request().formValueForKey('mkpk'),lang=request().formValueForKey('lang')
>         println "DA: reading $lang banner image for market $mpk..."
>         ERXEC ec=ERXEC.newEditingContext()
>         DBMarket 
> market=EOUtilities.objectWithPrimaryKeyValue(ec,'DBMarket',mpk as Integer)
>         def 
> mime=market."marketBannerMIME$lang",data=market."marketBannerData$lang"
>         WOResponse wor=new WOResponse()
>         wor.setHeader(mime,"content-type")
>         wor.setContent(data)
>         wor
>     }
> ===
> 
> Most time, it works just as presumed, I'm getting logs like
> 
> ===
> BANNERURL: 
> /cgi-bin/WebObjects/REBOISx.woa/wa/banner?size=102614&mkpk=1000001&lang=CZ
> ...
> DA: reading CZ banner image for market 1000001...
> ===
> 
> and the banner displays all right. So far so good.
> 
> Now, though, I have checked the server logs, and there's lots of exceptions 
> there like
> 
> ===
> DA: reading null banner image for market null...
> 09:01:51.619 ERROR Exception caught: null
> Extra info: {
> ...
> "Headers" = {
> "remote_host" = "172.19.18.1";
> "server_software" = "Apache/2.2.24 (Unix) mod_ssl/2.2.24 OpenSSL/0.9.8y";
> "user-agent" = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) 
> AppleWebKit/600.2.5 (KHTML, like Gecko) Version/8.0.2 Safari/600.2.5";
> "document_root" = "/Library/WebServer/Documents/rebois.cmkbk.cz";
> "server_name" = "rebois.cmkbk.cz";
> "accept" = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
> "x-webobjects-adaptor-version" = "Apache";
> "remote_addr" = "172.19.18.1";
> "host" = "rebois.cmkbk.cz";
> "x-webobjects-request-id" = "5475dfe90000004300001e15";
> "x-webobjects-request-method" = "GET";
> "server_admin" = "ad...@example.com";
> "server_port" = "80";
> "accept-encoding" = "gzip, deflate";
> "remote_port" = "50420";
> "script_filename" = "/cgi-bin";
> "accept-language" = "cs-cz";
> "connection" = "close";
> };
> "URL" = 
> "/cgi-bin/WebObjects/REBOISx.woa/1/wa/banner?size=107683&amp;mkpk=1000001&amp;lang=CZ%22";
> }
>        //log:er.extensions.appserver.ERXApplication [WorkerThread4]
> IllegalArgumentException: Attempt to insert null object into an  
> com.webobjects.foundation.NSDictionary.
>   at com.webobjects.foundation.NSDictionary.<init>(NSDictionary.java:254)
>   at 
> com.webobjects.eoaccess.EOUtilities._primaryKeyDictionary(EOUtilities.java:372)
>   at 
> com.webobjects.eoaccess.EOUtilities.objectWithPrimaryKeyValue(EOUtilities.java:431)
>      ... skipped 3 stack elements
>   at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
>   at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:324)
>   at 
> org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.invoke(StaticMetaMethodSite.java:43)
>   at 
> org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.call(StaticMetaMethodSite.java:88)
>   at 
> org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:124)
>   at app.DirectAction.bannerAction(DirectAction.groovy:22)
> ===
> 
> It's self-evident why the mangled URL fails, but has anybody an idea where 
> the URL might come from?
> 
> In whole my log, there is *no*
> 
> "BANNERURL: /cgi-bin/WebObjects/REBOISx.woa/1"
> 
> -- not once. All "BANNERURL" logs are OK (and followed by one OK "DA:..." 
> log, too). These "1/wa/...&amp..." URLs must come from somewhere else ... 
> well I don't know, but *not* from my bannerImageURL method :-O
> 
> Can you see where they might come from? Would be grateful for any advice,
> OC
> 
> 
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
> Help/Unsubscribe/Update your Subscription:
> https://lists.apple.com/mailman/options/webobjects-dev/chill%40gevityinc.com
> 
> This email sent to ch...@gevityinc.com


 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to