unico 2004/07/14 09:44:35
Modified: src/share/org/apache/slide/extractor SimpleXmlExtractor.java
PropertyExtractorTrigger.java
Log:
add support for extracting and setting properties in other namespaces than DAV:
add an optional 'namespace' attribute on an <instruction> declaration in
SimpleXmlExtractor
Revision Changes Path
1.6 +17 -12
jakarta-slide/src/share/org/apache/slide/extractor/SimpleXmlExtractor.java
Index: SimpleXmlExtractor.java
===================================================================
RCS file:
/home/cvs/jakarta-slide/src/share/org/apache/slide/extractor/SimpleXmlExtractor.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- SimpleXmlExtractor.java 9 Jul 2004 15:38:10 -0000 1.5
+++ SimpleXmlExtractor.java 14 Jul 2004 16:44:35 -0000 1.6
@@ -23,6 +23,7 @@
package org.apache.slide.extractor;
+import org.apache.slide.common.PropertyName;
import org.apache.slide.util.conf.Configurable;
import org.apache.slide.util.conf.Configuration;
import org.apache.slide.util.conf.ConfigurationException;
@@ -86,10 +87,12 @@
* @return the property value to be set, <code>null</codee> if to be ignored.
*/
protected Object filter(List nodeList, Instruction instruction) throws
ExtractorException {
- if (nodeList.get(0) instanceof Text) {
- return ((Text) nodeList.get(0)).getText();
- } else if (nodeList.get(0) instanceof String) {
- return nodeList.get(0);
+ if (nodeList.size() > 0) {
+ if (nodeList.get(0) instanceof Text) {
+ return ((Text) nodeList.get(0)).getText();
+ } else if (nodeList.get(0) instanceof String) {
+ return nodeList.get(0);
+ }
}
return null;
}
@@ -101,27 +104,29 @@
protected Instruction createInstruction(Configuration instruction) throws
ConfigurationException {
try {
String property = instruction.getAttribute("property");
+ String namespace = instruction.getAttribute("namespace", "DAV:");
XPath xPath = XPath.newInstance(instruction.getAttribute("xpath"));
- return new Instruction(xPath, property);
+ return new Instruction(xPath, new PropertyName(property, namespace));
} catch (JDOMException e) {
throw new ConfigurationException("Could not create xPath from given
attribute", instruction);
}
}
protected static class Instruction {
+
private XPath xPath;
- private String propertyName;
+ private PropertyName propertyName;
- public Instruction(XPath xPath, String propertyName) {
+ public Instruction(XPath xPath, PropertyName property) {
this.xPath = xPath;
- this.propertyName = propertyName;
+ this.propertyName = property;
}
public XPath getxPath() {
return xPath;
}
- public String getPropertyName() {
+ public PropertyName getPropertyName() {
return propertyName;
}
}
1.4 +15 -7
jakarta-slide/src/share/org/apache/slide/extractor/PropertyExtractorTrigger.java
Index: PropertyExtractorTrigger.java
===================================================================
RCS file:
/home/cvs/jakarta-slide/src/share/org/apache/slide/extractor/PropertyExtractorTrigger.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- PropertyExtractorTrigger.java 5 Jun 2004 12:20:19 -0000 1.3
+++ PropertyExtractorTrigger.java 14 Jul 2004 16:44:35 -0000 1.4
@@ -27,6 +27,7 @@
import java.util.Iterator;
import java.util.Map;
+import org.apache.slide.common.PropertyName;
import org.apache.slide.content.NodeRevisionContent;
import org.apache.slide.content.NodeRevisionDescriptor;
import org.apache.slide.content.NodeRevisionDescriptors;
@@ -38,7 +39,6 @@
* @author <a href="mailto:[EMAIL PROTECTED]">Daniel Florey</a>
* @version $Revision$
*/
-
public class PropertyExtractorTrigger extends ContentAdapter {
public void create(ContentEvent event) throws VetoException {
store(event);
@@ -54,8 +54,16 @@
for ( int i = 0; i < extractor.length; i++ ) {
Map extractedProperties = extractor[i].extract(new
ByteArrayInputStream(content.getContentBytes()));
for ( Iterator j = extractedProperties.entrySet().iterator();
j.hasNext(); ) {
- Map.Entry entry = (Map.Entry)j.next();
- descriptor.setProperty((String)entry.getKey(),
entry.getValue());
+ Map.Entry entry = (Map.Entry) j.next();
+ final Object key = entry.getKey();
+ if (key instanceof PropertyName) {
+ final String name = ((PropertyName) key).getName();
+ final String namespace = ((PropertyName)
key).getNamespace();
+ descriptor.setProperty(name, namespace,
entry.getValue());
+ }
+ else {
+ descriptor.setProperty((String) entry.getKey(),
entry.getValue());
+ }
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]