Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 1.4
    • Fix Version/s: 1.5
    • Component/s: jackrabbit-spi-commons
    • Labels:
      None

      Description

      I've been trying to get jcr2spi - rmi - spi2jcr to work.

      The error I'm seeing is reported as:
      java.io.NotSerializableException: org.apache.jackrabbit.spi.commons.identifier.IdFactoryImpl

      I believe I tracked this down. It is because NodeIdImpl is implicitly referencing its containing instance IdFactoryImpl which is not serializable.

      NodeIdImpl is attempted to be serialized, in my case, with the following stack:

      at org.apache.jackrabbit.spi.rmi.client.ClientRepositoryService.getItemInfos(ClientRepositoryService.java:258)
      at org.apache.jackrabbit.jcr2spi.state.WorkspaceItemStateFactory.createNodeState(WorkspaceItemStateFactory.java:94)
      at org.apache.jackrabbit.jcr2spi.state.TransientISFactory.createNodeState(TransientISFactory.java:99)
      at org.apache.jackrabbit.jcr2spi.hierarchy.NodeEntryImpl.doResolve(NodeEntryImpl.java:972)
      at org.apache.jackrabbit.jcr2spi.hierarchy.HierarchyEntryImpl.resolve(HierarchyEntryImpl.java:95)
      at org.apache.jackrabbit.jcr2spi.hierarchy.HierarchyEntryImpl.getItemState(HierarchyEntryImpl.java:212)
      at org.apache.jackrabbit.jcr2spi.ItemManagerImpl.getItem(ItemManagerImpl.java:170)
      at org.apache.jackrabbit.jcr2spi.SessionImpl.getRootNode(SessionImpl.java:216)

      I think I must be doing something wrong, because it seems like this is a fundamental problem with doing jcr2spi - rmi - spi2jcr, and looking at the SVN history I don't see how this ever could have worked.
      So either session.getRootNode() has never been tested using jcr2spi - rmi - spi2jcr, or I've got something setup wrong.

        Activity

        Hide
        Marcel Reutegger added a comment -
        • Turned the ItemId implementations into static classes
        • Added PathFactory parameter to constructors where needed. ItemIds don't need the factory anywhere else.
        • Added serialVersionUID to NodeIdImpl and PropertyIdImpl
        • Added test cases that check serializability
        • Optimized ItemIdImpl.hashCode()

        All tests in jackrabbit trunk ran successfully. I also successfully executed the tests in sandbox/spi/client against an SPI-RMI server.

        svn revision: 674024

        Thank you for reporting this issue.

        Show
        Marcel Reutegger added a comment - Turned the ItemId implementations into static classes Added PathFactory parameter to constructors where needed. ItemIds don't need the factory anywhere else. Added serialVersionUID to NodeIdImpl and PropertyIdImpl Added test cases that check serializability Optimized ItemIdImpl.hashCode() All tests in jackrabbit trunk ran successfully. I also successfully executed the tests in sandbox/spi/client against an SPI-RMI server. svn revision: 674024 Thank you for reporting this issue.
        Hide
        Marcel Reutegger added a comment -

        It used to work initially, but when the ItemId implementation stuff was moved to jackrabbit-spi-commons the serialization got broken.

        Show
        Marcel Reutegger added a comment - It used to work initially, but when the ItemId implementation stuff was moved to jackrabbit-spi-commons the serialization got broken.
        Hide
        Scott Cytacki added a comment -

        The following patch fixes the error I was getting, and now things appear to work. This patch is a little hacky.

        It makes all the inner classes static, and uses a hack to deal with the getPathFactory instance method that they were using.

        Show
        Scott Cytacki added a comment - The following patch fixes the error I was getting, and now things appear to work. This patch is a little hacky. It makes all the inner classes static, and uses a hack to deal with the getPathFactory instance method that they were using.

          People

          • Assignee:
            Unassigned
            Reporter:
            Scott Cytacki
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development