List modellocs = searchUrl(url, new IFilter() return examineKernelModels(modellocs, rid);
/** * Attempts to find an active kernel factory, searching, loading and instantiating as required. * * @param model The model for which the kernel is needed. * @param imports Model imports. * @param classloader Model classloader. * @return Factory instance of the kernel or null if no matching kernel was found. */ protected IFuture findKernel(final String model, final String[] imports, final IResourceIdentifier rid) { return findKernel(model, imports, rid, false); }
/** * Attempts to find a kernel which is currently not loaded, matching the model. * This method will instantiate the required kernel if it is found. * * @param model The model for which the kernel is needed. * @param imports Model imports. * @param classloader Model classloader. * @return Factory instance of the activated kernel or null if no matching kernel was found. */ protected IFuture findLoadableKernel(final String model, final String[] imports, final IResourceIdentifier rid, boolean isrecur) { // if(model.toString().indexOf("HelloWorld")!=-1) // System.out.println("findLoadableKernel: "+model); IFuture ret; // String dl = (String) kerneldefaultlocations.get(getModelExtension(model)); String dl = (String) getCacheResultForModel(model, kerneldefaultlocations); if (dl != null) ret = startLoadableKernel(model, imports, rid, dl); else ret = findKernelInCache(model, imports, rid, isrecur); return ret; }
if (isInExtensionBlacklist(model, extensionblacklist)) return IFuture.DONE; IComponentFactory fac = (IComponentFactory) getCacheResultForModel(model, factorycache); if(fac != null) return new Future(fac); findActiveKernel(model, imports, rid).addResultListener(ia.createResultListener(new IResultListener()
Tuple2<Object, Object> cachedkernels = getCacheKeyValueForModel(model, kernellocationcache); final Object kernelsext = cachedkernels != null? cachedkernels.getFirstEntity(): null; Collection kernels = cachedkernels != null? (Collection) cachedkernels.getSecondEntity() : null; startLoadableKernel(model, imports, rid, kernelmodel) .addResultListener(ia.createResultListener(new DelegationResultListener(ret)
IComponentFactory fac = (IComponentFactory) getCacheResultForModel(model.getFilename(), factorycache); if(fac != null) return fac.createComponentInstance(desc, factory, model, config, arguments, parent, bindings, copy, realtime, resultlistener, ret); findKernel(model.getFilename(), null, model.getResourceIdentifier()).addResultListener(ia.createResultListener(new DelegationResultListener(res)
/** * Load a model. * * @param model The model (e.g. file name). * @param The imports (if any). * @return The loaded model. */ public IFuture<IModelInfo> loadModel(final String model, final String[] imports, IResourceIdentifier rid) { // System.out.println("loadModel: "+model); return loadModel(model, imports, rid, false); }
/** * Searches supplied URL for a potential kernel. This method calls kernelSearch() * with a prefilter that excludes all files except the ones starting with "Kernel". * * @param url The URL to search */ protected IFuture quickKernelSearch(URL url, IResourceIdentifier rid) { return kernelSearch(url, new IFilter() { public boolean filter(Object obj) { String loc = (String) obj; // if (loc.toLowerCase().contains("kernel")) // { // System.out.println(loc); // System.out.println(loc.substring(loc.lastIndexOf('/') + 1).toLowerCase().startsWith("kernel")); // } // For jar entries, strip directory part. return loc.substring(loc.lastIndexOf(packageseparator) + 1).toLowerCase().startsWith("kernel"); } }, rid); }
/** * Gets result for a cached object based on model name. * * @param model The model. * @param map The cache. * @return A cache hit or null. */ protected Object getCacheResultForModel(String model, Map map) { Tuple2<Object, Object> ret = getCacheKeyValueForModel(model, map); return ret != null? ret.getSecondEntity() : null; }
if (!isInExtensionBlacklist(obj, baseextensionblacklist) && !kernelblacklist.contains(loc.substring(loc.lastIndexOf(File.separatorChar) + 1)) && prefilter.filter(obj))
public void exceptionOccurred(Exception exception) { kernellocationcache.remove(kernelsext, kernelmodel); findKernelInCache(model, imports, rid, isrecur) .addResultListener(ia.createResultListener(new DelegationResultListener(ret))); } }));
examineKernelModels(new ArrayList(potentialkernellocations), rid).addResultListener(ia.createResultListener(new DelegationResultListener(ret)
public void resultAvailable(Object result) { if (result != null) { ret.setResult(result); } else { findLoadableKernel(model, imports, rid, isrecur) .addResultListener(ia.createResultListener(new DelegationResultListener(ret) { public void customResultAvailable(Object result) { if (result != null) ret.setResult(result); else { // FIXME: Blacklist? What if a new factory model is added later? // if (!isrecur) // extensionblacklist.add(ext); ret.setResult(null); } } })); } }
findActiveKernel(kernelmodel, null, rid).addResultListener(ia.createResultListener(new DelegationResultListener(ret)
loadModel(kernelloc, null, rid, true) .addResultListener(ia.createResultListener(new IResultListener<IModelInfo>()
findKernel(model, imports, rid).addResultListener(ia.createResultListener(new IResultListener()
findKernel(model, imports, rid).addResultListener(ia.createResultListener(new IResultListener()
/** * Test if a model can be loaded by the factory. * @param model The model (e.g. file name). * @param The imports (if any). * @return True, if model can be loaded. */ public IFuture<Boolean> isLoadable(String model, String[] imports, IResourceIdentifier rid) { // if(model.endsWith("BDI.class")) // System.out.println("isLoadable: "+model); final Future<Boolean> ret = new Future<Boolean>(); findKernel(model, imports, rid).addResultListener(ia.createResultListener(new IResultListener() { public void resultAvailable(Object result) { if(result != null) ret.setResult(true); else ret.setResult(false); } public void exceptionOccurred(Exception exception) { ret.setResult(false); } })); return ret; }
findKernel(model, imports, rid, isrecur).addResultListener(ia.createResultListener(ia.createResultListener(new IResultListener()