Sources/SparkConnect/ProtoUtils.swift (12 lines of code) (raw):
//
// 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.
//
import Foundation
/// Utility functions like `org.apache.spark.sql.connect.common.ProtoUtils`.
public enum ProtoUtils {
private static let SPARK_JOB_TAGS_SEP = "," // SparkContext.SPARK_JOB_TAGS_SEP
/// Validate if a tag for ExecutePlanRequest.tags is valid. Throw IllegalArgumentException if not.
/// - Parameter tag: A tag string.
public static func throwIfInvalidTag(_ tag: String) throws {
// Same format rules apply to Spark Connect execution tags as to SparkContext job tags,
// because the Spark Connect job tag is also used as part of SparkContext job tag.
// See SparkContext.throwIfInvalidTag and ExecuteHolderSessionTag
if tag.isEmpty {
throw SparkConnectError.InvalidArgumentException
}
if tag.contains(SPARK_JOB_TAGS_SEP) {
throw SparkConnectError.InvalidArgumentException
}
}
}