hi matej
On Fri, Mar 14, 2008 at 10:41 PM, Matej Knopp <[EMAIL PROTECTED]> wrote:
> Hi,
>
> I've problem when attempting to clone the entire workspace, i.e.
> calling Workspace#clone with srcAbsPath and destAbsPath = "/". I'm not
> sure if that's permitted by the the spec, yet the exception I get
> doesn't seem right so I'm asking anyway. I'm aware that even if the
> exception gets fixed there is still the jcr:system node which can't be
> cloned. Thus my question: Should it be possible to clone entire
> workspace? That would mean allowing srcAbsPath and destAbsPath to be
> '/' and skipping the jcr:system node. Is the current behavior just a
> bug or is it not supported at all?
i'd say the latter ;-) while the current behaviour is IMO correct according to
the spec (the dest. path is required to be an "[existing path]/[new name]")
i agree that cloning an entire workspace is a legitimate use case that
should be supported. i will create a JSR 283 issue asking for clarification
about the Workspace#clone(..., "/", "/", ...) special case.
do you mind creating a jackrabbit improvement issue to allow
cloning "/" to "/"?
BTW: JSR 283 (public review draft) provides a new method
Wokrspace#createWorkspace(String name, String srcWorkspace)
which creates a new workspace initialized with a clone of the existing
workspace's content.
cheers
stefan
>
> The complete stacktrace I'm getting:
>
> ERROR - RequestCycle - Method onLinkClicked of interface
> org.apache.wicket.markup.html.link.ILinkListener targeted at component
> [MarkupContainer [Component id = publish, page =
> com.ibg.dexter.web.admin.AdminPage, path =
> 7:admin:publish.AdminPanel$8, isVisible = true, isVersioned = true]]
> threw an exception
> org.apache.wicket.WicketRuntimeException: Method onLinkClicked of
> interface org.apache.wicket.markup.html.link.ILinkListener targeted at
> component [MarkupContainer [Component id = publish, page =
> com.ibg.dexter.web.admin.AdminPage, path =
> 7:admin:publish.AdminPanel$8, isVisible = true, isVersioned = true]]
> threw an exception
> at
> org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:194)
> at
> org.apache.wicket.request.target.component.listener.ListenerInterfaceRequestTarget.processEvents(ListenerInterfaceRequestTarget.java:73)
> at
> org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:90)
> at
> org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1166)
> at org.apache.wicket.RequestCycle.step(RequestCycle.java:1243)
> at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1330)
> at org.apache.wicket.RequestCycle.request(RequestCycle.java:493)
> at
> org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:358)
> at
> org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:194)
> at
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1089)
> at
> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:365)
> at
> org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
> at
> org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
> at
> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
> at
> org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
> at
> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
> at org.mortbay.jetty.Server.handle(Server.java:295)
> at
> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:503)
> at
> org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:827)
> at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:511)
> at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:210)
> at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:379)
> at
> org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:226)
> at
> org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)
> Caused by: java.lang.reflect.InvocationTargetException
> at sun.reflect.GeneratedMethodAccessor31.invoke(Unknown Source)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:585)
> at
> org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:183)
> ... 23 more
> Caused by: com.ibg.dexter.jcr.exception.JcrException:
> javax.jcr.PathNotFoundException: no such ancestor path of degree 1
> at
> com.ibg.dexter.jcr.api.wrapper.AbstractWrapper.handleException(AbstractWrapper.java:63)
> at
> com.ibg.dexter.jcr.api.wrapper.AbstractWrapper.executeCallback(AbstractWrapper.java:53)
> at
> com.ibg.dexter.jcr.api.wrapper.WorkspaceWrapper.clone(WorkspaceWrapper.java:42)
> at com.ibg.dexter.Dexter.cloneWorkspace(Dexter.java:111)
> at com.ibg.dexter.Dexter.publish(Dexter.java:151)
> at com.ibg.dexter.web.admin.AdminPanel$8.onClick(AdminPanel.java:144)
> at
> org.apache.wicket.markup.html.link.Link.onLinkClicked(Link.java:214)
> ... 27 more
> Caused by: javax.jcr.PathNotFoundException: no such ancestor path of degree 1
> at
> org.apache.jackrabbit.spi.commons.name.PathFactoryImpl$PathImpl.getAncestor(PathFactoryImpl.java:443)
> at
> org.apache.jackrabbit.core.BatchedItemOperations.copy(BatchedItemOperations.java:280)
> at
> org.apache.jackrabbit.core.WorkspaceImpl.internalCopy(WorkspaceImpl.java:393)
> at
> org.apache.jackrabbit.core.WorkspaceImpl.clone283(WorkspaceImpl.java:1045)
> at
> org.apache.jackrabbit.core.WorkspaceImpl.clone(WorkspaceImpl.java:469)
> at
> com.ibg.dexter.jcr.api.wrapper.WorkspaceWrapper$1.execute(WorkspaceWrapper.java:44)
> at
> com.ibg.dexter.jcr.api.wrapper.AbstractWrapper.executeCallback(AbstractWrapper.java:51)
> ... 32 more
>
> Thanks,
> -Matej
>