Resource
/// <summary> Create a new Resource of the specified type. /// /// </summary> /// <param name="resourceName"> The name of the resource to retrieve. /// </param> /// <param name="resourceType"> The type of resource (<code>RESOURCE_TEMPLATE</code>, <code>RESOURCE_CONTENT</code>, etc.). /// </param> /// <returns> new instance of appropriate resource type /// </returns> /// <since> 1.6 /// </since> protected internal virtual Resource CreateResource(string resourceName, int resourceType) { return(ResourceFactory.getResource(resourceName, resourceType)); }
/// <summary> /// Loads a resource from the current set of resource loaders /// </summary> /// <param name="resourceName">The name of the resource to retrieve.</param> /// <param name="resourceType">The type of resource (<code>Template</code>, /// <code>Content</code>, etc.). /// </param> /// <param name="encoding"> The character encoding to use.</param> /// <returns>Resource with the template parsed and ready. /// @throws ResourceNotFoundException if template not found /// from any available source. /// @throws ParseErrorException if template cannot be parsed due /// to syntax (or other) error. /// @throws Exception if a problem in parse /// </returns> protected internal Resource LoadResource(String resourceName, ResourceType resourceType, String encoding) { Resource resource = ResourceFactory.GetResource(resourceName, resourceType); resource.RuntimeServices = runtimeServices; resource.Name = resourceName; resource.Encoding = encoding; /* * Now we have to try to find the appropriate * loader for this resource. We have to cycle through * the list of available resource loaders and see * which one gives us a stream that we can use to * make a resource with. */ long howOldItWas = 0; // Initialize to avoid warnings ResourceLoader resourceLoader = null; for (int i = 0; i < resourceLoaders.Count; i++) { resourceLoader = (ResourceLoader)resourceLoaders[i]; resource.ResourceLoader = resourceLoader; /* * catch the ResourceNotFound exception * as that is ok in our new multi-loader environment */ try { if (resource.Process()) { /* * FIXME (gmj) * moved in here - technically still * a problem - but the resource needs to be * processed before the loader can figure * it out due to to the new * multi-path support - will revisit and fix */ if (logWhenFound) { runtimeServices.Info( string.Format("ResourceManager : found {0} with loader {1}", resourceName, resourceLoader.ClassName)); } howOldItWas = resourceLoader.GetLastModified(resource); break; } } catch (ResourceNotFoundException) { /* * that's ok - it's possible to fail in * multi-loader environment */ } } /* * Return null if we can't find a resource. */ if (resource.Data == null) { throw new ResourceNotFoundException(string.Format("Unable to find resource '{0}'", resourceName)); } /* * some final cleanup */ resource.LastModified = howOldItWas; resource.ModificationCheckInterval = resourceLoader.ModificationCheckInterval; resource.Touch(); return(resource); }