com.gargoylesoftware.base.resource

Class ResourceFactory

public abstract class ResourceFactory extends Object

A class that can create instances of specific types of resources, such as JDBC connections.

Version: $Revision: 1.3 $

Author: Mike Bowler

Field Summary
MapresourceManagerToResourceListMap_
Constructor Summary
ResourceFactory()
Create a factory
Method Summary
voidderegisterResource(ResourceManager resourceManager, ManagedResource resource)
ManagedResourcegetResource(ResourceManager resourceManager)
Allocate a resource for the specified store
protected abstract ManagedResourcegetResourceImpl(ResourceManager resourceManager)
Subclasses will override this to perform the actual allocation of the resource.
voidregisterResource(ResourceManager resourceManager, ManagedResource resource)
abstract booleanreinitializeResourceIfPossible(ManagedResource resource)
Reinitialize the resource to a known state.
voidreleaseAllResources(ResourceManager resourceManager)
Release all the resources that had been allocated by the specified store.
voidreleaseResource(ResourceManager resourceManager, ManagedResource resource)
Release the specified resource.
protected abstract voidreleaseResourceImpl(ResourceManager resourceManager, ManagedResource resource)
Subclasses will override this to perform the actual release of the resource.

Field Detail

resourceManagerToResourceListMap_

private final Map resourceManagerToResourceListMap_

Constructor Detail

ResourceFactory

public ResourceFactory()
Create a factory

Method Detail

deregisterResource

private void deregisterResource(ResourceManager resourceManager, ManagedResource resource)

getResource

public final ManagedResource getResource(ResourceManager resourceManager)
Allocate a resource for the specified store

Parameters: resourceManager The object that is managing the resource allocation

Returns: The new resource

Throws: ResourceException If an error occurs

getResourceImpl

protected abstract ManagedResource getResourceImpl(ResourceManager resourceManager)
Subclasses will override this to perform the actual allocation of the resource.

Parameters: resourceManager The object that is managing the resource allocation

Returns: The new resource

Throws: Exception If an error occurs

registerResource

private void registerResource(ResourceManager resourceManager, ManagedResource resource)

reinitializeResourceIfPossible

public abstract boolean reinitializeResourceIfPossible(ManagedResource resource)
Reinitialize the resource to a known state. This is required for resource pooling as all resources being returned from a pool must have been initialized to a known state.

Parameters: resource the resource to reinitialize

Returns: true if the resource was successfully reinitialized

releaseAllResources

public void releaseAllResources(ResourceManager resourceManager)
Release all the resources that had been allocated by the specified store.

Parameters: resourceManager The object that is managing the resource allocation

Throws: ResourceException If an error occurs

releaseResource

public final void releaseResource(ResourceManager resourceManager, ManagedResource resource)
Release the specified resource. It must have been allocated by the specified store

Parameters: resource The resource that we are releasing resourceManager The object that is managing the resource allocation

Throws: ResourceException If an error occurs

releaseResourceImpl

protected abstract void releaseResourceImpl(ResourceManager resourceManager, ManagedResource resource)
Subclasses will override this to perform the actual release of the resource.

Parameters: resource The resource to release resourceManager The object that is managing the resource allocation

Throws: Exception If an error occurs