1 /* 2 * JBoss, Home of Professional Open Source 3 * Copyright 2005, JBoss Inc., and individual contributors as indicated 4 * by the @authors tag. See the copyright.txt in the distribution for a 5 * full listing of individual contributors. 6 * 7 * This is free software; you can redistribute it and/or modify it 8 * under the terms of the GNU Lesser General Public License as 9 * published by the Free Software Foundation; either version 2.1 of 10 * the License, or (at your option) any later version. 11 * 12 * This software is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 * Lesser General Public License for more details. 16 * 17 * You should have received a copy of the GNU Lesser General Public 18 * License along with this software; if not, write to the Free 19 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 20 * 02110-1301 USA, or see the FSF site: http://www.fsf.org. 21 */ 22 package org.jboss.util.propertyeditor; 23 24 import java.beans.PropertyEditorSupport; 25 import java.io.IOException; 26 import java.io.StringReader; 27 28 import javax.xml.parsers.DocumentBuilder; 29 import javax.xml.parsers.DocumentBuilderFactory; 30 import javax.xml.parsers.ParserConfigurationException; 31 32 import org.jboss.util.NestedRuntimeException; 33 import org.jboss.util.xml.DOMWriter; 34 import org.w3c.dom.Document; 35 import org.w3c.dom.Node; 36 import org.xml.sax.InputSource; 37 import org.xml.sax.SAXException; 38 39 /** 40 * A property editor for {@link org.w3c.dom.Document}. 41 * 42 * @version <tt>$Revision: 1958 $</tt> 43 * @author <a HREF="mailto:eross@noderunner.net">Elias Ross</a> 44 */ 45 public class DocumentEditor extends PropertyEditorSupport 46 { 47 /** 48 * Returns the property as a String. 49 * 50 * @throws NestedRuntimeException conversion exception occured 51 */ 52 public String getAsText() 53 { 54 return DOMWriter.printNode((Node)getValue(), false); 55 } 56 57 /** 58 * Sets as an Document created by a String. 59 * 60 * @throws NestedRuntimeException A parse exception occured 61 */ 62 public void setAsText(String text) 63 { 64 setValue(getAsDocument(text)); 65 } 66 67 protected Document getAsDocument(String text) 68 { 69 try 70 { 71 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 72 DocumentBuilder db = dbf.newDocumentBuilder(); 73 StringReader sr = new StringReader(text); 74 InputSource is = new InputSource(sr); 75 Document d = db.parse(is); 76 return d; 77 } 78 catch (ParserConfigurationException e) 79 { 80 throw new NestedRuntimeException(e); 81 } 82 catch (SAXException e) 83 { 84 throw new NestedRuntimeException(e); 85 } 86 catch (IOException e) 87 { 88 throw new NestedRuntimeException(e); 89 } 90 } 91 } 92