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 lu...@apache.org on 2005/03/02 12:41:47 UTC
cvs commit: jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/properties/exchange LastAccessedMaintainer.java LastAccessedProperty.java package.html resource_kinds.xml
luetzkendorf 2005/03/02 03:41:47
Modified: src/webdav/server/org/apache/slide/webdav/util/properties/exchange
package.html resource_kinds.xml
Added: src/webdav/server/org/apache/slide/webdav/util/properties/exchange
LastAccessedMaintainer.java
LastAccessedProperty.java
Log:
support for lastaccessed property added
Revision Changes Path
1.2 +11 -3 jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/properties/exchange/package.html
Index: package.html
===================================================================
RCS file: /home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/properties/exchange/package.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- package.html 2 Feb 2005 17:19:35 -0000 1.1
+++ package.html 2 Mar 2005 11:41:46 -0000 1.2
@@ -41,6 +41,14 @@
</configuration>
</listener>
</pre>
+
+ <p>If you want to maintain a last accesses property (i.e. updated it if a resource is read)
+ you may register the corresponding maintainer:
+ <pre>
+ <event classname="org.apache.slide.webdav.event.WebdavEvent" enable="true"/>
+ <listener classname="org.apache.slide.webdav.util.properties.exchange.LastAccessedMaintainer"/>
+
+ </pre>
</body>
</html>
1.2 +7 -3 jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/properties/exchange/resource_kinds.xml
Index: resource_kinds.xml
===================================================================
RCS file: /home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/properties/exchange/resource_kinds.xml,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- resource_kinds.xml 2 Feb 2005 17:19:35 -0000 1.1
+++ resource_kinds.xml 2 Mar 2005 11:41:46 -0000 1.2
@@ -66,6 +66,10 @@
</computer-configuration>
</live-property>
+ <live-property name="lastaccessed" protected="true"
+ computer="org.apache.slide.webdav.util.properties.exchange.LastAccessedProperty">
+ </live-property>
+
</live-properties>
</resource-kind>
1.1 jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/properties/exchange/LastAccessedMaintainer.java
Index: LastAccessedMaintainer.java
===================================================================
/*
* $Header: /home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/properties/exchange/LastAccessedMaintainer.java,v 1.1 2005/03/02 11:41:46 luetzkendorf Exp $
* $Revision: 1.1 $
* $Date: 2005/03/02 11:41:46 $
*
* ====================================================================
*
* Copyright 1999-2002 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.slide.webdav.util.properties.exchange;
import java.util.Date;
import org.apache.slide.common.Domain;
import org.apache.slide.common.NamespaceAccessToken;
import org.apache.slide.common.PropertyName;
import org.apache.slide.content.Content;
import org.apache.slide.content.NodeProperty;
import org.apache.slide.content.NodeRevisionDescriptor;
import org.apache.slide.content.NodeRevisionDescriptors;
import org.apache.slide.event.VetoException;
import org.apache.slide.webdav.event.WebdavAdapter;
import org.apache.slide.webdav.event.WebdavEvent;
import org.apache.slide.webdav.method.AbstractWebdavMethod;
/**
* Content event listener that updated the property <code>lastaccessed</code>
* if the content is retrieved, i.e. the resource is read.
*/
public class LastAccessedMaintainer extends WebdavAdapter
{
static final PropertyName PN_LAST_ACCESSED =
PropertyName.getPropertyName("lastaccessed", NodeProperty.SLIDE_NAMESPACE);
private void setLastAccessed(WebdavEvent event) {
AbstractWebdavMethod method = (AbstractWebdavMethod)event.getSource();
NamespaceAccessToken nsaToken = method.getNamespaceAccessToken();
Content content = nsaToken.getContentHelper();
try {
NodeRevisionDescriptors nrds = content.retrieve(
method.getSlideToken(), method.getRequestUri());
NodeRevisionDescriptor nrd = content.retrieve(
method.getSlideToken(), nrds);
nrd.setProperty(PN_LAST_ACCESSED, Long.toString((new Date()).getTime()));
content.store(method.getSlideToken(), method.getRequestUri(), nrd, null);
} catch (Exception e) {
Domain.error("Error while updateing lastaccessed property", e);
}
}
public void get(WebdavEvent event) throws VetoException
{
setLastAccessed(event);
}
public void checkin(WebdavEvent event) throws VetoException
{
setLastAccessed(event);
}
public void checkout(WebdavEvent event) throws VetoException
{
setLastAccessed(event);
}
public void copy(WebdavEvent event) throws VetoException
{
setLastAccessed(event);
}
public void label(WebdavEvent event) throws VetoException
{
setLastAccessed(event);
}
public void mkcol(WebdavEvent event) throws VetoException
{
setLastAccessed(event);
}
public void move(WebdavEvent event) throws VetoException
{
setLastAccessed(event);
}
public void propFind(WebdavEvent event) throws VetoException
{
setLastAccessed(event);
}
public void propPatch(WebdavEvent event) throws VetoException
{
setLastAccessed(event);
}
public void put(WebdavEvent event) throws VetoException
{
setLastAccessed(event);
}
public void versionControl(WebdavEvent event) throws VetoException
{
setLastAccessed(event);
}
}
1.1 jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/properties/exchange/LastAccessedProperty.java
Index: LastAccessedProperty.java
===================================================================
/*
* $Header: /home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/properties/exchange/LastAccessedProperty.java,v 1.1 2005/03/02 11:41:46 luetzkendorf Exp $
* $Revision: 1.1 $
* $Date: 2005/03/02 11:41:46 $
*
* ====================================================================
*
* Copyright 1999-2002 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.slide.webdav.util.properties.exchange;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.slide.common.NamespaceAccessToken;
import org.apache.slide.common.PropertyName;
import org.apache.slide.common.SlideException;
import org.apache.slide.content.NodeProperty;
import org.apache.slide.content.NodeRevisionDescriptor;
import org.apache.slide.content.NodeRevisionDescriptors;
import org.apache.slide.webdav.util.WebdavContext;
import org.apache.slide.webdav.util.properties.AbstractComputedProperty;
import org.apache.slide.webdav.util.resourcekind.ResourceKind;
/**
* @author Stefan L�tzkendorf
*/
public class LastAccessedProperty extends AbstractComputedProperty
{
protected static final SimpleDateFormat DATE_FORMAT =
//new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.US);
//new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); // same as createdate
new SimpleDateFormat("dd/MM/yyyy HH:mm:ss a"); // 3/29/1999 1:30:00 PM
/*
* @see org.apache.slide.webdav.util.properties.PropertyComputer#getPropertyName()
*/
public PropertyName getPropertyName()
{
return Constants.PN_LASTACCESSED;
}
/*
* @see org.apache.slide.webdav.util.properties.PropertyComputer#computeValue(org.apache.slide.common.NamespaceAccessToken, org.apache.slide.content.NodeRevisionDescriptors, org.apache.slide.content.NodeRevisionDescriptor, org.apache.slide.webdav.util.resourcekind.ResourceKind, org.apache.slide.webdav.util.WebdavContext)
*/
public Object computeValue(NamespaceAccessToken nsaToken,
NodeRevisionDescriptors revisionDescriptors,
NodeRevisionDescriptor revisionDescriptor,
ResourceKind resourceKind, WebdavContext context)
throws SlideException
{
Date lastAccessed = null;
NodeProperty nodeProperty = revisionDescriptor.getProperty(
LastAccessedMaintainer.PN_LAST_ACCESSED);
if (nodeProperty != null) {
lastAccessed = new Date(Long.parseLong(nodeProperty.getValue().toString()));
return DATE_FORMAT.format(lastAccessed);
} else {
return DATE_FORMAT.format(revisionDescriptor.getLastModifiedAsDate());
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: slide-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-dev-help@jakarta.apache.org