16a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wen/* 26a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wen * Copyright (C) 2015 The Android Open Source Project 36a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wen * 46a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wen * Licensed under the Apache License, Version 2.0 (the "License"); 56a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wen * you may not use this file except in compliance with the License. 66a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wen * You may obtain a copy of the License at 76a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wen * 86a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wen * http://www.apache.org/licenses/LICENSE-2.0 96a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wen * 106a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wen * Unless required by applicable law or agreed to in writing, software 116a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wen * distributed under the License is distributed on an "AS IS" BASIS, 126a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wen * See the License for the specific language governing permissions and 146a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wen * limitations under the License. 156a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wen */ 166a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wen 176a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wenpackage com.android.statementservice.retriever; 186a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wen 196a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wenimport org.json.JSONObject; 206a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wen 216a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wen/** 226a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wen * Factory to create asset from JSON string. 236a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wen */ 246a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wen/* package private */ final class AssetFactory { 256a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wen 266a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wen private static final String FIELD_NOT_STRING_FORMAT_STRING = "Expected %s to be string."; 276a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wen 286a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wen private AssetFactory() {} 296a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wen 306a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wen /** 316a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wen * Checks that the input is a valid asset with purposes. 326a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wen * 336a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wen * @throws AssociationServiceException if the asset is not well formatted. 346a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wen */ 353bbc90992645934df523762f7dcdb097eae366d5Joseph Wen public static AbstractAsset create(JSONObject asset) 366a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wen throws AssociationServiceException { 376a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wen String namespace = asset.optString(Utils.NAMESPACE_FIELD, null); 386a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wen if (namespace == null) { 396a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wen throw new AssociationServiceException(String.format( 406a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wen FIELD_NOT_STRING_FORMAT_STRING, Utils.NAMESPACE_FIELD)); 416a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wen } 426a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wen 436a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wen if (namespace.equals(Utils.NAMESPACE_WEB)) { 446a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wen return WebAsset.create(asset); 456a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wen } else if (namespace.equals(Utils.NAMESPACE_ANDROID_APP)) { 466a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wen return AndroidAppAsset.create(asset); 476a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wen } else { 486a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wen throw new AssociationServiceException("Namespace " + namespace + " is not supported."); 496a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wen } 506a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wen } 516a34bb2d6a6cbc7a70bdf0c53d238dc28e0b1d58Joseph Wen} 52