Index: PasswordParameterDefinition.java
===================================================================
--- PasswordParameterDefinition.java	(revision 26701)
+++ PasswordParameterDefinition.java	(working copy)
@@ -1,7 +1,7 @@
 /*
  * The MIT License
  *
- * Copyright (c) 2004-2009, Sun Microsystems, Inc.
+ * Copyright (c) 2004-2009, Sun Microsystems, Inc., Kohsuke Kawaguchi, Romain Seguy
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * of this software and associated documentation files (the "Software"), to deal
@@ -27,26 +27,27 @@
 import org.kohsuke.stapler.StaplerRequest;
 import org.kohsuke.stapler.DataBoundConstructor;
 import hudson.Extension;
+import hudson.util.Secret;
 
 /**
- * Parameter whose value is a string, but is hidden from the UI.
- * Useful for passwords, even though its protection is still somewhat limited.
+ * Parameter whose value is a {@link Secret} and is hidden from the UI.
  *
  * @author Kohsuke Kawaguchi
  * @since 1.319
  */
-public class PasswordParameterDefinition extends StringParameterDefinition {
+public class PasswordParameterDefinition extends SimpleParameterDefinition {
+
+    private Secret defaultValue;
+
     @DataBoundConstructor
     public PasswordParameterDefinition(String name, String defaultValue, String description) {
-        super(name, defaultValue, description);
+        super(name, description);
+        this.defaultValue = Secret.fromString(defaultValue);
     }
 
-    @Extension
-    public final static class ParameterDescriptorImpl extends ParameterDescriptor {
-        @Override
-        public String getDisplayName() {
-            return Messages.PasswordParameterDefinition_DisplayName();
-        }
+    @Override
+    public ParameterValue createValue(String value) {
+        return new PasswordParameterValue(getName(), value, getDescription());
     }
 
     @Override
@@ -55,4 +56,31 @@
         value.setDescription(getDescription());
         return value;
     }
+
+    @Override
+    public ParameterValue getDefaultParameterValue() {
+        return new PasswordParameterValue(getName(), getDefaultValue(), getDescription());
+    }
+
+    public String getDefaultValue() {
+        return defaultValue != null ? defaultValue.toString() : null;
+    }
+
+    // kept for backward compatibility
+    public void setDefaultValue(String defaultValue) {
+        this.defaultValue = Secret.fromString(defaultValue);
+    }
+
+    @Extension
+    public final static class ParameterDescriptorImpl extends ParameterDescriptor {
+        @Override
+        public String getDisplayName() {
+            return Messages.PasswordParameterDefinition_DisplayName();
+        }
+        
+        @Override
+        public String getHelpFile() {
+            return "/help/parameter/string.html";
+        }
+    }
 }