001/* 002 * This library is part of OpenCms - 003 * the Open Source Content Management System 004 * 005 * Copyright (C) Alkacon Software (https://www.alkacon.com) 006 * 007 * This library is free software; you can redistribute it and/or 008 * modify it under the terms of the GNU Lesser General Public 009 * License as published by the Free Software Foundation; either 010 * version 2.1 of the License, or (at your option) any later version. 011 * 012 * This library is distributed in the hope that it will be useful, 013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 015 * Lesser General Public License for more details. 016 * 017 * For further information about Alkacon Software, please see the 018 * company website: https://www.alkacon.com 019 * 020 * For further information about OpenCms, please see the 021 * project website: https://www.opencms.org 022 * 023 * You should have received a copy of the GNU Lesser General Public 024 * License along with this library; if not, write to the Free Software 025 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 026 */ 027 028package org.opencms.cmis; 029 030import org.opencms.main.OpenCms; 031 032import java.math.BigInteger; 033import java.util.ArrayList; 034import java.util.List; 035 036import org.apache.chemistry.opencmis.commons.data.Acl; 037import org.apache.chemistry.opencmis.commons.data.AllowableActions; 038import org.apache.chemistry.opencmis.commons.data.ContentStream; 039import org.apache.chemistry.opencmis.commons.data.ExtensionsData; 040import org.apache.chemistry.opencmis.commons.data.FailedToDeleteData; 041import org.apache.chemistry.opencmis.commons.data.ObjectData; 042import org.apache.chemistry.opencmis.commons.data.ObjectInFolderContainer; 043import org.apache.chemistry.opencmis.commons.data.ObjectInFolderList; 044import org.apache.chemistry.opencmis.commons.data.ObjectList; 045import org.apache.chemistry.opencmis.commons.data.ObjectParentData; 046import org.apache.chemistry.opencmis.commons.data.Properties; 047import org.apache.chemistry.opencmis.commons.data.RenditionData; 048import org.apache.chemistry.opencmis.commons.data.RepositoryInfo; 049import org.apache.chemistry.opencmis.commons.definitions.TypeDefinition; 050import org.apache.chemistry.opencmis.commons.definitions.TypeDefinitionContainer; 051import org.apache.chemistry.opencmis.commons.definitions.TypeDefinitionList; 052import org.apache.chemistry.opencmis.commons.enums.IncludeRelationships; 053import org.apache.chemistry.opencmis.commons.enums.RelationshipDirection; 054import org.apache.chemistry.opencmis.commons.enums.UnfileObject; 055import org.apache.chemistry.opencmis.commons.enums.VersioningState; 056import org.apache.chemistry.opencmis.commons.exceptions.CmisConnectionException; 057import org.apache.chemistry.opencmis.commons.impl.server.AbstractCmisService; 058import org.apache.chemistry.opencmis.commons.server.CallContext; 059import org.apache.chemistry.opencmis.commons.server.ObjectInfo; 060import org.apache.chemistry.opencmis.commons.spi.Holder; 061 062/** 063 * The CMIS service class for OpenCms repositories.<p> 064 * 065 * Typically, a new instance of this class will be created for every CMIS service request. This class delegates the 066 * actual work to an implementation of the {@link I_CmsCmisRepository} class.<p> 067 */ 068public class CmsCmisService extends AbstractCmisService { 069 070 /** The call context. */ 071 protected CallContext m_callContext; 072 073 /** 074 * Creates a new CMIS service instance.<p> 075 * 076 * @param context the CMIS call context 077 */ 078 public CmsCmisService(CallContext context) { 079 080 m_callContext = context; 081 } 082 083 /** 084 * @param repositoryId 085 * @param objectId 086 * @param folderId 087 * @param allVersions 088 * @param extension 089 * @see org.apache.chemistry.opencmis.commons.spi.MultiFilingService#addObjectToFolder(java.lang.String, java.lang.String, java.lang.String, java.lang.Boolean, org.apache.chemistry.opencmis.commons.data.ExtensionsData) 090 */ 091 @Override 092 public void addObjectToFolder( 093 String repositoryId, 094 String objectId, 095 String folderId, 096 Boolean allVersions, 097 ExtensionsData extension) { 098 099 getRepository(repositoryId).addObjectToFolder(makeContext(), objectId, folderId, allVersions.booleanValue()); 100 } 101 102 /** 103 * @see org.apache.chemistry.opencmis.commons.impl.server.AbstractCmisService#applyPolicy(java.lang.String, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData) 104 */ 105 @Override 106 public void applyPolicy(String repositoryId, String policyId, String objectId, ExtensionsData extension) { 107 108 getRepository(repositoryId).applyPolicy(makeContext(), policyId, objectId); 109 } 110 111 /** 112 * @see org.apache.chemistry.opencmis.commons.impl.server.AbstractCmisService#createDocument(java.lang.String, org.apache.chemistry.opencmis.commons.data.Properties, java.lang.String, org.apache.chemistry.opencmis.commons.data.ContentStream, org.apache.chemistry.opencmis.commons.enums.VersioningState, java.util.List, org.apache.chemistry.opencmis.commons.data.Acl, org.apache.chemistry.opencmis.commons.data.Acl, org.apache.chemistry.opencmis.commons.data.ExtensionsData) 113 */ 114 @Override 115 public String createDocument( 116 String repositoryId, 117 Properties properties, 118 String folderId, 119 ContentStream contentStream, 120 VersioningState versioningState, 121 List<String> policies, 122 Acl addAces, 123 Acl removeAces, 124 ExtensionsData extension) { 125 126 return getRepository(repositoryId).createDocument( 127 makeContext(), 128 properties, 129 folderId, 130 contentStream, 131 versioningState, 132 policies, 133 addAces, 134 removeAces); 135 } 136 137 /** 138 * @see org.apache.chemistry.opencmis.commons.impl.server.AbstractCmisService#createDocumentFromSource(java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.Properties, java.lang.String, org.apache.chemistry.opencmis.commons.enums.VersioningState, java.util.List, org.apache.chemistry.opencmis.commons.data.Acl, org.apache.chemistry.opencmis.commons.data.Acl, org.apache.chemistry.opencmis.commons.data.ExtensionsData) 139 */ 140 @Override 141 public String createDocumentFromSource( 142 String repositoryId, 143 String sourceId, 144 Properties properties, 145 String folderId, 146 VersioningState versioningState, 147 List<String> policies, 148 Acl addAces, 149 Acl removeAces, 150 ExtensionsData extension) { 151 152 return getRepository(repositoryId).createDocumentFromSource( 153 makeContext(), 154 sourceId, 155 properties, 156 folderId, 157 versioningState, 158 policies, 159 addAces, 160 removeAces); 161 } 162 163 /** 164 * @see org.apache.chemistry.opencmis.commons.spi.ObjectService#createFolder(java.lang.String, org.apache.chemistry.opencmis.commons.data.Properties, java.lang.String, java.util.List, org.apache.chemistry.opencmis.commons.data.Acl, org.apache.chemistry.opencmis.commons.data.Acl, org.apache.chemistry.opencmis.commons.data.ExtensionsData) 165 */ 166 @Override 167 public String createFolder( 168 String repositoryId, 169 Properties properties, 170 String folderId, 171 List<String> policies, 172 Acl addAces, 173 Acl removeAces, 174 ExtensionsData extension) { 175 176 return getRepository( 177 repositoryId).createFolder(makeContext(), properties, folderId, policies, addAces, removeAces); 178 } 179 180 /** 181 * @see org.apache.chemistry.opencmis.commons.impl.server.AbstractCmisService#createPolicy(java.lang.String, org.apache.chemistry.opencmis.commons.data.Properties, java.lang.String, java.util.List, org.apache.chemistry.opencmis.commons.data.Acl, org.apache.chemistry.opencmis.commons.data.Acl, org.apache.chemistry.opencmis.commons.data.ExtensionsData) 182 */ 183 @Override 184 public String createPolicy( 185 String repositoryId, 186 Properties properties, 187 String folderId, 188 List<String> policies, 189 Acl addAces, 190 Acl removeAces, 191 ExtensionsData extension) { 192 193 return getRepository( 194 repositoryId).createPolicy(makeContext(), properties, folderId, policies, addAces, removeAces); 195 } 196 197 /** 198 * @see org.apache.chemistry.opencmis.commons.impl.server.AbstractCmisService#createRelationship(java.lang.String, org.apache.chemistry.opencmis.commons.data.Properties, java.util.List, org.apache.chemistry.opencmis.commons.data.Acl, org.apache.chemistry.opencmis.commons.data.Acl, org.apache.chemistry.opencmis.commons.data.ExtensionsData) 199 */ 200 @Override 201 public String createRelationship( 202 String repositoryId, 203 Properties properties, 204 List<String> policies, 205 Acl addAces, 206 Acl removeAces, 207 ExtensionsData extension) { 208 209 return getRepository(repositoryId).createRelationship(makeContext(), properties, policies, addAces, removeAces); 210 } 211 212 /** 213 * @see org.apache.chemistry.opencmis.commons.impl.server.AbstractCmisService#deleteContentStream(java.lang.String, org.apache.chemistry.opencmis.commons.spi.Holder, org.apache.chemistry.opencmis.commons.spi.Holder, org.apache.chemistry.opencmis.commons.data.ExtensionsData) 214 */ 215 @Override 216 public void deleteContentStream( 217 String repositoryId, 218 Holder<String> objectId, 219 Holder<String> changeToken, 220 ExtensionsData extension) { 221 222 getRepository(repositoryId).deleteContentStream(makeContext(), objectId, changeToken); 223 } 224 225 /** 226 * @see org.apache.chemistry.opencmis.commons.impl.server.AbstractCmisService#deleteObject(java.lang.String, java.lang.String, java.lang.Boolean, org.apache.chemistry.opencmis.commons.data.ExtensionsData) 227 */ 228 @Override 229 public void deleteObject(String repositoryId, String objectId, Boolean allVersions, ExtensionsData extension) { 230 231 getRepository(repositoryId).deleteObject(makeContext(), objectId, allVersions.booleanValue()); 232 } 233 234 /** 235 * @see org.apache.chemistry.opencmis.commons.impl.server.AbstractCmisService#deleteObjectOrCancelCheckOut(java.lang.String, java.lang.String, java.lang.Boolean, org.apache.chemistry.opencmis.commons.data.ExtensionsData) 236 */ 237 @Override 238 public void deleteObjectOrCancelCheckOut( 239 String repositoryId, 240 String objectId, 241 Boolean allVersions, 242 ExtensionsData extension) { 243 244 getRepository(repositoryId).deleteObject(makeContext(), objectId, allVersions.booleanValue()); 245 } 246 247 /** 248 * @see org.apache.chemistry.opencmis.commons.impl.server.AbstractCmisService#deleteTree(java.lang.String, java.lang.String, java.lang.Boolean, org.apache.chemistry.opencmis.commons.enums.UnfileObject, java.lang.Boolean, org.apache.chemistry.opencmis.commons.data.ExtensionsData) 249 */ 250 @Override 251 public FailedToDeleteData deleteTree( 252 String repositoryId, 253 String folderId, 254 Boolean allVersions, 255 UnfileObject unfileObjects, 256 Boolean continueOnFailure, 257 ExtensionsData extension) { 258 259 return getRepository(repositoryId).deleteTree( 260 makeContext(), 261 folderId, 262 allVersions.booleanValue(), 263 unfileObjects, 264 continueOnFailure.booleanValue()); 265 } 266 267 /** 268 * @see org.apache.chemistry.opencmis.commons.impl.server.AbstractCmisService#getAcl(java.lang.String, java.lang.String, java.lang.Boolean, org.apache.chemistry.opencmis.commons.data.ExtensionsData) 269 */ 270 @Override 271 public Acl getAcl(String repositoryId, String objectId, Boolean onlyBasicPermissions, ExtensionsData extension) { 272 273 return getRepository(repositoryId).getAcl(makeContext(), objectId, onlyBasicPermissions.booleanValue()); 274 } 275 276 /** 277 * @see org.apache.chemistry.opencmis.commons.impl.server.AbstractCmisService#getAllowableActions(java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData) 278 */ 279 @Override 280 public AllowableActions getAllowableActions(String repositoryId, String objectId, ExtensionsData extension) { 281 282 return getRepository(repositoryId).getAllowableActions(makeContext(), objectId); 283 } 284 285 /** 286 * @see org.apache.chemistry.opencmis.commons.impl.server.AbstractCmisService#getAppliedPolicies(java.lang.String, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData) 287 */ 288 @Override 289 public List<ObjectData> getAppliedPolicies( 290 String repositoryId, 291 String objectId, 292 String filter, 293 ExtensionsData extension) { 294 295 return getRepository(repositoryId).getAppliedPolicies(makeContext(), objectId, filter); 296 } 297 298 /** 299 * 300 * @see org.apache.chemistry.opencmis.commons.impl.server.AbstractCmisService#getCheckedOutDocs(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.Boolean, org.apache.chemistry.opencmis.commons.enums.IncludeRelationships, java.lang.String, java.math.BigInteger, java.math.BigInteger, org.apache.chemistry.opencmis.commons.data.ExtensionsData) 301 */ 302 @Override 303 public ObjectList getCheckedOutDocs( 304 String repositoryId, 305 String folderId, 306 String filter, 307 String orderBy, 308 Boolean includeAllowableActions, 309 IncludeRelationships includeRelationships, 310 String renditionFilter, 311 BigInteger maxItems, 312 BigInteger skipCount, 313 ExtensionsData extension) { 314 315 return getRepository(repositoryId).getCheckedOutDocs( 316 makeContext(), 317 folderId, 318 filter, 319 orderBy, 320 includeAllowableActions.booleanValue(), 321 includeRelationships, 322 renditionFilter, 323 maxItems, 324 skipCount); 325 } 326 327 /** 328 * @see org.apache.chemistry.opencmis.commons.impl.server.AbstractCmisService#getChildren(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.Boolean, org.apache.chemistry.opencmis.commons.enums.IncludeRelationships, java.lang.String, java.lang.Boolean, java.math.BigInteger, java.math.BigInteger, org.apache.chemistry.opencmis.commons.data.ExtensionsData) 329 */ 330 @Override 331 public ObjectInFolderList getChildren( 332 String repositoryId, 333 String folderId, 334 String filter, 335 String orderBy, 336 Boolean includeAllowableActions, 337 IncludeRelationships includeRelationships, 338 String renditionFilter, 339 Boolean includePathSegment, 340 BigInteger maxItems, 341 BigInteger skipCount, 342 ExtensionsData extension) { 343 344 return getRepository(repositoryId).getChildren( 345 makeContext(), 346 folderId, 347 filter, 348 orderBy, 349 includeAllowableActions.booleanValue(), 350 includeRelationships, 351 renditionFilter, 352 includePathSegment.booleanValue(), 353 maxItems, 354 skipCount); 355 } 356 357 /** 358 * @see org.apache.chemistry.opencmis.commons.impl.server.AbstractCmisService#getContentChanges(java.lang.String, org.apache.chemistry.opencmis.commons.spi.Holder, java.lang.Boolean, java.lang.String, java.lang.Boolean, java.lang.Boolean, java.math.BigInteger, org.apache.chemistry.opencmis.commons.data.ExtensionsData) 359 */ 360 @Override 361 public ObjectList getContentChanges( 362 String repositoryId, 363 Holder<String> changeLogToken, 364 Boolean includeProperties, 365 String filter, 366 Boolean includePolicyIds, 367 Boolean includeAcl, 368 BigInteger maxItems, 369 ExtensionsData extension) { 370 371 return getRepository(repositoryId).getContentChanges( 372 makeContext(), 373 changeLogToken, 374 includeProperties.booleanValue(), 375 filter, 376 includePolicyIds.booleanValue(), 377 includeAcl.booleanValue(), 378 maxItems); 379 } 380 381 /** 382 * @see org.apache.chemistry.opencmis.commons.impl.server.AbstractCmisService#getContentStream(java.lang.String, java.lang.String, java.lang.String, java.math.BigInteger, java.math.BigInteger, org.apache.chemistry.opencmis.commons.data.ExtensionsData) 383 */ 384 @Override 385 public ContentStream getContentStream( 386 String repositoryId, 387 String objectId, 388 String streamId, 389 BigInteger offset, 390 BigInteger length, 391 ExtensionsData extension) { 392 393 return getRepository(repositoryId).getContentStream(makeContext(), objectId, streamId, offset, length); 394 } 395 396 /** 397 * @see org.apache.chemistry.opencmis.commons.impl.server.AbstractCmisService#getDescendants(java.lang.String, java.lang.String, java.math.BigInteger, java.lang.String, java.lang.Boolean, org.apache.chemistry.opencmis.commons.enums.IncludeRelationships, java.lang.String, java.lang.Boolean, org.apache.chemistry.opencmis.commons.data.ExtensionsData) 398 */ 399 @Override 400 public List<ObjectInFolderContainer> getDescendants( 401 String repositoryId, 402 String folderId, 403 BigInteger depth, 404 String filter, 405 Boolean includeAllowableActions, 406 IncludeRelationships includeRelationships, 407 String renditionFilter, 408 Boolean includePathSegment, 409 ExtensionsData extension) { 410 411 return getRepository(repositoryId).getDescendants( 412 makeContext(), 413 folderId, 414 depth, 415 filter, 416 includeAllowableActions.booleanValue(), 417 includePathSegment.booleanValue(), 418 false); 419 } 420 421 /** 422 * @see org.apache.chemistry.opencmis.commons.impl.server.AbstractCmisService#getFolderParent(java.lang.String, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData) 423 */ 424 @Override 425 public ObjectData getFolderParent(String repositoryId, String folderId, String filter, ExtensionsData extension) { 426 427 return getRepository(repositoryId).getFolderParent(makeContext(), folderId, filter); 428 } 429 430 /** 431 * @see org.apache.chemistry.opencmis.commons.impl.server.AbstractCmisService#getFolderTree(java.lang.String, java.lang.String, java.math.BigInteger, java.lang.String, java.lang.Boolean, org.apache.chemistry.opencmis.commons.enums.IncludeRelationships, java.lang.String, java.lang.Boolean, org.apache.chemistry.opencmis.commons.data.ExtensionsData) 432 */ 433 @Override 434 public List<ObjectInFolderContainer> getFolderTree( 435 String repositoryId, 436 String folderId, 437 BigInteger depth, 438 String filter, 439 Boolean includeAllowableActions, 440 IncludeRelationships includeRelationships, 441 String renditionFilter, 442 Boolean includePathSegment, 443 ExtensionsData extension) { 444 445 return getRepository(repositoryId).getDescendants( 446 makeContext(), 447 folderId, 448 depth, 449 filter, 450 includeAllowableActions.booleanValue(), 451 includePathSegment.booleanValue(), 452 true); 453 } 454 455 /** 456 * @see org.apache.chemistry.opencmis.commons.impl.server.AbstractCmisService#getObject(java.lang.String, java.lang.String, java.lang.String, java.lang.Boolean, org.apache.chemistry.opencmis.commons.enums.IncludeRelationships, java.lang.String, java.lang.Boolean, java.lang.Boolean, org.apache.chemistry.opencmis.commons.data.ExtensionsData) 457 */ 458 @Override 459 public ObjectData getObject( 460 String repositoryId, 461 String objectId, 462 String filter, 463 Boolean includeAllowableActions, 464 IncludeRelationships includeRelationships, 465 String renditionFilter, 466 Boolean includePolicyIds, 467 Boolean includeAcl, 468 ExtensionsData extension) { 469 470 return getRepository(repositoryId).getObject( 471 makeContext(), 472 objectId, 473 filter, 474 includeAllowableActions.booleanValue(), 475 includeRelationships, 476 renditionFilter, 477 includePolicyIds.booleanValue(), 478 includeAcl.booleanValue()); 479 } 480 481 /** 482 * @see org.apache.chemistry.opencmis.commons.impl.server.AbstractCmisService#getObjectByPath(java.lang.String, java.lang.String, java.lang.String, java.lang.Boolean, org.apache.chemistry.opencmis.commons.enums.IncludeRelationships, java.lang.String, java.lang.Boolean, java.lang.Boolean, org.apache.chemistry.opencmis.commons.data.ExtensionsData) 483 */ 484 @Override 485 public ObjectData getObjectByPath( 486 String repositoryId, 487 String path, 488 String filter, 489 Boolean includeAllowableActions, 490 IncludeRelationships includeRelationships, 491 String renditionFilter, 492 Boolean includePolicyIds, 493 Boolean includeAcl, 494 ExtensionsData extension) { 495 496 return getRepository(repositoryId).getObjectByPath( 497 makeContext(), 498 path, 499 filter, 500 includeAllowableActions.booleanValue(), 501 includeRelationships, 502 renditionFilter, 503 includePolicyIds.booleanValue(), 504 includeAcl.booleanValue()); 505 } 506 507 /** 508 * @see org.apache.chemistry.opencmis.commons.impl.server.AbstractCmisService#getObjectInfo(java.lang.String, java.lang.String) 509 */ 510 @Override 511 public ObjectInfo getObjectInfo(String repositoryId, String objectId) { 512 513 ObjectInfo result = super.getObjectInfo(repositoryId, objectId); 514 return result; 515 } 516 517 /** 518 * @see org.apache.chemistry.opencmis.commons.impl.server.AbstractCmisService#getObjectParents(java.lang.String, java.lang.String, java.lang.String, java.lang.Boolean, org.apache.chemistry.opencmis.commons.enums.IncludeRelationships, java.lang.String, java.lang.Boolean, org.apache.chemistry.opencmis.commons.data.ExtensionsData) 519 */ 520 @Override 521 public List<ObjectParentData> getObjectParents( 522 String repositoryId, 523 String objectId, 524 String filter, 525 Boolean includeAllowableActions, 526 IncludeRelationships includeRelationships, 527 String renditionFilter, 528 Boolean includeRelativePathSegment, 529 ExtensionsData extension) { 530 531 return getRepository(repositoryId).getObjectParents( 532 makeContext(), 533 objectId, 534 filter, 535 includeAllowableActions.booleanValue(), 536 includeRelativePathSegment.booleanValue()); 537 } 538 539 /** 540 * Gets all or a subset of relationships associated with an independent 541 * object. 542 */ 543 @Override 544 public ObjectList getObjectRelationships( 545 String repositoryId, 546 String objectId, 547 Boolean includeSubRelationshipTypes, 548 RelationshipDirection relationshipDirection, 549 String typeId, 550 String filter, 551 Boolean includeAllowableActions, 552 BigInteger maxItems, 553 BigInteger skipCount, 554 ExtensionsData extension) { 555 556 return getRepository(repositoryId).getObjectRelationships( 557 makeContext(), 558 objectId, 559 includeSubRelationshipTypes.booleanValue(), 560 relationshipDirection, 561 typeId, 562 filter, 563 includeAllowableActions.booleanValue(), 564 maxItems, 565 skipCount); 566 } 567 568 /** 569 * @see org.apache.chemistry.opencmis.commons.impl.server.AbstractCmisService#getProperties(java.lang.String, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData) 570 */ 571 @Override 572 public Properties getProperties(String repositoryId, String objectId, String filter, ExtensionsData extension) { 573 574 return getRepository(repositoryId).getProperties(makeContext(), objectId, filter); 575 } 576 577 /** 578 * @see org.apache.chemistry.opencmis.commons.impl.server.AbstractCmisService#getRenditions(java.lang.String, java.lang.String, java.lang.String, java.math.BigInteger, java.math.BigInteger, org.apache.chemistry.opencmis.commons.data.ExtensionsData) 579 */ 580 @Override 581 public List<RenditionData> getRenditions( 582 String repositoryId, 583 String objectId, 584 String renditionFilter, 585 BigInteger maxItems, 586 BigInteger skipCount, 587 ExtensionsData extension) { 588 589 return getRepository(repositoryId).getRenditions(makeContext(), objectId, renditionFilter, maxItems, skipCount); 590 } 591 592 /** 593 * @see org.apache.chemistry.opencmis.commons.impl.server.AbstractCmisService#getRepositoryInfo(java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData) 594 */ 595 @Override 596 public RepositoryInfo getRepositoryInfo(String repositoryId, ExtensionsData extension) { 597 598 return getRepository(repositoryId).getRepositoryInfo(); 599 } 600 601 /** 602 * @see org.apache.chemistry.opencmis.commons.impl.server.AbstractCmisService#getRepositoryInfos(org.apache.chemistry.opencmis.commons.data.ExtensionsData) 603 */ 604 @Override 605 public List<RepositoryInfo> getRepositoryInfos(ExtensionsData extension) { 606 607 List<RepositoryInfo> result = new ArrayList<RepositoryInfo>(); 608 for (I_CmsCmisRepository repository : OpenCms.getRepositoryManager().getRepositories( 609 I_CmsCmisRepository.class)) { 610 result.add(repository.getRepositoryInfo()); 611 } 612 return result; 613 } 614 615 /** 616 * @see org.apache.chemistry.opencmis.commons.impl.server.AbstractCmisService#getTypeChildren(java.lang.String, java.lang.String, java.lang.Boolean, java.math.BigInteger, java.math.BigInteger, org.apache.chemistry.opencmis.commons.data.ExtensionsData) 617 */ 618 @Override 619 public TypeDefinitionList getTypeChildren( 620 String repositoryId, 621 String typeId, 622 Boolean includePropertyDefinitions, 623 BigInteger maxItems, 624 BigInteger skipCount, 625 ExtensionsData extension) { 626 627 return getRepository(repositoryId).getTypeChildren( 628 makeContext(), 629 typeId, 630 includePropertyDefinitions.booleanValue(), 631 maxItems, 632 skipCount); 633 } 634 635 /** 636 * @see org.apache.chemistry.opencmis.commons.impl.server.AbstractCmisService#getTypeDefinition(java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData) 637 */ 638 @Override 639 public TypeDefinition getTypeDefinition(String repositoryId, String typeId, ExtensionsData extension) { 640 641 return getRepository(repositoryId).getTypeDefinition(makeContext(), typeId); 642 } 643 644 /** 645 * @see org.apache.chemistry.opencmis.commons.impl.server.AbstractCmisService#getTypeDescendants(java.lang.String, java.lang.String, java.math.BigInteger, java.lang.Boolean, org.apache.chemistry.opencmis.commons.data.ExtensionsData) 646 */ 647 @Override 648 public List<TypeDefinitionContainer> getTypeDescendants( 649 String repositoryId, 650 String typeId, 651 BigInteger depth, 652 Boolean includePropertyDefinitions, 653 ExtensionsData extension) { 654 655 return getRepository( 656 repositoryId).getTypeDescendants(makeContext(), typeId, depth, includePropertyDefinitions.booleanValue()); 657 } 658 659 /** 660 * @see org.apache.chemistry.opencmis.commons.impl.server.AbstractCmisService#moveObject(java.lang.String, org.apache.chemistry.opencmis.commons.spi.Holder, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData) 661 */ 662 @Override 663 public void moveObject( 664 String repositoryId, 665 Holder<String> objectId, 666 String targetFolderId, 667 String sourceFolderId, 668 ExtensionsData extension) { 669 670 getRepository(repositoryId).moveObject(makeContext(), objectId, targetFolderId, sourceFolderId); 671 } 672 673 /** 674 * @see org.apache.chemistry.opencmis.commons.impl.server.AbstractCmisService#query(java.lang.String, java.lang.String, java.lang.Boolean, java.lang.Boolean, org.apache.chemistry.opencmis.commons.enums.IncludeRelationships, java.lang.String, java.math.BigInteger, java.math.BigInteger, org.apache.chemistry.opencmis.commons.data.ExtensionsData) 675 */ 676 @Override 677 public ObjectList query( 678 String repositoryId, 679 String statement, 680 Boolean searchAllVersions, 681 Boolean includeAllowableActions, 682 IncludeRelationships includeRelationships, 683 String renditionFilter, 684 BigInteger maxItems, 685 BigInteger skipCount, 686 ExtensionsData extension) { 687 688 return getRepository(repositoryId).query( 689 makeContext(), 690 statement, 691 searchAllVersions.booleanValue(), 692 includeAllowableActions.booleanValue(), 693 includeRelationships, 694 renditionFilter, 695 maxItems, 696 skipCount); 697 } 698 699 /** 700 * @see org.apache.chemistry.opencmis.commons.impl.server.AbstractCmisService#removeObjectFromFolder(java.lang.String, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData) 701 */ 702 @Override 703 public void removeObjectFromFolder( 704 String repositoryId, 705 String objectId, 706 String folderId, 707 ExtensionsData extension) { 708 709 getRepository(repositoryId).removeObjectFromFolder(makeContext(), objectId, folderId); 710 } 711 712 /** 713 * @see org.apache.chemistry.opencmis.commons.impl.server.AbstractCmisService#removePolicy(java.lang.String, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData) 714 */ 715 @Override 716 public void removePolicy(String repositoryId, String policyId, String objectId, ExtensionsData extension) { 717 718 getRepository(repositoryId).removePolicy(makeContext(), policyId, objectId); 719 } 720 721 /** 722 * @see org.apache.chemistry.opencmis.commons.impl.server.AbstractCmisService#setContentStream(java.lang.String, org.apache.chemistry.opencmis.commons.spi.Holder, java.lang.Boolean, org.apache.chemistry.opencmis.commons.spi.Holder, org.apache.chemistry.opencmis.commons.data.ContentStream, org.apache.chemistry.opencmis.commons.data.ExtensionsData) 723 */ 724 @Override 725 public void setContentStream( 726 String repositoryId, 727 Holder<String> objectId, 728 Boolean overwriteFlag, 729 Holder<String> changeToken, 730 ContentStream contentStream, 731 ExtensionsData extension) { 732 733 getRepository(repositoryId).setContentStream( 734 makeContext(), 735 objectId, 736 overwriteFlag.booleanValue(), 737 changeToken, 738 contentStream); 739 } 740 741 /** 742 * @see org.apache.chemistry.opencmis.commons.impl.server.AbstractCmisService#updateProperties(java.lang.String, org.apache.chemistry.opencmis.commons.spi.Holder, org.apache.chemistry.opencmis.commons.spi.Holder, org.apache.chemistry.opencmis.commons.data.Properties, org.apache.chemistry.opencmis.commons.data.ExtensionsData) 743 */ 744 @Override 745 public void updateProperties( 746 String repositoryId, 747 Holder<String> objectId, 748 Holder<String> changeToken, 749 Properties properties, 750 ExtensionsData extension) { 751 752 getRepository(repositoryId).updateProperties(makeContext(), objectId, changeToken, properties); 753 } 754 755 /** 756 * Gets the repository for a given repository id.<p> 757 * 758 * @param repositoryId the repository id 759 * 760 * @return the repository with the given id 761 */ 762 protected I_CmsCmisRepository getRepository(String repositoryId) { 763 764 I_CmsCmisRepository result = OpenCms.getRepositoryManager().getRepository( 765 repositoryId, 766 I_CmsCmisRepository.class); 767 if (result == null) { 768 throw new CmisConnectionException("missing repository: " + repositoryId); 769 } 770 return result; 771 } 772 773 /** 774 * Creates a call context wrapper.<p> 775 * 776 * @return the created wrapper 777 */ 778 private CmsCmisCallContext makeContext() { 779 780 return new CmsCmisCallContext(m_callContext, this); 781 } 782}