Details

    • Estimated Difficulty:
      Medium
    • Similar Issues:
      Show 10 results 

      Description

      Create a connector to a service that supports the Content Management Interoperability Services standard (CMIS), allowing a ModeShape JCR instance to access the content, metadata, and other information from a CMIS system. CMIS implementations are starting to appear, including Apache Chemistry's CMIS implementation, Nuxeo's CMIS demo at http://cmis.demo.nuxeo.org/nuxeo/site/cmis/repository and with Alfresco's CMIS Repository at http://cmis.alfresco.com/service/cmis.

      CMIS types should map pretty cleanly to JCR types. Also, the CMIS query language should also map pretty well, allowing the connector to implement search by delegating to CMIS.

      Implementing this sooner would help us gain some traction in the CMIS space.

      1. minor_changes.patch
        75 kB
        Ivan Vasyliev
      2. minor_changes3.patch
        52 kB
        Ivan Vasyliev
      3. minorchanges.patch
        53 kB
        Ivan Vasyliev
      1. cmis_connector_code.png
        315 kB
      2. cmis_workbench.png
        133 kB
      3. map_property_types_cmis_to_jcr.png
        332 kB

        Issue Links

          Activity

          Hide
          Randall Hauch
          added a comment -

          This request is to implement a connector to a CMIS system. See MODE-295 for implementing CMIS on top of ModeShape.

          Show
          Randall Hauch
          added a comment - This request is to implement a connector to a CMIS system. See MODE-295 for implementing CMIS on top of ModeShape.
          Randall Hauch
          made changes -
          Field Original Value New Value
          Link This issue is related to MODE-295 [ MODE-295 ]
          Randall Hauch
          made changes -
          Fix Version/s 1.2 [ 12314644 ]
          Fix Version/s 1.1 [ 12314366 ]
          Randall Hauch
          made changes -
          Assignee Randall Hauch [ rhauch ]
          Hide
          Randall Hauch
          added a comment -

          Targeting to 1.3, as 1.2 has now become a release with mostly fixes and minor improvements.

          Show
          Randall Hauch
          added a comment - Targeting to 1.3, as 1.2 has now become a release with mostly fixes and minor improvements.
          Randall Hauch
          made changes -
          Fix Version/s 1.3 [ 12314792 ]
          Fix Version/s 1.2 [ 12314644 ]
          Randall Hauch
          made changes -
          Fix Version/s Future Releases [ 12314367 ]
          Fix Version/s 1.3 [ 12314792 ]
          Vlastimil Eliáš
          made changes -
          Workflow jira [ 12409607 ] GIT Pull Request workflow [ 12442281 ]
          Randall Hauch
          made changes -
          Link This issue depends MODE-1513 [ MODE-1513 ]
          Randall Hauch
          made changes -
          Component/s Federation [ 12312907 ]
          Randall Hauch
          made changes -
          Fix Version/s 3.1 [ 12318750 ]
          Fix Version/s Future Releases [ 12314367 ]
          SBS JIRA Integration
          made changes -
          Ivan Vasyliev
          made changes -
          Link This issue is related to MODE-1686 [ MODE-1686 ]
          Ivan Vasyliev
          made changes -
          Link This issue is related to MODE-1188 [ MODE-1188 ]
          Randall Hauch
          made changes -
          Fix Version/s 3.2 [ 12320360 ]
          Fix Version/s 3.1 [ 12318750 ]
          Oleg Kulikov
          made changes -
          Assignee Oleg Kulikov [ oleg.kulikov ]
          Randall Hauch
          made changes -
          Fix Version/s 3.3 [ 12320974 ]
          Fix Version/s 3.2 [ 12320360 ]
          Ivan Vasyliev
          made changes -
          Link This issue depends MODE-1803 [ MODE-1803 ]
          Randall Hauch
          made changes -
          Fix Version/s 3.2 [ 12320360 ]
          Fix Version/s 3.3 [ 12320974 ]
          Hide
          Randall Hauch
          added a comment -

          Targeting to be fixed in 3.2. We may not want to put it in 3.2, but we may want to put it into the product, and if so we'll need to decide whether it belongs in 3.2, 3.2.1, or 3.3.

          Show
          Randall Hauch
          added a comment - Targeting to be fixed in 3.2. We may not want to put it in 3.2, but we may want to put it into the product, and if so we'll need to decide whether it belongs in 3.2, 3.2.1, or 3.3.
          Hide
          Oleg Kulikov
          added a comment - - edited

          This initial preview implementation includes basic CRUD operations and test simulator.
          For the near future plan is as follows:

          • finalize CRUD operations detailed test
          • provide integration test with Open Chemistry
          • import types from repository
          • add access list and policies
          Show
          Oleg Kulikov
          added a comment - - edited This initial preview implementation includes basic CRUD operations and test simulator. For the near future plan is as follows: finalize CRUD operations detailed test provide integration test with Open Chemistry import types from repository add access list and policies
          Oleg Kulikov
          made changes -
          Status Open [ 1 ] Pull Request Sent [ 10011 ]
          Git Pull Request https://github.com/ModeShape/modeshape/pull/704
          Hide
          Oleg Kulikov
          added a comment - - edited

          CRUD - done
          Integration test with open chemistry - done
          (provided by Alexander Voloshyn)

          remainder:
          -import types from repository
          -add access list and policies

          Show
          Oleg Kulikov
          added a comment - - edited CRUD - done Integration test with open chemistry - done (provided by Alexander Voloshyn ) remainder: -import types from repository -add access list and policies
          Hide
          Ivan Vasyliev
          added a comment - - edited

          There is also mismatch in how types are handled:

          • CMIS-JCR bridge chemistry-opencmis-server-jcr maps cmis:document and cmis:folder into nt:file and nt:folder
          • Connector implemented in the way that it registers cmis:document and cmis:folder types in JCR, see cmis.cnd

          This must be synchornized: nt:file/nt:folder in bridge and in connector or vice-versa.

          Show
          Ivan Vasyliev
          added a comment - - edited There is also mismatch in how types are handled: CMIS-JCR bridge chemistry-opencmis-server-jcr maps cmis:document and cmis:folder into nt:file and nt:folder Connector implemented in the way that it registers cmis:document and cmis:folder types in JCR, see cmis.cnd This must be synchornized : nt:file/nt:folder in bridge and in connector or vice-versa.
          Hide
          Oleg Kulikov
          added a comment -

          Ivan, can you please check the feature of import types from CMIS repository as we discussed and synchronization with bridge implementation regarding nt:file/nt:folder?

          Thanks!

          Show
          Oleg Kulikov
          added a comment - Ivan, can you please check the feature of import types from CMIS repository as we discussed and synchronization with bridge implementation regarding nt:file/nt:folder? Thanks!
          Hide
          Ivan Vasyliev
          added a comment -

          Looking into, thank you!

          Show
          Ivan Vasyliev
          added a comment - Looking into, thank you!
          Hide
          Ivan Vasyliev
          added a comment -

          Oleg, reviewed changes and progress looks very good to me. Here are my findings:

          • cmis.cnd can be eliminated
          • CMIS (at least 1.0, I see in trunk they are added some "Item" for 1.1) has notion of "base type id" and "parent type id" for document/folder types definition. In case of mapping, cmis:document will be always base type id for all document types, but parent type id will vary from type to type (see my screenshots). So, when importing children you need to use parent type id to reflect hierarchy
          • Could you please elaborate about type definition cmis:repository (registerRepositoryInfoType)? What it is used for?
          Show
          Ivan Vasyliev
          added a comment - Oleg, reviewed changes and progress looks very good to me. Here are my findings: cmis.cnd can be eliminated CMIS (at least 1.0, I see in trunk they are added some "Item" for 1.1) has notion of "base type id" and "parent type id" for document/folder types definition. In case of mapping, cmis:document will be always base type id for all document types, but parent type id will vary from type to type (see my screenshots). So, when importing children you need to use parent type id to reflect hierarchy Could you please elaborate about type definition cmis:repository (registerRepositoryInfoType)? What it is used for?
          Ivan Vasyliev
          made changes -
          Attachment cmis_connector_code.png [ 12361523 ]
          Attachment cmis_workbench.png [ 12361524 ]
          Hide
          Oleg Kulikov
          added a comment -

          Hi Ivan, thanks for your testing and feedback. I've commited changes related to your comments plus a bit polished code. So you can check once again when you will have time.

          About "jcr:repository" type. I used it to define node stored under root which bears information about repository itself: vendor, version, etc.

          Also I found several issues with backward conversation - from JCR to CMIS (types and now we have binary content in JCR style as child node). Need to modify code respectively. Should be ready in a few days with tests.

          Show
          Oleg Kulikov
          added a comment - Hi Ivan, thanks for your testing and feedback. I've commited changes related to your comments plus a bit polished code. So you can check once again when you will have time. About "jcr:repository" type. I used it to define node stored under root which bears information about repository itself: vendor, version, etc. Also I found several issues with backward conversation - from JCR to CMIS (types and now we have binary content in JCR style as child node). Need to modify code respectively. Should be ready in a few days with tests.
          Hide
          Ivan Vasyliev
          added a comment -

          Oleg, I've looked on how property definitions are mapped and I feel that there is missing types mapping, please confirm (attaching my assumption)

          private int getJcrType(PropertyType propertyType) {
                  switch (propertyType){
                      case BOOLEAN:
                          return javax.jcr.PropertyType.BOOLEAN;
                      case DATETIME:
                          return javax.jcr.PropertyType.DATE;
                      case DECIMAL:
                          return javax.jcr.PropertyType.DECIMAL;
                      case HTML:
                          return javax.jcr.PropertyType.STRING;
                      case INTEGER:
                          return javax.jcr.PropertyType.LONG;
                      case URI:
                          return javax.jcr.PropertyType.URI;
                      case ID:
                          return javax.jcr.PropertyType.STRING;
                      default:
                          return javax.jcr.PropertyType.UNDEFINED;
                  }
          }
          
          Show
          Ivan Vasyliev
          added a comment - Oleg, I've looked on how property definitions are mapped and I feel that there is missing types mapping, please confirm (attaching my assumption) private int getJcrType(PropertyType propertyType) { switch (propertyType){ case BOOLEAN: return javax.jcr.PropertyType.BOOLEAN; case DATETIME: return javax.jcr.PropertyType.DATE; case DECIMAL: return javax.jcr.PropertyType.DECIMAL; case HTML: return javax.jcr.PropertyType.STRING; case INTEGER: return javax.jcr.PropertyType.LONG; case URI: return javax.jcr.PropertyType.URI; case ID: return javax.jcr.PropertyType.STRING; default : return javax.jcr.PropertyType.UNDEFINED; } }
          Ivan Vasyliev
          made changes -
          Attachment map_property_types_cmis_to_jcr.png [ 12361631 ]
          Ivan Vasyliev
          made changes -
          Attachment minorchanges.patch [ 12361632 ]
          Ivan Vasyliev
          made changes -
          Attachment minor_changes.patch [ 12361636 ]
          Hide
          Oleg Kulikov
          added a comment -

          Hi Ivan, thanks for the patch. I've merged it and commited.

          Show
          Oleg Kulikov
          added a comment - Hi Ivan, thanks for the patch. I've merged it and commited.
          Hide
          Ivan Vasyliev
          added a comment -

          Oleg, I made second patch from 31/Mar/13, could you please take a look?

          Show
          Ivan Vasyliev
          added a comment - Oleg, I made second patch from 31/Mar/13, could you please take a look?
          Hide
          Oleg Kulikov
          added a comment -

          Merged, please check it now

          Show
          Oleg Kulikov
          added a comment - Merged, please check it now
          Ivan Vasyliev
          made changes -
          Attachment minor_changes3.patch [ 12361637 ]
          Hide
          Ivan Vasyliev
          added a comment -

          Attached "minor_changes3.patch" with few items. Will work on getting to your fork somehow to send pull requests.

          Show
          Ivan Vasyliev
          added a comment - Attached "minor_changes3.patch" with few items. Will work on getting to your fork somehow to send pull requests.
          kulikov
          08/Apr/13 8:10 AM
          View full commit
          MODE-650: Add CMIS connector's dependencies
          kulikov <kulikov@kulikov> committed 0e9ab563915cb3755e40d30d005e93f6e280ed7f (1 file)
          Reviews: none

          MODE-650: Add CMIS connector's dependencies

          Hide
          Randall Hauch
          added a comment -

          Rebased, corrected compiler warnings, renamed the package to `org.modeshape.connector.cmis`, and added an alias for the `CmisConnector` in `RepositoryConfiguration`. Merged into the 'master' branch.

          Show
          Randall Hauch
          added a comment - Rebased, corrected compiler warnings, renamed the package to `org.modeshape.connector.cmis`, and added an alias for the `CmisConnector` in `RepositoryConfiguration`. Merged into the 'master' branch.
          Randall Hauch
          made changes -
          Status Pull Request Sent [ 10011 ] Resolved [ 5 ]
          Resolution Done [ 1 ]
          Randall Hauch
          made changes -
          Status Resolved [ 5 ] Closed [ 6 ]

            People

            • Assignee:
              Oleg Kulikov
              Reporter:
              Randall Hauch
            • Votes:
              10 Vote for this issue
              Watchers:
              7 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: