[jboss-svn-commits] JBL Code SVN: r20792 - in labs/jbosslabs/labs-3.0-build/integration/cs-nukes-login: src/main/java/org/jboss/labs/clearspace and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Jun 26 05:01:32 EDT 2008


Author: szimano
Date: 2008-06-26 05:01:32 -0400 (Thu, 26 Jun 2008)
New Revision: 20792

Modified:
   labs/jbosslabs/labs-3.0-build/integration/cs-nukes-login/pom.xml
   labs/jbosslabs/labs-3.0-build/integration/cs-nukes-login/src/main/java/org/jboss/labs/clearspace/LabsAuthenticationProvider.java
Log:
spring definition for migration

Modified: labs/jbosslabs/labs-3.0-build/integration/cs-nukes-login/pom.xml
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/cs-nukes-login/pom.xml	2008-06-26 08:46:53 UTC (rev 20791)
+++ labs/jbosslabs/labs-3.0-build/integration/cs-nukes-login/pom.xml	2008-06-26 09:01:32 UTC (rev 20792)
@@ -21,8 +21,8 @@
 		</dependency>
 		<dependency>
 			<groupId>com.jivesoftware</groupId>
-			<artifactId>clearspace-community</artifactId>
-			<version>2.0.1</version>
+			<artifactId>clearspace</artifactId>
+			<version>2.0.3</version>
 			<scope>provided</scope>
 		</dependency>
 		<dependency>

Modified: labs/jbosslabs/labs-3.0-build/integration/cs-nukes-login/src/main/java/org/jboss/labs/clearspace/LabsAuthenticationProvider.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/cs-nukes-login/src/main/java/org/jboss/labs/clearspace/LabsAuthenticationProvider.java	2008-06-26 08:46:53 UTC (rev 20791)
+++ labs/jbosslabs/labs-3.0-build/integration/cs-nukes-login/src/main/java/org/jboss/labs/clearspace/LabsAuthenticationProvider.java	2008-06-26 09:01:32 UTC (rev 20792)
@@ -6,7 +6,9 @@
 import java.sql.DriverManager;
 import java.sql.ResultSet;
 import java.sql.SQLException;
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.List;
 import java.util.concurrent.Callable;
 import java.util.logging.Level;
 import java.util.logging.Logger;
@@ -17,29 +19,34 @@
 import org.acegisecurity.providers.UsernamePasswordAuthenticationToken;
 import org.acegisecurity.userdetails.UserDetails;
 import org.acegisecurity.userdetails.UserDetailsService;
+import org.springframework.context.ApplicationContext;
 
+import com.jivesoftware.base.User;
+import com.jivesoftware.base.UserAlreadyExistsException;
 import com.jivesoftware.base.UserManager;
 import com.jivesoftware.base.UserTemplate;
 import com.jivesoftware.community.aaa.JiveUserDetails;
 import com.jivesoftware.community.aaa.authz.SystemExecutor;
 
 public class LabsAuthenticationProvider implements AuthenticationProvider {
-	
+
 	private UserManager userManager;
 
 	private UserDetailsService userDetailsService;
-	
-	private String dbUserName = "portal";
-	private String dbPass = "portalpassword";
-	private String dbUrl = "jdbc:mysql://localhost:3306/nukes3";
 
+	private String dbUserName = null;
+	private String dbPass = null;
+	private String dbUrl = null;
+
 	protected com.jivesoftware.base.aaa.AuthenticationProvider jiveAuthProvider;
 
 	private final static Logger log = Logger
 			.getLogger(LabsAuthenticationProvider.class.getName());
 
+	private boolean migrationDone = false;
+
 	public LabsAuthenticationProvider() {
-
+		
 	}
 
 	public Authentication authenticate(Authentication authentication)
@@ -149,7 +156,7 @@
 					e.printStackTrace();
 				}
 			}
-			
+
 			return null;
 
 		} else {
@@ -222,27 +229,101 @@
 
 	public void setUserManager(UserManager userManager) {
 		this.userManager = userManager;
+		checkMigration();
 	}
 
 	public void setUserDetailsService(UserDetailsService userDetailsService) {
 		this.userDetailsService = userDetailsService;
+		checkMigration();
 	}
 
 	public void setJiveAuthProvider(
 			com.jivesoftware.base.aaa.AuthenticationProvider jiveAuthProvider) {
 		this.jiveAuthProvider = jiveAuthProvider;
+		checkMigration();
 	}
 
 	public void setDbUserName(String dbUserName) {
 		this.dbUserName = dbUserName;
+		checkMigration();
 	}
 
 	public void setDbPass(String dbPass) {
 		this.dbPass = dbPass;
+		checkMigration();
 	}
 
 	public void setDbUrl(String dbUrl) {
 		this.dbUrl = dbUrl;
+		checkMigration();
 	}
 
+	private void checkMigration() {
+		if (!migrationDone && userManager != null && userDetailsService != null
+				&& jiveAuthProvider != null && dbPass != null && dbUrl != null
+				&& dbUserName != null) {
+			if (System.getenv("MIGRATE_ALL_USERS") != null) {
+				Connection c = null;
+
+				try {
+					c = getConnection();
+
+					ResultSet rs = c.createStatement().executeQuery(
+							"SELECT * FROM nuke_users n ORDER BY n.pn_uname");
+
+					List<String> userNames = new ArrayList<String>();
+
+					for (User u : userManager.getUsers()) {
+						userNames.add(u.getUsername());
+					}
+
+					while (rs.next()) {
+						String username = null;
+						try {
+							username = rs.getObject("pn_uname").toString();
+
+							if (username.length() > 0
+									&& !userNames.contains(username)) {
+
+								LabsUser nukeUser = new LabsUser(rs);
+
+								UserTemplate ut = new UserTemplate(username);
+								ut.setFederated(true);
+
+								ut = mapDetails(ut, nukeUser);
+								userManager.createApplicationUser(ut);
+
+								// try again to load the user from the details
+								// service, this time it should work
+								userDetailsService.loadUserByUsername(username);
+								
+								log.info("Users " + username + " added");
+							}
+						} catch (SQLException e) {
+							// TODO Auto-generated catch block
+							e.printStackTrace();
+						} catch (UserAlreadyExistsException e) {
+							log.info("User "+username+" already exists");
+						}
+					}
+
+					migrationDone = true;
+				} catch (Exception e) {
+					// TODO Auto-generated catch block
+					e.printStackTrace();
+				} finally {
+					if (c != null) {
+						try {
+							c.close();
+						} catch (SQLException e) {
+							// TODO Auto-generated catch block
+							e.printStackTrace();
+						}
+					}
+				}
+
+			}
+		}
+	}
+
 }




More information about the jboss-svn-commits mailing list