Yes, the last register call is done using your value that you specified.
Ohhh... I can't believe I missed that. Check out the first email I sent
you.
>>> this.apiPath_ = String(osapi.container.util.getSafeJsonValue(config,
>>> osapi.container.ServiceConfig.API_PATH, '/rpc'));
This is the culprit. If the API_PATH is not set in the config, we
probably should not be setting it to '/rpc'.
Furthermore, we probably shouldn't be registering an endpoint here:
>>> /**
>>> * Initialize OSAPI endpoint methods/interfaces.
>>> */
>>> osapi.container.Service.prototype.registerOsapiServices = function() {
>>> var endPoint = this.apiHost_ + this.apiPath_;
if this.apiHost_ isn't defined.
Actually I think the best idea would be if we could find the injected
endpoint and use that as a default if not provided in the passed in config
object.
From: daviesd <[email protected]>
To: <[email protected]>,
Date: 09/21/2011 03:59 PM
Subject: Re: Metadata
The context root is correct (/opensocial). The request for metadata still
tries to use /rpc. If I change it to /opensocail/rpc (by passing it in
config) it works fine.
new osapi.container.Container({apiPath:'/opensocial/rpc'});
This tells me the method that got registered was the /opensocial/rpc one.
doug
On 9/21/11 3:32 PM, "Stanton Sievers" <[email protected]> wrote:
> That sounds plausible to me. It might be worth setting a breakpoint in
>
org.apache.shindig.config.JsonContainerConfigLoader.addHostAndPortToDefaultCon
> tainer(List<Map<String,
> Object>>, String, String, String) and seeing what the Context Root value
> is being set to.
>
> -Stanton
>
>
>
> From: daviesd <[email protected]>
> To: <[email protected]>,
> Date: 09/21/2011 15:27
> Subject: Re: Metadata
>
>
>
> Dan,
>
> I think what might be happening is that the osapi method use to register
> as
> /rpc and then the duplicate /opensocial/rpc came along and was "skipped"
> (at
> least that was I see in my console). Now that you changed it to last
one
> wins it now registers as /opensocial/rpc but the problem is the config
> value
> still thinks it's /rpc. I'm not sure the config value EVER used the
> correct
> value even though it's in container.js as
>
> //%host%${CONTEXT_ROOT}/rpc
>
> So probably the duplicate calls were hiding the fact that the config
value
> was never being used. Sound plausible?
>
> doug
>
>
> On 9/21/11 3:05 PM, "daviesd" <[email protected]> wrote:
>
>> Dan,
>>
>> I mentioned in an earlier thread that apiPath is coming back /rpc (for
>> non-root webcontext). However... It does this in the earlier build too
> and it
>> WORKS. So I'm confused. I'm gonna do some more debugging because I
> really
>> need another fix Stanton just resolved (the encodeToken one), so I'm
> gonna
>> need to pull trunk artifacts again at some point.
>>
>> Thanks,
>> doug
>>
>>
>> On 9/21/11 1:45 PM, "Dan Dumont" <[email protected]> wrote:
>>
>>> Sorry coming late to the thread, but I was the one working on the code
>>> change that seems to have broken you.
>>>
>>> The change was necessary because when loading the container
> cross-domain,
>>> we needed to be able to override some of the endpoints.
>>> var config = {};
>>> config[osapi.container.ServiceConfig.API_PATH] = '/rpc';
>>> config[osapi.container.ServiceConfig.API_HOST] =
> window.location.protocol
>>> + '//' + window.location.hostname + locationOfProxyToShindig();
>>> config[osapi.container.ContainerConfig.RENDER_DEBUG] = '1'; // TODO:
> for
>>> now
>>> var cc = this.statics.cc = new osapi.container.Container(config);
>>>
>>> Can you check to see that service.js is pulling the correct value from
>>> your config here:
>>> /**
>>> * @type {string}
>>> * @private
>>> */
>>> this.apiPath_ = String(osapi.container.util.getSafeJsonValue(config,
>>> osapi.container.ServiceConfig.API_PATH, '/rpc'));
>>>
>>> It gets used later in this call:
>>> /**
>>> * Initialize OSAPI endpoint methods/interfaces.
>>> */
>>> osapi.container.Service.prototype.registerOsapiServices = function() {
>>> var endPoint = this.apiHost_ + this.apiPath_;
>>>
>>>
>>>
>>>
>>> From: daviesd <[email protected]>
>>> To: <[email protected]>,
>>> Date: 09/21/2011 12:54 PM
>>> Subject: Re: Metadata
>>>
>>>
>>>
>>> Stanton (and Ryan),
>>>
>>> I found the issue. It was the 1171551 commit on Friday. Change
>>> osapi._registerMethods to 'last one in wins'.
>>>
>>> If I roll back to the older osapi.js things work.
>>>
>>> Ideas? Again, this is only an issue when running as non-root.
>>>
>>> FYI though I did log the apiPath in both the old and new and it
> reported
>>> /rpc. So my guess is that the metadata request is ALWAYS made to
/rpc,
>>> but
>>> with this change the /rpc method was not registered, only the
>>> /opensocial/rpc. So maybe the wrong config value is being used.
> Confused.
>>>
>>> doug
>>>
>>>
>>>
>>> On 9/21/11 8:12 AM, "Stanton Sievers" <[email protected]> wrote:
>>>
>>>> Hi Doug,
>>>>
>>>> Can you set a breakpoint on
>>>> osapi.container.Service.prototype.registerOsapiServices and see what
> the
>>>> values of apiHost_ and apiPath_ are? It is in this function that the
>>>> endpoints for metadata are registered and that looks like where this
> is
>>>> getting off track. From there you can backtrack and check the config
>>> that
>>>> comes into osapi.container.Service, as it should be defining the
> values
>>> of
>>>> apiHost_ and apiPath_
>>>>
>>>> -Stanton
>>>>
>>>>
>>>>
>>>> From: daviesd <[email protected]>
>>>> To: <[email protected]>,
>>>> Date: 09/20/2011 18:14
>>>> Subject: Re: Metadata
>>>>
>>>>
>>>>
>>>> I've been able to reproduce the metadata call failing on non-root web
>>>> contexts. Here's the best way to demonstrate the issue.
>>>>
>>>> Modify container/sample1.html to this
>>>>
>>>> <html>
>>>> <body onload="init();">
>>>> <div id="gadget-wrapper"></div>
>>>> </body>
>>>> </html>
>>>>
>>>> <script type='text/javascript'
>>>>
>>>
>
src='/gadgets/js/container:rpc.js?c=1&debug=1&nocache=1&container=default'><
>>>> /script>
>>>>
>>>> <script type="text/javascript">
>>>>
>>>> function init() {
>>>>
>>>> var gadgetXml =
> 'http://www.labpixies.com/campaigns/todo/todo.xml';
>>>> var container = new osapi.container.Container({});
>>>> var gadgetSite = container.newGadgetSite(
>>>> document.getElementById('gadget-wrapper') );
>>>> container.navigateGadget( gadgetSite, gadgetXml, [], { view:
> 'home'
>>> }
>>>> );
>>>> }
>>>>
>>>> </script>
>>>>
>>>> Startup shindig (mvn -Prun) and hit
>>>>
>>>> http://localhost:8080/container/sample1.html
>>>>
>>>> Gadget renders just fine.
>>>>
>>>> (clear your browser cache)
>>>>
>>>> Now switch the contextPath. Modify contextPath in root pom.xml to
>>>>
>>>> <contextPath>/opensocial</contextPath>
>>>>
>>>> And modify this line in sample1.html
>>>>
>>>> <script type='text/javascript'
>>>>
>>>
>
src='/opensocial/gadgets/js/container:rpc.js?c=1&debug=1&nocache=1&container
>>>> =default'></script>
>>>>
>>>> Now restart (mvn -Prun) and hit the sample1 page again.
>>>>
>>>> http://localhost:8080/opensocial/container/sample1.html
>>>>
>>>> You'll now see a 404 failure on the metadata request
>>>>
>>>> http://localhost:8080/rpc?st=-1%3A-1%3A*%3A*%3A*%3A0%3Adefault
>>>>
>>>>
>>>
>
[{"method":"gadgets.metadata","id":"gadgets.metadata","params":{"container":
>>>> "default","ids":["http://www.google.com/ig/modules/horoscope.xml
>>>> "],"fields":
>>>>
>>>
>
["iframeUrl","modulePrefs.*","needsTokenRefresh","userPrefs.*","views.prefer
>>>>
>>>
>
redHeight","views.preferredWidth","expireTimeMs","responseTimeMs"],"language
>>>> ":"en","country":"US","userId":"@viewer","groupId":"@self"}}]
>>>>
>>>> (I'm not sure why I was seeing the 400 error, it might have been the
>>>> wrapper
>>>> I had around the call).
>>>>
>>>> At any rate... Does this seem broken? If I go back to the 9/13
> release
>>> (
>>>> r1170371) this same scenario works. So some recent change has
> modified
>>>> the
>>>> behavior.
>>>>
>>>> Doug
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> On 9/20/11 12:51 PM, "daviesd" <[email protected]> wrote:
>>>>
>>>>> Yes. This was working until sometime late last week. We pull the
>>>> shindig
>>>>> artifacts and assemble our own war file.
>>>>>
>>>>> doug
>>>>>
>>>>>
>>>>> On 9/20/11 12:14 PM, "Henry Saputra" <[email protected]>
wrote:
>>>>>
>>>>>> Are you trying to deploy Shindig as non root app?
>>>>>>
>>>>>> - Henry
>>>>>>
>>>>>> 2011/9/20 daviesd <[email protected]>:
>>>>>>> I rolled back to the 3.0.0-20110913.224653 snapshot and my stuff
is
>>>> working
>>>>>>> again. ?So I'm still suspecting something checked in last Thurs or
>>> Fri
>>>> is
>>>>>>> causing us problems. ?As time permits I'll try and track this
down,
>>>> but
>>>>>>> maybe something will jump out at someone. ?Again it appears that
> the
>>>>>>> metadata call is not honoring the CONTEXT_ROOT.
>>>>>>>
>>>>>>> doug
>>>>>>>
>>>>>>>
>>>>>>> On 9/20/11 10:02 AM, "daviesd" <[email protected]> wrote:
>>>>>>>
>>>>>>>> What's weird is it seem to be trying to use /rpc and not
>>>>>>>> ${CONTEXT_ROOT}/rpc
>>>>>>>> for the metadata request. ?We run our shindig as non-root.
>>>>>>>>
>>>>>>>> We're gonna try an older snapshot and see if it works.
>>>>>>>>
>>>>>>>> doug
>>>>>>>>
>>>>>>>>
>>>>>>>> On 9/19/11 8:26 PM, "Henry Saputra" <[email protected]>
> wrote:
>>>>>>>>
>>>>>>>>> Hi Doug,
>>>>>>>>>
>>>>>>>>> Just pull latest from trunk and I did curl for gadget metadata
> and
>>>> got
>>>>>>>>> this response:
>>>>>>>>>
>>>>>>>>> curl -H "Content-Type: application/json" --data-binary '
>>>>>>>>>
>>>>>>>
>>>>
>>>
>
[{"method":"gadgets.metadata","id":"gadgets.metadata","params":{"container":>
>>>>>>
>>>>
>>>> "
>>>>>>>>>
>>>>>>> d
>>>>>>>>>
>>>>>>>
>>>> efault","ids":["http://www.google.com/ig/modules/horoscope.xml
>>>> "],"fields":[">>>
>>>> i
>>>>>>>>>
>>>>>>> f
>>>>>>>>>
>>>>>>>
>>>>
>>>
>
rameUrl","modulePrefs.*","needsTokenRefresh","userPrefs.*","views.preferredH>
>>>>>>
>>>>
>>>> e
>>>>>>>>>
>>>>>>> i
>>>>>>>>>
>>>>>>>
>>>>
>>>
>
ght","views.preferredWidth","expireTimeMs","responseTimeMs"],"language":"en">
>>>>>>
>>>>
>>>> ,
>>>>>>>>>
>>>>>>> "
>>>>>>>>> country":"US","userId":"@viewer","groupId":"@self"}}]'
>>>>>>>>> http://localhost:8080/rpc
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>
>>>> [{"id":"gadgets.metadata","result":{"
>>>> http://www.google.com/ig/modules/horosc>>>
>>>> o
>>>>>>>>>
>>>>>>> p
>>>>>>>>>
>>>>>>>
>>>>
>>>
>
e.xml":{"userPrefs":{"day":{"dataType":"HIDDEN","orderedEnumValues":[],"name>
>>>>>>
>>>>
>>>> "
>>>>>>>>>
>>>>>>> :
>>>>>>>>>
>>>>>>>
>>>>
>>>
>
"day","required":false,"displayName":"day","defaultValue":""},"month":{"data>
>>>>>>
>>>>
>>>> T
>>>>>>>>>
>>>>>>> y
>>>>>>>>>
>>>>>>>
>>>>
>>>
>
pe":"HIDDEN","orderedEnumValues":[],"name":"month","required":false,"display>
>>>>>>
>>>>
>>>> N
>>>>>>>>>
>>>>>>> a
>>>>>>>>>
>>>>>>>
>>>>
>>>
>
me":"month","defaultValue":""},"selectedTab":{"dataType":"HIDDEN","orderedEn>
>>>>>>
>>>>
>>>> u
>>>>>>>>>
>>>>>>> m
>>>>>>>>>
>>>>>>>
>>>>
>>>
>
Values":[],"name":"selectedTab","required":false,"displayName":"selectedTab">
>>>>>>
>>>>
>>>> ,
>>>>>>>>>
>>>>>>> "
>>>>>>>>>
>>>>>>>
>>>>
>>>
>
defaultValue":"0"},"uid":{"dataType":"HIDDEN","orderedEnumValues":[],"name":>
>>>>>>
>>>>
>>>> "
>>>>>>>>>
>>>>>>> u
>>>>>>>>>
>>>>>>>
>>>>
>>>
>
id","required":false,"displayName":"uid","defaultValue":""},"selectedFriend">
>>>>>>
>>>>
>>>> :
>>>>>>>>>
>>>>>>> {
>>>>>>>>>
>>>>>>>
>>>>
>>>
>
"dataType":"HIDDEN","orderedEnumValues":[],"name":"selectedFriend","required>
>>>>>>
>>>>
>>>> "
>>>>>>>>>
>>>>>>> :
>>>>>>>>>
>>>>>>>
>>>>
>>>
>
false,"displayName":"selectedFriend","defaultValue":"0"}},"needsTokenRefresh>
>>>>>>
>>>>
>>>> "
>>>>>>>>>
>>>>>>> :
>>>>>>>>>
>>>>>>>
>>>>
>>>
>
false,"expireTimeMs":1316478556657,"views":{"home":{"preferredHeight":0,"qui>
>>>>>>
>>>>
>>>> r
>>>>>>>>>
>>>>>>> k
>>>>>>>>>
>>>>>>>
>>>>
>>>
>
s":true,"preferredWidth":0},"default":{"preferredHeight":0,"quirks":true,"pr>
>>>>>>
>>>>
>>>> e
>>>>>>>>>
>>>>>>> f
>>>>>>>>>
>>>>>>>
>>>>
>>>
>
erredWidth":0},"preview":{"preferredHeight":0,"quirks":true,"preferredWidth">
>>>>>>
>>>>
>>>> :
>>>>>>>>>
>>>>>>> 0
>>>>>>>>>
>>>>>>>
>>>>
>>>
>
},"canvas":{"preferredHeight":0,"quirks":true,"preferredWidth":0}},"modulePr>
>>>>>>
>>>>
>>>> e
>>>>>>>>>
>>>>>>> f
>>>>>>>>>
>>>>>>>
>>>> s":{"screenshot":"
>>>> http://www.gstatic.com/ig/modules/horoscope/horoscope.cach>>>
>>>> e
>>>>>>>>>
>>>>>>> .
>>>>>>>>>
>>>>>>>
>>>>
>>>
>
png","authorEmail":"[email protected]>
>>>>>>
>>>>
>>>> o
>>>>>>>>>
>>>>>>> m
>>>>>>>>>
>>>>>>>
>>>>
>>>
>
","width":0,"authorLink":"","links":{},"scaling":false,"author":"csindia-gad>
>>>>>>
>>>>
>>>> g
>>>>>>>>>
>>>>>>> e
>>>>>>>>> ts","directoryTitle":"Daily
>>>>>>>>> Horoscopes","title":"Today's
>>>>>>>>>
>>>>>>>
>>>> Horoscope","height":200,"thumbnail":"
>>>> http://www.gstatic.com/ig/modules/horos>>>
>>>> c
>>>>>>>>>
>>>>>>> o
>>>>>>>>>
>>>>>>>
>>>> pe/horoscope-thm.cache.png","titleUrl":"
http://www.dailyhoroscope.com/
>>>> ","scr>>>
>>>> o
>>>>>>>>>
>>>>>>> l
>>>>>>>>> ling":false,"description":"Daily
>>>>>>>>> horoscopes and Astrosync courtesy of
>>>>>>>>>
>>>>>>>
>>>>
>>>
>
tarot.com","features":{"dynamic-height":{"name":"dynamic-height","params":{}>
>>>>>>
>>>>
>>>> ,
>>>>>>>>>
>>>>>>> "
>>>>>>>>>
>>>>>>>
>>>>
>>>
>
required":true},"views":{"name":"views","params":{},"required":true},"setpre>
>>>>>>
>>>>
>>>> f
>>>>>>>>>
>>>>>>> s
>>>>>>>>>
>>>>>>>
>>>>
>>>
>
":{"name":"setprefs","params":{},"required":true},"core":{"name":"core","par>
>>>>>>
>>>>
>>>> a
>>>>>>>>>
>>>>>>> m
>>>>>>>>>
>>>>>>>
>>>>
>>>
>
s":{},"required":true},"settitle":{"name":"settitle","params":{},"required":>
>>>>>>
>>>>
>>>> t
>>>>>>>>>
>>>>>>> r
>>>>>>>>>
>>>>>>>
>>>>
>>>
>
ue},"tabs":{"name":"tabs","params":{},"required":true}},"categories":["",""]>
>>>>>>
>>>>
>>>> ,
>>>>>>>>>
>>>>>>> "
>>>>>>>>>
>>>>>>>
>>>>
>>>
>
authorPhoto":""},"responseTimeMs":1316478256657,"iframeUrl":"//localhost:808>
>>>>>>
>>>>
>>>> 0
>>>>>>>>>
>>>>>>> /
>>>>>>>>>
>>>>>>>
>>>>
>>>
>
gadgets/ifr?url=http%3A%2F%2Fwww.google.com%2Fig%2Fmodules%2Fhoroscope.xml&c>
>>>>>>
>>>>
>>>> o
>>>>>>>>>
>>>>>>> n
>>>>>>>>>
>>>>>>>
>>>>
>>>
>
tainer=default&view=%25view%25&lang=%25lang%25&country=%25country%25&debug=%>
>>>>>>
>>>>
>>>> 2
>>>>>>>>>
>>>>>>> 5
>>>>>>>>>
>>>>>>>
>>>>
>>>
>
debug%25&nocache=%25nocache%25&sanitize=%25sanitize%25&v=81c0125ea88602827eb>
>>>>>>
>>>>
>>>> e
>>>>>>>>>
>>>>>>> 7
>>>>>>>>>
>>>>>>>
>>>>
>>>
>
788ff5921e1#up_day=%25up_day%25&up_month=%25up_month%25&up_selectedTab=%25up>
>>>>>>
>>>>
>>>> _
>>>>>>>>>
>>>>>>> s
>>>>>>>>>
>>>>>>>
>>>>
>>>
>
electedTab%25&up_uid=%25up_uid%25&up_selectedFriend=%25up_selectedFriend%25">
>>>>>>
>>>>
>>>> }
>>>>>>>>>
>>>>>>> }
>>>>>>>>> }]
>>>>>>>>>
>>>>>>>>> Looks ok to me.
>>>>>>>>>
>>>>>>>>> - Henry
>>>>>>>>>
>>>>>>>>> On Mon, Sep 19, 2011 at 4:55 PM, daviesd <[email protected]>
> wrote:
>>>>>>>>>> Is there anything that would have changed since last Thursday
or
>>> so
>>>> that
>>>>>>>>>> would be causing the metadata call to fail with a 400 error?
>>>>>>>>>>
>>>>>>>>>> I grabbed the latest artifacts today and I¹m getting a 400 when
>>>> making
>>>>>>>>>> the
>>>>>>>>>> metadata request.
>>>>>>>>>>
>>>>>>>>>>
>>>>
>>>
>
[{"method":"gadgets.metadata","id":"gadgets.metadata","params":{"containe>>>>
>>>>>>
>>>>
>>>> r
>>>>>>>>>> ":
>>>>>>>>>>
>>>> "default","ids":["http://www.google.com/ig/modules/horoscope.xml
>>>> "],"field>>>>>>
>>>> s
>>>>>>>>>> ":
>>>>>>>>>>
>>>>
>>>
>
["iframeUrl","modulePrefs.*","needsTokenRefresh","userPrefs.*","views.pre>>>>
>>>>>>
>>>>
>>>> f
>>>>>>>>>> er
>>>>>>>>>>
>>>>
>>>
>
redHeight","views.preferredWidth","expireTimeMs","responseTimeMs"],"langu>>>>
>>>>>>
>>>>
>>>> a
>>>>>>>>>> ge
>>>>>>>>>> ":"en","country":"US","userId":"@viewer","groupId":"@self"}}]
>>>>>>>>>>
>>>>>>>>>> This was working late last week. ?It almost seems like it¹s
>>> getting
>>>>>>>>>> garbage
>>>>>>>>>> back from the request.
>>>>>>>>>>
>>>>>>>>>> Thanks,
>>>>>>>>>> Doug
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>>
>>>
>
>
>
>
>