[Yanel-commits] rev 23602 - public/yanel/trunk/src/resources/add-realm/src/java/org/wyona/yanel/impl/resources

michi at wyona.com michi at wyona.com
Thu Apr 5 10:58:22 CEST 2007


Author: michi
Date: 2007-04-05 10:58:19 +0200 (Thu, 05 Apr 2007)
New Revision: 23602

Modified:
   public/yanel/trunk/src/resources/add-realm/src/java/org/wyona/yanel/impl/resources/AddRealmResource2.java
Log:
XML output fixed

Modified: public/yanel/trunk/src/resources/add-realm/src/java/org/wyona/yanel/impl/resources/AddRealmResource2.java
===================================================================
--- public/yanel/trunk/src/resources/add-realm/src/java/org/wyona/yanel/impl/resources/AddRealmResource2.java	2007-04-05 06:41:38 UTC (rev 23601)
+++ public/yanel/trunk/src/resources/add-realm/src/java/org/wyona/yanel/impl/resources/AddRealmResource2.java	2007-04-05 08:58:19 UTC (rev 23602)
@@ -19,13 +19,18 @@
 import java.util.Calendar;
 import java.util.HashMap;
 import java.io.StringBufferInputStream;
+import java.io.ByteArrayOutputStream;
 
 import javax.servlet.http.HttpServletRequest;
 
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
 
 import org.w3c.dom.Document;
+import org.w3c.dom.Element;
 
 import org.apache.log4j.Category;
 
@@ -42,6 +47,8 @@
 
     private static Category log = Category.getInstance(AddRealmResource2.class);
 
+    String NAMESPACE = "http://www.wyona.org/yanel/1.0";
+
     /**
      * 
      */
@@ -68,16 +75,40 @@
     }
 
     /**
-     * 
+     * Get view
      */
     public View getView(HttpServletRequest request, String viewId) throws Exception {
         String addType = getConfiguration().getProperty("add-type");
 
         if (addType != null && addType.equals("from-scratch")) {
-            return null;
+            return getFromScratchView(request, viewId);
         } else if (addType != null && addType.equals("from-existing-website")) {
-            return null;
+            return getFromExistingWebsiteView(request, viewId);
         } else {
+            return getExceptionView("No such type: " + addType);
+        }
+    }
+
+    /**
+     * Get DOM document
+     */
+    public Document getDocument() {
+        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+        dbf.setNamespaceAware(true);
+        Document document = null;
+        try {
+            DocumentBuilder parser = dbf.newDocumentBuilder();
+            document = parser.parse(new java.io.StringBufferInputStream("<yanel:add-realm xmlns:yanel=\""+NAMESPACE+"\" xmlns=\""+NAMESPACE+"\"/>"));
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+        }
+        return document;
+    }
+
+    /**
+     * Get exception view
+     */
+    private View getExceptionView(String message) {
         View view = new View();
         StringBuffer sb = new StringBuffer("<?xml version=\"1.0\"?>");
         sb.append("<html xmlns=\"http://www.w3.org/1999/xhtml\">");
@@ -86,7 +117,7 @@
         sb.append("</head>");
         sb.append("<body>");
         sb.append("<div id=\"contenBody\">");
-        sb.append("<h1>No such type: " + addType + "</h1>");
+        sb.append("<h1>" + message + "</h1>");
         sb.append("</div>");
         sb.append("</body>");
         sb.append("</html>");
@@ -94,23 +125,40 @@
         view.setMimeType("application/xhtml+xml");
         view.setInputStream(new StringBufferInputStream(sb.toString()));
         return view;
-        }
     }
 
     /**
-     * Get DOM document
+     * Get from scratch view
      */
-    public Document getDocument() {
-        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
-        dbf.setNamespaceAware(true);
-        String NAMESPACE = "http://www.wyona.org/yanel/1.0";
-        Document document = null;
-        try {
-            DocumentBuilder parser = dbf.newDocumentBuilder();
-            document = parser.parse(new java.io.StringBufferInputStream("<yanel:add-realm xmlns:yanel=\""+NAMESPACE+"\" xmlns=\""+NAMESPACE+"\"/>"));
-        } catch (Exception e) {
-            log.error(e.getMessage(), e);
+    public View getFromScratchView(HttpServletRequest request, String viewId) throws Exception {
+        Document document = getFromScratchInputDocument();
+
+        if (viewId.equals("xml")) {
+            View view = new View();
+            view.setMimeType("application/xml");
+            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
+            TransformerFactory.newInstance().newTransformer().transform(new DOMSource(document), new StreamResult(byteArrayOutputStream));
+            view.setInputStream(new java.io.ByteArrayInputStream(byteArrayOutputStream.toByteArray()));
+            return view;
+        } else {
+            return null;
         }
-        return document;
     }
+
+    /**
+     * Get from existing website view
+     */
+    public View getFromExistingWebsiteView(HttpServletRequest request, String viewId) throws Exception {
+        return null;
+    }
+
+    /**
+     *
+     */
+    private Document getFromScratchInputDocument() {
+        Document doc = getDocument();
+        Element rootElement = doc.getDocumentElement();
+        rootElement.appendChild(doc.createElementNS(NAMESPACE, "from-scratch"));
+        return doc;
+    }
 }




More information about the Yanel-commits mailing list