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 コメント:
コメントを投稿