You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@chemistry.apache.org by Paul Santa Maria <pa...@rgbprojects.com> on 2015/11/27 01:55:05 UTC

Unable to access "Choices" in DotCMIS 0.7

I'm using DotCMIS version0.7 + AtomPub binding.  My server is 
IBM/FileNet P8 5.2.  My client is VB.Net.

I'm trying to access a ChoiceList I configured in my FileNet/P8 
repository.

If I use Java/Chemistry, I can:

   1. Query the FileNet Document class definition: 
session.getTypeDefinition(docClassName)

   2. Get the properties, and look for the property with the choice list: 
docClassTypeDef.getPropertyDefinitions()/ropertyDefinition propDef = 
propDefs.get(key);

   3. Get the choice list from the property: List<?> ch = 
propDef.getChoices();

PROBLEM:
There doesn't seem to be any equivalent to Java/Chemistry "List<?> ch = 
propDef.getChoices();" in my v0.7 DotCMIS library.

Specifically, I believe there should be a "Choices" property on 
IPropertyDefinition.  I can't find one.

ADDITiONAL NOTES:
1.  As I said above, the Java/Chemistry API seems to work fine.
      I can log on to my FileNet/P8 repository, query my DocClass, find 
the DocProperty, call .getChoices(), and see the expected values in the 
choice list.

2. My DotCMIS/VB.Net client is successfully querying the FileNet/P8 
repository for the DocClass and associated DocProperties: I can see the 
choice list in the AtomPub XML:

   ATOMPUB XML RETURNED FROM DOTCMIS QUERY:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<atom:entry xmlns:app="http://www.w3.org/2007/app" 
xmlns:atom="http://www.w3.org/2005/Atom" 
xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/" 
xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" 
xmlns:p8ext="http://www.ibm.com/xmlns/prod/ecm/cmis/p8extensions" 
xmlns:cmism="http://docs.oasis-open.org/ns/cmis/messaging/200908/">
     <cmisra:type xsi:type="cmis:cmisTypeDocumentDefinitionType" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
         <cmis:id>RGBClass2</cmis:id>
         <cmis:localName>RGBClass2</cmis:localName>
         <cmis:localNamespace xsi:nil="true"/>
         ...
         <cmis:propertyStringDefinition>
             <cmis:id>RGBChoiceList</cmis:id>
             <cmis:localName>RGBChoiceList</cmis:localName>
             <cmis:displayName>RGBChoiceList</cmis:displayName>
             <cmis:queryName>RGBChoiceList</cmis:queryName>
             <cmis:description>RGBChoiceList</cmis:description>
             <cmis:propertyType>string</cmis:propertyType>
             <cmis:cardinality>single</cmis:cardinality>
             <cmis:updatability>readwrite</cmis:updatability>
             <cmis:inherited>false</cmis:inherited>
             <cmis:required>false</cmis:required>
             <cmis:queryable>true</cmis:queryable>
             <cmis:orderable>true</cmis:orderable>
             <cmis:openChoice>false</cmis:openChoice>
             <p8ext:isHidden>false</p8ext:isHidden>
             
<p8ext:ChoiceListSymbolicName>RGBChoice</p8ext:ChoiceListSymbolicName>
             
<p8ext:ChoiceListDisplayName>RGBChoice</p8ext:ChoiceListDisplayName>
             <cmis:choice displayName="Joe">
                 <cmis:value>Joe</cmis:value>
             </cmis:choice>
             <cmis:choice displayName="Dan">
                 <cmis:value>Dan</cmis:value>
             </cmis:choice>
             <cmis:choice displayName="Paul">
                 <cmis:value>Paul</cmis:value>
             </cmis:choice>
         </cmis:propertyStringDefinition>
3. The problem is that the VB.Net IPropertyDefinition" object doesn't 
have a "Choices" property:

   IPROPERTYDEFINITION OBJECT IN MSVS DEBUGGER:

?p
{DotCMIS.Data.Impl.PropertyStringDefinition}
     DotCMIS.Data.Impl.PropertyStringDefinition: 
{DotCMIS.Data.Impl.PropertyStringDefinition}
     Cardinality: Single {0}
     Description: "RGBChoiceList"
     DisplayName: "RGBChoiceList"
     Id: "RGBChoiceList"
     IsInherited: False
     IsOpenChoice: False
     IsOrderable: True
     IsQueryable: True
     IsRequired: False
     LocalName: "RGBChoiceList"
     LocalNamespace: Nothing
     PropertyType: String {6}
     QueryName: "RGBChoiceList"
     Updatability: ReadWrite {1}
     <= No "Choices" VB object property available...
4. The last Jira bug relating to DotCMIS "Choices" was Jira 
https://issues.apache.org/jira/browse/CMIS-380.
     This was fixed in 17/Oct/11, DotCMIS 0.3.
     The problem in CMIS-380 was  "IPropertyDefinition.Choices == null".
     My current problem is that I don't even *see* any 
""IPropertyDefinition.Choices".

5. I have not stepped through the DotCMIS library code yet.

6. I have not tested to see if it works in C# yet (my client is VB.Net)

Please let me know if you have any suggestions for what I can try, or 
what I can do next.

I'm new to the chemistry.apache.org community

Re[2]: Unable to access "Choices" in DotCMIS 0.7

Posted by Paul Santa Maria <pa...@rgbprojects.com>.
Thank you, Florian!

The problem was that I needed to cast the property definition I was 
looking for to "IPropertyStringDefinition" before I could see the choice 
list.

Here is the corrected, working code (in C# - VB.Net will work exactly 
the same):

        private void getChoiceList(string docClassName, string propName)
         {
             logMsg("Querying TypeDefinition(" + docClassName + ")...");
             ITypeDefinition docClassDef = 
m_session.GetTypeDefinition(docClassName);

             logMsg("Searching for PropertyDefinition(" + propName + 
")...");
             IPropertyDefinition propDef = null;
             foreach (IPropertyDefinition pd in 
docClassDef.PropertyDefinitions)
             {
                 if (pd.Id.Equals(propName))
                 {
                     propDef = pd;
                     break;
                 }
             }

             logMsg("Choices:");
             IPropertyStringDefinition stringPropDef = 
(IPropertyStringDefinition)propDef;
             int i = 0;
             foreach (IChoice<string> ch in stringPropDef.Choices)
             {
                 logMsg("  ch[" + i + "]: " + ch.DisplayName + "=" + 
ch.Value);
                 i++;
             }
         }

     - Output =>
11/27/15 13:00:09 Querying TypeDefinition(RGBClass2)...
11/27/15 13:00:09 Searching for PropertyDefinition(RGBChoiceList)...
11/27/15 13:00:10 Choices:
11/27/15 13:00:10   ch[0]: 
Joe=System.Collections.Generic.List`1[System.String]
11/27/15 13:00:10   ch[1]: 
Dan=System.Collections.Generic.List`1[System.String]
11/27/15 13:00:10   ch[2]: 
Paul=System.Collections.Generic.List`1[System.String]
Problem solved - thank you!


------ Original Message ------
From: "Florian Müller" <fm...@apache.org>
To: "Paul Santa Maria" <pa...@rgbprojects.com>
Cc: dev@chemistry.apache.org
Sent: 11/27/2015 4:39:41 AM
Subject: Re: Unable to access "Choices" in DotCMIS 0.7

>Hi Paul,
>
>I don't know much ab VB. In C# the class definition of 
>PropertyStringDefinition looks like this:
>
>public class PropertyStringDefinition : PropertyDefinition, 
>IPropertyStringDefinition
>{
>     public IList<string> DefaultValue { get; set; }
>     public IList<IChoice<string>> Choices { get; set; }
>     public long? MaxLength { get; set; }
>}
>
>
>I would assume that "Choices" is also accessible in VB. I have no idea 
>why you can't see it.
>
>
>- Florian
>
>
>
>>I'm using DotCMIS version0.7 + AtomPub binding.  My server is
>>IBM/FileNet P8 5.2.  My client is VB.Net.
>>
>>I'm trying to access a ChoiceList I configured in my FileNet/P8 
>>repository.
>>
>>If I use Java/Chemistry, I can:
>>
>>   1. Query the FileNet Document class definition:
>>session.getTypeDefinition(docClassName)
>>
>>   2. Get the properties, and look for the property with the choice
>>list: docClassTypeDef.getPropertyDefinitions()/ropertyDefinition
>>propDef = propDefs.get(key);
>>
>>   3. Get the choice list from the property: List<?> ch = 
>>propDef.getChoices();
>>
>>PROBLEM:
>>There doesn't seem to be any equivalent to Java/Chemistry "List<?> ch
>>= propDef.getChoices();" in my v0.7 DotCMIS library.
>>
>>Specifically, I believe there should be a "Choices" property on
>>IPropertyDefinition.  I can't find one.
>>
>>ADDITiONAL NOTES:
>>1.  As I said above, the Java/Chemistry API seems to work fine.
>>      I can log on to my FileNet/P8 repository, query my DocClass, find
>>the DocProperty, call .getChoices(), and see the expected values in
>>the choice list.
>>
>>2. My DotCMIS/VB.Net client is successfully querying the FileNet/P8
>>repository for the DocClass and associated DocProperties: I can see
>>the choice list in the AtomPub XML:
>>
>>   ATOMPUB XML RETURNED FROM DOTCMIS QUERY:
>><?xml version="1.0" encoding="utf-8" standalone="yes"?>
>><atom:entry xmlns:app="http://www.w3.org/2007/app"
>>xmlns:atom="http://www.w3.org/2005/Atom"
>>xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/"
>>xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/"
>>xmlns:p8ext="http://www.ibm.com/xmlns/prod/ecm/cmis/p8extensions"
>>xmlns:cmism="http://docs.oasis-open.org/ns/cmis/messaging/200908/">
>>     <cmisra:type xsi:type="cmis:cmisTypeDocumentDefinitionType"
>>xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
>>         <cmis:id>RGBClass2</cmis:id>
>>         <cmis:localName>RGBClass2</cmis:localName>
>>         <cmis:localNamespace xsi:nil="true"/>
>>         ...
>>         <cmis:propertyStringDefinition>
>>             <cmis:id>RGBChoiceList</cmis:id>
>>             <cmis:localName>RGBChoiceList</cmis:localName>
>>             <cmis:displayName>RGBChoiceList</cmis:displayName>
>>             <cmis:queryName>RGBChoiceList</cmis:queryName>
>>             <cmis:description>RGBChoiceList</cmis:description>
>>             <cmis:propertyType>string</cmis:propertyType>
>>             <cmis:cardinality>single</cmis:cardinality>
>>             <cmis:updatability>readwrite</cmis:updatability>
>>             <cmis:inherited>false</cmis:inherited>
>>             <cmis:required>false</cmis:required>
>>             <cmis:queryable>true</cmis:queryable>
>>             <cmis:orderable>true</cmis:orderable>
>>             <cmis:openChoice>false</cmis:openChoice>
>>             <p8ext:isHidden>false</p8ext:isHidden>
>>
>><p8ext:ChoiceListSymbolicName>RGBChoice</p8ext:ChoiceListSymbolicName>
>>             
>><p8ext:ChoiceListDisplayName>RGBChoice</p8ext:ChoiceListDisplayName>
>>             <cmis:choice displayName="Joe">
>>                 <cmis:value>Joe</cmis:value>
>>             </cmis:choice>
>>             <cmis:choice displayName="Dan">
>>                 <cmis:value>Dan</cmis:value>
>>             </cmis:choice>
>>             <cmis:choice displayName="Paul">
>>                 <cmis:value>Paul</cmis:value>
>>             </cmis:choice>
>>         </cmis:propertyStringDefinition>
>>3. The problem is that the VB.Net IPropertyDefinition" object doesn't
>>have a "Choices" property:
>>
>>   IPROPERTYDEFINITION OBJECT IN MSVS DEBUGGER:
>>
>>?p
>>{DotCMIS.Data.Impl.PropertyStringDefinition}
>>     DotCMIS.Data.Impl.PropertyStringDefinition:
>>{DotCMIS.Data.Impl.PropertyStringDefinition}
>>     Cardinality: Single {0}
>>     Description: "RGBChoiceList"
>>     DisplayName: "RGBChoiceList"
>>     Id: "RGBChoiceList"
>>     IsInherited: False
>>     IsOpenChoice: False
>>     IsOrderable: True
>>     IsQueryable: True
>>     IsRequired: False
>>     LocalName: "RGBChoiceList"
>>     LocalNamespace: Nothing
>>     PropertyType: String {6}
>>     QueryName: "RGBChoiceList"
>>     Updatability: ReadWrite {1}
>>     <= No "Choices" VB object property available...
>>4. The last Jira bug relating to DotCMIS "Choices" was Jira
>>https://issues.apache.org/jira/browse/CMIS-380.
>>     This was fixed in 17/Oct/11, DotCMIS 0.3.
>>     The problem in CMIS-380 was  "IPropertyDefinition.Choices == 
>>null".
>>     My current problem is that I don't even *see* any
>>""IPropertyDefinition.Choices".
>>
>>5. I have not stepped through the DotCMIS library code yet.
>>
>>6. I have not tested to see if it works in C# yet (my client is 
>>VB.Net)
>>
>>Please let me know if you have any suggestions for what I can try, or
>>what I can do next.
>>
>>I'm new to the chemistry.apache.org community
>


Re: Unable to access "Choices" in DotCMIS 0.7

Posted by Florian Müller <fm...@apache.org>.
Hi Paul,

I don't know much ab VB. In C# the class definition of 
PropertyStringDefinition looks like this:

public class PropertyStringDefinition : PropertyDefinition, 
IPropertyStringDefinition
{
     public IList<string> DefaultValue { get; set; }
     public IList<IChoice<string>> Choices { get; set; }
     public long? MaxLength { get; set; }
}


I would assume that "Choices" is also accessible in VB. I have no idea 
why you can't see it.


- Florian



> I'm using DotCMIS version0.7 + AtomPub binding.  My server is
> IBM/FileNet P8 5.2.  My client is VB.Net.
> 
> I'm trying to access a ChoiceList I configured in my FileNet/P8 
> repository.
> 
> If I use Java/Chemistry, I can:
> 
>   1. Query the FileNet Document class definition:
> session.getTypeDefinition(docClassName)
> 
>   2. Get the properties, and look for the property with the choice
> list: docClassTypeDef.getPropertyDefinitions()/ropertyDefinition
> propDef = propDefs.get(key);
> 
>   3. Get the choice list from the property: List<?> ch = 
> propDef.getChoices();
> 
> PROBLEM:
> There doesn't seem to be any equivalent to Java/Chemistry "List<?> ch
> = propDef.getChoices();" in my v0.7 DotCMIS library.
> 
> Specifically, I believe there should be a "Choices" property on
> IPropertyDefinition.  I can't find one.
> 
> ADDITiONAL NOTES:
> 1.  As I said above, the Java/Chemistry API seems to work fine.
>      I can log on to my FileNet/P8 repository, query my DocClass, find
> the DocProperty, call .getChoices(), and see the expected values in
> the choice list.
> 
> 2. My DotCMIS/VB.Net client is successfully querying the FileNet/P8
> repository for the DocClass and associated DocProperties: I can see
> the choice list in the AtomPub XML:
> 
>   ATOMPUB XML RETURNED FROM DOTCMIS QUERY:
> <?xml version="1.0" encoding="utf-8" standalone="yes"?>
> <atom:entry xmlns:app="http://www.w3.org/2007/app"
> xmlns:atom="http://www.w3.org/2005/Atom"
> xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/"
> xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/"
> xmlns:p8ext="http://www.ibm.com/xmlns/prod/ecm/cmis/p8extensions"
> xmlns:cmism="http://docs.oasis-open.org/ns/cmis/messaging/200908/">
>     <cmisra:type xsi:type="cmis:cmisTypeDocumentDefinitionType"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
>         <cmis:id>RGBClass2</cmis:id>
>         <cmis:localName>RGBClass2</cmis:localName>
>         <cmis:localNamespace xsi:nil="true"/>
>         ...
>         <cmis:propertyStringDefinition>
>             <cmis:id>RGBChoiceList</cmis:id>
>             <cmis:localName>RGBChoiceList</cmis:localName>
>             <cmis:displayName>RGBChoiceList</cmis:displayName>
>             <cmis:queryName>RGBChoiceList</cmis:queryName>
>             <cmis:description>RGBChoiceList</cmis:description>
>             <cmis:propertyType>string</cmis:propertyType>
>             <cmis:cardinality>single</cmis:cardinality>
>             <cmis:updatability>readwrite</cmis:updatability>
>             <cmis:inherited>false</cmis:inherited>
>             <cmis:required>false</cmis:required>
>             <cmis:queryable>true</cmis:queryable>
>             <cmis:orderable>true</cmis:orderable>
>             <cmis:openChoice>false</cmis:openChoice>
>             <p8ext:isHidden>false</p8ext:isHidden>
> 
> <p8ext:ChoiceListSymbolicName>RGBChoice</p8ext:ChoiceListSymbolicName>
>             
> <p8ext:ChoiceListDisplayName>RGBChoice</p8ext:ChoiceListDisplayName>
>             <cmis:choice displayName="Joe">
>                 <cmis:value>Joe</cmis:value>
>             </cmis:choice>
>             <cmis:choice displayName="Dan">
>                 <cmis:value>Dan</cmis:value>
>             </cmis:choice>
>             <cmis:choice displayName="Paul">
>                 <cmis:value>Paul</cmis:value>
>             </cmis:choice>
>         </cmis:propertyStringDefinition>
> 3. The problem is that the VB.Net IPropertyDefinition" object doesn't
> have a "Choices" property:
> 
>   IPROPERTYDEFINITION OBJECT IN MSVS DEBUGGER:
> 
> ?p
> {DotCMIS.Data.Impl.PropertyStringDefinition}
>     DotCMIS.Data.Impl.PropertyStringDefinition:
> {DotCMIS.Data.Impl.PropertyStringDefinition}
>     Cardinality: Single {0}
>     Description: "RGBChoiceList"
>     DisplayName: "RGBChoiceList"
>     Id: "RGBChoiceList"
>     IsInherited: False
>     IsOpenChoice: False
>     IsOrderable: True
>     IsQueryable: True
>     IsRequired: False
>     LocalName: "RGBChoiceList"
>     LocalNamespace: Nothing
>     PropertyType: String {6}
>     QueryName: "RGBChoiceList"
>     Updatability: ReadWrite {1}
>     <= No "Choices" VB object property available...
> 4. The last Jira bug relating to DotCMIS "Choices" was Jira
> https://issues.apache.org/jira/browse/CMIS-380.
>     This was fixed in 17/Oct/11, DotCMIS 0.3.
>     The problem in CMIS-380 was  "IPropertyDefinition.Choices == null".
>     My current problem is that I don't even *see* any
> ""IPropertyDefinition.Choices".
> 
> 5. I have not stepped through the DotCMIS library code yet.
> 
> 6. I have not tested to see if it works in C# yet (my client is VB.Net)
> 
> Please let me know if you have any suggestions for what I can try, or
> what I can do next.
> 
> I'm new to the chemistry.apache.org community