Index: ./src/java/org/apache/jetspeed/services/psmlmanager/CastorPsmlManagerService.java =================================================================== RCS file: /home/cvspublic/jakarta-jetspeed/src/java/org/apache/jetspeed/services/psmlmanager/CastorPsmlManagerService.java,v retrieving revision 1.35 diff -u -r1.35 CastorPsmlManagerService.java --- ./src/java/org/apache/jetspeed/services/psmlmanager/CastorPsmlManagerService.java 14 Nov 2002 06:52:37 -0000 1.35 +++ ./src/java/org/apache/jetspeed/services/psmlmanager/CastorPsmlManagerService.java 14 Jan 2003 13:25:03 -0000 @@ -95,6 +95,9 @@ import org.exolab.castor.mapping.Mapping; import org.exolab.castor.mapping.MappingException; import org.xml.sax.InputSource; +import org.xml.sax.SAXException; +import org.w3c.dom.Document; +import org.w3c.dom.Node; // serialization support import org.apache.xml.serialize.Serializer; @@ -107,6 +110,8 @@ import java.io.FileReader; import java.io.Writer; import java.io.FileWriter; +import java.io.FileOutputStream; +import java.io.OutputStreamWriter; import java.io.IOException; import java.net.URL; import java.util.Date; @@ -116,6 +121,9 @@ import java.util.Map; import java.util.HashMap; import javax.servlet.ServletConfig; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; import org.apache.jetspeed.cache.FileCache; import org.apache.jetspeed.cache.FileCacheEventListener; @@ -432,12 +440,15 @@ // now that we have a file reference, try to load the serialized PSML Portlets portlets = null; - FileReader reader = null; try { - reader = new FileReader(f); + DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder builder = dbfactory.newDocumentBuilder(); - portlets = load(reader); + Document d = builder.parse(f); + + Unmarshaller unmarshaller = new Unmarshaller(this.mapping); + portlets = (Portlets)unmarshaller.unmarshal((Node) d); doc.setPortlets(portlets); @@ -462,9 +473,15 @@ Log.error("PSMLManager: document "+f.getAbsolutePath()+" is not valid", e); doc = null; } - finally + catch (ParserConfigurationException e) + { + Log.error("PSMLManager: Could not load the file "+f.getAbsolutePath(), e); + doc = null; + } + catch (SAXException e) { - try { reader.close(); } catch (IOException e) {} + Log.error("PSMLManager: Could not load the file "+f.getAbsolutePath(), e); + doc = null; } } @@ -539,12 +556,12 @@ f = new File(fileOrUrl); } - - FileWriter writer = null; - + OutputStreamWriter writer = null; try { - writer = new FileWriter(f); + String encoding = new String("UTF-8"); + writer = new OutputStreamWriter(new FileOutputStream(f), encoding); + save(writer, doc.getPortlets()); success = true; } @@ -633,8 +650,10 @@ protected void save(Writer writer, Portlets portlets) throws IOException, MarshalException, ValidationException, MappingException { + String encoding = new String("UTF-8"); if (portlets != null) { + format.setEncoding(encoding); Serializer serializer = new XMLSerializer(writer, format); // portlets.marshal(serializer.asDocumentHandler()); Marshaller marshaller = new Marshaller(serializer.asDocumentHandler());