/** * Split the given fully-qualified name in an array of the identifiers that it * is made of. * * @param name a valid fully-qualified name (see {@link #isValid(String)}). * @return an array of the identifiers that compose the given fully qualified * name. */ public static final String[] splitName(final String name) { if (!isValid(name)) throw new IllegalArgumentException("Name \"" + name + "\" is not a valid name."); return name.split("\\."); }
/** * Returns the package name part of the given fully-qualified name. If the * given fully-qualified name does not contain a package name, this method * returns <code>null</code>. * * @param name a valid fully-qualified name (see {@link #isValid(String)}). * @return the package name part of the given fully-qualified name. */ public static final String getPackageName(final String name) { if (!isValid(name)) throw new IllegalArgumentException("Name \"" + name + "\" is not a valid name."); final int i = name.lastIndexOf('.'); return i == -1 ? null : name.substring(0, i); }
public static final String toValidName(String name) { int i = name.indexOf('<'); if (i >= 0) { // name contains template parameter final String tmplValues = name.substring(i); final String defName = name.substring(0, i); if (!isValid(defName)) throw new IllegalArgumentException("Name \"" + defName + "\" is not a valid name."); return defName + "_tmpl_" + Integer.toHexString(tmplValues.hashCode()); } i = name.indexOf('$'); if (i >= 0) { // name references an anonymous definition name = name.replace("$", "_anon_"); } if (!isValid(name)) throw new IllegalArgumentException("Name \"" + name + "\" is not a valid name."); return name; } }