You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by an...@apache.org on 2006/01/13 12:13:30 UTC
svn commit: r368683 [2/8] - in
/incubator/jackrabbit/trunk/contrib/jcr-server: client/
client/src/java/org/apache/jackrabbit/webdav/client/methods/ server/
server/src/java/org/apache/jackrabbit/server/
server/src/java/org/apache/jackrabbit/server/io/ s...
Modified: incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/server/io/ExportContextImpl.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/server/io/ExportContextImpl.java?rev=368683&r1=368682&r2=368683&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/server/io/ExportContextImpl.java (original)
+++ incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/server/io/ExportContextImpl.java Fri Jan 13 03:11:35 2006
@@ -49,6 +49,7 @@
private final OutputContext outputCtx;
private File outFile;
+ private OutputStream outStream;
public ExportContextImpl(Item exportRoot, OutputContext outputCtx) throws IOException {
super(exportRoot, (outputCtx != null) ? outputCtx.hasStream() : false, null);
@@ -70,7 +71,14 @@
checkCompleted();
if (hasStream()) {
try {
- return new FileOutputStream(outFile);
+ // clean up the stream retrieved by the preceeding handler, that
+ // did not behave properly and failed to export although initially
+ // willing to handle the export.
+ if (outStream != null) {
+ outStream.close();
+ }
+ outStream = new FileOutputStream(outFile);
+ return outStream;
} catch (IOException e) {
// unexpected error... ignore and return null
}
@@ -145,19 +153,35 @@
public void informCompleted(boolean success) {
checkCompleted();
completed = true;
+ // make sure the outputStream gets closed (and don't assume the handlers
+ // took care of this.
+ if (outStream != null) {
+ try {
+ outStream.close();
+ } catch (IOException e) {
+ // ignore
+ }
+ }
if (success) {
// write properties and data to the output-context
if (outputCtx != null) {
+ boolean hasContentLength = false;
Iterator it = properties.keySet().iterator();
while (it.hasNext()) {
String name = it.next().toString();
String value = properties.get(name).toString();
outputCtx.setProperty(name, value);
+ // check for content-length
+ hasContentLength = DavConstants.HEADER_CONTENT_LENGTH.equals(name);
}
if (outputCtx.hasStream() && outFile != null) {
OutputStream out = outputCtx.getOutputStream();
try {
+ // make sure the content-length is set
+ if (!hasContentLength) {
+ outputCtx.setContentLength(outFile.length());
+ }
FileInputStream in = new FileInputStream(outFile);
IOUtil.spool(in, out);
} catch (IOException e) {
Modified: incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/server/jcr/JCRWebdavServer.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/server/jcr/JCRWebdavServer.java?rev=368683&r1=368682&r2=368683&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/server/jcr/JCRWebdavServer.java (original)
+++ incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/server/jcr/JCRWebdavServer.java Fri Jan 13 03:11:35 2006
@@ -15,12 +15,20 @@
*/
package org.apache.jackrabbit.server.jcr;
-import org.apache.log4j.Logger;
-import org.apache.jackrabbit.webdav.*;
-import org.apache.jackrabbit.webdav.jcr.JcrDavException;
import org.apache.jackrabbit.server.SessionProvider;
+import org.apache.jackrabbit.webdav.DavException;
+import org.apache.jackrabbit.webdav.DavServletRequest;
+import org.apache.jackrabbit.webdav.DavServletResponse;
+import org.apache.jackrabbit.webdav.DavSession;
+import org.apache.jackrabbit.webdav.DavSessionProvider;
+import org.apache.jackrabbit.webdav.WebdavRequest;
+import org.apache.jackrabbit.webdav.jcr.JcrDavException;
+import org.apache.log4j.Logger;
-import javax.jcr.*;
+import javax.jcr.LoginException;
+import javax.jcr.Repository;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
Modified: incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/AbstractItemResource.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/AbstractItemResource.java?rev=368683&r1=368682&r2=368683&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/AbstractItemResource.java (original)
+++ incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/AbstractItemResource.java Fri Jan 13 03:11:35 2006
@@ -16,15 +16,27 @@
package org.apache.jackrabbit.webdav.jcr;
import org.apache.log4j.Logger;
-import org.apache.jackrabbit.webdav.property.*;
-import org.apache.jackrabbit.webdav.*;
-import org.apache.jackrabbit.webdav.jcr.version.report.*;
import org.apache.jackrabbit.webdav.transaction.TxLockEntry;
import org.apache.jackrabbit.webdav.version.report.SupportedReportSetProperty;
import org.apache.jackrabbit.webdav.version.report.ReportType;
+import org.apache.jackrabbit.webdav.DavResourceLocator;
+import org.apache.jackrabbit.webdav.DavSession;
+import org.apache.jackrabbit.webdav.DavResourceFactory;
+import org.apache.jackrabbit.webdav.DavResource;
+import org.apache.jackrabbit.webdav.DavException;
+import org.apache.jackrabbit.webdav.DavServletResponse;
+import org.apache.jackrabbit.webdav.property.DefaultDavProperty;
+import org.apache.jackrabbit.webdav.property.HrefProperty;
+import org.apache.jackrabbit.webdav.jcr.version.report.NodeTypesReport;
+import org.apache.jackrabbit.webdav.jcr.version.report.LocateByUuidReport;
+import org.apache.jackrabbit.webdav.jcr.version.report.RegisteredNamespacesReport;
+import org.apache.jackrabbit.webdav.jcr.version.report.RepositoryDescriptorsReport;
import org.apache.jackrabbit.util.Text;
-import javax.jcr.*;
+import javax.jcr.Item;
+import javax.jcr.PathNotFoundException;
+import javax.jcr.RepositoryException;
+import javax.jcr.Workspace;
/**
* <code>AbstractItemResource</code> covers common functionality for the various
@@ -71,7 +83,7 @@
* Returns true if there exists a {@link Item repository item} with the given
* resource path, false otherwise.
*
- * @see DavResource#exists()
+ * @see org.apache.jackrabbit.webdav.DavResource#exists()
*/
public boolean exists() {
return item != null;
@@ -85,7 +97,7 @@
* which is exposed with the {@link #JCR_NAME {http://www.day.com/jcr/webdav/1.0}name}
* property.
*
- * @see DavResource#getDisplayName() )
+ * @see org.apache.jackrabbit.webdav.DavResource#getDisplayName() )
*/
public String getDisplayName() {
String resPath = getResourcePath();
@@ -100,7 +112,7 @@
* @return the collection this resource is internal member of. Except for the
* repository root, the returned collection always represent the parent
* repository node.
- * @see DavResource#getCollection()
+ * @see org.apache.jackrabbit.webdav.DavResource#getCollection()
*/
public DavResource getCollection() {
DavResource collection = null;
@@ -127,7 +139,7 @@
* @param destination
* @throws DavException
* @see DavResource#move(DavResource)
- * @see Session#move(String, String)
+ * @see javax.jcr.Session#move(String, String)
*/
public void move(DavResource destination) throws DavException {
if (!exists()) {
Modified: incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/AbstractResource.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/AbstractResource.java?rev=368683&r1=368682&r2=368683&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/AbstractResource.java (original)
+++ incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/AbstractResource.java Fri Jan 13 03:11:35 2006
@@ -15,36 +15,68 @@
*/
package org.apache.jackrabbit.webdav.jcr;
-import org.apache.log4j.Logger;
-import org.apache.jackrabbit.webdav.*;
import org.apache.jackrabbit.server.io.IOUtil;
+import org.apache.jackrabbit.webdav.DavConstants;
+import org.apache.jackrabbit.webdav.DavException;
+import org.apache.jackrabbit.webdav.DavLocatorFactory;
+import org.apache.jackrabbit.webdav.DavResource;
+import org.apache.jackrabbit.webdav.DavResourceFactory;
+import org.apache.jackrabbit.webdav.DavResourceLocator;
+import org.apache.jackrabbit.webdav.DavServletResponse;
+import org.apache.jackrabbit.webdav.DavSession;
+import org.apache.jackrabbit.webdav.MultiStatus;
+import org.apache.jackrabbit.webdav.MultiStatusResponse;
import org.apache.jackrabbit.webdav.io.OutputContext;
-import org.apache.jackrabbit.webdav.search.SearchResource;
+import org.apache.jackrabbit.webdav.jcr.search.SearchResourceImpl;
+import org.apache.jackrabbit.webdav.jcr.transaction.TxLockManagerImpl;
+import org.apache.jackrabbit.webdav.lock.ActiveLock;
+import org.apache.jackrabbit.webdav.lock.LockDiscovery;
+import org.apache.jackrabbit.webdav.lock.LockInfo;
+import org.apache.jackrabbit.webdav.lock.LockManager;
+import org.apache.jackrabbit.webdav.lock.Scope;
+import org.apache.jackrabbit.webdav.lock.SupportedLock;
+import org.apache.jackrabbit.webdav.lock.Type;
+import org.apache.jackrabbit.webdav.observation.EventDiscovery;
+import org.apache.jackrabbit.webdav.observation.ObservationResource;
+import org.apache.jackrabbit.webdav.observation.Subscription;
+import org.apache.jackrabbit.webdav.observation.SubscriptionDiscovery;
+import org.apache.jackrabbit.webdav.observation.SubscriptionInfo;
+import org.apache.jackrabbit.webdav.observation.SubscriptionManager;
+import org.apache.jackrabbit.webdav.property.DavProperty;
+import org.apache.jackrabbit.webdav.property.DavPropertyName;
+import org.apache.jackrabbit.webdav.property.DavPropertyNameSet;
+import org.apache.jackrabbit.webdav.property.DavPropertySet;
+import org.apache.jackrabbit.webdav.property.DefaultDavProperty;
+import org.apache.jackrabbit.webdav.property.HrefProperty;
+import org.apache.jackrabbit.webdav.property.ResourceType;
import org.apache.jackrabbit.webdav.search.QueryGrammerSet;
import org.apache.jackrabbit.webdav.search.SearchInfo;
-import org.apache.jackrabbit.webdav.transaction.TransactionResource;
-import org.apache.jackrabbit.webdav.transaction.TransactionInfo;
+import org.apache.jackrabbit.webdav.search.SearchResource;
import org.apache.jackrabbit.webdav.transaction.TransactionConstants;
+import org.apache.jackrabbit.webdav.transaction.TransactionInfo;
+import org.apache.jackrabbit.webdav.transaction.TransactionResource;
import org.apache.jackrabbit.webdav.transaction.TxLockManager;
-import org.apache.jackrabbit.webdav.jcr.transaction.TxLockManagerImpl;
-import org.apache.jackrabbit.webdav.jcr.search.SearchResourceImpl;
-import org.apache.jackrabbit.webdav.observation.*;
-import org.apache.jackrabbit.webdav.version.*;
+import org.apache.jackrabbit.webdav.version.DeltaVConstants;
+import org.apache.jackrabbit.webdav.version.DeltaVResource;
+import org.apache.jackrabbit.webdav.version.OptionsInfo;
+import org.apache.jackrabbit.webdav.version.OptionsResponse;
+import org.apache.jackrabbit.webdav.version.SupportedMethodSetProperty;
import org.apache.jackrabbit.webdav.version.report.Report;
import org.apache.jackrabbit.webdav.version.report.ReportInfo;
import org.apache.jackrabbit.webdav.version.report.ReportType;
import org.apache.jackrabbit.webdav.version.report.SupportedReportSetProperty;
-import org.apache.jackrabbit.webdav.lock.*;
-import org.apache.jackrabbit.webdav.property.*;
-import org.apache.jackrabbit.webdav.property.ResourceType;
+import org.apache.log4j.Logger;
-import javax.jcr.Session;
-import javax.jcr.RepositoryException;
import javax.jcr.Item;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
-import java.io.IOException;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
/**
* <code>AbstractResource</code> provides functionality common to all
@@ -467,14 +499,15 @@
OptionsResponse oR = null;
if (optionsInfo != null) {
oR = new OptionsResponse();
- // currently on DAV:version-history-collection-set and
+ // currently only DAV:version-history-collection-set and
// DAV:workspace-collection-set is supported.
if (optionsInfo.containsElement(DeltaVConstants.XML_VH_COLLECTION_SET, DeltaVConstants.NAMESPACE)) {
String[] hrefs = new String[] {
getLocatorFromItemPath(ItemResourceConstants.VERSIONSTORAGE_PATH).getHref(true)
};
oR.addEntry(DeltaVConstants.XML_VH_COLLECTION_SET, DeltaVConstants.NAMESPACE, hrefs);
- } else if (optionsInfo.containsElement(DeltaVConstants.XML_WSP_COLLECTION_SET, DeltaVConstants.NAMESPACE)) {
+ }
+ if (optionsInfo.containsElement(DeltaVConstants.XML_WSP_COLLECTION_SET, DeltaVConstants.NAMESPACE)) {
// workspaces cannot be created anywhere.
oR.addEntry(DeltaVConstants.XML_WSP_COLLECTION_SET, DeltaVConstants.NAMESPACE, new String[0]);
}
@@ -497,17 +530,10 @@
}
if (supportedReports.isSupportedReport(reportInfo)) {
- try {
- Report report = ReportType.getType(reportInfo).createReport();
- report.setInfo(reportInfo);
- report.setResource(this);
+ Report report = ReportType.getType(reportInfo).createReport(this, reportInfo);
return report;
- } catch (IllegalArgumentException e) {
- // should never occur.
- throw new DavException(DavServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage());
- }
} else {
- throw new DavException(DavServletResponse.SC_UNPROCESSABLE_ENTITY, "Unkown report "+ reportInfo.getReportElement().getNamespacePrefix() + reportInfo.getReportElement().getName() +"requested.");
+ throw new DavException(DavServletResponse.SC_UNPROCESSABLE_ENTITY, "Unkown report "+ reportInfo.getReportName() +"requested.");
}
}
Modified: incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/DavResourceFactoryImpl.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/DavResourceFactoryImpl.java?rev=368683&r1=368682&r2=368683&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/DavResourceFactoryImpl.java (original)
+++ incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/DavResourceFactoryImpl.java Fri Jan 13 03:11:35 2006
@@ -16,7 +16,6 @@
package org.apache.jackrabbit.webdav.jcr;
import org.apache.log4j.Logger;
-import org.apache.jackrabbit.webdav.*;
import org.apache.jackrabbit.webdav.transaction.TransactionResource;
import org.apache.jackrabbit.webdav.transaction.TransactionDavServletRequest;
import org.apache.jackrabbit.webdav.observation.SubscriptionManager;
@@ -26,10 +25,22 @@
import org.apache.jackrabbit.webdav.jcr.version.VersionItemCollection;
import org.apache.jackrabbit.webdav.jcr.version.VersionHistoryItemCollection;
import org.apache.jackrabbit.webdav.jcr.transaction.TxLockManagerImpl;
+import org.apache.jackrabbit.webdav.DavResourceFactory;
+import org.apache.jackrabbit.webdav.DavResource;
+import org.apache.jackrabbit.webdav.DavResourceLocator;
+import org.apache.jackrabbit.webdav.DavServletRequest;
+import org.apache.jackrabbit.webdav.DavServletResponse;
+import org.apache.jackrabbit.webdav.DavException;
+import org.apache.jackrabbit.webdav.DavSession;
+import org.apache.jackrabbit.webdav.DavMethods;
-import javax.jcr.*;
import javax.jcr.version.Version;
import javax.jcr.version.VersionHistory;
+import javax.jcr.Item;
+import javax.jcr.Node;
+import javax.jcr.PathNotFoundException;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
/**
* <code>DavResourceFactoryImpl</code>...
@@ -152,7 +163,7 @@
* @param locator
* @param session
* @return DavResource representing a repository item.
- * @throws RepositoryException if {@link Session#getItem(String)} fails.
+ * @throws RepositoryException if {@link javax.jcr.Session#getItem(String)} fails.
*/
private DavResource createResourceForItem(DavResourceLocator locator, DavSession session) throws RepositoryException {
DavResource resource;
Modified: incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/DefaultItemCollection.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/DefaultItemCollection.java?rev=368683&r1=368682&r2=368683&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/DefaultItemCollection.java (original)
+++ incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/DefaultItemCollection.java Fri Jan 13 03:11:35 2006
@@ -15,24 +15,66 @@
*/
package org.apache.jackrabbit.webdav.jcr;
-import org.apache.log4j.Logger;
-import org.apache.jackrabbit.webdav.property.*;
-import org.apache.jackrabbit.webdav.*;
+import org.apache.jackrabbit.JcrConstants;
+import org.apache.jackrabbit.util.Text;
+import org.apache.jackrabbit.webdav.DavConstants;
+import org.apache.jackrabbit.webdav.DavException;
+import org.apache.jackrabbit.webdav.DavResource;
+import org.apache.jackrabbit.webdav.DavResourceFactory;
+import org.apache.jackrabbit.webdav.DavResourceIterator;
+import org.apache.jackrabbit.webdav.DavResourceIteratorImpl;
+import org.apache.jackrabbit.webdav.DavResourceLocator;
+import org.apache.jackrabbit.webdav.DavServletResponse;
+import org.apache.jackrabbit.webdav.DavSession;
+import org.apache.jackrabbit.webdav.MultiStatusResponse;
import org.apache.jackrabbit.webdav.io.InputContext;
-import org.apache.jackrabbit.webdav.jcr.nodetype.NodeTypeProperty;
import org.apache.jackrabbit.webdav.jcr.lock.JcrActiveLock;
+import org.apache.jackrabbit.webdav.jcr.nodetype.NodeTypeProperty;
import org.apache.jackrabbit.webdav.jcr.version.report.ExportViewReport;
import org.apache.jackrabbit.webdav.jcr.version.report.LocateCorrespondingNodeReport;
-import org.apache.jackrabbit.webdav.ordering.*;
-import org.apache.jackrabbit.webdav.lock.*;
-import org.apache.jackrabbit.JcrConstants;
-import org.apache.jackrabbit.util.Text;
+import org.apache.jackrabbit.webdav.lock.ActiveLock;
+import org.apache.jackrabbit.webdav.lock.LockInfo;
+import org.apache.jackrabbit.webdav.lock.Scope;
+import org.apache.jackrabbit.webdav.lock.Type;
+import org.apache.jackrabbit.webdav.ordering.OrderPatch;
+import org.apache.jackrabbit.webdav.ordering.OrderingConstants;
+import org.apache.jackrabbit.webdav.ordering.OrderingResource;
+import org.apache.jackrabbit.webdav.ordering.OrderingType;
+import org.apache.jackrabbit.webdav.ordering.Position;
+import org.apache.jackrabbit.webdav.property.DavProperty;
+import org.apache.jackrabbit.webdav.property.DavPropertyIterator;
+import org.apache.jackrabbit.webdav.property.DavPropertyName;
+import org.apache.jackrabbit.webdav.property.DavPropertyNameSet;
+import org.apache.jackrabbit.webdav.property.DavPropertySet;
+import org.apache.jackrabbit.webdav.property.DefaultDavProperty;
+import org.apache.jackrabbit.webdav.property.HrefProperty;
+import org.apache.log4j.Logger;
-import javax.jcr.*;
+import javax.jcr.AccessDeniedException;
+import javax.jcr.ImportUUIDBehavior;
+import javax.jcr.Item;
+import javax.jcr.ItemExistsException;
+import javax.jcr.ItemNotFoundException;
+import javax.jcr.Node;
+import javax.jcr.NodeIterator;
+import javax.jcr.Property;
+import javax.jcr.PropertyIterator;
+import javax.jcr.PropertyType;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+import javax.jcr.UnsupportedRepositoryOperationException;
import javax.jcr.lock.Lock;
import javax.jcr.nodetype.NodeType;
-import java.util.*;
-import java.io.*;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.Set;
/**
* <code>DefaultItemCollection</code> represents a JCR node item.
@@ -640,7 +682,7 @@
throws RepositoryException {
String destPath = null;
- if (position.getType() == Position.TYPE_FIRST) {
+ if (OrderingConstants.XML_FIRST.equals(position.getType())) {
if (childNodes.hasNext()) {
Node firstChild = childNodes.nextNode();
destPath = firstChild.getPath();
@@ -649,7 +691,7 @@
if (destPath == null) {
throw new ItemNotFoundException("No 'first' item found for reordering.");
}
- } else if (position.getType() == Position.TYPE_AFTER) {
+ } else if (OrderingConstants.XML_AFTER.equals(position.getType())) {
String afterRelPath = Text.getName(position.getSegment());
boolean found = false;
// jcr only knows order-before > retrieve the node that follows the
Modified: incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/DefaultItemResource.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/DefaultItemResource.java?rev=368683&r1=368682&r2=368683&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/DefaultItemResource.java (original)
+++ incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/DefaultItemResource.java Fri Jan 13 03:11:35 2006
@@ -15,18 +15,39 @@
*/
package org.apache.jackrabbit.webdav.jcr;
-import org.apache.log4j.Logger;
-import org.apache.jackrabbit.webdav.property.*;
-import org.apache.jackrabbit.webdav.*;
+import org.apache.jackrabbit.value.ValueHelper;
+import org.apache.jackrabbit.webdav.DavException;
+import org.apache.jackrabbit.webdav.DavResource;
+import org.apache.jackrabbit.webdav.DavResourceFactory;
+import org.apache.jackrabbit.webdav.DavResourceIterator;
+import org.apache.jackrabbit.webdav.DavResourceIteratorImpl;
+import org.apache.jackrabbit.webdav.DavResourceLocator;
+import org.apache.jackrabbit.webdav.DavServletResponse;
+import org.apache.jackrabbit.webdav.DavSession;
+import org.apache.jackrabbit.webdav.MultiStatusResponse;
import org.apache.jackrabbit.webdav.io.InputContext;
-import org.apache.jackrabbit.webdav.jcr.property.ValuesProperty;
import org.apache.jackrabbit.webdav.jcr.property.LengthsProperty;
-import org.apache.jackrabbit.webdav.lock.*;
-import org.apache.jackrabbit.value.ValueHelper;
+import org.apache.jackrabbit.webdav.jcr.property.ValuesProperty;
+import org.apache.jackrabbit.webdav.lock.ActiveLock;
+import org.apache.jackrabbit.webdav.lock.Scope;
+import org.apache.jackrabbit.webdav.lock.Type;
+import org.apache.jackrabbit.webdav.property.DavProperty;
+import org.apache.jackrabbit.webdav.property.DavPropertyIterator;
+import org.apache.jackrabbit.webdav.property.DavPropertyName;
+import org.apache.jackrabbit.webdav.property.DavPropertyNameSet;
+import org.apache.jackrabbit.webdav.property.DavPropertySet;
+import org.apache.jackrabbit.webdav.property.DefaultDavProperty;
+import org.apache.log4j.Logger;
-import javax.jcr.*;
-import java.io.*;
-import java.util.*;
+import javax.jcr.Item;
+import javax.jcr.Property;
+import javax.jcr.PropertyType;
+import javax.jcr.RepositoryException;
+import javax.jcr.Value;
+import javax.jcr.ValueFormatException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Iterator;
/**
* <code>DefaultItemResource</code> represents JCR property item.
Modified: incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/ItemResourceConstants.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/ItemResourceConstants.java?rev=368683&r1=368682&r2=368683&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/ItemResourceConstants.java (original)
+++ incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/ItemResourceConstants.java Fri Jan 13 03:11:35 2006
@@ -15,9 +15,9 @@
*/
package org.apache.jackrabbit.webdav.jcr;
-import org.jdom.Namespace;
import org.apache.jackrabbit.webdav.property.DavPropertyName;
import org.apache.jackrabbit.webdav.DavResource;
+import org.apache.jackrabbit.webdav.xml.Namespace;
import org.apache.jackrabbit.webdav.version.DeltaVResource;
import org.apache.jackrabbit.webdav.lock.Scope;
import org.apache.jackrabbit.webdav.search.SearchResource;
Modified: incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/JcrDavException.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/JcrDavException.java?rev=368683&r1=368682&r2=368683&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/JcrDavException.java (original)
+++ incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/JcrDavException.java Fri Jan 13 03:11:35 2006
@@ -18,13 +18,30 @@
import org.apache.log4j.Logger;
import org.apache.jackrabbit.webdav.DavException;
import org.apache.jackrabbit.webdav.DavServletResponse;
-import org.jdom.Element;
+import org.apache.jackrabbit.webdav.DavConstants;
+import org.apache.jackrabbit.webdav.xml.DomUtil;
+import org.w3c.dom.Element;
+import org.w3c.dom.Document;
-import javax.jcr.*;
import javax.jcr.query.InvalidQueryException;
import javax.jcr.lock.LockException;
import javax.jcr.version.VersionException;
-import javax.jcr.nodetype.*;
+import javax.jcr.AccessDeniedException;
+import javax.jcr.InvalidItemStateException;
+import javax.jcr.InvalidSerializedDataException;
+import javax.jcr.ItemExistsException;
+import javax.jcr.ItemNotFoundException;
+import javax.jcr.MergeException;
+import javax.jcr.NamespaceException;
+import javax.jcr.RepositoryException;
+import javax.jcr.ReferentialIntegrityException;
+import javax.jcr.NoSuchWorkspaceException;
+import javax.jcr.PathNotFoundException;
+import javax.jcr.LoginException;
+import javax.jcr.UnsupportedRepositoryOperationException;
+import javax.jcr.ValueFormatException;
+import javax.jcr.nodetype.ConstraintViolationException;
+import javax.jcr.nodetype.NoSuchNodeTypeException;
import java.util.HashMap;
/**
@@ -74,17 +91,27 @@
}
/**
+ * @return true
+ */
+ public boolean hasErrorCondition() {
+ return true;
+ }
+
+ /**
* Returns a DAV:error Xml element containing the exceptions class and the
* message as child elements.
*
* @return Xml representation of this exception.
+ * @see org.apache.jackrabbit.webdav.xml.XmlSerializable#toXml(Document)
+ * @param document
*/
- public Element getError() {
- Element error = super.getError();
- Element excep = new Element("exception", ItemResourceConstants.NAMESPACE);
- excep.addContent(new Element("class", ItemResourceConstants.NAMESPACE).setText(exceptionClass.getName()));
- excep.addContent(new Element("message", ItemResourceConstants.NAMESPACE).setText(getMessage()));
- error.addContent(excep);
+ public Element toXml(Document document) {
+ Element error = DomUtil.createElement(document, XML_ERROR, DavConstants.NAMESPACE);
+ Element excep = DomUtil.createElement(document, "exception", ItemResourceConstants.NAMESPACE);
+ DomUtil.addChildElement(excep, "class", ItemResourceConstants.NAMESPACE, exceptionClass.getName());
+ DomUtil.addChildElement(excep, "message", ItemResourceConstants.NAMESPACE, getMessage());
+ error.appendChild(excep);
return error;
}
+
}
Modified: incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/RootCollection.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/RootCollection.java?rev=368683&r1=368682&r2=368683&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/RootCollection.java (original)
+++ incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/RootCollection.java Fri Jan 13 03:11:35 2006
@@ -15,18 +15,27 @@
*/
package org.apache.jackrabbit.webdav.jcr;
-import org.apache.log4j.Logger;
-import org.apache.jackrabbit.webdav.*;
+import org.apache.jackrabbit.webdav.DavException;
+import org.apache.jackrabbit.webdav.DavResource;
+import org.apache.jackrabbit.webdav.DavResourceFactory;
+import org.apache.jackrabbit.webdav.DavResourceIterator;
+import org.apache.jackrabbit.webdav.DavResourceIteratorImpl;
+import org.apache.jackrabbit.webdav.DavResourceLocator;
+import org.apache.jackrabbit.webdav.DavServletResponse;
+import org.apache.jackrabbit.webdav.DavSession;
import org.apache.jackrabbit.webdav.io.InputContext;
-import org.apache.jackrabbit.webdav.jcr.version.report.RegisteredNamespacesReport;
import org.apache.jackrabbit.webdav.jcr.version.report.NodeTypesReport;
+import org.apache.jackrabbit.webdav.jcr.version.report.RegisteredNamespacesReport;
import org.apache.jackrabbit.webdav.jcr.version.report.RepositoryDescriptorsReport;
-import org.apache.jackrabbit.webdav.version.report.SupportedReportSetProperty;
import org.apache.jackrabbit.webdav.version.report.ReportType;
+import org.apache.jackrabbit.webdav.version.report.SupportedReportSetProperty;
+import org.apache.log4j.Logger;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
/**
* <code>RootCollection</code> represent the WebDAV root resource that does not
Modified: incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/RootItemCollection.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/RootItemCollection.java?rev=368683&r1=368682&r2=368683&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/RootItemCollection.java (original)
+++ incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/RootItemCollection.java Fri Jan 13 03:11:35 2006
@@ -15,15 +15,23 @@
*/
package org.apache.jackrabbit.webdav.jcr;
+import org.apache.jackrabbit.webdav.DavException;
+import org.apache.jackrabbit.webdav.DavResource;
+import org.apache.jackrabbit.webdav.DavResourceFactory;
+import org.apache.jackrabbit.webdav.DavResourceLocator;
+import org.apache.jackrabbit.webdav.DavSession;
+import org.apache.jackrabbit.webdav.MultiStatusResponse;
+import org.apache.jackrabbit.webdav.jcr.property.NamespacesProperty;
+import org.apache.jackrabbit.webdav.property.DavProperty;
+import org.apache.jackrabbit.webdav.property.DavPropertyNameSet;
+import org.apache.jackrabbit.webdav.property.DavPropertySet;
import org.apache.log4j.Logger;
-import org.apache.jackrabbit.webdav.*;
-import org.apache.jackrabbit.webdav.property.*;
-import org.jdom.Element;
+import javax.jcr.Item;
import javax.jcr.NamespaceRegistry;
import javax.jcr.RepositoryException;
-import javax.jcr.Item;
-import java.util.*;
+import java.util.Iterator;
+import java.util.Properties;
/**
* <code>RootItemCollection</code> represents the root node of the underlying
@@ -89,53 +97,34 @@
*/
public void setProperty(DavProperty property) throws DavException {
if (JCR_NAMESPACES.equals(property.getName())) {
- Object v = property.getValue();
- if (v instanceof List) {
- Map changeMap = new HashMap();
- // retrieve list of prefix/uri pairs that build the new values of
- // the ns-registry
- Iterator it = ((List)v).iterator();
- while (it.hasNext()) {
- Object listEntry = it.next();
- if (listEntry instanceof Element) {
- Element e = (Element)listEntry;
- if (XML_NAMESPACE.equals(e.getName())) {
- String prefix = e.getChildText(XML_PREFIX, NAMESPACE);
- String uri = e.getChildText(XML_URI, NAMESPACE);
- changeMap.put(prefix, uri);
- }
- }
- }
+ NamespacesProperty nsp = new NamespacesProperty(property);
try {
+ Properties changes = nsp.getNamespaces();
NamespaceRegistry nsReg = getRepositorySession().getWorkspace().getNamespaceRegistry();
String[] registeredPrefixes = nsReg.getPrefixes();
for (int i = 0; i < registeredPrefixes.length; i++) {
String prfx = registeredPrefixes[i];
- if (!changeMap.containsKey(prfx)) {
+ if (!changes.containsKey(prfx)) {
// prefix not present amongst the new values any more > unregister
nsReg.unregisterNamespace(prfx);
- } else if (changeMap.get(prfx).equals(nsReg.getURI(prfx))) {
+ } else if (changes.get(prfx).equals(nsReg.getURI(prfx))) {
// present with same uri-value >> no action required
- changeMap.remove(prfx);
+ changes.remove(prfx);
}
}
// try to register any prefix/uri pair that has a changed uri or
// it has not been present before.
- Iterator prefixIt = changeMap.keySet().iterator();
+ Iterator prefixIt = changes.keySet().iterator();
while (prefixIt.hasNext()) {
String prefix = (String)prefixIt.next();
- String uri = (String)changeMap.get(prefix);
+ String uri = (String)changes.get(prefix);
nsReg.registerNamespace(prefix, uri);
}
} catch (RepositoryException e) {
throw new JcrDavException(e);
}
} else {
- log.warn("Unexpected structure of dcr:namespace property.");
- throw new DavException(DavServletResponse.SC_INTERNAL_SERVER_ERROR);
- }
- } else {
super.setProperty(property);
}
}
@@ -165,15 +154,8 @@
try {
// init workspace specific properties
NamespaceRegistry nsReg = getRepositorySession().getWorkspace().getNamespaceRegistry();
- String[] prefixes = nsReg.getPrefixes();
- Element[] nsElems = new Element[prefixes.length];
- for (int i = 0; i < prefixes.length; i++) {
- Element elem = new Element(XML_NAMESPACE, NAMESPACE);
- elem.addContent(new Element(XML_PREFIX, NAMESPACE).setText(prefixes[i]));
- elem.addContent(new Element(XML_URI, NAMESPACE)).setText(nsReg.getURI(prefixes[i]));
- nsElems[i] = elem;
- }
- properties.add(new DefaultDavProperty(JCR_NAMESPACES, nsElems, false));
+ DavProperty namespacesProp = new NamespacesProperty(nsReg);
+ properties.add(namespacesProp);
} catch (RepositoryException e) {
log.error("Failed to access NamespaceRegistry: " + e.getMessage());
}
Modified: incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/VersionControlledItemCollection.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/VersionControlledItemCollection.java?rev=368683&r1=368682&r2=368683&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/VersionControlledItemCollection.java (original)
+++ incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/VersionControlledItemCollection.java Fri Jan 13 03:11:35 2006
@@ -15,15 +15,45 @@
*/
package org.apache.jackrabbit.webdav.jcr;
-import org.apache.log4j.Logger;
-import org.apache.jackrabbit.webdav.property.*;
-import org.apache.jackrabbit.webdav.*;
-import org.apache.jackrabbit.webdav.version.*;
-import org.apache.jackrabbit.webdav.version.report.*;
import org.apache.jackrabbit.JcrConstants;
+import org.apache.jackrabbit.webdav.DavException;
+import org.apache.jackrabbit.webdav.DavLocatorFactory;
+import org.apache.jackrabbit.webdav.DavResource;
+import org.apache.jackrabbit.webdav.DavResourceFactory;
+import org.apache.jackrabbit.webdav.DavResourceLocator;
+import org.apache.jackrabbit.webdav.DavServletResponse;
+import org.apache.jackrabbit.webdav.DavSession;
+import org.apache.jackrabbit.webdav.MultiStatus;
+import org.apache.jackrabbit.webdav.MultiStatusResponse;
+import org.apache.jackrabbit.webdav.property.DavPropertyName;
+import org.apache.jackrabbit.webdav.property.DavPropertyNameSet;
+import org.apache.jackrabbit.webdav.property.DavPropertySet;
+import org.apache.jackrabbit.webdav.property.DefaultDavProperty;
+import org.apache.jackrabbit.webdav.property.HrefProperty;
+import org.apache.jackrabbit.webdav.version.LabelInfo;
+import org.apache.jackrabbit.webdav.version.MergeInfo;
+import org.apache.jackrabbit.webdav.version.UpdateInfo;
+import org.apache.jackrabbit.webdav.version.VersionControlledResource;
+import org.apache.jackrabbit.webdav.version.VersionHistoryResource;
+import org.apache.jackrabbit.webdav.version.VersionResource;
+import org.apache.jackrabbit.webdav.version.VersionableResource;
+import org.apache.jackrabbit.webdav.version.report.ReportType;
+import org.apache.jackrabbit.webdav.version.report.SupportedReportSetProperty;
+import org.apache.jackrabbit.webdav.xml.DomUtil;
+import org.apache.log4j.Logger;
+import org.w3c.dom.Element;
-import javax.jcr.*;
-import javax.jcr.observation.*;
+import javax.jcr.Item;
+import javax.jcr.Node;
+import javax.jcr.NodeIterator;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+import javax.jcr.Value;
+import javax.jcr.ValueFormatException;
+import javax.jcr.Workspace;
+import javax.jcr.observation.Event;
+import javax.jcr.observation.EventIterator;
+import javax.jcr.observation.EventListener;
import javax.jcr.version.Version;
import javax.jcr.version.VersionHistory;
import java.util.List;
@@ -295,7 +325,8 @@
MultiStatus ms = new MultiStatus();
try {
Node node = (Node)item;
- boolean removeExisting = updateInfo.getUpdateElement().getChild(XML_REMOVEEXISTING, NAMESPACE) != null;
+ Element udElem = updateInfo.getUpdateElement();
+ boolean removeExisting = DomUtil.hasChildElement(udElem, XML_REMOVEEXISTING, NAMESPACE);
// register eventListener in order to be able to report the modified resources.
EventListener el = new EListener(updateInfo.getPropertyNameSet(), ms);
@@ -311,7 +342,7 @@
versions[i] = vh.getVersion(getItemName(itemPath));
}
if (versions.length == 1) {
- String relPath = updateInfo.getUpdateElement().getChildText(XML_RELPATH, NAMESPACE);
+ String relPath = DomUtil.getChildText(udElem, XML_RELPATH, NAMESPACE);
if (relPath == null) {
node.restore(versions[0], removeExisting);
} else {
@@ -378,7 +409,8 @@
EventListener el = new EListener(mergeInfo.getPropertyNameSet(), ms);
registerEventListener(el, node.getPath());
- String workspaceName = getLocatorFromHref(mergeInfo.getSourceHref()).getWorkspaceName();
+ // todo: RFC allows multiple href elements inside the DAV:source element
+ String workspaceName = getLocatorFromHref(mergeInfo.getSourceHrefs()[0]).getWorkspaceName();
NodeIterator failed = node.merge(workspaceName, !mergeInfo.isNoAutoMerge());
// unregister the event listener again
Modified: incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/lock/JcrActiveLock.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/lock/JcrActiveLock.java?rev=368683&r1=368682&r2=368683&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/lock/JcrActiveLock.java (original)
+++ incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/lock/JcrActiveLock.java Fri Jan 13 03:11:35 2006
@@ -17,8 +17,11 @@
import org.apache.log4j.Logger;
import org.apache.jackrabbit.webdav.DavConstants;
+import org.apache.jackrabbit.webdav.lock.AbstractActiveLock;
+import org.apache.jackrabbit.webdav.lock.ActiveLock;
+import org.apache.jackrabbit.webdav.lock.Type;
+import org.apache.jackrabbit.webdav.lock.Scope;
import org.apache.jackrabbit.webdav.jcr.ItemResourceConstants;
-import org.apache.jackrabbit.webdav.lock.*;
import org.apache.jackrabbit.JcrConstants;
import javax.jcr.lock.Lock;
Modified: incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/nodetype/ItemDefinitionImpl.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/nodetype/ItemDefinitionImpl.java?rev=368683&r1=368682&r2=368683&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/nodetype/ItemDefinitionImpl.java (original)
+++ incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/nodetype/ItemDefinitionImpl.java Fri Jan 13 03:11:35 2006
@@ -17,7 +17,9 @@
package org.apache.jackrabbit.webdav.jcr.nodetype;
import org.apache.log4j.Logger;
-import org.jdom.Element;
+import org.apache.jackrabbit.webdav.xml.XmlSerializable;
+import org.w3c.dom.Element;
+import org.w3c.dom.Document;
import javax.jcr.nodetype.NodeType;
import javax.jcr.nodetype.ItemDefinition;
@@ -26,7 +28,7 @@
/**
* <code>ItemDefinitionImpl</code>...
*/
-abstract public class ItemDefinitionImpl implements ItemDefinition, NodeTypeConstants {
+abstract public class ItemDefinitionImpl implements ItemDefinition, NodeTypeConstants, XmlSerializable {
private static Logger log = Logger.getLogger(ItemDefinitionImpl.class);
@@ -41,7 +43,6 @@
if (definition == null) {
throw new IllegalArgumentException("PropDef argument can not be null");
}
-
name = definition.getName();
declaringNodeType = definition.getDeclaringNodeType();
isAutoCreated = definition.isAutoCreated();
@@ -92,14 +93,15 @@
return isProtected;
}
- //-------------------------------------< implementation specific method >---
+ //------------------------------------------< XmlSerializable interface >---
/**
* Returns the Xml representation of a {@link ItemDefinition} object.
*
* @return Xml representation of the specified {@link ItemDefinition def}.
+ * @param document
*/
- public Element toXml() {
- Element elem = new Element(getElementName());
+ public Element toXml(Document document) {
+ Element elem = document.createElement(getElementName());
elem.setAttribute(NAME_ATTRIBUTE, getName());
elem.setAttribute(AUTOCREATED_ATTRIBUTE, Boolean.toString(isAutoCreated()));
elem.setAttribute(MANDATORY_ATTRIBUTE, Boolean.toString(isMandatory()));
@@ -108,10 +110,11 @@
return elem;
}
+ //-------------------------------------< implementation specific method >---
/**
* Returns the name of the root element
*
* @return the name of the root element
*/
- public abstract String getElementName();
+ abstract String getElementName();
}
Modified: incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/nodetype/NodeDefinitionImpl.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/nodetype/NodeDefinitionImpl.java?rev=368683&r1=368682&r2=368683&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/nodetype/NodeDefinitionImpl.java (original)
+++ incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/nodetype/NodeDefinitionImpl.java Fri Jan 13 03:11:35 2006
@@ -17,7 +17,9 @@
package org.apache.jackrabbit.webdav.jcr.nodetype;
import org.apache.log4j.Logger;
-import org.jdom.Element;
+import org.apache.jackrabbit.webdav.xml.DomUtil;
+import org.w3c.dom.Element;
+import org.w3c.dom.Document;
import javax.jcr.nodetype.NodeType;
import javax.jcr.nodetype.NodeDefinition;
@@ -76,12 +78,11 @@
* Returns xml representation
*
* @return xml representation
+ * @param document
*/
- public Element toXml() {
- Element elem = super.toXml();
-
+ public Element toXml(Document document) {
+ Element elem = super.toXml(document);
elem.setAttribute(SAMENAMESIBLINGS_ATTRIBUTE, Boolean.toString(allowsSameNameSiblings()));
-
// defaultPrimaryType can be 'null'
NodeType defaultPrimaryType = getDefaultPrimaryType();
if (defaultPrimaryType != null) {
@@ -89,12 +90,14 @@
}
// reqPrimaryTypes: minimal set is nt:base.
NodeType[] nts = getRequiredPrimaryTypes();
- Element reqPrimaryTypes = new Element(REQUIREDPRIMARYTYPES_ELEMENT);
+ Element reqPrimaryTypes = document.createElement(REQUIREDPRIMARYTYPES_ELEMENT);
for (int i = 0; i < nts.length; i++) {
- reqPrimaryTypes.addContent(new Element(REQUIREDPRIMARYTYPE_ELEMENT).setText(nts[i].getName()));
- }
- elem.addContent(reqPrimaryTypes);
+ Element rptElem = document.createElement(REQUIREDPRIMARYTYPE_ELEMENT);
+ DomUtil.setText(rptElem, nts[i].getName());
+ reqPrimaryTypes.appendChild(rptElem);
+ }
+ elem.appendChild(reqPrimaryTypes);
return elem;
}
@@ -103,7 +106,7 @@
*
* @return always returns {@link #CHILDNODEDEFINITION_ELEMENT}.
*/
- public String getElementName() {
+ String getElementName() {
return CHILDNODEDEFINITION_ELEMENT;
}
}
Modified: incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/nodetype/NodeTypeConstants.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/nodetype/NodeTypeConstants.java?rev=368683&r1=368682&r2=368683&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/nodetype/NodeTypeConstants.java (original)
+++ incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/nodetype/NodeTypeConstants.java Fri Jan 13 03:11:35 2006
@@ -15,8 +15,8 @@
*/
package org.apache.jackrabbit.webdav.jcr.nodetype;
-import org.jdom.Namespace;
import org.apache.jackrabbit.webdav.jcr.ItemResourceConstants;
+import org.apache.jackrabbit.webdav.xml.Namespace;
/**
* <code>NodeTypeConstants</code> used to represent nodetype definitions in
@@ -31,16 +31,11 @@
public static final String XML_NODETYPENAME = "nodetypename";
- public static final String XML_REPORT_ALLNODETYPES = "allnodetypes";
- public static final String XML_REPORT_MIXINNODETYPES = "mixinnodetypes";
- public static final String XML_REPORT_PRIMARYNODETYPES = "primarynodetypes";
-
- // report response
- /** Name of the node type definition root element. */
- public static final String XML_NODETYPES = "nodeTypes";
-
- /** Name of the node type definition element. */
- public static final String XML_NODETYPE = "nodeType";
+ public static final String XML_REPORT_ALLNODETYPES = "all-nodetypes";
+ public static final String XML_REPORT_MIXINNODETYPES = "mixin-nodetypes";
+ public static final String XML_REPORT_PRIMARYNODETYPES = "primary-nodetypes";
+ public static final String XML_NODETYPES = "nodetypes";
+ public static final String XML_NODETYPE = "nodetype";
//------< copied from org.apache.jackrabbit.core.nodetype.xml.Constants >---
Modified: incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/nodetype/NodeTypeProperty.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/nodetype/NodeTypeProperty.java?rev=368683&r1=368682&r2=368683&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/nodetype/NodeTypeProperty.java (original)
+++ incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/nodetype/NodeTypeProperty.java Fri Jan 13 03:11:35 2006
@@ -15,32 +15,44 @@
*/
package org.apache.jackrabbit.webdav.jcr.nodetype;
-import org.apache.log4j.Logger;
-import org.apache.jackrabbit.webdav.property.DavPropertyName;
-import org.apache.jackrabbit.webdav.property.DavProperty;
+import org.apache.jackrabbit.webdav.DavException;
+import org.apache.jackrabbit.webdav.DavServletResponse;
import org.apache.jackrabbit.webdav.property.AbstractDavProperty;
-import org.jdom.Element;
+import org.apache.jackrabbit.webdav.property.DavProperty;
+import org.apache.jackrabbit.webdav.property.DavPropertyName;
+import org.apache.jackrabbit.webdav.xml.DomUtil;
+import org.apache.log4j.Logger;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
import javax.jcr.nodetype.NodeType;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
/**
* <code>NodeTypeProperty</code>...
*/
-public class NodeTypeProperty extends AbstractDavProperty {
+public class NodeTypeProperty extends AbstractDavProperty implements NodeTypeConstants {
private static Logger log = Logger.getLogger(NodeTypeProperty.class);
- private final NodeTypeElement[] value;
+ private final Set nodetypeNames = new HashSet();
public NodeTypeProperty(DavPropertyName name, NodeType nodeType, boolean isProtected) {
- super(name, isProtected);
- value = new NodeTypeElement[] {new NodeTypeElement(nodeType)};
+ this(name, new NodeType[] {nodeType}, isProtected);
}
public NodeTypeProperty(DavPropertyName name, NodeType[] nodeTypes, boolean isProtected) {
super(name, isProtected);
- value = NodeTypeElement.create(nodeTypes);
+ for (int i = 0; i < nodeTypes.length; i++) {
+ NodeType nt = nodeTypes[i];
+ if (nt != null) {
+ nodetypeNames.add(nodeTypes[i].getName());
+ }
+ }
}
/**
@@ -51,24 +63,35 @@
* @throws IllegalArgumentException if the content of the specified property
* contains elements other than {@link NodeTypeConstants#XML_NODETYPE}.
*/
- public NodeTypeProperty(DavProperty property) {
+ public NodeTypeProperty(DavProperty property) throws DavException {
super(property.getName(), property.isProtected());
+ Object propValue = property.getValue();
+ Iterator it;
+ if (propValue instanceof List) {
+ it = ((List)propValue).iterator();
+ } else if (propValue instanceof Element) {
+ List l = new ArrayList();
+ l.add(propValue);
+ it = l.iterator();
+ } else {
+ log.warn("Cannot build NodeTypeProperty from the given property.");
+ throw new DavException(DavServletResponse.SC_BAD_REQUEST, "Cannot build NodeTypeProperty from the given property.");
+ }
- if (property.getValue() instanceof List) {
- List ntElemList = new ArrayList();
- Iterator it = ((List) property.getValue()).iterator();
while (it.hasNext()) {
Object content = it.next();
- if (content instanceof Element) {
- ntElemList.add(new NodeTypeElement((Element)content));
+ if (!(content instanceof Element)) {
+ continue;
}
+ Element el = (Element)content;
+ if (XML_NODETYPE.equals(el.getLocalName()) && NodeTypeConstants.NAMESPACE.isSame(el.getNamespaceURI())) {
+ String nodetypeName = DomUtil.getText(el);
+ if (nodetypeName != null && !"".equals(nodetypeName)) {
+ nodetypeNames.add(nodetypeName);
}
- value = (NodeTypeElement[]) ntElemList.toArray(new NodeTypeElement[ntElemList.size()]);
- } else if (property.getValue() instanceof Element) {
- NodeTypeElement ntElem = new NodeTypeElement((Element)property.getValue());
- value = new NodeTypeElement [] {ntElem};
} else {
- value = new NodeTypeElement[0];
+ log.debug("'dcr:nodetype' element expected -> ignoring element '" + ((Element)content).getNodeName() + "'");
+ }
}
}
@@ -78,27 +101,29 @@
* @return set of nodetype names
*/
public Set getNodeTypeNames() {
- HashSet names = new HashSet();
- Object val = getValue();
- if (val instanceof NodeTypeElement[]) {
- NodeTypeElement[] elems = (NodeTypeElement[])val;
- for (int i = 0; i < elems.length; i++) {
- String ntName = elems[i].getNodeTypeName();
- if (ntName != null) {
- names.add(ntName);
- }
- }
- }
- return names;
+ return nodetypeNames;
}
/**
- * Returns the value of this property which is an array of {@link NodeTypeElement}
- * objects.
+ * Returns the value of this property which is a Set of nodetype names.
*
- * @return an array of {@link NodeTypeElement}s
+ * @return a Set of nodetype names (String).
*/
public Object getValue() {
- return value;
+ return nodetypeNames;
+ }
+
+ /**
+ * @see org.apache.jackrabbit.webdav.xml.XmlSerializable#toXml(Document)
+ */
+ public Element toXml(Document document) {
+ Element elem = getName().toXml(document);
+ Iterator it = getNodeTypeNames().iterator();
+ while (it.hasNext()) {
+ String name = it.next().toString();
+ Element ntElem = DomUtil.addChildElement(elem, XML_NODETYPE, NodeTypeConstants.NAMESPACE);
+ DomUtil.addChildElement(ntElem, XML_NODETYPENAME, NodeTypeConstants.NAMESPACE, name);
+ }
+ return elem;
}
}
Modified: incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/nodetype/PropertyDefinitionImpl.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/nodetype/PropertyDefinitionImpl.java?rev=368683&r1=368682&r2=368683&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/nodetype/PropertyDefinitionImpl.java (original)
+++ incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/nodetype/PropertyDefinitionImpl.java Fri Jan 13 03:11:35 2006
@@ -17,7 +17,9 @@
package org.apache.jackrabbit.webdav.jcr.nodetype;
import org.apache.log4j.Logger;
-import org.jdom.Element;
+import org.apache.jackrabbit.webdav.xml.DomUtil;
+import org.w3c.dom.Element;
+import org.w3c.dom.Document;
import javax.jcr.nodetype.PropertyDefinition;
import javax.jcr.Value;
@@ -87,9 +89,10 @@
* Return xml representation
*
* @return xml representation
+ * @param document
*/
- public Element toXml() {
- Element elem = super.toXml();
+ public Element toXml(Document document) {
+ Element elem = super.toXml(document);
elem.setAttribute(MULTIPLE_ATTRIBUTE, Boolean.toString(isMultiple()));
elem.setAttribute(REQUIREDTYPE_ATTRIBUTE, PropertyType.nameFromValue(getRequiredType()));
@@ -97,25 +100,28 @@
// default values may be 'null'
Value[] values = getDefaultValues();
if (values != null) {
- Element dvElement = new Element(DEFAULTVALUES_ELEMENT);
+ Element dvElement = document.createElement(DEFAULTVALUES_ELEMENT);
for (int i = 0; i < values.length; i++) {
try {
- Element valElem = new Element(DEFAULTVALUE_ELEMENT).setText(values[i].getString());
- dvElement.addContent(valElem);
+ Element valElem = document.createElement(DEFAULTVALUE_ELEMENT);
+ DomUtil.setText(valElem, values[i].getString());
+ dvElement.appendChild(valElem);
} catch (RepositoryException e) {
// should not occur
log.error(e.getMessage());
}
}
- elem.addContent(dvElement);
+ elem.appendChild(dvElement);
}
// value constraints array is never null.
- Element constrElem = new Element(VALUECONSTRAINTS_ELEMENT);
+ Element constrElem = document.createElement(VALUECONSTRAINTS_ELEMENT);
String[] constraints = getValueConstraints();
for (int i = 0; i < constraints.length; i++) {
- constrElem.addContent(new Element(VALUECONSTRAINT_ELEMENT).setText(constraints[i]));
+ Element vcElem = document.createElement(VALUECONSTRAINT_ELEMENT);
+ DomUtil.setText(vcElem, constraints[i]);
+ constrElem.appendChild(vcElem);
}
- elem.addContent(constrElem);
+ elem.appendChild(constrElem);
return elem;
}
@@ -125,7 +131,7 @@
*
* @return always returns {@link #PROPERTYDEFINITION_ELEMENT}
*/
- public String getElementName() {
+ String getElementName() {
return PROPERTYDEFINITION_ELEMENT;
}
}
Modified: incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/observation/SubscriptionImpl.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/observation/SubscriptionImpl.java?rev=368683&r1=368682&r2=368683&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/observation/SubscriptionImpl.java (original)
+++ incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/observation/SubscriptionImpl.java Fri Jan 13 03:11:35 2006
@@ -15,18 +15,30 @@
*/
package org.apache.jackrabbit.webdav.jcr.observation;
-import org.apache.log4j.Logger;
-import org.apache.jackrabbit.webdav.DavResourceLocator;
-import org.apache.jackrabbit.webdav.DavConstants;
-import org.apache.jackrabbit.webdav.observation.*;
-import org.apache.jackrabbit.webdav.util.XmlUtil;
import org.apache.jackrabbit.uuid.UUID;
-import org.jdom.Element;
+import org.apache.jackrabbit.webdav.DavException;
+import org.apache.jackrabbit.webdav.DavResourceLocator;
+import org.apache.jackrabbit.webdav.DavServletResponse;
+import org.apache.jackrabbit.webdav.observation.EventBundle;
+import org.apache.jackrabbit.webdav.observation.EventDiscovery;
+import org.apache.jackrabbit.webdav.observation.EventType;
+import org.apache.jackrabbit.webdav.observation.Filter;
+import org.apache.jackrabbit.webdav.observation.ObservationConstants;
+import org.apache.jackrabbit.webdav.observation.ObservationResource;
+import org.apache.jackrabbit.webdav.observation.Subscription;
+import org.apache.jackrabbit.webdav.observation.SubscriptionInfo;
+import org.apache.jackrabbit.webdav.xml.DomUtil;
+import org.apache.log4j.Logger;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
-import javax.jcr.observation.*;
-import javax.jcr.observation.EventListener;
import javax.jcr.RepositoryException;
-import java.util.*;
+import javax.jcr.observation.Event;
+import javax.jcr.observation.EventIterator;
+import javax.jcr.observation.EventListener;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
/**
* The <code>Subscription</code> class encapsulates a single subscription with
@@ -42,6 +54,7 @@
private static final long DEFAULT_TIMEOUT = 300000; // 5 minutes
private SubscriptionInfo info;
+ private long expirationTime;
private final DavResourceLocator locator;
private final String subscriptionId = UUID.randomUUID().toString();
@@ -70,25 +83,27 @@
/**
* Return the Xml representation of this <code>Subscription</code> as required
- * for the {@link org.apache.jackrabbit.webdav.observation.SubscriptionDiscovery} webdav property that in included
- * in the response body of a sucessful SUBSCRIBE request or as part of a
- * PROPFIND response.
+ * for the {@link org.apache.jackrabbit.webdav.observation.SubscriptionDiscovery}
+ * webdav property that in included in the response body of a sucessful SUBSCRIBE
+ * request or as part of a PROPFIND response.
*
* @return Xml representation
+ * @see org.apache.jackrabbit.webdav.xml.XmlSerializable#toXml(Document)
+ * @param document
*/
- public Element toXml() {
- Element subscr = new Element(XML_SUBSCRIPTION, NAMESPACE);
- Element[] elems = info.toXml();
- for (int i = 0; i < elems.length; i++) {
- subscr.addContent(elems[i]);
- }
+ public Element toXml(Document document) {
+ Element subscr = DomUtil.createElement(document, XML_SUBSCRIPTION, NAMESPACE);
- Element id = new Element(XML_SUBSCRIPTIONID);
- id.addContent(XmlUtil.hrefToXml(subscriptionId));
- subscr.addContent(id);
+ subscr.appendChild(info.toXml(document));
+ subscr.appendChild(DomUtil.depthToXml(info.isDeep(), document));
+ subscr.appendChild(DomUtil.timeoutToXml(info.getTimeOut(), document));
+
+ Element id = DomUtil.addChildElement(subscr, XML_SUBSCRIPTIONID, NAMESPACE);
+ id.appendChild(DomUtil.hrefToXml(subscriptionId, document));
return subscr;
}
+ //--------------------------------------------< implementation specific >---
/**
* Modify the {@link SubscriptionInfo} for this subscription.
*
@@ -98,36 +113,49 @@
this.info = info;
// validate the timeout and adjust value, if it is invalid or missing
long timeout = info.getTimeOut();
- if (timeout == DavConstants.UNDEFINED_TIMEOUT) {
- info.setTimeOut(DEFAULT_TIMEOUT);
+ if (timeout <= 0) {
+ timeout = DEFAULT_TIMEOUT;
}
+ expirationTime = System.currentTimeMillis() + timeout;
}
/**
* @return JCR compliant integer representation of the event types defined
* for this {@link SubscriptionInfo}.
*/
- int getEventTypes() {
- Iterator xmlTypes = info.getEventTypes().iterator();
- int eventTypes = 0;
- while (xmlTypes.hasNext()) {
- eventTypes |= nametoTypeConstant(((Element)xmlTypes.next()).getName());
+ int getEventTypes() throws DavException {
+ EventType[] eventTypes = info.getEventTypes();
+ int events = 0;
+ for (int i = 0; i < eventTypes.length; i++) {
+ events |= getEventType(eventTypes[i].getName());
}
- return eventTypes;
+ return events;
}
/**
* @return a String array with size > 0 or <code>null</code>
*/
String[] getUuidFilters() {
- return info.getFilters(XML_UUID);
+ return getFilterValues(XML_UUID);
}
/**
* @return a String array with size > 0 or <code>null</code>
*/
String[] getNodetypeNameFilters() {
- return info.getFilters(XML_NODETYPE_NAME);
+ return getFilterValues(XML_NODETYPE_NAME);
+ }
+
+ private String[] getFilterValues(String filterLocalName) {
+ Filter[] filters = info.getFilters(filterLocalName, NAMESPACE);
+ List values = new ArrayList();
+ for (int i = 0; i < filters.length; i++) {
+ String val = filters[i].getValue();
+ if (val != null) {
+ values.add(val);
+ }
+ }
+ return (values.size() > 0) ? (String[])values.toArray(new String[values.size()]) : null;
}
/**
@@ -173,7 +201,7 @@
* @return true if this <code>Subscription</code> is expired
*/
boolean isExpired() {
- return System.currentTimeMillis() > info.getTimeOut() + System.currentTimeMillis();
+ return System.currentTimeMillis() > expirationTime;
}
/**
@@ -189,7 +217,7 @@
Iterator it = eventBundles.iterator();
while (it.hasNext()) {
EventBundle eb = (EventBundle) it.next();
- ed.addEventBundle(eb.toXml());
+ ed.addEventBundle(eb);
}
// clear list
eventBundles.clear();
@@ -208,7 +236,7 @@
public synchronized void onEvent(EventIterator events) {
// TODO: correct not to accept events after expiration? without unsubscribing?
if (!isExpired()) {
- eventBundles.add(new EventBundle(events));
+ eventBundles.add(new EventBundleImpl(events));
}
}
@@ -217,12 +245,12 @@
* Static utility method in order to convert the types defined by
* {@link javax.jcr.observation.Event} into their Xml representation.
*
- * @param jcrEventType
+ * @param eventType The jcr event type
* @return Xml representation of the event type.
*/
- static Element typeConstantToXml(int jcrEventType) {
+ private static String getEventName(int eventType) {
String eventName;
- switch (jcrEventType) {
+ switch (eventType) {
case Event.NODE_ADDED:
eventName = EVENT_NODEADDED;
break;
@@ -240,7 +268,7 @@
eventName = EVENT_PROPERTYREMOVED;
break;
}
- return new Element(eventName, NAMESPACE);
+ return eventName;
}
/**
@@ -248,25 +276,25 @@
* Xml request body into the corresponding constant defined by
* {@link javax.jcr.observation.Event}.
*
- * @param eventTypeName
+ * @param eventName
* @return event type as defined by {@link javax.jcr.observation.Event}.
- * @throws IllegalArgumentException if the given element cannot be translated
+ * @throws DavException if the given element cannot be translated
* to any of the events defined by {@link javax.jcr.observation.Event}.
*/
- static int nametoTypeConstant(String eventTypeName) {
+ private static int getEventType(String eventName) throws DavException {
int eType;
- if (EVENT_NODEADDED.equals(eventTypeName)) {
+ if (EVENT_NODEADDED.equals(eventName)) {
eType = Event.NODE_ADDED;
- } else if (EVENT_NODEREMOVED.equals(eventTypeName)) {
+ } else if (EVENT_NODEREMOVED.equals(eventName)) {
eType = Event.NODE_REMOVED;
- } else if (EVENT_PROPERTYADDED.equals(eventTypeName)) {
+ } else if (EVENT_PROPERTYADDED.equals(eventName)) {
eType = Event.PROPERTY_ADDED;
- } else if (EVENT_PROPERTYCHANGED.equals(eventTypeName)) {
+ } else if (EVENT_PROPERTYCHANGED.equals(eventName)) {
eType = Event.PROPERTY_CHANGED;
- } else if (EVENT_PROPERTYREMOVED.equals(eventTypeName)) {
+ } else if (EVENT_PROPERTYREMOVED.equals(eventName)) {
eType = Event.PROPERTY_REMOVED;
} else {
- throw new IllegalArgumentException("Invalid event type: "+eventTypeName);
+ throw new DavException(DavServletResponse.SC_UNPROCESSABLE_ENTITY, "Invalid event type: "+eventName);
}
return eType;
}
@@ -279,20 +307,19 @@
*
* @see SubscriptionImpl#discoverEvents()
*/
- private class EventBundle {
+ private class EventBundleImpl implements EventBundle {
private final EventIterator events;
- private EventBundle(EventIterator events) {
+ private EventBundleImpl(EventIterator events) {
this.events = events;
}
- private Element toXml() {
- Element bundle = new Element(XML_EVENTBUNDLE, NAMESPACE);
+ public Element toXml(Document document) {
+ Element bundle = DomUtil.createElement(document, XML_EVENTBUNDLE, NAMESPACE);
while (events.hasNext()) {
Event event = events.nextEvent();
-
- Element eventElem = new Element(XML_EVENT, NAMESPACE);
+ Element eventElem = DomUtil.addChildElement(bundle, XML_EVENT, NAMESPACE);
// href
String eHref = "";
try {
@@ -302,15 +329,15 @@
// should not occur....
log.error(e.getMessage());
}
- eventElem.addContent(XmlUtil.hrefToXml(eHref));
+ eventElem.appendChild(DomUtil.hrefToXml(eHref, document));
// eventtype
- Element eType = new Element(XML_EVENTTYPE, NAMESPACE).addContent(typeConstantToXml(event.getType()));
- eventElem.addContent(eType);
+ Element eType = DomUtil.addChildElement(eventElem, XML_EVENTTYPE, NAMESPACE);
+ DomUtil.addChildElement(eType, getEventName(event.getType()), NAMESPACE);
// user id
- Element eUserId = new Element(XML_EVENTUSERID, NAMESPACE).setText(event.getUserID());
- eventElem.addContent(eUserId);
+ DomUtil.addChildElement(eventElem, XML_EVENTUSERID, NAMESPACE, event.getUserID());
}
return bundle;
}
+
}
}
Modified: incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/observation/SubscriptionManagerImpl.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/observation/SubscriptionManagerImpl.java?rev=368683&r1=368682&r2=368683&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/observation/SubscriptionManagerImpl.java (original)
+++ incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/observation/SubscriptionManagerImpl.java Fri Jan 13 03:11:35 2006
@@ -15,14 +15,25 @@
*/
package org.apache.jackrabbit.webdav.jcr.observation;
-import org.apache.log4j.Logger;
-import org.apache.jackrabbit.webdav.*;
+import org.apache.jackrabbit.webdav.DavException;
+import org.apache.jackrabbit.webdav.DavResourceLocator;
+import org.apache.jackrabbit.webdav.DavServletResponse;
+import org.apache.jackrabbit.webdav.DavSession;
import org.apache.jackrabbit.webdav.jcr.JcrDavException;
-import org.apache.jackrabbit.webdav.observation.*;
+import org.apache.jackrabbit.webdav.observation.EventDiscovery;
+import org.apache.jackrabbit.webdav.observation.ObservationResource;
+import org.apache.jackrabbit.webdav.observation.Subscription;
+import org.apache.jackrabbit.webdav.observation.SubscriptionDiscovery;
+import org.apache.jackrabbit.webdav.observation.SubscriptionInfo;
+import org.apache.jackrabbit.webdav.observation.SubscriptionManager;
+import org.apache.log4j.Logger;
import javax.jcr.RepositoryException;
import javax.jcr.observation.ObservationManager;
-import java.util.*;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
/**
* <code>SubscriptionManager</code> collects all subscriptions requested, handles
Modified: incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/property/LengthsProperty.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/property/LengthsProperty.java?rev=368683&r1=368682&r2=368683&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/property/LengthsProperty.java (original)
+++ incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/property/LengthsProperty.java Fri Jan 13 03:11:35 2006
@@ -18,7 +18,9 @@
import org.apache.jackrabbit.webdav.property.AbstractDavProperty;
import org.apache.jackrabbit.webdav.jcr.ItemResourceConstants;
-import org.jdom.Element;
+import org.apache.jackrabbit.webdav.xml.DomUtil;
+import org.w3c.dom.Element;
+import org.w3c.dom.Document;
/**
* <code>LengthsProperty</code> extends {@link org.apache.jackrabbit.webdav.property.DavProperty} providing
@@ -27,7 +29,7 @@
*/
public class LengthsProperty extends AbstractDavProperty implements ItemResourceConstants {
- private final Element[] value;
+ private final long[] value;
/**
* Create a new <code>LengthsProperty</code> from the given long array.
@@ -36,22 +38,29 @@
*/
public LengthsProperty(long[] lengths) {
super(JCR_LENGTHS, true);
-
- Element[] elems = new Element[lengths.length];
- for (int i = 0; i < lengths.length; i++) {
- elems[i] = new Element(XML_LENGTH, ItemResourceConstants.NAMESPACE);
- elems[i].addContent(String.valueOf(lengths[i]));
- }
- this.value = elems;
+ this.value = lengths;
}
/**
- * Returns an array of {@link Element}s representing the value of this
+ * Returns an array of {@link long}s representing the value of this
* property.
*
- * @return an array of {@link Element}s
+ * @return an array of {@link long}s
*/
public Object getValue() {
return value;
}
+
+ /**
+ * @see org.apache.jackrabbit.webdav.xml.XmlSerializable#toXml(Document)
+ */
+ public Element toXml(Document document) {
+ Element elem = getName().toXml(document);
+ for (int i = 0; i < value.length; i++) {
+ String txtContent = String.valueOf(value[i]);
+ DomUtil.addChildElement(elem, XML_LENGTH, ItemResourceConstants.NAMESPACE, txtContent);
+ }
+ return elem;
+ }
+
}
Added: incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/property/NamespacesProperty.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/property/NamespacesProperty.java?rev=368683&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/property/NamespacesProperty.java (added)
+++ incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/property/NamespacesProperty.java Fri Jan 13 03:11:35 2006
@@ -0,0 +1,101 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.webdav.jcr.property;
+
+import org.apache.log4j.Logger;
+import org.apache.jackrabbit.webdav.property.AbstractDavProperty;
+import org.apache.jackrabbit.webdav.property.DavProperty;
+import org.apache.jackrabbit.webdav.jcr.ItemResourceConstants;
+import org.apache.jackrabbit.webdav.xml.DomUtil;
+import org.apache.jackrabbit.webdav.DavException;
+import org.apache.jackrabbit.webdav.DavServletResponse;
+import org.w3c.dom.Element;
+import org.w3c.dom.Document;
+
+import javax.jcr.NamespaceRegistry;
+import javax.jcr.RepositoryException;
+import java.util.Properties;
+import java.util.List;
+import java.util.Iterator;
+import java.util.Enumeration;
+
+/**
+ * <code>NamespacesProperty</code>...
+ */
+public class NamespacesProperty extends AbstractDavProperty implements ItemResourceConstants {
+
+ private static Logger log = Logger.getLogger(NamespacesProperty.class);
+
+ private final Properties value;
+
+ public NamespacesProperty(NamespaceRegistry nsReg) throws RepositoryException {
+ super(JCR_NAMESPACES, false);
+ String[] prefixes = nsReg.getPrefixes();
+ value = new Properties();
+ for (int i = 0; i < prefixes.length; i++) {
+ value.setProperty(prefixes[i], nsReg.getURI(prefixes[i]));
+ }
+ }
+
+ public NamespacesProperty(DavProperty property) throws DavException {
+ super(JCR_NAMESPACES, false);
+ Object v = property.getValue();
+ if (!(v instanceof List)) {
+ log.warn("Unexpected structure of dcr:namespace property.");
+ throw new DavException(DavServletResponse.SC_INTERNAL_SERVER_ERROR);
+ }
+ value = new Properties();
+ // retrieve list of prefix/uri pairs that build the new values of
+ // the ns-registry
+ Iterator it = ((List)v).iterator();
+ while (it.hasNext()) {
+ Object listEntry = it.next();
+ if (listEntry instanceof Element) {
+ Element e = (Element)listEntry;
+ if (XML_NAMESPACE.equals(e.getLocalName())) {
+ String prefix = DomUtil.getChildText(e, XML_PREFIX, ItemResourceConstants.NAMESPACE);
+ String uri = DomUtil.getChildText(e, XML_URI, ItemResourceConstants.NAMESPACE);
+ value.setProperty(prefix, uri);
+ }
+ }
+ }
+ }
+
+ public Properties getNamespaces() {
+ return value;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ /**
+ * @see org.apache.jackrabbit.webdav.xml.XmlSerializable#toXml(Document)
+ */
+ public Element toXml(Document document) {
+ Element elem = getName().toXml(document);
+ Enumeration prefixes = value.propertyNames();
+ while (prefixes.hasMoreElements()) {
+ String prefix = (String)prefixes.nextElement();
+ String uri = value.getProperty(prefix);
+ Element nsElem = DomUtil.addChildElement(elem, XML_NAMESPACE, ItemResourceConstants.NAMESPACE);
+ DomUtil.addChildElement(nsElem, XML_PREFIX, ItemResourceConstants.NAMESPACE, prefix);
+ DomUtil.addChildElement(nsElem, XML_URI, ItemResourceConstants.NAMESPACE, uri);
+ }
+ return elem;
+ }
+
+}
\ No newline at end of file
Propchange: incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/property/NamespacesProperty.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/property/NamespacesProperty.java
------------------------------------------------------------------------------
svn:keywords = author date id revision url
Modified: incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/property/ValuesProperty.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/property/ValuesProperty.java?rev=368683&r1=368682&r2=368683&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/property/ValuesProperty.java (original)
+++ incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/property/ValuesProperty.java Fri Jan 13 03:11:35 2006
@@ -19,12 +19,16 @@
import org.apache.jackrabbit.webdav.property.AbstractDavProperty;
import org.apache.jackrabbit.webdav.property.DavProperty;
import org.apache.jackrabbit.webdav.jcr.ItemResourceConstants;
+import org.apache.jackrabbit.webdav.xml.DomUtil;
import org.apache.jackrabbit.value.ValueHelper;
-import org.jdom.Element;
+import org.apache.log4j.Logger;
+import org.w3c.dom.Element;
+import org.w3c.dom.Document;
import javax.jcr.Value;
import javax.jcr.ValueFormatException;
import javax.jcr.RepositoryException;
+import javax.jcr.PropertyType;
import java.util.List;
import java.util.Iterator;
import java.util.ArrayList;
@@ -36,7 +40,9 @@
*/
public class ValuesProperty extends AbstractDavProperty implements ItemResourceConstants {
- private final Element[] value;
+ private static Logger log = Logger.getLogger(ValuesProperty.class);
+
+ private final Value[] jcrValues;
/**
* Create a new <code>ValuesProperty</code> from the given {@link javax.jcr.Value Value
@@ -46,14 +52,8 @@
*/
public ValuesProperty(Value[] values) throws ValueFormatException, RepositoryException {
super(JCR_VALUES, false);
-
- Element[] propValue = new Element[values.length];
- for (int i = 0; i < values.length; i++) {
- propValue[i] = new Element(XML_VALUE, ItemResourceConstants.NAMESPACE);
- propValue[i].addContent(ValueHelper.serialize(values[i], false));
- }
// finally set the value to the DavProperty
- value = propValue;
+ jcrValues = values;
}
/**
@@ -61,17 +61,20 @@
*
* @param property
*/
- public ValuesProperty(DavProperty property) {
+ public ValuesProperty(DavProperty property) throws RepositoryException {
super(JCR_VALUES, false);
if (!JCR_VALUES.equals(property.getName())) {
throw new IllegalArgumentException("ValuesProperty may only be created with a property that has name="+JCR_VALUES.getName());
}
- Element[] elems = new Element[0];
- if (property.getValue() instanceof List) {
+ List valueElements = new ArrayList();
+ Object propValue = property.getValue();
+ if (propValue != null) {
+ if (isValueElement(propValue)) {
+ valueElements.add(propValue);
+ } else if (propValue instanceof List) {
Iterator elemIt = ((List)property.getValue()).iterator();
- ArrayList valueElements = new ArrayList();
while (elemIt.hasNext()) {
Object el = elemIt.next();
/* make sure, only Elements with name 'value' are used for
@@ -79,41 +82,61 @@
* comment etc.) is ignored. NO bad-request/conflict error is
* thrown.
*/
- if (el instanceof Element && XML_VALUE.equals(((Element)el).getName())) {
+ if (isValueElement(propValue)) {
valueElements.add(el);
}
}
+ }
+ }
/* fill the 'value' with the valid 'value' elements found before */
- elems = (Element[])valueElements.toArray(new Element[valueElements.size()]);
- } else {
- new IllegalArgumentException("ValuesProperty may only be created with a property that has a list of 'value' elements as content.");
+ Element[] elems = (Element[])valueElements.toArray(new Element[valueElements.size()]);
+ jcrValues = new Value[elems.length];
+ for (int i = 0; i < elems.length; i++) {
+ String value = DomUtil.getText(elems[i]);
+ jcrValues[i] = ValueHelper.deserialize(value, PropertyType.STRING, false);
}
- // finally set the value to the DavProperty
- value = elems;
+ }
+
+ private static boolean isValueElement(Object obj) {
+ return obj instanceof Element && XML_VALUE.equals(((Element)obj).getLocalName());
}
/**
* Converts the value of this property to a {@link javax.jcr.Value value array}.
*
* @return Array of Value objects
- * @throws RepositoryException
+ * @throws ValueFormatException if convertion of the internal jcr values to
+ * the specified value type fails.
*/
- public Value[] getValues(int propertyType) throws ValueFormatException, RepositoryException {
- Element[] propValue = (Element[])getValue();
- Value[] values = new Value[propValue.length];
- for (int i = 0; i < propValue.length; i++) {
- values[i] = ValueHelper.deserialize(propValue[i].getText(), propertyType, false);
+ public Value[] getValues(int propertyType) throws ValueFormatException {
+ Value[] vs = new Value[jcrValues.length];
+ for (int i = 0; i < jcrValues.length; i++) {
+ vs[i] = ValueHelper.convert(jcrValues[i], propertyType);
}
- return values;
+ return jcrValues;
}
/**
- * Returns an array of {@link Element}s representing the value of this
+ * Returns an array of {@link Value}s representing the value of this
* property.
*
- * @return an array of {@link Element}s
+ * @return an array of {@link Value}s
+ * @see #getValues(int)
*/
public Object getValue() {
- return value;
+ return jcrValues;
+ }
+
+ public Element toXml(Document document) {
+ Element elem = getName().toXml(document);
+ for (int i = 0; i < jcrValues.length; i++) {
+ try {
+ DomUtil.addChildElement(elem, XML_VALUE, ItemResourceConstants.NAMESPACE, jcrValues[i].getString());
+ } catch (RepositoryException e) {
+ log.error("Unexpected Error while converting jcr value to String: " + e.getMessage());
}
+ }
+ return elem;
+ }
+
}