diff --git a/google-analytics-data/pom.xml b/google-analytics-data/pom.xml index 1c51b291..fbe83db3 100644 --- a/google-analytics-data/pom.xml +++ b/google-analytics-data/pom.xml @@ -62,6 +62,10 @@ com.google.api gax-grpc + + com.google.api + gax-httpjson + org.threeten threetenbp @@ -86,12 +90,24 @@ test + + com.google.api + gax + testlib + test + com.google.api gax-grpc testlib test + + com.google.api + gax-httpjson + testlib + test + diff --git a/google-analytics-data/src/main/java/com/google/analytics/data/v1alpha/AlphaAnalyticsDataClient.java b/google-analytics-data/src/main/java/com/google/analytics/data/v1alpha/AlphaAnalyticsDataClient.java index 908ec2a1..4962c6b9 100644 --- a/google-analytics-data/src/main/java/com/google/analytics/data/v1alpha/AlphaAnalyticsDataClient.java +++ b/google-analytics-data/src/main/java/com/google/analytics/data/v1alpha/AlphaAnalyticsDataClient.java @@ -103,6 +103,21 @@ * AlphaAnalyticsDataClient.create(alphaAnalyticsDataSettings); * } * + *

To use REST (HTTP1.1/JSON) transport (instead of gRPC) for sending and receiving requests over + * the wire: + * + *

{@code
+ * // This snippet has been automatically generated for illustrative purposes only.
+ * // It may require modifications to work in your environment.
+ * AlphaAnalyticsDataSettings alphaAnalyticsDataSettings =
+ *     AlphaAnalyticsDataSettings.newBuilder()
+ *         .setTransportChannelProvider(
+ *             AlphaAnalyticsDataSettings.defaultHttpJsonTransportProviderBuilder().build())
+ *         .build();
+ * AlphaAnalyticsDataClient alphaAnalyticsDataClient =
+ *     AlphaAnalyticsDataClient.create(alphaAnalyticsDataSettings);
+ * }
+ * *

Please refer to the GitHub repository's samples for more quickstart code snippets. */ @BetaApi diff --git a/google-analytics-data/src/main/java/com/google/analytics/data/v1alpha/AlphaAnalyticsDataSettings.java b/google-analytics-data/src/main/java/com/google/analytics/data/v1alpha/AlphaAnalyticsDataSettings.java index 12452b95..d5e7182c 100644 --- a/google-analytics-data/src/main/java/com/google/analytics/data/v1alpha/AlphaAnalyticsDataSettings.java +++ b/google-analytics-data/src/main/java/com/google/analytics/data/v1alpha/AlphaAnalyticsDataSettings.java @@ -22,6 +22,7 @@ import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider; +import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; @@ -101,11 +102,18 @@ public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilde return AlphaAnalyticsDataStubSettings.defaultCredentialsProviderBuilder(); } - /** Returns a builder for the default ChannelProvider for this service. */ + /** Returns a builder for the default gRPC ChannelProvider for this service. */ public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() { return AlphaAnalyticsDataStubSettings.defaultGrpcTransportProviderBuilder(); } + /** Returns a builder for the default REST ChannelProvider for this service. */ + @BetaApi + public static InstantiatingHttpJsonChannelProvider.Builder + defaultHttpJsonTransportProviderBuilder() { + return AlphaAnalyticsDataStubSettings.defaultHttpJsonTransportProviderBuilder(); + } + public static TransportChannelProvider defaultTransportChannelProvider() { return AlphaAnalyticsDataStubSettings.defaultTransportChannelProvider(); } @@ -115,11 +123,17 @@ public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuil return AlphaAnalyticsDataStubSettings.defaultApiClientHeaderProviderBuilder(); } - /** Returns a new builder for this class. */ + /** Returns a new gRPC builder for this class. */ public static Builder newBuilder() { return Builder.createDefault(); } + /** Returns a new REST builder for this class. */ + @BetaApi + public static Builder newHttpJsonBuilder() { + return Builder.createHttpJsonDefault(); + } + /** Returns a new builder for this class. */ public static Builder newBuilder(ClientContext clientContext) { return new Builder(clientContext); @@ -157,6 +171,11 @@ private static Builder createDefault() { return new Builder(AlphaAnalyticsDataStubSettings.newBuilder()); } + @BetaApi + private static Builder createHttpJsonDefault() { + return new Builder(AlphaAnalyticsDataStubSettings.newHttpJsonBuilder()); + } + public AlphaAnalyticsDataStubSettings.Builder getStubSettingsBuilder() { return ((AlphaAnalyticsDataStubSettings.Builder) getStubSettings()); } diff --git a/google-analytics-data/src/main/java/com/google/analytics/data/v1alpha/stub/AlphaAnalyticsDataStubSettings.java b/google-analytics-data/src/main/java/com/google/analytics/data/v1alpha/stub/AlphaAnalyticsDataStubSettings.java index 62618585..a775cee5 100644 --- a/google-analytics-data/src/main/java/com/google/analytics/data/v1alpha/stub/AlphaAnalyticsDataStubSettings.java +++ b/google-analytics-data/src/main/java/com/google/analytics/data/v1alpha/stub/AlphaAnalyticsDataStubSettings.java @@ -26,6 +26,9 @@ import com.google.api.gax.grpc.GaxGrpcProperties; import com.google.api.gax.grpc.GrpcTransportChannel; import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider; +import com.google.api.gax.httpjson.GaxHttpJsonProperties; +import com.google.api.gax.httpjson.HttpJsonTransportChannel; +import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.retrying.RetrySettings; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; @@ -102,6 +105,11 @@ public AlphaAnalyticsDataStub createStub() throws IOException { .equals(GrpcTransportChannel.getGrpcTransportName())) { return GrpcAlphaAnalyticsDataStub.create(this); } + if (getTransportChannelProvider() + .getTransportName() + .equals(HttpJsonTransportChannel.getHttpJsonTransportName())) { + return HttpJsonAlphaAnalyticsDataStub.create(this); + } throw new UnsupportedOperationException( String.format( "Transport not supported: %s", getTransportChannelProvider().getTransportName())); @@ -134,18 +142,25 @@ public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilde .setUseJwtAccessWithScope(true); } - /** Returns a builder for the default ChannelProvider for this service. */ + /** Returns a builder for the default gRPC ChannelProvider for this service. */ public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() { return InstantiatingGrpcChannelProvider.newBuilder() .setMaxInboundMessageSize(Integer.MAX_VALUE); } + /** Returns a builder for the default REST ChannelProvider for this service. */ + @BetaApi + public static InstantiatingHttpJsonChannelProvider.Builder + defaultHttpJsonTransportProviderBuilder() { + return InstantiatingHttpJsonChannelProvider.newBuilder(); + } + public static TransportChannelProvider defaultTransportChannelProvider() { return defaultGrpcTransportProviderBuilder().build(); } @BetaApi("The surface for customizing headers is not stable yet and may change in the future.") - public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() { + public static ApiClientHeaderProvider.Builder defaultGrpcApiClientHeaderProviderBuilder() { return ApiClientHeaderProvider.newBuilder() .setGeneratedLibToken( "gapic", GaxProperties.getLibraryVersion(AlphaAnalyticsDataStubSettings.class)) @@ -153,11 +168,30 @@ public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuil GaxGrpcProperties.getGrpcTokenName(), GaxGrpcProperties.getGrpcVersion()); } - /** Returns a new builder for this class. */ + @BetaApi("The surface for customizing headers is not stable yet and may change in the future.") + public static ApiClientHeaderProvider.Builder defaultHttpJsonApiClientHeaderProviderBuilder() { + return ApiClientHeaderProvider.newBuilder() + .setGeneratedLibToken( + "gapic", GaxProperties.getLibraryVersion(AlphaAnalyticsDataStubSettings.class)) + .setTransportToken( + GaxHttpJsonProperties.getHttpJsonTokenName(), + GaxHttpJsonProperties.getHttpJsonVersion()); + } + + public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() { + return AlphaAnalyticsDataStubSettings.defaultGrpcApiClientHeaderProviderBuilder(); + } + + /** Returns a new gRPC builder for this class. */ public static Builder newBuilder() { return Builder.createDefault(); } + /** Returns a new REST builder for this class. */ + public static Builder newHttpJsonBuilder() { + return Builder.createHttpJsonDefault(); + } + /** Returns a new builder for this class. */ public static Builder newBuilder(ClientContext clientContext) { return new Builder(clientContext); @@ -243,6 +277,19 @@ private static Builder createDefault() { return initDefaults(builder); } + private static Builder createHttpJsonDefault() { + Builder builder = new Builder(((ClientContext) null)); + + builder.setTransportChannelProvider(defaultHttpJsonTransportProviderBuilder().build()); + builder.setCredentialsProvider(defaultCredentialsProviderBuilder().build()); + builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); + builder.setEndpoint(getDefaultEndpoint()); + builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); + builder.setSwitchToMtlsEndpointAllowed(true); + + return initDefaults(builder); + } + private static Builder initDefaults(Builder builder) { builder .runFunnelReportSettings() diff --git a/google-analytics-data/src/main/java/com/google/analytics/data/v1alpha/stub/HttpJsonAlphaAnalyticsDataCallableFactory.java b/google-analytics-data/src/main/java/com/google/analytics/data/v1alpha/stub/HttpJsonAlphaAnalyticsDataCallableFactory.java new file mode 100644 index 00000000..0d45a48a --- /dev/null +++ b/google-analytics-data/src/main/java/com/google/analytics/data/v1alpha/stub/HttpJsonAlphaAnalyticsDataCallableFactory.java @@ -0,0 +1,105 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.analytics.data.v1alpha.stub; + +import com.google.api.core.BetaApi; +import com.google.api.gax.httpjson.HttpJsonCallSettings; +import com.google.api.gax.httpjson.HttpJsonCallableFactory; +import com.google.api.gax.httpjson.HttpJsonOperationSnapshotCallable; +import com.google.api.gax.httpjson.HttpJsonStubCallableFactory; +import com.google.api.gax.httpjson.longrunning.stub.OperationsStub; +import com.google.api.gax.rpc.BatchingCallSettings; +import com.google.api.gax.rpc.ClientContext; +import com.google.api.gax.rpc.OperationCallSettings; +import com.google.api.gax.rpc.OperationCallable; +import com.google.api.gax.rpc.PagedCallSettings; +import com.google.api.gax.rpc.ServerStreamingCallSettings; +import com.google.api.gax.rpc.ServerStreamingCallable; +import com.google.api.gax.rpc.UnaryCallSettings; +import com.google.api.gax.rpc.UnaryCallable; +import com.google.longrunning.Operation; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * REST callable factory implementation for the AlphaAnalyticsData service API. + * + *

This class is for advanced usage. + */ +@BetaApi +@Generated("by gapic-generator-java") +public class HttpJsonAlphaAnalyticsDataCallableFactory + implements HttpJsonStubCallableFactory { + + @Override + public UnaryCallable createUnaryCallable( + HttpJsonCallSettings httpJsonCallSettings, + UnaryCallSettings callSettings, + ClientContext clientContext) { + return HttpJsonCallableFactory.createUnaryCallable( + httpJsonCallSettings, callSettings, clientContext); + } + + @Override + public + UnaryCallable createPagedCallable( + HttpJsonCallSettings httpJsonCallSettings, + PagedCallSettings callSettings, + ClientContext clientContext) { + return HttpJsonCallableFactory.createPagedCallable( + httpJsonCallSettings, callSettings, clientContext); + } + + @Override + public UnaryCallable createBatchingCallable( + HttpJsonCallSettings httpJsonCallSettings, + BatchingCallSettings callSettings, + ClientContext clientContext) { + return HttpJsonCallableFactory.createBatchingCallable( + httpJsonCallSettings, callSettings, clientContext); + } + + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + @Override + public + OperationCallable createOperationCallable( + HttpJsonCallSettings httpJsonCallSettings, + OperationCallSettings callSettings, + ClientContext clientContext, + OperationsStub operationsStub) { + UnaryCallable innerCallable = + HttpJsonCallableFactory.createBaseUnaryCallable( + httpJsonCallSettings, callSettings.getInitialCallSettings(), clientContext); + HttpJsonOperationSnapshotCallable initialCallable = + new HttpJsonOperationSnapshotCallable( + innerCallable, + httpJsonCallSettings.getMethodDescriptor().getOperationSnapshotFactory()); + return HttpJsonCallableFactory.createOperationCallable( + callSettings, clientContext, operationsStub.longRunningClient(), initialCallable); + } + + @Override + public + ServerStreamingCallable createServerStreamingCallable( + HttpJsonCallSettings httpJsonCallSettings, + ServerStreamingCallSettings callSettings, + ClientContext clientContext) { + return HttpJsonCallableFactory.createServerStreamingCallable( + httpJsonCallSettings, callSettings, clientContext); + } +} diff --git a/google-analytics-data/src/main/java/com/google/analytics/data/v1alpha/stub/HttpJsonAlphaAnalyticsDataStub.java b/google-analytics-data/src/main/java/com/google/analytics/data/v1alpha/stub/HttpJsonAlphaAnalyticsDataStub.java new file mode 100644 index 00000000..3de65b61 --- /dev/null +++ b/google-analytics-data/src/main/java/com/google/analytics/data/v1alpha/stub/HttpJsonAlphaAnalyticsDataStub.java @@ -0,0 +1,198 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.analytics.data.v1alpha.stub; + +import com.google.analytics.data.v1alpha.RunFunnelReportRequest; +import com.google.analytics.data.v1alpha.RunFunnelReportResponse; +import com.google.api.core.BetaApi; +import com.google.api.core.InternalApi; +import com.google.api.gax.core.BackgroundResource; +import com.google.api.gax.core.BackgroundResourceAggregation; +import com.google.api.gax.httpjson.ApiMethodDescriptor; +import com.google.api.gax.httpjson.HttpJsonCallSettings; +import com.google.api.gax.httpjson.HttpJsonStubCallableFactory; +import com.google.api.gax.httpjson.ProtoMessageRequestFormatter; +import com.google.api.gax.httpjson.ProtoMessageResponseParser; +import com.google.api.gax.httpjson.ProtoRestSerializer; +import com.google.api.gax.rpc.ClientContext; +import com.google.api.gax.rpc.UnaryCallable; +import com.google.protobuf.TypeRegistry; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.TimeUnit; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * REST stub implementation for the AlphaAnalyticsData service API. + * + *

This class is for advanced usage and reflects the underlying API directly. + */ +@BetaApi +@Generated("by gapic-generator-java") +public class HttpJsonAlphaAnalyticsDataStub extends AlphaAnalyticsDataStub { + private static final TypeRegistry typeRegistry = TypeRegistry.newBuilder().build(); + + private static final ApiMethodDescriptor + runFunnelReportMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.analytics.data.v1alpha.AlphaAnalyticsData/RunFunnelReport") + .setHttpMethod("POST") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1alpha/{property=properties/*}:runFunnelReport", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam(fields, "property", request.getProperty()); + return fields; + }) + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + return fields; + }) + .setRequestBodyExtractor( + request -> + ProtoRestSerializer.create() + .toBody("*", request.toBuilder().clearProperty().build())) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(RunFunnelReportResponse.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private final UnaryCallable + runFunnelReportCallable; + + private final BackgroundResource backgroundResources; + private final HttpJsonStubCallableFactory callableFactory; + + public static final HttpJsonAlphaAnalyticsDataStub create(AlphaAnalyticsDataStubSettings settings) + throws IOException { + return new HttpJsonAlphaAnalyticsDataStub(settings, ClientContext.create(settings)); + } + + public static final HttpJsonAlphaAnalyticsDataStub create(ClientContext clientContext) + throws IOException { + return new HttpJsonAlphaAnalyticsDataStub( + AlphaAnalyticsDataStubSettings.newHttpJsonBuilder().build(), clientContext); + } + + public static final HttpJsonAlphaAnalyticsDataStub create( + ClientContext clientContext, HttpJsonStubCallableFactory callableFactory) throws IOException { + return new HttpJsonAlphaAnalyticsDataStub( + AlphaAnalyticsDataStubSettings.newHttpJsonBuilder().build(), + clientContext, + callableFactory); + } + + /** + * Constructs an instance of HttpJsonAlphaAnalyticsDataStub, using the given settings. This is + * protected so that it is easy to make a subclass, but otherwise, the static factory methods + * should be preferred. + */ + protected HttpJsonAlphaAnalyticsDataStub( + AlphaAnalyticsDataStubSettings settings, ClientContext clientContext) throws IOException { + this(settings, clientContext, new HttpJsonAlphaAnalyticsDataCallableFactory()); + } + + /** + * Constructs an instance of HttpJsonAlphaAnalyticsDataStub, using the given settings. This is + * protected so that it is easy to make a subclass, but otherwise, the static factory methods + * should be preferred. + */ + protected HttpJsonAlphaAnalyticsDataStub( + AlphaAnalyticsDataStubSettings settings, + ClientContext clientContext, + HttpJsonStubCallableFactory callableFactory) + throws IOException { + this.callableFactory = callableFactory; + + HttpJsonCallSettings + runFunnelReportTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(runFunnelReportMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + + this.runFunnelReportCallable = + callableFactory.createUnaryCallable( + runFunnelReportTransportSettings, settings.runFunnelReportSettings(), clientContext); + + this.backgroundResources = + new BackgroundResourceAggregation(clientContext.getBackgroundResources()); + } + + @InternalApi + public static List getMethodDescriptors() { + List methodDescriptors = new ArrayList<>(); + methodDescriptors.add(runFunnelReportMethodDescriptor); + return methodDescriptors; + } + + @Override + public UnaryCallable runFunnelReportCallable() { + return runFunnelReportCallable; + } + + @Override + public final void close() { + try { + backgroundResources.close(); + } catch (RuntimeException e) { + throw e; + } catch (Exception e) { + throw new IllegalStateException("Failed to close resource", e); + } + } + + @Override + public void shutdown() { + backgroundResources.shutdown(); + } + + @Override + public boolean isShutdown() { + return backgroundResources.isShutdown(); + } + + @Override + public boolean isTerminated() { + return backgroundResources.isTerminated(); + } + + @Override + public void shutdownNow() { + backgroundResources.shutdownNow(); + } + + @Override + public boolean awaitTermination(long duration, TimeUnit unit) throws InterruptedException { + return backgroundResources.awaitTermination(duration, unit); + } +} diff --git a/google-analytics-data/src/main/java/com/google/analytics/data/v1beta/BetaAnalyticsDataClient.java b/google-analytics-data/src/main/java/com/google/analytics/data/v1beta/BetaAnalyticsDataClient.java index 5448f0d1..5f9178fc 100644 --- a/google-analytics-data/src/main/java/com/google/analytics/data/v1beta/BetaAnalyticsDataClient.java +++ b/google-analytics-data/src/main/java/com/google/analytics/data/v1beta/BetaAnalyticsDataClient.java @@ -108,6 +108,21 @@ * BetaAnalyticsDataClient.create(betaAnalyticsDataSettings); * } * + *

To use REST (HTTP1.1/JSON) transport (instead of gRPC) for sending and receiving requests over + * the wire: + * + *

{@code
+ * // This snippet has been automatically generated for illustrative purposes only.
+ * // It may require modifications to work in your environment.
+ * BetaAnalyticsDataSettings betaAnalyticsDataSettings =
+ *     BetaAnalyticsDataSettings.newBuilder()
+ *         .setTransportChannelProvider(
+ *             BetaAnalyticsDataSettings.defaultHttpJsonTransportProviderBuilder().build())
+ *         .build();
+ * BetaAnalyticsDataClient betaAnalyticsDataClient =
+ *     BetaAnalyticsDataClient.create(betaAnalyticsDataSettings);
+ * }
+ * *

Please refer to the GitHub repository's samples for more quickstart code snippets. */ @BetaApi diff --git a/google-analytics-data/src/main/java/com/google/analytics/data/v1beta/BetaAnalyticsDataSettings.java b/google-analytics-data/src/main/java/com/google/analytics/data/v1beta/BetaAnalyticsDataSettings.java index bc1d0cee..f23e6db9 100644 --- a/google-analytics-data/src/main/java/com/google/analytics/data/v1beta/BetaAnalyticsDataSettings.java +++ b/google-analytics-data/src/main/java/com/google/analytics/data/v1beta/BetaAnalyticsDataSettings.java @@ -22,6 +22,7 @@ import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider; +import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; @@ -133,11 +134,18 @@ public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilde return BetaAnalyticsDataStubSettings.defaultCredentialsProviderBuilder(); } - /** Returns a builder for the default ChannelProvider for this service. */ + /** Returns a builder for the default gRPC ChannelProvider for this service. */ public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() { return BetaAnalyticsDataStubSettings.defaultGrpcTransportProviderBuilder(); } + /** Returns a builder for the default REST ChannelProvider for this service. */ + @BetaApi + public static InstantiatingHttpJsonChannelProvider.Builder + defaultHttpJsonTransportProviderBuilder() { + return BetaAnalyticsDataStubSettings.defaultHttpJsonTransportProviderBuilder(); + } + public static TransportChannelProvider defaultTransportChannelProvider() { return BetaAnalyticsDataStubSettings.defaultTransportChannelProvider(); } @@ -147,11 +155,17 @@ public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuil return BetaAnalyticsDataStubSettings.defaultApiClientHeaderProviderBuilder(); } - /** Returns a new builder for this class. */ + /** Returns a new gRPC builder for this class. */ public static Builder newBuilder() { return Builder.createDefault(); } + /** Returns a new REST builder for this class. */ + @BetaApi + public static Builder newHttpJsonBuilder() { + return Builder.createHttpJsonDefault(); + } + /** Returns a new builder for this class. */ public static Builder newBuilder(ClientContext clientContext) { return new Builder(clientContext); @@ -189,6 +203,11 @@ private static Builder createDefault() { return new Builder(BetaAnalyticsDataStubSettings.newBuilder()); } + @BetaApi + private static Builder createHttpJsonDefault() { + return new Builder(BetaAnalyticsDataStubSettings.newHttpJsonBuilder()); + } + public BetaAnalyticsDataStubSettings.Builder getStubSettingsBuilder() { return ((BetaAnalyticsDataStubSettings.Builder) getStubSettings()); } diff --git a/google-analytics-data/src/main/java/com/google/analytics/data/v1beta/stub/BetaAnalyticsDataStubSettings.java b/google-analytics-data/src/main/java/com/google/analytics/data/v1beta/stub/BetaAnalyticsDataStubSettings.java index 55706fd6..42182f46 100644 --- a/google-analytics-data/src/main/java/com/google/analytics/data/v1beta/stub/BetaAnalyticsDataStubSettings.java +++ b/google-analytics-data/src/main/java/com/google/analytics/data/v1beta/stub/BetaAnalyticsDataStubSettings.java @@ -38,6 +38,9 @@ import com.google.api.gax.grpc.GaxGrpcProperties; import com.google.api.gax.grpc.GrpcTransportChannel; import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider; +import com.google.api.gax.httpjson.GaxHttpJsonProperties; +import com.google.api.gax.httpjson.HttpJsonTransportChannel; +import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.retrying.RetrySettings; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; @@ -157,6 +160,11 @@ public BetaAnalyticsDataStub createStub() throws IOException { .equals(GrpcTransportChannel.getGrpcTransportName())) { return GrpcBetaAnalyticsDataStub.create(this); } + if (getTransportChannelProvider() + .getTransportName() + .equals(HttpJsonTransportChannel.getHttpJsonTransportName())) { + return HttpJsonBetaAnalyticsDataStub.create(this); + } throw new UnsupportedOperationException( String.format( "Transport not supported: %s", getTransportChannelProvider().getTransportName())); @@ -189,18 +197,25 @@ public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilde .setUseJwtAccessWithScope(true); } - /** Returns a builder for the default ChannelProvider for this service. */ + /** Returns a builder for the default gRPC ChannelProvider for this service. */ public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() { return InstantiatingGrpcChannelProvider.newBuilder() .setMaxInboundMessageSize(Integer.MAX_VALUE); } + /** Returns a builder for the default REST ChannelProvider for this service. */ + @BetaApi + public static InstantiatingHttpJsonChannelProvider.Builder + defaultHttpJsonTransportProviderBuilder() { + return InstantiatingHttpJsonChannelProvider.newBuilder(); + } + public static TransportChannelProvider defaultTransportChannelProvider() { return defaultGrpcTransportProviderBuilder().build(); } @BetaApi("The surface for customizing headers is not stable yet and may change in the future.") - public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() { + public static ApiClientHeaderProvider.Builder defaultGrpcApiClientHeaderProviderBuilder() { return ApiClientHeaderProvider.newBuilder() .setGeneratedLibToken( "gapic", GaxProperties.getLibraryVersion(BetaAnalyticsDataStubSettings.class)) @@ -208,11 +223,30 @@ public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuil GaxGrpcProperties.getGrpcTokenName(), GaxGrpcProperties.getGrpcVersion()); } - /** Returns a new builder for this class. */ + @BetaApi("The surface for customizing headers is not stable yet and may change in the future.") + public static ApiClientHeaderProvider.Builder defaultHttpJsonApiClientHeaderProviderBuilder() { + return ApiClientHeaderProvider.newBuilder() + .setGeneratedLibToken( + "gapic", GaxProperties.getLibraryVersion(BetaAnalyticsDataStubSettings.class)) + .setTransportToken( + GaxHttpJsonProperties.getHttpJsonTokenName(), + GaxHttpJsonProperties.getHttpJsonVersion()); + } + + public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() { + return BetaAnalyticsDataStubSettings.defaultGrpcApiClientHeaderProviderBuilder(); + } + + /** Returns a new gRPC builder for this class. */ public static Builder newBuilder() { return Builder.createDefault(); } + /** Returns a new REST builder for this class. */ + public static Builder newHttpJsonBuilder() { + return Builder.createHttpJsonDefault(); + } + /** Returns a new builder for this class. */ public static Builder newBuilder(ClientContext clientContext) { return new Builder(clientContext); @@ -354,6 +388,19 @@ private static Builder createDefault() { return initDefaults(builder); } + private static Builder createHttpJsonDefault() { + Builder builder = new Builder(((ClientContext) null)); + + builder.setTransportChannelProvider(defaultHttpJsonTransportProviderBuilder().build()); + builder.setCredentialsProvider(defaultCredentialsProviderBuilder().build()); + builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); + builder.setEndpoint(getDefaultEndpoint()); + builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); + builder.setSwitchToMtlsEndpointAllowed(true); + + return initDefaults(builder); + } + private static Builder initDefaults(Builder builder) { builder .runReportSettings() diff --git a/google-analytics-data/src/main/java/com/google/analytics/data/v1beta/stub/HttpJsonBetaAnalyticsDataCallableFactory.java b/google-analytics-data/src/main/java/com/google/analytics/data/v1beta/stub/HttpJsonBetaAnalyticsDataCallableFactory.java new file mode 100644 index 00000000..e5094846 --- /dev/null +++ b/google-analytics-data/src/main/java/com/google/analytics/data/v1beta/stub/HttpJsonBetaAnalyticsDataCallableFactory.java @@ -0,0 +1,105 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.analytics.data.v1beta.stub; + +import com.google.api.core.BetaApi; +import com.google.api.gax.httpjson.HttpJsonCallSettings; +import com.google.api.gax.httpjson.HttpJsonCallableFactory; +import com.google.api.gax.httpjson.HttpJsonOperationSnapshotCallable; +import com.google.api.gax.httpjson.HttpJsonStubCallableFactory; +import com.google.api.gax.httpjson.longrunning.stub.OperationsStub; +import com.google.api.gax.rpc.BatchingCallSettings; +import com.google.api.gax.rpc.ClientContext; +import com.google.api.gax.rpc.OperationCallSettings; +import com.google.api.gax.rpc.OperationCallable; +import com.google.api.gax.rpc.PagedCallSettings; +import com.google.api.gax.rpc.ServerStreamingCallSettings; +import com.google.api.gax.rpc.ServerStreamingCallable; +import com.google.api.gax.rpc.UnaryCallSettings; +import com.google.api.gax.rpc.UnaryCallable; +import com.google.longrunning.Operation; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * REST callable factory implementation for the BetaAnalyticsData service API. + * + *

This class is for advanced usage. + */ +@BetaApi +@Generated("by gapic-generator-java") +public class HttpJsonBetaAnalyticsDataCallableFactory + implements HttpJsonStubCallableFactory { + + @Override + public UnaryCallable createUnaryCallable( + HttpJsonCallSettings httpJsonCallSettings, + UnaryCallSettings callSettings, + ClientContext clientContext) { + return HttpJsonCallableFactory.createUnaryCallable( + httpJsonCallSettings, callSettings, clientContext); + } + + @Override + public + UnaryCallable createPagedCallable( + HttpJsonCallSettings httpJsonCallSettings, + PagedCallSettings callSettings, + ClientContext clientContext) { + return HttpJsonCallableFactory.createPagedCallable( + httpJsonCallSettings, callSettings, clientContext); + } + + @Override + public UnaryCallable createBatchingCallable( + HttpJsonCallSettings httpJsonCallSettings, + BatchingCallSettings callSettings, + ClientContext clientContext) { + return HttpJsonCallableFactory.createBatchingCallable( + httpJsonCallSettings, callSettings, clientContext); + } + + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + @Override + public + OperationCallable createOperationCallable( + HttpJsonCallSettings httpJsonCallSettings, + OperationCallSettings callSettings, + ClientContext clientContext, + OperationsStub operationsStub) { + UnaryCallable innerCallable = + HttpJsonCallableFactory.createBaseUnaryCallable( + httpJsonCallSettings, callSettings.getInitialCallSettings(), clientContext); + HttpJsonOperationSnapshotCallable initialCallable = + new HttpJsonOperationSnapshotCallable( + innerCallable, + httpJsonCallSettings.getMethodDescriptor().getOperationSnapshotFactory()); + return HttpJsonCallableFactory.createOperationCallable( + callSettings, clientContext, operationsStub.longRunningClient(), initialCallable); + } + + @Override + public + ServerStreamingCallable createServerStreamingCallable( + HttpJsonCallSettings httpJsonCallSettings, + ServerStreamingCallSettings callSettings, + ClientContext clientContext) { + return HttpJsonCallableFactory.createServerStreamingCallable( + httpJsonCallSettings, callSettings, clientContext); + } +} diff --git a/google-analytics-data/src/main/java/com/google/analytics/data/v1beta/stub/HttpJsonBetaAnalyticsDataStub.java b/google-analytics-data/src/main/java/com/google/analytics/data/v1beta/stub/HttpJsonBetaAnalyticsDataStub.java new file mode 100644 index 00000000..3f13d461 --- /dev/null +++ b/google-analytics-data/src/main/java/com/google/analytics/data/v1beta/stub/HttpJsonBetaAnalyticsDataStub.java @@ -0,0 +1,532 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.analytics.data.v1beta.stub; + +import com.google.analytics.data.v1beta.BatchRunPivotReportsRequest; +import com.google.analytics.data.v1beta.BatchRunPivotReportsResponse; +import com.google.analytics.data.v1beta.BatchRunReportsRequest; +import com.google.analytics.data.v1beta.BatchRunReportsResponse; +import com.google.analytics.data.v1beta.CheckCompatibilityRequest; +import com.google.analytics.data.v1beta.CheckCompatibilityResponse; +import com.google.analytics.data.v1beta.GetMetadataRequest; +import com.google.analytics.data.v1beta.Metadata; +import com.google.analytics.data.v1beta.RunPivotReportRequest; +import com.google.analytics.data.v1beta.RunPivotReportResponse; +import com.google.analytics.data.v1beta.RunRealtimeReportRequest; +import com.google.analytics.data.v1beta.RunRealtimeReportResponse; +import com.google.analytics.data.v1beta.RunReportRequest; +import com.google.analytics.data.v1beta.RunReportResponse; +import com.google.api.core.BetaApi; +import com.google.api.core.InternalApi; +import com.google.api.gax.core.BackgroundResource; +import com.google.api.gax.core.BackgroundResourceAggregation; +import com.google.api.gax.httpjson.ApiMethodDescriptor; +import com.google.api.gax.httpjson.HttpJsonCallSettings; +import com.google.api.gax.httpjson.HttpJsonStubCallableFactory; +import com.google.api.gax.httpjson.ProtoMessageRequestFormatter; +import com.google.api.gax.httpjson.ProtoMessageResponseParser; +import com.google.api.gax.httpjson.ProtoRestSerializer; +import com.google.api.gax.rpc.ClientContext; +import com.google.api.gax.rpc.UnaryCallable; +import com.google.protobuf.TypeRegistry; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.TimeUnit; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * REST stub implementation for the BetaAnalyticsData service API. + * + *

This class is for advanced usage and reflects the underlying API directly. + */ +@BetaApi +@Generated("by gapic-generator-java") +public class HttpJsonBetaAnalyticsDataStub extends BetaAnalyticsDataStub { + private static final TypeRegistry typeRegistry = TypeRegistry.newBuilder().build(); + + private static final ApiMethodDescriptor + runReportMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.analytics.data.v1beta.BetaAnalyticsData/RunReport") + .setHttpMethod("POST") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1beta/{property=properties/*}:runReport", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam(fields, "property", request.getProperty()); + return fields; + }) + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + return fields; + }) + .setRequestBodyExtractor( + request -> + ProtoRestSerializer.create() + .toBody("*", request.toBuilder().clearProperty().build())) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(RunReportResponse.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private static final ApiMethodDescriptor + runPivotReportMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.analytics.data.v1beta.BetaAnalyticsData/RunPivotReport") + .setHttpMethod("POST") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1beta/{property=properties/*}:runPivotReport", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam(fields, "property", request.getProperty()); + return fields; + }) + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + return fields; + }) + .setRequestBodyExtractor( + request -> + ProtoRestSerializer.create() + .toBody("*", request.toBuilder().clearProperty().build())) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(RunPivotReportResponse.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private static final ApiMethodDescriptor + batchRunReportsMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.analytics.data.v1beta.BetaAnalyticsData/BatchRunReports") + .setHttpMethod("POST") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1beta/{property=properties/*}:batchRunReports", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam(fields, "property", request.getProperty()); + return fields; + }) + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + return fields; + }) + .setRequestBodyExtractor( + request -> + ProtoRestSerializer.create() + .toBody("*", request.toBuilder().clearProperty().build())) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(BatchRunReportsResponse.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private static final ApiMethodDescriptor< + BatchRunPivotReportsRequest, BatchRunPivotReportsResponse> + batchRunPivotReportsMethodDescriptor = + ApiMethodDescriptor + .newBuilder() + .setFullMethodName( + "google.analytics.data.v1beta.BetaAnalyticsData/BatchRunPivotReports") + .setHttpMethod("POST") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1beta/{property=properties/*}:batchRunPivotReports", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam(fields, "property", request.getProperty()); + return fields; + }) + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + return fields; + }) + .setRequestBodyExtractor( + request -> + ProtoRestSerializer.create() + .toBody("*", request.toBuilder().clearProperty().build())) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(BatchRunPivotReportsResponse.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private static final ApiMethodDescriptor + getMetadataMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.analytics.data.v1beta.BetaAnalyticsData/GetMetadata") + .setHttpMethod("GET") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1beta/{name=properties/*/metadata}", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam(fields, "name", request.getName()); + return fields; + }) + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + return fields; + }) + .setRequestBodyExtractor(request -> null) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(Metadata.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private static final ApiMethodDescriptor + runRealtimeReportMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.analytics.data.v1beta.BetaAnalyticsData/RunRealtimeReport") + .setHttpMethod("POST") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1beta/{property=properties/*}:runRealtimeReport", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam(fields, "property", request.getProperty()); + return fields; + }) + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + return fields; + }) + .setRequestBodyExtractor( + request -> + ProtoRestSerializer.create() + .toBody("*", request.toBuilder().clearProperty().build())) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(RunRealtimeReportResponse.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private static final ApiMethodDescriptor + checkCompatibilityMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName( + "google.analytics.data.v1beta.BetaAnalyticsData/CheckCompatibility") + .setHttpMethod("POST") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1beta/{property=properties/*}:checkCompatibility", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam(fields, "property", request.getProperty()); + return fields; + }) + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + return fields; + }) + .setRequestBodyExtractor( + request -> + ProtoRestSerializer.create() + .toBody("*", request.toBuilder().clearProperty().build())) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(CheckCompatibilityResponse.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private final UnaryCallable runReportCallable; + private final UnaryCallable runPivotReportCallable; + private final UnaryCallable + batchRunReportsCallable; + private final UnaryCallable + batchRunPivotReportsCallable; + private final UnaryCallable getMetadataCallable; + private final UnaryCallable + runRealtimeReportCallable; + private final UnaryCallable + checkCompatibilityCallable; + + private final BackgroundResource backgroundResources; + private final HttpJsonStubCallableFactory callableFactory; + + public static final HttpJsonBetaAnalyticsDataStub create(BetaAnalyticsDataStubSettings settings) + throws IOException { + return new HttpJsonBetaAnalyticsDataStub(settings, ClientContext.create(settings)); + } + + public static final HttpJsonBetaAnalyticsDataStub create(ClientContext clientContext) + throws IOException { + return new HttpJsonBetaAnalyticsDataStub( + BetaAnalyticsDataStubSettings.newHttpJsonBuilder().build(), clientContext); + } + + public static final HttpJsonBetaAnalyticsDataStub create( + ClientContext clientContext, HttpJsonStubCallableFactory callableFactory) throws IOException { + return new HttpJsonBetaAnalyticsDataStub( + BetaAnalyticsDataStubSettings.newHttpJsonBuilder().build(), clientContext, callableFactory); + } + + /** + * Constructs an instance of HttpJsonBetaAnalyticsDataStub, using the given settings. This is + * protected so that it is easy to make a subclass, but otherwise, the static factory methods + * should be preferred. + */ + protected HttpJsonBetaAnalyticsDataStub( + BetaAnalyticsDataStubSettings settings, ClientContext clientContext) throws IOException { + this(settings, clientContext, new HttpJsonBetaAnalyticsDataCallableFactory()); + } + + /** + * Constructs an instance of HttpJsonBetaAnalyticsDataStub, using the given settings. This is + * protected so that it is easy to make a subclass, but otherwise, the static factory methods + * should be preferred. + */ + protected HttpJsonBetaAnalyticsDataStub( + BetaAnalyticsDataStubSettings settings, + ClientContext clientContext, + HttpJsonStubCallableFactory callableFactory) + throws IOException { + this.callableFactory = callableFactory; + + HttpJsonCallSettings runReportTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(runReportMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + HttpJsonCallSettings + runPivotReportTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(runPivotReportMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + HttpJsonCallSettings + batchRunReportsTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(batchRunReportsMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + HttpJsonCallSettings + batchRunPivotReportsTransportSettings = + HttpJsonCallSettings + .newBuilder() + .setMethodDescriptor(batchRunPivotReportsMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + HttpJsonCallSettings getMetadataTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(getMetadataMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + HttpJsonCallSettings + runRealtimeReportTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(runRealtimeReportMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + HttpJsonCallSettings + checkCompatibilityTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(checkCompatibilityMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + + this.runReportCallable = + callableFactory.createUnaryCallable( + runReportTransportSettings, settings.runReportSettings(), clientContext); + this.runPivotReportCallable = + callableFactory.createUnaryCallable( + runPivotReportTransportSettings, settings.runPivotReportSettings(), clientContext); + this.batchRunReportsCallable = + callableFactory.createUnaryCallable( + batchRunReportsTransportSettings, settings.batchRunReportsSettings(), clientContext); + this.batchRunPivotReportsCallable = + callableFactory.createUnaryCallable( + batchRunPivotReportsTransportSettings, + settings.batchRunPivotReportsSettings(), + clientContext); + this.getMetadataCallable = + callableFactory.createUnaryCallable( + getMetadataTransportSettings, settings.getMetadataSettings(), clientContext); + this.runRealtimeReportCallable = + callableFactory.createUnaryCallable( + runRealtimeReportTransportSettings, + settings.runRealtimeReportSettings(), + clientContext); + this.checkCompatibilityCallable = + callableFactory.createUnaryCallable( + checkCompatibilityTransportSettings, + settings.checkCompatibilitySettings(), + clientContext); + + this.backgroundResources = + new BackgroundResourceAggregation(clientContext.getBackgroundResources()); + } + + @InternalApi + public static List getMethodDescriptors() { + List methodDescriptors = new ArrayList<>(); + methodDescriptors.add(runReportMethodDescriptor); + methodDescriptors.add(runPivotReportMethodDescriptor); + methodDescriptors.add(batchRunReportsMethodDescriptor); + methodDescriptors.add(batchRunPivotReportsMethodDescriptor); + methodDescriptors.add(getMetadataMethodDescriptor); + methodDescriptors.add(runRealtimeReportMethodDescriptor); + methodDescriptors.add(checkCompatibilityMethodDescriptor); + return methodDescriptors; + } + + @Override + public UnaryCallable runReportCallable() { + return runReportCallable; + } + + @Override + public UnaryCallable runPivotReportCallable() { + return runPivotReportCallable; + } + + @Override + public UnaryCallable batchRunReportsCallable() { + return batchRunReportsCallable; + } + + @Override + public UnaryCallable + batchRunPivotReportsCallable() { + return batchRunPivotReportsCallable; + } + + @Override + public UnaryCallable getMetadataCallable() { + return getMetadataCallable; + } + + @Override + public UnaryCallable + runRealtimeReportCallable() { + return runRealtimeReportCallable; + } + + @Override + public UnaryCallable + checkCompatibilityCallable() { + return checkCompatibilityCallable; + } + + @Override + public final void close() { + try { + backgroundResources.close(); + } catch (RuntimeException e) { + throw e; + } catch (Exception e) { + throw new IllegalStateException("Failed to close resource", e); + } + } + + @Override + public void shutdown() { + backgroundResources.shutdown(); + } + + @Override + public boolean isShutdown() { + return backgroundResources.isShutdown(); + } + + @Override + public boolean isTerminated() { + return backgroundResources.isTerminated(); + } + + @Override + public void shutdownNow() { + backgroundResources.shutdownNow(); + } + + @Override + public boolean awaitTermination(long duration, TimeUnit unit) throws InterruptedException { + return backgroundResources.awaitTermination(duration, unit); + } +} diff --git a/google-analytics-data/src/test/java/com/google/analytics/data/v1alpha/AlphaAnalyticsDataClientHttpJsonTest.java b/google-analytics-data/src/test/java/com/google/analytics/data/v1alpha/AlphaAnalyticsDataClientHttpJsonTest.java new file mode 100644 index 00000000..b2d7572d --- /dev/null +++ b/google-analytics-data/src/test/java/com/google/analytics/data/v1alpha/AlphaAnalyticsDataClientHttpJsonTest.java @@ -0,0 +1,143 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.analytics.data.v1alpha; + +import com.google.analytics.data.v1alpha.stub.HttpJsonAlphaAnalyticsDataStub; +import com.google.api.gax.core.NoCredentialsProvider; +import com.google.api.gax.httpjson.GaxHttpJsonProperties; +import com.google.api.gax.httpjson.testing.MockHttpService; +import com.google.api.gax.rpc.ApiClientHeaderProvider; +import com.google.api.gax.rpc.ApiException; +import com.google.api.gax.rpc.ApiExceptionFactory; +import com.google.api.gax.rpc.InvalidArgumentException; +import com.google.api.gax.rpc.StatusCode; +import com.google.api.gax.rpc.testing.FakeStatusCode; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import javax.annotation.Generated; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +@Generated("by gapic-generator-java") +public class AlphaAnalyticsDataClientHttpJsonTest { + private static MockHttpService mockService; + private static AlphaAnalyticsDataClient client; + + @BeforeClass + public static void startStaticServer() throws IOException { + mockService = + new MockHttpService( + HttpJsonAlphaAnalyticsDataStub.getMethodDescriptors(), + AlphaAnalyticsDataSettings.getDefaultEndpoint()); + AlphaAnalyticsDataSettings settings = + AlphaAnalyticsDataSettings.newHttpJsonBuilder() + .setTransportChannelProvider( + AlphaAnalyticsDataSettings.defaultHttpJsonTransportProviderBuilder() + .setHttpTransport(mockService) + .build()) + .setCredentialsProvider(NoCredentialsProvider.create()) + .build(); + client = AlphaAnalyticsDataClient.create(settings); + } + + @AfterClass + public static void stopServer() { + client.close(); + } + + @Before + public void setUp() {} + + @After + public void tearDown() throws Exception { + mockService.reset(); + } + + @Test + public void runFunnelReportTest() throws Exception { + RunFunnelReportResponse expectedResponse = + RunFunnelReportResponse.newBuilder() + .setFunnelTable(FunnelSubReport.newBuilder().build()) + .setFunnelVisualization(FunnelSubReport.newBuilder().build()) + .setPropertyQuota(PropertyQuota.newBuilder().build()) + .setKind("kind3292052") + .build(); + mockService.addResponse(expectedResponse); + + RunFunnelReportRequest request = + RunFunnelReportRequest.newBuilder() + .setProperty("properties/propertie-2179") + .addAllDateRanges(new ArrayList()) + .setFunnel(Funnel.newBuilder().build()) + .setFunnelBreakdown(FunnelBreakdown.newBuilder().build()) + .setFunnelNextAction(FunnelNextAction.newBuilder().build()) + .addAllSegments(new ArrayList()) + .setLimit(102976443) + .setDimensionFilter(FilterExpression.newBuilder().build()) + .setReturnPropertyQuota(true) + .build(); + + RunFunnelReportResponse actualResponse = client.runFunnelReport(request); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void runFunnelReportExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + RunFunnelReportRequest request = + RunFunnelReportRequest.newBuilder() + .setProperty("properties/propertie-2179") + .addAllDateRanges(new ArrayList()) + .setFunnel(Funnel.newBuilder().build()) + .setFunnelBreakdown(FunnelBreakdown.newBuilder().build()) + .setFunnelNextAction(FunnelNextAction.newBuilder().build()) + .addAllSegments(new ArrayList()) + .setLimit(102976443) + .setDimensionFilter(FilterExpression.newBuilder().build()) + .setReturnPropertyQuota(true) + .build(); + client.runFunnelReport(request); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } +} diff --git a/google-analytics-data/src/test/java/com/google/analytics/data/v1beta/BetaAnalyticsDataClientHttpJsonTest.java b/google-analytics-data/src/test/java/com/google/analytics/data/v1beta/BetaAnalyticsDataClientHttpJsonTest.java new file mode 100644 index 00000000..0d070d5c --- /dev/null +++ b/google-analytics-data/src/test/java/com/google/analytics/data/v1beta/BetaAnalyticsDataClientHttpJsonTest.java @@ -0,0 +1,571 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.analytics.data.v1beta; + +import com.google.analytics.data.v1beta.stub.HttpJsonBetaAnalyticsDataStub; +import com.google.api.gax.core.NoCredentialsProvider; +import com.google.api.gax.httpjson.GaxHttpJsonProperties; +import com.google.api.gax.httpjson.testing.MockHttpService; +import com.google.api.gax.rpc.ApiClientHeaderProvider; +import com.google.api.gax.rpc.ApiException; +import com.google.api.gax.rpc.ApiExceptionFactory; +import com.google.api.gax.rpc.InvalidArgumentException; +import com.google.api.gax.rpc.StatusCode; +import com.google.api.gax.rpc.testing.FakeStatusCode; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import javax.annotation.Generated; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +@Generated("by gapic-generator-java") +public class BetaAnalyticsDataClientHttpJsonTest { + private static MockHttpService mockService; + private static BetaAnalyticsDataClient client; + + @BeforeClass + public static void startStaticServer() throws IOException { + mockService = + new MockHttpService( + HttpJsonBetaAnalyticsDataStub.getMethodDescriptors(), + BetaAnalyticsDataSettings.getDefaultEndpoint()); + BetaAnalyticsDataSettings settings = + BetaAnalyticsDataSettings.newHttpJsonBuilder() + .setTransportChannelProvider( + BetaAnalyticsDataSettings.defaultHttpJsonTransportProviderBuilder() + .setHttpTransport(mockService) + .build()) + .setCredentialsProvider(NoCredentialsProvider.create()) + .build(); + client = BetaAnalyticsDataClient.create(settings); + } + + @AfterClass + public static void stopServer() { + client.close(); + } + + @Before + public void setUp() {} + + @After + public void tearDown() throws Exception { + mockService.reset(); + } + + @Test + public void runReportTest() throws Exception { + RunReportResponse expectedResponse = + RunReportResponse.newBuilder() + .addAllDimensionHeaders(new ArrayList()) + .addAllMetricHeaders(new ArrayList()) + .addAllRows(new ArrayList()) + .addAllTotals(new ArrayList()) + .addAllMaximums(new ArrayList()) + .addAllMinimums(new ArrayList()) + .setRowCount(1340416618) + .setMetadata(ResponseMetaData.newBuilder().build()) + .setPropertyQuota(PropertyQuota.newBuilder().build()) + .setKind("kind3292052") + .build(); + mockService.addResponse(expectedResponse); + + RunReportRequest request = + RunReportRequest.newBuilder() + .setProperty("properties/propertie-2179") + .addAllDimensions(new ArrayList()) + .addAllMetrics(new ArrayList()) + .addAllDateRanges(new ArrayList()) + .setDimensionFilter(FilterExpression.newBuilder().build()) + .setMetricFilter(FilterExpression.newBuilder().build()) + .setOffset(-1019779949) + .setLimit(102976443) + .addAllMetricAggregations(new ArrayList()) + .addAllOrderBys(new ArrayList()) + .setCurrencyCode("currencyCode1004773790") + .setCohortSpec(CohortSpec.newBuilder().build()) + .setKeepEmptyRows(true) + .setReturnPropertyQuota(true) + .build(); + + RunReportResponse actualResponse = client.runReport(request); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void runReportExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + RunReportRequest request = + RunReportRequest.newBuilder() + .setProperty("properties/propertie-2179") + .addAllDimensions(new ArrayList()) + .addAllMetrics(new ArrayList()) + .addAllDateRanges(new ArrayList()) + .setDimensionFilter(FilterExpression.newBuilder().build()) + .setMetricFilter(FilterExpression.newBuilder().build()) + .setOffset(-1019779949) + .setLimit(102976443) + .addAllMetricAggregations(new ArrayList()) + .addAllOrderBys(new ArrayList()) + .setCurrencyCode("currencyCode1004773790") + .setCohortSpec(CohortSpec.newBuilder().build()) + .setKeepEmptyRows(true) + .setReturnPropertyQuota(true) + .build(); + client.runReport(request); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void runPivotReportTest() throws Exception { + RunPivotReportResponse expectedResponse = + RunPivotReportResponse.newBuilder() + .addAllPivotHeaders(new ArrayList()) + .addAllDimensionHeaders(new ArrayList()) + .addAllMetricHeaders(new ArrayList()) + .addAllRows(new ArrayList()) + .addAllAggregates(new ArrayList()) + .setMetadata(ResponseMetaData.newBuilder().build()) + .setPropertyQuota(PropertyQuota.newBuilder().build()) + .setKind("kind3292052") + .build(); + mockService.addResponse(expectedResponse); + + RunPivotReportRequest request = + RunPivotReportRequest.newBuilder() + .setProperty("properties/propertie-2179") + .addAllDimensions(new ArrayList()) + .addAllMetrics(new ArrayList()) + .addAllDateRanges(new ArrayList()) + .addAllPivots(new ArrayList()) + .setDimensionFilter(FilterExpression.newBuilder().build()) + .setMetricFilter(FilterExpression.newBuilder().build()) + .setCurrencyCode("currencyCode1004773790") + .setCohortSpec(CohortSpec.newBuilder().build()) + .setKeepEmptyRows(true) + .setReturnPropertyQuota(true) + .build(); + + RunPivotReportResponse actualResponse = client.runPivotReport(request); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void runPivotReportExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + RunPivotReportRequest request = + RunPivotReportRequest.newBuilder() + .setProperty("properties/propertie-2179") + .addAllDimensions(new ArrayList()) + .addAllMetrics(new ArrayList()) + .addAllDateRanges(new ArrayList()) + .addAllPivots(new ArrayList()) + .setDimensionFilter(FilterExpression.newBuilder().build()) + .setMetricFilter(FilterExpression.newBuilder().build()) + .setCurrencyCode("currencyCode1004773790") + .setCohortSpec(CohortSpec.newBuilder().build()) + .setKeepEmptyRows(true) + .setReturnPropertyQuota(true) + .build(); + client.runPivotReport(request); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void batchRunReportsTest() throws Exception { + BatchRunReportsResponse expectedResponse = + BatchRunReportsResponse.newBuilder() + .addAllReports(new ArrayList()) + .setKind("kind3292052") + .build(); + mockService.addResponse(expectedResponse); + + BatchRunReportsRequest request = + BatchRunReportsRequest.newBuilder() + .setProperty("properties/propertie-2179") + .addAllRequests(new ArrayList()) + .build(); + + BatchRunReportsResponse actualResponse = client.batchRunReports(request); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void batchRunReportsExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + BatchRunReportsRequest request = + BatchRunReportsRequest.newBuilder() + .setProperty("properties/propertie-2179") + .addAllRequests(new ArrayList()) + .build(); + client.batchRunReports(request); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void batchRunPivotReportsTest() throws Exception { + BatchRunPivotReportsResponse expectedResponse = + BatchRunPivotReportsResponse.newBuilder() + .addAllPivotReports(new ArrayList()) + .setKind("kind3292052") + .build(); + mockService.addResponse(expectedResponse); + + BatchRunPivotReportsRequest request = + BatchRunPivotReportsRequest.newBuilder() + .setProperty("properties/propertie-2179") + .addAllRequests(new ArrayList()) + .build(); + + BatchRunPivotReportsResponse actualResponse = client.batchRunPivotReports(request); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void batchRunPivotReportsExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + BatchRunPivotReportsRequest request = + BatchRunPivotReportsRequest.newBuilder() + .setProperty("properties/propertie-2179") + .addAllRequests(new ArrayList()) + .build(); + client.batchRunPivotReports(request); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void getMetadataTest() throws Exception { + Metadata expectedResponse = + Metadata.newBuilder() + .setName(MetadataName.of("[PROPERTY]").toString()) + .addAllDimensions(new ArrayList()) + .addAllMetrics(new ArrayList()) + .build(); + mockService.addResponse(expectedResponse); + + MetadataName name = MetadataName.of("[PROPERTY]"); + + Metadata actualResponse = client.getMetadata(name); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void getMetadataExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + MetadataName name = MetadataName.of("[PROPERTY]"); + client.getMetadata(name); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void getMetadataTest2() throws Exception { + Metadata expectedResponse = + Metadata.newBuilder() + .setName(MetadataName.of("[PROPERTY]").toString()) + .addAllDimensions(new ArrayList()) + .addAllMetrics(new ArrayList()) + .build(); + mockService.addResponse(expectedResponse); + + String name = "properties/propertie-8635/metadata"; + + Metadata actualResponse = client.getMetadata(name); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void getMetadataExceptionTest2() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + String name = "properties/propertie-8635/metadata"; + client.getMetadata(name); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void runRealtimeReportTest() throws Exception { + RunRealtimeReportResponse expectedResponse = + RunRealtimeReportResponse.newBuilder() + .addAllDimensionHeaders(new ArrayList()) + .addAllMetricHeaders(new ArrayList()) + .addAllRows(new ArrayList()) + .addAllTotals(new ArrayList()) + .addAllMaximums(new ArrayList()) + .addAllMinimums(new ArrayList()) + .setRowCount(1340416618) + .setPropertyQuota(PropertyQuota.newBuilder().build()) + .setKind("kind3292052") + .build(); + mockService.addResponse(expectedResponse); + + RunRealtimeReportRequest request = + RunRealtimeReportRequest.newBuilder() + .setProperty("properties/propertie-2179") + .addAllDimensions(new ArrayList()) + .addAllMetrics(new ArrayList()) + .setDimensionFilter(FilterExpression.newBuilder().build()) + .setMetricFilter(FilterExpression.newBuilder().build()) + .setLimit(102976443) + .addAllMetricAggregations(new ArrayList()) + .addAllOrderBys(new ArrayList()) + .setReturnPropertyQuota(true) + .addAllMinuteRanges(new ArrayList()) + .build(); + + RunRealtimeReportResponse actualResponse = client.runRealtimeReport(request); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void runRealtimeReportExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + RunRealtimeReportRequest request = + RunRealtimeReportRequest.newBuilder() + .setProperty("properties/propertie-2179") + .addAllDimensions(new ArrayList()) + .addAllMetrics(new ArrayList()) + .setDimensionFilter(FilterExpression.newBuilder().build()) + .setMetricFilter(FilterExpression.newBuilder().build()) + .setLimit(102976443) + .addAllMetricAggregations(new ArrayList()) + .addAllOrderBys(new ArrayList()) + .setReturnPropertyQuota(true) + .addAllMinuteRanges(new ArrayList()) + .build(); + client.runRealtimeReport(request); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void checkCompatibilityTest() throws Exception { + CheckCompatibilityResponse expectedResponse = + CheckCompatibilityResponse.newBuilder() + .addAllDimensionCompatibilities(new ArrayList()) + .addAllMetricCompatibilities(new ArrayList()) + .build(); + mockService.addResponse(expectedResponse); + + CheckCompatibilityRequest request = + CheckCompatibilityRequest.newBuilder() + .setProperty("properties/propertie-2179") + .addAllDimensions(new ArrayList()) + .addAllMetrics(new ArrayList()) + .setDimensionFilter(FilterExpression.newBuilder().build()) + .setMetricFilter(FilterExpression.newBuilder().build()) + .setCompatibilityFilter(Compatibility.forNumber(0)) + .build(); + + CheckCompatibilityResponse actualResponse = client.checkCompatibility(request); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void checkCompatibilityExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + CheckCompatibilityRequest request = + CheckCompatibilityRequest.newBuilder() + .setProperty("properties/propertie-2179") + .addAllDimensions(new ArrayList()) + .addAllMetrics(new ArrayList()) + .setDimensionFilter(FilterExpression.newBuilder().build()) + .setMetricFilter(FilterExpression.newBuilder().build()) + .setCompatibilityFilter(Compatibility.forNumber(0)) + .build(); + client.checkCompatibility(request); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } +} diff --git a/proto-google-analytics-data-v1alpha/src/main/java/com/google/analytics/data/v1alpha/FunnelFilter.java b/proto-google-analytics-data-v1alpha/src/main/java/com/google/analytics/data/v1alpha/FunnelFieldFilter.java similarity index 93% rename from proto-google-analytics-data-v1alpha/src/main/java/com/google/analytics/data/v1alpha/FunnelFilter.java rename to proto-google-analytics-data-v1alpha/src/main/java/com/google/analytics/data/v1alpha/FunnelFieldFilter.java index a5a228dd..a613e147 100644 --- a/proto-google-analytics-data-v1alpha/src/main/java/com/google/analytics/data/v1alpha/FunnelFilter.java +++ b/proto-google-analytics-data-v1alpha/src/main/java/com/google/analytics/data/v1alpha/FunnelFieldFilter.java @@ -25,26 +25,26 @@ * An expression to filter dimension or metric values. * * - * Protobuf type {@code google.analytics.data.v1alpha.FunnelFilter} + * Protobuf type {@code google.analytics.data.v1alpha.FunnelFieldFilter} */ -public final class FunnelFilter extends com.google.protobuf.GeneratedMessageV3 +public final class FunnelFieldFilter extends com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:google.analytics.data.v1alpha.FunnelFilter) - FunnelFilterOrBuilder { + // @@protoc_insertion_point(message_implements:google.analytics.data.v1alpha.FunnelFieldFilter) + FunnelFieldFilterOrBuilder { private static final long serialVersionUID = 0L; - // Use FunnelFilter.newBuilder() to construct. - private FunnelFilter(com.google.protobuf.GeneratedMessageV3.Builder builder) { + // Use FunnelFieldFilter.newBuilder() to construct. + private FunnelFieldFilter(com.google.protobuf.GeneratedMessageV3.Builder builder) { super(builder); } - private FunnelFilter() { + private FunnelFieldFilter() { fieldName_ = ""; } @java.lang.Override @SuppressWarnings({"unused"}) protected java.lang.Object newInstance(UnusedPrivateParameter unused) { - return new FunnelFilter(); + return new FunnelFieldFilter(); } @java.lang.Override @@ -52,7 +52,7 @@ public final com.google.protobuf.UnknownFieldSet getUnknownFields() { return this.unknownFields; } - private FunnelFilter( + private FunnelFieldFilter( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { @@ -168,17 +168,17 @@ private FunnelFilter( public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.analytics.data.v1alpha.ReportingApiProto - .internal_static_google_analytics_data_v1alpha_FunnelFilter_descriptor; + .internal_static_google_analytics_data_v1alpha_FunnelFieldFilter_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { return com.google.analytics.data.v1alpha.ReportingApiProto - .internal_static_google_analytics_data_v1alpha_FunnelFilter_fieldAccessorTable + .internal_static_google_analytics_data_v1alpha_FunnelFieldFilter_fieldAccessorTable .ensureFieldAccessorsInitialized( - com.google.analytics.data.v1alpha.FunnelFilter.class, - com.google.analytics.data.v1alpha.FunnelFilter.Builder.class); + com.google.analytics.data.v1alpha.FunnelFieldFilter.class, + com.google.analytics.data.v1alpha.FunnelFieldFilter.Builder.class); } private int oneFilterCase_ = 0; @@ -558,11 +558,11 @@ public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } - if (!(obj instanceof com.google.analytics.data.v1alpha.FunnelFilter)) { + if (!(obj instanceof com.google.analytics.data.v1alpha.FunnelFieldFilter)) { return super.equals(obj); } - com.google.analytics.data.v1alpha.FunnelFilter other = - (com.google.analytics.data.v1alpha.FunnelFilter) obj; + com.google.analytics.data.v1alpha.FunnelFieldFilter other = + (com.google.analytics.data.v1alpha.FunnelFieldFilter) obj; if (!getFieldName().equals(other.getFieldName())) return false; if (!getOneFilterCase().equals(other.getOneFilterCase())) return false; @@ -620,71 +620,71 @@ public int hashCode() { return hash; } - public static com.google.analytics.data.v1alpha.FunnelFilter parseFrom(java.nio.ByteBuffer data) - throws com.google.protobuf.InvalidProtocolBufferException { + public static com.google.analytics.data.v1alpha.FunnelFieldFilter parseFrom( + java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.analytics.data.v1alpha.FunnelFilter parseFrom( + public static com.google.analytics.data.v1alpha.FunnelFieldFilter parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.analytics.data.v1alpha.FunnelFilter parseFrom( + public static com.google.analytics.data.v1alpha.FunnelFieldFilter parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.analytics.data.v1alpha.FunnelFilter parseFrom( + public static com.google.analytics.data.v1alpha.FunnelFieldFilter parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.analytics.data.v1alpha.FunnelFilter parseFrom(byte[] data) + public static com.google.analytics.data.v1alpha.FunnelFieldFilter parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static com.google.analytics.data.v1alpha.FunnelFilter parseFrom( + public static com.google.analytics.data.v1alpha.FunnelFieldFilter parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static com.google.analytics.data.v1alpha.FunnelFilter parseFrom(java.io.InputStream input) - throws java.io.IOException { + public static com.google.analytics.data.v1alpha.FunnelFieldFilter parseFrom( + java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static com.google.analytics.data.v1alpha.FunnelFilter parseFrom( + public static com.google.analytics.data.v1alpha.FunnelFieldFilter parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException( PARSER, input, extensionRegistry); } - public static com.google.analytics.data.v1alpha.FunnelFilter parseDelimitedFrom( + public static com.google.analytics.data.v1alpha.FunnelFieldFilter parseDelimitedFrom( java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); } - public static com.google.analytics.data.v1alpha.FunnelFilter parseDelimitedFrom( + public static com.google.analytics.data.v1alpha.FunnelFieldFilter parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( PARSER, input, extensionRegistry); } - public static com.google.analytics.data.v1alpha.FunnelFilter parseFrom( + public static com.google.analytics.data.v1alpha.FunnelFieldFilter parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static com.google.analytics.data.v1alpha.FunnelFilter parseFrom( + public static com.google.analytics.data.v1alpha.FunnelFieldFilter parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -701,7 +701,7 @@ public static Builder newBuilder() { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(com.google.analytics.data.v1alpha.FunnelFilter prototype) { + public static Builder newBuilder(com.google.analytics.data.v1alpha.FunnelFieldFilter prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @@ -722,28 +722,28 @@ protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.Build * An expression to filter dimension or metric values. * * - * Protobuf type {@code google.analytics.data.v1alpha.FunnelFilter} + * Protobuf type {@code google.analytics.data.v1alpha.FunnelFieldFilter} */ public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:google.analytics.data.v1alpha.FunnelFilter) - com.google.analytics.data.v1alpha.FunnelFilterOrBuilder { + // @@protoc_insertion_point(builder_implements:google.analytics.data.v1alpha.FunnelFieldFilter) + com.google.analytics.data.v1alpha.FunnelFieldFilterOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.analytics.data.v1alpha.ReportingApiProto - .internal_static_google_analytics_data_v1alpha_FunnelFilter_descriptor; + .internal_static_google_analytics_data_v1alpha_FunnelFieldFilter_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { return com.google.analytics.data.v1alpha.ReportingApiProto - .internal_static_google_analytics_data_v1alpha_FunnelFilter_fieldAccessorTable + .internal_static_google_analytics_data_v1alpha_FunnelFieldFilter_fieldAccessorTable .ensureFieldAccessorsInitialized( - com.google.analytics.data.v1alpha.FunnelFilter.class, - com.google.analytics.data.v1alpha.FunnelFilter.Builder.class); + com.google.analytics.data.v1alpha.FunnelFieldFilter.class, + com.google.analytics.data.v1alpha.FunnelFieldFilter.Builder.class); } - // Construct using com.google.analytics.data.v1alpha.FunnelFilter.newBuilder() + // Construct using com.google.analytics.data.v1alpha.FunnelFieldFilter.newBuilder() private Builder() { maybeForceBuilderInitialization(); } @@ -770,17 +770,17 @@ public Builder clear() { @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { return com.google.analytics.data.v1alpha.ReportingApiProto - .internal_static_google_analytics_data_v1alpha_FunnelFilter_descriptor; + .internal_static_google_analytics_data_v1alpha_FunnelFieldFilter_descriptor; } @java.lang.Override - public com.google.analytics.data.v1alpha.FunnelFilter getDefaultInstanceForType() { - return com.google.analytics.data.v1alpha.FunnelFilter.getDefaultInstance(); + public com.google.analytics.data.v1alpha.FunnelFieldFilter getDefaultInstanceForType() { + return com.google.analytics.data.v1alpha.FunnelFieldFilter.getDefaultInstance(); } @java.lang.Override - public com.google.analytics.data.v1alpha.FunnelFilter build() { - com.google.analytics.data.v1alpha.FunnelFilter result = buildPartial(); + public com.google.analytics.data.v1alpha.FunnelFieldFilter build() { + com.google.analytics.data.v1alpha.FunnelFieldFilter result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -788,9 +788,9 @@ public com.google.analytics.data.v1alpha.FunnelFilter build() { } @java.lang.Override - public com.google.analytics.data.v1alpha.FunnelFilter buildPartial() { - com.google.analytics.data.v1alpha.FunnelFilter result = - new com.google.analytics.data.v1alpha.FunnelFilter(this); + public com.google.analytics.data.v1alpha.FunnelFieldFilter buildPartial() { + com.google.analytics.data.v1alpha.FunnelFieldFilter result = + new com.google.analytics.data.v1alpha.FunnelFieldFilter(this); result.fieldName_ = fieldName_; if (oneFilterCase_ == 4) { if (stringFilterBuilder_ == null) { @@ -860,16 +860,17 @@ public Builder addRepeatedField( @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof com.google.analytics.data.v1alpha.FunnelFilter) { - return mergeFrom((com.google.analytics.data.v1alpha.FunnelFilter) other); + if (other instanceof com.google.analytics.data.v1alpha.FunnelFieldFilter) { + return mergeFrom((com.google.analytics.data.v1alpha.FunnelFieldFilter) other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(com.google.analytics.data.v1alpha.FunnelFilter other) { - if (other == com.google.analytics.data.v1alpha.FunnelFilter.getDefaultInstance()) return this; + public Builder mergeFrom(com.google.analytics.data.v1alpha.FunnelFieldFilter other) { + if (other == com.google.analytics.data.v1alpha.FunnelFieldFilter.getDefaultInstance()) + return this; if (!other.getFieldName().isEmpty()) { fieldName_ = other.fieldName_; onChanged(); @@ -915,11 +916,12 @@ public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - com.google.analytics.data.v1alpha.FunnelFilter parsedMessage = null; + com.google.analytics.data.v1alpha.FunnelFieldFilter parsedMessage = null; try { parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (com.google.analytics.data.v1alpha.FunnelFilter) e.getUnfinishedMessage(); + parsedMessage = + (com.google.analytics.data.v1alpha.FunnelFieldFilter) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { if (parsedMessage != null) { @@ -1900,42 +1902,42 @@ public final Builder mergeUnknownFields( return super.mergeUnknownFields(unknownFields); } - // @@protoc_insertion_point(builder_scope:google.analytics.data.v1alpha.FunnelFilter) + // @@protoc_insertion_point(builder_scope:google.analytics.data.v1alpha.FunnelFieldFilter) } - // @@protoc_insertion_point(class_scope:google.analytics.data.v1alpha.FunnelFilter) - private static final com.google.analytics.data.v1alpha.FunnelFilter DEFAULT_INSTANCE; + // @@protoc_insertion_point(class_scope:google.analytics.data.v1alpha.FunnelFieldFilter) + private static final com.google.analytics.data.v1alpha.FunnelFieldFilter DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new com.google.analytics.data.v1alpha.FunnelFilter(); + DEFAULT_INSTANCE = new com.google.analytics.data.v1alpha.FunnelFieldFilter(); } - public static com.google.analytics.data.v1alpha.FunnelFilter getDefaultInstance() { + public static com.google.analytics.data.v1alpha.FunnelFieldFilter getDefaultInstance() { return DEFAULT_INSTANCE; } - private static final com.google.protobuf.Parser PARSER = - new com.google.protobuf.AbstractParser() { + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { @java.lang.Override - public FunnelFilter parsePartialFrom( + public FunnelFieldFilter parsePartialFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new FunnelFilter(input, extensionRegistry); + return new FunnelFieldFilter(input, extensionRegistry); } }; - public static com.google.protobuf.Parser parser() { + public static com.google.protobuf.Parser parser() { return PARSER; } @java.lang.Override - public com.google.protobuf.Parser getParserForType() { + public com.google.protobuf.Parser getParserForType() { return PARSER; } @java.lang.Override - public com.google.analytics.data.v1alpha.FunnelFilter getDefaultInstanceForType() { + public com.google.analytics.data.v1alpha.FunnelFieldFilter getDefaultInstanceForType() { return DEFAULT_INSTANCE; } } diff --git a/proto-google-analytics-data-v1alpha/src/main/java/com/google/analytics/data/v1alpha/FunnelFilterOrBuilder.java b/proto-google-analytics-data-v1alpha/src/main/java/com/google/analytics/data/v1alpha/FunnelFieldFilterOrBuilder.java similarity index 96% rename from proto-google-analytics-data-v1alpha/src/main/java/com/google/analytics/data/v1alpha/FunnelFilterOrBuilder.java rename to proto-google-analytics-data-v1alpha/src/main/java/com/google/analytics/data/v1alpha/FunnelFieldFilterOrBuilder.java index 003dbe0c..5c105956 100644 --- a/proto-google-analytics-data-v1alpha/src/main/java/com/google/analytics/data/v1alpha/FunnelFilterOrBuilder.java +++ b/proto-google-analytics-data-v1alpha/src/main/java/com/google/analytics/data/v1alpha/FunnelFieldFilterOrBuilder.java @@ -18,9 +18,9 @@ package com.google.analytics.data.v1alpha; -public interface FunnelFilterOrBuilder +public interface FunnelFieldFilterOrBuilder extends - // @@protoc_insertion_point(interface_extends:google.analytics.data.v1alpha.FunnelFilter) + // @@protoc_insertion_point(interface_extends:google.analytics.data.v1alpha.FunnelFieldFilter) com.google.protobuf.MessageOrBuilder { /** @@ -188,5 +188,5 @@ public interface FunnelFilterOrBuilder */ com.google.analytics.data.v1alpha.BetweenFilterOrBuilder getBetweenFilterOrBuilder(); - public com.google.analytics.data.v1alpha.FunnelFilter.OneFilterCase getOneFilterCase(); + public com.google.analytics.data.v1alpha.FunnelFieldFilter.OneFilterCase getOneFilterCase(); } diff --git a/proto-google-analytics-data-v1alpha/src/main/java/com/google/analytics/data/v1alpha/FunnelFilterExpression.java b/proto-google-analytics-data-v1alpha/src/main/java/com/google/analytics/data/v1alpha/FunnelFilterExpression.java index db112542..ec95a99a 100644 --- a/proto-google-analytics-data-v1alpha/src/main/java/com/google/analytics/data/v1alpha/FunnelFilterExpression.java +++ b/proto-google-analytics-data-v1alpha/src/main/java/com/google/analytics/data/v1alpha/FunnelFilterExpression.java @@ -131,15 +131,17 @@ private FunnelFilterExpression( } case 34: { - com.google.analytics.data.v1alpha.FunnelFilter.Builder subBuilder = null; + com.google.analytics.data.v1alpha.FunnelFieldFilter.Builder subBuilder = null; if (exprCase_ == 4) { - subBuilder = ((com.google.analytics.data.v1alpha.FunnelFilter) expr_).toBuilder(); + subBuilder = + ((com.google.analytics.data.v1alpha.FunnelFieldFilter) expr_).toBuilder(); } expr_ = input.readMessage( - com.google.analytics.data.v1alpha.FunnelFilter.parser(), extensionRegistry); + com.google.analytics.data.v1alpha.FunnelFieldFilter.parser(), + extensionRegistry); if (subBuilder != null) { - subBuilder.mergeFrom((com.google.analytics.data.v1alpha.FunnelFilter) expr_); + subBuilder.mergeFrom((com.google.analytics.data.v1alpha.FunnelFieldFilter) expr_); expr_ = subBuilder.buildPartial(); } exprCase_ = 4; @@ -209,7 +211,7 @@ public enum ExprCase AND_GROUP(1), OR_GROUP(2), NOT_EXPRESSION(3), - FUNNEL_FILTER(4), + FUNNEL_FIELD_FILTER(4), FUNNEL_EVENT_FILTER(5), EXPR_NOT_SET(0); private final int value; @@ -236,7 +238,7 @@ public static ExprCase forNumber(int value) { case 3: return NOT_EXPRESSION; case 4: - return FUNNEL_FILTER; + return FUNNEL_FIELD_FILTER; case 5: return FUNNEL_EVENT_FILTER; case 0: @@ -411,55 +413,56 @@ public com.google.analytics.data.v1alpha.FunnelFilterExpression getNotExpression return com.google.analytics.data.v1alpha.FunnelFilterExpression.getDefaultInstance(); } - public static final int FUNNEL_FILTER_FIELD_NUMBER = 4; + public static final int FUNNEL_FIELD_FILTER_FIELD_NUMBER = 4; /** * * *

-   * A primitive funnel filter.
+   * A funnel filter for a dimension or metric.
    * 
* - * .google.analytics.data.v1alpha.FunnelFilter funnel_filter = 4; + * .google.analytics.data.v1alpha.FunnelFieldFilter funnel_field_filter = 4; * - * @return Whether the funnelFilter field is set. + * @return Whether the funnelFieldFilter field is set. */ @java.lang.Override - public boolean hasFunnelFilter() { + public boolean hasFunnelFieldFilter() { return exprCase_ == 4; } /** * * *
-   * A primitive funnel filter.
+   * A funnel filter for a dimension or metric.
    * 
* - * .google.analytics.data.v1alpha.FunnelFilter funnel_filter = 4; + * .google.analytics.data.v1alpha.FunnelFieldFilter funnel_field_filter = 4; * - * @return The funnelFilter. + * @return The funnelFieldFilter. */ @java.lang.Override - public com.google.analytics.data.v1alpha.FunnelFilter getFunnelFilter() { + public com.google.analytics.data.v1alpha.FunnelFieldFilter getFunnelFieldFilter() { if (exprCase_ == 4) { - return (com.google.analytics.data.v1alpha.FunnelFilter) expr_; + return (com.google.analytics.data.v1alpha.FunnelFieldFilter) expr_; } - return com.google.analytics.data.v1alpha.FunnelFilter.getDefaultInstance(); + return com.google.analytics.data.v1alpha.FunnelFieldFilter.getDefaultInstance(); } /** * * *
-   * A primitive funnel filter.
+   * A funnel filter for a dimension or metric.
    * 
* - * .google.analytics.data.v1alpha.FunnelFilter funnel_filter = 4; + * .google.analytics.data.v1alpha.FunnelFieldFilter funnel_field_filter = 4; */ @java.lang.Override - public com.google.analytics.data.v1alpha.FunnelFilterOrBuilder getFunnelFilterOrBuilder() { + public com.google.analytics.data.v1alpha.FunnelFieldFilterOrBuilder + getFunnelFieldFilterOrBuilder() { if (exprCase_ == 4) { - return (com.google.analytics.data.v1alpha.FunnelFilter) expr_; + return (com.google.analytics.data.v1alpha.FunnelFieldFilter) expr_; } - return com.google.analytics.data.v1alpha.FunnelFilter.getDefaultInstance(); + return com.google.analytics.data.v1alpha.FunnelFieldFilter.getDefaultInstance(); } public static final int FUNNEL_EVENT_FILTER_FIELD_NUMBER = 5; @@ -547,7 +550,7 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io output.writeMessage(3, (com.google.analytics.data.v1alpha.FunnelFilterExpression) expr_); } if (exprCase_ == 4) { - output.writeMessage(4, (com.google.analytics.data.v1alpha.FunnelFilter) expr_); + output.writeMessage(4, (com.google.analytics.data.v1alpha.FunnelFieldFilter) expr_); } if (exprCase_ == 5) { output.writeMessage(5, (com.google.analytics.data.v1alpha.FunnelEventFilter) expr_); @@ -579,7 +582,7 @@ public int getSerializedSize() { if (exprCase_ == 4) { size += com.google.protobuf.CodedOutputStream.computeMessageSize( - 4, (com.google.analytics.data.v1alpha.FunnelFilter) expr_); + 4, (com.google.analytics.data.v1alpha.FunnelFieldFilter) expr_); } if (exprCase_ == 5) { size += @@ -614,7 +617,7 @@ public boolean equals(final java.lang.Object obj) { if (!getNotExpression().equals(other.getNotExpression())) return false; break; case 4: - if (!getFunnelFilter().equals(other.getFunnelFilter())) return false; + if (!getFunnelFieldFilter().equals(other.getFunnelFieldFilter())) return false; break; case 5: if (!getFunnelEventFilter().equals(other.getFunnelEventFilter())) return false; @@ -647,8 +650,8 @@ public int hashCode() { hash = (53 * hash) + getNotExpression().hashCode(); break; case 4: - hash = (37 * hash) + FUNNEL_FILTER_FIELD_NUMBER; - hash = (53 * hash) + getFunnelFilter().hashCode(); + hash = (37 * hash) + FUNNEL_FIELD_FILTER_FIELD_NUMBER; + hash = (53 * hash) + getFunnelFieldFilter().hashCode(); break; case 5: hash = (37 * hash) + FUNNEL_EVENT_FILTER_FIELD_NUMBER; @@ -854,10 +857,10 @@ public com.google.analytics.data.v1alpha.FunnelFilterExpression buildPartial() { } } if (exprCase_ == 4) { - if (funnelFilterBuilder_ == null) { + if (funnelFieldFilterBuilder_ == null) { result.expr_ = expr_; } else { - result.expr_ = funnelFilterBuilder_.build(); + result.expr_ = funnelFieldFilterBuilder_.build(); } } if (exprCase_ == 5) { @@ -934,9 +937,9 @@ public Builder mergeFrom(com.google.analytics.data.v1alpha.FunnelFilterExpressio mergeNotExpression(other.getNotExpression()); break; } - case FUNNEL_FILTER: + case FUNNEL_FIELD_FILTER: { - mergeFunnelFilter(other.getFunnelFilter()); + mergeFunnelFieldFilter(other.getFunnelFieldFilter()); break; } case FUNNEL_EVENT_FILTER: @@ -1639,68 +1642,68 @@ public Builder clearNotExpression() { } private com.google.protobuf.SingleFieldBuilderV3< - com.google.analytics.data.v1alpha.FunnelFilter, - com.google.analytics.data.v1alpha.FunnelFilter.Builder, - com.google.analytics.data.v1alpha.FunnelFilterOrBuilder> - funnelFilterBuilder_; + com.google.analytics.data.v1alpha.FunnelFieldFilter, + com.google.analytics.data.v1alpha.FunnelFieldFilter.Builder, + com.google.analytics.data.v1alpha.FunnelFieldFilterOrBuilder> + funnelFieldFilterBuilder_; /** * * *
-     * A primitive funnel filter.
+     * A funnel filter for a dimension or metric.
      * 
* - * .google.analytics.data.v1alpha.FunnelFilter funnel_filter = 4; + * .google.analytics.data.v1alpha.FunnelFieldFilter funnel_field_filter = 4; * - * @return Whether the funnelFilter field is set. + * @return Whether the funnelFieldFilter field is set. */ @java.lang.Override - public boolean hasFunnelFilter() { + public boolean hasFunnelFieldFilter() { return exprCase_ == 4; } /** * * *
-     * A primitive funnel filter.
+     * A funnel filter for a dimension or metric.
      * 
* - * .google.analytics.data.v1alpha.FunnelFilter funnel_filter = 4; + * .google.analytics.data.v1alpha.FunnelFieldFilter funnel_field_filter = 4; * - * @return The funnelFilter. + * @return The funnelFieldFilter. */ @java.lang.Override - public com.google.analytics.data.v1alpha.FunnelFilter getFunnelFilter() { - if (funnelFilterBuilder_ == null) { + public com.google.analytics.data.v1alpha.FunnelFieldFilter getFunnelFieldFilter() { + if (funnelFieldFilterBuilder_ == null) { if (exprCase_ == 4) { - return (com.google.analytics.data.v1alpha.FunnelFilter) expr_; + return (com.google.analytics.data.v1alpha.FunnelFieldFilter) expr_; } - return com.google.analytics.data.v1alpha.FunnelFilter.getDefaultInstance(); + return com.google.analytics.data.v1alpha.FunnelFieldFilter.getDefaultInstance(); } else { if (exprCase_ == 4) { - return funnelFilterBuilder_.getMessage(); + return funnelFieldFilterBuilder_.getMessage(); } - return com.google.analytics.data.v1alpha.FunnelFilter.getDefaultInstance(); + return com.google.analytics.data.v1alpha.FunnelFieldFilter.getDefaultInstance(); } } /** * * *
-     * A primitive funnel filter.
+     * A funnel filter for a dimension or metric.
      * 
* - * .google.analytics.data.v1alpha.FunnelFilter funnel_filter = 4; + * .google.analytics.data.v1alpha.FunnelFieldFilter funnel_field_filter = 4; */ - public Builder setFunnelFilter(com.google.analytics.data.v1alpha.FunnelFilter value) { - if (funnelFilterBuilder_ == null) { + public Builder setFunnelFieldFilter(com.google.analytics.data.v1alpha.FunnelFieldFilter value) { + if (funnelFieldFilterBuilder_ == null) { if (value == null) { throw new NullPointerException(); } expr_ = value; onChanged(); } else { - funnelFilterBuilder_.setMessage(value); + funnelFieldFilterBuilder_.setMessage(value); } exprCase_ = 4; return this; @@ -1709,18 +1712,18 @@ public Builder setFunnelFilter(com.google.analytics.data.v1alpha.FunnelFilter va * * *
-     * A primitive funnel filter.
+     * A funnel filter for a dimension or metric.
      * 
* - * .google.analytics.data.v1alpha.FunnelFilter funnel_filter = 4; + * .google.analytics.data.v1alpha.FunnelFieldFilter funnel_field_filter = 4; */ - public Builder setFunnelFilter( - com.google.analytics.data.v1alpha.FunnelFilter.Builder builderForValue) { - if (funnelFilterBuilder_ == null) { + public Builder setFunnelFieldFilter( + com.google.analytics.data.v1alpha.FunnelFieldFilter.Builder builderForValue) { + if (funnelFieldFilterBuilder_ == null) { expr_ = builderForValue.build(); onChanged(); } else { - funnelFilterBuilder_.setMessage(builderForValue.build()); + funnelFieldFilterBuilder_.setMessage(builderForValue.build()); } exprCase_ = 4; return this; @@ -1729,18 +1732,19 @@ public Builder setFunnelFilter( * * *
-     * A primitive funnel filter.
+     * A funnel filter for a dimension or metric.
      * 
* - * .google.analytics.data.v1alpha.FunnelFilter funnel_filter = 4; + * .google.analytics.data.v1alpha.FunnelFieldFilter funnel_field_filter = 4; */ - public Builder mergeFunnelFilter(com.google.analytics.data.v1alpha.FunnelFilter value) { - if (funnelFilterBuilder_ == null) { + public Builder mergeFunnelFieldFilter( + com.google.analytics.data.v1alpha.FunnelFieldFilter value) { + if (funnelFieldFilterBuilder_ == null) { if (exprCase_ == 4 - && expr_ != com.google.analytics.data.v1alpha.FunnelFilter.getDefaultInstance()) { + && expr_ != com.google.analytics.data.v1alpha.FunnelFieldFilter.getDefaultInstance()) { expr_ = - com.google.analytics.data.v1alpha.FunnelFilter.newBuilder( - (com.google.analytics.data.v1alpha.FunnelFilter) expr_) + com.google.analytics.data.v1alpha.FunnelFieldFilter.newBuilder( + (com.google.analytics.data.v1alpha.FunnelFieldFilter) expr_) .mergeFrom(value) .buildPartial(); } else { @@ -1749,9 +1753,9 @@ public Builder mergeFunnelFilter(com.google.analytics.data.v1alpha.FunnelFilter onChanged(); } else { if (exprCase_ == 4) { - funnelFilterBuilder_.mergeFrom(value); + funnelFieldFilterBuilder_.mergeFrom(value); } else { - funnelFilterBuilder_.setMessage(value); + funnelFieldFilterBuilder_.setMessage(value); } } exprCase_ = 4; @@ -1761,13 +1765,13 @@ public Builder mergeFunnelFilter(com.google.analytics.data.v1alpha.FunnelFilter * * *
-     * A primitive funnel filter.
+     * A funnel filter for a dimension or metric.
      * 
* - * .google.analytics.data.v1alpha.FunnelFilter funnel_filter = 4; + * .google.analytics.data.v1alpha.FunnelFieldFilter funnel_field_filter = 4; */ - public Builder clearFunnelFilter() { - if (funnelFilterBuilder_ == null) { + public Builder clearFunnelFieldFilter() { + if (funnelFieldFilterBuilder_ == null) { if (exprCase_ == 4) { exprCase_ = 0; expr_ = null; @@ -1778,7 +1782,7 @@ public Builder clearFunnelFilter() { exprCase_ = 0; expr_ = null; } - funnelFilterBuilder_.clear(); + funnelFieldFilterBuilder_.clear(); } return this; } @@ -1786,58 +1790,60 @@ public Builder clearFunnelFilter() { * * *
-     * A primitive funnel filter.
+     * A funnel filter for a dimension or metric.
      * 
* - * .google.analytics.data.v1alpha.FunnelFilter funnel_filter = 4; + * .google.analytics.data.v1alpha.FunnelFieldFilter funnel_field_filter = 4; */ - public com.google.analytics.data.v1alpha.FunnelFilter.Builder getFunnelFilterBuilder() { - return getFunnelFilterFieldBuilder().getBuilder(); + public com.google.analytics.data.v1alpha.FunnelFieldFilter.Builder + getFunnelFieldFilterBuilder() { + return getFunnelFieldFilterFieldBuilder().getBuilder(); } /** * * *
-     * A primitive funnel filter.
+     * A funnel filter for a dimension or metric.
      * 
* - * .google.analytics.data.v1alpha.FunnelFilter funnel_filter = 4; + * .google.analytics.data.v1alpha.FunnelFieldFilter funnel_field_filter = 4; */ @java.lang.Override - public com.google.analytics.data.v1alpha.FunnelFilterOrBuilder getFunnelFilterOrBuilder() { - if ((exprCase_ == 4) && (funnelFilterBuilder_ != null)) { - return funnelFilterBuilder_.getMessageOrBuilder(); + public com.google.analytics.data.v1alpha.FunnelFieldFilterOrBuilder + getFunnelFieldFilterOrBuilder() { + if ((exprCase_ == 4) && (funnelFieldFilterBuilder_ != null)) { + return funnelFieldFilterBuilder_.getMessageOrBuilder(); } else { if (exprCase_ == 4) { - return (com.google.analytics.data.v1alpha.FunnelFilter) expr_; + return (com.google.analytics.data.v1alpha.FunnelFieldFilter) expr_; } - return com.google.analytics.data.v1alpha.FunnelFilter.getDefaultInstance(); + return com.google.analytics.data.v1alpha.FunnelFieldFilter.getDefaultInstance(); } } /** * * *
-     * A primitive funnel filter.
+     * A funnel filter for a dimension or metric.
      * 
* - * .google.analytics.data.v1alpha.FunnelFilter funnel_filter = 4; + * .google.analytics.data.v1alpha.FunnelFieldFilter funnel_field_filter = 4; */ private com.google.protobuf.SingleFieldBuilderV3< - com.google.analytics.data.v1alpha.FunnelFilter, - com.google.analytics.data.v1alpha.FunnelFilter.Builder, - com.google.analytics.data.v1alpha.FunnelFilterOrBuilder> - getFunnelFilterFieldBuilder() { - if (funnelFilterBuilder_ == null) { + com.google.analytics.data.v1alpha.FunnelFieldFilter, + com.google.analytics.data.v1alpha.FunnelFieldFilter.Builder, + com.google.analytics.data.v1alpha.FunnelFieldFilterOrBuilder> + getFunnelFieldFilterFieldBuilder() { + if (funnelFieldFilterBuilder_ == null) { if (!(exprCase_ == 4)) { - expr_ = com.google.analytics.data.v1alpha.FunnelFilter.getDefaultInstance(); + expr_ = com.google.analytics.data.v1alpha.FunnelFieldFilter.getDefaultInstance(); } - funnelFilterBuilder_ = + funnelFieldFilterBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< - com.google.analytics.data.v1alpha.FunnelFilter, - com.google.analytics.data.v1alpha.FunnelFilter.Builder, - com.google.analytics.data.v1alpha.FunnelFilterOrBuilder>( - (com.google.analytics.data.v1alpha.FunnelFilter) expr_, + com.google.analytics.data.v1alpha.FunnelFieldFilter, + com.google.analytics.data.v1alpha.FunnelFieldFilter.Builder, + com.google.analytics.data.v1alpha.FunnelFieldFilterOrBuilder>( + (com.google.analytics.data.v1alpha.FunnelFieldFilter) expr_, getParentForChildren(), isClean()); expr_ = null; @@ -1845,7 +1851,7 @@ public com.google.analytics.data.v1alpha.FunnelFilterOrBuilder getFunnelFilterOr exprCase_ = 4; onChanged(); ; - return funnelFilterBuilder_; + return funnelFieldFilterBuilder_; } private com.google.protobuf.SingleFieldBuilderV3< diff --git a/proto-google-analytics-data-v1alpha/src/main/java/com/google/analytics/data/v1alpha/FunnelFilterExpressionOrBuilder.java b/proto-google-analytics-data-v1alpha/src/main/java/com/google/analytics/data/v1alpha/FunnelFilterExpressionOrBuilder.java index b731f681..ebf68b15 100644 --- a/proto-google-analytics-data-v1alpha/src/main/java/com/google/analytics/data/v1alpha/FunnelFilterExpressionOrBuilder.java +++ b/proto-google-analytics-data-v1alpha/src/main/java/com/google/analytics/data/v1alpha/FunnelFilterExpressionOrBuilder.java @@ -132,36 +132,36 @@ public interface FunnelFilterExpressionOrBuilder * * *
-   * A primitive funnel filter.
+   * A funnel filter for a dimension or metric.
    * 
* - * .google.analytics.data.v1alpha.FunnelFilter funnel_filter = 4; + * .google.analytics.data.v1alpha.FunnelFieldFilter funnel_field_filter = 4; * - * @return Whether the funnelFilter field is set. + * @return Whether the funnelFieldFilter field is set. */ - boolean hasFunnelFilter(); + boolean hasFunnelFieldFilter(); /** * * *
-   * A primitive funnel filter.
+   * A funnel filter for a dimension or metric.
    * 
* - * .google.analytics.data.v1alpha.FunnelFilter funnel_filter = 4; + * .google.analytics.data.v1alpha.FunnelFieldFilter funnel_field_filter = 4; * - * @return The funnelFilter. + * @return The funnelFieldFilter. */ - com.google.analytics.data.v1alpha.FunnelFilter getFunnelFilter(); + com.google.analytics.data.v1alpha.FunnelFieldFilter getFunnelFieldFilter(); /** * * *
-   * A primitive funnel filter.
+   * A funnel filter for a dimension or metric.
    * 
* - * .google.analytics.data.v1alpha.FunnelFilter funnel_filter = 4; + * .google.analytics.data.v1alpha.FunnelFieldFilter funnel_field_filter = 4; */ - com.google.analytics.data.v1alpha.FunnelFilterOrBuilder getFunnelFilterOrBuilder(); + com.google.analytics.data.v1alpha.FunnelFieldFilterOrBuilder getFunnelFieldFilterOrBuilder(); /** * diff --git a/proto-google-analytics-data-v1alpha/src/main/java/com/google/analytics/data/v1alpha/FunnelNextAction.java b/proto-google-analytics-data-v1alpha/src/main/java/com/google/analytics/data/v1alpha/FunnelNextAction.java index 75f16313..25c03ce9 100644 --- a/proto-google-analytics-data-v1alpha/src/main/java/com/google/analytics/data/v1alpha/FunnelNextAction.java +++ b/proto-google-analytics-data-v1alpha/src/main/java/com/google/analytics/data/v1alpha/FunnelNextAction.java @@ -142,7 +142,9 @@ public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { * The dimension column added to the funnel visualization sub report response. * The next action dimension returns the next dimension value of this * dimension after the user has attained the `i`th funnel step. - * `nextActionDimension` currently only supports the `eventName` dimension. + * `nextActionDimension` currently only supports `eventName` and most Page / + * Screen dimensions like `pageTitle` and `pagePath`. `nextActionDimension` + * cannot be a dimension expression. * * * .google.analytics.data.v1alpha.Dimension next_action_dimension = 1; @@ -160,7 +162,9 @@ public boolean hasNextActionDimension() { * The dimension column added to the funnel visualization sub report response. * The next action dimension returns the next dimension value of this * dimension after the user has attained the `i`th funnel step. - * `nextActionDimension` currently only supports the `eventName` dimension. + * `nextActionDimension` currently only supports `eventName` and most Page / + * Screen dimensions like `pageTitle` and `pagePath`. `nextActionDimension` + * cannot be a dimension expression. * * * .google.analytics.data.v1alpha.Dimension next_action_dimension = 1; @@ -180,7 +184,9 @@ public com.google.analytics.data.v1alpha.Dimension getNextActionDimension() { * The dimension column added to the funnel visualization sub report response. * The next action dimension returns the next dimension value of this * dimension after the user has attained the `i`th funnel step. - * `nextActionDimension` currently only supports the `eventName` dimension. + * `nextActionDimension` currently only supports `eventName` and most Page / + * Screen dimensions like `pageTitle` and `pagePath`. `nextActionDimension` + * cannot be a dimension expression. * * * .google.analytics.data.v1alpha.Dimension next_action_dimension = 1; @@ -603,7 +609,9 @@ public Builder mergeFrom( * The dimension column added to the funnel visualization sub report response. * The next action dimension returns the next dimension value of this * dimension after the user has attained the `i`th funnel step. - * `nextActionDimension` currently only supports the `eventName` dimension. + * `nextActionDimension` currently only supports `eventName` and most Page / + * Screen dimensions like `pageTitle` and `pagePath`. `nextActionDimension` + * cannot be a dimension expression. * * * .google.analytics.data.v1alpha.Dimension next_action_dimension = 1; @@ -620,7 +628,9 @@ public boolean hasNextActionDimension() { * The dimension column added to the funnel visualization sub report response. * The next action dimension returns the next dimension value of this * dimension after the user has attained the `i`th funnel step. - * `nextActionDimension` currently only supports the `eventName` dimension. + * `nextActionDimension` currently only supports `eventName` and most Page / + * Screen dimensions like `pageTitle` and `pagePath`. `nextActionDimension` + * cannot be a dimension expression. * * * .google.analytics.data.v1alpha.Dimension next_action_dimension = 1; @@ -643,7 +653,9 @@ public com.google.analytics.data.v1alpha.Dimension getNextActionDimension() { * The dimension column added to the funnel visualization sub report response. * The next action dimension returns the next dimension value of this * dimension after the user has attained the `i`th funnel step. - * `nextActionDimension` currently only supports the `eventName` dimension. + * `nextActionDimension` currently only supports `eventName` and most Page / + * Screen dimensions like `pageTitle` and `pagePath`. `nextActionDimension` + * cannot be a dimension expression. * * * .google.analytics.data.v1alpha.Dimension next_action_dimension = 1; @@ -668,7 +680,9 @@ public Builder setNextActionDimension(com.google.analytics.data.v1alpha.Dimensio * The dimension column added to the funnel visualization sub report response. * The next action dimension returns the next dimension value of this * dimension after the user has attained the `i`th funnel step. - * `nextActionDimension` currently only supports the `eventName` dimension. + * `nextActionDimension` currently only supports `eventName` and most Page / + * Screen dimensions like `pageTitle` and `pagePath`. `nextActionDimension` + * cannot be a dimension expression. * * * .google.analytics.data.v1alpha.Dimension next_action_dimension = 1; @@ -691,7 +705,9 @@ public Builder setNextActionDimension( * The dimension column added to the funnel visualization sub report response. * The next action dimension returns the next dimension value of this * dimension after the user has attained the `i`th funnel step. - * `nextActionDimension` currently only supports the `eventName` dimension. + * `nextActionDimension` currently only supports `eventName` and most Page / + * Screen dimensions like `pageTitle` and `pagePath`. `nextActionDimension` + * cannot be a dimension expression. * * * .google.analytics.data.v1alpha.Dimension next_action_dimension = 1; @@ -720,7 +736,9 @@ public Builder mergeNextActionDimension(com.google.analytics.data.v1alpha.Dimens * The dimension column added to the funnel visualization sub report response. * The next action dimension returns the next dimension value of this * dimension after the user has attained the `i`th funnel step. - * `nextActionDimension` currently only supports the `eventName` dimension. + * `nextActionDimension` currently only supports `eventName` and most Page / + * Screen dimensions like `pageTitle` and `pagePath`. `nextActionDimension` + * cannot be a dimension expression. * * * .google.analytics.data.v1alpha.Dimension next_action_dimension = 1; @@ -743,7 +761,9 @@ public Builder clearNextActionDimension() { * The dimension column added to the funnel visualization sub report response. * The next action dimension returns the next dimension value of this * dimension after the user has attained the `i`th funnel step. - * `nextActionDimension` currently only supports the `eventName` dimension. + * `nextActionDimension` currently only supports `eventName` and most Page / + * Screen dimensions like `pageTitle` and `pagePath`. `nextActionDimension` + * cannot be a dimension expression. * * * .google.analytics.data.v1alpha.Dimension next_action_dimension = 1; @@ -760,7 +780,9 @@ public com.google.analytics.data.v1alpha.Dimension.Builder getNextActionDimensio * The dimension column added to the funnel visualization sub report response. * The next action dimension returns the next dimension value of this * dimension after the user has attained the `i`th funnel step. - * `nextActionDimension` currently only supports the `eventName` dimension. + * `nextActionDimension` currently only supports `eventName` and most Page / + * Screen dimensions like `pageTitle` and `pagePath`. `nextActionDimension` + * cannot be a dimension expression. * * * .google.analytics.data.v1alpha.Dimension next_action_dimension = 1; @@ -781,7 +803,9 @@ public com.google.analytics.data.v1alpha.DimensionOrBuilder getNextActionDimensi * The dimension column added to the funnel visualization sub report response. * The next action dimension returns the next dimension value of this * dimension after the user has attained the `i`th funnel step. - * `nextActionDimension` currently only supports the `eventName` dimension. + * `nextActionDimension` currently only supports `eventName` and most Page / + * Screen dimensions like `pageTitle` and `pagePath`. `nextActionDimension` + * cannot be a dimension expression. * * * .google.analytics.data.v1alpha.Dimension next_action_dimension = 1; diff --git a/proto-google-analytics-data-v1alpha/src/main/java/com/google/analytics/data/v1alpha/FunnelNextActionOrBuilder.java b/proto-google-analytics-data-v1alpha/src/main/java/com/google/analytics/data/v1alpha/FunnelNextActionOrBuilder.java index 398dd665..404a3869 100644 --- a/proto-google-analytics-data-v1alpha/src/main/java/com/google/analytics/data/v1alpha/FunnelNextActionOrBuilder.java +++ b/proto-google-analytics-data-v1alpha/src/main/java/com/google/analytics/data/v1alpha/FunnelNextActionOrBuilder.java @@ -30,7 +30,9 @@ public interface FunnelNextActionOrBuilder * The dimension column added to the funnel visualization sub report response. * The next action dimension returns the next dimension value of this * dimension after the user has attained the `i`th funnel step. - * `nextActionDimension` currently only supports the `eventName` dimension. + * `nextActionDimension` currently only supports `eventName` and most Page / + * Screen dimensions like `pageTitle` and `pagePath`. `nextActionDimension` + * cannot be a dimension expression. * * * .google.analytics.data.v1alpha.Dimension next_action_dimension = 1; @@ -45,7 +47,9 @@ public interface FunnelNextActionOrBuilder * The dimension column added to the funnel visualization sub report response. * The next action dimension returns the next dimension value of this * dimension after the user has attained the `i`th funnel step. - * `nextActionDimension` currently only supports the `eventName` dimension. + * `nextActionDimension` currently only supports `eventName` and most Page / + * Screen dimensions like `pageTitle` and `pagePath`. `nextActionDimension` + * cannot be a dimension expression. * * * .google.analytics.data.v1alpha.Dimension next_action_dimension = 1; @@ -60,7 +64,9 @@ public interface FunnelNextActionOrBuilder * The dimension column added to the funnel visualization sub report response. * The next action dimension returns the next dimension value of this * dimension after the user has attained the `i`th funnel step. - * `nextActionDimension` currently only supports the `eventName` dimension. + * `nextActionDimension` currently only supports `eventName` and most Page / + * Screen dimensions like `pageTitle` and `pagePath`. `nextActionDimension` + * cannot be a dimension expression. * * * .google.analytics.data.v1alpha.Dimension next_action_dimension = 1; diff --git a/proto-google-analytics-data-v1alpha/src/main/java/com/google/analytics/data/v1alpha/ReportingApiProto.java b/proto-google-analytics-data-v1alpha/src/main/java/com/google/analytics/data/v1alpha/ReportingApiProto.java index 7ea0ea7d..a9d41197 100644 --- a/proto-google-analytics-data-v1alpha/src/main/java/com/google/analytics/data/v1alpha/ReportingApiProto.java +++ b/proto-google-analytics-data-v1alpha/src/main/java/com/google/analytics/data/v1alpha/ReportingApiProto.java @@ -232,9 +232,9 @@ public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry r static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_google_analytics_data_v1alpha_FunnelFilterExpressionList_fieldAccessorTable; static final com.google.protobuf.Descriptors.Descriptor - internal_static_google_analytics_data_v1alpha_FunnelFilter_descriptor; + internal_static_google_analytics_data_v1alpha_FunnelFieldFilter_descriptor; static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_google_analytics_data_v1alpha_FunnelFilter_fieldAccessorTable; + internal_static_google_analytics_data_v1alpha_FunnelFieldFilter_fieldAccessorTable; static final com.google.protobuf.Descriptors.Descriptor internal_static_google_analytics_data_v1alpha_FunnelEventFilter_descriptor; static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable @@ -499,91 +499,92 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "terScopingB\017\n\rone_parameterB\014\n\none_filte" + "r\"Y\n\035SegmentParameterFilterScoping\022 \n\023in" + "_any_n_day_period\030\001 \001(\003H\000\210\001\001B\026\n\024_in_any_" - + "n_day_period\"\247\003\n\026FunnelFilterExpression\022" + + "n_day_period\"\262\003\n\026FunnelFilterExpression\022" + "N\n\tand_group\030\001 \001(\01329.google.analytics.da" + "ta.v1alpha.FunnelFilterExpressionListH\000\022" + "M\n\010or_group\030\002 \001(\01329.google.analytics.dat" + "a.v1alpha.FunnelFilterExpressionListH\000\022O" + "\n\016not_expression\030\003 \001(\01325.google.analytic" + "s.data.v1alpha.FunnelFilterExpressionH\000\022" - + "D\n\rfunnel_filter\030\004 \001(\0132+.google.analytic" - + "s.data.v1alpha.FunnelFilterH\000\022O\n\023funnel_" - + "event_filter\030\005 \001(\01320.google.analytics.da" - + "ta.v1alpha.FunnelEventFilterH\000B\006\n\004expr\"h" - + "\n\032FunnelFilterExpressionList\022J\n\013expressi" - + "ons\030\001 \003(\01325.google.analytics.data.v1alph" - + "a.FunnelFilterExpression\"\315\002\n\014FunnelFilte" - + "r\022\022\n\nfield_name\030\001 \001(\t\022D\n\rstring_filter\030\004" - + " \001(\0132+.google.analytics.data.v1alpha.Str" - + "ingFilterH\000\022E\n\016in_list_filter\030\005 \001(\0132+.go" - + "ogle.analytics.data.v1alpha.InListFilter" - + "H\000\022F\n\016numeric_filter\030\006 \001(\0132,.google.anal" - + "ytics.data.v1alpha.NumericFilterH\000\022F\n\016be" - + "tween_filter\030\007 \001(\0132,.google.analytics.da" - + "ta.v1alpha.BetweenFilterH\000B\014\n\none_filter" - + "\"\323\001\n\021FunnelEventFilter\022\027\n\nevent_name\030\001 \001" - + "(\tH\000\210\001\001\022o\n\"funnel_parameter_filter_expre" - + "ssion\030\002 \001(\0132>.google.analytics.data.v1al" - + "pha.FunnelParameterFilterExpressionH\001\210\001\001" - + "B\r\n\013_event_nameB%\n#_funnel_parameter_fil" - + "ter_expression\"\215\003\n\037FunnelParameterFilter" - + "Expression\022W\n\tand_group\030\001 \001(\0132B.google.a" - + "nalytics.data.v1alpha.FunnelParameterFil" - + "terExpressionListH\000\022V\n\010or_group\030\002 \001(\0132B." - + "google.analytics.data.v1alpha.FunnelPara" - + "meterFilterExpressionListH\000\022X\n\016not_expre" - + "ssion\030\003 \001(\0132>.google.analytics.data.v1al" - + "pha.FunnelParameterFilterExpressionH\000\022W\n" - + "\027funnel_parameter_filter\030\004 \001(\01324.google." - + "analytics.data.v1alpha.FunnelParameterFi" - + "lterH\000B\006\n\004expr\"z\n#FunnelParameterFilterE" - + "xpressionList\022S\n\013expressions\030\001 \003(\0132>.goo" - + "gle.analytics.data.v1alpha.FunnelParamet" - + "erFilterExpression\"\222\003\n\025FunnelParameterFi" - + "lter\022\036\n\024event_parameter_name\030\001 \001(\tH\000\022\035\n\023" - + "item_parameter_name\030\002 \001(\tH\000\022D\n\rstring_fi" - + "lter\030\004 \001(\0132+.google.analytics.data.v1alp" - + "ha.StringFilterH\001\022E\n\016in_list_filter\030\005 \001(" - + "\0132+.google.analytics.data.v1alpha.InList" - + "FilterH\001\022F\n\016numeric_filter\030\006 \001(\0132,.googl" - + "e.analytics.data.v1alpha.NumericFilterH\001" - + "\022F\n\016between_filter\030\007 \001(\0132,.google.analyt" - + "ics.data.v1alpha.BetweenFilterH\001B\017\n\rone_" - + "parameterB\014\n\none_filter\"e\n\026FunnelRespons" - + "eMetadata\022K\n\022sampling_metadatas\030\001 \003(\0132/." - + "google.analytics.data.v1alpha.SamplingMe" - + "tadata\"K\n\020SamplingMetadata\022\032\n\022samples_re" - + "ad_count\030\001 \001(\003\022\033\n\023sampling_space_size\030\002 " - + "\001(\003*\257\001\n\023UserCriteriaScoping\022%\n!USER_CRIT" - + "ERIA_SCOPING_UNSPECIFIED\020\000\022#\n\037USER_CRITE" - + "RIA_WITHIN_SAME_EVENT\020\001\022%\n!USER_CRITERIA" - + "_WITHIN_SAME_SESSION\020\002\022%\n!USER_CRITERIA_" - + "ACROSS_ALL_SESSIONS\020\003*|\n\025UserExclusionDu" - + "ration\022\'\n#USER_EXCLUSION_DURATION_UNSPEC" - + "IFIED\020\000\022\034\n\030USER_EXCLUSION_TEMPORARY\020\001\022\034\n" - + "\030USER_EXCLUSION_PERMANENT\020\002*\224\001\n\026SessionC" - + "riteriaScoping\022(\n$SESSION_CRITERIA_SCOPI" - + "NG_UNSPECIFIED\020\000\022&\n\"SESSION_CRITERIA_WIT" - + "HIN_SAME_EVENT\020\001\022(\n$SESSION_CRITERIA_WIT" - + "HIN_SAME_SESSION\020\002*\210\001\n\030SessionExclusionD" - + "uration\022*\n&SESSION_EXCLUSION_DURATION_UN" - + "SPECIFIED\020\000\022\037\n\033SESSION_EXCLUSION_TEMPORA" - + "RY\020\001\022\037\n\033SESSION_EXCLUSION_PERMANENT\020\002*d\n" - + "\024EventCriteriaScoping\022&\n\"EVENT_CRITERIA_" - + "SCOPING_UNSPECIFIED\020\000\022$\n EVENT_CRITERIA_" - + "WITHIN_SAME_EVENT\020\001*a\n\026EventExclusionDur" - + "ation\022(\n$EVENT_EXCLUSION_DURATION_UNSPEC" - + "IFIED\020\000\022\035\n\031EVENT_EXCLUSION_PERMANENT\020\001*\201" - + "\002\n\nMetricType\022\033\n\027METRIC_TYPE_UNSPECIFIED" - + "\020\000\022\020\n\014TYPE_INTEGER\020\001\022\016\n\nTYPE_FLOAT\020\002\022\020\n\014" - + "TYPE_SECONDS\020\004\022\025\n\021TYPE_MILLISECONDS\020\005\022\020\n" - + "\014TYPE_MINUTES\020\006\022\016\n\nTYPE_HOURS\020\007\022\021\n\rTYPE_" - + "STANDARD\020\010\022\021\n\rTYPE_CURRENCY\020\t\022\r\n\tTYPE_FE" - + "ET\020\n\022\016\n\nTYPE_MILES\020\013\022\017\n\013TYPE_METERS\020\014\022\023\n" - + "\017TYPE_KILOMETERS\020\rB{\n!com.google.analyti" - + "cs.data.v1alphaB\021ReportingApiProtoP\001ZAgo" - + "ogle.golang.org/genproto/googleapis/anal" - + "ytics/data/v1alpha;datab\006proto3" + + "O\n\023funnel_field_filter\030\004 \001(\01320.google.an" + + "alytics.data.v1alpha.FunnelFieldFilterH\000" + + "\022O\n\023funnel_event_filter\030\005 \001(\01320.google.a" + + "nalytics.data.v1alpha.FunnelEventFilterH" + + "\000B\006\n\004expr\"h\n\032FunnelFilterExpressionList\022" + + "J\n\013expressions\030\001 \003(\01325.google.analytics." + + "data.v1alpha.FunnelFilterExpression\"\322\002\n\021" + + "FunnelFieldFilter\022\022\n\nfield_name\030\001 \001(\t\022D\n" + + "\rstring_filter\030\004 \001(\0132+.google.analytics." + + "data.v1alpha.StringFilterH\000\022E\n\016in_list_f" + + "ilter\030\005 \001(\0132+.google.analytics.data.v1al" + + "pha.InListFilterH\000\022F\n\016numeric_filter\030\006 \001" + + "(\0132,.google.analytics.data.v1alpha.Numer" + + "icFilterH\000\022F\n\016between_filter\030\007 \001(\0132,.goo" + + "gle.analytics.data.v1alpha.BetweenFilter" + + "H\000B\014\n\none_filter\"\323\001\n\021FunnelEventFilter\022\027" + + "\n\nevent_name\030\001 \001(\tH\000\210\001\001\022o\n\"funnel_parame" + + "ter_filter_expression\030\002 \001(\0132>.google.ana" + + "lytics.data.v1alpha.FunnelParameterFilte" + + "rExpressionH\001\210\001\001B\r\n\013_event_nameB%\n#_funn" + + "el_parameter_filter_expression\"\215\003\n\037Funne" + + "lParameterFilterExpression\022W\n\tand_group\030" + + "\001 \001(\0132B.google.analytics.data.v1alpha.Fu" + + "nnelParameterFilterExpressionListH\000\022V\n\010o" + + "r_group\030\002 \001(\0132B.google.analytics.data.v1" + + "alpha.FunnelParameterFilterExpressionLis" + + "tH\000\022X\n\016not_expression\030\003 \001(\0132>.google.ana" + + "lytics.data.v1alpha.FunnelParameterFilte" + + "rExpressionH\000\022W\n\027funnel_parameter_filter" + + "\030\004 \001(\01324.google.analytics.data.v1alpha.F" + + "unnelParameterFilterH\000B\006\n\004expr\"z\n#Funnel" + + "ParameterFilterExpressionList\022S\n\013express" + + "ions\030\001 \003(\0132>.google.analytics.data.v1alp" + + "ha.FunnelParameterFilterExpression\"\222\003\n\025F" + + "unnelParameterFilter\022\036\n\024event_parameter_" + + "name\030\001 \001(\tH\000\022\035\n\023item_parameter_name\030\002 \001(" + + "\tH\000\022D\n\rstring_filter\030\004 \001(\0132+.google.anal" + + "ytics.data.v1alpha.StringFilterH\001\022E\n\016in_" + + "list_filter\030\005 \001(\0132+.google.analytics.dat" + + "a.v1alpha.InListFilterH\001\022F\n\016numeric_filt" + + "er\030\006 \001(\0132,.google.analytics.data.v1alpha" + + ".NumericFilterH\001\022F\n\016between_filter\030\007 \001(\013" + + "2,.google.analytics.data.v1alpha.Between" + + "FilterH\001B\017\n\rone_parameterB\014\n\none_filter\"" + + "e\n\026FunnelResponseMetadata\022K\n\022sampling_me" + + "tadatas\030\001 \003(\0132/.google.analytics.data.v1" + + "alpha.SamplingMetadata\"K\n\020SamplingMetada" + + "ta\022\032\n\022samples_read_count\030\001 \001(\003\022\033\n\023sampli" + + "ng_space_size\030\002 \001(\003*\257\001\n\023UserCriteriaScop" + + "ing\022%\n!USER_CRITERIA_SCOPING_UNSPECIFIED" + + "\020\000\022#\n\037USER_CRITERIA_WITHIN_SAME_EVENT\020\001\022" + + "%\n!USER_CRITERIA_WITHIN_SAME_SESSION\020\002\022%" + + "\n!USER_CRITERIA_ACROSS_ALL_SESSIONS\020\003*|\n" + + "\025UserExclusionDuration\022\'\n#USER_EXCLUSION" + + "_DURATION_UNSPECIFIED\020\000\022\034\n\030USER_EXCLUSIO" + + "N_TEMPORARY\020\001\022\034\n\030USER_EXCLUSION_PERMANEN" + + "T\020\002*\224\001\n\026SessionCriteriaScoping\022(\n$SESSIO" + + "N_CRITERIA_SCOPING_UNSPECIFIED\020\000\022&\n\"SESS" + + "ION_CRITERIA_WITHIN_SAME_EVENT\020\001\022(\n$SESS" + + "ION_CRITERIA_WITHIN_SAME_SESSION\020\002*\210\001\n\030S" + + "essionExclusionDuration\022*\n&SESSION_EXCLU" + + "SION_DURATION_UNSPECIFIED\020\000\022\037\n\033SESSION_E" + + "XCLUSION_TEMPORARY\020\001\022\037\n\033SESSION_EXCLUSIO" + + "N_PERMANENT\020\002*d\n\024EventCriteriaScoping\022&\n" + + "\"EVENT_CRITERIA_SCOPING_UNSPECIFIED\020\000\022$\n" + + " EVENT_CRITERIA_WITHIN_SAME_EVENT\020\001*a\n\026E" + + "ventExclusionDuration\022(\n$EVENT_EXCLUSION" + + "_DURATION_UNSPECIFIED\020\000\022\035\n\031EVENT_EXCLUSI" + + "ON_PERMANENT\020\001*\201\002\n\nMetricType\022\033\n\027METRIC_" + + "TYPE_UNSPECIFIED\020\000\022\020\n\014TYPE_INTEGER\020\001\022\016\n\n" + + "TYPE_FLOAT\020\002\022\020\n\014TYPE_SECONDS\020\004\022\025\n\021TYPE_M" + + "ILLISECONDS\020\005\022\020\n\014TYPE_MINUTES\020\006\022\016\n\nTYPE_" + + "HOURS\020\007\022\021\n\rTYPE_STANDARD\020\010\022\021\n\rTYPE_CURRE" + + "NCY\020\t\022\r\n\tTYPE_FEET\020\n\022\016\n\nTYPE_MILES\020\013\022\017\n\013" + + "TYPE_METERS\020\014\022\023\n\017TYPE_KILOMETERS\020\rB{\n!co" + + "m.google.analytics.data.v1alphaB\021Reporti" + + "ngApiProtoP\001ZAgoogle.golang.org/genproto" + + "/googleapis/analytics/data/v1alpha;datab" + + "\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom( @@ -1023,7 +1024,12 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_analytics_data_v1alpha_FunnelFilterExpression_descriptor, new java.lang.String[] { - "AndGroup", "OrGroup", "NotExpression", "FunnelFilter", "FunnelEventFilter", "Expr", + "AndGroup", + "OrGroup", + "NotExpression", + "FunnelFieldFilter", + "FunnelEventFilter", + "Expr", }); internal_static_google_analytics_data_v1alpha_FunnelFilterExpressionList_descriptor = getDescriptor().getMessageTypes().get(48); @@ -1033,11 +1039,11 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { new java.lang.String[] { "Expressions", }); - internal_static_google_analytics_data_v1alpha_FunnelFilter_descriptor = + internal_static_google_analytics_data_v1alpha_FunnelFieldFilter_descriptor = getDescriptor().getMessageTypes().get(49); - internal_static_google_analytics_data_v1alpha_FunnelFilter_fieldAccessorTable = + internal_static_google_analytics_data_v1alpha_FunnelFieldFilter_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_google_analytics_data_v1alpha_FunnelFilter_descriptor, + internal_static_google_analytics_data_v1alpha_FunnelFieldFilter_descriptor, new java.lang.String[] { "FieldName", "StringFilter", diff --git a/proto-google-analytics-data-v1alpha/src/main/java/com/google/analytics/data/v1alpha/RunFunnelReportRequest.java b/proto-google-analytics-data-v1alpha/src/main/java/com/google/analytics/data/v1alpha/RunFunnelReportRequest.java index 894352f3..40f94f8e 100644 --- a/proto-google-analytics-data-v1alpha/src/main/java/com/google/analytics/data/v1alpha/RunFunnelReportRequest.java +++ b/proto-google-analytics-data-v1alpha/src/main/java/com/google/analytics/data/v1alpha/RunFunnelReportRequest.java @@ -662,9 +662,11 @@ public com.google.analytics.data.v1alpha.FunnelBreakdownOrBuilder getFunnelBreak *
    * If specified, next action adds a dimension to the funnel visualization sub
    * report response. This next action dimension expands each funnel step to the
-   * unique values of the next action. For example a breakdown by the
+   * unique values of the next action. For example a next action of the
    * `eventName` dimension will create rows for several events (i.e.
    * `session_start` & `click`) and the total.
+   * Next action only supports `eventName` and most Page / Screen dimensions
+   * like `pageTitle` and `pagePath`.
    * 
* * .google.analytics.data.v1alpha.FunnelNextAction funnel_next_action = 5; @@ -681,9 +683,11 @@ public boolean hasFunnelNextAction() { *
    * If specified, next action adds a dimension to the funnel visualization sub
    * report response. This next action dimension expands each funnel step to the
-   * unique values of the next action. For example a breakdown by the
+   * unique values of the next action. For example a next action of the
    * `eventName` dimension will create rows for several events (i.e.
    * `session_start` & `click`) and the total.
+   * Next action only supports `eventName` and most Page / Screen dimensions
+   * like `pageTitle` and `pagePath`.
    * 
* * .google.analytics.data.v1alpha.FunnelNextAction funnel_next_action = 5; @@ -702,9 +706,11 @@ public com.google.analytics.data.v1alpha.FunnelNextAction getFunnelNextAction() *
    * If specified, next action adds a dimension to the funnel visualization sub
    * report response. This next action dimension expands each funnel step to the
-   * unique values of the next action. For example a breakdown by the
+   * unique values of the next action. For example a next action of the
    * `eventName` dimension will create rows for several events (i.e.
    * `session_start` & `click`) and the total.
+   * Next action only supports `eventName` and most Page / Screen dimensions
+   * like `pageTitle` and `pagePath`.
    * 
* * .google.analytics.data.v1alpha.FunnelNextAction funnel_next_action = 5; @@ -2520,9 +2526,11 @@ public com.google.analytics.data.v1alpha.FunnelBreakdown.Builder getFunnelBreakd *
      * If specified, next action adds a dimension to the funnel visualization sub
      * report response. This next action dimension expands each funnel step to the
-     * unique values of the next action. For example a breakdown by the
+     * unique values of the next action. For example a next action of the
      * `eventName` dimension will create rows for several events (i.e.
      * `session_start` & `click`) and the total.
+     * Next action only supports `eventName` and most Page / Screen dimensions
+     * like `pageTitle` and `pagePath`.
      * 
* * .google.analytics.data.v1alpha.FunnelNextAction funnel_next_action = 5; @@ -2538,9 +2546,11 @@ public boolean hasFunnelNextAction() { *
      * If specified, next action adds a dimension to the funnel visualization sub
      * report response. This next action dimension expands each funnel step to the
-     * unique values of the next action. For example a breakdown by the
+     * unique values of the next action. For example a next action of the
      * `eventName` dimension will create rows for several events (i.e.
      * `session_start` & `click`) and the total.
+     * Next action only supports `eventName` and most Page / Screen dimensions
+     * like `pageTitle` and `pagePath`.
      * 
* * .google.analytics.data.v1alpha.FunnelNextAction funnel_next_action = 5; @@ -2562,9 +2572,11 @@ public com.google.analytics.data.v1alpha.FunnelNextAction getFunnelNextAction() *
      * If specified, next action adds a dimension to the funnel visualization sub
      * report response. This next action dimension expands each funnel step to the
-     * unique values of the next action. For example a breakdown by the
+     * unique values of the next action. For example a next action of the
      * `eventName` dimension will create rows for several events (i.e.
      * `session_start` & `click`) and the total.
+     * Next action only supports `eventName` and most Page / Screen dimensions
+     * like `pageTitle` and `pagePath`.
      * 
* * .google.analytics.data.v1alpha.FunnelNextAction funnel_next_action = 5; @@ -2588,9 +2600,11 @@ public Builder setFunnelNextAction(com.google.analytics.data.v1alpha.FunnelNextA *
      * If specified, next action adds a dimension to the funnel visualization sub
      * report response. This next action dimension expands each funnel step to the
-     * unique values of the next action. For example a breakdown by the
+     * unique values of the next action. For example a next action of the
      * `eventName` dimension will create rows for several events (i.e.
      * `session_start` & `click`) and the total.
+     * Next action only supports `eventName` and most Page / Screen dimensions
+     * like `pageTitle` and `pagePath`.
      * 
* * .google.analytics.data.v1alpha.FunnelNextAction funnel_next_action = 5; @@ -2612,9 +2626,11 @@ public Builder setFunnelNextAction( *
      * If specified, next action adds a dimension to the funnel visualization sub
      * report response. This next action dimension expands each funnel step to the
-     * unique values of the next action. For example a breakdown by the
+     * unique values of the next action. For example a next action of the
      * `eventName` dimension will create rows for several events (i.e.
      * `session_start` & `click`) and the total.
+     * Next action only supports `eventName` and most Page / Screen dimensions
+     * like `pageTitle` and `pagePath`.
      * 
* * .google.analytics.data.v1alpha.FunnelNextAction funnel_next_action = 5; @@ -2642,9 +2658,11 @@ public Builder mergeFunnelNextAction(com.google.analytics.data.v1alpha.FunnelNex *
      * If specified, next action adds a dimension to the funnel visualization sub
      * report response. This next action dimension expands each funnel step to the
-     * unique values of the next action. For example a breakdown by the
+     * unique values of the next action. For example a next action of the
      * `eventName` dimension will create rows for several events (i.e.
      * `session_start` & `click`) and the total.
+     * Next action only supports `eventName` and most Page / Screen dimensions
+     * like `pageTitle` and `pagePath`.
      * 
* * .google.analytics.data.v1alpha.FunnelNextAction funnel_next_action = 5; @@ -2666,9 +2684,11 @@ public Builder clearFunnelNextAction() { *
      * If specified, next action adds a dimension to the funnel visualization sub
      * report response. This next action dimension expands each funnel step to the
-     * unique values of the next action. For example a breakdown by the
+     * unique values of the next action. For example a next action of the
      * `eventName` dimension will create rows for several events (i.e.
      * `session_start` & `click`) and the total.
+     * Next action only supports `eventName` and most Page / Screen dimensions
+     * like `pageTitle` and `pagePath`.
      * 
* * .google.analytics.data.v1alpha.FunnelNextAction funnel_next_action = 5; @@ -2684,9 +2704,11 @@ public com.google.analytics.data.v1alpha.FunnelNextAction.Builder getFunnelNextA *
      * If specified, next action adds a dimension to the funnel visualization sub
      * report response. This next action dimension expands each funnel step to the
-     * unique values of the next action. For example a breakdown by the
+     * unique values of the next action. For example a next action of the
      * `eventName` dimension will create rows for several events (i.e.
      * `session_start` & `click`) and the total.
+     * Next action only supports `eventName` and most Page / Screen dimensions
+     * like `pageTitle` and `pagePath`.
      * 
* * .google.analytics.data.v1alpha.FunnelNextAction funnel_next_action = 5; @@ -2707,9 +2729,11 @@ public com.google.analytics.data.v1alpha.FunnelNextAction.Builder getFunnelNextA *
      * If specified, next action adds a dimension to the funnel visualization sub
      * report response. This next action dimension expands each funnel step to the
-     * unique values of the next action. For example a breakdown by the
+     * unique values of the next action. For example a next action of the
      * `eventName` dimension will create rows for several events (i.e.
      * `session_start` & `click`) and the total.
+     * Next action only supports `eventName` and most Page / Screen dimensions
+     * like `pageTitle` and `pagePath`.
      * 
* * .google.analytics.data.v1alpha.FunnelNextAction funnel_next_action = 5; diff --git a/proto-google-analytics-data-v1alpha/src/main/java/com/google/analytics/data/v1alpha/RunFunnelReportRequestOrBuilder.java b/proto-google-analytics-data-v1alpha/src/main/java/com/google/analytics/data/v1alpha/RunFunnelReportRequestOrBuilder.java index 8bdda226..b95cef5f 100644 --- a/proto-google-analytics-data-v1alpha/src/main/java/com/google/analytics/data/v1alpha/RunFunnelReportRequestOrBuilder.java +++ b/proto-google-analytics-data-v1alpha/src/main/java/com/google/analytics/data/v1alpha/RunFunnelReportRequestOrBuilder.java @@ -218,9 +218,11 @@ public interface RunFunnelReportRequestOrBuilder *
    * If specified, next action adds a dimension to the funnel visualization sub
    * report response. This next action dimension expands each funnel step to the
-   * unique values of the next action. For example a breakdown by the
+   * unique values of the next action. For example a next action of the
    * `eventName` dimension will create rows for several events (i.e.
    * `session_start` & `click`) and the total.
+   * Next action only supports `eventName` and most Page / Screen dimensions
+   * like `pageTitle` and `pagePath`.
    * 
* * .google.analytics.data.v1alpha.FunnelNextAction funnel_next_action = 5; @@ -234,9 +236,11 @@ public interface RunFunnelReportRequestOrBuilder *
    * If specified, next action adds a dimension to the funnel visualization sub
    * report response. This next action dimension expands each funnel step to the
-   * unique values of the next action. For example a breakdown by the
+   * unique values of the next action. For example a next action of the
    * `eventName` dimension will create rows for several events (i.e.
    * `session_start` & `click`) and the total.
+   * Next action only supports `eventName` and most Page / Screen dimensions
+   * like `pageTitle` and `pagePath`.
    * 
* * .google.analytics.data.v1alpha.FunnelNextAction funnel_next_action = 5; @@ -250,9 +254,11 @@ public interface RunFunnelReportRequestOrBuilder *
    * If specified, next action adds a dimension to the funnel visualization sub
    * report response. This next action dimension expands each funnel step to the
-   * unique values of the next action. For example a breakdown by the
+   * unique values of the next action. For example a next action of the
    * `eventName` dimension will create rows for several events (i.e.
    * `session_start` & `click`) and the total.
+   * Next action only supports `eventName` and most Page / Screen dimensions
+   * like `pageTitle` and `pagePath`.
    * 
* * .google.analytics.data.v1alpha.FunnelNextAction funnel_next_action = 5; diff --git a/proto-google-analytics-data-v1alpha/src/main/proto/google/analytics/data/v1alpha/analytics_data_api.proto b/proto-google-analytics-data-v1alpha/src/main/proto/google/analytics/data/v1alpha/analytics_data_api.proto index 64be8151..f86cf8db 100644 --- a/proto-google-analytics-data-v1alpha/src/main/proto/google/analytics/data/v1alpha/analytics_data_api.proto +++ b/proto-google-analytics-data-v1alpha/src/main/proto/google/analytics/data/v1alpha/analytics_data_api.proto @@ -96,9 +96,12 @@ message RunFunnelReportRequest { // If specified, next action adds a dimension to the funnel visualization sub // report response. This next action dimension expands each funnel step to the - // unique values of the next action. For example a breakdown by the + // unique values of the next action. For example a next action of the // `eventName` dimension will create rows for several events (i.e. // `session_start` & `click`) and the total. + // + // Next action only supports `eventName` and most Page / Screen dimensions + // like `pageTitle` and `pagePath`. FunnelNextAction funnel_next_action = 5; // The funnel visualization type controls the dimensions present in the funnel diff --git a/proto-google-analytics-data-v1alpha/src/main/proto/google/analytics/data/v1alpha/data.proto b/proto-google-analytics-data-v1alpha/src/main/proto/google/analytics/data/v1alpha/data.proto index 6c566e20..9ef9f614 100644 --- a/proto-google-analytics-data-v1alpha/src/main/proto/google/analytics/data/v1alpha/data.proto +++ b/proto-google-analytics-data-v1alpha/src/main/proto/google/analytics/data/v1alpha/data.proto @@ -403,7 +403,10 @@ message FunnelNextAction { // The dimension column added to the funnel visualization sub report response. // The next action dimension returns the next dimension value of this // dimension after the user has attained the `i`th funnel step. - // `nextActionDimension` currently only supports the `eventName` dimension. + // + // `nextActionDimension` currently only supports `eventName` and most Page / + // Screen dimensions like `pageTitle` and `pagePath`. `nextActionDimension` + // cannot be a dimension expression. Dimension next_action_dimension = 1; // The maximum number of distinct values of the breakdown dimension to return @@ -1026,8 +1029,8 @@ message FunnelFilterExpression { // The FunnelFilterExpression is NOT of `notExpression`. FunnelFilterExpression not_expression = 3; - // A primitive funnel filter. - FunnelFilter funnel_filter = 4; + // A funnel filter for a dimension or metric. + FunnelFieldFilter funnel_field_filter = 4; // Creates a filter that matches events of a single event name. If a // parameter filter expression is specified, only the subset of events that @@ -1044,7 +1047,7 @@ message FunnelFilterExpressionList { } // An expression to filter dimension or metric values. -message FunnelFilter { +message FunnelFieldFilter { // The dimension name or metric name. string field_name = 1;