メモ代わり。てきとーに。 いや、ですからてきとーですって。 2年前ぐらいにPythonあたりでメールくれた方、ごめんなさい。メール紛失してしまい無視した形になってしまいました。。。

2009年7月17日金曜日

[Apache Shindig][お勉強][OpenSocial] メモ51 opensocial.Person.Field.PROFILE_URL

opensocial.newFetchPersonRequest使って、全項目取得すると、
サーバ側でセットしていないはずの
opensocial.Person.Field.URLS
が取得できてしまう。
どんな値が入っているかというと、
opensocial.Person.Field.PROFILE_URL
でセットした値。

なんでかと思って、ソース見てみた。
すると、org.apache.shindig.social.core.model.PersonImplに、


public String getProfileUrl() {
Url url = getListFieldWithType(PROFILE_URL_TYPE, getUrls());
return url == null ? null : url.getValue();
}

public void setProfileUrl(String profileUrl) {
Url url = getListFieldWithType(PROFILE_URL_TYPE, getUrls());
if (url != null) {
url.setValue(profileUrl);
} else {
setUrls(addListField(new UrlImpl(profileUrl, null, PROFILE_URL_TYPE), getUrls()));
}
}


とsetProfileUrlメソッドはなっていて、さらに、
getUrlsは、

public List<Url> getUrls() {
return urls;
}


となっている。

ほっほぅ。
なるほど。

でも、setUrlsを見てみると、、

public void setUrls(List<Url> urls) {
this.urls = urls;
}


となっているんで、
setProfileUrlをコールした後に、setUrlsをコールしてしまうと、
setProfileUrlでセットした値がどっかへいってしまう。。

PersonImplをオリジナルで実装するか、もしくは、
setProfileUrlを必ずsetUrlsの前でコールしないとだめみたい。

.

0 コメント: