164ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski/* 264ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski * Copyright (C) 2015 The Android Open Source Project 364ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski * 464ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski * Licensed under the Apache License, Version 2.0 (the "License"); 564ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski * you may not use this file except in compliance with the License. 664ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski * You may obtain a copy of the License at 764ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski * 864ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski * http://www.apache.org/licenses/LICENSE-2.0 964ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski * 1064ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski * Unless required by applicable law or agreed to in writing, software 1164ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski * distributed under the License is distributed on an "AS IS" BASIS, 1264ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1364ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski * See the License for the specific language governing permissions and 1464ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski * limitations under the License. 1564ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski */ 1664ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski 1764ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewskipackage android.support.provider; 1864ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski 19369746f1bd8e90fb04e11f181623413b7ae8e063Tomasz Mikolajewskiimport android.support.annotation.Nullable; 2064ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewskiimport android.text.TextUtils; 2164ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski 2264ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewskiimport java.util.Collection; 2364ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski 2464ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski/** 2564ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski * Simple static methods to be called at the start of your own methods to verify 2664ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski * correct arguments and state. 2764ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski * @hide 2864ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski */ 2964ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewskifinal class Preconditions { 3064ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski static void checkArgument(boolean expression, String message) { 3164ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski if (!expression) { 3264ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski throw new IllegalArgumentException(message); 3364ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski } 3464ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski } 3564ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski 3664ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski static void checkArgumentNotNull(Object object, String message) { 3764ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski if (object == null) { 3864ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski throw new IllegalArgumentException(message); 3964ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski } 4064ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski } 4164ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski 42369746f1bd8e90fb04e11f181623413b7ae8e063Tomasz Mikolajewski static void checkArgumentEquals(String expected, @Nullable String actual, String message) { 4364ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski if (!TextUtils.equals(expected, actual)) { 4464ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski throw new IllegalArgumentException(String.format(message, String.valueOf(expected), 4564ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski String.valueOf(actual))); 4664ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski } 4764ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski } 4864ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski 4964ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski static void checkState(boolean expression, String message) { 5064ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski if (!expression) { 5164ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski throw new IllegalStateException(message); 5264ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski } 5364ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski } 5464ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski} 55