は、私のようなパスでフォルダIDを取得しようとしている:Apache Chemistry CMIS APIで文字セットを設定するには?
/SIGAP/2011/DIRECCIÓN GENERAL DE PRUEBAS/SIN EXPEDIENTE/20100
、あなたが見ることができるように特殊文字Ó
があります:
Folder folder = (Folder) getCmisSession().getObjectByPath(folderPath);
と私は要求していますパスすることはあります文字列、
化学をスローするエラーは、次のとおりです。
STACK TRACE:
org.cmis.ws.CmisException: Not found an object for the specific path: /SIGAP/2011/DIRECCIÃ?N GENERAL DE PRUEBAS/OFICIOS
at com.emc.documentum.fs.cmis.impl.dfs.utils.CmisExceptionFactory.create(CmisExceptionFactory.java:24)
at com.emc.documentum.fs.cmis.impl.dfs.utils.CmisExceptionBuilder.build(CmisExceptionBuilder.java:31)
at com.emc.documentum.fs.cmis.impl.dfs.action.GetObjectByPathAction.getNonCabinetObjectByPath(GetObjectByPathAction.java:170)
それは文字列をDIRECCIÓN
からDIRECCIÃ?N
,
に変更します。どのようにセッションにcharsetをutf-8に設定できますか?どのようにパスをエンコードする必要がありますか?
アップデート1:FlorianMü[email protected]として
がSOAPUIの助けを借りて、推薦し、私はこのようなパスで同じフォルダを要求してみてください。
<soapenv:Body>
<ns:getObjectByPath>
<ns:repositoryId>LHD_ECM</ns:repositoryId>
<ns:path>/SIGAP/2011/DIRECCIÓN GENERAL DE PRUEBAS/SIN EXPEDIENTE/20100</ns:path>
</ns:getObjectByPath>
</soapenv:Body>
を、サーバがrigthそれを得ました:
<S:Body>
<ns2:getObjectByPathResponse xmlns="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:ns2="http://docs.oasis-open.org/ns/cmis/messaging/200908/">
<ns2:object>
<properties>
<propertyString queryName="cmis:name" displayName="Name" localName="object_name" propertyDefinitionId="cmis:name">
<value>20100</value>
</propertyString>
<propertyId queryName="cmis:objectTypeId" displayName="Object Type ID" localName="r_object_type" propertyDefinitionId="cmis:objectTypeId">
<value>sigapfolio</value>
</propertyId>
<propertyId queryName="cmis:baseTypeId" displayName="Base Type Id" localName="" propertyDefinitionId="cmis:baseTypeId">
<value>cmis:folder</value>
</propertyId>
<propertyId queryName="cmis:objectId" displayName="Object Id" localName="r_object_id" propertyDefinitionId="cmis:objectId">
<value>0b00020280080815</value>
</propertyId>
<propertyString queryName="cmis:createdBy" displayName="Created By" localName="r_creator_name" propertyDefinitionId="cmis:createdBy">
<value>dmadmin</value>
</propertyString>
<propertyDateTime queryName="cmis:creationDate" displayName="Creation Date" localName="r_creation_date" propertyDefinitionId="cmis:creationDate">
<value>2016-04-05T04:54:44.000-05:00</value>
</propertyDateTime>
<propertyString queryName="cmis:lastModifiedBy" displayName="Last Modified By" localName="r_modifier" propertyDefinitionId="cmis:lastModifiedBy">
<value>dmadmin</value>
</propertyString>
<propertyDateTime queryName="cmis:lastModificationDate" displayName="Last Modification Date" localName="r_modify_date" propertyDefinitionId="cmis:lastModificationDate">
<value>2016-04-05T04:54:44.000-05:00</value>
</propertyDateTime>
<propertyString queryName="cmis:changeToken" displayName="Change Token" localName="i_vstamp" propertyDefinitionId="cmis:changeToken">
<value>1</value>
</propertyString>
<propertyId queryName="cmis:parentId" displayName="Parent Id" localName="i_folder_id" propertyDefinitionId="cmis:parentId">
<value>0b00020280005a3b</value>
</propertyId>
<propertyString queryName="cmis:path" displayName="Folder Path" localName="r_folder_path" propertyDefinitionId="cmis:path">
<value>/SIGAP/2011/DIRECCIÓN GENERAL DE PRUEBAS/SIN EXPEDIENTE/20100</value>
</propertyString>
<propertyId queryName="cmis:allowedChildObjectTypeIds" displayName="Allowed Child Object Type IDs" localName="" propertyDefinitionId="cmis:allowedChildObjectTypeIds">
<value>cmis:folder</value>
<value>cmis:document</value>
</propertyId>
</properties>
</ns2:object>
</ns2:getObjectByPathResponse>
</S:Body>
</S:Envelope>
Apache Chemistryには間違いがあります。(
正しく文字列をJavaに渡していると確信していますか? – Gagravarr
@Gagravarrはい、実行前にコードをデバッグして、文字列が正しいことを確認してください。 –
OpenCMISはすでにUTF-8を使用しています。この問題は、Unicode正規化(NFC/NFD)に関連しています。すべてのCMISバインディングで信頼性が確保されているのはNFCだけです。クライアント側でできることはたくさんありません。リポジトリはこれを管理する必要があります。 –