[jboss-svn-commits] JBL Code SVN: r6870 - in labs/jbosslabs/trunk/portal-extensions: configuration/to-copy/server/all/deploy/jboss-portal.sar/portal-server.war/WEB-INF forge-common forge-common/src/java/org/jboss/forge/common forge-common/src/java/org/jboss/forge/common/propertypersistance forge-common/src/java/org/jboss/forge/common/propertypersistance/ejb3 forge-common/src/java/org/jboss/forge/common/soa forge-login forge-login/src/java/org/jboss/labs/login forge-login-portlet/src/java/org/jbosslabs/security/filter forge-login-portlet/src/java/org/jbosslabs/security/portlet forge-login-portlet/src/web/WEB-INF forge-portal-attr/src/java/org/jboss/forge/portal jbosswiki/wiki-common/src/java/org/jboss/wiki jbosswiki/wiki-management/src/java/org/jboss/wiki

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Oct 17 16:53:55 EDT 2006


Author: szimano
Date: 2006-10-17 16:53:19 -0400 (Tue, 17 Oct 2006)
New Revision: 6870

Added:
   labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/propertypersistance/
   labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/propertypersistance/PropertyService.java
   labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/propertypersistance/ejb3/
   labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/propertypersistance/ejb3/LabsPropertyEntity.java
   labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/propertypersistance/ejb3/PropertyServiceBean.java
   labs/jbosslabs/trunk/portal-extensions/forge-portal-attr/src/java/org/jboss/forge/portal/AutologinFilter.java
   labs/jbosslabs/trunk/portal-extensions/forge-portal-attr/src/java/org/jboss/forge/portal/LoginServlet.java
   labs/jbosslabs/trunk/portal-extensions/forge-portal-attr/src/java/org/jboss/forge/portal/PerformLoginFilter.java
   labs/jbosslabs/trunk/portal-extensions/forge-portal-attr/src/java/org/jboss/forge/portal/ShowLoginPageServlet.java
Modified:
   labs/jbosslabs/trunk/portal-extensions/configuration/to-copy/server/all/deploy/jboss-portal.sar/portal-server.war/WEB-INF/web.xml
   labs/jbosslabs/trunk/portal-extensions/forge-common/maven.xml
   labs/jbosslabs/trunk/portal-extensions/forge-common/project.properties
   labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/soa/LabsServices.java
   labs/jbosslabs/trunk/portal-extensions/forge-login-portlet/src/java/org/jbosslabs/security/filter/Login.java
   labs/jbosslabs/trunk/portal-extensions/forge-login-portlet/src/java/org/jbosslabs/security/portlet/Login.java
   labs/jbosslabs/trunk/portal-extensions/forge-login-portlet/src/web/WEB-INF/web.xml
   labs/jbosslabs/trunk/portal-extensions/forge-login/maven.xml
   labs/jbosslabs/trunk/portal-extensions/forge-login/project.properties
   labs/jbosslabs/trunk/portal-extensions/forge-login/project.xml
   labs/jbosslabs/trunk/portal-extensions/forge-login/src/java/org/jboss/labs/login/LabsLoginModule.java
   labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/InsidePluginExcecutor.java
   labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiEngine.java
   labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiType.java
   labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiTypeLoader.java
   labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-management/src/java/org/jboss/wiki/EMailNotifierSLSB.java
Log:
Autologin feature JBLAB-764
class.forName to ...loadClass in jbosswiki



Modified: labs/jbosslabs/trunk/portal-extensions/configuration/to-copy/server/all/deploy/jboss-portal.sar/portal-server.war/WEB-INF/web.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/configuration/to-copy/server/all/deploy/jboss-portal.sar/portal-server.war/WEB-INF/web.xml	2006-10-17 19:55:03 UTC (rev 6869)
+++ labs/jbosslabs/trunk/portal-extensions/configuration/to-copy/server/all/deploy/jboss-portal.sar/portal-server.war/WEB-INF/web.xml	2006-10-17 20:53:19 UTC (rev 6870)
@@ -8,7 +8,32 @@
    <distributable/>
    -->
 
-   !-- LABS FILTERS -->
+   <!-- LABS FILTERS -->
+   <servlet>
+   	<servlet-name>loginServlet</servlet-name>
+   	<servlet-class>org.jboss.forge.portal.LoginServlet</servlet-class>
+   </servlet>
+   
+   <servlet-mapping>
+   	<servlet-name>loginServlet</servlet-name>
+   	<url-pattern>/loginAction</url-pattern>
+   </servlet-mapping>
+
+	<servlet>
+		<servlet-name>ShowLoginPage</servlet-name>
+		<servlet-class>org.jboss.forge.portal.ShowLoginPageServlet</servlet-class>
+	</servlet>
+	
+	<servlet-mapping>
+		<servlet-name>ShowLoginPage</servlet-name>
+		<url-pattern>/showLogin</url-pattern>
+	</servlet-mapping>
+	
+	<servlet-mapping>
+		<servlet-name>ShowLoginPage</servlet-name>
+		<url-pattern>/logout</url-pattern>
+	</servlet-mapping>
+   
    <filter>
       <filter-name>titleAndTimestampFilter</filter-name>
       <filter-class>org.jboss.forge.portal.TitleChangeFilter</filter-class>
@@ -18,7 +43,17 @@
       <filter-name>titleAndTimestampFilter</filter-name>
       <url-pattern>/*</url-pattern>
    </filter-mapping>
+
+   <filter>
+	<filter-name>autologinFilter</filter-name>
+	<filter-class>org.jboss.forge.portal.AutologinFilter</filter-class>
+   </filter>
    
+   <filter-mapping>
+      <filter-name>autologinFilter</filter-name>
+      <url-pattern>/*</url-pattern>
+   </filter-mapping>   
+   
    <filter>
       <filter-name>moveMeta</filter-name>
       <filter-class>org.jboss.forge.portal.MetaMoveFilter</filter-class>
@@ -223,7 +258,7 @@
       <auth-method>FORM</auth-method>
       <realm-name>JBoss Portal</realm-name>
       <form-login-config>
-         <form-login-page>/login</form-login-page>
+         <form-login-page>/showLogin</form-login-page>
          <form-error-page>/portal/auth/portal/default/login/LoginWindow?action=1&amp;action=loginFailed</form-error-page>
       </form-login-config>
    </login-config>

Modified: labs/jbosslabs/trunk/portal-extensions/forge-common/maven.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-common/maven.xml	2006-10-17 19:55:03 UTC (rev 6869)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/maven.xml	2006-10-17 20:53:19 UTC (rev 6870)
@@ -13,6 +13,8 @@
     </goal>
 
     <goal name="build">
+    	<attainGoal name="ejb" />
+    	<ant:copy file="target/${maven.final.name}.jar" toFile="target/${maven.final.name}.ejb3" />
         <attainGoal name="jar" />
     </goal>
 
@@ -22,5 +24,10 @@
                 <ant:filename name="target/*.jar" />
             </ant:fileset>
         </ant:copy>
+        <ant:copy todir="${local.deploy.dir}" flatten="true">
+            <ant:fileset dir=".">
+                <ant:filename name="target/*.ejb3" />
+            </ant:fileset>
+        </ant:copy>
     </goal>
 </project>

Modified: labs/jbosslabs/trunk/portal-extensions/forge-common/project.properties
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-common/project.properties	2006-10-17 19:55:03 UTC (rev 6869)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/project.properties	2006-10-17 20:53:19 UTC (rev 6870)
@@ -1,3 +1,5 @@
 maven.repo.remote=http://repository.atlassian.com,http://www.ibiblio.org/maven,http://dist.codehaus.org/
 maven.junit.fork=yes
 maven.war.src=${basedir}/src/web
+maven.ejb.includes=**/ejb3/*.class,**/propertypersistance/PropertyService.class
+maven.jar.excludes=**/ejb3/*.class

Added: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/propertypersistance/PropertyService.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/propertypersistance/PropertyService.java	2006-10-17 19:55:03 UTC (rev 6869)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/propertypersistance/PropertyService.java	2006-10-17 20:53:19 UTC (rev 6870)
@@ -0,0 +1,9 @@
+package org.jboss.forge.common.propertypersistance;
+
+public interface PropertyService {
+	public void setProperty(String id, String key, String value);
+
+	public String getProperty(String id, String key);
+
+	public void removeProperty(String id, String key);
+}

Added: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/propertypersistance/ejb3/LabsPropertyEntity.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/propertypersistance/ejb3/LabsPropertyEntity.java	2006-10-17 19:55:03 UTC (rev 6869)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/propertypersistance/ejb3/LabsPropertyEntity.java	2006-10-17 20:53:19 UTC (rev 6870)
@@ -0,0 +1,33 @@
+package org.jboss.forge.common.propertypersistance.ejb3;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+ at Entity
+ at Table(name = "jblab_properties")
+public class LabsPropertyEntity {
+	
+	private String propKey;
+
+	private String propValue;
+
+	@Id
+	public String getPropKey() {
+		return propKey;
+	}
+
+	public void setPropKey(String propKey) {
+		this.propKey = propKey;
+	}
+
+	public String getPropValue() {
+		return propValue;
+	}
+
+	public void setPropValue(String propValue) {
+		this.propValue = propValue;
+	}
+
+
+}

Added: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/propertypersistance/ejb3/PropertyServiceBean.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/propertypersistance/ejb3/PropertyServiceBean.java	2006-10-17 19:55:03 UTC (rev 6869)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/propertypersistance/ejb3/PropertyServiceBean.java	2006-10-17 20:53:19 UTC (rev 6870)
@@ -0,0 +1,47 @@
+package org.jboss.forge.common.propertypersistance.ejb3;
+
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
+import org.jboss.forge.common.propertypersistance.PropertyService;
+
+ at Stateless
+public class PropertyServiceBean implements PropertyService {
+
+	@PersistenceContext(unitName = "property_persistance")
+	protected EntityManager manager;
+
+	public String getProperty(String id, String key) {
+		LabsPropertyEntity entity = manager.find(LabsPropertyEntity.class, id
+				+ key);
+
+		if (entity != null) {
+			return entity.getPropValue();
+		} else
+			return null;
+	}
+
+	public void removeProperty(String id, String key) {
+		LabsPropertyEntity entity = manager.find(LabsPropertyEntity.class, id
+				+ key);
+
+		if (entity != null) {
+			manager.remove(entity);
+		}
+	}
+
+	public void setProperty(String id, String key, String value) {
+		LabsPropertyEntity entity = manager.find(LabsPropertyEntity.class, id
+				+ key);
+
+		if (entity == null)
+			entity = new LabsPropertyEntity();
+
+		entity.setPropKey(id + key);
+		entity.setPropValue(value);
+
+		manager.persist(entity);
+	}
+
+}

Modified: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/soa/LabsServices.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/soa/LabsServices.java	2006-10-17 19:55:03 UTC (rev 6869)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/soa/LabsServices.java	2006-10-17 20:53:19 UTC (rev 6870)
@@ -23,7 +23,10 @@
 package org.jboss.forge.common.soa;
 
 import javax.management.MalformedObjectNameException;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
 
+import org.jboss.forge.common.propertypersistance.PropertyService;
 import org.jboss.forge.common.soa.primates.PrimatesService;
 import org.jboss.mx.util.MBeanProxyExt;
 import org.jboss.mx.util.MBeanServerLocator;
@@ -33,10 +36,18 @@
  */
 
 public class LabsServices {
+
+	private static final String PROP_SERVICE = "PropertyServiceBean/local";
+
 	public static PrimatesService getPrimatesService()
 			throws MalformedObjectNameException {
 
 		return (PrimatesService) MBeanProxyExt.create(PrimatesService.class,
 				PrimatesService.PRIMATES_SERVICE, MBeanServerLocator.locate());
 	}
+	
+	public static PropertyService getPropertyService() throws NamingException {
+		return (PropertyService)(new InitialContext()).lookup(PROP_SERVICE); 
+	}
+	
 }

Modified: labs/jbosslabs/trunk/portal-extensions/forge-login/maven.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-login/maven.xml	2006-10-17 19:55:03 UTC (rev 6869)
+++ labs/jbosslabs/trunk/portal-extensions/forge-login/maven.xml	2006-10-17 20:53:19 UTC (rev 6870)
@@ -12,7 +12,7 @@
     <goal name="clean">
 	<attainGoal name="prj-clean" />
     </goal>
-
+	
     <goal name="build">
     	<attainGoal name="jar" />
     </goal>

Modified: labs/jbosslabs/trunk/portal-extensions/forge-login/project.properties
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-login/project.properties	2006-10-17 19:55:03 UTC (rev 6869)
+++ labs/jbosslabs/trunk/portal-extensions/forge-login/project.properties	2006-10-17 20:53:19 UTC (rev 6870)
@@ -1,3 +1,5 @@
 maven.repo.remote=http://repository.atlassian.com,http://www.ibiblio.org/maven,http://dist.codehaus.org/
 maven.junit.fork=yes
 maven.war.src=${basedir}/src/web
+maven.ejb.includes=**/ejb3/*.class,**/autologin/LoginMemoryService.class
+maven.jar.excludes=**/ejb3/*.class

Modified: labs/jbosslabs/trunk/portal-extensions/forge-login/project.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-login/project.xml	2006-10-17 19:55:03 UTC (rev 6869)
+++ labs/jbosslabs/trunk/portal-extensions/forge-login/project.xml	2006-10-17 20:53:19 UTC (rev 6870)
@@ -50,6 +50,27 @@
 	    <artifactId>forge-common</artifactId>
 	    <version>1.0</version>
 	</dependency>
+	
+	<dependency>
+		<groupId>jboss</groupId>
+		<artifactId>ejb3-persistence</artifactId>
+		<version>3.0RC6</version>
+		<jar>ejb3-persistence.jar</jar>
+        </dependency>
+	<dependency>
+		<groupId>jboss</groupId>
+		<artifactId>jboss-ejb3x</artifactId>
+		<version>3.0RC6</version>
+		<jar>jboss-ejb3x.jar</jar>
+    </dependency>
+    
+    <dependency>
+		<groupId>jboss</groupId>
+		<artifactId>jboss-annotations-ejb3</artifactId>
+		<version>1.0</version>
+		<jar>jboss-annotations-ejb3.jar</jar>
+	</dependency>
+		
 </dependencies>
 
 </project>

Modified: labs/jbosslabs/trunk/portal-extensions/forge-login/src/java/org/jboss/labs/login/LabsLoginModule.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-login/src/java/org/jboss/labs/login/LabsLoginModule.java	2006-10-17 19:55:03 UTC (rev 6869)
+++ labs/jbosslabs/trunk/portal-extensions/forge-login/src/java/org/jboss/labs/login/LabsLoginModule.java	2006-10-17 20:53:19 UTC (rev 6870)
@@ -41,6 +41,8 @@
 import javax.transaction.TransactionManager;
 
 import org.jboss.forge.common.PermissionTools;
+import org.jboss.forge.common.propertypersistance.PropertyService;
+import org.jboss.forge.common.soa.LabsServices;
 import org.jboss.portal.common.transaction.Transactions;
 import org.jboss.portal.core.modules.ModuleConstants;
 import org.jboss.portal.core.modules.ModuleException;
@@ -68,6 +70,12 @@
 
 	protected String jbossDB;
 
+	private static final String PASS_TOKEN = "AutoLoginToken.";
+
+	private static final String TOKENIZER = "<!AutoLoginTokenizer!>";
+
+	private static final String AUTLOGIN_PASSWORD = "Autologin:password";
+
 	public void initialize(Subject subject, CallbackHandler callbackHandler,
 			Map sharedState, Map options) {
 		super.initialize(subject, callbackHandler, sharedState, options);
@@ -97,46 +105,73 @@
 		return userModule;
 	}
 
-	protected boolean validatePassword(String inputPassword, String expectedPassword) {
+	protected boolean validatePassword(String inputPassword,
+			String expectedPassword) {
 		final String inPassword = inputPassword;
-		
+
 		try {
 			TransactionManager tm = (TransactionManager) new InitialContext()
 					.lookup("java:/TransactionManager");
-			Boolean passwordValid = (Boolean) Transactions.required(tm,
-					new Transactions.Runnable() {
-						public Object run() throws Exception {
-							try {
-								UserModule module = getUserModule();
 
+			Boolean passwordValid;
+
+			if (inputPassword.startsWith(PASS_TOKEN)) {
+				
+				log.info("Perforiming autologin");
+				
+				String password = inputPassword.substring(PASS_TOKEN.length());
+				String[] tokens = password.split(TOKENIZER);
+				String ip = tokens[1];
+				String browser = tokens[2];
+				String key = ip + browser + getUsername();
+				String pass = tokens[3];
+
+				PropertyService service = LabsServices.getPropertyService();
+				
+				String persistedPass = (String)service.getProperty(key, AUTLOGIN_PASSWORD);
+				
+				log.info("Ip: " + ip + "Browser: " + browser + "Key: " + key + "Pass: " + pass + "PersPass: " + persistedPass);
+				
+				return pass.equals(persistedPass);
+			} else {
+				passwordValid = (Boolean) Transactions.required(tm,
+						new Transactions.Runnable() {
+							public Object run() throws Exception {
 								try {
-									User user = module
-											.findUserByUserName(getUsername());
-									if (havingRole == null
-											|| PermissionTools.getRoleNames(user).contains(
-													havingRole)) {
-										if (!user.getUserName().equals("admin")) {
-											checkIfPasswordChanged(user);
-											return user.validatePassword(inPassword);
+									UserModule module = getUserModule();
+									try {
+										User user = module
+												.findUserByUserName(getUsername());
+										if (havingRole == null
+												|| PermissionTools
+														.getRoleNames(user)
+														.contains(havingRole)) {
+											if (!user.getUserName().equals(
+													"admin")) {
+												checkIfPasswordChanged(user);
+												return user
+														.validatePassword(inPassword);
+											} else {
+												return user
+														.validatePassword(inPassword);
+											}
+										} else {
+											return false;
 										}
-										else {
-											return user.validatePassword(inPassword);
-										}
-									} else {
-										return false;
+									} catch (NoSuchUserException e) {
+										return lookForNewUser(getRoleModule());
 									}
-								} catch (NoSuchUserException e) {
-									return lookForNewUser(getRoleModule());
+								} catch (Exception e) {
+									throw new LoginException(e.toString());
 								}
-							} catch (Exception e) {
-								throw new LoginException(e.toString());
 							}
-						}
 
-					});
+						});
 
-			// Returning null as password is enough to veto the login
-			return passwordValid;
+				// Returning null as password is enough to veto the login
+				return passwordValid;
+			}
+
 		} catch (Exception e) {
 			return false;
 		}
@@ -156,7 +191,7 @@
 
 	private String checkIfPasswordChanged(User user) throws LoginException {
 		String password = null;
-		
+
 		if (!getUsername().equals("admin")) {
 			/*
 			 * check if password in the main db changed (not for admin account)
@@ -190,8 +225,7 @@
 				log.error("Couldn't connect to nukes database", e);
 				throw new LoginException(e.toString());
 			}
-		}
-		else {
+		} else {
 			// don't execute this for admin
 			return null;
 		}
@@ -266,11 +300,11 @@
 					log.error("Cannot create user " + getUsername(), e);
 
 					throw new LoginException(e.toString());
-				} 
+				}
 
 				if (user != null
-						&& (havingRole == null || PermissionTools.getRoleNames(user).contains(
-								havingRole))) {
+						&& (havingRole == null || PermissionTools.getRoleNames(
+								user).contains(havingRole))) {
 					/*
 					 * User has been just created and it's only in the defaule
 					 * role.
@@ -303,7 +337,8 @@
 								UserModule module = getUserModule();
 								User user = module
 										.findUserByUserName(getUsername());
-								List<String> roleNames = PermissionTools.getRoleNames(user);
+								List<String> roleNames = PermissionTools
+										.getRoleNames(user);
 
 								//
 								Group rolesGroup = new SimpleGroup("Roles");

Modified: labs/jbosslabs/trunk/portal-extensions/forge-login-portlet/src/java/org/jbosslabs/security/filter/Login.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-login-portlet/src/java/org/jbosslabs/security/filter/Login.java	2006-10-17 19:55:03 UTC (rev 6869)
+++ labs/jbosslabs/trunk/portal-extensions/forge-login-portlet/src/java/org/jbosslabs/security/filter/Login.java	2006-10-17 20:53:19 UTC (rev 6870)
@@ -15,6 +15,7 @@
 import javax.servlet.http.HttpServletResponse;
 
 import org.jboss.forge.common.HttpUtils;
+import org.jboss.logging.Logger;
 
 
 
@@ -26,14 +27,18 @@
 {
     private final static String WRONG_REQ_RESP  = "Error accessing the requested resource.";
     
+    private final static Logger log = Logger.getLogger(Login.class);
+    
     public void init(FilterConfig conf) 
     {
         
     }
 
     public void doFilter(ServletRequest request, ServletResponse response,
-            FilterChain chain) throws IOException 
+            FilterChain chain) throws IOException, ServletException 
     { 
+    	
+    	log.info("login filter");
     	try
     	{
 	        if ((request instanceof HttpServletRequest)
@@ -87,6 +92,8 @@
     	{
     		e.printStackTrace();
     	}
+    	
+    	chain.doFilter(request, response);
     }
 
     public void destroy() 

Modified: labs/jbosslabs/trunk/portal-extensions/forge-login-portlet/src/java/org/jbosslabs/security/portlet/Login.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-login-portlet/src/java/org/jbosslabs/security/portlet/Login.java	2006-10-17 19:55:03 UTC (rev 6869)
+++ labs/jbosslabs/trunk/portal-extensions/forge-login-portlet/src/java/org/jbosslabs/security/portlet/Login.java	2006-10-17 20:53:19 UTC (rev 6870)
@@ -37,6 +37,8 @@
 
 	public void processAction(JBossActionRequest req, JBossActionResponse resp) throws PortletException, IOException {
 
+		log.info("process action executed");
+		
 		try
 		{
 			

Modified: labs/jbosslabs/trunk/portal-extensions/forge-login-portlet/src/web/WEB-INF/web.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-login-portlet/src/web/WEB-INF/web.xml	2006-10-17 19:55:03 UTC (rev 6869)
+++ labs/jbosslabs/trunk/portal-extensions/forge-login-portlet/src/web/WEB-INF/web.xml	2006-10-17 20:53:19 UTC (rev 6870)
@@ -3,15 +3,14 @@
    "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">
 <web-app> 
-	<filter>
+	<!-- <filter>
 		<filter-name>loginFilter</filter-name>
 		<filter-class>org.jbosslabs.security.filter.Login</filter-class>
 	</filter>   
 	<filter-mapping>
 		<filter-name>loginFilter</filter-name>
 		<url-pattern>/*</url-pattern>
-		<dispatcher>REQUEST</dispatcher>
-	</filter-mapping>	
+	</filter-mapping> -->
 	
 	<filter>
 		<filter-name>filesFromRepoFilter</filter-name>

Added: labs/jbosslabs/trunk/portal-extensions/forge-portal-attr/src/java/org/jboss/forge/portal/AutologinFilter.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-portal-attr/src/java/org/jboss/forge/portal/AutologinFilter.java	2006-10-17 19:55:03 UTC (rev 6869)
+++ labs/jbosslabs/trunk/portal-extensions/forge-portal-attr/src/java/org/jboss/forge/portal/AutologinFilter.java	2006-10-17 20:53:19 UTC (rev 6870)
@@ -0,0 +1,168 @@
+package org.jboss.forge.portal;
+
+import java.io.IOException;
+import java.util.Random;
+
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.jboss.forge.common.propertypersistance.PropertyService;
+import org.jboss.forge.common.soa.LabsServices;
+import org.jboss.logging.Logger;
+
+public class AutologinFilter implements Filter {
+
+	private static final Logger log = Logger.getLogger(AutologinFilter.class);
+
+	public static final String REQUEST_AUTOLOGIN = "autologinRequest";
+
+	private static final int PASS_LEN = 24;
+
+	private static final String PASS_COOKIE = "labs_auto_password";
+
+	private static final String USER_COOKIE = "labs_auto_username";
+
+	private static final int COOKIE_EXPIRE = 60 * 60 * 24 * 5; // 5 days
+
+	private static final String AUTLOGIN_PASSWORD = "Autologin:password";
+
+	public void destroy() {
+		// TODO Auto-generated method stub
+
+	}
+
+	public void doFilter(ServletRequest request, ServletResponse response,
+			FilterChain chain) throws IOException, ServletException {
+
+		HttpServletRequest httpReq = (HttpServletRequest) request;
+		HttpServletResponse httpResp = (HttpServletResponse) response;
+
+		log.info("doing login");
+		if (httpReq.getUserPrincipal() != null
+				&& httpReq.getSession().getAttribute(REQUEST_AUTOLOGIN) != null
+				&& httpReq.getSession().getAttribute(REQUEST_AUTOLOGIN).equals(
+						true)) {
+
+			log.info("sending cookies");
+
+			httpReq.getSession().removeAttribute(REQUEST_AUTOLOGIN);
+
+			String pass = generatePass();
+
+			Cookie passCookie = new Cookie(PASS_COOKIE, pass);
+			passCookie.setMaxAge(COOKIE_EXPIRE);
+			Cookie userCookie = new Cookie(USER_COOKIE, httpReq
+					.getUserPrincipal().getName());
+			userCookie.setMaxAge(COOKIE_EXPIRE);
+
+			httpResp.addCookie(passCookie);
+			httpResp.addCookie(userCookie);
+
+			saveUserContext(httpReq.getUserPrincipal().getName(), pass, httpReq
+					.getRemoteAddr(), httpReq.getHeader("User-Agent"));
+
+			log.info(httpReq.getUserPrincipal().getName());
+		} else if (httpReq.getUserPrincipal() == null
+				&& !httpReq.getRequestURI().equals("/portal/default/login")) {
+			// user not logged in - try autologin
+
+			log.info("Looking for cookies: " + httpReq.getRequestURI());
+
+			String[] cred;
+
+			if ((cred = hasCookies(httpReq)) != null && cred.length == 2) {
+				String url = httpReq.getContextPath() + "/auth"
+						+ httpReq.getServletPath() + httpReq.getPathInfo();
+				url = httpResp.encodeRedirectURL(url);
+				httpResp.sendRedirect(url);
+				return;
+			}
+		}
+
+		chain.doFilter(request, response);
+
+	}
+
+	public static String[] hasCookies(HttpServletRequest httpReq) {
+		Cookie[] cookies = httpReq.getCookies();
+		String[] cred = new String[2];
+
+		boolean hasUserCookie = false;
+		boolean hasPassCookie = false;
+
+		if (cookies != null)
+			for (int i = 0; i < cookies.length
+					&& !(hasUserCookie && hasPassCookie); i++) {
+				if (cookies[i].getName().equals(USER_COOKIE)) {
+					hasUserCookie = true;
+					cred[0] = cookies[i].getValue();
+				} else if (cookies[i].getName().equals(PASS_COOKIE)) {
+					hasPassCookie = true;
+					cred[1] = cookies[i].getValue();
+				}
+			}
+
+		if (hasUserCookie && hasPassCookie) {
+			return cred;
+		} else {
+			return null;
+		}
+	}
+
+	public void init(FilterConfig config) throws ServletException {
+		// TODO Auto-generated method stub
+
+	}
+
+	private String generatePass() {
+		String pass = "";
+
+		Random random = new Random();
+
+		for (int i = 0; i < PASS_LEN; i++) {
+			pass += (char) (65 + random.nextInt(122 - 65));
+		}
+
+		return pass;
+	}
+
+	private void saveUserContext(String username, String password, String ip,
+			String browser) {
+		try {
+			PropertyService propertyService = LabsServices.getPropertyService();
+
+			String id = ip + browser + username;
+
+			propertyService.setProperty(id, AUTLOGIN_PASSWORD, password);
+
+			log.info("Saved: " + username + " " + password + " " + ip + " "
+					+ browser);
+
+		} catch (NamingException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+	}
+
+	public static void clearCookies(HttpServletRequest request, HttpServletResponse response) {
+		Cookie[] cookies = request.getCookies();
+		
+		if (cookies != null)
+			for (int i = 0; i < cookies.length; i++) {
+				if (cookies[i].getName().equals(USER_COOKIE) || cookies[i].getName().equals(PASS_COOKIE)) {
+					cookies[i].setMaxAge(0);
+					response.addCookie(cookies[i]);
+				}
+			}
+	}
+
+}

Added: labs/jbosslabs/trunk/portal-extensions/forge-portal-attr/src/java/org/jboss/forge/portal/LoginServlet.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-portal-attr/src/java/org/jboss/forge/portal/LoginServlet.java	2006-10-17 19:55:03 UTC (rev 6869)
+++ labs/jbosslabs/trunk/portal-extensions/forge-portal-attr/src/java/org/jboss/forge/portal/LoginServlet.java	2006-10-17 20:53:19 UTC (rev 6870)
@@ -0,0 +1,42 @@
+package org.jboss.forge.portal;
+
+import java.io.IOException;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.jboss.logging.Logger;
+
+public class LoginServlet extends HttpServlet {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	private static final String AUTOLOGIN_NAME = "autologin";
+
+	private static final Logger log = Logger.getLogger(LoginServlet.class);
+	
+	protected void doPost(HttpServletRequest request,
+			HttpServletResponse response) throws ServletException, IOException {
+
+		// if Remember me ticked - set autlogin cookies
+		if (request.getParameter(AUTOLOGIN_NAME) != null
+				&& request.getParameter(AUTOLOGIN_NAME).equals("Remember me")) {
+			log.debug("Autologin enabled");
+			request.getSession().setAttribute(
+					AutologinFilter.REQUEST_AUTOLOGIN, true);
+		}
+		else {
+			log.debug("autologin disabled");
+		}
+
+		response.sendRedirect("j_security_check?j_username="
+				+ request.getParameter("j_username") + "&j_password="
+				+ request.getParameter("j_password"));
+	}
+
+}

Added: labs/jbosslabs/trunk/portal-extensions/forge-portal-attr/src/java/org/jboss/forge/portal/PerformLoginFilter.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-portal-attr/src/java/org/jboss/forge/portal/PerformLoginFilter.java	2006-10-17 19:55:03 UTC (rev 6869)
+++ labs/jbosslabs/trunk/portal-extensions/forge-portal-attr/src/java/org/jboss/forge/portal/PerformLoginFilter.java	2006-10-17 20:53:19 UTC (rev 6870)
@@ -0,0 +1,63 @@
+package org.jboss.forge.portal;
+
+import java.io.IOException;
+
+import javax.management.remote.JMXConnector;
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.jboss.logging.Logger;
+
+public class PerformLoginFilter implements Filter {
+	private static final String PASS_TOKEN = "AutoLoginToken.";
+
+	private static final String TOKENIZER = "<!AutoLoginTokenizer!>";
+
+	private static final Logger log = Logger
+			.getLogger(PerformLoginFilter.class);
+
+	public void destroy() {
+		// TODO Auto-generated method stub
+
+	}
+
+	public void doFilter(ServletRequest request, ServletResponse response,
+			FilterChain chain) throws IOException, ServletException {
+
+		HttpServletRequest httpReq = (HttpServletRequest) request;
+		HttpServletResponse httpResp = (HttpServletResponse) response;
+
+		log.info("username: (" + httpReq.getRequestedSessionId() + ") "
+				+ httpReq.getSession().getAttribute("j_username"));
+		log
+				.info("password: "
+						+ httpReq.getSession().getAttribute("j_password"));
+
+		String[] cred;
+		if (httpReq.getRequestURI().contains("/login")
+				&& (cred = AutologinFilter.hasCookies(httpReq)) != null
+				&& cred.length == 2) {
+			httpResp.sendRedirect("j_security_check?j_username=" + cred[0]
+					+ "&j_password=" + PASS_TOKEN + TOKENIZER
+					+ httpReq.getRemoteAddr() + TOKENIZER
+					+ httpReq.getHeader("User-Agent") + TOKENIZER + cred[1]);
+			return;
+
+		}
+
+		chain.doFilter(request, response);
+
+	}
+
+	public void init(FilterConfig arg0) throws ServletException {
+		// TODO Auto-generated method stub
+
+	}
+
+}

Added: labs/jbosslabs/trunk/portal-extensions/forge-portal-attr/src/java/org/jboss/forge/portal/ShowLoginPageServlet.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-portal-attr/src/java/org/jboss/forge/portal/ShowLoginPageServlet.java	2006-10-17 19:55:03 UTC (rev 6869)
+++ labs/jbosslabs/trunk/portal-extensions/forge-portal-attr/src/java/org/jboss/forge/portal/ShowLoginPageServlet.java	2006-10-17 20:53:19 UTC (rev 6870)
@@ -0,0 +1,51 @@
+package org.jboss.forge.portal;
+
+import java.io.IOException;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+public class ShowLoginPageServlet extends HttpServlet {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	private static final String PASS_TOKEN = "AutoLoginToken.";
+
+	private static final String TOKENIZER = "<!AutoLoginTokenizer!>";
+
+	protected void doGet(HttpServletRequest request,
+			HttpServletResponse response) throws ServletException, IOException {
+
+		if (request.getRequestURI().endsWith("/logout")) {
+			AutologinFilter.clearCookies(request, response);
+			
+			response.sendRedirect("/portal/auth/portal/default/login/LoginWindow?action=1&logout=true");
+			
+			return;
+		} else {
+			String[] cred;
+
+			if ((cred = AutologinFilter.hasCookies(request)) != null
+					&& cred.length == 2) {
+				response
+						.sendRedirect("j_security_check?j_username=" + cred[0]
+								+ "&j_password=" + PASS_TOKEN + TOKENIZER
+								+ request.getRemoteAddr() + TOKENIZER
+								+ request.getHeader("User-Agent") + TOKENIZER
+								+ cred[1]);
+				return;
+
+			} else {
+				response.sendRedirect("/portal/login");
+				return;
+			}
+		}
+
+	}
+
+}

Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/InsidePluginExcecutor.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/InsidePluginExcecutor.java	2006-10-17 19:55:03 UTC (rev 6869)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/InsidePluginExcecutor.java	2006-10-17 20:53:19 UTC (rev 6870)
@@ -80,10 +80,12 @@
 	private WikiInsidePlugin loadObject(String className)
 			throws InstantiationException, IllegalAccessException,
 			ClassNotFoundException {
-		WikiInsidePlugin wikiInsidePlugin =  (WikiInsidePlugin) Class.forName(className).newInstance();
-		
+		WikiInsidePlugin wikiInsidePlugin = (WikiInsidePlugin) Thread
+				.currentThread().getContextClassLoader().loadClass(className)
+				.newInstance();
+
 		wikiInsidePlugin.setWikiEngine(wikiEngine);
-		
+
 		return wikiInsidePlugin;
 	}
 
@@ -94,11 +96,11 @@
 		// "\\{[\\w]+([\\s]+[\\w]+='[\\d\\w\\s]+')*\\s*\\}"
 
 		String localPluginLink = pluginLink;
-		
+
 		WikiInsidePlugin plugin = null;
 
-		log.debug("executing plugin: "+pluginLink);
-		
+		log.debug("executing plugin: " + pluginLink);
+
 		if (!localPluginLink.matches(insidePluginRegex)) {
 			// this is not a proper inside plugin link
 
@@ -110,11 +112,13 @@
 
 		if (plugin != null) {
 			HashMap<String, String> attributes = extractAttribs(localPluginLink);
-			
-			return (plugin.processContent() ? HTMLTranslatorParts.pagePartRegexStart : "") + plugin.process(wikiPage, wikiSession,
-					attributes) + (plugin.processContent() ? HTMLTranslatorParts.pagePartRegexEnd : "");
-		}
-		else
+
+			return (plugin.processContent() ? HTMLTranslatorParts.pagePartRegexStart
+					: "")
+					+ plugin.process(wikiPage, wikiSession, attributes)
+					+ (plugin.processContent() ? HTMLTranslatorParts.pagePartRegexEnd
+							: "");
+		} else
 			return "''INSIDE PLUGIN ERROR: There is no plugin: " + pluginLink
 					+ "''";
 
@@ -125,7 +129,7 @@
 
 		if (pluginDef.startsWith("{"))
 			pluginDef = pluginDef.substring(1);
-		
+
 		pluginDef = pluginDef.trim();
 
 		if (pluginDef.startsWith("INSERT")) {
@@ -135,13 +139,14 @@
 		pluginDef = pluginDef.trim();
 
 		int spacePos = pluginDef.indexOf(" ");
-		
-		String className = pluginDef.substring(0, (spacePos != -1) ? spacePos : pluginDef.indexOf("}"));
 
+		String className = pluginDef.substring(0, (spacePos != -1) ? spacePos
+				: pluginDef.indexOf("}"));
+
 		pluginDef = pluginDef.substring(className.length()).trim();
 
-		log.debug("Plugin name: "+className);
-		
+		log.debug("Plugin name: " + className);
+
 		if (className.indexOf('.') != -1) {
 			// full class name
 			try {
@@ -163,7 +168,7 @@
 	}
 
 	private HashMap<String, String> extractAttribs(String pluginDef) {
-		
+
 		HashMap<String, String> attributes = new HashMap<String, String>();
 
 		Matcher matcher = Pattern.compile(attribType1).matcher(pluginDef);
@@ -173,7 +178,7 @@
 
 			getAttrib1(attrib.trim(), attributes);
 		}
-		
+
 		matcher = Pattern.compile(attribType2).matcher(pluginDef);
 
 		while (matcher.find()) {
@@ -184,25 +189,27 @@
 
 		return attributes;
 	}
-	
-	private void getAttrib1(String attrib, HashMap<String,String> attributes) {
+
+	private void getAttrib1(String attrib, HashMap<String, String> attributes) {
 		// digits or true/false
 		String attribName = attrib.substring(0, attrib.indexOf("="));
-		String attribValue = attrib.substring(attrib.indexOf("=")+1, attrib.length());
-		
+		String attribValue = attrib.substring(attrib.indexOf("=") + 1, attrib
+				.length());
+
 		attributes.put(attribName, attribValue);
-		
-		log.debug("new attribute: "+attribName+" "+attribValue);
+
+		log.debug("new attribute: " + attribName + " " + attribValue);
 	}
-	
-	private void getAttrib2(String attrib, HashMap<String,String> attributes) {
+
+	private void getAttrib2(String attrib, HashMap<String, String> attributes) {
 		// string, digits ... also special characters (\' = ')
-		
+
 		String attribName = attrib.substring(0, attrib.indexOf("="));
-		String attribValue = attrib.substring(attrib.indexOf('\'')+1, attrib.length()-1).replaceAll("\\\\'", "'");
-		
+		String attribValue = attrib.substring(attrib.indexOf('\'') + 1,
+				attrib.length() - 1).replaceAll("\\\\'", "'");
+
 		attributes.put(attribName, attribValue);
-		
-		log.debug("new attribute: "+attribName+" "+attribValue);
+
+		log.debug("new attribute: " + attribName + " " + attribValue);
 	}
 }

Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiEngine.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiEngine.java	2006-10-17 19:55:03 UTC (rev 6869)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiEngine.java	2006-10-17 20:53:19 UTC (rev 6870)
@@ -378,8 +378,10 @@
 		// LOAD data sources
 		if (jbosswikiprops.getProperty("mediaDataSourceClass") != null) {
 			try {
-				mediaDataSource = (MediaDataSource) Class.forName(
-						jbosswikiprops.getProperty("mediaDataSourceClass"))
+				mediaDataSource = (MediaDataSource) Thread.currentThread()
+						.getContextClassLoader().loadClass(
+								jbosswikiprops
+										.getProperty("mediaDataSourceClass"))
 						.newInstance();
 			} catch (InstantiationException e) {
 				log.error(e);
@@ -418,8 +420,12 @@
 
 		if (jbosswikiprops.getProperty("wikiPageDictionaryClass") != null) {
 			try {
-				wikiPageDictionary = (WikiPageDictionary) Class.forName(
-						jbosswikiprops.getProperty("wikiPageDictionaryClass"))
+				wikiPageDictionary = (WikiPageDictionary) Thread
+						.currentThread()
+						.getContextClassLoader()
+						.loadClass(
+								jbosswikiprops
+										.getProperty("wikiPageDictionaryClass"))
 						.newInstance();
 			} catch (InstantiationException e) {
 				log.error(e);
@@ -448,8 +454,9 @@
 		// load credential class
 		if (jbosswikiprops.getProperty("credentialsClass") != null) {
 			try {
-				credentialsClass = Class.forName(jbosswikiprops
-						.getProperty("credentialsClass"));
+				credentialsClass = Thread.currentThread()
+						.getContextClassLoader().loadClass(
+								jbosswikiprops.getProperty("credentialsClass"));
 			} catch (ClassNotFoundException e) {
 				log.error("Coudln't load credentials class.", e);
 			}
@@ -1055,8 +1062,10 @@
 		// LOAD data sources
 		if (jbosswikiprops.getProperty("mediaDataSourceClass") != null) {
 			try {
-				newMDS = (MediaDataSource) Class.forName(
-						jbosswikiprops.getProperty("mediaDataSourceClass"))
+				newMDS = (MediaDataSource) Thread.currentThread()
+						.getContextClassLoader().loadClass(
+								jbosswikiprops
+										.getProperty("mediaDataSourceClass"))
 						.newInstance();
 			} catch (InstantiationException e) {
 				log.error(e);
@@ -1099,8 +1108,12 @@
 
 		if (jbosswikiprops.getProperty("wikiPageDictionaryClass") != null) {
 			try {
-				newWPD = (WikiPageDictionary) Class.forName(
-						jbosswikiprops.getProperty("wikiPageDictionaryClass"))
+				newWPD = (WikiPageDictionary) Thread
+						.currentThread()
+						.getContextClassLoader()
+						.loadClass(
+								jbosswikiprops
+										.getProperty("wikiPageDictionaryClass"))
 						.newInstance();
 			} catch (InstantiationException e) {
 				log.error(e);

Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiType.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiType.java	2006-10-17 19:55:03 UTC (rev 6869)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiType.java	2006-10-17 20:53:19 UTC (rev 6870)
@@ -58,7 +58,7 @@
 		WikiPlugin plugin = null;
 
 		try {
-			plugin = (WikiPlugin) Class.forName(pluginClass).newInstance();
+			plugin = (WikiPlugin) Thread.currentThread().getContextClassLoader().loadClass(pluginClass).newInstance();
 		} catch (Exception e) {
 			log.error("Error while loading plugin: " + pluginName
 					+ "\nclass: " + pluginClass + "\n" + e);

Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiTypeLoader.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiTypeLoader.java	2006-10-17 19:55:03 UTC (rev 6869)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiTypeLoader.java	2006-10-17 20:53:19 UTC (rev 6870)
@@ -16,77 +16,81 @@
 import org.xml.sax.SAXException;
 
 public class WikiTypeLoader {
-	
+
 	private WikiEngine wikiEngine;
-	
+
 	private Logger log = Logger.getLogger(this.getClass());
-	
+
 	public WikiTypeLoader(WikiEngine wikiEngine) {
 		this.wikiEngine = wikiEngine;
 	}
-	
-	public void parse(InputStream xmlFile) throws ParserConfigurationException, SAXException, IOException, DOMException, InstantiationException, IllegalAccessException, ClassNotFoundException {
-		DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
-		
+
+	public void parse(InputStream xmlFile) throws ParserConfigurationException,
+			SAXException, IOException, DOMException, InstantiationException,
+			IllegalAccessException, ClassNotFoundException {
+		DocumentBuilder db = DocumentBuilderFactory.newInstance()
+				.newDocumentBuilder();
+
 		Document doc = db.parse(xmlFile);
-		
+
 		NodeList wikiTypes = doc.getElementsByTagName("wikiType");
-		
+
 		for (int i = 0; i < wikiTypes.getLength(); i++) {
 			WikiType wikiType = null;
-			
+
 			String wikiTypeName = null;
-			
+
 			Node wikiTypeNode = wikiTypes.item(i);
-			
+
 			NodeList wikiTypeElements = wikiTypeNode.getChildNodes();
-			
+
 			for (int j = 0; j < wikiTypeElements.getLength(); j++) {
-				
-				Node elem = wikiTypeElements.item(j); 
-				
+
+				Node elem = wikiTypeElements.item(j);
+
 				if (elem.getNodeName().equals("name")) {
 					if (wikiType != null)
 						wikiType.setName(unmarshallText(elem));
 					else
 						wikiTypeName = unmarshallText(elem);
-				}
-				else if (elem.getNodeName().equals("class")) {
-					wikiType = (WikiType)Class.forName(unmarshallText(elem)).newInstance();
+				} else if (elem.getNodeName().equals("class")) {
+					wikiType = (WikiType) Thread.currentThread()
+							.getContextClassLoader().loadClass(
+									unmarshallText(elem)).newInstance();
 					wikiType.setWikiEngine(wikiEngine);
-					
+
 					if (wikiTypeName != null)
 						wikiType.setName(wikiTypeName);
-				}
-				else if (elem.getNodeName().equals("plugin")) {
+				} else if (elem.getNodeName().equals("plugin")) {
 					NodeList pluginElems = elem.getChildNodes();
-					
+
 					String pluginName = null;
 					String pluginClass = null;
-					
+
 					for (int k = 0; k < pluginElems.getLength(); k++) {
 						Node pluginElem = pluginElems.item(k);
-						
+
 						if (pluginElem.getNodeName().equals("name")) {
 							pluginName = unmarshallText(pluginElem);
-						}
-						else if (pluginElem.getNodeName().equals("class")) {
+						} else if (pluginElem.getNodeName().equals("class")) {
 							pluginClass = unmarshallText(pluginElem);
 						}
 					}
-					
+
 					if (pluginName != null && pluginClass != null)
 						wikiType.addPlugin(pluginName, pluginClass);
 					else
-						log.error("Cannot read plugin: name: "+pluginName+" class: "+pluginClass+" in WikiType: "+wikiType.getName());
+						log.error("Cannot read plugin: name: " + pluginName
+								+ " class: " + pluginClass + " in WikiType: "
+								+ wikiType.getName());
 				}
 			}
-			
+
 			wikiEngine.addWikiType(wikiType.getName(), wikiType);
-			log.info("Added WikiType: "+wikiType.getName());
+			log.info("Added WikiType: " + wikiType.getName());
 		}
 	}
-	
+
 	private String unmarshallText(Node textNode) {
 		StringBuffer buf = new StringBuffer();
 

Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-management/src/java/org/jboss/wiki/EMailNotifierSLSB.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-management/src/java/org/jboss/wiki/EMailNotifierSLSB.java	2006-10-17 19:55:03 UTC (rev 6869)
+++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-management/src/java/org/jboss/wiki/EMailNotifierSLSB.java	2006-10-17 20:53:19 UTC (rev 6870)
@@ -53,7 +53,7 @@
 
 					buffer
 							.append(
-									"This message is generated automaticcaly. Please do not reply. To remove yourself from the watch list please go to ")
+									"This message is generated automatically. Please do not reply. To remove yourself from the watch list please go to ")
 							.append(notifications.getPageLink()).append(
 									"<br />\n");
 					buffer.append(notifications.getPageContent());




More information about the jboss-svn-commits mailing list