You are viewing a plain text version of this content. The canonical link for it is here.
Posted to slide-dev@jakarta.apache.org by st...@apache.org on 2004/07/30 17:01:11 UTC

cvs commit: jakarta-slide/proposals/jcrri/src/org/apache/slide/jcr/core AccessManagerImpl.java HierarchyManagerImpl.java Path.java InternalValue.java PropertyImpl.java Test.java TicketImpl.java WorkspaceImpl.java NodeImpl.java

stefan      2004/07/30 08:01:11

  Modified:    proposals/jcrri/src/org/apache/slide/jcr/core
                        AccessManagerImpl.java HierarchyManagerImpl.java
                        Path.java InternalValue.java PropertyImpl.java
                        Test.java TicketImpl.java WorkspaceImpl.java
                        NodeImpl.java
  Log:
  jcrri
  
  Revision  Changes    Path
  1.11      +2 -3      jakarta-slide/proposals/jcrri/src/org/apache/slide/jcr/core/AccessManagerImpl.java
  
  Index: AccessManagerImpl.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/proposals/jcrri/src/org/apache/slide/jcr/core/AccessManagerImpl.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- AccessManagerImpl.java	30 Jul 2004 06:50:29 -0000	1.10
  +++ AccessManagerImpl.java	30 Jul 2004 15:01:10 -0000	1.11
  @@ -24,7 +24,6 @@
   package org.apache.slide.jcr.core;
   
   import org.apache.log4j.Logger;
  -import org.apache.slide.jcr.util.MalformedPathException;
   
   import javax.jcr.Credentials;
   import javax.jcr.ItemNotFoundException;
  
  
  
  1.6       +1 -2      jakarta-slide/proposals/jcrri/src/org/apache/slide/jcr/core/HierarchyManagerImpl.java
  
  Index: HierarchyManagerImpl.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/proposals/jcrri/src/org/apache/slide/jcr/core/HierarchyManagerImpl.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- HierarchyManagerImpl.java	30 Jul 2004 06:50:29 -0000	1.5
  +++ HierarchyManagerImpl.java	30 Jul 2004 15:01:10 -0000	1.6
  @@ -25,7 +25,6 @@
   
   import org.apache.log4j.Logger;
   import org.apache.slide.jcr.core.state.*;
  -import org.apache.slide.jcr.util.MalformedPathException;
   
   import javax.jcr.ItemNotFoundException;
   import javax.jcr.PathNotFoundException;
  
  
  
  1.9       +2 -4      jakarta-slide/proposals/jcrri/src/org/apache/slide/jcr/core/Path.java
  
  Index: Path.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/proposals/jcrri/src/org/apache/slide/jcr/core/Path.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- Path.java	30 Jul 2004 06:50:29 -0000	1.8
  +++ Path.java	30 Jul 2004 15:01:10 -0000	1.9
  @@ -23,8 +23,6 @@
    */
   package org.apache.slide.jcr.core;
   
  -import org.apache.slide.jcr.util.MalformedPathException;
  -
   import javax.jcr.NamespaceException;
   import javax.jcr.PathNotFoundException;
   import java.util.ArrayList;
  
  
  
  1.10      +2 -3      jakarta-slide/proposals/jcrri/src/org/apache/slide/jcr/core/InternalValue.java
  
  Index: InternalValue.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/proposals/jcrri/src/org/apache/slide/jcr/core/InternalValue.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- InternalValue.java	30 Jul 2004 06:50:29 -0000	1.9
  +++ InternalValue.java	30 Jul 2004 15:01:11 -0000	1.10
  @@ -24,7 +24,6 @@
   package org.apache.slide.jcr.core;
   
   import org.apache.slide.jcr.fs.FileSystemResource;
  -import org.apache.slide.jcr.util.MalformedPathException;
   import org.apache.slide.jcr.util.uuid.UUID;
   import org.apache.slide.jcr.util.ValueHelper;
   
  
  
  
  1.21      +2 -3      jakarta-slide/proposals/jcrri/src/org/apache/slide/jcr/core/PropertyImpl.java
  
  Index: PropertyImpl.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/proposals/jcrri/src/org/apache/slide/jcr/core/PropertyImpl.java,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- PropertyImpl.java	30 Jul 2004 06:50:29 -0000	1.20
  +++ PropertyImpl.java	30 Jul 2004 15:01:11 -0000	1.21
  @@ -30,7 +30,6 @@
   import org.apache.slide.jcr.core.state.PersistentPropertyState;
   import org.apache.slide.jcr.core.state.PropertyState;
   import org.apache.slide.jcr.util.IteratorHelper;
  -import org.apache.slide.jcr.util.MalformedPathException;
   import org.apache.slide.jcr.util.uuid.UUID;
   
   import javax.jcr.*;
  
  
  
  1.12      +8 -4      jakarta-slide/proposals/jcrri/src/org/apache/slide/jcr/core/Test.java
  
  Index: Test.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/proposals/jcrri/src/org/apache/slide/jcr/core/Test.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- Test.java	22 Jul 2004 16:14:22 -0000	1.11
  +++ Test.java	30 Jul 2004 15:01:11 -0000	1.12
  @@ -70,6 +70,8 @@
   	Ticket t = r.login(new SimpleCredentials("anonymous", "".toCharArray()), null);
   	Workspace wsp = t.getWorkspace();
   
  +	wsp.exportSysView("/", new FileOutputStream("d:/temp/export0.xml"), true, false);
  +
   	NodeTypeManager ntMgr = wsp.getNodeTypeManager();
   	NodeTypeIterator ntIter = ntMgr.getAllNodeTypes();
   	while (ntIter.hasNext()) {
  @@ -92,7 +94,7 @@
   	System.out.println();
   	dumpTree(root, System.out);
   
  -	t.move("/foo", "/misc/bla");
  +	//t.move("/foo", "/misc/bla");
   	System.out.println("after move...");
   	System.out.println();
   	dumpTree(root, System.out);
  @@ -109,7 +111,7 @@
   	    root.save();
   	}
   
  -	//root.setProperty("blob", new FileInputStream(new File("d:/temp/jcrri.zip")));
  +	root.setProperty("blob", new FileInputStream(new File("d:/temp/jcrri.zip")));
   
   	root.setProperty("bla", 1);
   	root.setProperty("bla", 1.4);
  @@ -176,7 +178,7 @@
   	    imported = root.getNode("imported");
   	}
   
  -	//importNode(new File("d:/dev/jcr/ri/src"), imported);
  +	importNode(new File("d:/dev/jcr/ri/src"), imported);
   
   	if (root.hasNode("foo")) {
   	    root.remove("foo");
  @@ -219,6 +221,8 @@
   	System.out.println("exiting...");
   	System.out.println();
   	((WorkspaceImpl) wsp).dump(System.out);
  +
  +	wsp.exportSysView("/", new FileOutputStream("d:/temp/export1.xml"), false, false);
   
   	repProps = ((RepositoryImpl) r).getProperties();
   	System.out.println("repository properties:");
  
  
  
  1.19      +59 -25    jakarta-slide/proposals/jcrri/src/org/apache/slide/jcr/core/TicketImpl.java
  
  Index: TicketImpl.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/proposals/jcrri/src/org/apache/slide/jcr/core/TicketImpl.java,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- TicketImpl.java	30 Jul 2004 06:50:29 -0000	1.18
  +++ TicketImpl.java	30 Jul 2004 15:01:11 -0000	1.19
  @@ -27,8 +27,8 @@
   import org.apache.slide.jcr.core.nodetype.*;
   import org.apache.slide.jcr.core.state.NodeState;
   import org.apache.slide.jcr.core.state.TicketItemStateManager;
  -import org.apache.slide.jcr.util.MalformedPathException;
  -import org.xml.sax.ContentHandler;
  +import org.xml.sax.*;
  +import org.xml.sax.helpers.XMLReaderFactory;
   
   import javax.jcr.*;
   import javax.jcr.access.AccessDeniedException;
  @@ -443,44 +443,78 @@
       }
   
       /**
  -     * @see Ticket#importXML(String, InputStream)
  +     * @see Ticket#getImportContentHandler(String)
        */
  -    public void importXML(String parentAbsPath, InputStream in)
  -	    throws IOException, PathNotFoundException, ItemExistsException,
  -	    ConstraintViolationException, InvalidSerializedDataException,
  -	    RepositoryException {
  -	// @todo implement importXML
  -	throw new RepositoryException("Ticket.importXML() is not implemented yet.");
  -
  -	// @todo rewrite Deserializer to support xml document view 
  -/*
  +    public ContentHandler getImportContentHandler(String parentAbsPath) throws PathNotFoundException, RepositoryException {
   	Item item = null;
   	try {
   	    item = itemMgr.getItem(Path.create(parentAbsPath, getNamespaceResolver(), true));
   	} catch (MalformedPathException mpe) {
  -	    String msg = "invalid path: " + parentAbsPath;
  +	    String msg = parentAbsPath + ": invalid path";
   	    log.error(msg, mpe);
   	    throw new RepositoryException(msg, mpe);
   	} catch (AccessDeniedException ade) {
   	    throw new PathNotFoundException(parentAbsPath);
   	}
   	if (!item.isNode()) {
  -	    log.error("node expected: " + parentAbsPath);
  -	    throw new RepositoryException("node expected: " + parentAbsPath);
  +	    String msg = parentAbsPath + ": node expected";
  +	    log.error(msg);
  +	    throw new RepositoryException(msg);
   	}
   	Node parent = (Node) item;
  -	Deserializer.deserialize(parent, in);
  -	// persist imported node tree
  -	parent.save();
  -*/
  +
  +	// @todo implement ContentHandler for asynchronuos import of document xml view
  +	throw new RepositoryException("Ticket.getImportContentHandler() is not implemented yet.");
       }
   
       /**
  -     * @see Ticket#getImportContentHandler(String)
  +     * @see Ticket#importXML(String, InputStream)
        */
  -    public ContentHandler getImportContentHandler(String parentAbsPath) throws PathNotFoundException, RepositoryException {
  -	// @todo implement ContentHandler for asynchronuos import of document xml view
  -	throw new RepositoryException("Ticket.getImportContentHandler() is not implemented yet.");
  +    public void importXML(String parentAbsPath, InputStream in)
  +	    throws IOException, PathNotFoundException, ItemExistsException,
  +	    ConstraintViolationException, InvalidSerializedDataException,
  +	    RepositoryException {
  +	ContentHandler handler = getImportContentHandler(parentAbsPath);
  +	try {
  +	    XMLReader parser = XMLReaderFactory.createXMLReader("org.apache.xerces.parsers.SAXParser");
  +/*
  +	    parser.setFeature("http://xml.org/sax/features/validation", true);
  +	    parser.setFeature("http://apache.org/xml/features/validation/schema", true);
  +	    parser.setFeature("http://apache.org/xml/features/validation/schema-full-checking", true);
  +*/
  +	    parser.setContentHandler(handler);
  +	    parser.setErrorHandler(new ErrorHandler() {
  +		public void error(SAXParseException exception) /*throws SAXException*/ {
  +		    log.error("error encountered while parsing XML stream", exception);
  +		}
  +
  +		public void fatalError(SAXParseException exception) /*throws SAXException*/ {
  +		    log.error("fatal error encountered while parsing XML stream", exception);
  +		}
  +
  +		public void warning(SAXParseException exception) /*throws SAXException*/ {
  +		    log.warn("warning encountered while parsing XML stream", exception);
  +		}
  +	    });
  +/*
  +	    // validate against system view schema
  +	    URL urlSchema = this.class.getClassLoader().getResource("javax/jcr/systemview.xsd");
  +	    parser.setProperty("http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation", urlSchema.toString());
  +	    parser.setProperty("http://apache.org/xml/properties/schema/external-schemaLocation",
  +		    urlSchema.toString() + " " + "http://www.jcp.org/jcr/sv/1.0");
  +*/
  +	    parser.parse(new InputSource(in));
  +	} catch (SAXException se) {
  +	    // check for wrapped repository exception
  +	    Exception e = se.getException();
  +	    if (e != null && e instanceof RepositoryException) {
  +		throw (RepositoryException) e;
  +	    } else {
  +		String msg = "failed to parse XML stream";
  +		log.error(msg, se);
  +		throw new InvalidSerializedDataException(msg, se);
  +	    }
  +	}
       }
   
       /**
  
  
  
  1.12      +55 -37    jakarta-slide/proposals/jcrri/src/org/apache/slide/jcr/core/WorkspaceImpl.java
  
  Index: WorkspaceImpl.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/proposals/jcrri/src/org/apache/slide/jcr/core/WorkspaceImpl.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- WorkspaceImpl.java	30 Jul 2004 06:50:29 -0000	1.11
  +++ WorkspaceImpl.java	30 Jul 2004 15:01:11 -0000	1.12
  @@ -26,8 +26,9 @@
   import org.apache.log4j.Logger;
   import org.apache.slide.jcr.core.nodetype.*;
   import org.apache.slide.jcr.core.state.*;
  -import org.apache.slide.jcr.util.MalformedPathException;
   import org.apache.slide.jcr.util.uuid.UUID;
  +import org.apache.xml.serialize.OutputFormat;
  +import org.apache.xml.serialize.XMLSerializer;
   import org.xml.sax.ContentHandler;
   import org.xml.sax.SAXException;
   
  @@ -932,7 +933,30 @@
        */
       public void exportDocView(String absPath, ContentHandler contentHandler, boolean binaryAsLink, boolean noRecurse)
   	    throws PathNotFoundException, SAXException, RepositoryException {
  +	// check path & retrieve state
  +	Path path;
  +	Path.PathElement name;
  +	PersistentNodeState state;
  +	try {
  +	    path = Path.create(absPath, ticket.getNamespaceResolver(), true);
  +	    name = path.getNameElement();
  +	    state = getNodeState(path, hierMgr, persistentStateMgr);
  +	} catch (MalformedPathException mpe) {
  +	    String msg = "invalid path: " + absPath;
  +	    log.error(msg, mpe);
  +	    throw new RepositoryException(msg, mpe);
  +	}
  +
  +	// check read access
  +	if (!ticket.getAccessManager().isGranted(state.getId(), Permission.READ_ITEM)) {
  +	    throw new PathNotFoundException(absPath);
  +	}
   	// @todo implement export of document xml view
  +/*
  +	new DocViewSAXEventGenerator(state, name.getName(), noRecurse, binaryAsLink,
  +		persistentStateMgr, (NamespaceRegistryImpl) rep.getNamespaceRegistry(),
  +		ticket.getAccessManager(), hierMgr, contentHandler).serialize();
  +*/
   	throw new RepositoryException("not yet implemented");
       }
   
  @@ -941,8 +965,13 @@
        */
       public void exportDocView(String absPath, OutputStream out, boolean binaryAsLink, boolean noRecurse)
   	    throws IOException, PathNotFoundException, RepositoryException {
  -	// @todo implement export of document xml view
  -	throw new RepositoryException("not yet implemented");
  +	OutputFormat format = new OutputFormat("xml", "UTF-8", true);
  +	XMLSerializer serializer = new XMLSerializer(out, format);
  +	try {
  +	    exportDocView(absPath, serializer.asContentHandler(), binaryAsLink, noRecurse);
  +	} catch (SAXException se) {
  +	    throw new RepositoryException(se);
  +	}
       }
   
       /**
  @@ -950,51 +979,40 @@
        */
       public void exportSysView(String absPath, ContentHandler contentHandler, boolean binaryAsLink, boolean noRecurse)
   	    throws PathNotFoundException, SAXException, RepositoryException {
  -	// @todo implement export of system xml view
  -	// @todo rewrite sax event generator
  -	throw new RepositoryException("not yet implemented");
  -	/*
  -	Item item = null;
  -	try {
  -	    item = itemMgr.getItem(Path.create(absPath, ticket.getNamespaceResolver(), true));
  +	// check path & retrieve state
  +	Path path;
  +	Path.PathElement name;
  +	PersistentNodeState state;
  +	try {
  +	    path = Path.create(absPath, ticket.getNamespaceResolver(), true);
  +	    name = path.getNameElement();
  +	    state = getNodeState(path, hierMgr, persistentStateMgr);
   	} catch (MalformedPathException mpe) {
   	    String msg = "invalid path: " + absPath;
   	    log.error(msg, mpe);
   	    throw new RepositoryException(msg, mpe);
  -	} catch (AccessDeniedException ade) {
  -	    throw new PathNotFoundException(absPath);
   	}
  -	if (!item.isNode()) {
  -	    log.error("node expected: " + absPath);
  -	    throw new RepositoryException("node expected: " + absPath);
  +
  +	// check read access
  +	if (!ticket.getAccessManager().isGranted(state.getId(), Permission.READ_ITEM)) {
  +	    throw new PathNotFoundException(absPath);
   	}
  -	new SAXEventGenerator((Node) item, noRecurse, binaryAsLink, contentHandler).serialize();
  -	*/
  +
  +	new SysViewSAXEventGenerator(state, name.getName(), noRecurse, binaryAsLink,
  +		persistentStateMgr, (NamespaceRegistryImpl) rep.getNamespaceRegistry(),
  +		ticket.getAccessManager(), hierMgr, contentHandler).serialize();
       }
   
       /**
        * @see Workspace#exportSysView(String, OutputStream, boolean, boolean)
        */
       public void exportSysView(String absPath, OutputStream out, boolean binaryAsLink, boolean noRecurse) throws IOException, PathNotFoundException, RepositoryException {
  -	// @todo implement export of system xml view
  -	// @todo rewrite Serializer according to spec
  -	throw new RepositoryException("not yet implemented");
  -	/*
  -	Item item = null;
  +	OutputFormat format = new OutputFormat("xml", "UTF-8", true);
  +	XMLSerializer serializer = new XMLSerializer(out, format);
   	try {
  -	    item = itemMgr.getItem(Path.create(absPath, ticket.getNamespaceResolver(), true));
  -	} catch (MalformedPathException mpe) {
  -	    String msg = "invalid path: " + absPath;
  -	    log.error(msg, mpe);
  -	    throw new RepositoryException(msg, mpe);
  -	} catch (AccessDeniedException ade) {
  -	    throw new PathNotFoundException(absPath);
  -	}
  -	if (!item.isNode()) {
  -	    log.error("node expected: " + absPath);
  -	    throw new RepositoryException("node expected: " + absPath);
  +	    exportSysView(absPath, serializer.asContentHandler(), binaryAsLink, noRecurse);
  +	} catch (SAXException se) {
  +	    throw new RepositoryException(se);
   	}
  -	new Serializer((Node) item, noRecurse, binaryAsLink, out).serialize();
  -	*/
       }
   }
  
  
  
  1.29      +2 -3      jakarta-slide/proposals/jcrri/src/org/apache/slide/jcr/core/NodeImpl.java
  
  Index: NodeImpl.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/proposals/jcrri/src/org/apache/slide/jcr/core/NodeImpl.java,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- NodeImpl.java	30 Jul 2004 06:50:29 -0000	1.28
  +++ NodeImpl.java	30 Jul 2004 15:01:11 -0000	1.29
  @@ -29,7 +29,6 @@
   import org.apache.slide.jcr.core.version.VersionImpl;
   import org.apache.slide.jcr.util.ChildrenCollector;
   import org.apache.slide.jcr.util.IteratorHelper;
  -import org.apache.slide.jcr.util.MalformedPathException;
   import org.apache.slide.jcr.util.uuid.UUID;
   
   import javax.jcr.*;
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: slide-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-dev-help@jakarta.apache.org