avoid OutOfBoundsException and break of format action, when marker positions are...
[phpeclipse.git] / net.sourceforge.phpeclipse.launching / src / net / sourceforge / phpdt / internal / launching / PHPRuntime.java
index dd1827c..0613535 100644 (file)
@@ -49,11 +49,11 @@ public class PHPRuntime {
                return selectedInterpreter;
        }
 
-       public PHPInterpreter getInterpreter(String name) {
+       public PHPInterpreter getInterpreter(String installLocation) {
                Iterator interpreters = getInstalledInterpreters().iterator();
                while(interpreters.hasNext()) {
                        PHPInterpreter each = (PHPInterpreter) interpreters.next();
-                       if (each.getName().equals(name))
+                       if (each.getInstallLocation().toString().equals(installLocation))
                                return each;
                }
                
@@ -103,17 +103,20 @@ public class PHPRuntime {
        protected void loadRuntimeConfiguration() {
                installedInterpreters = new ArrayList();
                try {
-                       XMLReader reader = SAXParserFactory.newInstance().newSAXParser().getXMLReader();
-                       reader.setContentHandler(getRuntimeConfigurationContentHandler());
-                       reader.parse(new InputSource(getRuntimeConfigurationReader()));
+                       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.getDefault().log(e);
+                       PHPLaunchingPlugin.log(e);
                }
        }
 
-       protected Reader getRuntimeConfigurationReader() {
+       protected Reader getRuntimeConfigurationReader(File file) {
                try {
-                       return new FileReader(getRuntimeConfigurationFile());
+                       return new FileReader(file);
                } catch(FileNotFoundException e) {}
                return new StringReader("");
        }
@@ -126,7 +129,7 @@ public class PHPRuntime {
                                writer.write("<interpreter name=\"");
                                
                                PHPInterpreter entry = (PHPInterpreter) interpretersIterator.next();
-                               writer.write(entry.getName());
+//                             writer.write(entry.getName());
                                writer.write("\" path=\"");
                                writer.write(entry.getInstallLocation().toString());
                                writer.write("\"");
@@ -151,9 +154,14 @@ public class PHPRuntime {
                        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);
+                                       String interpreterName = atts.getValue("name");
+                                       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;