public int queueReport ( ) throws IOException , InterruptedException , ExecutionException , TimeoutException , StageException { final AsyncInvoker asyncInvoker = queueResource . request ( ) . header ( WSSE_HEADER , OmnitureAuthUtil . getHeader ( username . get ( ) , sharedSecret . get ( ) ) ) . async ( ) ; LOG . debug ( "Queueing report using URL {} with description {}" , queueResource . getUri ( ) . toURL ( ) . toString ( ) , reportDescription ) ; final Future < Response > responseFuture = asyncInvoker . post ( Entity . json ( reportDescription ) ) ; Response response = responseFuture . get ( responseTimeoutMillis , TimeUnit . MILLISECONDS ) ; if ( response == null ) { LOG . error ( "Failed to get response using URL {}" , queueResource . getUri ( ) . toURL ( ) . toString ( ) ) ; throw new StageException ( Errors . OMNITURE_01 , "HTTP response was null" ) ; } LOG . debug ( "Received response: status {}" , response . getStatus ( ) ) ; ObjectMapper mapper = new ObjectMapper ( ) ; String json = response . readEntity ( String . class ) ; LOG . trace ( "Response JSON: {}" , json ) ; JsonNode root = mapper . readTree ( json ) ; if ( root == null ) { LOG . error ( "Invalid JSON in response: {}" , json ) ; throw new StageException ( Errors . OMNITURE_01 , json ) ; } if ( root . has ( "error" ) ) { throw new StageException ( Errors . OMNITURE_01 , root . get ( "error_description" ) . asText ( ) ) ; } LOG . info ( "Omniture report queued" ) ; return root . get ( "reportID" ) . asInt ( ) ; }
Queue a report using the Report . Queue method . This will post a request with the report description to the Omniture API and return a report ID that can be used to retrieve the report once it s ready .