/** * Returns the listing of currently installed VMs as a single XML file * @return an XML representation of all of the currently installed VMs * @throws CoreException if trying to compute the XML for the VM state encounters a problem */ private static String getVMsAsXML() throws CoreException { VMDefinitionsContainer container = new VMDefinitionsContainer(); container.setDefaultVMInstallCompositeID(getDefaultVMId()); container.setDefaultVMInstallConnectorTypeID(getDefaultVMConnectorId()); IVMInstallType[] vmTypes = getVMInstallTypes(); IVMInstall[] vms = null; for (int i = 0; i < vmTypes.length; ++i) { vms = vmTypes[i].getVMInstalls(); for (int j = 0; j < vms.length; j++) { container.addVM(vms[j]); } } return container.getAsXML(); }
if (getDefaultVMInstallCompositeID() != null) { config.setAttribute("defaultVM", getDefaultVMInstallCompositeID()); //$NON-NLS-1$ if (getDefaultVMInstallConnectorTypeID() != null) { config.setAttribute("defaultVMConnector", getDefaultVMInstallConnectorTypeID()); //$NON-NLS-1$ Set<IVMInstallType> vmInstallTypeSet = getVMTypeToVMMap().keySet(); Iterator<IVMInstallType> keyIterator = vmInstallTypeSet.iterator(); while (keyIterator.hasNext()) { IVMInstallType vmInstallType = keyIterator.next(); Element vmTypeElement = vmTypeAsElement(doc, vmInstallType); config.appendChild(vmTypeElement);
/** * Return a list of all valid VMs in this container. A valid VM is one whose install * location exists on the file system. The order of the list is not specified. * * @return List */ public List<IVMInstall> getValidVMList() { List<IVMInstall> vms = getVMList(); List<IVMInstall> resultList = new ArrayList<>(vms.size()); resultList.addAll(vms); resultList.removeAll(fInvalidVMList); return resultList; }
public static VMDefinitionsContainer parseXMLIntoContainer(InputStream inputStream) throws IOException { VMDefinitionsContainer container = new VMDefinitionsContainer(); parseXMLIntoContainer(inputStream, container); return container; }
/** * Updates VM settings and returns whether the update was successful. * * @param jres new installed JREs * @param defaultJRE new default VM * @return whether the update was successful */ public boolean updateJRESettings(IVMInstall[] jres, IVMInstall defaultJRE) { // Create a VM definition container VMDefinitionsContainer vmContainer = new VMDefinitionsContainer(); // Set the default VM Id on the container String defaultVMId = JavaRuntime.getCompositeIdFromVM(defaultJRE); vmContainer.setDefaultVMInstallCompositeID(defaultVMId); // Set the VMs on the container for (int i = 0; i < jres.length; i++) { vmContainer.addVM(jres[i]); } // Generate XML for the VM defs and save it as the new value of the VM preference saveVMDefinitions(vmContainer); return true; }
String jresXML = node.get(JavaRuntime.PREF_VM_XML, null); if (jresXML != null) { VMDefinitionsContainer vms = new VMDefinitionsContainer(); String pref = InstanceScope.INSTANCE.getNode(LaunchingPlugin.ID_PLUGIN).get(JavaRuntime.PREF_VM_XML, ""); //$NON-NLS-1$ if (pref.length() > 0) { try { VMDefinitionsContainer container = VMDefinitionsContainer.parseXMLIntoContainer(new ByteArrayInputStream(pref.getBytes("UTF8"))); //$NON-NLS-1$ List<IVMInstall> validVMList = container.getValidVMList(); Iterator<IVMInstall> iterator = validVMList.iterator(); while (iterator.hasNext()) { names.put(vm.getName(), vm); ids.add(vm.getId()); vms.addVM(vm); vms.setDefaultVMInstallCompositeID(container.getDefaultVMInstallCompositeID()); vms.setDefaultVMInstallConnectorTypeID(container.getDefaultVMInstallConnectorTypeID()); } catch (IOException e) { LaunchingPlugin.log(e); VMDefinitionsContainer container = VMDefinitionsContainer.parseXMLIntoContainer(inputStream); List<IVMInstall> validVMList = container.getValidVMList(); Iterator<IVMInstall> iterator = validVMList.iterator(); while (iterator.hasNext()) { vms.removeVM(existing); ids.remove(existing.getId());
vmDefs = new VMDefinitionsContainer(); IStatus status = vmDefs.getStatus(); if (status != null) { if (status.isMultiStatus()) { if (vmDefs.getValidVMList().isEmpty()) { if (runtime != null) { updateCompliance = true; vmDefs.addVM(runtime); vmDefs.setDefaultVMInstallCompositeID(getCompositeIdFromVM(runtime)); vmDefs.setDefaultVMInstallCompositeID(fgDefaultVMId); updateCompliance = fgDefaultVMId != null; String defId = vmDefs.getDefaultVMInstallCompositeID(); boolean validDef = false; if (defId != null) { Iterator<IVMInstall> iterator = vmDefs.getValidVMList().iterator(); while (iterator.hasNext()) { IVMInstall vm = iterator.next(); List<IVMInstall> list = vmDefs.getValidVMList(); if (!list.isEmpty()) { IVMInstall vm = list.get(0); vmDefs.setDefaultVMInstallCompositeID(getCompositeIdFromVM(vm)); fgDefaultVMId = vmDefs.getDefaultVMInstallCompositeID();
if (name == null) { if (installPath == null) { container.addStatus(new Status(IStatus.ERROR, LaunchingPlugin.ID_PLUGIN, NLS.bind(LaunchingMessages.VMDefinitionsContainer_3, new String[]{vmType.getName()}))); return; container.addStatus(new Status(IStatus.ERROR, LaunchingPlugin.ID_PLUGIN, NLS.bind(LaunchingMessages.VMDefinitionsContainer_4, new String[]{installPath}))); return; container.addStatus(new Status(IStatus.ERROR, LaunchingPlugin.ID_PLUGIN, NLS.bind(LaunchingMessages.VMDefinitionsContainer_5, new String[]{name}))); return; container.addVM(vmStandin); String subElementName = subElement.getNodeName(); if (subElementName.equals("libraryLocation")) { //$NON-NLS-1$ LibraryLocation loc = getLibraryLocation(subElement); vmStandin.setLibraryLocations(new LibraryLocation[]{loc}); } else if (subElementName.equals("libraryLocations")) { //$NON-NLS-1$ setLibraryLocations(vmStandin, subElement); } else if (subElementName.equals("attributeMap")) { //$NON-NLS-1$ NodeList entries = subElement.getElementsByTagName("entry"); //$NON-NLS-1$ vmStandin.setJavadocLocation(new URL(externalForm)); } catch (MalformedURLException e) { container.addStatus(new Status(IStatus.ERROR, LaunchingPlugin.ID_PLUGIN, NLS.bind(LaunchingMessages.VMDefinitionsContainer_6, new String[]{name}), e));
container.setDefaultVMInstallCompositeID(config.getAttribute("defaultVM")); //$NON-NLS-1$ container.setDefaultVMInstallConnectorTypeID(config.getAttribute("defaultVMConnector")); //$NON-NLS-1$ Element vmTypeElement = (Element) node; if (vmTypeElement.getNodeName().equalsIgnoreCase("vmType")) { //$NON-NLS-1$ populateVMTypes(vmTypeElement, container);
List<IVMInstall> deleted = oldResults.getVMList(); List<IVMInstall> current = newResults.getValidVMList(); deleted.removeAll(current); String newDefaultId = newResults.getDefaultVMInstallCompositeID(); if (newDefaultId != null) { IVMInstall newDefaultVM = JavaRuntime.getVMFromCompositeId(newDefaultId);
populateVMForType(vmType, (Element) vmNodeList.item(i), container); NLS.bind(LaunchingMessages.VMDefinitionsContainer_2, new String[]{id})); container.addStatus(status);
/** * Add all VM's in the specified list to the VM definitions managed by this container. * <p> * If distinguishing valid from invalid VMs is important, the specified VMs must * have already had their install locations set. An invalid VM is one whose install * location doesn't exist. * </p> * * @param vmList a list of VMs to be added to this container */ public void addVMList(List<IVMInstall> vmList) { Iterator<IVMInstall> iterator = vmList.iterator(); while (iterator.hasNext()) { addVM(iterator.next()); } }
public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { try { monitor.beginTask(JREMessages.JREsUpdater_0, 100); String vmDefXML = container.getAsXML(); monitor.worked(40); JavaRuntime.getPreferences().setValue(JavaRuntime.PREF_VM_XML, vmDefXML); monitor.worked(30); JavaRuntime.savePreferences(); monitor.worked(30); } catch (IOException ioe) { JDIDebugUIPlugin.log(ioe); } catch (ParserConfigurationException e) { JDIDebugUIPlugin.log(e); } catch (TransformerException e) { JDIDebugUIPlugin.log(e); } finally { monitor.done(); } } };
/** * Set the LibraryLocations on the specified VM, by extracting the subordinate * nodes from the specified 'lirbaryLocations' node. * * @param vm the {@link IVMInstall} to populate from the given {@link Element} * @param libLocationsElement the {@link Element} to populate the {@link IVMInstall} with */ private static void setLibraryLocations(IVMInstall vm, Element libLocationsElement) { NodeList list = libLocationsElement.getChildNodes(); int length = list.getLength(); List<LibraryLocation> locations = new ArrayList<LibraryLocation>(length); for (int i = 0; i < length; ++i) { Node node = list.item(i); short type = node.getNodeType(); if (type == Node.ELEMENT_NODE) { Element libraryLocationElement= (Element)node; if (libraryLocationElement.getNodeName().equals("libraryLocation")) { //$NON-NLS-1$ locations.add(getLibraryLocation(libraryLocationElement)); } } } vm.setLibraryLocations(locations.toArray(new LibraryLocation[locations.size()])); }
String jresXML = node.get(JavaRuntime.PREF_VM_XML, null); if (jresXML != null) { VMDefinitionsContainer vms = new VMDefinitionsContainer(); String pref = InstanceScope.INSTANCE.getNode(LaunchingPlugin.ID_PLUGIN).get(JavaRuntime.PREF_VM_XML, ""); //$NON-NLS-1$ if (pref.length() > 0) { try { VMDefinitionsContainer container = VMDefinitionsContainer.parseXMLIntoContainer(new ByteArrayInputStream(pref.getBytes("UTF8"))); //$NON-NLS-1$ List<IVMInstall> validVMList = container.getValidVMList(); Iterator<IVMInstall> iterator = validVMList.iterator(); while (iterator.hasNext()) { names.put(vm.getName(), vm); ids.add(vm.getId()); vms.addVM(vm); vms.setDefaultVMInstallCompositeID(container.getDefaultVMInstallCompositeID()); vms.setDefaultVMInstallConnectorTypeID(container.getDefaultVMInstallConnectorTypeID()); } catch (IOException e) { LaunchingPlugin.log(e); VMDefinitionsContainer container = VMDefinitionsContainer.parseXMLIntoContainer(inputStream); List<IVMInstall> validVMList = container.getValidVMList(); Iterator<IVMInstall> iterator = validVMList.iterator(); while (iterator.hasNext()) { vms.removeVM(existing); ids.remove(existing.getId());
vmDefs = new VMDefinitionsContainer(); IStatus status = vmDefs.getStatus(); if (status != null) { if (status.isMultiStatus()) { if (vmDefs.getValidVMList().isEmpty()) { if (runtime != null) { updateCompliance = true; vmDefs.addVM(runtime); vmDefs.setDefaultVMInstallCompositeID(getCompositeIdFromVM(runtime)); vmDefs.setDefaultVMInstallCompositeID(fgDefaultVMId); updateCompliance = fgDefaultVMId != null; String defId = vmDefs.getDefaultVMInstallCompositeID(); boolean validDef = false; if (defId != null) { Iterator<IVMInstall> iterator = vmDefs.getValidVMList().iterator(); while (iterator.hasNext()) { IVMInstall vm = iterator.next(); List<IVMInstall> list = vmDefs.getValidVMList(); if (!list.isEmpty()) { IVMInstall vm = list.get(0); vmDefs.setDefaultVMInstallCompositeID(getCompositeIdFromVM(vm)); fgDefaultVMId = vmDefs.getDefaultVMInstallCompositeID();
/** * Contstructs a new VM updater to update VM install settings. */ public JREsUpdater() { fOriginalVMs = new VMDefinitionsContainer(); IVMInstall def = JavaRuntime.getDefaultVMInstall(); if (def != null) { fOriginalVMs.setDefaultVMInstallCompositeID(JavaRuntime.getCompositeIdFromVM(def)); } IVMInstallType[] types = JavaRuntime.getVMInstallTypes(); for (int i = 0; i < types.length; i++) { IVMInstall[] vms = types[i].getVMInstalls(); for (int j = 0; j < vms.length; j++) { fOriginalVMs.addVM(vms[j]); } } }
if (name == null) { if (installPath == null) { container.addStatus(new Status(IStatus.ERROR, LaunchingPlugin.ID_PLUGIN, NLS.bind(LaunchingMessages.VMDefinitionsContainer_3, new String[]{vmType.getName()}))); return; container.addStatus(new Status(IStatus.ERROR, LaunchingPlugin.ID_PLUGIN, NLS.bind(LaunchingMessages.VMDefinitionsContainer_4, new String[]{installPath}))); return; container.addStatus(new Status(IStatus.ERROR, LaunchingPlugin.ID_PLUGIN, NLS.bind(LaunchingMessages.VMDefinitionsContainer_5, new String[]{name}))); return; container.addVM(vmStandin); String subElementName = subElement.getNodeName(); if (subElementName.equals("libraryLocation")) { //$NON-NLS-1$ LibraryLocation loc = getLibraryLocation(subElement); vmStandin.setLibraryLocations(new LibraryLocation[]{loc}); } else if (subElementName.equals("libraryLocations")) { //$NON-NLS-1$ setLibraryLocations(vmStandin, subElement); } else if (subElementName.equals("attributeMap")) { //$NON-NLS-1$ NodeList entries = subElement.getElementsByTagName("entry"); //$NON-NLS-1$ vmStandin.setJavadocLocation(new URL(externalForm)); } catch (MalformedURLException e) { container.addStatus(new Status(IStatus.ERROR, LaunchingPlugin.ID_PLUGIN, NLS.bind(LaunchingMessages.VMDefinitionsContainer_6, new String[]{name}), e));
public static VMDefinitionsContainer parseXMLIntoContainer(InputStream inputStream) throws IOException { VMDefinitionsContainer container = new VMDefinitionsContainer(); parseXMLIntoContainer(inputStream, container); return container; }