deploy(url);
validate();
try
{
VFSClassLoaderFactory factory = new VFSClassLoaderFactory("ClientLauncherClassLoader");
ArrayList<String> roots = new ArrayList<String>();
// This will come from the client metadata
for(String path : cp)
roots.add(path);
factory.setRoots(roots);
// Do we have to export all packages? Not going to know them...
int lastDot = clientClass.lastIndexOf('.');
if(lastDot > 0)
{
String clientPackage = clientClass.substring(0, lastDot);
ClassLoadingMetaDataFactory cfactory = ClassLoadingMetaDataFactory.getInstance();
factory.getCapabilities().addCapability(cfactory.createModule(clientPackage));
factory.getCapabilities().addCapability(cfactory.createPackage(clientPackage));
}
//factory.setIncluded(ClassFilter.JAVA_ONLY);
ArrayList<BeanMetaDataFactory> beanFactories = new ArrayList<BeanMetaDataFactory>();
beanFactories.add(factory);
BeanMetaDataBuilder builder = BeanMetaDataBuilderFactory.createBuilder("ClientContainer", ClientContainer.class.getName());
// ClientContainer(Object metaData, String mainClass, String applicationClientName)
Object metaData = null;
builder.addConstructorParameter(Object.class.getName(), metaData);
builder.addConstructorParameter(Class.class.getName(), clientClass);
builder.addConstructorParameter(String.class.getName(), clientName);
String classLoaderName = factory.getContextName();
if(classLoaderName == null)
classLoaderName = factory.getName() + ":" + factory.getVersion();
ValueMetaData classLoader = builder.createInject(classLoaderName);
builder.setClassLoader(classLoader);
BeanMetaData clientContainerMD = builder.getBeanMetaData();
AbstractKernelDeployment deployment = new AbstractKernelDeployment();
deployment.setName(factory.getName() + ":" + factory.getVersion());
if(clientContainerMD instanceof BeanMetaDataFactory)
{
BeanMetaDataFactory bmdf = (BeanMetaDataFactory) clientContainerMD;
beanFactories.add(bmdf);
}