Return-Path: X-Original-To: apmail-chemistry-commits-archive@www.apache.org Delivered-To: apmail-chemistry-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 1D47B1795E for ; Mon, 6 Apr 2015 17:13:37 +0000 (UTC) Received: (qmail 46407 invoked by uid 500); 6 Apr 2015 17:13:36 -0000 Delivered-To: apmail-chemistry-commits-archive@chemistry.apache.org Received: (qmail 46252 invoked by uid 500); 6 Apr 2015 17:13:36 -0000 Mailing-List: contact commits-help@chemistry.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@chemistry.apache.org Delivered-To: mailing list commits@chemistry.apache.org Received: (qmail 44910 invoked by uid 99); 6 Apr 2015 17:13:35 -0000 Received: from eris.apache.org (HELO hades.apache.org) (140.211.11.105) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 06 Apr 2015 17:13:35 +0000 Received: from hades.apache.org (localhost [127.0.0.1]) by hades.apache.org (ASF Mail Server at hades.apache.org) with ESMTP id B875AAC0E2D for ; Mon, 6 Apr 2015 17:13:35 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r946531 [15/44] - in /websites/staging/chemistry/trunk/content: ./ java/0.13.0/maven/chemistry-opencmis-server/chemistry-opencmis-server-bindings/ java/0.13.0/maven/chemistry-opencmis-server/chemistry-opencmis-server-bindings/css/ java/0.13... Date: Mon, 06 Apr 2015 17:13:32 -0000 To: commits@chemistry.apache.org From: buildbot@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20150406171335.B875AAC0E2D@hades.apache.org> Added: websites/staging/chemistry/trunk/content/java/0.13.0/maven/chemistry-opencmis-server/chemistry-opencmis-server-bindings/xref/org/apache/chemistry/opencmis/server/impl/atompub/DiscoveryService.html ============================================================================== --- websites/staging/chemistry/trunk/content/java/0.13.0/maven/chemistry-opencmis-server/chemistry-opencmis-server-bindings/xref/org/apache/chemistry/opencmis/server/impl/atompub/DiscoveryService.html (added) +++ websites/staging/chemistry/trunk/content/java/0.13.0/maven/chemistry-opencmis-server/chemistry-opencmis-server-bindings/xref/org/apache/chemistry/opencmis/server/impl/atompub/DiscoveryService.html Mon Apr 6 17:13:30 2015 @@ -0,0 +1,344 @@ + + + + +DiscoveryService xref + + + +
+
+1   /*
+2    * Licensed to the Apache Software Foundation (ASF) under one
+3    * or more contributor license agreements.  See the NOTICE file
+4    * distributed with this work for additional information
+5    * regarding copyright ownership.  The ASF licenses this file
+6    * to you under the Apache License, Version 2.0 (the
+7    * "License"); you may not use this file except in compliance
+8    * with the License.  You may obtain a copy of the License at
+9    *
+10   * http://www.apache.org/licenses/LICENSE-2.0
+11   *
+12   * Unless required by applicable law or agreed to in writing,
+13   * software distributed under the License is distributed on an
+14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+15   * KIND, either express or implied.  See the License for the
+16   * specific language governing permissions and limitations
+17   * under the License.
+18   */
+19  package org.apache.chemistry.opencmis.server.impl.atompub;
+20  
+21  import java.math.BigInteger;
+22  import java.util.GregorianCalendar;
+23  
+24  import javax.servlet.http.HttpServletRequest;
+25  import javax.servlet.http.HttpServletResponse;
+26  import javax.xml.stream.XMLStreamException;
+27  import javax.xml.stream.XMLStreamReader;
+28  import javax.xml.stream.XMLStreamWriter;
+29  
+30  import org.apache.chemistry.opencmis.commons.data.ObjectData;
+31  import org.apache.chemistry.opencmis.commons.data.ObjectList;
+32  import org.apache.chemistry.opencmis.commons.enums.CmisVersion;
+33  import org.apache.chemistry.opencmis.commons.enums.IncludeRelationships;
+34  import org.apache.chemistry.opencmis.commons.exceptions.CmisInvalidArgumentException;
+35  import org.apache.chemistry.opencmis.commons.exceptions.CmisRuntimeException;
+36  import org.apache.chemistry.opencmis.commons.impl.Constants;
+37  import org.apache.chemistry.opencmis.commons.impl.UrlBuilder;
+38  import org.apache.chemistry.opencmis.commons.impl.XMLConstants;
+39  import org.apache.chemistry.opencmis.commons.impl.XMLConverter;
+40  import org.apache.chemistry.opencmis.commons.impl.XMLUtils;
+41  import org.apache.chemistry.opencmis.commons.impl.dataobjects.QueryTypeImpl;
+42  import org.apache.chemistry.opencmis.commons.server.CallContext;
+43  import org.apache.chemistry.opencmis.commons.server.CmisService;
+44  import org.apache.chemistry.opencmis.commons.spi.Holder;
+45  import org.apache.chemistry.opencmis.server.shared.Dispatcher;
+46  
+47  /**
+48   * Discovery Service operations.
+49   */
+50  public class DiscoveryService {
+51  
+52      /**
+53       * Query.
+54       */
+55      public static class Query extends AbstractAtomPubServiceCall {
+56          public void serve(CallContext context, CmisService service, String repositoryId, HttpServletRequest request,
+57                  HttpServletResponse response) throws Exception {
+58              assert context != null;
+59              assert service != null;
+60              assert repositoryId != null;
+61              assert request != null;
+62              assert response != null;
+63  
+64              // get parameters
+65              String statement = null;
+66              Boolean searchAllVersions = null;
+67              Boolean includeAllowableActions = null;
+68              IncludeRelationships includeRelationships = null;
+69              String renditionFilter = null;
+70              BigInteger maxItems = null;
+71              BigInteger skipCount = null;
+72  
+73              int statusCode = 0;
+74  
+75              if (Dispatcher.METHOD_POST.equals(request.getMethod())) {
+76                  // POST -> read from stream
+77  
+78                  QueryTypeImpl queryType = null;
+79                  XMLStreamReader parser = null;
+80                  try {
+81                      parser = XMLUtils.createParser(request.getInputStream());
+82                      XMLUtils.findNextStartElemenet(parser);
+83                      queryType = XMLConverter.convertQuery(parser);
+84                  } catch (XMLStreamException e) {
+85                      throw new CmisInvalidArgumentException("Invalid query request!", e);
+86                  } finally {
+87                      if (parser != null) {
+88                          try {
+89                              parser.close();
+90                          } catch (XMLStreamException e2) {
+91                              // ignore
+92                          }
+93                      }
+94                  }
+95  
+96                  statement = queryType.getStatement();
+97                  searchAllVersions = queryType.getSearchAllVersions();
+98                  includeAllowableActions = queryType.getIncludeAllowableActions();
+99                  includeRelationships = queryType.getIncludeRelationships();
+100                 renditionFilter = queryType.getRenditionFilter();
+101                 maxItems = queryType.getMaxItems();
+102                 skipCount = queryType.getSkipCount();
+103 
+104                 statusCode = HttpServletResponse.SC_CREATED;
+105             } else if (Dispatcher.METHOD_GET.equals(request.getMethod())) {
+106                 // GET -> parameters
+107                 statement = getStringParameter(request, Constants.PARAM_Q);
+108                 searchAllVersions = getBooleanParameter(request, Constants.PARAM_SEARCH_ALL_VERSIONS);
+109                 includeAllowableActions = getBooleanParameter(request, Constants.PARAM_ALLOWABLE_ACTIONS);
+110                 includeRelationships = getEnumParameter(request, Constants.PARAM_RELATIONSHIPS,
+111                         IncludeRelationships.class);
+112                 // since CMIS 1.1
+113                 renditionFilter = getStringParameter(request, Constants.PARAM_RENDITION_FILTER);
+114                 maxItems = getBigIntegerParameter(request, Constants.PARAM_MAX_ITEMS);
+115                 skipCount = getBigIntegerParameter(request, Constants.PARAM_SKIP_COUNT);
+116 
+117                 statusCode = HttpServletResponse.SC_OK;
+118             } else {
+119                 throw new CmisRuntimeException("Invalid HTTP method!");
+120             }
+121 
+122             // execute
+123             if (stopBeforeService(service)) {
+124                 return;
+125             }
+126 
+127             ObjectList results = service.query(repositoryId, statement, searchAllVersions, includeAllowableActions,
+128                     includeRelationships, renditionFilter, maxItems, skipCount, null);
+129 
+130             if (stopAfterService(service)) {
+131                 return;
+132             }
+133 
+134             if (results == null) {
+135                 throw new CmisRuntimeException("Results are null!");
+136             }
+137 
+138             // set headers
+139             UrlBuilder baseUrl = compileBaseUrl(request, repositoryId);
+140 
+141             UrlBuilder pagingUrl = compileUrlBuilder(baseUrl, RESOURCE_QUERY, null);
+142             pagingUrl.addParameter(Constants.PARAM_Q, statement);
+143             pagingUrl.addParameter(Constants.PARAM_SEARCH_ALL_VERSIONS, searchAllVersions);
+144             pagingUrl.addParameter(Constants.PARAM_ALLOWABLE_ACTIONS, includeAllowableActions);
+145             pagingUrl.addParameter(Constants.PARAM_RELATIONSHIPS, includeRelationships);
+146 
+147             UrlBuilder location = new UrlBuilder(pagingUrl);
+148             location.addParameter(Constants.PARAM_MAX_ITEMS, maxItems);
+149             location.addParameter(Constants.PARAM_SKIP_COUNT, skipCount);
+150 
+151             response.setStatus(statusCode);
+152             response.setContentType(Constants.MEDIATYPE_FEED);
+153 
+154             // The Content-Location header is optional (CMIS specification
+155             // 3.7.2.1).
+156             // Since it can cause problems with long query statements it is
+157             // deactivated.
+158             // response.setHeader("Content-Location", location.toString());
+159 
+160             // The Location header is not optional (CMIS specification 3.7.2.1).
+161             response.setHeader("Location", location.toString());
+162 
+163             // write XML
+164             AtomFeed feed = new AtomFeed();
+165             feed.startDocument(response.getOutputStream(), getNamespaces(service));
+166             feed.startFeed(true);
+167 
+168             // write basic Atom feed elements
+169             GregorianCalendar now = new GregorianCalendar();
+170             feed.writeFeedElements("query", null, "", "Query", now, null, results.getNumItems());
+171 
+172             // write links
+173             feed.writeServiceLink(baseUrl.toString(), repositoryId);
+174 
+175             feed.writePagingLinks(pagingUrl, maxItems, skipCount, results.getNumItems(), results.hasMoreItems(),
+176                     PAGE_SIZE);
+177 
+178             CmisVersion cmisVersion = context.getCmisVersion();
+179             if (results.getObjects() != null) {
+180                 AtomEntry entry = new AtomEntry(feed.getWriter());
+181                 int idCounter = 0;
+182                 for (ObjectData result : results.getObjects()) {
+183                     if (result == null) {
+184                         continue;
+185                     }
+186                     idCounter++;
+187                     writeQueryResultEntry(entry, result, "id-" + idCounter, now, cmisVersion);
+188                 }
+189             }
+190 
+191             // write extensions
+192             feed.writeExtensions(results);
+193 
+194             // we are done
+195             feed.endFeed();
+196             feed.endDocument();
+197         }
+198 
+199         private void writeQueryResultEntry(AtomEntry entry, ObjectData result, String id, GregorianCalendar now,
+200                 CmisVersion cmisVersion) throws Exception {
+201             if (result == null) {
+202                 return;
+203             }
+204 
+205             // start
+206             entry.startEntry(false);
+207 
+208             // write Atom base tags
+209             entry.writeAuthor("");
+210             entry.writeId(entry.generateAtomId(id));
+211             entry.writePublished(now);
+212             entry.writeTitle("Query Result " + id);
+213             entry.writeUpdated(now);
+214 
+215             // write query result object
+216             XMLConverter.writeObject(entry.getWriter(), cmisVersion, false, XMLConstants.TAG_OBJECT,
+217                     XMLConstants.NAMESPACE_RESTATOM, result);
+218 
+219             // we are done
+220             entry.endEntry();
+221         }
+222     }
+223 
+224     /**
+225      * Get content changes.
+226      */
+227     public static class GetContentChanges extends AbstractAtomPubServiceCall {
+228         public void serve(CallContext context, CmisService service, String repositoryId, HttpServletRequest request,
+229                 HttpServletResponse response) throws Exception {
+230             assert context != null;
+231             assert service != null;
+232             assert repositoryId != null;
+233             assert request != null;
+234             assert response != null;
+235 
+236             // get parameters
+237             String changeLogToken = getStringParameter(request, Constants.PARAM_CHANGE_LOG_TOKEN);
+238             Boolean includeProperties = getBooleanParameter(request, Constants.PARAM_PROPERTIES);
+239             String filter = getStringParameter(request, Constants.PARAM_FILTER);
+240             Boolean includePolicyIds = getBooleanParameter(request, Constants.PARAM_POLICY_IDS);
+241             Boolean includeAcl = getBooleanParameter(request, Constants.PARAM_ACL);
+242             BigInteger maxItems = getBigIntegerParameter(request, Constants.PARAM_MAX_ITEMS);
+243 
+244             // execute
+245             if (stopBeforeService(service)) {
+246                 return;
+247             }
+248 
+249             Holder<String> changeLogTokenHolder = new Holder<String>(changeLogToken);
+250             ObjectList changes = service.getContentChanges(repositoryId, changeLogTokenHolder, includeProperties,
+251                     filter, includePolicyIds, includeAcl, maxItems, null);
+252 
+253             if (stopAfterService(service)) {
+254                 return;
+255             }
+256 
+257             if (changes == null) {
+258                 throw new CmisRuntimeException("Changes are null!");
+259             }
+260 
+261             // set headers
+262             response.setStatus(HttpServletResponse.SC_OK);
+263             response.setContentType(Constants.MEDIATYPE_FEED);
+264 
+265             // write XML
+266             AtomFeed feed = new AtomFeed();
+267             feed.startDocument(response.getOutputStream(), getNamespaces(service));
+268             feed.startFeed(true);
+269 
+270             // write basic Atom feed elements
+271             GregorianCalendar now = new GregorianCalendar();
+272             feed.writeFeedElements("contentChanges", null, "", "Content Change", now, null, changes.getNumItems());
+273 
+274             // write links
+275             UrlBuilder baseUrl = compileBaseUrl(request, repositoryId);
+276 
+277             feed.writeServiceLink(baseUrl.toString(), repositoryId);
+278 
+279             UrlBuilder selfLink = compileUrlBuilder(baseUrl, RESOURCE_CHANGES, null);
+280             selfLink.addParameter(Constants.PARAM_CHANGE_LOG_TOKEN, changeLogToken);
+281             selfLink.addParameter(Constants.PARAM_PROPERTIES, includeProperties);
+282             selfLink.addParameter(Constants.PARAM_FILTER, filter);
+283             selfLink.addParameter(Constants.PARAM_POLICY_IDS, includePolicyIds);
+284             selfLink.addParameter(Constants.PARAM_ACL, includeAcl);
+285             selfLink.addParameter(Constants.PARAM_MAX_ITEMS, maxItems);
+286             feed.writeSelfLink(selfLink.toString(), null);
+287 
+288             if (changeLogTokenHolder.getValue() != null) {
+289                 if (Boolean.TRUE.equals(changes.hasMoreItems())) {
+290                     UrlBuilder nextLink = compileUrlBuilder(baseUrl, RESOURCE_CHANGES, null);
+291                     nextLink.addParameter(Constants.PARAM_CHANGE_LOG_TOKEN, changeLogTokenHolder.getValue());
+292                     nextLink.addParameter(Constants.PARAM_PROPERTIES, includeProperties);
+293                     nextLink.addParameter(Constants.PARAM_FILTER, filter);
+294                     nextLink.addParameter(Constants.PARAM_POLICY_IDS, includePolicyIds);
+295                     nextLink.addParameter(Constants.PARAM_ACL, includeAcl);
+296                     nextLink.addParameter(Constants.PARAM_MAX_ITEMS, maxItems);
+297                     feed.writeNextLink(nextLink.toString());
+298                 }
+299 
+300                 // The CMIS spec says that the AtomPub binding doesn't provide
+301                 // the change log token. We are doing it anyway.
+302                 XMLStreamWriter writer = feed.getWriter();
+303                 writer.writeStartElement(XMLConstants.PREFIX_APACHE_CHEMISTY, "changeLogToken",
+304                         XMLConstants.NAMESPACE_APACHE_CHEMISTRY);
+305                 writer.writeNamespace(XMLConstants.PREFIX_APACHE_CHEMISTY, XMLConstants.NAMESPACE_APACHE_CHEMISTRY);
+306                 writer.writeCharacters(changeLogTokenHolder.getValue());
+307                 writer.writeEndElement();
+308             }
+309 
+310             // write entries
+311             if (changes.getObjects() != null) {
+312                 AtomEntry entry = new AtomEntry(feed.getWriter());
+313                 for (ObjectData object : changes.getObjects()) {
+314                     if (object == null) {
+315                         continue;
+316                     }
+317                     writeContentChangesObjectEntry(service, entry, object, null, repositoryId, null, null, baseUrl,
+318                             false, context.getCmisVersion());
+319                 }
+320             }
+321 
+322             // write extensions
+323             feed.writeExtensions(changes);
+324 
+325             // we are done
+326             feed.endFeed();
+327             feed.endDocument();
+328         }
+329     }
+330 }
+
+
+ + Added: websites/staging/chemistry/trunk/content/java/0.13.0/maven/chemistry-opencmis-server/chemistry-opencmis-server-bindings/xref/org/apache/chemistry/opencmis/server/impl/atompub/MultiFilingService.html ============================================================================== --- websites/staging/chemistry/trunk/content/java/0.13.0/maven/chemistry-opencmis-server/chemistry-opencmis-server-bindings/xref/org/apache/chemistry/opencmis/server/impl/atompub/MultiFilingService.html (added) +++ websites/staging/chemistry/trunk/content/java/0.13.0/maven/chemistry-opencmis-server/chemistry-opencmis-server-bindings/xref/org/apache/chemistry/opencmis/server/impl/atompub/MultiFilingService.html Mon Apr 6 17:13:30 2015 @@ -0,0 +1,168 @@ + + + + +MultiFilingService xref + + + +
+
+1   /*
+2    * Licensed to the Apache Software Foundation (ASF) under one
+3    * or more contributor license agreements.  See the NOTICE file
+4    * distributed with this work for additional information
+5    * regarding copyright ownership.  The ASF licenses this file
+6    * to you under the Apache License, Version 2.0 (the
+7    * "License"); you may not use this file except in compliance
+8    * with the License.  You may obtain a copy of the License at
+9    *
+10   * http://www.apache.org/licenses/LICENSE-2.0
+11   *
+12   * Unless required by applicable law or agreed to in writing,
+13   * software distributed under the License is distributed on an
+14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+15   * KIND, either express or implied.  See the License for the
+16   * specific language governing permissions and limitations
+17   * under the License.
+18   */
+19  package org.apache.chemistry.opencmis.server.impl.atompub;
+20  
+21  import javax.servlet.http.HttpServletRequest;
+22  import javax.servlet.http.HttpServletResponse;
+23  
+24  import org.apache.chemistry.opencmis.commons.data.ContentStream;
+25  import org.apache.chemistry.opencmis.commons.data.ObjectData;
+26  import org.apache.chemistry.opencmis.commons.enums.VersioningState;
+27  import org.apache.chemistry.opencmis.commons.exceptions.CmisRuntimeException;
+28  import org.apache.chemistry.opencmis.commons.impl.Constants;
+29  import org.apache.chemistry.opencmis.commons.impl.UrlBuilder;
+30  import org.apache.chemistry.opencmis.commons.server.CallContext;
+31  import org.apache.chemistry.opencmis.commons.server.CmisService;
+32  import org.apache.chemistry.opencmis.commons.server.ObjectInfo;
+33  import org.apache.chemistry.opencmis.server.shared.TempStoreOutputStreamFactory;
+34  
+35  /**
+36   * MultiFiling Service operations.
+37   */
+38  public class MultiFilingService {
+39  
+40      /**
+41       * Remove object from folder.
+42       */
+43      public static class RemoveObjectFromFolder extends AbstractAtomPubServiceCall {
+44          public void serve(CallContext context, CmisService service, String repositoryId, HttpServletRequest request,
+45                  HttpServletResponse response) throws Exception {
+46              assert context != null;
+47              assert service != null;
+48              assert repositoryId != null;
+49              assert request != null;
+50              assert response != null;
+51  
+52              // get parameters
+53              String removeFrom = getStringParameter(request, Constants.PARAM_REMOVE_FROM);
+54  
+55              TempStoreOutputStreamFactory streamFactory = (TempStoreOutputStreamFactory) context
+56                      .get(CallContext.STREAM_FACTORY);
+57              AtomEntryParser parser = new AtomEntryParser(streamFactory);
+58              parser.setIgnoreAtomContentSrc(true); // needed for some clients
+59              parser.parse(request.getInputStream());
+60  
+61              // execute
+62              String objectId = parser.getId();
+63              try {
+64                  if (stopBeforeService(service)) {
+65                      return;
+66                  }
+67  
+68                  if (objectId == null && removeFrom == null) {
+69                      createUnfiledObject(context, service, repositoryId, request, response, parser);
+70                      return;
+71                  }
+72  
+73                  service.removeObjectFromFolder(repositoryId, objectId, removeFrom, null);
+74  
+75                  if (stopAfterService(service)) {
+76                      return;
+77                  }
+78              } finally {
+79                  parser.release();
+80              }
+81  
+82              ObjectInfo objectInfo = service.getObjectInfo(repositoryId, objectId);
+83              if (objectInfo == null) {
+84                  throw new CmisRuntimeException("Object Info is missing!");
+85              }
+86  
+87              ObjectData object = objectInfo.getObject();
+88              if (object == null) {
+89                  throw new CmisRuntimeException("Object is null!");
+90              }
+91  
+92              if (object.getId() == null) {
+93                  throw new CmisRuntimeException("Object Id is null!");
+94              }
+95  
+96              // set headers
+97              UrlBuilder baseUrl = compileBaseUrl(request, repositoryId);
+98  
+99              response.setStatus(HttpServletResponse.SC_CREATED);
+100             response.setContentType(Constants.MEDIATYPE_ENTRY);
+101             response.setHeader("Location", compileUrl(baseUrl, RESOURCE_ENTRY, object.getId()));
+102 
+103             // write XML
+104             AtomEntry entry = new AtomEntry();
+105             entry.startDocument(response.getOutputStream(), getNamespaces(service));
+106             writeObjectEntry(service, entry, object, null, repositoryId, null, null, baseUrl, true,
+107                     context.getCmisVersion());
+108             entry.endDocument();
+109         }
+110 
+111         /**
+112          * Create unfiled object.
+113          */
+114         private void createUnfiledObject(CallContext context, CmisService service, String repositoryId,
+115                 HttpServletRequest request, HttpServletResponse response, AtomEntryParser parser) throws Exception {
+116             // get additional parameters
+117             VersioningState versioningState = getEnumParameter(request, Constants.PARAM_VERSIONIG_STATE,
+118                     VersioningState.class);
+119 
+120             // create
+121             ContentStream contentStream = parser.getContentStream();
+122             String newObjectId = service.create(repositoryId, parser.getProperties(), null, contentStream,
+123                     versioningState, parser.getPolicyIds(), null);
+124 
+125             if (stopAfterService(service)) {
+126                 return;
+127             }
+128 
+129             ObjectInfo objectInfo = service.getObjectInfo(repositoryId, newObjectId);
+130             if (objectInfo == null) {
+131                 throw new CmisRuntimeException("Object Info is missing!");
+132             }
+133 
+134             ObjectData object = objectInfo.getObject();
+135             if (object == null) {
+136                 throw new CmisRuntimeException("Object is null!");
+137             }
+138 
+139             // set headers
+140             UrlBuilder baseUrl = compileBaseUrl(request, repositoryId);
+141 
+142             response.setStatus(HttpServletResponse.SC_CREATED);
+143             response.setContentType(Constants.MEDIATYPE_ENTRY);
+144             response.setHeader("Location", compileUrl(baseUrl, RESOURCE_ENTRY, newObjectId));
+145 
+146             // write XML
+147             AtomEntry entry = new AtomEntry();
+148             entry.startDocument(response.getOutputStream(), getNamespaces(service));
+149             writeObjectEntry(service, entry, object, null, repositoryId, null, null, baseUrl, true,
+150                     context.getCmisVersion());
+151             entry.endDocument();
+152         }
+153     }
+154 }
+
+
+ +