private void deletePassword(Password password) {
   try {
     pm.delete(password);
   } catch (PersistenceManagerException e) {
     _log.error("Unable to delete password", e);
   }
 }
  /**
   * Loads collection of portlets from portlet descriptor file using the associated <code>
   * ServletContext</code>
   *
   * @param ctx the <code>ServletContext</code>
   */
  protected void loadPortlets(ServletContext ctx, ClassLoader loader) throws PortletException {

    // First we see if this is a gridsphere portlet descriptor and load in as gridsphere-portlet.xml
    log.info("Loading gridsphere-portlet.xml...");
    String gsportletXMLfile = ctx.getRealPath("/WEB-INF/gridsphere-portlet.xml");
    File gs = new File(gsportletXMLfile);

    String portletXMLfile = ctx.getRealPath("/WEB-INF/portlet.xml");
    File jsr = new File(portletXMLfile);

    if (gs.exists() && jsr.exists()) {
      isJSR = true;
    }

    if (!gs.exists()) {
      // trying
      log.info("Instead loading portlet.xml as a gridsphere portlet descriptor...");
      gsportletXMLfile = portletXMLfile;
    }
    // String portletMappingFile =
    // GridSphereConfig.getProperty(GridSphereConfigProperties.PORTLET_MAPPING);

    String portletMappingFile =
        GridSphereConfig.getServletContext().getRealPath("/WEB-INF/mapping/portlet-mapping.xml");
    pdd = null;
    try {
      pdd = new PortletDeploymentDescriptor(gsportletXMLfile, portletMappingFile);
    } catch (Exception e) {
      log.error("Mapping Error! " + webApplicationName, e);
      throw new PortletException(
          "Unable to load portlets from: " + webApplicationName + " + due to mapping error!");
    }
    // Every SportletDefinition has a PortletApplication and possibly multiple
    // ConcretePortletConfig's
    Iterator portletDefs = pdd.getPortletDefinitionList().iterator();

    // Iterate thru portlet definitions for portlet applications
    while (portletDefs.hasNext()) {
      SportletDefinition portletDef = (SportletDefinition) portletDefs.next();
      ApplicationPortlet portletApp =
          new ApplicationPortletImpl(pdd, portletDef, webApplicationName, ctx);
      String portletAppID = portletApp.getApplicationPortletID();
      appPortlets.put(portletAppID, portletApp);
    }
  }
  /**
   * Constructs an instance of a PortletWebApplicationImpl from a supplied ui application name and
   * corresponding <code>ServletContext</code>
   *
   * @param webApplicationName the the web application name
   * @param context the <code>ServletContext</code>
   */
  public PortletWebApplicationImpl(String webApplicationName, ServletContext context)
      throws PortletException {
    super(context);
    this.webApplicationName = webApplicationName;
    // get the servlet context for the coreportlets webapp
    String contextURIPath;
    if (webApplicationName.startsWith("/")) {
      contextURIPath = webApplicationName;
      this.webApplicationName = webApplicationName.substring(1);
    } else {
      contextURIPath = "/" + webApplicationName;
    }

    // Get the cross context servlet context
    ServletContext ctx = context.getContext(contextURIPath);
    // System.err.println("contextURIPath: " + contextURIPath);
    // System.err.println("contextName: " + ctx.getServletContextName());
    // System.err.println("context path: " + ctx.getRealPath(""));

    // System.err.println("testing example portlets");
    // ServletContext testsc = context.getContext("/exampleportlets");
    // System.err.println("description: " + ctx.getServletContextName());
    // System.err.println("testing core portlets");
    // testsc = context.getContext("/coreportlets");
    // System.err.println("description: " + testsc.getServletContextName());
    // System.err.println("context path: " + te.getRealPath(""));

    if (ctx == null) {
      log.error(webApplicationName + ": Unable to get ServletContext for: " + contextURIPath);
      throw new PortletException(
          webApplicationName + ": Unable to get ServletContext for: " + contextURIPath);
    }
    log.debug("context path: " + ctx.getRealPath(""));
    this.webAppDescription = ctx.getServletContextName();

    // load portlet.xml
    loadPortlets(ctx, Thread.currentThread().getContextClassLoader());
    // load services xml
    if (!isJSR) loadServices(ctx, Thread.currentThread().getContextClassLoader());
    // load roles.xml
    if (!isJSR) loadRoles(ctx);
    // load group.xml (and if found load layout.xml)
    if (!isJSR) loadGroup(ctx);
  }
 public void saveHashedPassword(Password editor) {
   try {
     if (editor instanceof PasswordImpl) {
       PasswordImpl pass = (PasswordImpl) editor;
       pm.saveOrUpdate(pass);
     }
   } catch (PersistenceManagerException e) {
     _log.error("Unable to create or update password for user", e);
   }
 }
 public String getHashedPassword(String pass) {
   try {
     MessageDigest md5 = MessageDigest.getInstance("MD5");
     md5.update(pass.getBytes());
     return toHex(md5.digest());
   } catch (NoSuchAlgorithmException e) {
     _log.error("NoSuchAlgorithm MD5!", e);
   }
   return null;
 }
  public void validateSuppliedPassword(User user, String value) throws InvalidPasswordException {
    PasswordImpl password = getPasswordImpl(user);
    if (password == null) {
      _log.debug("No password found for user");
      throw new InvalidPasswordException("No password found for user!");
    }
    // _log.debug("Stored value is " + password.getValue());
    // _log.debug("Provided value is " + value);

    // MD5 hash of password value
    try {
      MessageDigest md5 = MessageDigest.getInstance("MD5");
      md5.update(value.getBytes());
      value = toHex(md5.digest());

      // _log.debug("Hash of value is " + value);
      if (!password.getValue().equals(value)) {
        throw new InvalidPasswordException("Supplied password does not match user password!");
      }
    } catch (NoSuchAlgorithmException e) {
      _log.error("No such algorithm: MD5", e);
    }
  }
 /**
  * This method returns the <code>PasswordImpl</code> associated with a user and is called
  * internally by other methods in this class.
  */
 private PasswordImpl getPasswordImpl(User user) {
   PasswordImpl password = null;
   String query =
       "select pw from "
           + this.userPasswordImpl
           + " pw where pw.sportletUser.oid='"
           + user.getID()
           + "'";
   try {
     password = (PasswordImpl) pm.restore(query);
   } catch (PersistenceManagerException e) {
     _log.error("Unable to retrieve password for user", e);
   }
   return password;
 }
 public void savePassword(Password editor) {
   try {
     if (editor instanceof PasswordImpl) {
       PasswordImpl pass = (PasswordImpl) editor;
       try {
         MessageDigest md5 = MessageDigest.getInstance("MD5");
         md5.update(pass.getValue().getBytes());
         String value = toHex(md5.digest());
         pass.setValue(value);
       } catch (NoSuchAlgorithmException e) {
         throw new PersistenceManagerException("Can't get MD5 algorithm! " + e.getMessage());
       }
       pm.saveOrUpdate(pass);
     }
   } catch (PersistenceManagerException e) {
     _log.error("Unable to create or update password for user", e);
   }
 }