12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- /**
- * 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.
- */
- /**
- * The data adapter that performs data exchange with Ambari Server's REST interface and other backend servers.
- *
- * To allow for mixture of mock data via Fixture and actual data exchange with backend servers while we iteratively
- * integrate, we are composing an instance of the fixture adapter.
- * The idea is to conditionally use the fixture adapter for model types that have not been integrated yet,
- * and to use a custom, modified implementation of DS.RESTAdapter for model types that have been integrated.
- */
- module.exports = DS.Adapter.create({
- fixtureAdapter: DS.FixtureAdapter.create(),
- restAdapter: DS.RESTAdapter.extend({
- buildURL: function (record, suffix) {
- if (/((ftp|http|https):\/\/)?(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/i.test(record)) {
- return record;
- }
- return this._super(record, suffix);
- },
- ajax: function (url, type, hash) {
- hash.url = url;
- hash.type = type;
- hash.dataType = 'jsonp';
- hash.contentType = 'application/javascript; charset=utf-8';
- hash.context = this;
- hash.jsonp = 'jsonp';
- if (hash.data && type !== 'GET') {
- hash.data = JSON.stringify(hash.data);
- }
- jQuery.ajax(hash);
- }
- }).create(),
- isRestType: function (type) {
- return type.url != null;
- },
- find: function (store, type, id) {
- if (this.isRestType(type)) {
- return this.restAdapter.find(store, type, id);
- } else {
- return this.fixtureAdapter.find(store, type, id);
- }
- },
- findMany: function (store, type, ids) {
- if (this.isRestType(type)) {
- return this.restAdapter.findMany(store, type, ids);
- } else {
- return this.fixtureAdapter.findMany(store, type, ids);
- }
- },
- findAll: function (store, type) {
- if (this.isRestType(type)) {
- return this.restAdapter.findAll(store, type);
- } else {
- return this.fixtureAdapter.findAll(store, type);
- }
- },
- findQuery: function (store, type, query, array) {
- if (this.isRestType(type)) {
- return this.restAdapter.findQuery(store, type, query, array);
- } else {
- return this.fixtureAdapter.findQuery(store, type, query, array);
- }
- },
- createRecord: function (store, type, record) {
- if (this.isRestType(type)) {
- return this.restAdapter.createRecord(store, type, record);
- } else {
- return this.fixtureAdapter.createRecord(store, type, record);
- }
- },
- updateRecord: function (store, type, record) {
- if (this.isRestType(type)) {
- return this.restAdapter.updateRecord(store, type, record);
- } else {
- return this.fixtureAdapter.updateRecord(store, type, record);
- }
- }
- });
|