/** * @see * org.apache.velocity.runtime.resource.loader.ResourceLoader#init(com.dotcms.repackage.org.apache.commons.collections.ExtendedProperties) */ public void init(ExtendedProperties configuration) { dataSourceName = StringUtils.nullTrim(configuration.getString("resource.datasource")); tableName = StringUtils.nullTrim(configuration.getString("resource.table")); keyColumn = StringUtils.nullTrim(configuration.getString("resource.keycolumn")); templateColumn = StringUtils.nullTrim(configuration.getString("resource.templatecolumn")); timestampColumn = StringUtils.nullTrim(configuration.getString("resource.timestampcolumn")); if (dataSource != null) { if (Logger.isDebugEnabled(this.getClass())) { Logger.debug( this, "DataSourceResourceLoader: using dataSource instance with table \"" + tableName + "\""); Logger.debug( this, "DataSourceResourceLoader: using columns \"" + keyColumn + "\", \"" + templateColumn + "\" and \"" + timestampColumn + "\""); } Logger.debug(this, "DataSourceResourceLoader initialized."); } else if (dataSourceName != null) { if (Logger.isDebugEnabled(this.getClass())) { Logger.debug( this, "DataSourceResourceLoader: using \"" + dataSourceName + "\" datasource with table \"" + tableName + "\""); Logger.debug( this, "DataSourceResourceLoader: using columns \"" + keyColumn + "\", \"" + templateColumn + "\" and \"" + timestampColumn + "\""); } Logger.debug(this, "DataSourceResourceLoader initialized."); } else { String msg = "DataSourceResourceLoader not properly initialized. No DataSource was identified."; Logger.error(this, msg); throw new RuntimeException(msg); } }
/** * @see * org.apache.velocity.runtime.resource.loader.ResourceLoader#init(org.apache.commons.collections.ExtendedProperties) */ public void init(ExtendedProperties configuration) { if (log.isTraceEnabled()) { log.trace("FileResourceLoader : initialization starting."); } paths.addAll(configuration.getVector("path")); // unicode files may have a BOM marker at the start, but Java // has problems recognizing the UTF-8 bom. Enabling unicode will // recognize all unicode boms. unicode = configuration.getBoolean("unicode", false); if (log.isDebugEnabled()) { log.debug("Do unicode file recognition: " + unicode); } if (log.isDebugEnabled()) { // trim spaces from all paths StringUtils.trimStrings(paths); // this section lets tell people what paths we will be using int sz = paths.size(); for (int i = 0; i < sz; i++) { log.debug("FileResourceLoader : adding path '" + (String) paths.get(i) + "'"); } log.trace("FileResourceLoader : initialization complete."); } }
/** * Get an InputStream so that the Runtime can build a template with it. * * @param templateName name of template to get * @return InputStream containing the template * @throws ResourceNotFoundException if template not found in the file template path. */ public InputStream getResourceStream(String templateName) throws ResourceNotFoundException { /* * Make sure we have a valid templateName. */ if (org.apache.commons.lang3.StringUtils.isEmpty(templateName)) { /* * If we don't get a properly formed templateName then * there's not much we can do. So we'll forget about * trying to search any more paths for the template. */ throw new ResourceNotFoundException("Need to specify a file name or file path!"); } String template = StringUtils.normalizePath(templateName); if (template == null || template.length() == 0) { String msg = "File resource error : argument " + template + " contains .. and may be trying to access " + "content outside of template root. Rejected."; log.error("FileResourceLoader : " + msg); throw new ResourceNotFoundException(msg); } int size = paths.size(); for (int i = 0; i < size; i++) { String path = (String) paths.get(i); InputStream inputStream = null; try { inputStream = findTemplate(path, template); } catch (IOException ioe) { String msg = "Exception while loading Template " + template; log.error(msg, ioe); throw new VelocityException(msg, ioe); } if (inputStream != null) { /* * Store the path that this template came * from so that we can check its modification * time. */ templatePaths.put(templateName, path); return inputStream; } } /* * We have now searched all the paths for * templates and we didn't find anything so * throw an exception. */ throw new ResourceNotFoundException("FileResourceLoader : cannot find " + template); }
/** * Overrides superclass for better performance. * * @since 1.6 */ public boolean resourceExists(String name) { if (name == null) { return false; } name = StringUtils.normalizePath(name); if (name == null || name.length() == 0) { return false; } int size = paths.size(); for (int i = 0; i < size; i++) { String path = (String) paths.get(i); try { File file = getFile(path, name); if (file.canRead()) { return true; } } catch (Exception ioe) { String msg = "Exception while checking for template " + name; log.debug(msg, ioe); } } return false; }
/** * @see * org.apache.velocity.util.RuntimeServicesAware#setRuntimeServices(org.apache.velocity.runtime.RuntimeServices) */ public void setRuntimeServices(RuntimeServices rs) { this.rs = rs; notfound = StringUtils.nullTrim(rs.getString(PROPERTY_NOT_FOUND, DEFAULT_NOT_FOUND)); }