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); }