unico 2005/06/04 06:21:33
Modified: src/stores/org/apache/slide/store/impl/rdbms
PostgresRDBMSAdapter.java
Log:
fix bug 34343 thanks to Martin Kal�n
Revision Changes Path
1.19 +20 -25
jakarta-slide/src/stores/org/apache/slide/store/impl/rdbms/PostgresRDBMSAdapter.java
Index: PostgresRDBMSAdapter.java
===================================================================
RCS file:
/home/cvs/jakarta-slide/src/stores/org/apache/slide/store/impl/rdbms/PostgresRDBMSAdapter.java,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- PostgresRDBMSAdapter.java 19 May 2005 13:01:32 -0000 1.18
+++ PostgresRDBMSAdapter.java 4 Jun 2005 13:21:33 -0000 1.19
@@ -27,7 +27,6 @@
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
-import java.sql.Types;
import org.apache.slide.common.Service;
import org.apache.slide.common.ServiceAccessException;
@@ -233,33 +232,29 @@
}
}
- public void revokePermission(
- Connection connection,
- Uri uri,
- NodePermission permission)
- throws ServiceAccessException {
+ public void revokePermission(Connection connection, Uri uri,
NodePermission permission)
+ throws ServiceAccessException {
if (permission == null) return;
+ final StringBuffer sql = new StringBuffer("delete from PERMISSIONS
where (OBJECT_ID, SUBJECT_ID, ACTION_ID) IN" +
+ " (SELECT ou.URI_ID, su.URI_ID, au.URI_ID FROM URI ou, URI
su, URI au WHERE ou.URI_STRING = ? and su.URI_STRING = ? and au.URI_STRING =
?)");
PreparedStatement statement = null;
try {
- NodeRevisionNumber revisionNumber =
permission.getRevisionNumber();
- statement =
- connection.prepareStatement(
- "delete from PERMISSIONS where (OBJECT_ID,
SUBJECT_ID, ACTION_ID) IN" +
- " (SELECT ou.URI_ID, su.URI_ID, au.URI_ID FROM URI
ou, URI su, URI au " +
- " WHERE ou.URI_STRING = ? and su.URI_STRING = ? and
au.URI_STRING = ?)" +
- " and VERSION_NO = ?");
- statement.setString(1, uri.toString());
- statement.setString(2, permission.getSubjectUri());
- statement.setString(3, permission.getActionUri());
- if (revisionNumber == null) {
- statement.setNull(4, Types.VARCHAR);
+ final NodeRevisionNumber revisionNumber =
permission.getRevisionNumber();
+ // generate proper sql based on content of revision number
+ if (revisionNumber != null) {
+ sql.append(" and VERSION_NO = ?");
} else {
+ sql.append(" and VERSION_NO IS NULL");
+ }
+ statement.setString(1, uri.toString());
+ statement.setString(2, permission.getSubjectUri());
+ statement.setString(3, permission.getActionUri());
+ if (revisionNumber != null) {
statement.setString(4, revisionNumber.toString());
}
- statement.executeUpdate();
+ statement.executeUpdate();
} catch (SQLException e) {
- getLogger().log(e, LOG_CHANNEL, Logger.ERROR);
- throw new ServiceAccessException(service, e);
+ throw createException(e, uri.toString());
} finally {
close(statement);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]