From: David J. <d_j...@us...> - 2001-12-05 14:29:39
|
Update of /cvsroot/firebird/client-java/src/org/firebirdsql/jca In directory usw-pr-cvs1:/tmp/cvs-serv14336/org/firebirdsql/jca Modified Files: FBManagedConnection.java FBManagedConnectionFactory.java Log Message: Made connections use username and password from subject, added default user name and password properties to ManagedConnectionFactory Index: FBManagedConnection.java =================================================================== RCS file: /cvsroot/firebird/client-java/src/org/firebirdsql/jca/FBManagedConnection.java,v retrieving revision 1.11 retrieving revision 1.12 diff -U3 -r1.11 -r1.12 --- FBManagedConnection.java 2001/11/26 16:16:36 1.11 +++ FBManagedConnection.java 2001/12/05 14:29:36 1.12 @@ -89,8 +89,6 @@ private int timeout = 0; - private Subject s; - private FBConnectionRequestInfo cri; @@ -100,10 +98,13 @@ private Set tpb; - FBManagedConnection(Subject s, FBConnectionRequestInfo cri, FBManagedConnectionFactory mcf) { + FBManagedConnection(Subject subject, + ConnectionRequestInfo cri, + FBManagedConnectionFactory mcf) + throws ResourceException + { this.mcf = mcf; - this.s = s; - this.cri = cri; + this.cri = getCombinedConnectionRequestInfo(subject, cri);//cri; this.log = mcf.getLogWriter(); this.tpb = mcf.getTpb(); //getTpb supplies a copy. } @@ -290,10 +291,14 @@ EISSystemException - internal error condition in EIS instance - used if EIS instance is involved in setting state of ManagedConnection **/ - public java.lang.Object getConnection(Subject subject, ConnectionRequestInfo cxRequestInfo) - throws ResourceException { - //subject currently ignored - //cxRequestInfo currently ignored. + public Object getConnection(Subject subject, ConnectionRequestInfo cri) + throws ResourceException + { + if (!matches(subject, cri)) + { + throw new ResourceException("Incompatible subject or ConnectionRequestInfo in getConnection!"); + } // end of if () + FBConnection c = new FBConnection(this); connectionHandles.add(c); return c; @@ -639,16 +644,9 @@ return mcf.getDatabase(); } - public String getUserName() { - if (s != null) { - Set credentials = s.getPrivateCredentials(javax.resource.spi.security.PasswordCredential.class); - Iterator i = credentials.iterator(); - while (i.hasNext()) { - PasswordCredential pc = (PasswordCredential)i.next(); - return pc.getUserName(); - } - } - return null;//we could go fishing but why bother? + public String getUserName() + { + return cri.getUser(); } public int getTransactionIsolation() { @@ -756,14 +754,16 @@ } - boolean matches(Subject subj, FBConnectionRequestInfo cri) { - if (s == null) { - if (subj != null) { - return false; - } - return this.cri.equals(cri); - } - return s.equals(subj) && this.cri.equals(cri); + boolean matches(Subject subj, ConnectionRequestInfo cri) + { + try + { + return this.cri.equals(getCombinedConnectionRequestInfo(subj, cri)); + } + catch (ResourceException re) + { + return false; + } // end of try-catch } Set getTpb() { @@ -774,6 +774,37 @@ //----------------------------------------- //Private methods //----------------------------------------- + + + private FBConnectionRequestInfo getCombinedConnectionRequestInfo(Subject subject, ConnectionRequestInfo cri) throws ResourceException + { + if (cri == null) { + cri = mcf.getDefaultConnectionRequestInfo(); + } + try + { + FBConnectionRequestInfo fbcri = (FBConnectionRequestInfo)cri; + if (subject != null) + { + Iterator iter = subject.getPrivateCredentials().iterator(); + if (iter.hasNext()) { + PasswordCredential cred = (PasswordCredential) iter.next(); + String user = cred.getUserName(); + String password = new String(cred.getPassword()); + fbcri.setPassword(password); + fbcri.setUser(user); + } + } // end of if () + + return fbcri; + } + catch (ClassCastException cce) + { + throw new ResourceException("Incorrect ConnectionRequestInfo class supplied"); + } // end of try-catch + + } + public static class SqlInfo { private int statementType; Index: FBManagedConnectionFactory.java =================================================================== RCS file: /cvsroot/firebird/client-java/src/org/firebirdsql/jca/FBManagedConnectionFactory.java,v retrieving revision 1.11 retrieving revision 1.12 diff -U3 -r1.11 -r1.12 --- FBManagedConnectionFactory.java 2001/11/26 16:16:36 1.11 +++ FBManagedConnectionFactory.java 2001/12/05 14:29:36 1.12 @@ -131,14 +131,25 @@ return defaultCri; } -/* public void setDpb(Clumplet dpb) { - dpbClumplet = dpb; - }*/ - -/* public Clumplet getDpb() { -// return dpbClumplet; - return defaultCri.c; - }*/ + public void setUserName(String userName) + { + defaultCri.setUser(userName); + } + + public String getUserName() + { + return defaultCri.getUser(); + } + + public void setPassword(String password) + { + defaultCri.setPassword(password); + } + + public String getPassword() + { + return defaultCri.getPassword(); + } public void setTpb(Collection tpb) { tpbSet = new HashSet(tpb); @@ -207,12 +218,10 @@ **/ public ManagedConnection createManagedConnection(Subject subject, - ConnectionRequestInfo cxRequestInfo) - throws ResourceException { - if (cxRequestInfo == null) { - cxRequestInfo = defaultCri; - } - return new FBManagedConnection(subject, (FBConnectionRequestInfo)cxRequestInfo, this); + ConnectionRequestInfo cri) + throws ResourceException + { + return new FBManagedConnection(subject, cri, this); } |