question: public synchronized StorageCapability [ ] queryStorageCapabilities ( String [ ] capIds ) throws InvalidArgument , InvalidSession , StorageFault , NotImplemented { final String methodName = "queryStorageCapabilities(): " ; log . debug ( methodName + "Entry" ) ; List < StorageCapability > returnList = null ; List < CoS > cosList = null ; try { Boolean supportsCapability = new Boolean ( _config . getConfigValue ( "config/service/storageTopology/storageArray/support-capability-profile" ) ) ; if ( ! supportsCapability ) { log . error ( methodName + " This function is not implemented" ) ; throw FaultUtil . NotImplemented ( "This function is not implemented" ) ; } if ( Util . isEmpty ( capIds ) ) { log . debug ( methodName + "input capability Ids: " + capIds ) ; cosList = _syncManager . getCosDetailList ( ) ; } else { for ( String inputCapId : capIds ) { if ( ! Util . isEmpty ( inputCapId ) ) { if ( ! inputCapId . startsWith ( COS_IDENTIFIER_PREFIX ) ) { throw FaultUtil . InvalidArgument ( "Storage capability Id is invalid: " + inputCapId ) ; } } else { throw FaultUtil . InvalidArgument ( "Storage capability Id is empty: " + inputCapId ) ; } } List < String > inputCapIdList = Arrays . asList ( capIds ) ; log . debug ( methodName + "input capability Ids: " + inputCapIdList ) ; cosList = _syncManager . getCosDetailList ( inputCapIdList ) ; } returnList = new ArrayList < StorageCapability > ( ) ; for ( CoS cos : cosList ) { StorageCapability capability = new StorageCapability ( ) ; capability . setUniqueIdentifier ( cos . getId ( ) ) ; capability . setCapabilityName ( cos . getLabel ( ) + ":" + cos . getType ( ) ) ; capability . setCapabilityDetail ( cos . getDescription ( ) ) ; if ( log . isDebugEnabled ( ) ) { log . debug ( methodName + "Capability detail: id[" + capability . getUniqueIdentifier ( ) + "] name[" + capability . getCapabilityName ( ) + "] detail[" + capability . getCapabilityDetail ( ) + "]" ) ; } returnList . add ( capability ) ; } } catch ( SOSFailure e ) { log . error ( methodName + "StorageOSFailure occured " , e ) ; throw FaultUtil . StorageFault ( e ) ; } catch ( InvalidArgument e ) { log . error ( methodName + "InvalidArgument occured " , e ) ; throw e ; } catch ( NotImplemented e ) { log . error ( methodName + "NotImplemented occured " , e ) ; throw e ; } return returnList . toArray ( new StorageCapability [ 0 ] ) ; }
target:  Makes a call to Bourne to get the details of given storage capability Ids