You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ak...@apache.org on 2004/05/01 03:53:17 UTC
svn commit: rev 10465 - in incubator/directory/rms/trunk/je/src: java/org/apache/rms/je/profile test/org/apache/rms/je/profile
Author: akarasulu
Date: Fri Apr 30 18:53:16 2004
New Revision: 10465
Modified:
incubator/directory/rms/trunk/je/src/java/org/apache/rms/je/profile/JeProfileRoleLinkDAO.java
incubator/directory/rms/trunk/je/src/java/org/apache/rms/je/profile/ProfileRoleLinkDAOMonitor.java
incubator/directory/rms/trunk/je/src/java/org/apache/rms/je/profile/ProfileRoleLinkDAOMonitorAdapter.java
incubator/directory/rms/trunk/je/src/test/org/apache/rms/je/profile/JeProfileRoleLinkDAOTest.java
Log:
Commit changes ...
o completed has(String, String) overload
o completed and passed tests for this overload
o added monitor interface methods for both has() methods
o implemented no-op methods in monitor adapter
Modified: incubator/directory/rms/trunk/je/src/java/org/apache/rms/je/profile/JeProfileRoleLinkDAO.java
==============================================================================
--- incubator/directory/rms/trunk/je/src/java/org/apache/rms/je/profile/JeProfileRoleLinkDAO.java (original)
+++ incubator/directory/rms/trunk/je/src/java/org/apache/rms/je/profile/JeProfileRoleLinkDAO.java Fri Apr 30 18:53:16 2004
@@ -135,6 +135,10 @@
public void create( String appName, String userName, String roleName )
throws RmsException
{
+ DatabaseEntry key ;
+ DatabaseEntry value ;
+ OperationStatus status ;
+
if ( has( appName, userName, roleName ) )
{
monitor.roleLinkExists( this, "create", appName, userName,
@@ -143,10 +147,8 @@
+ roleName + " for application " + appName ) ;
}
-
- DatabaseEntry key = new DatabaseEntry() ;
- DatabaseEntry value = new DatabaseEntry() ;
- OperationStatus status = null ;
+ key = new DatabaseEntry() ;
+ value = new DatabaseEntry() ;
JeUtils.encodeInt( sq.getNextValue(), key ) ;
try
@@ -232,6 +234,7 @@
}
catch ( UnsupportedEncodingException e )
{
+ monitor.failedOnHas( this, appName, userName, roleName, e ) ;
throw new RmsException( e ) ;
}
@@ -281,6 +284,7 @@
}
catch ( DatabaseException e )
{
+ monitor.failedOnHas( this, appName, userName, roleName, e ) ;
throw new RmsException( e ) ;
}
finally
@@ -291,12 +295,9 @@
closeNoError( roleNameCursor ) ;
}
- if ( status != OperationStatus.SUCCESS )
- {
- return false ;
- }
-
- return true ;
+ boolean haveIt = status == OperationStatus.SUCCESS ;
+ monitor.successOnHas( this, appName, userName, roleName, haveIt ) ;
+ return haveIt ;
}
@@ -311,7 +312,71 @@
*/
public boolean has( String appName, String roleName ) throws RmsException
{
- throw new NotImplementedException( "STUB" ) ;
+ OperationStatus status = null ;
+ DatabaseEntry key = new DatabaseEntry() ;
+ DatabaseEntry value = new DatabaseEntry() ;
+ DatabaseEntry appNameKey = new DatabaseEntry() ;
+ DatabaseEntry roleNameKey = new DatabaseEntry() ;
+
+ try
+ {
+ appNameKey.setData( appName.getBytes( "UTF-8" ) ) ;
+ roleNameKey.setData( roleName.getBytes( "UTF-8" ) ) ;
+ }
+ catch ( UnsupportedEncodingException e )
+ {
+ monitor.failedOnHas( this, appName, roleName, e ) ;
+ throw new RmsException( e ) ;
+ }
+
+ JoinCursor cursor = null ;
+ SecondaryCursor appNameCursor = null ;
+ SecondaryCursor roleNameCursor = null ;
+
+ try
+ {
+ // -o- setup the application name cursor -o-
+ appNameCursor = byAppName.openSecondaryCursor( null, null ) ;
+ status = appNameCursor
+ .getSearchKey( appNameKey, value, LockMode.DEFAULT ) ;
+ if ( status != OperationStatus.SUCCESS )
+ {
+ return false ;
+ }
+
+ // -o- setup the role name cursor -o-
+ roleNameCursor = byRoleName.openSecondaryCursor( null, null ) ;
+ status = roleNameCursor.getSearchKey( roleNameKey, value,
+ LockMode.DEFAULT ) ;
+ if ( status != OperationStatus.SUCCESS )
+ {
+ return false ;
+ }
+
+ // -o- prepare the cursor array and the join cursor -o-
+ SecondaryCursor [] secCursors = {
+ appNameCursor,
+ roleNameCursor
+ } ;
+
+ cursor = db.join( secCursors, null ) ;
+ status = cursor.getNext( key, value, LockMode.DEFAULT ) ;
+ }
+ catch ( DatabaseException e )
+ {
+ monitor.failedOnHas( this, appName, roleName, e ) ;
+ throw new RmsException( e ) ;
+ }
+ finally
+ {
+ closeNoError( cursor ) ;
+ closeNoError( appNameCursor ) ;
+ closeNoError( roleNameCursor ) ;
+ }
+
+ boolean haveIt = status == OperationStatus.SUCCESS ;
+ monitor.successOnHas( this, appName, roleName, haveIt ) ;
+ return haveIt ;
}
Modified: incubator/directory/rms/trunk/je/src/java/org/apache/rms/je/profile/ProfileRoleLinkDAOMonitor.java
==============================================================================
--- incubator/directory/rms/trunk/je/src/java/org/apache/rms/je/profile/ProfileRoleLinkDAOMonitor.java (original)
+++ incubator/directory/rms/trunk/je/src/java/org/apache/rms/je/profile/ProfileRoleLinkDAOMonitor.java Fri Apr 30 18:53:16 2004
@@ -17,6 +17,9 @@
package org.apache.rms.je.profile ;
+import com.sleepycat.je.DatabaseException;
+
+
/**
* A monitor interface for the Profile to Role link data access object.
*
@@ -67,7 +70,7 @@
/**
* Monitor callback notified when role links fail to be created.
*
- * @param dao the data access object that failed to create the role link
+ * @param dao the data access object performing that failed to create
* @param appName the name of the application
* @param userName the name of the user
* @param roleName the name of the role
@@ -79,8 +82,8 @@
/**
* Monitor callback notified when role links fail to be created.
*
- * @param dao
- * @param info
+ * @param dao the data access object that failed to create the role link
+ * @param info extra implementation specific information about the failure
* @param appName the name of the application
* @param userName the name of the user
* @param roleName the name of the role
@@ -88,10 +91,72 @@
void failedOnCreate( ProfileRoleLinkDAO dao, Object info, String appName,
String userName, String roleName ) ;
-
+ /**
+ * Monitors DAO successful resource cleanup events.
+ *
+ * @param dao the data access object performing the cleanup
+ * @param op the cleanup operation being performed
+ * @param resource the resource being cleaned up
+ */
void cleanedUp( ProfileRoleLinkDAO dao, String op, Object resource ) ;
-
+ /**
+ * Monitors DAO failures while attempting to cleanup a resource via some
+ * operation.
+ *
+ * @param dao the data access object performing the cleanup
+ * @param op the cleanup operation being performed
+ * @param resource the resource being cleaned up
+ * @param fault the faulting condition that caused the failure
+ */
void failedOnCleanupOperation( ProfileRoleLinkDAO dao, String op,
Object resource, Throwable fault ) ;
+
+ /**
+ * Monitors DAO failures while checking for a link on a DAO has()
+ * operation.
+ *
+ * @param dao the data access object performing the lookup
+ * @param appName the name of the application
+ * @param userName the name of the user
+ * @param roleName the name of the role
+ * @param fault the faulting condition that caused the failure
+ */
+ void failedOnHas( ProfileRoleLinkDAO dao, String appName, String userName,
+ String roleName, Throwable fault ) ;
+
+ /**
+ * Monitors DAO failures while checking for a link on a DAO has()
+ * operation.
+ *
+ * @param dao the data access object performing the lookup
+ * @param appName the name of the application
+ * @param roleName the name of the role
+ * @param fault the faulting condition that caused the failure
+ */
+ void failedOnHas( ProfileRoleLinkDAO dao, String appName,
+ String roleName, Throwable fault ) ;
+
+ /**
+ * Monitors DAO has() checks to lookup whether or not a role link exists.
+ *
+ * @param dao the data access object performing the lookup
+ * @param appName the name of the application
+ * @param userName the name of the user
+ * @param roleName the name of the role
+ * @param haveIt whether or not a role link was found
+ */
+ void successOnHas( ProfileRoleLinkDAO dao, String appName, String userName,
+ String roleName, boolean haveIt ) ;
+
+ /**
+ * Monitors DAO has() checks to lookup whether or not a role link exists.
+ *
+ * @param dao the data access object performing the lookup
+ * @param appName the name of the application
+ * @param roleName the name of the role
+ * @param haveIt whether or not a role link was found
+ */
+ void successOnHas( ProfileRoleLinkDAO dao, String appName,
+ String roleName, boolean haveIt ) ;
}
Modified: incubator/directory/rms/trunk/je/src/java/org/apache/rms/je/profile/ProfileRoleLinkDAOMonitorAdapter.java
==============================================================================
--- incubator/directory/rms/trunk/je/src/java/org/apache/rms/je/profile/ProfileRoleLinkDAOMonitorAdapter.java (original)
+++ incubator/directory/rms/trunk/je/src/java/org/apache/rms/je/profile/ProfileRoleLinkDAOMonitorAdapter.java Fri Apr 30 18:53:16 2004
@@ -38,6 +38,10 @@
String appName, String userName,
String roleName, Throwable fault )
{
+ if ( fault != null )
+ {
+ fault.printStackTrace() ;
+ }
}
@@ -51,6 +55,10 @@
String userName, String roleName,
Throwable fault )
{
+ if ( fault != null )
+ {
+ fault.printStackTrace() ;
+ }
}
@@ -68,6 +76,44 @@
public void failedOnCleanupOperation( ProfileRoleLinkDAO dao, String op,
Object resource, Throwable fault )
+ {
+ if ( fault != null )
+ {
+ fault.printStackTrace() ;
+ }
+ }
+
+
+ public void failedOnHas( ProfileRoleLinkDAO dao, String appName,
+ String userName, String roleName,
+ Throwable fault )
+ {
+ if ( fault != null )
+ {
+ fault.printStackTrace() ;
+ }
+ }
+
+
+ public void successOnHas( ProfileRoleLinkDAO dao, String appName,
+ String userName, String roleName,
+ boolean haveIt )
+ {
+ }
+
+
+ public void failedOnHas( ProfileRoleLinkDAO dao, String appName,
+ String roleName, Throwable fault )
+ {
+ if ( fault != null )
+ {
+ fault.printStackTrace() ;
+ }
+ }
+
+
+ public void successOnHas( ProfileRoleLinkDAO dao, String appName,
+ String roleName, boolean haveIt )
{
}
}
Modified: incubator/directory/rms/trunk/je/src/test/org/apache/rms/je/profile/JeProfileRoleLinkDAOTest.java
==============================================================================
--- incubator/directory/rms/trunk/je/src/test/org/apache/rms/je/profile/JeProfileRoleLinkDAOTest.java (original)
+++ incubator/directory/rms/trunk/je/src/test/org/apache/rms/je/profile/JeProfileRoleLinkDAOTest.java Fri Apr 30 18:53:16 2004
@@ -89,8 +89,11 @@
{
assertFalse( dao.has( "app1", "user1", "roleA" ) ) ;
assertFalse( dao.has( "app1", "user2", "roleA" ) ) ;
+ assertFalse( dao.has( "app1", "roleA" ) ) ;
+
assertFalse( dao.has( "app2", "user1", "roleB" ) ) ;
assertFalse( dao.has( "app2", "user2", "roleB" ) ) ;
+ assertFalse( dao.has( "app2", "roleA" ) ) ;
dao.create( "app1", "user1", "roleA" ) ;
dao.create( "app1", "user2", "roleA" ) ;
@@ -99,7 +102,12 @@
assertTrue( dao.has( "app1", "user1", "roleA" ) ) ;
assertTrue( dao.has( "app1", "user2", "roleA" ) ) ;
+ assertTrue( dao.has( "app1", "roleA" ) ) ;
+ assertFalse( dao.has( "app1", "roleB" ) ) ;
+
assertTrue( dao.has( "app2", "user1", "roleB" ) ) ;
assertTrue( dao.has( "app2", "user2", "roleB" ) ) ;
+ assertTrue( dao.has( "app2", "roleB" ) ) ;
+ assertFalse( dao.has( "app2", "roleA" ) ) ;
}
}