jackrabbit-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Stefan Guggisberg" <stefan.guggisb...@gmail.com>
Subject Re: Clone entire workspace
Date Mon, 17 Mar 2008 14:01:59 GMT
hi matej

On Fri, Mar 14, 2008 at 10:41 PM, Matej Knopp <matej.knopp@gmail.com> 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
>

Mime
View raw message