Author: nbelaevski
Date: 2008-11-06 14:11:19 -0500 (Thu, 06 Nov 2008)
New Revision: 11051
Modified:
trunk/framework/impl/src/main/java/org/ajax4jsf/context/ResponseWriterContentHandler.java
trunk/framework/impl/src/main/java/org/ajax4jsf/context/ViewResources.java
Log:
SAX Events changed to Node
Modified:
trunk/framework/impl/src/main/java/org/ajax4jsf/context/ResponseWriterContentHandler.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/context/ResponseWriterContentHandler.java 2008-11-06
18:16:58 UTC (rev 11050)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/context/ResponseWriterContentHandler.java 2008-11-06
19:11:19 UTC (rev 11051)
@@ -22,11 +22,16 @@
package org.ajax4jsf.context;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
import org.ajax4jsf.renderkit.RendererUtils.HTML;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
import org.xml.sax.Attributes;
import org.xml.sax.ContentHandler;
import org.xml.sax.Locator;
@@ -34,19 +39,29 @@
class ResponseWriterContentHandler implements ContentHandler {
- List<Object> events = new ArrayList<Object>();
-
private String linkClass;
+ private Node node;
+
public ResponseWriterContentHandler(String linkClass) {
super();
+
+ try {
+ Document document =
DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
+ node = document.createElement("head");
+ document.appendChild(node);
+ } catch (ParserConfigurationException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
this.linkClass = linkClass;
}
public void characters(char[] ch, int start, int length)
throws SAXException {
- events.add(new SAXTextEvent(new String(ch, start, length)));
+ node.appendChild(node.getOwnerDocument().createTextNode(new String(ch, start,
length)));
}
public void endDocument() throws SAXException {
@@ -54,7 +69,8 @@
public void endElement(String uri, String localName, String name)
throws SAXException {
- events.add(new SAXEndElementEvent(localName));
+
+ node = node.getParentNode();
}
public void endPrefixMapping(String prefix) throws SAXException {
@@ -84,23 +100,35 @@
public void startElement(String uri, String localName,
String name, Attributes atts) throws SAXException {
- Map<String, String> attsMap = new HashMap<String,
String>(atts.getLength());
+ Document document = node.getOwnerDocument();
+ Element element = document.createElement(localName);
+
int length = atts.getLength();
for (int i = 0; i < length; i++) {
- attsMap.put(atts.getLocalName(i), atts.getValue(i));
+ element.setAttribute(atts.getLocalName(i), atts.getValue(i));
}
if (HTML.LINK_ELEMENT.equals(localName)) {
- attsMap.put(HTML.class_ATTRIBUTE, linkClass);
+ element.setAttribute(HTML.class_ATTRIBUTE, linkClass);
}
-
- events.add(new SAXStartElementEvent(localName, attsMap));
+
+ node = node.appendChild(element);
}
public void startPrefixMapping(String prefix, String uri)
throws SAXException {
throw new UnsupportedOperationException();
}
+
+ public Node[] getNodes() {
+ NodeList childNodes = node.getChildNodes();
+ Node[] list = new Node[childNodes.getLength()];
+ for (int i = 0; i < list.length; i++) {
+ list[i] = childNodes.item(i);
+ }
+
+ return list;
+ }
}
\ No newline at end of file
Modified: trunk/framework/impl/src/main/java/org/ajax4jsf/context/ViewResources.java
===================================================================
--- trunk/framework/impl/src/main/java/org/ajax4jsf/context/ViewResources.java 2008-11-06
18:16:58 UTC (rev 11050)
+++ trunk/framework/impl/src/main/java/org/ajax4jsf/context/ViewResources.java 2008-11-06
19:11:19 UTC (rev 11051)
@@ -62,6 +62,7 @@
import org.richfaces.skin.Skin;
import org.richfaces.skin.SkinFactory;
import org.richfaces.skin.SkinNotFoundException;
+import org.w3c.dom.Node;
/**
* @author Nick Belaevski
@@ -86,7 +87,7 @@
private RenderKit renderKit;
- private Object[] result = null;
+ private Node[] result = null;
private static final String EXTENDED_SKINNING_ON_NO_SCRIPTS_INFO_KEY =
ViewResources.class.getName() + "EXTENDED_SKINNING_ON_NO_SCRIPTS_INFO_KEY";
@@ -147,13 +148,13 @@
this.extendedSkinningAllowed = extendedSkinningAllowed;
}
- public Object getHeadEvents() {
- List componentList = componentWriter.getEventsList();
- List userList = userWriter.getEventsList();
+ public Node[] getHeadEvents() {
+ Node[] componentResourceNodes = componentWriter.getNodes();
+ Node[] userResourceNodes = userWriter.getNodes();
- result = new Object[componentList.size() + userList.size()];
- componentList.toArray(result);
- System.arraycopy(userList.toArray(), 0, result, componentList.size(),
userList.size());
+ result = new Node[componentResourceNodes.length + userResourceNodes.length];
+ System.arraycopy(componentResourceNodes, 0, result, 0, componentResourceNodes.length);
+ System.arraycopy(userResourceNodes, 0, result, componentResourceNodes.length,
userResourceNodes.length);
return result;
}
@@ -190,8 +191,8 @@
class HeadResponseWriter extends SAXResponseWriter {
- public List getEventsList() {
- return ((ResponseWriterContentHandler) getXmlConsumer()).events;
+ public Node[] getNodes() {
+ return ((ResponseWriterContentHandler) getXmlConsumer()).getNodes();
}
public HeadResponseWriter(String linkClass) {