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 03447e1..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
@@ -16,8 +16,8 @@ import java.util.Iterator;
 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;
@@ -27,9 +27,11 @@ import org.xml.sax.XMLReader;
 
 public class PHPRuntime {
 	protected static PHPRuntime runtime;
-	
+
 	protected List installedInterpreters;
+
 	protected PHPInterpreter selectedInterpreter;
+
 	protected PHPRuntime() {
 		super();
 	}
@@ -40,7 +42,7 @@ public class PHPRuntime {
 		}
 		return runtime;
 	}
-	
+
 	public PHPInterpreter getSelectedInterpreter() {
 		if (selectedInterpreter == null) {
 			loadRuntimeConfiguration();
@@ -48,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();
 	}
 
@@ -67,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();
 	}
@@ -77,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) {
-			PHPLaunchingPlugin.getDefault().log(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("<?xml version=\"1.0\" encoding=\"UTF-8\"?><runtimeconfig>");
+			writer
+					.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?><runtimeconfig>");
 			Iterator interpretersIterator = installedInterpreters.iterator();
 			while (interpretersIterator.hasNext()) {
 				writer.write("<interpreter name=\"");
-				
-				PHPInterpreter entry = (PHPInterpreter) interpretersIterator.next();
-				writer.write(entry.getName());
+
+				PHPInterpreter entry = (PHPInterpreter) interpretersIterator
+						.next();
+				// writer.write(entry.getName());
 				writer.write("\" path=\"");
 				writer.write(entry.getInstallLocation().toString());
 				writer.write("\"");
 				if (entry.equals(selectedInterpreter))
 					writer.write(" selected=\"true\"");
-					
+
 				writer.write("/>");
 			}
 			writer.write("</runtimeconfig>");
 			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());
 	}