1a743427896d0877aacedb34ac4927691c56768dbEtan Cohen/* 2a743427896d0877aacedb34ac4927691c56768dbEtan Cohen * Copyright (C) 2017 The Android Open Source Project 3a743427896d0877aacedb34ac4927691c56768dbEtan Cohen * 4a743427896d0877aacedb34ac4927691c56768dbEtan Cohen * Licensed under the Apache License, Version 2.0 (the "License"); 5a743427896d0877aacedb34ac4927691c56768dbEtan Cohen * you may not use this file except in compliance with the License. 6a743427896d0877aacedb34ac4927691c56768dbEtan Cohen * You may obtain a copy of the License at 7a743427896d0877aacedb34ac4927691c56768dbEtan Cohen * 8a743427896d0877aacedb34ac4927691c56768dbEtan Cohen * http://www.apache.org/licenses/LICENSE-2.0 9a743427896d0877aacedb34ac4927691c56768dbEtan Cohen * 10a743427896d0877aacedb34ac4927691c56768dbEtan Cohen * Unless required by applicable law or agreed to in writing, software 11a743427896d0877aacedb34ac4927691c56768dbEtan Cohen * distributed under the License is distributed on an "AS IS" BASIS, 12a743427896d0877aacedb34ac4927691c56768dbEtan Cohen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a743427896d0877aacedb34ac4927691c56768dbEtan Cohen * See the License for the specific language governing permissions and 14a743427896d0877aacedb34ac4927691c56768dbEtan Cohen * limitations under the License. 15a743427896d0877aacedb34ac4927691c56768dbEtan Cohen */ 16a743427896d0877aacedb34ac4927691c56768dbEtan Cohen 17a743427896d0877aacedb34ac4927691c56768dbEtan Cohenpackage android.net; 18a743427896d0877aacedb34ac4927691c56768dbEtan Cohen 19a743427896d0877aacedb34ac4927691c56768dbEtan Cohenimport android.os.Parcel; 20a743427896d0877aacedb34ac4927691c56768dbEtan Cohenimport android.os.Parcelable; 21a743427896d0877aacedb34ac4927691c56768dbEtan Cohenimport android.text.TextUtils; 22a743427896d0877aacedb34ac4927691c56768dbEtan Cohen 23a743427896d0877aacedb34ac4927691c56768dbEtan Cohenimport com.android.internal.util.Preconditions; 24a743427896d0877aacedb34ac4927691c56768dbEtan Cohen 25a743427896d0877aacedb34ac4927691c56768dbEtan Cohenimport java.util.Objects; 26a743427896d0877aacedb34ac4927691c56768dbEtan Cohen 27a743427896d0877aacedb34ac4927691c56768dbEtan Cohen/** @hide */ 28a743427896d0877aacedb34ac4927691c56768dbEtan Cohenpublic final class StringNetworkSpecifier extends NetworkSpecifier implements Parcelable { 29a743427896d0877aacedb34ac4927691c56768dbEtan Cohen /** 30a743427896d0877aacedb34ac4927691c56768dbEtan Cohen * Arbitrary string used to pass (additional) information to the network factory. 31a743427896d0877aacedb34ac4927691c56768dbEtan Cohen */ 32a743427896d0877aacedb34ac4927691c56768dbEtan Cohen public final String specifier; 33a743427896d0877aacedb34ac4927691c56768dbEtan Cohen 34a743427896d0877aacedb34ac4927691c56768dbEtan Cohen public StringNetworkSpecifier(String specifier) { 35a743427896d0877aacedb34ac4927691c56768dbEtan Cohen Preconditions.checkStringNotEmpty(specifier); 36a743427896d0877aacedb34ac4927691c56768dbEtan Cohen this.specifier = specifier; 37a743427896d0877aacedb34ac4927691c56768dbEtan Cohen } 38a743427896d0877aacedb34ac4927691c56768dbEtan Cohen 39a743427896d0877aacedb34ac4927691c56768dbEtan Cohen @Override 40a743427896d0877aacedb34ac4927691c56768dbEtan Cohen public boolean satisfiedBy(NetworkSpecifier other) { 41a743427896d0877aacedb34ac4927691c56768dbEtan Cohen return equals(other); 42a743427896d0877aacedb34ac4927691c56768dbEtan Cohen } 43a743427896d0877aacedb34ac4927691c56768dbEtan Cohen 44a743427896d0877aacedb34ac4927691c56768dbEtan Cohen @Override 45a743427896d0877aacedb34ac4927691c56768dbEtan Cohen public boolean equals(Object o) { 46a743427896d0877aacedb34ac4927691c56768dbEtan Cohen if (!(o instanceof StringNetworkSpecifier)) return false; 47a743427896d0877aacedb34ac4927691c56768dbEtan Cohen return TextUtils.equals(specifier, ((StringNetworkSpecifier) o).specifier); 48a743427896d0877aacedb34ac4927691c56768dbEtan Cohen } 49a743427896d0877aacedb34ac4927691c56768dbEtan Cohen 50a743427896d0877aacedb34ac4927691c56768dbEtan Cohen @Override 51a743427896d0877aacedb34ac4927691c56768dbEtan Cohen public int hashCode() { 52a743427896d0877aacedb34ac4927691c56768dbEtan Cohen return Objects.hashCode(specifier); 53a743427896d0877aacedb34ac4927691c56768dbEtan Cohen } 54a743427896d0877aacedb34ac4927691c56768dbEtan Cohen 55a743427896d0877aacedb34ac4927691c56768dbEtan Cohen @Override 56a743427896d0877aacedb34ac4927691c56768dbEtan Cohen public String toString() { 57a743427896d0877aacedb34ac4927691c56768dbEtan Cohen return specifier; 58a743427896d0877aacedb34ac4927691c56768dbEtan Cohen } 59a743427896d0877aacedb34ac4927691c56768dbEtan Cohen 60a743427896d0877aacedb34ac4927691c56768dbEtan Cohen @Override 61a743427896d0877aacedb34ac4927691c56768dbEtan Cohen public int describeContents() { 62a743427896d0877aacedb34ac4927691c56768dbEtan Cohen return 0; 63a743427896d0877aacedb34ac4927691c56768dbEtan Cohen } 64a743427896d0877aacedb34ac4927691c56768dbEtan Cohen 65a743427896d0877aacedb34ac4927691c56768dbEtan Cohen @Override 66a743427896d0877aacedb34ac4927691c56768dbEtan Cohen public void writeToParcel(Parcel dest, int flags) { 67a743427896d0877aacedb34ac4927691c56768dbEtan Cohen dest.writeString(specifier); 68a743427896d0877aacedb34ac4927691c56768dbEtan Cohen } 69a743427896d0877aacedb34ac4927691c56768dbEtan Cohen 70a743427896d0877aacedb34ac4927691c56768dbEtan Cohen public static final Parcelable.Creator<StringNetworkSpecifier> CREATOR = 71a743427896d0877aacedb34ac4927691c56768dbEtan Cohen new Parcelable.Creator<StringNetworkSpecifier>() { 72a743427896d0877aacedb34ac4927691c56768dbEtan Cohen public StringNetworkSpecifier createFromParcel(Parcel in) { 73a743427896d0877aacedb34ac4927691c56768dbEtan Cohen return new StringNetworkSpecifier(in.readString()); 74a743427896d0877aacedb34ac4927691c56768dbEtan Cohen } 75a743427896d0877aacedb34ac4927691c56768dbEtan Cohen public StringNetworkSpecifier[] newArray(int size) { 76a743427896d0877aacedb34ac4927691c56768dbEtan Cohen return new StringNetworkSpecifier[size]; 77a743427896d0877aacedb34ac4927691c56768dbEtan Cohen } 78a743427896d0877aacedb34ac4927691c56768dbEtan Cohen }; 79a743427896d0877aacedb34ac4927691c56768dbEtan Cohen} 80