* Code to convert a string to a byte array.
*
* @see org.apache.openjpa.lib.util.Base16Encoder#decode
*/
private String getToBytesByteArrayCode() {
CodeFormat code = newCodeFormat();
code.tab().append("private static byte[] toBytes").openParen(true).
append("String s").closeParen().openBrace(2).endl();
code.tab(2).append("if").openParen(true).append("\"null\".equals").
openParen(true).append("s").closeParen().closeParen().endl();
code.tab(3).append("return null;").endl(2);
code.tab(2).append("int len = s.length").parens().
append(";").endl();
code.tab(2).append("byte[] r = new byte[len / 2];").endl();
code.tab(2).append("for").openParen(true).
append("int i = 0; i < r.length; i++").closeParen().
openBrace(3).endl();
code.tab(3).append("int digit1 = s.charAt").openParen(true).
append("i * 2").closeParen().append(", ").
append("digit2 = s.charAt").openParen(true).
append("i * 2 + 1").closeParen().append(";").endl();
code.tab(3).append("if").openParen(true).
append("digit1 >= '0' && digit1 <= '9'").closeParen().endl();
code.tab(4).append("digit1 -= '0';").endl();
code.tab(3).append("else if").openParen(true).
append("digit1 >= 'A' && digit1 <= 'F'").closeParen().endl();
code.tab(4).append("digit1 -= 'A' - 10;").endl();
code.tab(3).append("if").openParen(true).
append("digit2 >= '0' && digit2 <= '9'").closeParen().endl();
code.tab(4).append("digit2 -= '0';").endl();
code.tab(3).append("else if").openParen(true).
append("digit2 >= 'A' && digit2 <= 'F'").closeParen().endl();
code.tab(4).append("digit2 -= 'A' - 10;").endl(2);
code.tab(3).append("r[i] = (byte) ").openParen(false).
openParen(false).append("digit1 << 4").closeParen().
append(" + digit2").closeParen().append(";").endl();
code.closeBrace(3).endl();
code.tab(2).append("return r;").endl();
code.closeBrace(2);
return code.toString();
}