X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse.launching/src/net/sourceforge/phpdt/internal/launching/PHPRuntime.java b/net.sourceforge.phpeclipse.launching/src/net/sourceforge/phpdt/internal/launching/PHPRuntime.java index 56c6101..1dbea3b 100644 --- a/net.sourceforge.phpeclipse.launching/src/net/sourceforge/phpdt/internal/launching/PHPRuntime.java +++ b/net.sourceforge.phpeclipse.launching/src/net/sourceforge/phpdt/internal/launching/PHPRuntime.java @@ -18,7 +18,6 @@ import java.util.List; import javax.xml.parsers.SAXParserFactory; import org.eclipse.core.runtime.IPath; -import org.eclipse.core.runtime.Path; import org.xml.sax.Attributes; import org.xml.sax.ContentHandler; import org.xml.sax.InputSource; @@ -28,9 +27,11 @@ import org.xml.sax.XMLReader; public class PHPRuntime { protected static PHPRuntime runtime; - + protected List installedInterpreters; + protected PHPInterpreter selectedInterpreter; + protected PHPRuntime() { super(); } @@ -41,7 +42,7 @@ public class PHPRuntime { } return runtime; } - + public PHPInterpreter getSelectedInterpreter() { if (selectedInterpreter == null) { loadRuntimeConfiguration(); @@ -49,14 +50,14 @@ public class PHPRuntime { return selectedInterpreter; } - public PHPInterpreter getInterpreter(String name) { + public PHPInterpreter getInterpreter(String installLocation) { Iterator interpreters = getInstalledInterpreters().iterator(); - while(interpreters.hasNext()) { + while (interpreters.hasNext()) { PHPInterpreter each = (PHPInterpreter) interpreters.next(); - if (each.getName().equals(name)) + if (each.getInstallLocation().toString().equals(installLocation)) return each; } - + return getSelectedInterpreter(); } @@ -68,7 +69,8 @@ public class PHPRuntime { public void addInstalledInterpreter(PHPInterpreter anInterpreter) { getInstalledInterpreters().add(anInterpreter); if (getInstalledInterpreters().size() == 1) - setSelectedInterpreter((PHPInterpreter) getInstalledInterpreters().get(0)); + setSelectedInterpreter((PHPInterpreter) getInstalledInterpreters() + .get(0)); saveRuntimeConfiguration(); } @@ -78,97 +80,143 @@ public class PHPRuntime { loadRuntimeConfiguration(); return installedInterpreters; } - + public void setInstalledInterpreters(List newInstalledInterpreters) { installedInterpreters = newInstalledInterpreters; if (installedInterpreters.size() > 0) - setSelectedInterpreter((PHPInterpreter)installedInterpreters.get(0)); + setSelectedInterpreter((PHPInterpreter) installedInterpreters + .get(0)); else setSelectedInterpreter(null); } - + protected void saveRuntimeConfiguration() { writeXML(getRuntimeConfigurationWriter()); } protected Writer getRuntimeConfigurationWriter() { try { - OutputStream stream = new BufferedOutputStream(new FileOutputStream(getRuntimeConfigurationFile())); + OutputStream stream = new BufferedOutputStream( + new FileOutputStream(getRuntimeConfigurationFile())); return new OutputStreamWriter(stream); - } catch (FileNotFoundException e) {} + } catch (FileNotFoundException e) { + } return null; } - + protected void loadRuntimeConfiguration() { installedInterpreters = new ArrayList(); try { - XMLReader reader = SAXParserFactory.newInstance().newSAXParser().getXMLReader(); - reader.setContentHandler(getRuntimeConfigurationContentHandler()); - reader.parse(new InputSource(getRuntimeConfigurationReader())); - } catch(Exception e) { + File file = getRuntimeConfigurationFile(); + if (file.exists()) { + XMLReader reader = SAXParserFactory.newInstance() + .newSAXParser().getXMLReader(); + reader + .setContentHandler(getRuntimeConfigurationContentHandler()); + reader.parse(new InputSource( + getRuntimeConfigurationReader(file))); + } + } catch (Exception e) { PHPLaunchingPlugin.log(e); } } - protected Reader getRuntimeConfigurationReader() { + protected Reader getRuntimeConfigurationReader(File file) { try { - return new FileReader(getRuntimeConfigurationFile()); - } catch(FileNotFoundException e) {} + return new FileReader(file); + } catch (FileNotFoundException e) { + } return new StringReader(""); } - + protected void writeXML(Writer writer) { try { - writer.write(""); + writer + .write(""); Iterator interpretersIterator = installedInterpreters.iterator(); while (interpretersIterator.hasNext()) { writer.write(""); } writer.write(""); writer.flush(); - } catch(IOException e) { + } catch (IOException e) { PHPLaunchingPlugin.log(e); } } protected ContentHandler getRuntimeConfigurationContentHandler() { return new ContentHandler() { - public void setDocumentLocator(Locator locator) {} - public void startDocument() throws SAXException {} - public void endDocument() throws SAXException {} - public void startPrefixMapping(String prefix, String uri) throws SAXException {} - public void endPrefixMapping(String prefix) throws SAXException {} - public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException { + public void setDocumentLocator(Locator locator) { + } + + public void startDocument() throws SAXException { + } + + public void endDocument() throws SAXException { + } + + public void startPrefixMapping(String prefix, String uri) + throws SAXException { + } + + public void endPrefixMapping(String prefix) throws SAXException { + } + + public void startElement(String namespaceURI, String localName, + String qName, Attributes atts) throws SAXException { if ("interpreter".equals(qName)) { String interpreterName = atts.getValue("name"); - IPath installLocation = new Path(atts.getValue("path")); - PHPInterpreter interpreter = new PHPInterpreter(interpreterName, installLocation); + java.io.File installLocation; + if (interpreterName != null) { + installLocation = new File(atts.getValue("path") + + File.separatorChar + interpreterName); + } else { + installLocation = new File(atts.getValue("path")); + } + PHPInterpreter interpreter = new PHPInterpreter( + installLocation); installedInterpreters.add(interpreter); if (atts.getValue("selected") != null) selectedInterpreter = interpreter; } } - public void endElement(String namespaceURI, String localName, String qName) throws SAXException {} - public void characters(char[] ch, int start, int length) throws SAXException {} - public void ignorableWhitespace(char[] ch, int start, int length) throws SAXException {} - public void processingInstruction(String target, String data) throws SAXException {} - public void skippedEntity(String name) throws SAXException {} + + public void endElement(String namespaceURI, String localName, + String qName) throws SAXException { + } + + public void characters(char[] ch, int start, int length) + throws SAXException { + } + + public void ignorableWhitespace(char[] ch, int start, int length) + throws SAXException { + } + + public void processingInstruction(String target, String data) + throws SAXException { + } + + public void skippedEntity(String name) throws SAXException { + } }; } - + protected File getRuntimeConfigurationFile() { - IPath stateLocation = PHPLaunchingPlugin.getDefault().getStateLocation(); + IPath stateLocation = PHPLaunchingPlugin.getDefault() + .getStateLocation(); IPath fileLocation = stateLocation.append("runtimeConfiguration.xml"); return new File(fileLocation.toOSString()); }