com.google.cloud.dataflow.sdk.util.state.StateContexts Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of google-cloud-dataflow-java-sdk-all Show documentation
Show all versions of google-cloud-dataflow-java-sdk-all Show documentation
Google Cloud Dataflow Java SDK provides a simple, Java-based
interface for processing virtually any size data using Google cloud
resources. This artifact includes entire Dataflow Java SDK.
/*
* Copyright (C) 2016 Google Inc.
*
* 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
*
* http://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.cloud.dataflow.sdk.util.state;
import com.google.cloud.dataflow.sdk.options.PipelineOptions;
import com.google.cloud.dataflow.sdk.transforms.windowing.BoundedWindow;
import com.google.cloud.dataflow.sdk.util.WindowingInternals;
import com.google.cloud.dataflow.sdk.values.PCollectionView;
import javax.annotation.Nullable;
/**
* Factory that produces {@link StateContext} based on different inputs.
*/
public class StateContexts {
private static final StateContext NULL_CONTEXT =
new StateContext() {
@Override
public PipelineOptions getPipelineOptions() {
throw new IllegalArgumentException("cannot call getPipelineOptions() in a null context");
}
@Override
public T sideInput(PCollectionView view) {
throw new IllegalArgumentException("cannot call sideInput() in a null context");
}
@Override
public BoundedWindow window() {
throw new IllegalArgumentException("cannot call window() in a null context");
}};
/**
* Returns a fake {@link StateContext}.
*/
@SuppressWarnings("unchecked")
public static StateContext nullContext() {
return (StateContext) NULL_CONTEXT;
}
/**
* Returns a {@link StateContext} that only contains the state window.
*/
public static StateContext windowOnly(final W window) {
return new StateContext() {
@Override
public PipelineOptions getPipelineOptions() {
throw new IllegalArgumentException(
"cannot call getPipelineOptions() in a window only context");
}
@Override
public T sideInput(PCollectionView view) {
throw new IllegalArgumentException("cannot call sideInput() in a window only context");
}
@Override
public W window() {
return window;
}
};
}
/**
* Returns a {@link StateContext} from {@code PipelineOptions}, {@link WindowingInternals},
* and the state window.
*/
public static StateContext createFromComponents(
@Nullable final PipelineOptions options,
final WindowingInternals, ?> windowingInternals,
final W window) {
@SuppressWarnings("unchecked")
StateContext typedNullContext = (StateContext) NULL_CONTEXT;
if (options == null) {
return typedNullContext;
} else {
return new StateContext() {
@Override
public PipelineOptions getPipelineOptions() {
return options;
}
@Override
public T sideInput(PCollectionView view) {
return windowingInternals.sideInput(view, window);
}
@Override
public W window() {
return window;
}
};
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy