ozeigermann 2004/01/12 03:19:09
Modified: src/doc project.xml architecture.xml index.xml
src/share/org/apache/slide slide.properties
src/share/org/apache/slide/lock package.html
src/share/org/apache/slide/content package.html
src/share/org/apache/slide/store ParentStore.java
src/doc/stylesheets slide.xsl
src/share/org/apache/slide/security package.html
Removed: src/wrappers/wrappers/catalina/conf/slide slide.def
slide.data slide.conf
src/admin/org/apache/slide/admin/users
RemoveUsersAction.java AddUserAction.java
EditUserAction.java SaveUserAction.java
UserForm.java UsersForm.java
src/contrib/webdavgui/src/bin runui.sh runui.bat
src/taglib/struts/org/apache/slide/taglib/tag/struts
StrutsTagUtils.java PropertyTag.java
ContentTag.java RevisionTag.java NamespaceTei.java
DomainTei.java NamespaceTag.java RevisionTei.java
DomainTag.java IterateLocksTag.java NodeTag.java
NodeTei.java PropertyTei.java
IterateMembersTag.java
src/examples/taglib readme.txt struts-example.jsp
src/contrib/webdavgui/src/images unknown.gif docs.gif
openFile.gif folderInRed.gif docsInRed.gif
closeFile.gif folder.gif
src/wrappers/wrappers/jmx NamespaceConfigMBean.java
NamespaceMBean.java DomainMBean.java SlideJMX.java
mbeans-descriptors.xml
src/contrib/webdavgui/src/java/org/apache/webdav/ui/filechooser/dir
SPWebFolder.java SPDirectoryService.java
SPResourceNode.java SPFile.java SPWebFile.java
src/taglib/jstl/org/apache/slide/taglib/tag/jstl
SetNodeTag.java NodeTag.java NamespaceTag.java
JstlTagUtils.java ContentTag.java
ForEachMemberTag.java ForEachAncestorTag.java
PropertyTag.java DomainTag.java SetRevisionTag.java
RevisionTag.java SetDomainTag.java
ForEachLockTag.java SetNamespaceTag.java
src/contrib/webdavgui/src/java/org/apache/webdav/ui/lib/methods
SPLockMethod.java SPCopyMethod.java
SPHeadMethod.java SPMoveMethod.java
SPGetMethod.java SPPropFindMethod.java
SPPutMethod.java SPPostMethod.java
SPWebdavMethod.java SPMkcolMethod.java
SPOptionsMethod.java SPPropPatchMethod.java
SPUnlockMethod.java SPDeleteMethod.java
src/contrib/webdavgui/src/java/org/apache/webdav/ui/filechooser
SPFileFilter.java SPFileChooser.java
SPFileView.java SPFileSystemView.java
src/taglib slide-struts.tld slide-jstl.tld
src/doc version.xml struts-taglib.xml stores.xml
library.xml jstl-taglib.xml lock.xml release.xml
security.xml search.xml structure.xml status.xml
process.xml changelog.xml server.xml
howto-jdbcstore.xml macro.xml namespace.xml
src/wrappers/wrappers/catalina AdminHostConfig.java web.xml
server.xml SlideHostConfig.java BaseHostConfig.java
slidemanager.xml SlideServerListener.java
slide-descriptors.xml WebdavHostConfig.java
SlideLogger.java
src/contrib/webdavgui/src/java/org/apache/webdav/ui/lab
MainFrame.java Launcher.java HostFrame.java
HostFrame_AboutBox.java
src/taglib/common/org/apache/slide/taglib/tag
NamespaceTagSupport.java SetNodeTagSupport.java
ContentTagSupport.java SetNamespaceTagSupport.java
SetDomainTagSupport.java RevisionTagSupport.java
DomainTagSupport.java PropertyTagSupport.java
SetRevisionTagSupport.java NodeTagSupport.java
src/examples/interceptors SimpleContentInterceptor.java
readme.txt
src/examples example.bat example.sh
src/contrib/webdavgui/src/java/org/apache/webdav/ui/lib/properties
CurrentUserPrivilegeSetProperty.java
SupportedPrivilegeSetProperty.java
LockdiscoveryProperty.java
GetcontentlengthProperty.java SPProperty.java
src/wrappers/wrappers/catalina/root style.css index.jsp
src/examples/version Domain.xml Test.java
src/contrib/webdavgui/src/java/org/apache/webdav/ui
LoginFrame.java SPWebdavClient.java
src/taglib/common/org/apache/slide/taglib/bean
NamespaceBean.java AbstractBean.java LockBean.java
NodeBean.java RevisionBean.java PropertyBean.java
DomainBean.java PermissionBean.java
src/examples/multithread Test.java TestThread.java
src/admin/org/apache/slide/admin/locks KillLocksAction.java
LocksForm.java
src/taglib/common/org/apache/slide/taglib/util
MembersIterator.java Iterators.java
LocksIterator.java SingleObjectIterator.java
Scopes.java
src/contrib/webdavgui build.properties.sample .cvsignore
build.xml
src/wrappers/wrappers/catalina/root/WEB-INF/classes
slide-root.properties
src/wrappers/wrappers/catalina/root/WEB-INF
struts-config.xml web.xml
src/wrappers/wrappers/jndi SlideDirContext.java
src/examples/xml Test.java Import.xml Domain.xml
src/contrib/webdavgui/src/java/org/apache/webdav/ui/resources
login.properties
src/admin/org/apache/slide/admin AdminAction.java
src/examples/SimpleWebdavServlet readme.txt
SimpleWebdavServlet.java
src/contrib/taglib slide-struts.tld users.jsp
src/contrib/webdavgui/src/java/org/apache/webdav/ui/filechooser/plafui
SPMetalFileChooserUI.java
SPWindowsFileChooserUI.java
src/wrappers/wrappers/catalina/conf slide.xml
Log:
Removed broken / unmaintained sources:
- contrib
- examples
- admin
- tablib
- wrappers/wrappers/jndi
- wrappers/wrappers/jmx
- wrappers/wrappers/catalina except for the authentication stuff
Revision Changes Path
1.22 +5 -32 jakarta-slide/src/doc/project.xml
Index: project.xml
===================================================================
RCS file: /home/cvs/jakarta-slide/src/doc/project.xml,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
--- project.xml 18 Nov 2003 15:36:24 -0000 1.21
+++ project.xml 12 Jan 2004 11:19:07 -0000 1.22
@@ -10,57 +10,30 @@
<menu name="Main">
<item name="Introduction" href="index.html"/>
+ <item name="Architecture" href="architecture.html"/>
<item name="News" href="news.html"/>
<item name="Downloads" href="http://jakarta.apache.org/site/binindex.html"/>
- <item name="Status" href="status.html"/>
- <item name="Changelog" href="changelog.html"/>
<item name="Contributors" href="contrib.html"/>
- </menu>
- <menu name="Resources">
- <item name="FAQ" href="http://faq.globalvision.com.au/"/>
<item name="Mailing Lists" href="http://jakarta.apache.org/site/mail.html"/>
- <item name="Build Status"
href="http://jakarta.apache.org/builds/gump/latest/jakarta-slide.html"/>
<item name="CVS" href="http://jakarta.apache.org/site/cvsindex.html"/>
- <item name="Library" href="library.html"/>
</menu>
<menu name="User's Guide">
<item name="Connecting with Windows XP" href="xp.html"/>
<item name="Using MacOS X webdav_fs" href="osx.html"/>
- <item name="Server" href="server.html"/>
<item name="Client" href="webdav-client.html"/>
</menu>
<menu name="Administrator's Guide">
<item name="Installation" href="installation.html"/>
+ <item name="Tomcat Bundle" href="howto-tomcat.html"/>
<item name="Configuration" href="conf-lib.html"/>
- </menu>
- <menu name="HOW-TOs">
- <item name="Tomcat Howto" href="howto-tomcat.html"/>
- <item name="JDBC Stores Howto" href="howto-jdbcstore.html"/>
- <item name="J2EE Stores Howto" href="howto-j2eestore.html"/>
- </menu>
- <menu name="Programmer's Corner">
- <item name="Getting Started using Eclipse" href="getting-started.html"/>
<item name="Understanding Domain.xml" href="config_file.html"/>
- <item name="Architecture" href="architecture.html"/>
<item name="Domain" href="domain.html"/>
- <item name="Namespace" href="namespace.html"/>
- <item name="Examples" href="examples.html"/>
- </menu>
- <menu name="Slide API">
- <item name="Structure" href="structure.html"/>
- <item name="Security" href="security.html"/>
- <item name="Lock" href="lock.html"/>
- <item name="Content" href="version.html"/>
- <item name="Macro" href="macro.html"/>
- <item name="Index" href="search.html"/>
- <item name="Process" href="process.html"/>
+ <item name="J2EE Integration" href="howto-j2eestore.html"/>
</menu>
- <menu name="Reference">
- <item name="UML" href="uml/index.html"/>
+ <menu name="Programmer's Corner">
+ <item name="Getting Started using Eclipse" href="getting-started.html"/>
<item name="JavaDoc" href="javadoc/index.html"/>
<item name="WebDAV Client Javadoc" href="clientjavadoc/index.html"/>
- <item name="Tag Library (JSTL)" href="jstl-taglib.html"/>
- <item name="Tag Library (Struts)" href="struts-taglib.html"/>
</menu>
</body>
1.8 +0 -46 jakarta-slide/src/doc/architecture.xml
Index: architecture.xml
===================================================================
RCS file: /home/cvs/jakarta-slide/src/doc/architecture.xml,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- architecture.xml 1 Aug 2002 07:17:13 -0000 1.7
+++ architecture.xml 12 Jan 2004 11:19:07 -0000 1.8
@@ -55,51 +55,5 @@
</section>
- <section name="The Slide API">
-
- <subsection name="Content management">
-
- <p>
- The content management system is accessible through a set of Java
- classes, called helpers, which encompass all the functionality a client
- application will want to access.
- </p>
-
- <p>
- The following helpers are provided :
- <ul>
- <li><b>structure</b> : Access to the namespace tree</li>
- <li><b>security</b> : Security functions</li>
- <li><b>lock</b> : Locking functionality</li>
- <li><b>content</b> : Manage object revisions, metadata and content</li>
- <li><b>macro</b> : Higher level object management functions</li>
- <li><b>index</b> : Indexing and searching functions (not implemented
- yet)</li>
- <li><b>process</b> : Handles approvals, confirmations,
- notifications (not implemented yet)</li>
- </ul>
- </p>
-
- <p>
- More details on the helpers can be found on the appropriate section of
- the documentation. The domain page also contains details on how to
- access the helpers.
- </p>
-
- </subsection>
-
- <subsection name="WebDAV">
-
- <p>
- A client can access Slide remotely through WebDAV. A low-level client
- library is provided within the Slide project, as well as administration
- tools. This interface will expand over time to provide expose virtually
- all the functionality of the content management API.
- </p>
-
- </subsection>
-
- </section>
-
</body>
</document>
1.17 +22 -100 jakarta-slide/src/doc/index.xml
Index: index.xml
===================================================================
RCS file: /home/cvs/jakarta-slide/src/doc/index.xml,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- index.xml 18 Nov 2003 16:57:59 -0000 1.16
+++ index.xml 12 Jan 2004 11:19:07 -0000 1.17
@@ -4,43 +4,37 @@
<properties>
<author email="[EMAIL PROTECTED]">Remy Maucherat</author>
+ <author email="[EMAIL PROTECTED]">Oliver Zeigermann</author>
<title>The Jakarta Slide project</title>
</properties>
<body>
- <section name="Slide is alive!">
-<p>Despite all rumors Slide is not only alive, but there
-are efforts to finally bring out the 2.0 release!</p>
-<p>Stay tuned, further updates and details in the news
-section will follow
-later!</p>
- </section>
-
- <section name="Slide">
- <p>
- Welcome to the Jakarta Slide project! Slide is a project composed of multiple
modules tied together using
- WebDAV (see below for more details about WebDAV).
-
- </p>
+ <section name="Overwiew">
<p>
- It includes :
- <ul>
- <li>A content management system with a Java API</li>
- <li>A servlet implementing the WebDAV protocol on top of the content
- management system</li>
- <li>A Java WebDAV and HTTP client library</li>
- <li>A WebDAV command line client</li>
- <li>WebDAV enabled Swing components</li>
- </ul>
- </p>
+ Welcome to the Jakarta Slide project! Slide is a content repository which can
serve as a basis for a content
+management system / framework and other purposes. It features:</p>
+ <ul>
+ <li>Full WebDAV Support</li>
+ <li>Basic DeltaV WebDAV Versioning Support</li>
+ <li>Support for a variety of backend systems for storing the content
+including different databases and file system storage</li>
+ <li>Transactions and Locking for data integrity</li>
+ <li>Flexible control over permissions at a per file level via support
for the
+WebDAV ACL</li>
+ <li>DASL support for any backend, extensible for using backends search
+capabilities for higher scalability and less latency</li>
+ <li>Simple installation on any server supporting Servlet 2.3 and .war
+deployment</li>
+ <li>'ready-to-run' binary distribution for Tomcat</li>
+ <li>A fully featured WebDAV client library and command line client</li>
+ </ul>
</section>
- <section name="Overview">
+ <section name="Introduction">
<p>
- The Slide project main module is a Content Management and Integration
- System, which can be seen as a low-level <i>content management
+ The Slide project main module is a content repository, which can be seen as a
low-level <i>content management
framework</i>. Conceptually, it provides a hierarchical organization
of binary content which can be stored into arbitrary, heterogenous,
distributed data stores. In addition, Slide integrates security,
@@ -52,8 +46,7 @@
requiring only small abstraction layers to be written for each
repository. That way, Slide can integrate the data
from various physical locations in a hierachical and unified way.
- Slide uses can range from managing intranet application content (such as
- the Exolab.org portal) to using it as a file server.
+ Slide uses can range from managing intranet application content to using it
as a file server.
</p>
<p>
@@ -66,77 +59,6 @@
using standard third party tools, along with the custom ones provided
in the Slide distribution as additional tools.
</p>
-
- </section>
-
- <section name="Main Features">
-
- <subsection name="Current Status">
- <p>
- This feature list does not represent the current feature list
- of Slide, but more the goals we intend to achieve.
- </p>
- <p>
- To see what the current state of each of these components is, please
- see the <a href="status.html">Status page</a>.
- </p>
- </subsection>
-
- <subsection name="Content Management">
- <p>
- <ul>
- <li>100% Pure Java</li>
- <li>Hierarchical object storage</li>
- <li>Data storage abstraction</li>
- <li>Distributable over a network</li>
- <li>User management</li>
- <li>Security</li>
- <li>Locking</li>
- <li>Versioning</li>
- <li>Indexing</li>
- <li>Searching</li>
- <li>Integrated process engine</li>
- <li>Manageable</li>
- </ul>
- </p>
- </subsection>
-
- <subsection name="WebDAV Servlet">
- <p>
- <ul>
- <li>WebDAV Level 2</li>
- <li>DAV ACL support</li>
- <li>Delta V support</li>
- <li>DASL support</li>
- </ul>
- </p>
- </subsection>
-
- <subsection name="WebDAV Client Library">
- <p>
- <ul>
- <li>100% Pure Java</li>
- <li>HTTP/1.1 support</li>
- <li>Easy to use object model</li>
- <li>WebDAV Level 2 support</li>
- <li>DAV ACL support</li>
- <li>Delta V support</li>
- <li>DASL support</li>
- </ul>
- </p>
- </subsection>
-
- <subsection name="Other Features">
- <p>
- <ul>
- <li>Integration with Tomcat 4.0</li>
- <li>Easy to deploy on any Servlet 2.2 compliant engine</li>
- <li>Command line administration tool</li>
- <li>Swing-based administration tool</li>
- <li>WebDAV enabled Swing components</li>
- </ul>
- </p>
- </subsection>
</section>
1.8 +3 -1 jakarta-slide/src/share/org/apache/slide/slide.properties
Index: slide.properties
===================================================================
RCS file: /home/cvs/jakarta-slide/src/share/org/apache/slide/slide.properties,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- slide.properties 17 May 2002 15:47:26 -0000 1.7
+++ slide.properties 12 Jan 2004 11:19:08 -0000 1.8
@@ -1,6 +1,6 @@
# Domain XML definition file
# Default : Will look for domain.xml in current directory
-#org.apache.slide.domain=Domain.xml
+org.apache.slide.domain=E:/Programme/Apache Group/Tomcat 4.1/conf/Domain.xml
# Automatically perform security checks
# Default : true
@@ -25,3 +25,5 @@
# Debug
# Default: false
org.apache.slide.debug=false
+
+org.apache.slide.binding=true
\ No newline at end of file
1.5 +62 -3 jakarta-slide/src/share/org/apache/slide/lock/package.html
Index: package.html
===================================================================
RCS file: /home/cvs/jakarta-slide/src/share/org/apache/slide/lock/package.html,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- package.html 28 Mar 2002 06:23:14 -0000 1.4
+++ package.html 12 Jan 2004 11:19:08 -0000 1.5
@@ -80,6 +80,65 @@
directly check for whether a particular subject is locked or whether it
can actually lock a given subject.
</p>
+
+ <h3>Principles</h3>
+
+ <p>Every <tt>SubjectNode</tt> can potentially be locked. A lock consist of
the following information tuple:
+<pre>
+(target subject, owner subject, locked action, duration, inheritance)
+</pre>
+ </p>
+
+ <p>Here are examples of locks :
+<pre>
+(/foo/document.txt, /user/dave, /actions/read, 10m, no)
+(/foo/document.txt, /user/dave, /actions/write, 10m, no)
+(/foo, /user/john, /actions/read, 5m, yes)
+</pre>
+ </p>
+
+ <p>Same as permissions, locks granted on an object are inherited (unless
specified otherwise during locking) by the children of the object. For example, a lock
obtained on object whose URI is <tt>/foo</tt> would also apply to the object
<tt>/foo/bar</tt>.</p>
+
+ <h3>Behavior</h3>
+
+ <p>Slide automatically enforces all locks through the use of helper
functions used by the client application. If a subject (ie. a file) is accessed and
the action is already locked by another subject (ie. another client) an
<tt>ObjectLockedException</tt> is thrown, which is a checked exception, so the client
application will know that an underlying lock check failed, and will take appropriate
actions.</p>
+
+ <h3>Object Model</h3>
+
+ <h4>[EMAIL PROTECTED] org.apache.slide.lock.NodeLock NodeLock}</h4>
+
+ <p>
+ The NodeLock class represents a lock.
+ </p>
+
+ <p>
+
+ <ul>
+ <li>
+ Id: Lock Id (unique).
+ </li>
+ <li>
+ Object: Uri of the node associated to the lock.
+ </li>
+ <li>
+ Subject: Lock owner.
+ </li>
+ <li>
+ Type: Action which is locked (to perform the action, the
+ lock Id must be present in the SlideToken).
+ </li>
+ <li>
+ Exclusive: True if the lock is exclusive. Multiple non-exclusive
+ locks can be obtained on the same node for the same action (type).
+ </li>
+ <li>
+ Inheritable: True if the lock also applies to the children of the
+ node it is associated with.
+ </li>
+ </ul>
+
+ </p>
+
</body>
</html>
1.5 +120 -4 jakarta-slide/src/share/org/apache/slide/content/package.html
Index: package.html
===================================================================
RCS file: /home/cvs/jakarta-slide/src/share/org/apache/slide/content/package.html,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- package.html 28 Mar 2002 06:23:14 -0000 1.4
+++ package.html 12 Jan 2004 11:19:08 -0000 1.5
@@ -70,7 +70,10 @@
<body>
<p>
Provides classes for accessing and manipulating the content, metadata
- and revision history of nodes.
+ and revision history of nodes. By default linear versioning is automatically
provided, but the
+ client can use helper functions to create and merge branches. The
+ versioning component also manages the metadata associated on the
+ objects, like for example its size and creation date.
</p>
<p>
Each [EMAIL PROTECTED] org.apache.slide.structure.ObjectNode ObjectNode}
which has
@@ -83,7 +86,120 @@
<li>the metadata associated with the object
<li>the revision tree
</ul>
+ The basic metadata include :
+ <ul>
+ <li>Client friendly name</li>
+ <li>Creation date</li>
+ <li>Content type</li>
+ <li>Content language (if applicable)</li>
+ </ul>
</p>
+
+ <p>
+ The client application can modify metadata fields, add additional
+ fields, ...
+ </p>
+
+ <h3>Object Model</h3>
+ <h4>[EMAIL PROTECTED] org.apache.slide.content.NodeRevisionDescriptors
+ NodeRevisionDescriptors}</h4>
+
+ <p>
+ The NodeRevisionDescriptors class represents the revision tree of an
+ object. This object is immutable.
+ </p>
+
+ <p>
+
+ <ul>
+ <li>
+ Object: Uri of the asssociated node.
+ </li>
+ <li>
+ Use Versioning: Flag which indicates whether or not a node has
+ multiple revisions.
+ </li>
+ <li>
+ Latest Revision Numbers: Indicates what is the latest revision
+ number in each branch.
+ </li>
+ <li>
+ Branches: Revision numbers of all the revisions of the node.
+ </li>
+ </ul>
+
+ </p>
+
+ <h4>[EMAIL PROTECTED] org.apache.slide.content.NodeRevisionDescriptor
NodeRevisionDescriptor}</h4>
+
+ <p>
+ The NodeRevisionDescriptor class represents all the metadata
+ information associated with the binary content of a revision.
+ This includes information on the revision itself, labels and
+ properties.
+ </p>
+
+ <p>
+
+ <ul>
+ <li>
+ Branch Name: Name of the branch in which this revision is.
+ </li>
+ <li>
+ Number: Revision number.
+ </li>
+ <li>
+ Labels: Labels (tags) associated with the revision.
+ </li>
+ <li>
+ Properties: Properties associated with the revision. The default
+ properties are: creation date, name, type, source, content length,
+ last modification date.
+ </li>
+ </ul>
+
+ </p>
+
+ <h4>[EMAIL PROTECTED] org.apache.slide.content.NodeProperty NodeProperty}</h4>
+
+ <p>
+ The NodeProperty class represents an individual property associated
+ to a revision. This object is immutable.
+ </p>
+
+ <p>
+
+ <ul>
+ <li>
+ Name: Property name.
+ </li>
+ <li>
+ Namespace: Property namespace.
+ </li>
+ <li>
+ Value: Property value.
+ </li>
+ <li>
+ Type: Property type.
+ </li>
+ </ul>
+
+ </p>
+
+ <h4>[EMAIL PROTECTED] org.apache.slide.content.NodeRevisionContent
NodeRevisionContent}</h4>
+
+ <p>
+ The NodeRevisionContent class gives access to the revision's binary
+ content.
+ </p>
+
+ <h4>[EMAIL PROTECTED] org.apache.slide.content.NodeRevisionNumber
NodeRevisionNumber}</h4>
+
+ <p>
+ The NodeRevisionNumber class represents the revision number of a
+ revision. This object is immutable.
+ </p>
+
</body>
</html>
1.3 +14 -4 jakarta-slide/src/share/org/apache/slide/store/ParentStore.java
Index: ParentStore.java
===================================================================
RCS file: /home/cvs/jakarta-slide/src/share/org/apache/slide/store/ParentStore.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ParentStore.java 6 Jan 2004 13:31:21 -0000 1.2
+++ ParentStore.java 12 Jan 2004 11:19:08 -0000 1.3
@@ -153,6 +153,11 @@
ResourceId resourceId = obtainResourceId(uri);
ObjectNode objectClone = object.cloneObject();
objectClone.setUri(resourceId.getUuri()); // switch to uuri
+ try {
+ tlockManager.lock(resourceId, uri.toString(), TLock.WRITE_LOCK);
+ } catch (TLockedException e) {
+ throw new ServiceAccessException(this, new
ConflictException(uri.toString()));
+ }
super.storeObject(resourceId, objectClone);
}
@@ -176,6 +181,11 @@
ResourceId resourceId = obtainResourceId(uri);
ObjectNode objectClone = object.cloneObject();
objectClone.setUri(resourceId.getUuri()); // switch to uuri
+ try {
+ tlockManager.lock(resourceId, uri.toString(), TLock.WRITE_LOCK);
+ } catch (TLockedException e) {
+ throw new ServiceAccessException(this, new
ConflictException(uri.toString()));
+ }
super.removeObject(resourceId, objectClone);
}
1.8 +2 -2 jakarta-slide/src/doc/stylesheets/slide.xsl
Index: slide.xsl
===================================================================
RCS file: /home/cvs/jakarta-slide/src/doc/stylesheets/slide.xsl,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- slide.xsl 1 Aug 2002 07:17:15 -0000 1.7
+++ slide.xsl 12 Jan 2004 11:19:08 -0000 1.8
@@ -118,7 +118,7 @@
<xsl:comment>PAGE FOOTER</xsl:comment>
<tr><td colspan="2">
<div align="center"><font color="{$body-link}" size="-1"><em>
- Copyright © 1999-2001, Apache Software Foundation
+ Copyright © 1999-2004, Apache Software Foundation
</em></font></div>
</td></tr>
1.5 +122 -4 jakarta-slide/src/share/org/apache/slide/security/package.html
Index: package.html
===================================================================
RCS file: /home/cvs/jakarta-slide/src/share/org/apache/slide/security/package.html,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- package.html 28 Mar 2002 06:23:17 -0000 1.4
+++ package.html 12 Jan 2004 11:19:09 -0000 1.5
@@ -69,8 +69,126 @@
<body>
<p>
- Provides classes to access and manipulate permissions.
+ Provides classes to access and manipulate permissions. Slide features an
integrated herarchical security system. When a subject (ie. a user) wants to perform
an action on a given subject (ie. a file), Slide will automatically check that the
subject has the appropriate permissions. The client application can add additional
security checks and permissions by directly calling the Security helper fuctions.
</p>
+
+ <h3>Roles</h3>
+
+ <p>
+ A role can be assciated to each node of the Slide namespace. This role
+ will indicate what are the responsabilities and rights of an object
+ in the namespace. Of course, most of the nodes in the namespace won't
+ attempt to perform actions, and are associated to the role "nobody".
+ </p>
+
+ <p>
+ The roles are represented in Slide by Java interfaces, which can be
+ empty or contain additional functions.
+ </p>
+
+ <p>
+ To have a particular role, the node must extend SubjectNode, and
+ implement the role interface. For exemple, FooNode has role Foo if
+ it extends SubjectNode and implements interface Foo. The node must
+ always have a default constructor.
+ </p>
+
+ <p>
+ Simple names can be associated to the Java interfaces name (in the
+ namespace configuration). These names can be used instead of the fully
+ qualified interface class names when defining permissions.
+ </p>
+
+ <h3>Principles</h3>
+
+ <p>
+ <img src="images/ns2.png"/>
+ </p>
+
+ <p>Every <tt>ObjectNode</tt> has associated permissions, which are tuples
with the following format:
+<pre>
+(target subject, executing subject, action, inheritance)
+</pre>
+ </p>
+
+ <p>Here are examples of permissions:
+<pre>
+(/foo/document.txt, /users/dave, /actions/read, no)
+(/foo/document.txt, /users/dave, /actions/write, no)
+(/foo, /users/john, /actions/read, yes)
+</pre>
+ </p>
+
+ <p>Permissions granted on an object are inherited (unless specified
otherwise during permission assignement) by the children of the object. For example, a
permission specified on object whose URI is <tt>/foo</tt> would be inherited by object
<tt>/foo/bar</tt>.</p>
+
+ <p>This inheritance behavior also applies to subjects and actions. Subject
<tt>/users/dave</tt> will have all the permissions given to all the subject
<tt>/users</tt>. Likewise, a subject who can perform action <tt>/actions</tt> on an
object will be able to perform <tt>/actions/read</tt>.</p>
+
+ <h3>Behavior</h3>
+
+ <p>The security checks for those action types are automatically done by the
helper functions used by the client applications. If a check fails, an
<tt>AccessDeniedException</tt> is thrown, which is a checked exception, so the client
application will know when an underlying security check occurs, and can take
appropriate actions if it fails.</p>
+
+ <p>The basic actions are :
+ <ul>
+ <li>Read object</li>
+ <li>Create object</li>
+ <li>Remove object</li>
+ <li>Grant permission</li>
+ <li>Revoke permission</li>
+ <li>Read permissions</li>
+ <li>Lock object</li>
+ <li>Kill lock</li>
+ <li>Read locks</li>
+ <li>Read revision metadata</li>
+ <li>Create revision metadata</li>
+ <li>Modify revision metadata</li>
+ <li>Remove revision metadata</li>
+ <li>Read revision content</li>
+ <li>Create revision content</li>
+ <li>Modify revision content</li>
+ <li>Remove revision content</li>
+ </ul>
+ The client application can define additional action types, and do whatever
security checks it needs.</p>
+
+ </section>
+
+ <h3>Object Model</h3>
+
+ <h4>[EMAIL PROTECTED] org.apache.slide.security.NodePermission
NodePermission}</h4>
+
+ <p>
+ The NodePermission class represents a permission (or Access Control
+ Entry) which is placed on a node of the namespace.
+ </p>
+
+ <p>
+
+ <ul>
+ <li>
+ Object: Uri of the node associated to the permission.
+ </li>
+ <li>
+ Subject: Subject of the permission. This can be either the uri of
+ an object in the namespace, the name (or interface class name) of
+ a role or a self permission (in which case the subject is equal
+ to "~").
+ </li>
+ <li>
+ Action: Action of the permission.
+ </li>
+ <li>
+ Inheritable: Flag which indicates if the permission also applies to
+ the children of the node it is associated to.
+ </li>
+ <li>
+ Negative: True if the permission is negative, which means the
+ subject is denied the permission to perform the specified action.
+ If there is a permission conflict on the same node, the negative
+ permission prevails.
+ </li>
+ </ul>
+
+ </p>
+
</body>
</html>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]