Hi I am new to this jboss-portal, Currently I am working on migrating already existing portal developed with jboss-portal2.4 to jboss-portal2.6.1.
My portal is using a custom login module which extends IdentityLoginModule, as lot of changes happend to the Jboss portal Identity api in jboss-portal2.6.1 , I changed the existing code with the new api changes. This is My Code public class SsoLoginModule extends IdentityLoginModule { private static final Logger logger = Logger.getLogger(SsoLoginModule.class); private static final String DEFAULT_USER_ROLE = "User"; private static final String JNDI_TRANS_MGR = "java:/TransactionManager"; private static final String POLICY_CONTEXT_HTTP_SERVLET = "javax.servlet.http.HttpServletRequest"; private static final String OPTION_NAME_DEFAULT_ROLE = "defaultRole"; private static final String OPTION_NAME_ROLE_MOD_JNDI = "roleModuleJNDIName"; // public static final short UNDEFINED_TIMEZONE = (short)0; protected String defaultRoleForNewUser = DEFAULT_USER_ROLE; protected String userModuleJNDIName; protected String roleModuleJNDIName; protected String userProfileModuleJNDIName; protected String membershipModuleJNDIName; private UserModule userModule; private RoleModule roleModule; private UserProfileModule userProfileModule; private MembershipModule membershipModule; private Transaction transaction; private SessionFactory identitySessionFactory; private boolean success = false; private Session session; /** * Initialize the login module. * @param subject Authentication subject * @param callbackHandler Callback handler for the login module * @param sharedState Shared State Map * @param options Configuration options of the login module */ public void initialize(Subject subject, CallbackHandler callbackHandler, Map sharedState, Map options) { super.initialize(subject, callbackHandler, sharedState, options); logger.info("Initializing login module."); String specifiedDefaultRole=(String)options.get(OPTION_NAME_DEFAULT_ROLE); if (!isNullOrEmpty(specifiedDefaultRole)) { defaultRoleForNewUser = specifiedDefaultRole; } userModuleJNDIName = (String) options.get("userModuleJNDIName"); roleModuleJNDIName = (String) options.get("roleModuleJNDIName"); userProfileModuleJNDIName = (String) options .get("userProfileModuleJNDIName"); membershipModuleJNDIName = (String) options .get("membershipModuleJNDIName"); logger.info("User module JNDI = "+userModuleJNDIName); logger.info("Role module JNDI = "+roleModuleJNDIName); logger.info("UserProfile module JNDI = "+userProfileModuleJNDIName); logger.info("Membership module JNDI = "+membershipModuleJNDIName); logger.info("Exit Initialize()"); } /** * Perform log in process. */ public boolean login() throws LoginException { logger.info("Inside login."); createUserIfNew(); logger.info("About to exit login()."); return super.login(); } /** * Create user if user does not exist. */ protected void createUserIfNew() throws LoginException { try { logger.info("Inside createUserIfNew."); TransactionManager tm = (TransactionManager) new InitialContext().lookup(JNDI_TRANS_MGR); Transactions.required(tm, new Transactions.Runnable() { public Object run() throws Exception { String username = null; User user = null; try { username = (getUsernameAndPassword())[0]; logger.info("Username = " + username); logger.info("Before getting user from UserModule."); try{ user = getUserModule().findUserByUserName(username); }catch(NullPointerException ne){ // in case module implementation doesn't throw proper // exception... if (user == null) { throw new NoSuchUserException("UserModule returned null user object"); } } logger.info("User ID in the table jbp_users ="+user.getId().toString()); fillContextWithUserProfile(getUserProfileModule(), user); return null; } catch(NoSuchUserException nsue) { try{ // User not found, let's create it logger.info("Create new user " + username); // HttpServletRequest request = getHttpServletRequest(); HttpServletRequest request = getHttpServletRequest(); logger.info(request.getHeader(Constant.SSO_UID)+","+ request.getHeader(Constant.SSO_GESSOUID)); logger.info("Just about to create User"); //identitySessionFactory = (SessionFactory)new InitialContext().lookup("java:/portal/IdentitySessionFactory"); //session = identitySessionFactory.openSession(); //transaction = session.beginTransaction(); user = userModule.createUser( request.getHeader(Constant.SSO_UID),"Pa55word"); // request.getHeader(Constant.SSO_EMAIL)); logger.info("User object is ="+user); logger.info("User created successfully"); if(null == userProfileModule) { userProfileModule = getUserProfileModule(); } fillContextWithUserProfile(userProfileModule, user); Set roleSet = new HashSet(); Role role = getRoleModule().findRoleByName(defaultRoleForNewUser); if (role != null) { roleSet.add(role); getMembershipModule().assignRoles(user, roleSet); } } catch (IllegalArgumentException e) { logger.error("Cannot create user " + username, e); } catch(IdentityException ie){ logger.error("Cannot create user " + username, ie); } return null; } catch (Exception e) { e.printStackTrace(); throw new LoginException("Error in find/create user: " + e.getMessage()); } } }); } catch (Exception e) { Throwable cause = e.getCause(); e.printStackTrace(); throw new LoginException(cause.toString()); } logger.info("Exit CreateUserIfNew()"); } protected UserModule getUserModule() throws NamingException { logger.info("Enter getUserModule()"); if (userModule == null) { userModule = (UserModule)new InitialContext().lookup(userModuleJNDIName); } logger.info("Exit getUserModule()"); return userModule; } protected RoleModule getRoleModule() throws NamingException { logger.info("Enter getRoleModule()"); if (roleModule == null) { roleModule = (RoleModule)new InitialContext().lookup(roleModuleJNDIName); } logger.info("Enter getRoleModule()"); return roleModule; } protected UserProfileModule getUserProfileModule() throws NamingException { logger.info("Enter getUserProfileModule()"); if (userProfileModule == null) { userProfileModule = (UserProfileModule) new InitialContext() .lookup(userProfileModuleJNDIName); } logger.info("Enter getUserProfileModule()"); return userProfileModule; } protected MembershipModule getMembershipModule() throws NamingException { logger.info("Enter getMembershipModule()"); if (membershipModule == null) { membershipModule = (MembershipModule)new InitialContext().lookup(membershipModuleJNDIName); } logger.info("Enter getMemgershipModule()"); return membershipModule; } /** * Validate if password is valid. Always return true. * @param inputPassword Input password * @param expectedPassword Expected password * @return true */ protected boolean validatePassword(String inputPassword, String expectedPassword) { logger.info("returning from validatePassword."); boolean b = super.validatePassword(inputPassword, expectedPassword); logger.info("Login OK?="+b); return true; } /** * Get the current HTTP request object. * @return current HttpServletRequest object * @throws PolicyContextException if error in retrieving the request object */ protected HttpServletRequest getHttpServletRequest() throws PolicyContextException { return (HttpServletRequest) PolicyContext.getContext(POLICY_CONTEXT_HTTP_SERVLET); } /** * Check if a String is null, or empty. * @param string String to be checked */ protected static boolean isNullOrEmpty(String string) { if (string == null || "".equals(string.trim())) { return true; } return false; } private void fillContextWithUserProfile(UserProfileModule userProfile, User user) throws Exception { logger.info("Enter fillContextWithUserProfile()"); HttpServletRequest request = getHttpServletRequest(); DelegateContext ctx = new DelegateContext(); ctx.put("userid", user.getId().toString()); ctx.put("GIVENNAME", request.getHeader(Constant.SSO_FIRST_NAME)); ctx.put("FAMILYNAME", request.getHeader(Constant.SSO_LAST_NAME)); ctx.put("REALEMAIL", request.getHeader(Constant.SSO_EMAIL)); ctx.put("LOCATION", request.getHeader(Constant.SSO_COUNTRY)); Locale locale = request.getLocale(); LocalizedString localizedString = new LocalizedString(locale); logger.info("###########The Locale Value is --------------------> " + localizedString.getString(locale,true)); if ( null != localizedString.getString(locale,true)){ putNonEmptyProperty(userProfile, user, User.INFO_USER_LOCALE, localizedString.getString(locale,true)); } putNonEmptyProperty(userProfile, user, Constant.INFO_USER_TIME_ZONE_OFFSET, Constant.DEFAULT_TIME_ZONE); logger.info ("Exit fillContextWithUserProfile()"); } /** * Add key value pairs properties into User object. * @param user User object * @param key Key of property * @param value Value of property */ private void putNonEmptyProperty(UserProfileModule userProfileModule, User user, String key, String value) { logger.info("Enter putNonEmptyProperty()"); if ((value != null) && (value.trim().length() != 0)) { try{ userProfileModule.setProperty(user, key, value); }catch(IdentityException Ie){ Ie.printStackTrace(); } } logger.info("Exit putNonEmptyProperty()"); } } // end of class I am getting these log messages when i tried to login to the portal Initializing login module. User module JNDI = java:/portal/UserModule Role module JNDI = java:/portal/RoleModule UserProfile module JNDI = java:/portal/UserProfileModule Membership module JNDI = java:/portal/MembershipModule Exit Initialize() Inside login. Inside createUserIfNew. Username = 501157612 Before getting user from UserModule. Enter getUserModule() Exit getUserModule() Create new user 501157612 501157612,80C398B9-8DE3-163B-AC22-0003BA1BAD40 Just about to create User org.jboss.portal.common.transaction.NestedException: java.lang.NullPointerException at org.jboss.portal.common.transaction.Transactions.apply(Transactions.java:253) at org.jboss.portal.common.transaction.Transactions.required(Transactions.java:289) at com.ge.health.jboss.portal.security.jaas.SsoLoginModule.createUserIfNew(Unknown Source) I knew nothing about this exception, I was not able to move further, can any one help me to sortout this issue. View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4088383#4088383 Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4088383 _______________________________________________ jboss-user mailing list jboss-user@lists.jboss.org https://lists.jboss.org/mailman/listinfo/jboss-user