}
// Check it for annotations
Class<? extends Locator<?, ?>> locatorType;
ProxyFor l = proxyType.getAnnotation(ProxyFor.class);
ProxyForName ln = proxyType.getAnnotation(ProxyForName.class);
if (l != null && !Locator.class.equals(l.locator())) {
@SuppressWarnings("unchecked")
Class<? extends Locator<?, ?>> found = (Class<? extends Locator<?, ?>>) l.locator();
locatorType = found;
} else if (ln != null && ln.locator().length() > 0) {
try {
@SuppressWarnings("unchecked")
Class<? extends Locator<?, ?>> found =
(Class<? extends Locator<?, ?>>) Class.forName(ln.locator(), false,
getTop().getDomainClassLoader()).asSubclass(Locator.class);
locatorType = found;
} catch (ClassNotFoundException e) {
return die(e, "Could not find the locator type specified in the @%s annotation %s",
ProxyForName.class.getCanonicalName(), ln.value());
}
} else {
// No locator annotation
locatorType = null;
}