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;
public class PHPRuntime {
protected static PHPRuntime runtime;
-
+
protected List installedInterpreters;
protected PHPInterpreter selectedInterpreter;
protected PHPRuntime() {
}
return runtime;
}
-
+
public PHPInterpreter getSelectedInterpreter() {
if (selectedInterpreter == null) {
loadRuntimeConfiguration();
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;
}
-
+
return getSelectedInterpreter();
}
loadRuntimeConfiguration();
return installedInterpreters;
}
-
+
public void setInstalledInterpreters(List newInstalledInterpreters) {
installedInterpreters = newInstalledInterpreters;
if (installedInterpreters.size() > 0)
else
setSelectedInterpreter(null);
}
-
+
protected void saveRuntimeConfiguration() {
writeXML(getRuntimeConfigurationWriter());
}
return null;
}
-
+
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.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("");
}
-
+
protected void writeXML(Writer writer) {
try {
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());
+// 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>");
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;
public void skippedEntity(String name) throws SAXException {}
};
}
-
+
protected File getRuntimeConfigurationFile() {
IPath stateLocation = PHPLaunchingPlugin.getDefault().getStateLocation();
IPath fileLocation = stateLocation.append("runtimeConfiguration.xml");