blob: 1cad9cc58dc5a9c13c85adfcecf33e50709f8e63 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 org.apache.beam.runners.dataflow.worker.apiary;
import java.util.List;
import org.apache.beam.vendor.guava.v20_0.com.google.common.collect.ImmutableList;
/**
* Static convenience methods to work around default encodings done by Apiary for default fields.
*/
public class Apiary {
/**
* Returns an empty list if list is null otherwise returns the list. Apiary encodes empty lists as
* null. This function simplifies handling list fields by treating nulls as empty lists.
*/
public static <V> List<V> listOrEmpty(List<V> list) {
return list == null ? ImmutableList.<V>of() : list;
}
/**
* Apiary fields with default values returns null instead of 0 for integer types. This function
* simplifies handling {@code int} fields by returning the default of 0.
*/
public static int intOrZero(Integer value) {
if (value == null) {
return 0;
}
return value;
}
}