@Override public final Resource forLocale(Locale locale) { try { acquireReadLock(); for (Localization l = firstLocalization; l != null; l = l.next) { if (l.locale.equals(locale)) { return l.resource; } } return populateLocalizationCache(locale); } finally { releaseReadLock(); } }
/** * Simple check for whether {@link #toURL()} returns null or not. */ @Override public boolean exists() { try { acquireReadLock(); if (!existsComputed) { computeExists(); } return exists; } finally { releaseReadLock(); } }
private void computeExists() { try { upgradeReadLockToWriteLock(); if (!existsComputed) { exists = toURL() != null; existsComputed = true; } } finally { downgradeWriteLockToReadLock(); } }
private Resource populateLocalizationCache(Locale locale) { try { upgradeReadLockToWriteLock(); // Race condition: another thread may have beaten us to it: for (Localization l = firstLocalization; l != null; l = l.next) { if (l.locale.equals(locale)) { return l.resource; } } Resource result = findLocalizedResource(locale); firstLocalization = new Localization(locale, result, firstLocalization); return result; } finally { downgradeWriteLockToReadLock(); } }
File file = toFile(url); expectedFileName = extractFile(file.getCanonicalPath().replace(sep, "/")); } catch (IOException e) String actualFileName = getFile();
for (String term : getFolder().split("/")) return createResource(path.toString());
@Override public final Resource withExtension(String extension) { assert InternalUtils.isNonBlank(extension); int dotx = path.lastIndexOf('.'); if (dotx < 0) return createResource(path + "." + extension); return createResource(path.substring(0, dotx + 1) + extension); }
/** * Creates a new resource, unless the path matches the current Resource's path (in which case, this resource is * returned). */ private Resource createResource(String path) { if (this.path.equals(path)) return this; return newResource(path); }
@Override public final String getFile() { return extractFile(path); }
private Resource populateLocalizationCache(Locale locale) { try { upgradeReadLockToWriteLock(); // Race condition: another thread may have beaten us to it: for (Localization l = firstLocalization; l != null; l = l.next) { if (l.locale.equals(locale)) { return l.resource; } } Resource result = findLocalizedResource(locale); firstLocalization = new Localization(locale, result, firstLocalization); return result; } finally { downgradeWriteLockToReadLock(); } }
File file = toFile(url); expectedFileName = extractFile(file.getCanonicalPath().replace(sep, "/")); } catch (IOException e) String actualFileName = getFile();
for (String term : getFolder().split("/")) return createResource(path.toString());
@Override public final Resource withExtension(String extension) { assert InternalUtils.isNonBlank(extension); int dotx = path.lastIndexOf('.'); if (dotx < 0) return createResource(path + "." + extension); return createResource(path.substring(0, dotx + 1) + extension); }
/** * Creates a new resource, unless the path matches the current Resource's path (in which case, this resource is * returned). */ private Resource createResource(String path) { if (this.path.equals(path)) return this; return newResource(path); }
@Override public final String getFile() { return extractFile(path); }
private void computeExists() { try { upgradeReadLockToWriteLock(); if (!existsComputed) { exists = toURL() != null; existsComputed = true; } } finally { downgradeWriteLockToReadLock(); } }
@Override public final Resource forLocale(Locale locale) { try { acquireReadLock(); for (Localization l = firstLocalization; l != null; l = l.next) { if (l.locale.equals(locale)) { return l.resource; } } return populateLocalizationCache(locale); } finally { releaseReadLock(); } }
/** * Simple check for whether {@link #toURL()} returns null or not. */ @Override public boolean exists() { try { acquireReadLock(); if (!existsComputed) { computeExists(); } return exists; } finally { releaseReadLock(); } }
private Resource findLocalizedResource(Locale locale) { for (String path : new LocalizedNameGenerator(this.path, locale)) { Resource potential = createResource(path); if (potential.exists()) return potential; } return null; }
private Resource findLocalizedResource(Locale locale) { for (String path : new LocalizedNameGenerator(this.path, locale)) { Resource potential = createResource(path); if (potential.exists()) return potential; } return null; }