On Thu, Aug 27, 2009 at 12:04 AM, John Hjelmstad <[email protected]> wrote:

> On Wed, Aug 26, 2009 at 2:56 PM, Shaopeng Jia (贾少鹏) <
> [email protected]> wrote:
>
>> Thanks for the reply John! My comments inlined.
>>
>> On Wed, Aug 26, 2009 at 7:57 PM, John Hjelmstad <[email protected]> wrote:
>>
>>> Hi Shaopeng:
>>> As I see it, there are two ways to implement this that fit with current
>>> Shindig extension style. The main issue w/ the patch you've implemented is
>>> that it embeds feature-sensitivity into a core piece of rendering logic. We
>>> can use one of the existing mechanisms:
>>>
>>> 1) feature.xml and the JsLibrary/JsFeatureLoader/GadgetFeature system.
>>> We've been considering the addition of language and country-sensitivity to
>>> this mechanism for some time, and this might be the right place to do it.
>>> The net result would be a feature.xml including blocks such as:
>>> <gadget lang="en" country="us">
>>>   <script src="data/DateTimeConstants_en_us.js"/>
>>>   <script src="..."/>
>>>
>>> This implementation approach is generic and reusable, both reasons I
>>> prefer it, assuming this would work for the i18n library (perhaps you can
>>> say as well as I; a perusal of the DateTimeConstants*.js files doesn't
>>> appear to map cleanly to lang/country... is there other selection logic
>>> needed?). It involves changes to GadgetFeature.java, JsFeatureLoader.java,
>>> JsLibrary.java, and obviously i18n/feature.xml.
>>>
>>
>> I agree this is a better approach. The i18n library almost map cleanly to
>> lang/country. There are some cases where fallbacks are needed though. For
>> example, there is no en_CN (English as used in China) data file, and this
>> needs to fall back to the en data file.
>>
>
> Any such implementation will need to include lang/country fallback
> selection logic, eg. "prefer lang match over country when feature.xml has an
> entry with both but not only one". Complications like these bolster
> arguments in favor of implementation approach #2.
>

Agreed.


>
>
>>
>> However, this sounds like a pretty significant change, and probably won't
>> be in production until OpenSocial 1.0. That might be too late for developers
>> (like Rajiv) who needs to use this feature now. Probably short term we
>> should provide a quick fix, and go for this approach long term.
>>
>
> Well, given that opensocial-i18n is really the only library (of which I'm
> aware) that uses this right now, since you have a strong need for this in
> the short term (and it's not especially clear what the "generic" rules ought
> to be) I'm fine w/ #2 right now. This and other uses cases will hopefully
> accrue to give us a better sense for what we'd need generically.
>

Yes, that sounds good.


>
>
>>
>>
>>>
>>> 2) A GadgetRewriter. Essentially, write an OpensocialI18nGadgetRewriter
>>> implementing GadgetRewriter, which does:
>>>   - Loads data/DateTimeConstants*.js files.
>>>   - In rewriter, injects the appropriate DTC.js when the gadget's
>>> features include "opensocial-i18n".
>>>
>>
>> This is quite similar to what I have been doing in my patch. The
>> difference is instead of extending GadgetRewritter, I changed it directly.
>> My only problem now is how to find the location of the data directory during
>> rendering time. I saw the comments from Paul advising me loading the file
>> directly from the classpath. I will give that a try tomorrow first thing
>> when I get to the office. Hopefully this could work.
>>
>
> Yes, sounds like it'll work. But please do convert your implementation to a
> GadgetRewriter, as doing so is much more modular, easier to maintain, and
> removable by implementations in case problems are found. I'll be happy to do
> the review.
>
> Preferred process:
> 1. Write patch.
> 2. Upload patch to codereview.appspot.com (SVN base: Shindig - *trunk* -
> Real Trunk, Base: http://svn.apache.org/repos/asf/incubator/shindig/trunk/,
> Reviewers: [email protected]).
> 3. Annotate JIRA issue w/ uploaded patch and codereview.appspot reference.
>
> We iterate from there and a committer (probably me, maybe Paul) will commit
> your code when it looks ready.
>

Sure, I will do that tomorrow and hopefully upload the patch when you guys
get to office tomorrow.

Thanks for the great tips and help! :)

Cheers,


>
> Cheers,
> John
>
>
>>
>>
>>>
>>> Thoughts? Other Shindig folks?
>>>
>>> --John
>>>
>>> On Wed, Aug 26, 2009 at 12:41 AM, Shaopeng Jia (贾少鹏) <
>>> [email protected]> wrote:
>>>
>>>> Hi shindig-dev,
>>>> As per this bug:
>>>>
>>>> https://issues.apache.org/jira/browse/SHINDIG-1159
>>>>
>>>>  <https://issues.apache.org/jira/browse/SHINDIG-1159>it seems
>>>> gadgets.i18n.DateTimeConstants.js are not outputted during rendering. I did
>>>> some investigation and located the problem is at
>>>>
>>>>
>>>> java/gadgets/src/main/java/org/apache/shindig/gadgets/render/RenderingContentRewriter.java
>>>>
>>>> I have attached a diff which illustrate how to fix the bug, but it is
>>>> loading the DateTimeConstants from my local directory right now. Is there a
>>>> way to get the location of the feature directory on the fly? Or there are
>>>> better ways to load the js code?
>>>>
>>>> Thanks,
>>>>
>>>> Shaopeng
>>>>
>>>>
>>>> --
>>>> Shaopeng Jia
>>>> 贾少鹏
>>>> Software Engineer - Îñţérñåţîöñåļîžåţîöñ
>>>> Google Switzerland GmbH |Identifikationsnummer: CH-020.4.028.116-1
>>>>
>>>
>>>
>>
>>
>> --
>> Shaopeng Jia
>> 贾少鹏
>> Software Engineer - Îñţérñåţîöñåļîžåţîöñ
>> Google Switzerland GmbH |Identifikationsnummer: CH-020.4.028.116-1
>>
>
>


-- 
Shaopeng Jia
贾少鹏
Software Engineer - Îñţérñåţîöñåļîžåţîöñ
Google Switzerland GmbH |Identifikationsnummer: CH-020.4.028.116-1

Reply via email to