You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by vt...@apache.org on 2004/12/02 19:18:54 UTC

svn commit: r109512 - in incubator/directory/janus/trunk/jdbc/src: java/org/apache/janus/authentication/realm test/org/apache/janus/authentication/realm

Author: vtence
Date: Thu Dec  2 10:18:53 2004
New Revision: 109512

URL: http://svn.apache.org/viewcvs?view=rev&rev=109512
Log:
Fixed nasty bug in tests where insert was not going to proper columns depending on credential Class object ids, causing tests to fail randomly.
Added:
   incubator/directory/janus/trunk/jdbc/src/test/org/apache/janus/authentication/realm/Creds.java
Modified:
   incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/AndExpression.java
   incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/Column.java
   incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/Converter.java
   incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/EqExpression.java
   incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/Expression.java
   incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/ExpressionBuilder.java
   incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/JDBCSelector.java
   incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/SameCredentialsBuilder.java
   incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/SelectorBuilder.java
   incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/Table.java
   incubator/directory/janus/trunk/jdbc/src/test/org/apache/janus/authentication/realm/Columns.java
   incubator/directory/janus/trunk/jdbc/src/test/org/apache/janus/authentication/realm/JDBCRealmTest.java
   incubator/directory/janus/trunk/jdbc/src/test/org/apache/janus/authentication/realm/JDBCSelectorTest.java
   incubator/directory/janus/trunk/jdbc/src/test/org/apache/janus/authentication/realm/MemoryDatabase.java
   incubator/directory/janus/trunk/jdbc/src/test/org/apache/janus/authentication/realm/SameCredentialsBuilderTest.java

Modified: incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/AndExpression.java
Url: http://svn.apache.org/viewcvs/incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/AndExpression.java?view=diff&rev=109512&p1=incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/AndExpression.java&r1=109511&p2=incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/AndExpression.java&r2=109512
==============================================================================
--- incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/AndExpression.java	(original)
+++ incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/AndExpression.java	Thu Dec  2 10:18:53 2004
@@ -31,12 +31,12 @@
         m_right = right;
     }
 
-    public String getQueryString( Table table )
+    public String getQueryString()
     {
         StringBuffer fragment = new StringBuffer();
-        fragment.append( m_left.getQueryString( table ) );
+        fragment.append( m_left.getQueryString() );
         fragment.append( " " ).append( operand() ).append( " ");
-        fragment.append( m_right.getQueryString( table ));
+        fragment.append( m_right.getQueryString());
 
         return fragment.toString();
     }
@@ -46,18 +46,13 @@
         return m_left.getParameterCount() + m_right.getParameterCount();
     }
 
-    public String[] getParameterValues( Table table )
+    public String[] getParameterValues()
     {
         Collection parameters = new ArrayList( );
-        parameters.addAll( Arrays.asList( m_left.getParameterValues( table ) ) );
-        parameters.addAll( Arrays.asList( m_right.getParameterValues( table ) ) );
+        parameters.addAll( Arrays.asList( m_left.getParameterValues() ) );
+        parameters.addAll( Arrays.asList( m_right.getParameterValues() ) );
         
         return ( String[] ) parameters.toArray( new String[parameters.size()] );
-    }
-
-    public boolean supports( Table table )
-    {
-        return m_left.supports( table ) && m_right.supports( table );
     }
 
     protected String operand()

Modified: incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/Column.java
Url: http://svn.apache.org/viewcvs/incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/Column.java?view=diff&rev=109512&p1=incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/Column.java&r1=109511&p2=incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/Column.java&r2=109512
==============================================================================
--- incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/Column.java	(original)
+++ incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/Column.java	Thu Dec  2 10:18:53 2004
@@ -20,11 +20,18 @@
 {
     private final String m_name;
     private final Class m_type;
+    private final Converter m_converter;
 
     public Column( String name, Class type )
     {
+        this( name, type, new DefaultConverter() );
+    }
+
+    public Column( String name, Class type, Converter converter )
+    {
         m_name = name;
         m_type = type;
+        m_converter = converter;
     }
 
     public String getName()
@@ -35,5 +42,33 @@
     public Class getMappedType()
     {
         return m_type;
+    }
+
+    public String getValue( Object value )
+    {
+        return m_converter.convert( value );
+    }
+
+    public boolean equals( Object o )
+    {
+        if ( this == o ) return true;
+        if ( !( o instanceof Column ) ) return false;
+
+        final Column column = ( Column ) o;
+
+        if ( !m_name.equals( column.m_name ) ) return false;
+
+        return true;
+    }
+
+    public int hashCode()
+    {
+        return m_name.hashCode();
+    }
+
+
+    public String toString()
+    {
+        return "m_name=" + m_name + ", m_type=" + m_type;
     }
 }

Modified: incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/Converter.java
Url: http://svn.apache.org/viewcvs/incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/Converter.java?view=diff&rev=109512&p1=incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/Converter.java&r1=109511&p2=incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/Converter.java&r2=109512
==============================================================================
--- incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/Converter.java	(original)
+++ incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/Converter.java	Thu Dec  2 10:18:53 2004
@@ -18,7 +18,7 @@
 
 public interface Converter
 {
-    String convert( Object credential );
+    String convert( Object value );
 
-    boolean supports( Class credentialType );
+    boolean supports( Class type );
 }

Modified: incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/EqExpression.java
Url: http://svn.apache.org/viewcvs/incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/EqExpression.java?view=diff&rev=109512&p1=incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/EqExpression.java&r1=109511&p2=incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/EqExpression.java&r2=109512
==============================================================================
--- incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/EqExpression.java	(original)
+++ incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/EqExpression.java	Thu Dec  2 10:18:53 2004
@@ -18,19 +18,19 @@
 
 public class EqExpression implements Expression
 {
-    private final Class m_type;
+    private final Column m_column;
     private final Object m_value;
 
-    public EqExpression( Class type, Object value )
+    public EqExpression( Column column, Object value )
     {
-        m_type = type;
+        m_column = column;
         m_value = value;
     }
 
-    public String getQueryString( Table table )
+    public String getQueryString()
     {
         StringBuffer statement = new StringBuffer();
-        statement.append( table.getColumnName( m_type ) );
+        statement.append( m_column.getName() );
         statement.append( operand() );
         statement.append( "?" );
 
@@ -42,14 +42,9 @@
         return 1;
     }
 
-    public String[] getParameterValues( Table table )
+    public String[] getParameterValues()
     {
-        return new String[] { table.getColumnValue( m_value ) };
-    }
-
-    public boolean supports( Table table )
-    {
-        return table.supports( m_type ) ;
+        return new String[] { m_column.getValue( m_value ) };
     }
 
     protected String operand()
@@ -64,7 +59,7 @@
 
         final EqExpression eqExpression = ( EqExpression ) o;
 
-        if ( !m_type.equals( eqExpression.m_type ) ) return false;
+        if ( !m_column.equals( eqExpression.m_column ) ) return false;
         if ( !m_value.equals( eqExpression.m_value ) ) return false;
 
         return true;
@@ -73,13 +68,13 @@
     public int hashCode()
     {
         int result;
-        result = m_type.hashCode();
+        result = m_column.hashCode();
         result = 29 * result + m_value.hashCode();
         return result;
     }
 
     public String toString()
     {
-        return "eq(" + m_type.getName() + ", " + m_value.toString() + ")";
+        return "eq(" + m_column.getName() + ", " + m_value.toString() + ")";
     }
 }

Modified: incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/Expression.java
Url: http://svn.apache.org/viewcvs/incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/Expression.java?view=diff&rev=109512&p1=incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/Expression.java&r1=109511&p2=incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/Expression.java&r2=109512
==============================================================================
--- incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/Expression.java	(original)
+++ incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/Expression.java	Thu Dec  2 10:18:53 2004
@@ -18,11 +18,9 @@
 
 public interface Expression
 {
-    String getQueryString( Table table );
+    String getQueryString( );
 
     int getParameterCount();
 
-    String[] getParameterValues( Table table );
-
-    boolean supports( Table table );
+    String[] getParameterValues();
 }

Modified: incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/ExpressionBuilder.java
Url: http://svn.apache.org/viewcvs/incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/ExpressionBuilder.java?view=diff&rev=109512&p1=incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/ExpressionBuilder.java&r1=109511&p2=incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/ExpressionBuilder.java&r2=109512
==============================================================================
--- incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/ExpressionBuilder.java	(original)
+++ incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/ExpressionBuilder.java	Thu Dec  2 10:18:53 2004
@@ -18,9 +18,16 @@
 
 public class ExpressionBuilder
 {
+    private final Table m_table;
+
+    public ExpressionBuilder( Table table )
+    {
+        m_table = table;
+    }
+
     public Expression eq( Class type, Object value )
     {
-        return new EqExpression( type, value );
+        return new EqExpression( m_table.getColumn( type ), value );
     }
 
     public Expression and( Expression left, Expression right )

Modified: incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/JDBCSelector.java
Url: http://svn.apache.org/viewcvs/incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/JDBCSelector.java?view=diff&rev=109512&p1=incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/JDBCSelector.java&r1=109511&p2=incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/JDBCSelector.java&r2=109512
==============================================================================
--- incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/JDBCSelector.java	(original)
+++ incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/JDBCSelector.java	Thu Dec  2 10:18:53 2004
@@ -21,6 +21,7 @@
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Iterator;
 
@@ -37,14 +38,13 @@
 
     public void addExpression( Expression expression )
     {
-        if ( !expression.supports( m_table ) ) throw new IllegalArgumentException( "Expression does not support table metadata" );
         m_expressions.add( expression );
     }
 
     public boolean select( Connection c ) throws SQLException
     {
         PreparedStatement statement = c.prepareStatement( buildQueryString() );
-        bindParameterValues( statement );
+        bindParameterValues( statement, getParameterValues() );
         ResultSet rs = statement.executeQuery();
         boolean found = rs.next();
         statement.close();
@@ -52,48 +52,38 @@
         return found;
     }
 
-    private String buildQueryString()
+    private String[] getParameterValues()
     {
-        StringBuffer statement = new StringBuffer();
-        statement.append( "select * from " ).append( m_table.getName() ).append( " where " );
-
+        Collection parameters = new ArrayList();
         for ( Iterator it = m_expressions.iterator(); it.hasNext(); )
         {
             Expression expression = ( Expression ) it.next();
-            statement.append( expression.getQueryString( m_table ) );
-            if ( it.hasNext() ) statement.append( " and " );
+            parameters.addAll( Arrays.asList( expression.getParameterValues( ) ) );
         }
 
-        return statement.toString();
+        return ( String[] ) parameters.toArray( new String[parameters.size()] );
     }
 
-    private void bindParameterValues( PreparedStatement statement ) throws SQLException
+    private String buildQueryString()
     {
-        Parameters parameters = new Parameters( statement );
+        StringBuffer statement = new StringBuffer();
+        statement.append( "select * from " ).append( m_table.getName() ).append( " where " );
+
         for ( Iterator it = m_expressions.iterator(); it.hasNext(); )
         {
             Expression expression = ( Expression ) it.next();
-            parameters.bind( expression );
+            statement.append( expression.getQueryString() );
+            if ( it.hasNext() ) statement.append( " and " );
         }
+
+        return statement.toString();
     }
 
-    private class Parameters
+    private void bindParameterValues( PreparedStatement statement, String[] parameters ) throws SQLException
     {
-        private final PreparedStatement m_statement;
-        private int m_index = 1;
-
-        public Parameters( PreparedStatement statement )
-        {
-            m_statement = statement;
-        }
-
-        public void bind( Expression expression ) throws SQLException
+        for ( int i = 0; i < parameters.length; i++ )
         {
-            String[] values = expression.getParameterValues( m_table );
-            for ( int i = 0; i < values.length; i++ )
-            {
-                m_statement.setString( m_index++, values[i] );
-            }
+            statement.setString( i + 1, parameters[i] );
         }
     }
 }

Modified: incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/SameCredentialsBuilder.java
Url: http://svn.apache.org/viewcvs/incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/SameCredentialsBuilder.java?view=diff&rev=109512&p1=incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/SameCredentialsBuilder.java&r1=109511&p2=incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/SameCredentialsBuilder.java&r2=109512
==============================================================================
--- incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/SameCredentialsBuilder.java	(original)
+++ incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/SameCredentialsBuilder.java	Thu Dec  2 10:18:53 2004
@@ -23,21 +23,19 @@
 
 public class SameCredentialsBuilder implements SelectorBuilder
 {
-    private final ExpressionBuilder m_builder;
     private final CredentialSet m_credentials;
 
-    public SameCredentialsBuilder( ExpressionBuilder builder, CredentialSet credentials )
+    public SameCredentialsBuilder( CredentialSet credentials )
     {
-        m_builder = builder;
         m_credentials = credentials;
     }
 
-    public void build( Selector selector )
+    public void build( ExpressionBuilder builder, Selector selector )
     {
         for ( Iterator it = m_credentials.elements().iterator(); it.hasNext(); )
         {
             Credential credential = (Credential) it.next();
-            selector.addExpression( m_builder.eq( credential.getClass(), credential.getValue() ));
+            selector.addExpression( builder.eq( credential.getClass(), credential.getValue() ));
         }
     }
 }

Modified: incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/SelectorBuilder.java
Url: http://svn.apache.org/viewcvs/incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/SelectorBuilder.java?view=diff&rev=109512&p1=incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/SelectorBuilder.java&r1=109511&p2=incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/SelectorBuilder.java&r2=109512
==============================================================================
--- incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/SelectorBuilder.java	(original)
+++ incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/SelectorBuilder.java	Thu Dec  2 10:18:53 2004
@@ -18,5 +18,5 @@
 
 public interface SelectorBuilder
 {
-    void build( Selector selector );
+    void build( ExpressionBuilder builder, Selector selector );
 }

Modified: incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/Table.java
Url: http://svn.apache.org/viewcvs/incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/Table.java?view=diff&rev=109512&p1=incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/Table.java&r1=109511&p2=incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/Table.java&r2=109512
==============================================================================
--- incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/Table.java	(original)
+++ incubator/directory/janus/trunk/jdbc/src/java/org/apache/janus/authentication/realm/Table.java	Thu Dec  2 10:18:53 2004
@@ -25,13 +25,11 @@
 {
     private final String m_name;
     private final Map m_columns;
-    private final Map m_converters;
 
     public Table( String name )
     {
         m_name = name;
         m_columns = new HashMap();
-        m_converters = new HashMap();
     }
 
     public String getName()
@@ -51,17 +49,17 @@
 
     public String getColumnName( Class type )
     {
-        Column column = column( type );
+        Column column = getColumn( type );
         return column != null ? column.getName() : null;
     }
 
-    public String getColumnValue( Object object )
+    public String getColumnValue( Class type, Object value )
     {
-        Converter converter = ( Converter ) m_converters.get( object.getClass() );
-        return converter != null ? converter.convert( object ) : object.toString();
+        Column column = getColumn( type );
+        return column != null ? column.getValue( value ) : null;
     }
 
-    private Column column( Class type )
+    public Column getColumn( Class type )
     {
         Column column = ( Column ) m_columns.get( type );
         return column;

Modified: incubator/directory/janus/trunk/jdbc/src/test/org/apache/janus/authentication/realm/Columns.java
Url: http://svn.apache.org/viewcvs/incubator/directory/janus/trunk/jdbc/src/test/org/apache/janus/authentication/realm/Columns.java?view=diff&rev=109512&p1=incubator/directory/janus/trunk/jdbc/src/test/org/apache/janus/authentication/realm/Columns.java&r1=109511&p2=incubator/directory/janus/trunk/jdbc/src/test/org/apache/janus/authentication/realm/Columns.java&r2=109512
==============================================================================
--- incubator/directory/janus/trunk/jdbc/src/test/org/apache/janus/authentication/realm/Columns.java	(original)
+++ incubator/directory/janus/trunk/jdbc/src/test/org/apache/janus/authentication/realm/Columns.java	Thu Dec  2 10:18:53 2004
@@ -22,11 +22,11 @@
 
     public static Column username()
     {
-        return new Column( "username", UsernameCredential.class );
+        return new Column( "USERNAME", UsernameCredential.class );
     }
 
     public static Column password()
     {
-        return new Column( "password", PasswordCredential.class );
+        return new Column( "PASSWORD", PasswordCredential.class );
     }
 }

Added: incubator/directory/janus/trunk/jdbc/src/test/org/apache/janus/authentication/realm/Creds.java
Url: http://svn.apache.org/viewcvs/incubator/directory/janus/trunk/jdbc/src/test/org/apache/janus/authentication/realm/Creds.java?view=auto&rev=109512
==============================================================================
--- (empty file)
+++ incubator/directory/janus/trunk/jdbc/src/test/org/apache/janus/authentication/realm/Creds.java	Thu Dec  2 10:18:53 2004
@@ -0,0 +1,40 @@
+/*
+ *   Copyright 2004 The Apache Software Foundation
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ *
+ */
+package org.apache.janus.authentication.realm;
+
+import org.apache.janus.authentication.CredentialSet;
+
+public class Creds
+{
+    private Creds() {}
+
+    public static CredentialSet joe()
+    {
+        CredentialSet creds = new CredentialSet();
+        creds.add( new UsernameCredential( "joe" ) );
+        creds.add( new PasswordCredential( "foo" ) );
+        return creds;
+    }
+
+    public static CredentialSet jane()
+    {
+        CredentialSet creds = new CredentialSet();
+        creds.add( new UsernameCredential( "jane" ) );
+        creds.add( new PasswordCredential( "bar" ) );
+        return creds;
+    }
+}

Modified: incubator/directory/janus/trunk/jdbc/src/test/org/apache/janus/authentication/realm/JDBCRealmTest.java
Url: http://svn.apache.org/viewcvs/incubator/directory/janus/trunk/jdbc/src/test/org/apache/janus/authentication/realm/JDBCRealmTest.java?view=diff&rev=109512&p1=incubator/directory/janus/trunk/jdbc/src/test/org/apache/janus/authentication/realm/JDBCRealmTest.java&r1=109511&p2=incubator/directory/janus/trunk/jdbc/src/test/org/apache/janus/authentication/realm/JDBCRealmTest.java&r2=109512
==============================================================================
--- incubator/directory/janus/trunk/jdbc/src/test/org/apache/janus/authentication/realm/JDBCRealmTest.java	(original)
+++ incubator/directory/janus/trunk/jdbc/src/test/org/apache/janus/authentication/realm/JDBCRealmTest.java	Thu Dec  2 10:18:53 2004
@@ -17,7 +17,6 @@
 package org.apache.janus.authentication.realm;
 
 import junit.framework.TestCase;
-import org.apache.janus.authentication.CredentialSet;
 
 public class JDBCRealmTest extends TestCase
 {
@@ -34,8 +33,8 @@
         m_db = new MemoryDatabase();
         Table table = Tables.users();
         m_db.create( table );
-        m_db.insertInto( table, new String[] { "joe", "foo" } );
-        m_db.insertInto( table, new String[] { "jane", "bar" } );
+        m_db.insertInto( table, Creds.joe() );
+        m_db.insertInto( table, Creds.jane() );
         m_realm = new JDBCRealm( m_db.getDataSource() , table );
     }
 
@@ -47,11 +46,8 @@
     public void testExecutesSelectionQueriesAgainstDatabase() throws Exception
     {
         JDBCSelector selector = new JDBCSelector( Tables.users() );
-        CredentialSet creds = new CredentialSet();
-        creds.add( new UsernameCredential( "joe" ) );
-        creds.add( new PasswordCredential( "foo" ) );
-        SameCredentialsBuilder builder = new SameCredentialsBuilder( new ExpressionBuilder(), creds );
-        builder.build( selector );
+        SameCredentialsBuilder builder = new SameCredentialsBuilder( Creds.joe() );
+        builder.build( new ExpressionBuilder( Tables.users() ), selector );
 
         assertTrue( m_realm.find( selector ) );
     }
@@ -60,11 +56,8 @@
     {
         JDBCSelector selector = new JDBCSelector( undefinedTable() );
 
-        CredentialSet creds = new CredentialSet();
-        creds.add( new UsernameCredential( "joe" ) );
-        creds.add( new PasswordCredential( "foo" ) );
-        SameCredentialsBuilder builder = new SameCredentialsBuilder( new ExpressionBuilder(), creds );
-        builder.build( selector );
+        SameCredentialsBuilder builder = new SameCredentialsBuilder( Creds.joe() );
+        builder.build( new ExpressionBuilder(Tables.users()), selector );
 
         try
         {

Modified: incubator/directory/janus/trunk/jdbc/src/test/org/apache/janus/authentication/realm/JDBCSelectorTest.java
Url: http://svn.apache.org/viewcvs/incubator/directory/janus/trunk/jdbc/src/test/org/apache/janus/authentication/realm/JDBCSelectorTest.java?view=diff&rev=109512&p1=incubator/directory/janus/trunk/jdbc/src/test/org/apache/janus/authentication/realm/JDBCSelectorTest.java&r1=109511&p2=incubator/directory/janus/trunk/jdbc/src/test/org/apache/janus/authentication/realm/JDBCSelectorTest.java&r2=109512
==============================================================================
--- incubator/directory/janus/trunk/jdbc/src/test/org/apache/janus/authentication/realm/JDBCSelectorTest.java	(original)
+++ incubator/directory/janus/trunk/jdbc/src/test/org/apache/janus/authentication/realm/JDBCSelectorTest.java	Thu Dec  2 10:18:53 2004
@@ -19,6 +19,8 @@
 import junit.framework.TestCase;
 
 import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
 
 public class JDBCSelectorTest extends TestCase
 {
@@ -31,8 +33,8 @@
         m_db = new MemoryDatabase();
         Table table = Tables.users();
         m_db.create( table );
-        m_db.insertInto( table, new String[] { "joe", "foo" } );
-        m_db.insertInto( table, new String[] { "jane", "bar" } );
+        m_db.insertInto( table, Creds.joe() );
+        m_db.insertInto( table, Creds.jane() );
         m_selector = new JDBCSelector( table );
 
         m_connection = m_db.getDataSource().getConnection();
@@ -49,35 +51,22 @@
      */
     public void testFindsDataBasedOnCredentialExpression() throws Exception
     {
-        m_selector.addExpression( new EqExpression( UsernameCredential.class, "joe" ) );
+        m_selector.addExpression( new EqExpression( Columns.username(), "joe" ) );
         assertTrue( m_selector.select( m_connection ) );
     }
 
     public void testSupportsMultipleCredentialExpressions() throws Exception
     {
-        m_selector.addExpression( new EqExpression( UsernameCredential.class, "joe" ) );
-        m_selector.addExpression( new EqExpression( PasswordCredential.class, "foo" ) );
+        m_selector.addExpression( new EqExpression( Columns.username(), "joe" ) );
+        m_selector.addExpression( new EqExpression( Columns.password(), "foo" ) );
 
         assertTrue( m_selector.select( m_connection ) );
     }
 
     public void testSupportsAndExpressions() throws Exception
     {
-        m_selector.addExpression( new AndExpression( new EqExpression( UsernameCredential.class, "joe" ),
-                new EqExpression( PasswordCredential.class, "foo" ) ) );
+        m_selector.addExpression( new AndExpression( new EqExpression( Columns.username(), "joe" ),
+                new EqExpression( Columns.password(), "foo" ) ) );
         assertTrue( m_selector.select( m_connection ) );
-    }
-
-    public void testValidatesExpressionAgainstTableMetadata()
-    {
-        try
-        {
-            m_selector.addExpression( new EqExpression( Object.class, new Object() ) );
-            fail( "IllegalArgumentException expected" );
-        }
-        catch ( IllegalArgumentException expected )
-        {
-            assertTrue( true );
-        }
     }
 }

Modified: incubator/directory/janus/trunk/jdbc/src/test/org/apache/janus/authentication/realm/MemoryDatabase.java
Url: http://svn.apache.org/viewcvs/incubator/directory/janus/trunk/jdbc/src/test/org/apache/janus/authentication/realm/MemoryDatabase.java?view=diff&rev=109512&p1=incubator/directory/janus/trunk/jdbc/src/test/org/apache/janus/authentication/realm/MemoryDatabase.java&r1=109511&p2=incubator/directory/janus/trunk/jdbc/src/test/org/apache/janus/authentication/realm/MemoryDatabase.java&r2=109512
==============================================================================
--- incubator/directory/janus/trunk/jdbc/src/test/org/apache/janus/authentication/realm/MemoryDatabase.java	(original)
+++ incubator/directory/janus/trunk/jdbc/src/test/org/apache/janus/authentication/realm/MemoryDatabase.java	Thu Dec  2 10:18:53 2004
@@ -16,15 +16,18 @@
  */
 package org.apache.janus.authentication.realm;
 
+import org.apache.janus.authentication.Credential;
+import org.apache.janus.authentication.CredentialSet;
+import org.hsqldb.DatabaseManager;
 import org.hsqldb.jdbc.jdbcDataSource;
 
 import javax.sql.DataSource;
 import java.sql.Connection;
 import java.sql.SQLException;
 import java.sql.Statement;
-import java.util.Iterator;
-import java.util.Collection;
 import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
 
 public class MemoryDatabase
 {
@@ -60,6 +63,7 @@
         }
         sb.append( "\n)" );
         statement.executeUpdate( sb.toString() );
+        statement.close();
         c.close();
 
         m_tables.add( table );
@@ -72,24 +76,36 @@
         StringBuffer sb = new StringBuffer( );
         sb.append( "drop table ").append( table.getName() );
         statement.executeUpdate( sb.toString() );
+        statement.close();
         c.close();
 
         m_tables.remove( table );
     }
 
-    public void insertInto( Table table, String[] values ) throws SQLException
+    public void insertInto( Table table, CredentialSet creds ) throws SQLException
     {
         Connection c = m_ds.getConnection();
         Statement statement = c.createStatement();
         StringBuffer sb = new StringBuffer( );
-        sb.append( "insert into ").append( table.getName() ).append( " values( ");
-        for ( int i = 0; i < values.length; i++ )
+
+        sb.append( "insert into ").append( table.getName() ).append( "(");
+        for ( Iterator it = creds.elements().iterator(); it.hasNext(); )
+        {
+            Credential credential = ( Credential ) it.next();
+            sb.append( table.getColumnName( credential.getClass() ));
+            if ( it.hasNext() ) sb.append( ",");
+        }
+
+        sb.append( ") values( ");
+        for ( Iterator it = creds.elements().iterator(); it.hasNext(); )
         {
-            sb.append( "'" ).append( values[i] ).append( "'" );
-            if ( i < values.length - 1 ) sb.append( ",");
+            Credential credential = ( Credential ) it.next();
+            sb.append( "'" ).append( table.getColumnValue( credential.getClass(), credential.getValue() ) ).append( "'" );
+            if ( it.hasNext() ) sb.append( ",");
         }
         sb.append( ")");
         statement.executeUpdate( sb.toString() );
+        statement.close();
         c.close();
     }
 
@@ -100,5 +116,18 @@
         {
             drop( tables[i] );
         }
+    }
+
+    public void dispose()
+    {
+        try
+        {
+            dropAll();
+        }
+        catch ( SQLException ignored )
+        {
+
+        }
+        DatabaseManager.closeDatabases( -1 );
     }
 }

Modified: incubator/directory/janus/trunk/jdbc/src/test/org/apache/janus/authentication/realm/SameCredentialsBuilderTest.java
Url: http://svn.apache.org/viewcvs/incubator/directory/janus/trunk/jdbc/src/test/org/apache/janus/authentication/realm/SameCredentialsBuilderTest.java?view=diff&rev=109512&p1=incubator/directory/janus/trunk/jdbc/src/test/org/apache/janus/authentication/realm/SameCredentialsBuilderTest.java&r1=109511&p2=incubator/directory/janus/trunk/jdbc/src/test/org/apache/janus/authentication/realm/SameCredentialsBuilderTest.java&r2=109512
==============================================================================
--- incubator/directory/janus/trunk/jdbc/src/test/org/apache/janus/authentication/realm/SameCredentialsBuilderTest.java	(original)
+++ incubator/directory/janus/trunk/jdbc/src/test/org/apache/janus/authentication/realm/SameCredentialsBuilderTest.java	Thu Dec  2 10:18:53 2004
@@ -38,13 +38,13 @@
         CredentialSet creds = new CredentialSet();
         creds.add( new UsernameCredential( "joe" ) );
         creds.add( new PasswordCredential( "foo" ) );
-        m_builder = new SameCredentialsBuilder( new ExpressionBuilder(), creds );
+        m_builder = new SameCredentialsBuilder( creds );
 
         Mock mockSelector = new Mock( Selector.class );
 
-        mockSelector.expects( once() ).method( "addExpression" ).with( eq( new EqExpression( UsernameCredential.class, "joe" ) ) );
-        mockSelector.expects( once() ).method( "addExpression" ).with( eq( new EqExpression( PasswordCredential.class, "foo" ) ) );
-        m_builder.build( ( Selector ) mockSelector.proxy() );
+        mockSelector.expects( once() ).method( "addExpression" ).with( eq( new EqExpression( Columns.username(), "joe" ) ) );
+        mockSelector.expects( once() ).method( "addExpression" ).with( eq( new EqExpression( Columns.password(), "foo" ) ) );
+        m_builder.build( new ExpressionBuilder( Tables.users() ), ( Selector ) mockSelector.proxy() );
         mockSelector.verify();
     }
 }