/*
* SOAPServer.java
* Copyright (C) 2002 New Zealand Digital Library, http://www.nzdl.org
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
package org.greenstone.gsdl3;
import org.greenstone.gsdl3.core.*;
import org.w3c.dom.Element;
import java.io.File;
import java.io.BufferedReader;
import java.io.FileReader;
import java.net.URL;
/**
* The server side of a SOAP connection
*
* @author Katherine Don
* @version $Revision: 8081 $
* @see Simple Object Access Protocol (SOAP) 1.1
*/
public class SOAPServer
implements ModuleInterface {
private String config_file_name = "SOAPServer.cfg";
/** The message router we're talking to */
MessageRouter mr_=null;
/** The no-args constructor */
public SOAPServer() {
// find out gsdl3home
URL url = ClassLoader.getSystemResource(config_file_name);
if (url == null) {
System.err.println("Couldn't find the config file "+config_file_name+". Can't initialise the SOAP server");
return;
}
String gsdl3_home = readInFile(url);
if (gsdl3_home == null || gsdl3_home.equals("")) {
return;
}
String site_home=gsdl3_home+File.separator+"web"+File.separator+"sites"+File.separator+"@sitename@";
File site_file = new File(site_home);
if (!site_file.isDirectory()) {
System.err.println("The site directory "+site_file.getPath()+" doesn't exist. Can't initialsie the SOAP server.");
return;
}
mr_ = new MessageRouter();
mr_.setSiteHome(site_home);
mr_.configure();
}
/** Process a String request */
public String process(String xml_in) {
return mr_.process(xml_in);
}
/** Process an Element request */
public Element process(Element xml_in) {
return mr_.process(xml_in);
}
private String readInFile(URL url) {
String file_name = url.getFile();
// any spaces are encoded as %20
file_name = file_name.replaceAll("%20", " ");
try {
BufferedReader reader = new BufferedReader(new FileReader(file_name));
String line = reader.readLine();
line = line.trim();
return line;
} catch (Exception e) {
System.err.println("Exception occurred when reading in the file "+file_name+": "+e);
}
return null;
}
}