@Nonnull @SuppressFBWarnings ("RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE") public String getRealPath (@Nonnull final String sPath) { final IReadableResource aResource = m_aResourceProvider.getReadableResource (getResourceLocation (sPath)); if (aResource == null) throw new IllegalStateException ("Failed to get real path of '" + sPath + "'"); final File aFile = aResource.getAsFile (); if (aFile == null) throw new IllegalStateException ("Failed to convert resource " + aResource + " to a file"); return aFile.getAbsolutePath (); }
@Override @Nullable public LocalDateTime getLastModificationDateTime (@Nonnull final IRequestWebScopeWithoutResponse aRequestScope) { // We have an existing resource final IReadableResource aRes = aRequestScope.attrs ().getCastedValue (REQUEST_ATTR_OBJECT_DELIVERY_RESOURCE); // Try to convert the resource to a file, because only files have a last // modification DateTime final File aFile = aRes.getAsFile (); if (aFile != null) { final long nLastModified = aFile.lastModified (); if (nLastModified > 0) { return CHttp.convertMillisToLocalDateTime (nLastModified); } } return null; }
@Nullable public static InputSource create (@Nonnull final IReadableResource aResource) { if (aResource instanceof FileSystemResource) { final File aFile = aResource.getAsFile (); if (aFile != null) { // Potentially use memory mapped files final InputSource ret = create (FileHelper.getInputStream (aFile)); if (ret != null) { // Ensure system ID is present - may be helpful for resource // resolution final URL aURL = aResource.getAsURL (); if (aURL != null) ret.setSystemId (aURL.toExternalForm ()); } return ret; } } return new ReadableResourceSAXInputSource (aResource); }