jackrabbit-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Wolf Benz <euroj...@gmail.com>
Subject Re: Namespaces - questions
Date Wed, 28 Feb 2007 19:04:03 GMT
Hi Stefan,

1/ It seems though, that the JR impl takes the spec a bit loosely...  
if you read source like these 2 snippets:
(snippet from Jackrabbit 1.2.2 -  
org.apache.jackrabbit.core.NamespaceRegistryImpl)

Code: (you can't unregister a NS)
---------
/**
      * {@inheritDoc}
      */
     public void unregisterNamespace(String prefix)
             throws NamespaceException,  
UnsupportedRepositoryOperationException,
             AccessDeniedException, RepositoryException {
...
         /**
          * as we can't guarantee that there are no references to the  
specified
          * namespace (in names of nodes/properties/node types etc.)  
we simply
          * don't allow it.
          */
         throw new NamespaceException("unregistering namespaces is  
not supported.");
---------

& The same goes for remapping: (presented as functionality that  
actually works...)

Code: (you can't remap a NS)
---------
  public void registerNamespace(String prefix, String uri) {
...

      if (prefixToURI.containsKey(prefix)) {
             /**
              * prevent remapping of existing prefixes because this  
would in effect
              * remove the previously assigned namespace;
              * as we can't guarantee that there are no references to  
this namespace
              * (in names of nodes/properties/node types etc.) we  
simply don't allow it.
              */
             throw new NamespaceException("failed to register  
namespace "
                     + prefix + " -> " + uri
                     + ": remapping existing prefixes is not  
supported.");
         }
---------

So... whhat do I have to think if this? (or do I miss smth?)

2/ Apart from that: what would then be the preferred place to put a  
custom CND file?
In /workspaces/myworkspace/nodetypes  ?

3/ In reaction to text below from previous mail: the question was not  
why we had to write
s.getRootNode().getNode("myapp:someNode"); // i.e. with the inclusion  
of the NS (I do get the concept of NSes :-)

... but why the prior and explicit need for a second  
"s.setNamespacePrefix("myapp", "http://your.com/ns/1");"
as it is already registered at that point. (Is it really necessary  
within one app - fail to see why)



>
> 2/ Why do you explicitely (again) do the
> "s.setNamespacePrefix("myapp", "http://your.com/ns/1");" as you not
> only registered the NS, but also provide the NS (myapp) in your call
> on the next line: "s.getRootNode().getNode("myapp:someNode");"
> Is it necessary?

namespaces in JCR are modelled after XML namespaces. for more  
information
please refer to sections 4.5 and 6.3 in the jsr 170 specification.

cheers
stefan


Mime
View raw message