<!DOCTYPE html>
<!--

    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    this work for additional information regarding copyright ownership.
    The ASF licenses this file to You under the Apache License, Version 2.0
    (the "License"); you may not use this file except in compliance with
    the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.

-->
<html lang="en">

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    <meta name="author" content="Apache Chemistry">
    <link rel="shortcut icon" href="../../img/favicon.ico">

    <title>Updating Objects - Apache Chemistry Samples</title>

    <link href="../../css/bootstrap-custom.min.css" rel="stylesheet">
    <link href="//maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css" rel="stylesheet">
    <link href="../../css/base.css" rel="stylesheet">
    <link href="../../css/cinder.css" rel="stylesheet">
    <link rel="stylesheet" href="../../css/highlight.css">


    <link href="../../css/chemistry.css" rel="stylesheet">

    <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
    <!--[if lt IE 9]>
            <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
            <script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
        <![endif]-->

    
</head>

<body>

    <div class="navbar navbar-default navbar-fixed-top" role="navigation">
    <div class="container">

        <!-- Collapsed navigation -->
        <div class="navbar-header">
            
            <!-- Expander button -->
            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>
            

            <!-- Main title -->
            <a class="navbar-brand" href="../../index.html">Apache Chemistry Samples</a>
        </div>

        <!-- Expanded navigation -->
        <div class="navbar-collapse collapse">
            
                <!-- Main navigation -->
                <ul class="nav navbar-nav">
                
                
                    <li >
                        <a href="../../index.html">Home</a>
                    </li>
                
                
                
                    <li class="dropdown">
                        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Repository <b class="caret"></b></a>
                        <ul class="dropdown-menu">
                        
                            
<li >
    <a href="../create-session/index.html">Creating a Session</a>
</li>

                        
                            
<li >
    <a href="../capabilities/index.html">Getting Repository Capabilities</a>
</li>

                        
                            
<li >
    <a href="../types/index.html">Working with Types</a>
</li>

                        
                            
<li >
    <a href="../exceptions/index.html">CMIS Exceptions</a>
</li>

                        
                        </ul>
                    </li>
                
                
                
                    <li class="dropdown active">
                        <a href="#" class="dropdown-toggle" data-toggle="dropdown">CRUD <b class="caret"></b></a>
                        <ul class="dropdown-menu">
                        
                            
<li >
    <a href="../retrieve-objects/index.html">Retrieving Objects</a>
</li>

                        
                            
<li >
    <a href="../create-objects/index.html">Creating Objects</a>
</li>

                        
                            
<li class="active">
    <a href="index.html">Updating Objects</a>
</li>

                        
                            
<li >
    <a href="../move-objects/index.html">Moving Object</a>
</li>

                        
                            
<li >
    <a href="../delete-objects/index.html">Deleting Objects</a>
</li>

                        
                            
<li >
    <a href="../content/index.html">Working with Content</a>
</li>

                        
                            
<li >
    <a href="../versions/index.html">Working with Versions</a>
</li>

                        
                            
<li >
    <a href="../properties/index.html">Working with Properties and Secondary Types</a>
</li>

                        
                            
<li >
    <a href="../operation-context/index.html">Understanding the Operation Context</a>
</li>

                        
                            
<li >
    <a href="../lists/index.html">Working with Lists, Paging and Skipping</a>
</li>

                        
                            
<li >
    <a href="../extensions/index.html">Getting Extensions</a>
</li>

                        
                        </ul>
                    </li>
                
                
                
                    <li class="dropdown">
                        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Query <b class="caret"></b></a>
                        <ul class="dropdown-menu">
                        
                            
<li >
    <a href="../queries/index.html">Executing Queries</a>
</li>

                        
                            
<li >
    <a href="../query-examples/index.html">Query Examples</a>
</li>

                        
                            
<li >
    <a href="../changelog/index.html">Retrieving the Change Log</a>
</li>

                        
                        </ul>
                    </li>
                
                
                
                    <li class="dropdown">
                        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Access Control <b class="caret"></b></a>
                        <ul class="dropdown-menu">
                        
                            
<li >
    <a href="../allowable-actions/index.html">Checking Allowable Actions</a>
</li>

                        
                            
<li >
    <a href="../access-control/index.html">Managing Access Control</a>
</li>

                        
                            
<li >
    <a href="../retention/index.html">Retention and Holds</a>
</li>

                        
                        </ul>
                    </li>
                
                
                
                    <li >
                        <a href="../../about/index.html">About</a>
                    </li>
                
                
                </ul>
            

            <ul class="nav navbar-nav navbar-right">
                <li>
                    <a href="#" data-toggle="modal" data-target="#mkdocs_search_modal">
                        <i class="fa fa-search" aria-hidden="true"></i> Search
                    </a>
                </li>
                
                    <li >
                        <a rel="next" href="../create-objects/index.html">
                            <i class="fa fa-arrow-left" aria-hidden="true"></i> Previous
                        </a>
                    </li>
                    <li >
                        <a rel="prev" href="../move-objects/index.html">
                            Next <i class="fa fa-arrow-right" aria-hidden="true"></i>
                        </a>
                    </li>
                
                <li>
                    <a href="https://www.apache.org" style="padding: 2px;">
                        <img src="../../img/feather.png">
                    </a>
                </li>
            </ul>
        </div>
    </div>
</div>

    <div class="container">
        
        <div class="col-md-3"><div class="bs-sidebar hidden-print affix well" role="complementary">
    <ul class="nav bs-sidenav">
    
        <li class="first-level active"><a href="#updating-objects">Updating Objects</a></li>
        
            <li class="second-level"><a href="#updating-properties">Updating Properties</a></li>
            
                <li class="third-level"><a href="#renaming-an-object">Renaming an Object</a></li>
            
        
            <li class="second-level"><a href="#bulk-update">Bulk Update</a></li>
            
        
            <li class="second-level"><a href="#updating-content">Updating Content</a></li>
            
        
    
    </ul>
</div></div>
        <div class="col-md-9" role="main">

<h1 id="updating-objects">Updating Objects</h1>
<h2 id="updating-properties">Updating Properties</h2>
<p><span class="cmis">CMIS 1.0</span>
<span class="cmis">CMIS 1.1</span></p>
<p>The page about <a href="../properties/index.html">properties</a> explains how Java and C# data types are map to CMIS data types.</p>
<p class="opencmis">OpenCMIS (Java)</p>
<pre><code class="Java">CmisObject cmisObject = ...

Map&lt;String, Object&gt; properties = new HashMap&lt;String, Object&gt;();

properties.put(&quot;my:property&quot;, &quot;new value&quot;); // single-value property
properties.put(&quot;my:int.property&quot;, 42);
properties.put(&quot;my:date.property&quot;, new GregorianCalendar());
properties.put(&quot;my:bool.property&quot;, true);

List&lt;String&gt; shoppingList = new ArrayList&lt;String&gt;();
shoppingList.add(&quot;milk&quot;);
shoppingList.add(&quot;bread&quot;);
shoppingList.add(&quot;cheese&quot;);
properties.put(&quot;my:shopping.list&quot;, shoppingList); // multi-value property

cmisObject.updateProperties(properties);
</code></pre>

<p class="portcmis">PortCMIS (C#)</p>
<pre><code class="csharp">ICmisObject cmisObject = ...

IDictonary&lt;string, object&gt; properties = new Dictonary&lt;string, object&gt;();

properties.Add(&quot;my:property&quot;, &quot;new value&quot;); // single-value property
properties.Add(&quot;my:int.property&quot;, 42);
properties.Add(&quot;my:date.property&quot;, DateTime.Now);
properties.Add(&quot;my:bool.property&quot;, true);

IList&lt;string&gt; shoppingList = new List&lt;string&gt;();
shoppingList.Add(&quot;milk&quot;);
shoppingList.Add(&quot;bread&quot;);
shoppingList.Add(&quot;cheese&quot;);
properties.Add(&quot;my:shopping.list&quot;, shoppingList); // multi-value property

cmisObject.UpdateProperties(properties);
</code></pre>

<h3 id="renaming-an-object">Renaming an Object</h3>
<p>If you just want to change the <strong>cmis:name</strong> property, there is a shortcut.</p>
<p class="opencmis">OpenCMIS (Java)</p>
<pre><code class="Java">CmisObject cmisObject = ....
cmisObject.rename(&quot;new name&quot;);
</code></pre>

<p class="portcmis">PortCMIS (C#)</p>
<pre><code class="csharp">ICmisObject cmisObject = ....
cmisObject.Rename(&quot;new name&quot;);
</code></pre>

<h2 id="bulk-update">Bulk Update</h2>
<p><span class="cmis">CMIS 1.1</span></p>
<p class="opencmis">OpenCMIS (Java)</p>
<pre><code class="Java">// collect all objects to be updated
List&lt;CmisObject&gt; objectList = new ArrayList&lt;CmisObject&gt;();
objectList.add(doc1);
objectList.add(doc2);
objectList.add(doc3);

// prepare properties
Map&lt;String, Object&gt; properties = new HashMap&lt;String, Object&gt;();
properties.put(&quot;my:project&quot;, &quot;123456&quot;);
properties.put(&quot;my:priority&quot;, 10);

List&lt;BulkUpdateObjectIdAndChangeToken&gt; updatedIds = session.bulkUpdateProperties(objectList, properties, null, null);
</code></pre>

<h2 id="updating-content">Updating Content</h2>
<p>See <a href="../content/index.html">Working with Content</a>.</p></div>
        
    </div>

    <footer class="col-md-12 text-center">
        <hr>
        <p>
    </footer>

    <script src="../../js/jquery-1.10.2.min.js"></script>
    <script src="../../js/bootstrap-3.0.3.min.js"></script>
    <script src="../../js/highlight.pack.js"></script>
    <script>hljs.initHighlightingOnLoad();</script>
    <script>
    var base_url = '../..';
    </script>
    <script data-main="../../mkdocs/js/search.js" src="../../mkdocs/js/require.js"></script>
    <script src="../../js/base.js"></script>

    <div class="modal" id="mkdocs_search_modal" tabindex="-1" role="dialog" aria-labelledby="Search Modal" aria-hidden="true">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal">
                        <span aria-hidden="true">&times;</span>
                        <span class="sr-only">Close</span>
                    </button>
                    <h4 class="modal-title" id="exampleModalLabel">Search</h4>
                </div>
                <div class="modal-body">
                    <p>
                        From here you can search these documents. Enter your search terms below.
                    </p>
                    <form role="form">
                        <div class="form-group">
                            <input type="text" class="form-control" placeholder="Search..." id="mkdocs-search-query">
                        </div>
                    </form>
                    <div id="mkdocs-search-results"></div>
                </div>
                <div class="modal-footer">
                </div>
            </div>
        </div>
    </div>

    <script type="text/javascript" src="../../js/retina.min.js"></script>
    </body>

</html>
<!-- last update: 2017-07-31 12:45:42 -->