AccountAS accountAS = (AccountAS) ServiceLocator.findService(AccountAS.class);
public static Object findService(Class serviceClass)
{
String _oName = ClassUtil.getShortClassName(serviceClass.getName());
Object obj = findService(_oName);
if(obj == null)
obj = ClassUtil.createClass((new StringBuilder()).append(serviceClass.getName()).append("Impl").toString());
return obj;
}
public static String getShortClassName(String className)
{
if(className == null)
return "";
if(className.length() == 0)
return "";
char chars[] = className.toCharArray();
int lastDot = 0;
for(int i = 0; i < chars.length; i++)
{
if(chars[i] == '.')
{
lastDot = i + 1;
continue;
}
if(chars[i] == '$')
chars[i] = '.';
}
return new String(chars, lastDot, chars.length - lastDot);
}
public static Object createClass(String className)
{
Object result = null;
try
{
result = Class.forName(className).newInstance();
}
catch(Exception ex)
{
throw new IllegalArgumentException((new StringBuilder()).append("Error getting class [").append(className).append("]: problem with class file or dependent class. Root cause: ").append(ex).toString());
}
catch(LinkageError ex)
{
throw new IllegalArgumentException((new StringBuilder()).append("Error loading class [").append(className).append("]: problem with class file or dependent class. Root cause: ").append(ex).toString());
}
return result;
}