package org.mule.devkit.doclet.markdown; import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.Random; class CharacterProtector { private Map<String, String> protectMap = new HashMap<String, String>(); private Map<String, String> unprotectMap = new HashMap<String, String>(); private static final String GOOD_CHARS = "0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM"; private Random rnd = new Random(); public String encode(String literal) { if (!protectMap.containsKey(literal)) { addToken(literal); } return protectMap.get(literal); } public String decode(String coded) { return unprotectMap.get(coded); } public Collection<String> getAllEncodedTokens() { return unprotectMap.keySet(); } private void addToken(String literal) { String encoded = longRandomString(); protectMap.put(literal, encoded); unprotectMap.put(encoded, literal); } private String longRandomString() { StringBuffer sb = new StringBuffer(); final int CHAR_MAX = GOOD_CHARS.length(); for (int i = 0; i < 20; i++) { sb.append(GOOD_CHARS.charAt(rnd.nextInt(CHAR_MAX))); } return sb.toString(); } @Override public String toString() { return protectMap.toString(); } }