stephan 2002/06/29 14:04:12
Modified: src/scratchpad/src/org/apache/cocoon/components/source/impl
SourceInspectorManager.java
src/scratchpad/src/org/apache/cocoon/generation
SourceDescriptionGenerator.java
Added: src/scratchpad/src/org/apache/cocoon/components/source/impl
GIFSourceInspector.java JPEGSourceInspector.java
sourceinspector.xconf
Log:
Add two implementations for source inspectors based on the
ImageDirectoryGenerator.
Add support for the source inspectors to the SourceDescriptionGenerator.
Revision Changes Path
1.2 +14 -4
xml-cocoon2/src/scratchpad/src/org/apache/cocoon/components/source/impl/SourceInspectorManager.java
Index: SourceInspectorManager.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/scratchpad/src/org/apache/cocoon/components/source/impl/SourceInspectorManager.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- SourceInspectorManager.java 29 Jun 2002 08:52:53 -0000 1.1
+++ SourceInspectorManager.java 29 Jun 2002 21:04:11 -0000 1.2
@@ -70,6 +70,9 @@
import org.apache.avalon.framework.context.Context;
import org.apache.avalon.framework.logger.AbstractLogEnabled;
import org.apache.avalon.framework.logger.LogEnabled;
+import org.apache.avalon.framework.parameters.ParameterException;
+import org.apache.avalon.framework.parameters.Parameterizable;
+import org.apache.avalon.framework.parameters.Parameters;
import org.apache.avalon.framework.thread.ThreadSafe;
import org.apache.excalibur.source.Source;
@@ -88,7 +91,7 @@
*/
public class SourceInspectorManager extends AbstractLogEnabled implements
SourceInspector, ThreadSafe, Contextualizable, Composable, Configurable,
- Initializable, Recyclable, Disposable {
+ Initializable, Disposable {
private ArrayList inspectors = new ArrayList();
@@ -137,6 +140,13 @@
if (inspector instanceof Configurable)
((Configurable)inspector).configure(configurations[i]);
+ try {
+ if (inspector instanceof Parameterizable)
+
((Parameterizable)inspector).parameterize(Parameters.fromConfiguration(configurations[i]));
+ } catch (ParameterException pe) {
+ throw new ConfigurationException("Could not parameterize
inspector", pe);
+ }
+
inspectors.add(inspector);
}
}
@@ -174,7 +184,7 @@
* threads, etc. What is categorised as "costly" resources is determined on
* a case by case analysis.
*/
- public void recycle() {
+ /*public void recycle() {
SourceInspector inspector;
for(int i=0; i<this.inspectors.size(); i++) {
inspector = (SourceInspector)this.inspectors.get(i);
@@ -182,7 +192,7 @@
if (inspector instanceof Recyclable)
((Recyclable)inspector).recycle();
}
- }
+ }*/
/**
* The dispose operation is called at the end of a components lifecycle.
1.1
xml-cocoon2/src/scratchpad/src/org/apache/cocoon/components/source/impl/GIFSourceInspector.java
Index: GIFSourceInspector.java
===================================================================
/*
* The Apache Software License, Version 1.1
*
*
* Copyright (c) 2001 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache Cocoon" and "Apache Software Foundation" must
* not be used to endorse or promote products derived from this
* software without prior written permission. For written
* permission, please contact [EMAIL PROTECTED]
*
* 5. Products derived from this software may not be called "Apache",
* nor may "Apache" appear in their name, without prior written
* permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
package org.apache.cocoon.components.source.impl;
import org.apache.avalon.excalibur.xml.Parser;
import org.apache.avalon.excalibur.xml.xpath.XPathProcessor;
import org.apache.avalon.framework.activity.Startable;
import org.apache.avalon.framework.component.ComponentException;
import org.apache.avalon.framework.component.ComponentManager;
import org.apache.avalon.framework.component.Composable;
import org.apache.avalon.framework.logger.AbstractLogEnabled;
import org.apache.avalon.framework.thread.ThreadSafe;
import org.apache.excalibur.source.Source;
import org.apache.excalibur.source.SourceException;
import org.apache.cocoon.components.source.SourceInspector;
import org.apache.cocoon.components.source.helpers.SourceProperty;
import java.io.BufferedInputStream;
import java.io.IOException;
/**
* This source inspector adds extra attributes for image files.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Stephan Michels</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Donald A. Ball Jr.</a>
* @version $Id: GIFSourceInspector.java,v 1.1 2002/06/29 21:04:11 stephan Exp $
*/
public class GIFSourceInspector extends AbstractLogEnabled implements
SourceInspector, ThreadSafe {
private String PROPERTY_NS = "http://xml.apache.org/cocoon/GIFSourceInspector";
private static String IMAGE_WIDTH_PROPERTY_NAME = "width";
private static String IMAGE_HEIGHT_PROPERTY_NAME = "height";
public SourceProperty getSourceProperty(Source source, String namespace, String
name)
throws SourceException {
if ((namespace.equals(PROPERTY_NS)) &&
((name.equals(IMAGE_WIDTH_PROPERTY_NAME)) ||
(name.equals(IMAGE_HEIGHT_PROPERTY_NAME))) &&
(source.getSystemId().endsWith(".gif")) && (isGIFFile(source))) {
if (name.equals(IMAGE_WIDTH_PROPERTY_NAME))
return new SourceProperty(PROPERTY_NS, IMAGE_WIDTH_PROPERTY_NAME,
String.valueOf(getGifSize(source)[0]));
if (name.equals(IMAGE_HEIGHT_PROPERTY_NAME))
return new SourceProperty(PROPERTY_NS, IMAGE_HEIGHT_PROPERTY_NAME,
String.valueOf(getGifSize(source)[1]));
}
return null;
}
public SourceProperty[] getSourceProperties(Source source) throws
SourceException {
if ((source.getSystemId().endsWith(".gif")) &&
(isGIFFile(source))) {
int[] size = getGifSize(source);
return new SourceProperty[] {
new SourceProperty(PROPERTY_NS, IMAGE_WIDTH_PROPERTY_NAME,
String.valueOf(size[0])),
new SourceProperty(PROPERTY_NS, IMAGE_HEIGHT_PROPERTY_NAME,
String.valueOf(size[1]))
};
}
return null;
}
private boolean isGIFFile(Source source) throws SourceException {
BufferedInputStream in = null;
try {
in = new BufferedInputStream(source.getInputStream());
byte[] buf = new byte[3];
int count = in.read(buf, 0, 3);
if(count < 3) return false;
if ((buf[0] == (byte)'G') &&
(buf[1] == (byte)'I') &&
(buf[2] == (byte)'F'))
return true;
} catch (IOException ioe) {
throw new SourceException("Could not read source", ioe);
} finally {
if (in != null)
try {
in.close();
} catch(Exception e) {}
}
return false;
}
/**
* Returns width as first element, height as second
*/
private int[] getGifSize(Source source) throws SourceException {
BufferedInputStream in = null;
try {
in = new BufferedInputStream(source.getInputStream());
byte[] buf = new byte[10];
int count = in.read(buf, 0, 10);
if(count < 10) throw new SourceException("Not a valid GIF file!");
if((buf[0]) != (byte)'G'
|| (buf[1]) != (byte)'I'
|| (buf[2]) != (byte)'F' )
throw new SourceException("Not a valid GIF file!");
int w1 = ((int)buf[6] & 0xff) | (buf[6] & 0x80);
int w2 = ((int)buf[7] & 0xff) | (buf[7] & 0x80);
int h1 = ((int)buf[8] & 0xff) | (buf[8] & 0x80);
int h2 = ((int)buf[9] & 0xff) | (buf[9] & 0x80);
int width = w1 + (w2 << 8);
int height = h1 + (h2 << 8);
int[] dim = { width, height };
return dim;
} catch (IOException ioe) {
throw new SourceException("Could not read source", ioe);
} finally {
if (in != null)
try {
in.close();
} catch (Exception e) {}
}
}
}
1.1
xml-cocoon2/src/scratchpad/src/org/apache/cocoon/components/source/impl/JPEGSourceInspector.java
Index: JPEGSourceInspector.java
===================================================================
/*
* The Apache Software License, Version 1.1
*
*
* Copyright (c) 2001 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache Cocoon" and "Apache Software Foundation" must
* not be used to endorse or promote products derived from this
* software without prior written permission. For written
* permission, please contact [EMAIL PROTECTED]
*
* 5. Products derived from this software may not be called "Apache",
* nor may "Apache" appear in their name, without prior written
* permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
package org.apache.cocoon.components.source.impl;
import org.apache.avalon.excalibur.xml.Parser;
import org.apache.avalon.excalibur.xml.xpath.XPathProcessor;
import org.apache.avalon.framework.activity.Startable;
import org.apache.avalon.framework.component.ComponentException;
import org.apache.avalon.framework.component.ComponentManager;
import org.apache.avalon.framework.component.Composable;
import org.apache.avalon.framework.logger.AbstractLogEnabled;
import org.apache.avalon.framework.thread.ThreadSafe;
import org.apache.excalibur.source.Source;
import org.apache.excalibur.source.SourceException;
import org.apache.cocoon.components.source.SourceInspector;
import org.apache.cocoon.components.source.helpers.SourceProperty;
import java.io.BufferedInputStream;
import java.io.IOException;
/**
* This source inspector adds extra attributes for image files.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Stephan Michels</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Donald A. Ball Jr.</a>
* @version $Id: JPEGSourceInspector.java,v 1.1 2002/06/29 21:04:11 stephan Exp $
*/
public class JPEGSourceInspector extends AbstractLogEnabled implements
SourceInspector, ThreadSafe {
private String PROPERTY_NS = "http://xml.apache.org/cocoon/JPEGSourceInspector";
private static String IMAGE_WIDTH_PROPERTY_NAME = "width";
private static String IMAGE_HEIGHT_PROPERTY_NAME = "height";
private String propertyname = "result";
private String extension = null;
private String xpath = null;
private ComponentManager manager = null;
public SourceProperty getSourceProperty(Source source, String namespace, String
name)
throws SourceException {
if ((namespace.equals(PROPERTY_NS)) &&
((name.equals(IMAGE_WIDTH_PROPERTY_NAME)) ||
(name.equals(IMAGE_HEIGHT_PROPERTY_NAME))) &&
(source.getSystemId().endsWith(".jpg")) && (isJPEGFile(source))) {
if (name.equals(IMAGE_WIDTH_PROPERTY_NAME))
return new SourceProperty(PROPERTY_NS, IMAGE_WIDTH_PROPERTY_NAME,
String.valueOf(getJpegSize(source)[0]));
if (name.equals(IMAGE_HEIGHT_PROPERTY_NAME))
return new SourceProperty(PROPERTY_NS, IMAGE_HEIGHT_PROPERTY_NAME,
String.valueOf(getJpegSize(source)[1]));
}
return null;
}
public SourceProperty[] getSourceProperties(Source source) throws
SourceException {
if ((source.getSystemId().endsWith(".jpg")) &&
(isJPEGFile(source))) {
int[] size = getJpegSize(source);
return new SourceProperty[] {
new SourceProperty(PROPERTY_NS, IMAGE_WIDTH_PROPERTY_NAME,
String.valueOf(size[0])),
new SourceProperty(PROPERTY_NS, IMAGE_HEIGHT_PROPERTY_NAME,
String.valueOf(size[1]))
};
}
return null;
}
private boolean isJPEGFile(Source source) throws SourceException {
BufferedInputStream in = null;
try {
in = new BufferedInputStream(source.getInputStream());
byte[] buf = new byte[2];
int count = in.read(buf, 0, 2);
if (count < 2)
return false;
if ((buf[0] == (byte)0xFF) &&
(buf[1] == (byte)0xD8))
return true;
} catch (IOException ioe) {
throw new SourceException("Could not read source", ioe);
} finally {
if (in != null)
try {
in.close();
} catch(Exception e) {}
}
return false;
}
/**
* returns width as first element, height as second
*/
private int[] getJpegSize(Source source) throws SourceException {
BufferedInputStream in = null;
try {
in = new BufferedInputStream(source.getInputStream());
// check for "magic" header
byte[] buf = new byte[2];
int count = in.read(buf, 0, 2);
if (count < 2) throw new SourceException("Not a valid Jpeg file!");
if((buf[0]) != (byte)0xFF
|| (buf[1]) != (byte)0xD8 )
throw new SourceException("Not a valid Jpeg file!");
int width = 0;
int height = 0;
boolean done = false;
int ch = 0;
try {
while(ch != 0xDA && !done) {
/* Find next marker (JPEG markers begin with 0xFF) */
while (ch != 0xFF) { ch = in.read(); }
/* JPEG markers can be padded with unlimited 0xFF's */
while (ch == 0xFF) { ch = in.read(); }
/* Now, ch contains the value of the marker. */
if(ch >= 0xC0 && ch <= 0xC3) {
// skip 3 bytes
in.read();
in.read();
in.read();
height = 256 * in.read();
height += in.read();
width = 256 * in.read();
width += in.read();
done = true;
} else {
/* We MUST skip variables, since FF's within variable names
are NOT valid JPEG markers */
int length = 256 * in.read();
length += in.read();
if(length < 2) throw new RuntimeException("Erroneous JPEG
marker length");
for(int foo = 0; foo<length-2; foo++)
in.read();
}
}
} catch (Exception e) {
throw new SourceException("Not a valid Jpeg file!", e);
}
int[] dim = { width, height };
return dim;
} catch (IOException ioe) {
throw new SourceException("Could not read source", ioe);
} finally {
if (in != null)
try {
in.close();
} catch (Exception e) {}
}
}
}
1.1
xml-cocoon2/src/scratchpad/src/org/apache/cocoon/components/source/impl/sourceinspector.xconf
Index: sourceinspector.xconf
===================================================================
<?xml version="1.0"?>
<xconf xpath="/cocoon"
unless="component[@role='org.apache.cocoon.components.source.SourceInspector']">
<!-- Source inspectors:
Each source inspectors helps to retrieve properties from sources
-->
<component role="org.apache.cocoon.components.source.SourceInspector"
class="org.apache.cocoon.components.source.impl.SourceInspectorManager"
logger="core.source.sourceinspector">
<sourceinspector
class="org.apache.cocoon.components.source.impl.XPathSourceInspector">
<parameter name="namespace" value="http://xml.apache.org/cocoon/xdoc/1.0"/>
<parameter name="name" value="title"/>
<parameter name="extension" value=".xdoc"/>
<parameter name="xpath" value="/document/header/title"/>
</sourceinspector>
<sourceinspector
class="org.apache.cocoon.components.source.impl.JPEGSourceInspector"/>
<sourceinspector
class="org.apache.cocoon.components.source.impl.GIFSourceInspector"/>
</component>
</xconf>
1.5 +45 -11
xml-cocoon2/src/scratchpad/src/org/apache/cocoon/generation/SourceDescriptionGenerator.java
Index: SourceDescriptionGenerator.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/scratchpad/src/org/apache/cocoon/generation/SourceDescriptionGenerator.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- SourceDescriptionGenerator.java 27 Jun 2002 16:53:38 -0000 1.4
+++ SourceDescriptionGenerator.java 29 Jun 2002 21:04:12 -0000 1.5
@@ -56,9 +56,9 @@
import org.apache.avalon.framework.activity.Disposable;
import org.apache.avalon.framework.component.Component;
import org.apache.avalon.framework.component.ComponentException;
-import org.apache.avalon.framework.component.ComponentManager;
-import org.apache.avalon.framework.component.ComponentSelector;
-import org.apache.avalon.framework.component.Composable;
+//import org.apache.avalon.framework.component.ComponentManager;
+//import org.apache.avalon.framework.component.ComponentSelector;
+//import org.apache.avalon.framework.component.Composable;
import org.apache.avalon.framework.configuration.Configurable;
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.ConfigurationException;
@@ -69,6 +69,7 @@
import org.apache.cocoon.components.source.InspectableSource;
import org.apache.cocoon.components.source.LockableSource;
import org.apache.cocoon.components.source.RestrictableSource;
+import org.apache.cocoon.components.source.SourceInspector;
import org.apache.cocoon.components.source.WriteableSource;
import org.apache.cocoon.components.source.VersionableSource;
import org.apache.cocoon.components.source.helpers.SourceCredential;
@@ -220,28 +221,34 @@
SOURCE_PREFIX+":"+CONTENTLENGTH_NODE_NAME, new AttributesImpl());
this.contentHandler.characters(String.valueOf(source.getContentLength()).toCharArray(),
0,
String.valueOf(source.getContentLength()).length());
- this.contentHandler.endElement(SOURCE_NS, CONTENTLENGTH_NODE_NAME,
SOURCE_PREFIX+":"+CONTENTLENGTH_NODE_NAME);
+ this.contentHandler.endElement(SOURCE_NS, CONTENTLENGTH_NODE_NAME,
+
SOURCE_PREFIX+":"+CONTENTLENGTH_NODE_NAME);
this.contentHandler.startElement(SOURCE_NS, LASTMODIFIED_NODE_NAME,
SOURCE_PREFIX+":"+LASTMODIFIED_NODE_NAME, new AttributesImpl());
this.contentHandler.characters(String.valueOf(source.getLastModified()).toCharArray(),
0,
String.valueOf(source.getLastModified()).length());
- this.contentHandler.endElement(SOURCE_NS, LASTMODIFIED_NODE_NAME,
SOURCE_PREFIX+":"+LASTMODIFIED_NODE_NAME);
+ this.contentHandler.endElement(SOURCE_NS, LASTMODIFIED_NODE_NAME,
+
SOURCE_PREFIX+":"+LASTMODIFIED_NODE_NAME);
if (source instanceof VersionableSource) {
VersionableSource versionablesource = (VersionableSource)source;
if (versionablesource.isVersioned()) {
this.contentHandler.startElement(SOURCE_NS, REVISION_NODE_NAME,
-
SOURCE_PREFIX+":"+REVISION_NODE_NAME, new AttributesImpl());
+
SOURCE_PREFIX+":"+REVISION_NODE_NAME,
+ new AttributesImpl());
this.contentHandler.characters(versionablesource.getSourceRevision().toCharArray(), 0,
versionablesource.getSourceRevision().length());
- this.contentHandler.endElement(SOURCE_NS, REVISION_NODE_NAME,
SOURCE_PREFIX+":"+REVISION_NODE_NAME);
+ this.contentHandler.endElement(SOURCE_NS, REVISION_NODE_NAME,
+
SOURCE_PREFIX+":"+REVISION_NODE_NAME);
this.contentHandler.startElement(SOURCE_NS,
REVISIONBRANCH_NODE_NAME,
-
SOURCE_PREFIX+":"+REVISIONBRANCH_NODE_NAME, new AttributesImpl());
+
SOURCE_PREFIX+":"+REVISIONBRANCH_NODE_NAME,
+ new AttributesImpl());
this.contentHandler.characters(versionablesource.getSourceRevisionBranch().toCharArray(),
0,
versionablesource.getSourceRevisionBranch().length());
- this.contentHandler.endElement(SOURCE_NS,
REVISIONBRANCH_NODE_NAME, SOURCE_PREFIX+":"+REVISIONBRANCH_NODE_NAME);
+ this.contentHandler.endElement(SOURCE_NS,
REVISIONBRANCH_NODE_NAME,
+
SOURCE_PREFIX+":"+REVISIONBRANCH_NODE_NAME);
}
}
@@ -249,6 +256,32 @@
if (source instanceof InspectableSource)
pushSourceProperties((InspectableSource)source);
+
+ SourceInspector inspector = null;
+ try {
+ inspector =
(SourceInspector)this.manager.lookup(SourceInspector.ROLE);
+
+ SourceProperty[] properties = inspector.getSourceProperties(source);
+ for (int i=0; i<properties.length; i++)
+ properties[i].toSAX(new EmbeddedXMLPipe(this.contentHandler));
+ } catch (ComponentException ce) {
+ getLogger().warn("Could not retrieve source inspector", ce);
+ } finally {
+ if (inspector!=null)
+ this.manager.release(inspector);
+ }
+
+ /*this.contentHandler.startPrefixMapping("prop",
property.getNamespace());
+
+ this.contentHandler.startElement(property.getNamespace(),
property.getName(),
+ property.getName(), new
AttributesImpl());
+
this.contentHandler.characters(property.getValue().toString().toCharArray(), 0,
+ property.getValue().toString().length());
+ this.contentHandler.endElement(property.getNamespace(),
property.getName(),
+ property.getName());
+
+ this.contentHandler.endPrefixMapping("prop");*/
+
/*if (source instanceof RestrictableSource)
pushSourcePermissions((RestrictableSource)source);*/
if (source instanceof LockableSource)
@@ -304,7 +337,8 @@
this.contentHandler.endElement(RDF_NS, SEQUENCE_NODE_NAME,
RDF_PREFIX+':'+SEQUENCE_NODE_NAME);
- this.contentHandler.endElement(SOURCE_NS, CHILDREN_NODE_NAME,
SOURCE_PREFIX+":"+CHILDREN_NODE_NAME);
+ this.contentHandler.endElement(SOURCE_NS, CHILDREN_NODE_NAME,
+
SOURCE_PREFIX+":"+CHILDREN_NODE_NAME);
this.contentHandler.endPrefixMapping(SOURCE_PREFIX);
}
----------------------------------------------------------------------
In case of troubles, e-mail: [EMAIL PROTECTED]
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]