Beispiel #1
0
        public MessageBundle getBundle(GadgetSpec spec, Locale locale, bool ignoreCache)
        {
            MessageBundle parent     = getParentBundle(spec, locale, ignoreCache);
            MessageBundle child      = null;
            LocaleSpec    localeSpec = spec.getModulePrefs().getLocale(locale);

            if (localeSpec == null)
            {
                return(parent ?? MessageBundle.EMPTY);
            }
            Uri messages = localeSpec.getMessages();

            if (messages == null || messages.ToString().Length == 0)
            {
                child = localeSpec.getMessageBundle();
            }
            else
            {
                child = fetchBundle(localeSpec, ignoreCache);
            }
            return(new MessageBundle(parent, child));
        }
        protected MessageBundle fetchBundle(LocaleSpec locale, bool ignoreCache)
        {
            Uri      url     = locale.getMessages();
            sRequest request = new sRequest(url).setIgnoreCache(ignoreCache);

            // Since we don't allow any variance in cache time, we should just force the cache time
            // globally. This ensures propagation to shared caches when this is set.
            request.setCacheTtl((int)(refresh / 1000));

            sResponse response = fetcher.fetch(request);

            if (response.getHttpStatusCode() != (int)HttpStatusCode.OK)
            {
                throw new GadgetException(GadgetException.Code.FAILED_TO_RETRIEVE_CONTENT,
                                          "Unable to retrieve message bundle xml. HTTP error " +
                                          response.getHttpStatusCode());
            }

            MessageBundle bundle = new MessageBundle(locale, response.responseString);

            return(bundle);
        }