org.wso2.registry.jdbc
Class JDBCRegistry

java.lang.Object
  extended by org.wso2.registry.jdbc.JDBCRegistry
All Implemented Interfaces:
Registry
Direct Known Subclasses:
InMemoryJDBCRegistry

public class JDBCRegistry
extends java.lang.Object
implements Registry

JDBC based implementation of the Registry. This will be used mostly as the back-end by other Registry implementations. This can use either an in-memory database or a external database configured using data source. At the initializing, it checks if a data source named "jdbc/WSO2RegistryDB" is configured. If such data source is found, it is used as the database. If a data source is not found, an in-memory database is created using the HSQL.


Constructor Summary
JDBCRegistry()
          Default constructor.
JDBCRegistry(javax.sql.DataSource dataSource)
          Constructs a JDBC registry to be used without any security (authorizations on actions).
JDBCRegistry(javax.sql.DataSource dataSource, org.wso2.usermanager.Realm realm)
          Constructs a JDBC registry to be used with secure registries.
 
Method Summary
 void addComment(java.lang.String resourcePath, Comment comment)
          Adds a comment to a resource.
 void applyTag(java.lang.String resourcePath, java.lang.String tag)
          Applies the given tag to the resource in the given path.
 void configure(javax.sql.DataSource dataSource, RegistryRealm realm)
          Configures and initiates the JDBC registry with a (new) datasource and a realm.
 void defineQuery(java.lang.String name, java.lang.String query)
           
 void delete(java.lang.String path)
          Deletes the resource in the given path.
 Resource executeQuery(java.lang.String path, java.lang.Object[] parameters)
          Executes a custom query defined by users.
 Resource get(java.lang.String path)
          Returns the resource in the given path.
 float getAverageRating(java.lang.String resourcePath)
          Returns the average rating for the given resource.
 Comment[] getComments(java.lang.String resourcePath)
          Retruns all comments for the given resource.
 org.wso2.usermanager.Realm getDefaultRealm()
           
 LogEntry[] getLogs(java.lang.String resourcePath, int action, java.lang.String userName, java.util.Date from, java.util.Date to, boolean recentFirst)
          Returns the logs of the activities occured in the registy.
 int getRating(java.lang.String path, java.lang.String userName)
          Returns the rating given to the specified resource by the given user
 TaggedResourcePath[] getResourcePathsWithTag(java.lang.String tag)
          Returns the paths of the resources, which are tagged using the given tag.
 Tag[] getTags(java.lang.String resourcePath)
          Returns all tags used for tagging the given resource.
 java.lang.String[] getVersions(java.lang.String path)
          Returns the paths of the versions of the resource located at the given path.
 void put(java.lang.String path, Resource resource)
          Adds or updates resources in the registry.
 void rateResource(java.lang.String resourcePath, int rating)
          Rates the given resource.
 void removeTag(java.lang.String path, java.lang.String tag)
          Removes a tag on a resource.
 boolean resourceExists(java.lang.String path)
          Check whether a resource exist in the given path
 void restoreVersion(java.lang.String versionPath)
          Reverts a resource to a given version.
 void shutdown()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

JDBCRegistry

public JDBCRegistry()
Default constructor. JDBC registry should be configured using the configure(...) method, if it is instantiated using this constructor.


JDBCRegistry

public JDBCRegistry(javax.sql.DataSource dataSource)
             throws RegistryException
Constructs a JDBC registry to be used without any security (authorizations on actions). JDBC registry instances created using this constructor should not be used with SecureRegistry instances.

Parameters:
dataSource - Data source to be used to store resources and metadata.
Throws:
RegistryException

JDBCRegistry

public JDBCRegistry(javax.sql.DataSource dataSource,
                    org.wso2.usermanager.Realm realm)
             throws RegistryException
Constructs a JDBC registry to be used with secure registries. Default authorizations will be applied on the resources created using this registry.

Parameters:
dataSource - Data source to be used to store resources and metadata. Note that the same data source may or may not be used as the data source of user manager.
realm - User manager realm to handle authorizations. It is strongly recommended to use a realm instance constructed using the RegistryRealmFactory. All initial users, roles and authorizations will be set on realms obtained using the RegistryRealmFactory.
Throws:
RegistryException
Method Detail

configure

public void configure(javax.sql.DataSource dataSource,
                      RegistryRealm realm)
               throws RegistryException
Configures and initiates the JDBC registry with a (new) datasource and a realm. This is useful for changing underlying databases at run-time.

Parameters:
dataSource - the DataSource to use
realm - Realm to use
Throws:
RegistryException

getDefaultRealm

public org.wso2.usermanager.Realm getDefaultRealm()

get

public Resource get(java.lang.String path)
             throws RegistryException
Returns the resource in the given path.

Specified by:
get in interface Registry
Parameters:
path - Path of the resource. e.g. /project1/server/deployment.xml
Returns:
Resource instance
Throws:
RegistryException - ResourceNotFound exception is thrown if the resource is not in the registry

resourceExists

public boolean resourceExists(java.lang.String path)
                       throws RegistryException
Description copied from interface: Registry
Check whether a resource exist in the given path

Specified by:
resourceExists in interface Registry
Parameters:
path - Path of the resource to be checked
Returns:
true if a resource exist in the given path, false otherwise.
Throws:
RegistryException - if an error occurs

put

public void put(java.lang.String path,
                Resource resource)
         throws RegistryException
Adds or updates resources in the registry. If there is no resource in the given path, resource is added. If a resource already exist in the given path, it will be replaced with the new resource. Implementations may use a concurrency control method to prevent concurrency issues.

Specified by:
put in interface Registry
Parameters:
path - Path of the new resource
resource - Resource instance for the new resource
Throws:
RegistryException - : if the user is not authorized

delete

public void delete(java.lang.String path)
            throws RegistryException
Deletes the resource in the given path. If the path refers to a directory, all child resources of the directory will also be deleted.

Specified by:
delete in interface Registry
Parameters:
path - Path of the resource to be deleted.
Throws:
RegistryException - : if the user is not authorized

getVersions

public java.lang.String[] getVersions(java.lang.String path)
                               throws RegistryException
Description copied from interface: Registry
Returns the paths of the versions of the resource located at the given path. Version paths are returned in the form /projects/myresource?v=12

Specified by:
getVersions in interface Registry
Parameters:
path - Path of a current version of a resource
Returns:
Paths of versions
Throws:
RegistryException - if there is an error

restoreVersion

public void restoreVersion(java.lang.String versionPath)
                    throws RegistryException
Description copied from interface: Registry
Reverts a resource to a given version.

Specified by:
restoreVersion in interface Registry
Parameters:
versionPath - path of the version to be reverted. It is not necessary to provide the path of the resource as it can be derived from the version path.
Throws:
RegistryException - if there is an error

applyTag

public void applyTag(java.lang.String resourcePath,
                     java.lang.String tag)
              throws RegistryException
Applies the given tag to the resource in the given path. If the given tag is not defined in the registry, it will be defined.

Specified by:
applyTag in interface Registry
Parameters:
resourcePath - Path of the resource to be tagged.
tag - Tag. Any string can be used for the tag.
Throws:
RegistryException - ResourceNotFound exception is thrown if a resource does not exist in the given path.

getResourcePathsWithTag

public TaggedResourcePath[] getResourcePathsWithTag(java.lang.String tag)
                                             throws RegistryException
Returns the paths of the resources, which are tagged using the given tag.

Specified by:
getResourcePathsWithTag in interface Registry
Parameters:
tag - Tag
Returns:
Resource paths
Throws:
RegistryException - if an error occurs

getTags

public Tag[] getTags(java.lang.String resourcePath)
              throws RegistryException
Returns all tags used for tagging the given resource.

Specified by:
getTags in interface Registry
Parameters:
resourcePath - Path of the resource
Returns:
Tags
Throws:
RegistryException - ResourceNotFound exception is thrown if a resource does not exist in the given path.

removeTag

public void removeTag(java.lang.String path,
                      java.lang.String tag)
               throws RegistryException
Description copied from interface: Registry
Removes a tag on a resource. If the resource at the path is owned by the current user, all taggings done using the given tag will be removed. If the resource is not owned by the current user, only the tagging done by the current user will be removed.

Specified by:
removeTag in interface Registry
Parameters:
path - Resource path tagged with the given tag.
tag - Name of the tag to be removed.
Throws:
RegistryException - if there's a problem

addComment

public void addComment(java.lang.String resourcePath,
                       Comment comment)
                throws RegistryException
Adds a comment to a resource.

Specified by:
addComment in interface Registry
Parameters:
resourcePath - Path of the resource to add the comment.
comment - Comment instance for the new comment.
Throws:
RegistryException - ResourceNotFound exception is thrown if a resource does not exist in the given path.

getComments

public Comment[] getComments(java.lang.String resourcePath)
                      throws RegistryException
Retruns all comments for the given resource.

Specified by:
getComments in interface Registry
Parameters:
resourcePath - Path of the resource.
Returns:
Array of Comment objects.
Throws:
RegistryException - if an error occurs

rateResource

public void rateResource(java.lang.String resourcePath,
                         int rating)
                  throws RegistryException
Rates the given resource.

Specified by:
rateResource in interface Registry
Parameters:
resourcePath - Path of the resource.
rating - rating value.
Throws:
RegistryException - ResourceNotFound exception is thrown if a resource does not exist in the given path.

getAverageRating

public float getAverageRating(java.lang.String resourcePath)
                       throws RegistryException
Returns the average rating for the given resource. This is the average of all ratings done by all users for the given resource.

Specified by:
getAverageRating in interface Registry
Parameters:
resourcePath - Path of the resource.
Returns:
Average rating.
Throws:
RegistryException - if an error occurs

getRating

public int getRating(java.lang.String path,
                     java.lang.String userName)
              throws RegistryException
Description copied from interface: Registry
Returns the rating given to the specified resource by the given user

Specified by:
getRating in interface Registry
Parameters:
path - Path of the resource
userName - username of the user
Returns:
rating given by the given user
Throws:
RegistryException - if there is a problem

defineQuery

public void defineQuery(java.lang.String name,
                        java.lang.String query)
                 throws RegistryException
Throws:
RegistryException

executeQuery

public Resource executeQuery(java.lang.String path,
                             java.lang.Object[] parameters)
                      throws RegistryException
Description copied from interface: Registry
Executes a custom query defined by users. Returned RowSet contains fields of tables specified by the custom query.

Specified by:
executeQuery in interface Registry
Parameters:
path - Path of the query to execute.
parameters - Query parameters.
Returns:
RowSet containing the fields specified in the query.
Throws:
RegistryException - depends on the implementation.

shutdown

public void shutdown()
              throws RegistryException
Throws:
RegistryException

getLogs

public LogEntry[] getLogs(java.lang.String resourcePath,
                          int action,
                          java.lang.String userName,
                          java.util.Date from,
                          java.util.Date to,
                          boolean recentFirst)
                   throws RegistryException
Description copied from interface: Registry
Returns the logs of the activities occured in the registy.

Specified by:
getLogs in interface Registry
Parameters:
resourcePath - If given, only the logs related to the resource path will be returned. If null, logs for all resources will be returned.
action - Only the logs pertaining to this action will be returned.
userName - If given, only the logs for activities done by the given user will be returned. If null, logs for all users will be returned.
from - If given, logs for activities occured after the given date will be returned. If null, there will not be a bound for the starting date.
to - If given, logs for activities occured before the given date will be returned. If null, there will not be a bound for the ending date.
recentFirst - If true, returned activities will be in the descending order. If false, returned activities will be in the ascending order.
Returns:
Array of LogEntry objects representing the logs
Throws:
RegistryException - if there is a problem


Copyright © 2007 Apache Web Services Project. All Rights Reserved.