public PDEState(URL[] workspace, URL[] target, boolean resolve, IProgressMonitor monitor) { long start = System.currentTimeMillis(); fExtensionRegistry = new PDEExtensionRegistry(); fAuxiliaryState = new PDEAuxiliaryState(); if (resolve) { readTargetState(target, monitor); } else { createNewTargetState(resolve, target, monitor); fExtensionRegistry.createExtensionDocument(fState); } createTargetModels(fState.getBundles()); if (resolve && workspace.length > 0 && !fNewState && !"true".equals(System.getProperty("pde.nocache"))) //$NON-NLS-1$ //$NON-NLS-2$ readWorkspaceState(workspace); fExtensionRegistry.clear(); fAuxiliaryState.clear(); if (DEBUG) System.out.println("Time to create state: " + (System.currentTimeMillis() - start) + " ms"); //$NON-NLS-1$ //$NON-NLS-2$ }
/** * Creates a new PDE State containing bundles from the given URLs. * * @param target urls of target bundles * @param addResolver whether to add a resolver to the state * @param removeDuplicates whether to remove duplicate conflicting bundles from the state * @param monitor progress monitor */ public PDEState(URL[] target, boolean addResolver, boolean removeDuplicates, IProgressMonitor monitor) { long start = System.currentTimeMillis(); fAuxiliaryState = new PDEAuxiliaryState(); // We no longer try and restore from a cached state as it had no performance benefit createNewTargetState(addResolver, target, monitor); if (removeDuplicates) { removeDuplicatesFromState(fState); } initializePlatformProperties(); createTargetModels(fState.getBundles()); clearOldCache(); if (PDECore.DEBUG_MODEL) System.out.println("Time to create state: " + (System.currentTimeMillis() - start) + " ms"); //$NON-NLS-1$ //$NON-NLS-2$ }
private void readTargetState(URL[] urls, IProgressMonitor monitor) { fTargetTimestamp = computeTimestamp(urls); File dir = new File(DIR, Long.toString(fTargetTimestamp) + ".target"); //$NON-NLS-1$ if ((fState = readStateCache(dir)) == null || !fAuxiliaryState.readPluginInfoCache(dir)) { createNewTargetState(true, urls, monitor); if (!dir.exists()) dir.mkdirs(); fAuxiliaryState.savePluginInfo(dir); resolveState(false); saveState(dir); } else { boolean propertiesChanged = initializePlatformProperties(); fState.setResolver(Platform.getPlatformAdmin().getResolver()); if (propertiesChanged) fState.resolve(false); fId = fState.getBundles().length; } if (!fExtensionRegistry.readExtensionsCache(dir)) fExtensionRegistry.saveExtensions(fState, dir); }