Search in sources :

Example 1 with ErrorCode

use of com.google.apphosting.api.logservice.LogServicePb.LogServiceError.ErrorCode in project appengine-java-standard by GoogleCloudPlatform.

the class LogServiceImpl method fetchAsync.

Future<LogQueryResult> fetchAsync(LogQuery query) {
    LogReadRequest.Builder request = LogReadRequest.newBuilder().setAppId(getCurrentEnvironmentOrThrow().getAppId());
    Long startTimeUs = query.getStartTimeUsec();
    if (startTimeUs != null) {
        request.setStartTime(startTimeUs);
    }
    Long endTimeUs = query.getEndTimeUsec();
    if (endTimeUs != null) {
        request.setEndTime(endTimeUs);
    }
    int batchSize = requireNonNull(query.getBatchSize(), "Null batch size");
    request.setCount(batchSize);
    LogLevel minLogLevel = query.getMinLogLevel();
    if (minLogLevel != null) {
        request.setMinimumLogLevel(minLogLevel.ordinal());
    }
    request.setIncludeIncomplete(query.getIncludeIncomplete()).setIncludeAppLogs(query.getIncludeAppLogs());
    // Use a set to de-dupe entries.
    Set<LogQuery.Version> convertedModuleInfos = Sets.newTreeSet(LogQuery.VERSION_COMPARATOR);
    // NOTE: LogQuery enforces that at most one of these lists is populated.
    if (!query.getMajorVersionIds().isEmpty()) {
        for (String versionId : query.getMajorVersionIds()) {
            convertedModuleInfos.add(new LogQuery.Version("default", versionId));
        }
    } else if (!query.getVersions().isEmpty()) {
        convertedModuleInfos.addAll(query.getVersions());
    } else {
        String currentVersionId = getCurrentEnvironmentOrThrow().getVersionId();
        // Get just the major version id - for 1.2332 it is just '1'.
        String versionId = currentVersionId.split("\\.")[0];
        convertedModuleInfos.add(new LogQuery.Version(getCurrentEnvironmentOrThrow().getModuleId(), versionId));
    }
    for (LogQuery.Version moduleInfo : convertedModuleInfos) {
        LogModuleVersion.Builder requestModuleVersion = request.addModuleVersionBuilder();
        if (!moduleInfo.getModuleId().equals("default")) {
            requestModuleVersion.setModuleId(moduleInfo.getModuleId());
        }
        requestModuleVersion.setVersionId(moduleInfo.getVersionId());
    }
    for (String requestId : query.getRequestIds()) {
        request.addRequestId(ByteString.copyFromUtf8(requestId));
    }
    String offset = query.getOffset();
    if (offset != null) {
        request.setOffset(LogQueryResult.parseOffset(offset));
    }
    final LogQuery finalizedQuery = query;
    ApiProxy.ApiConfig apiConfig = new ApiProxy.ApiConfig();
    Future<byte[]> responseBytes = ApiProxy.makeAsyncCall(PACKAGE, READ_RPC_NAME, request.build().toByteArray(), apiConfig);
    return new FutureWrapper<byte[], LogQueryResult>(responseBytes) {

        @Override
        protected LogQueryResult wrap(byte @Nullable [] responseBytes) {
            try {
                LogReadResponse response = LogReadResponse.parseFrom(responseBytes, ExtensionRegistry.getEmptyRegistry());
                return new LogQueryResult(response, finalizedQuery);
            } catch (InvalidProtocolBufferException | UninitializedMessageException e) {
                throw new LogServiceException("Could not parse LogReadResponse", e);
            }
        }

        @Override
        protected Throwable convertException(Throwable cause) {
            if (cause instanceof ApiProxy.ApplicationException) {
                ApiProxy.ApplicationException e = (ApiProxy.ApplicationException) cause;
                ErrorCode errorCode = LogServiceError.ErrorCode.forNumber(e.getApplicationError());
                if (errorCode == LogServiceError.ErrorCode.INVALID_REQUEST) {
                    return new InvalidRequestException(e.getErrorDetail());
                }
                return new LogServiceException(e.getErrorDetail());
            }
            return cause;
        }
    };
}
Also used : ByteString(com.google.protobuf.ByteString) LogReadRequest(com.google.apphosting.api.logservice.LogServicePb.LogReadRequest) LogModuleVersion(com.google.apphosting.api.logservice.LogServicePb.LogModuleVersion) UninitializedMessageException(com.google.protobuf.UninitializedMessageException) ApiProxy(com.google.apphosting.api.ApiProxy) FutureWrapper(com.google.appengine.api.utils.FutureWrapper) InvalidProtocolBufferException(com.google.protobuf.InvalidProtocolBufferException) LogModuleVersion(com.google.apphosting.api.logservice.LogServicePb.LogModuleVersion) ErrorCode(com.google.apphosting.api.logservice.LogServicePb.LogServiceError.ErrorCode) LogReadResponse(com.google.apphosting.api.logservice.LogServicePb.LogReadResponse)

Aggregations

FutureWrapper (com.google.appengine.api.utils.FutureWrapper)1 ApiProxy (com.google.apphosting.api.ApiProxy)1 LogModuleVersion (com.google.apphosting.api.logservice.LogServicePb.LogModuleVersion)1 LogReadRequest (com.google.apphosting.api.logservice.LogServicePb.LogReadRequest)1 LogReadResponse (com.google.apphosting.api.logservice.LogServicePb.LogReadResponse)1 ErrorCode (com.google.apphosting.api.logservice.LogServicePb.LogServiceError.ErrorCode)1 ByteString (com.google.protobuf.ByteString)1 InvalidProtocolBufferException (com.google.protobuf.InvalidProtocolBufferException)1 UninitializedMessageException (com.google.protobuf.UninitializedMessageException)1