[
https://issues.apache.org/jira/browse/CMIS-497?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Phil Barr updated CMIS-497:
---------------------------
Description:
The following code should work but fails with a "Value cannot be set on
Element" error.
{code}
class Program
{
static void Main()
{
const string description = "this is a new description";
const string repositoryId = "7270744f-c07c-48c9-aa01-ef90089785e3";
string documentId =
"workspace://SpacesStore/f8e3dc76-4781-49d6-b5d1-d3af1299ea80";
Dictionary<string, string> parameters = new Dictionary<string,
string>();
parameters[SessionParameter.BindingType] = BindingType.AtomPub;
parameters[SessionParameter.AtomPubUrl] =
"http://localhost:8082/alfresco/service/cmis";
parameters[SessionParameter.User] = "admin";
parameters[SessionParameter.Password] = "admin";
parameters[SessionParameter.RepositoryId] = repositoryId;
SessionFactory factory = SessionFactory.NewInstance();
ISession session = factory.CreateSession(parameters);
string changeToken = null; // not sure why I need this
Properties props = new Properties();
props.Extensions = CreateData(description).Extensions;
session.Binding.GetObjectService().UpdateProperties(repositoryId,
ref documentId, ref changeToken, props, null);
}
private static ExtensionsData CreateData(string description)
{
ExtensionsData data = new ExtensionsData();
data.Extensions = new List<ICmisExtensionElement>();
CmisExtensionElement element = new CmisExtensionElement
{
Name = "alf:setAspects",
Namespace = "http://www.alfresco.org",
Children = new List<ICmisExtensionElement>
{
new CmisExtensionElement
{
Name = "alf:properties",
Namespace = "http://www.alfresco.org",
Children = new List<ICmisExtensionElement>
{
new CmisExtensionElement
{
Name = "cmis:propertyString",
Namespace =
"http://docs.oasis-open.org/ns/cmis/core/200908/",
Attributes = new
Dictionary<string, string>
{
{"propertyDefinitionId","cm:description"},
{"displayName","Description"},
{"queryName","cm:description"}
},
Children = new
List<ICmisExtensionElement>
{
new
CmisExtensionElement
{
Name =
"cmis:value",
Namespace =
"http://docs.oasis-open.org/ns/cmis/core/200908/",
Value =
description
}
}
}
}
}
}
};
data.Extensions.Add(element);
return data;
}
{code}
The following change in converter.cs, line 1869 in
Converter::CreateXMLElement(XmlDocument doc, ICmisExtensionElement element)
should be made:
{code}
result.Value = element.Value;
// should be
result.InnerText = element.Value;
{code}
was:
The following code should work but fails with a "Value cannot be set on
Element" error.
{code}
class Program
{
static void Main()
{
const string description = "this is a new description";
const string repositoryId = "7270744f-c07c-48c9-aa01-ef90089785e3";
string documentId =
"workspace://SpacesStore/f8e3dc76-4781-49d6-b5d1-d3af1299ea80";
Dictionary<string, string> parameters = new Dictionary<string,
string>();
parameters[SessionParameter.BindingType] = BindingType.AtomPub;
parameters[SessionParameter.AtomPubUrl] =
"http://localhost:8082/alfresco/service/cmis";
parameters[SessionParameter.User] = "admin";
parameters[SessionParameter.Password] = "admin";
parameters[SessionParameter.RepositoryId] = repositoryId;
SessionFactory factory = SessionFactory.NewInstance();
ISession session = factory.CreateSession(parameters);
string changeToken = null; // not sure why I need this
Properties props = new Properties();
props.Extensions = CreateData(description).Extensions;
session.Binding.GetObjectService().UpdateProperties(repositoryId,
ref documentId, ref changeToken, props, null);
}
private static ExtensionsData CreateData(string description)
{
ExtensionsData data = new ExtensionsData();
data.Extensions = new List<ICmisExtensionElement>();
CmisExtensionElement element = new CmisExtensionElement
{
Name = "alf:setAspects",
Namespace = "http://www.alfresco.org",
Children = new List<ICmisExtensionElement>
{
new CmisExtensionElement
{
Name = "alf:properties",
Namespace = "http://www.alfresco.org",
Children = new List<ICmisExtensionElement>
{
new CmisExtensionElement
{
Name = "cmis:propertyString",
Namespace =
"http://docs.oasis-open.org/ns/cmis/core/200908/",
Attributes = new
Dictionary<string, string>
{
{"propertyDefinitionId","cm:description"},
{"displayName","Description"},
{"queryName","cm:description"}
},
Children = new
List<ICmisExtensionElement>
{
new
CmisExtensionElement
{
Name =
"cmis:value",
Namespace =
"http://docs.oasis-open.org/ns/cmis/core/200908/",
Value =
description
}
}
}
}
}
}
};
data.Extensions.Add(element);
return data;
}
{code}
The following change in converter.cs, line 1869 in
Converter::CreateXMLElement(XmlDocument doc, ICmisExtensionElement element)
should be made:
{code}
result.Value = element.Value;
should be
result.InnerText = element.Value;
{code}
> Creating Extensions on Properties Fails When Creating XML to Submit to Server
> -----------------------------------------------------------------------------
>
> Key: CMIS-497
> URL: https://issues.apache.org/jira/browse/CMIS-497
> Project: Chemistry
> Issue Type: Bug
> Components: dotcmis
> Affects Versions: DotCMIS 0.3
> Reporter: Phil Barr
> Labels: extension, xml
>
> The following code should work but fails with a "Value cannot be set on
> Element" error.
> {code}
> class Program
> {
> static void Main()
> {
> const string description = "this is a new description";
> const string repositoryId =
> "7270744f-c07c-48c9-aa01-ef90089785e3";
> string documentId =
> "workspace://SpacesStore/f8e3dc76-4781-49d6-b5d1-d3af1299ea80";
> Dictionary<string, string> parameters = new Dictionary<string,
> string>();
> parameters[SessionParameter.BindingType] = BindingType.AtomPub;
> parameters[SessionParameter.AtomPubUrl] =
> "http://localhost:8082/alfresco/service/cmis";
> parameters[SessionParameter.User] = "admin";
> parameters[SessionParameter.Password] = "admin";
> parameters[SessionParameter.RepositoryId] = repositoryId;
> SessionFactory factory = SessionFactory.NewInstance();
> ISession session = factory.CreateSession(parameters);
> string changeToken = null; // not sure why I need this
> Properties props = new Properties();
> props.Extensions = CreateData(description).Extensions;
> session.Binding.GetObjectService().UpdateProperties(repositoryId,
> ref documentId, ref changeToken, props, null);
> }
> private static ExtensionsData CreateData(string description)
> {
> ExtensionsData data = new ExtensionsData();
> data.Extensions = new List<ICmisExtensionElement>();
> CmisExtensionElement element = new CmisExtensionElement
> {
> Name = "alf:setAspects",
> Namespace = "http://www.alfresco.org",
> Children = new List<ICmisExtensionElement>
> {
> new CmisExtensionElement
> {
> Name = "alf:properties",
> Namespace = "http://www.alfresco.org",
> Children = new List<ICmisExtensionElement>
> {
> new CmisExtensionElement
> {
> Name = "cmis:propertyString",
> Namespace =
> "http://docs.oasis-open.org/ns/cmis/core/200908/",
> Attributes = new
> Dictionary<string, string>
> {
>
> {"propertyDefinitionId","cm:description"},
>
> {"displayName","Description"},
>
> {"queryName","cm:description"}
> },
> Children = new
> List<ICmisExtensionElement>
> {
> new
> CmisExtensionElement
> {
> Name =
> "cmis:value",
> Namespace
> = "http://docs.oasis-open.org/ns/cmis/core/200908/",
> Value =
> description
> }
> }
> }
> }
> }
> }
> };
> data.Extensions.Add(element);
> return data;
> }
> {code}
> The following change in converter.cs, line 1869 in
> Converter::CreateXMLElement(XmlDocument doc, ICmisExtensionElement element)
> should be made:
> {code}
> result.Value = element.Value;
> // should be
> result.InnerText = element.Value;
> {code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira