package org.jboss.seam.tool; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Task; /** * Encode the password provided using the same algorithm that IntelliJ IDEA uses * to encode a JDBC database password before storing it in the project file, * then assign it to the property. */ public class EncodePasswordTask extends Task { private String property; private String password; @Override public void execute() throws BuildException { getProject().setProperty(property, encode(password)); } protected String encode(String value) { if (value == null) { return ""; } String result = ""; for (int i = 0; i < value.length(); i++) { int c = value.charAt(i); c ^= 0xdfaa; result += Integer.toHexString(c); } return result; } public void setProperty(String property) { this.property = property; } public void setPassword(String password) { this.password = password; } }