[teiid-commits] teiid SVN: r4082 - in branches/7.7.x: runtime/src/main/java/org/teiid/services and 1 other directories.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Wed May 9 11:53:06 EDT 2012


Author: rareddy
Date: 2012-05-09 11:53:06 -0400 (Wed, 09 May 2012)
New Revision: 4082

Modified:
   branches/7.7.x/engine/src/main/java/org/teiid/dqp/service/SessionService.java
   branches/7.7.x/runtime/src/main/java/org/teiid/services/SessionServiceImpl.java
   branches/7.7.x/runtime/src/main/java/org/teiid/transport/LogonImpl.java
Log:
TEIID-2037: Moving dis-assosiation to happen correctly in case of error in LoginImpl 

Modified: branches/7.7.x/engine/src/main/java/org/teiid/dqp/service/SessionService.java
===================================================================
--- branches/7.7.x/engine/src/main/java/org/teiid/dqp/service/SessionService.java	2012-05-09 15:34:45 UTC (rev 4081)
+++ branches/7.7.x/engine/src/main/java/org/teiid/dqp/service/SessionService.java	2012-05-09 15:53:06 UTC (rev 4082)
@@ -148,7 +148,7 @@
 	
 	String getGssSecurityDomain();
 	
-	void associateSubjectInContext(String securityDomain, Subject subject); 
+	boolean associateSubjectInContext(String securityDomain, Subject subject); 
 	
 	Subject getSubjectInContext(String securityDomain);
 

Modified: branches/7.7.x/runtime/src/main/java/org/teiid/services/SessionServiceImpl.java
===================================================================
--- branches/7.7.x/runtime/src/main/java/org/teiid/services/SessionServiceImpl.java	2012-05-09 15:34:45 UTC (rev 4081)
+++ branches/7.7.x/runtime/src/main/java/org/teiid/services/SessionServiceImpl.java	2012-05-09 15:53:06 UTC (rev 4082)
@@ -424,13 +424,13 @@
 	}
 	
 	@Override
-	public void associateSubjectInContext(String securityDomain, Subject subject) {
+	public boolean associateSubjectInContext(String securityDomain, Subject subject) {
     	Principal principal = null;
     	for(Principal p:subject.getPrincipals()) {
 			principal = p;
 			break;
     	}
-    	this.securityHelper.associateSecurityContext(securityDomain, this.securityHelper.createSecurityContext(securityDomain, principal, null, subject));		
+    	return this.securityHelper.associateSecurityContext(securityDomain, this.securityHelper.createSecurityContext(securityDomain, principal, null, subject));		
 	}
 	
 	@Override

Modified: branches/7.7.x/runtime/src/main/java/org/teiid/transport/LogonImpl.java
===================================================================
--- branches/7.7.x/runtime/src/main/java/org/teiid/transport/LogonImpl.java	2012-05-09 15:34:45 UTC (rev 4081)
+++ branches/7.7.x/runtime/src/main/java/org/teiid/transport/LogonImpl.java	2012-05-09 15:53:06 UTC (rev 4082)
@@ -159,7 +159,7 @@
 		
         String user = connProps.getProperty(TeiidURL.CONNECTION.USER_NAME);
         String password = connProps.getProperty(TeiidURL.CONNECTION.PASSWORD);		
-		
+		boolean assosiated = false;
 		try {
 			String securityDomain = service.getGssSecurityDomain();
 			if (securityDomain == null) {
@@ -175,7 +175,7 @@
 			}
 			
 			if (result.context.isEstablished()) {
-				service.associateSubjectInContext(securityDomain, subject);
+				assosiated = service.associateSubjectInContext(securityDomain, subject);
 			}
 			
 			if (!result.context.isEstablished() || !createSession) {
@@ -187,12 +187,14 @@
 			
 			LogManager.logDetail(LogConstants.CTX_SECURITY, "Kerberos context established"); //$NON-NLS-1$
 			//connProps.setProperty(TeiidURL.CONNECTION.PASSTHROUGH_AUTHENTICATION, "true"); //$NON-NLS-1$
-			LogonResult loginInResult =  logon(connProps, result.serviceTicket);
-			service.clearSubjectInContext();
-			return loginInResult;
+			return logon(connProps, result.serviceTicket);
 		} catch (LoginException e) {
 			throw new LogonException(e, RuntimePlugin.Util.getString("krb5_login_failed")); //$NON-NLS-1$
-		} 
+		} finally {
+			if (assosiated) {
+				this.service.clearSubjectInContext();
+			}
+		}
 	}
 	
 	private String updateDQPContext(SessionMetadata s) {



More information about the teiid-commits mailing list