Just a guess: Should the relevant part of the diff not looke like
this?

       public String getUsersPath() {
  -        return usersPath;
  +        // TODO: get rid of user_collection parameter
  +        if (resolvedUsersPath == null) {
  +            if (usersPath == null || "/".equals(usersPath)) {
  +                resolvedUsersPath = "";
  +            }
  +            else {
  +                resolvedUsersPath = usersPath;
  +                String ucoll = getParameter("user_collection");
  +                if (ucoll != null && ucoll.length() > 0) {
  +                    if (!ucoll.startsWith("/")) {
  +                        ucoll = "/"+ucoll;
  +                    }
  +                    resolvedUsersPath += ucoll;
  +                }
  +            }
  +        }
  +        return resolvedUsersPath;
  +    }

Regards,
Ingo

> There seems to be a bug in NamespaceConfig.getUsersPath(). It returns 
> null in initialization:
> 
> Thread [main] (Suspended (breakpoint at line 860 in SecurityImpl))
>       SecurityImplAllGrant(SecurityImpl).getPrincipal(SlideToken) line: 860
>       SecurityImplAllGrant(SecurityImpl).hasPermission(SlideToken, 
> ObjectNode, ActionNode) line: 686
>       SecurityImplAllGrant(SecurityImpl).checkPermission(SlideToken, 
> ObjectNode, ActionNode) line: 469
>       SecurityImplAllGrant(SecurityImpl).checkCredentials(SlideToken, 
> ObjectNode, ActionNode) line: 405
>       SecurityImplAllGrant(SecurityImpl).grantPermission(SlideToken, 
> NodePermission) line: 255
>       XMLUnmarshaller.loadObjectNode(NamespaceAccessToken, SlideToken, 
> Configuration) line: 250
>       XMLUnmarshaller.unmarshal(NamespaceAccessToken, SlideToken, 
> Configuration) line: 126
>       NamespaceAccessTokenImpl.importData(SlideToken, Configuration) line: 317
>       Namespace.loadBaseData(Configuration) line: 816
>       Domain.initNamespace(Configuration) line: 860
>       Domain.init(Configuration) line: 479
>       Domain.selfInit() line: 793
>       Domain.accessNamespace(SecurityToken, String) line: 278
>       SlideRealm.start() line: 218
>       StandardEngine(ContainerBase).start() line: 1173
>       StandardEngine.start() line: 347
>       StandardService.start() line: 497
>       StandardServer.start() line: 2190
>       Catalina.start() line: 512
>       Catalina.execute() line: 400
>       Catalina.process(String[]) line: 180
>       NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not 
> available [native method]
>       NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39 [local 
> variables unavailable]
>       DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25 [local 
> variables unavailable]
>       Method.invoke(Object, Object[]) line: 324 [local variables unavailable]
>       Bootstrap.main(String[]) line: 203
> 
> This leads to the URI-String null// which will be resolved to null. This 
> is certainly not a valid uri, but is furtheron used to retrieve and 
> store subjectUri.
> 
> Unfortunately, I have no idea how to fix this...
> 
> Oliver
> 
> [EMAIL PROTECTED] wrote:
> 
> > pnever      2003/10/20 05:38:17
> > 
> >   Modified:    src/webdav/server/org/apache/slide/webdav/method
> >                         AclMethod.java ReportMethod.java LockMethod.java
> >                src/share/org/apache/slide/lock LockImpl.java
> >                src/share/org/apache/slide/common NamespaceConfig.java
> >                src/share/org/apache/slide/security SecurityImpl.java
> >                src/share/org/apache/slide/structure StructureImpl.java
> >                src/webdav/server/org/apache/slide/webdav/util
> >                         PropertyHelper.java XMLValue.java
> >   Log:
> >   Refactoring:
> >   users, groups and roles paths are controlled now solely by NamespaceConfig
> >   
> >   Revision  Changes    Path
> >   1.35      +4 -11     
> > jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/AclMethod.java
> >   
> >   Index: AclMethod.java
> >   ===================================================================
> >   RCS file: 
> > /home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/AclMethod.java,v
> >   retrieving revision 1.34
> >   retrieving revision 1.35
> >   diff -u -r1.34 -r1.35
> >   --- AclMethod.java        18 Oct 2003 16:30:29 -0000      1.34
> >   +++ AclMethod.java        20 Oct 2003 12:38:17 -0000      1.35
> >   @@ -447,14 +447,7 @@
> >                return "~";
> >            }
> >            else if (hasChild(principal, NamespaceCache.DEFAULT_NAMESPACE, 
> > E_UNAUTHENTICATED)) {
> >   -                 String userCollection = "/";
> >   -                 String configParam = 
> > token.getNamespaceConfig().getParameter(AclConstants.P_USER_COLLECTION);
> >   -         if ( configParam != null ) {
> >   -         if ( configParam.length() > 0 )
> >   -                userCollection =  userCollection + configParam +"/";
> >   -         }
> >   -            return token.getNamespaceConfig().getUsersPath() + userCollection +
> >   -                token.getNamespaceConfig().getGuestPath();
> >   +            return 
> > token.getNamespaceConfig().getUsersPath()+token.getNamespaceConfig().getGuestPath();
> >            }
> >            throw new JDOMException("<"+principal.getName()+"> element must 
> > contain either a "+
> >                                        "<"+E_HREF+">, "+
> >   
> >   
> >   
> >   1.59      +4 -11     
> > jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/ReportMethod.java
> >   
> >   Index: ReportMethod.java
> >   ===================================================================
> >   RCS file: 
> > /home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/ReportMethod.java,v
> >   retrieving revision 1.58
> >   retrieving revision 1.59
> >   diff -u -r1.58 -r1.59
> >   --- ReportMethod.java     13 Oct 2003 16:55:42 -0000      1.58
> >   +++ ReportMethod.java     20 Oct 2003 12:38:17 -0000      1.59
> >   @@ -1120,13 +1120,6 @@
> >            char seperator = '/';
> >            boolean self = false;
> >            
> >   -        String userPrefix = "/";
> >   -        String configParam = 
> > token.getNamespaceConfig().getParameter(AclConstants.P_USER_COLLECTION);
> >   -        if ( configParam != null ) {
> >   -            if ( configParam.length() > 0 )
> >   -                userpath = userpath + "/" + configParam +"/";
> >   -        }
> >   -        
> >            currentUri = req.getRequestURI();
> >            // check if self or principal-property is searched
> >            if ((principalProperty.getName()).equalsIgnoreCase(E_SELF)) {
> >   
> >   
> >   
> >   1.52      +5 -12     
> > jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/LockMethod.java
> >   
> >   Index: LockMethod.java
> >   ===================================================================
> >   RCS file: 
> > /home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/LockMethod.java,v
> >   retrieving revision 1.51
> >   retrieving revision 1.52
> >   diff -u -r1.51 -r1.52
> >   --- LockMethod.java       18 Sep 2003 11:01:07 -0000      1.51
> >   +++ LockMethod.java       20 Oct 2003 12:38:17 -0000      1.52
> >   @@ -431,18 +431,11 @@
> >                                                    + (MAX_TIMEOUT * 1000));
> >    
> >                        }
> >   -                    String userCollection = "/";
> >   -                    String configParam = 
> > namespaceConfig.getParameter(AclConstants.P_USER_COLLECTION);
> >   -                    if ( configParam != null ) {
> >   -                    if ( configParam.length() > 0 )
> >   -                        userCollection = "/" + configParam +"/";
> >   -                    }
> >    
> >                        SubjectNode credentialsSubject =
> >                            (SubjectNode) structure.retrieve
> >   -                        (slideToken, namespaceConfig.getUsersPath() + 
> > userCollection
> >   -                             + slideToken.getCredentialsToken()
> >   -                             .getPublicCredentials());
> >   +                        (slideToken, namespaceConfig.getUsersPath()
> >   +                             
> > +"/"+slideToken.getCredentialsToken().getPublicCredentials());
> >    
> >                        NodeLock lockToken = null;
> >    
> >   
> >   
> >   
> >   1.35      +5 -16     jakarta-slide/src/share/org/apache/slide/lock/LockImpl.java
> >   
> >   Index: LockImpl.java
> >   ===================================================================
> >   RCS file: /home/cvs/jakarta-slide/src/share/org/apache/slide/lock/LockImpl.java,v
> >   retrieving revision 1.34
> >   retrieving revision 1.35
> >   diff -u -r1.34 -r1.35
> >   --- LockImpl.java 18 Oct 2003 16:30:29 -0000      1.34
> >   +++ LockImpl.java 20 Oct 2003 12:38:17 -0000      1.35
> >   @@ -410,22 +410,11 @@
> >        private String computeSubjectUriFromPrincipal(SlideToken token) {
> >            
> >            String result;
> >   -        String configParam = namespaceConfig.getParameter("user_collection");
> >   -        
> >   -        String userCollection;
> >   -        if ( configParam != null && configParam.length() > 0) {
> >   -            userCollection =  "/" + configParam;
> >   -        } else {
> >   -            userCollection =  "/";
> >   -        }
> >   -        
> >   -        
> >            String userId = token.getCredentialsToken().getPublicCredentials();
> >            if (userId.equals("/")) userId = "";
> >            else userId = "/" + userId;
> >            
> >   -        result = namespaceConfig.getUsersPath() + userCollection + userId;
> >   -        //        System.out.println("##### Subject URI = " + result);
> >   +        result = namespaceConfig.getUsersPath()+userId;
> >            return result;
> >        }
> >        
> >   
> >   
> >   
> >   1.30      +79 -6     
> > jakarta-slide/src/share/org/apache/slide/common/NamespaceConfig.java
> >   
> >   Index: NamespaceConfig.java
> >   ===================================================================
> >   RCS file: 
> > /home/cvs/jakarta-slide/src/share/org/apache/slide/common/NamespaceConfig.java,v
> >   retrieving revision 1.29
> >   retrieving revision 1.30
> >   diff -u -r1.29 -r1.30
> >   --- NamespaceConfig.java  18 Oct 2003 16:30:29 -0000      1.29
> >   +++ NamespaceConfig.java  20 Oct 2003 12:38:17 -0000      1.30
> >   @@ -100,7 +100,15 @@
> >    
> >    
> >        /** generic action nodes */
> >   -    public static final ActionNode DEFAULT_ACTION = new ActionNode();
> >   +    public static final ActionNode DEFAULT_ACTION = new ActionNode("default");
> >   +    public static final ActionNode ALL_ACTION = new ActionNode("all");
> >   +    
> >   +    
> >   +    /** generic subject nodes */
> >   +    public static final SubjectNode DEFAULT_SUBJECT = new 
> > SubjectNode("default");
> >   +    public static final SubjectNode ALL_SUBJECT = new SubjectNode("all");
> >   +    public static final SubjectNode OWNER_SUBJECT = new SubjectNode("owner");
> >   +    public static final SubjectNode GUEST_SUBJECT = new SubjectNode("guest");
> >    
> >    
> >        // ----------------------------------------------------- Instance Variables
> >   @@ -226,6 +234,10 @@
> >         */
> >        protected String usersPath = null;
> >    
> >   +    protected String resolvedUsersPath = null;
> >   +    protected String resolvedGroupsPath = null;
> >   +    protected String resolvedRolesPath = null;
> >   +    
> >    
> >        /**
> >         * Guest user path.
> >   @@ -500,7 +512,68 @@
> >         * @return String Users path
> >         */
> >        public String getUsersPath() {
> >   -        return usersPath;
> >   +        // TODO: get rid of user_collection parameter
> >   +        if (resolvedUsersPath == null) {
> >   +            if (usersPath == null || "/".equals(usersPath)) {
> >   +                resolvedUsersPath = "";
> >   +            }
> >   +            else {
> >   +                String ucoll = getParameter("user_collection");
> >   +                if (ucoll != null && ucoll.length() > 0) {
> >   +                    if (!ucoll.startsWith("/")) {
> >   +                        ucoll = "/"+ucoll;
> >   +                    }
> >   +                    resolvedUsersPath = usersPath+ucoll;
> >   +                }
> >   +            }
> >   +        }
> >   +        return resolvedUsersPath;
> >   +    }
> >   +    
> >   +    /**
> >   +     * Groups path accessor.
> >   +     *
> >   +     * @return String Groups path
> >   +     */
> >   +    public String getGroupsPath() {
> >   +        if (resolvedGroupsPath == null) {
> >   +            if (usersPath == null || "/".equals(usersPath)) {
> >   +                resolvedGroupsPath = "";
> >   +            }
> >   +            else {
> >   +                String gcoll = getParameter("group_collection");
> >   +                if (gcoll != null && gcoll.length() > 0) {
> >   +                    if (!gcoll.startsWith("/")) {
> >   +                        gcoll = "/"+gcoll;
> >   +                    }
> >   +                    resolvedGroupsPath = usersPath+gcoll;
> >   +                }
> >   +            }
> >   +        }
> >   +        return resolvedGroupsPath;
> >   +    }
> >   +    
> >   +    /**
> >   +     * Roles path accessor.
> >   +     *
> >   +     * @return String Roles path
> >   +     */
> >   +    public String getRolesPath() {
> >   +        if (resolvedRolesPath == null) {
> >   +            if (usersPath == null || "/".equals(usersPath)) {
> >   +                resolvedRolesPath = "";
> >   +            }
> >   +            else {
> >   +                String rcoll = getParameter("role_collection");
> >   +                if (rcoll != null && rcoll.length() > 0) {
> >   +                    if (!rcoll.startsWith("/")) {
> >   +                        rcoll = "/"+rcoll;
> >   +                    }
> >   +                    resolvedRolesPath = usersPath+rcoll;
> >   +                }
> >   +            }
> >   +        }
> >   +        return resolvedRolesPath;
> >        }
> >    
> >    
> >   
> >   
> >   
> >   1.39      +5 -12     
> > jakarta-slide/src/share/org/apache/slide/security/SecurityImpl.java
> >   
> >   Index: SecurityImpl.java
> >   ===================================================================
> >   RCS file: 
> > /home/cvs/jakarta-slide/src/share/org/apache/slide/security/SecurityImpl.java,v
> >   retrieving revision 1.38
> >   retrieving revision 1.39
> >   diff -u -r1.38 -r1.39
> >   --- SecurityImpl.java     18 Oct 2003 16:30:29 -0000      1.38
> >   +++ SecurityImpl.java     20 Oct 2003 12:38:17 -0000      1.39
> >   @@ -857,15 +857,8 @@
> >                principalPath = namespaceConfig.getGuestPath();
> >            }
> >            
> >   -        String userPrefix = "/";
> >   -        String configParam = namespaceConfig.getParameter("user_collection");
> >   -        if ( configParam != null ) {
> >   -            if ( configParam.length() > 0 )
> >   -                userPrefix = "/" + configParam +"/";
> >   -        }
> >   -        
> >            Uri subjectUri = namespace.getUri
> >   -            (token, namespaceConfig.getUsersPath() + userPrefix + 
> > principalPath);
> >   +            (token, namespaceConfig.getUsersPath()+"/"+principalPath);
> >            
> >            try {
> >                return subjectUri.getStore().retrieveObject(subjectUri);
> >   
> >   
> >   
> >   1.34      +6 -6      
> > jakarta-slide/src/share/org/apache/slide/structure/StructureImpl.java
> >   
> >   Index: StructureImpl.java
> >   ===================================================================
> >   RCS file: 
> > /home/cvs/jakarta-slide/src/share/org/apache/slide/structure/StructureImpl.java,v
> >   retrieving revision 1.33
> >   retrieving revision 1.34
> >   diff -u -r1.33 -r1.34
> >   --- StructureImpl.java    17 Oct 2003 16:47:26 -0000      1.33
> >   +++ StructureImpl.java    20 Oct 2003 12:38:17 -0000      1.34
> >   @@ -374,8 +374,8 @@
> >                        // object in the configuration files.
> >                        // This would then be the default behavior.
> >                        NodePermission grantedPermission = null;
> >   -                    String userUri = namespaceConfig.getUsersPath() + "/"
> >   -                        + token.getCredentialsToken().getPublicCredentials();
> >   +                    String userUri = namespaceConfig.getUsersPath()
> >   +                        +"/"+token.getCredentialsToken().getPublicCredentials();
> >                        Domain.debug("Checking basic permissions on new object");
> >                        /*
> >                         try {
> >   
> >   
> >   
> >   1.56      +29 -53    
> > jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/PropertyHelper.java
> >   
> >   Index: PropertyHelper.java
> >   ===================================================================
> >   RCS file: 
> > /home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/PropertyHelper.java,v
> >   retrieving revision 1.55
> >   retrieving revision 1.56
> >   diff -u -r1.55 -r1.56
> >   --- PropertyHelper.java   16 Oct 2003 10:01:07 -0000      1.55
> >   +++ PropertyHelper.java   20 Oct 2003 12:38:17 -0000      1.56
> >   @@ -1076,20 +1076,31 @@
> >            List excludeList = new ArrayList();
> >            
> >            String usersPath = 
> > truncateLeadingSlash(nsaToken.getNamespaceConfig().getUsersPath());
> >   -        Element excludeElement = new Element(DaslConstants.E_EXCLUDE, 
> > NamespaceCache.SLIDE_NAMESPACE);
> >   -        excludeElement.setText(usersPath);
> >   -        excludeList.add(excludeElement);
> >   +        addExcludeElement(usersPath, excludeList);
> >   +        
> >   +        String groupsPath = 
> > truncateLeadingSlash(nsaToken.getNamespaceConfig().getGroupsPath());
> >   +        addExcludeElement(groupsPath, excludeList);
> >   +        
> >   +        String rolesPath = 
> > truncateLeadingSlash(nsaToken.getNamespaceConfig().getRolesPath());
> >   +        addExcludeElement(rolesPath, excludeList);
> >            
> >            Iterator historyPathIterator = 
> > HistoryPathHandler.getHistoryPathHandler().getResolvedHistoryPaths().iterator();
> >            while (historyPathIterator.hasNext()) {
> >   -            excludeElement = new Element(DaslConstants.E_EXCLUDE, 
> > NamespaceCache.SLIDE_NAMESPACE);
> >   -            
> > excludeElement.setText(truncateLeadingSlash(historyPathIterator.next().toString()));
> >   -            excludeList.add(excludeElement);
> >   +            String path = 
> > truncateLeadingSlash(historyPathIterator.next().toString());
> >   +            addExcludeElement(path, excludeList);
> >            }
> >            
> >            return excludeList;
> >        }
> >        
> >   +    private void addExcludeElement(String path, List excludeList) {
> >   +        if (path != null && path.length() > 0) {
> >   +            Element excludeElement = new Element(DaslConstants.E_EXCLUDE, 
> > NamespaceCache.SLIDE_NAMESPACE);
> >   +            excludeElement.setText(path);
> >   +            excludeList.add(excludeElement);
> >   +        }
> >   +    }
> >   +    
> >        /**
> >         * Returns an XMLValue containing <code>&lt;href&gt;</code> elements
> >         * with the URI of the VCRs in the workspace identified the given
> >   @@ -2040,44 +2051,15 @@
> >         * @throws   JDOMException
> >         */
> >        public XMLValue computePrincipalCollectionSet(NodeRevisionDescriptors 
> > revisionDescriptors, NodeRevisionDescriptor revisionDescriptor, String 
> > contextPath, String serverURL) throws ObjectLockedException, 
> > RevisionDescriptorNotFoundException, ServiceAccessException, 
> > LinkedObjectNotFoundException, AccessDeniedException, ObjectNotFoundException, 
> > LockTokenNotFoundException, JDOMException {
> >   -        
> >            XMLValue xmlValue = new XMLValue();
> >   -        
> >   -        NamespaceConfig config = nsaToken.getNamespaceConfig();
> >   -        Element href;
> >   -        String userCollStr = config.getParameter(P_USER_COLLECTION);
> >   -        String groupCollStr = config.getParameter(P_GROUP_COLLECTION);
> >   -        String roleCollStr = config.getParameter(P_ROLE_COLLECTION);
> >   -        if (userCollStr != null && userCollStr.length() > 0) {
> >   -            if (!userCollStr.startsWith("/")) {
> >   -                userCollStr = "/"+userCollStr;
> >   -            }
> >   -            href = new Element(E_HREF, NamespaceCache.DEFAULT_NAMESPACE);
> >   -            href.setText(getAbsoluteURL(null, contextPath, 
> > config.getUsersPath()+userCollStr));
> >   -            xmlValue.add(href);
> >   -            if (groupCollStr != null && groupCollStr.length() > 0) {
> >   -                if (!groupCollStr.startsWith("/")) {
> >   -                    groupCollStr = "/"+groupCollStr;
> >   -                }
> >   -                href = new Element(E_HREF, NamespaceCache.DEFAULT_NAMESPACE);
> >   -                href.setText(getAbsoluteURL(null, contextPath, 
> > config.getUsersPath()+groupCollStr));
> >   -                xmlValue.add(href);
> >   -            }
> >   -            if (roleCollStr != null && roleCollStr.length() > 0) {
> >   -                if (!roleCollStr.startsWith("/")) {
> >   -                    roleCollStr = "/"+roleCollStr;
> >   -                }
> >   -                href = new Element(E_HREF, NamespaceCache.DEFAULT_NAMESPACE);
> >   -                href.setText(getAbsoluteURL(null, contextPath, 
> > config.getUsersPath()+roleCollStr));
> >   -                xmlValue.add(href);
> >   -            }
> >   +        NamespaceConfig namespaceConfig = nsaToken.getNamespaceConfig();
> >   +        xmlValue.addHref(getAbsoluteURL(null, contextPath, 
> > namespaceConfig.getUsersPath()));
> >   +        if (namespaceConfig.getGroupsPath() != null) {
> >   +            xmlValue.addHref(getAbsoluteURL(null, contextPath, 
> > namespaceConfig.getGroupsPath()));
> >            }
> >   -        else {
> >   -            href = new Element(E_HREF, NamespaceCache.DEFAULT_NAMESPACE);
> >   -            href.setText(getAbsoluteURL(null, contextPath, 
> > config.getUsersPath()));
> >   -            xmlValue.add(href);
> >   +        if (namespaceConfig.getRolesPath() != null) {
> >   +            xmlValue.addHref(getAbsoluteURL(null, contextPath, 
> > namespaceConfig.getRolesPath()));
> >            }
> >   -        
> >            return xmlValue;
> >        }
> >        
> >   @@ -2130,23 +2112,17 @@
> >            XMLValue xmlValue = new XMLValue();
> >            String userHref;
> >            NamespaceConfig config = nsaToken.getNamespaceConfig();
> >   -        String userCollection = config.getParameter(USER_COLLECTION);
> >            if ((userProperty != null) && (userProperty.getValue()!=null) &&
> >                    (!"".equals(userProperty.getValue().toString()))) {
> >                
> >   -            if (userCollection == null){
> >   -                userHref = contextPath + config.getUsersPath() + "/" + 
> > userProperty.getValue().toString();
> >   -            } else {
> >   -                userHref = contextPath + config.getUsersPath() + "/" + 
> > userCollection + "/" + userProperty.getValue().toString();
> >   -            }
> >   +            userHref = contextPath + config.getUsersPath() + "/" + 
> > userProperty.getValue().toString();
> >   +            
> >            } else {
> >                userHref =  contextPath + config.getUsersPath();
> >                if ( config.getGuestPath() != null && 
> > !config.getGuestPath().equals("") )
> >                    userHref = userHref + "/" + config.getGuestPath();
> >            }
> >   -        Element href = new Element(E_HREF, NamespaceCache.DEFAULT_NAMESPACE);
> >   -        href.setText(userHref);
> >   -        xmlValue.add(href);
> >   +        xmlValue.addHref(userHref);
> >            return xmlValue;
> >        }
> >        
> >   
> >   
> >   
> >   1.13      +20 -10    
> > jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/XMLValue.java
> >   
> >   Index: XMLValue.java
> >   ===================================================================
> >   RCS file: 
> > /home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/XMLValue.java,v
> >   retrieving revision 1.12
> >   retrieving revision 1.13
> >   diff -u -r1.12 -r1.13
> >   --- XMLValue.java 14 Aug 2003 14:41:45 -0000      1.12
> >   +++ XMLValue.java 20 Oct 2003 12:38:17 -0000      1.13
> >   @@ -69,6 +69,7 @@
> >    import java.util.ArrayList;
> >    import java.util.Iterator;
> >    import java.util.List;
> >   +import org.apache.slide.content.NodeProperty;
> >    import org.jdom.CDATA;
> >    import org.jdom.Comment;
> >    import org.jdom.Document;
> >   @@ -93,13 +94,13 @@
> >     *
> >     * @author <a href="mailto:[EMAIL PROTECTED]">Ralf Stuckert</a>
> >     **/
> >   -public class XMLValue implements Cloneable, Comparable {
> >   +public class XMLValue implements Cloneable, Comparable, WebdavConstants {
> >        
> >        /**
> >         * Constant for the message of the IllegalArgumentException that may be
> >         * thrown in method [EMAIL PROTECTED] #add add()}.
> >         */
> >   -
> >   +    
> >        public static final String ELEMENT_MUST_NOT_BE_NULL = "'null' Element is 
> > not allowed";
> >        
> >        /**
> >   @@ -299,7 +300,10 @@
> >                Iterator iterator = content.iterator();
> >                while (iterator.hasNext()) {
> >                    Object o = iterator.next();
> >   -                if( o instanceof Element ) {
> >   +                if( o == null ) {
> >   +                    throw new 
> > IllegalArgumentException(ELEMENT_MUST_NOT_BE_NULL);
> >   +                }
> >   +                else if( o instanceof Element ) {
> >                        add((Element)o);
> >                    }
> >                    else if( o instanceof Text ) {
> >   @@ -377,6 +381,12 @@
> >            }
> >        }
> >        
> >   +    public void addHref(String path) {
> >   +        Element href = new Element(E_HREF, 
> > NodeProperty.NamespaceCache.DEFAULT_NAMESPACE);
> >   +        href.setText(path);
> >   +        add(href);
> >   +    }
> >   +    
> >        /**
> >         * Returns an iterator of JDOM Elements.
> >         *
> >   @@ -558,7 +568,7 @@
> >        String getTextValue() {
> >            Iterator it = elementList.iterator();
> >            StringBuffer sb = new StringBuffer();
> >   -
> >   +        
> >            while (it.hasNext()) {
> >                Object o = it.next();
> >                if (o instanceof Element) {
> >   @@ -567,7 +577,7 @@
> >            }
> >            return sb.toString();
> >        }
> >   -
> >   +    
> >        /**
> >         * compares the concatenated Text values of all Elements in elementList
> >         *
> >   @@ -577,7 +587,7 @@
> >         *
> >         */
> >        public int compareTo (Object o) {
> >   -
> >   +        
> >            String s1 = getTextValue();
> >            String s2 = ((XMLValue)o).getTextValue();
> >            return s1.compareTo (s2);
> >   
> >   
> >   
> > 
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> > 
> > 
> > .
> > 
> 
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to