UNPKG

com.phloxui

Version:

PhloxUI Ng2+ Framework

122 lines (121 loc) 16.8 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import { Headers, RequestOptions, RequestMethod } from '@angular/http'; import { AbstractServerResource } from '../AbstractServerResource'; export class JSONResource extends AbstractServerResource { /** * @param {?} connectionMgr */ constructor(connectionMgr) { super(connectionMgr); this.basePath = 'http://' + window.location.hostname + ':8081/hello/json'; this.schemaCached = {}; this.defaultHeaders = new Headers(); // default more if exist } /** * @param {?} className * @return {?} */ getSchema(className) { if (className === null || typeof className !== 'string' || className === '') { return Promise.resolve(null); } if (this.schemaCached[className] !== null && typeof this.schemaCached[className] !== 'undefined') { return Promise.resolve(this.schemaCached[className]); } return new Promise((resolve, reject) => { // cache only default load let /** @type {?} */ path = this.basePath + "/" + className + "/schema"; let /** @type {?} */ headers = new Headers(this.defaultHeaders.toJSON()); let /** @type {?} */ requestOptions = new RequestOptions({ method: RequestMethod.Get, headers: headers }); let /** @type {?} */ prom = this.connectionMgr.getWithHttpInfo(path, requestOptions); prom.then((response) => { let /** @type {?} */ jsonSchemaResult = null; if (response !== null && typeof response !== 'undefined') { jsonSchemaResult = response.json(); if (jsonSchemaResult !== null && typeof jsonSchemaResult !== 'undefined') { // cache result this.schemaCached[className] = jsonSchemaResult; } } resolve(jsonSchemaResult); }, (errorResult) => { reject(errorResult); }); }).catch((error) => { return Promise.reject(error); }); } /** * @param {?} className * @param {?} ignoreNull * @param {?} ignoreEmpty * @param {?} ignorePropRegex * @param {?} includePropsFields * @return {?} */ getSchemaWithConfigs(className, ignoreNull, ignoreEmpty, ignorePropRegex, includePropsFields) { if (className === null || typeof className !== 'string' || className === '') { return Promise.resolve(null); } return new Promise((resolve, reject) => { // cache only default load let /** @type {?} */ path = this.basePath + "/" + className + "/schema"; let /** @type {?} */ pathParam = ""; if (ignoreNull !== null && typeof ignoreNull !== 'undefined') { pathParam += "ignoreNull=" + (ignoreNull ? "true" : "false") + "&"; } if (ignoreEmpty !== null && typeof ignoreEmpty !== 'undefined') { pathParam += "ignoreEmpty=" + (ignoreEmpty ? "true" : "false") + "&"; } if (ignorePropRegex !== null && typeof ignorePropRegex !== 'undefined' && ignorePropRegex !== '') { pathParam += "ignorePropRegex=" + ignorePropRegex + "&"; } if (includePropsFields !== null && typeof includePropsFields !== 'undefined') { let /** @type {?} */ nameAppendStmt = ""; for (let /** @type {?} */ name of includePropsFields) { nameAppendStmt += name + ","; } if (nameAppendStmt !== '') { nameAppendStmt = nameAppendStmt.slice(0, nameAppendStmt.length - 1); pathParam += "includePropsFields=" + nameAppendStmt + "&"; } } if (pathParam !== "") { pathParam = pathParam.slice(0, pathParam.length - 1); path += "?" + pathParam; } let /** @type {?} */ headers = new Headers(this.defaultHeaders.toJSON()); let /** @type {?} */ requestOptions = new RequestOptions({ method: RequestMethod.Get, headers: headers }); let /** @type {?} */ prom = this.connectionMgr.getWithHttpInfo(path, requestOptions); prom.then((response) => { let /** @type {?} */ jsonSchemaResult = null; if (response !== null && typeof response !== 'undefined') { jsonSchemaResult = response.json(); } resolve(jsonSchemaResult); }, (errorResult) => { reject(errorResult); }); }).catch((error) => { return Promise.reject(error); }); } } function JSONResource_tsickle_Closure_declarations() { /** @type {?} */ JSONResource.prototype.schemaCached; /** @type {?} */ JSONResource.prototype.basePath; /** @type {?} */ JSONResource.prototype.defaultHeaders; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSlNPTlJlc291cmNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vY29tLnBobG94dWkvIiwic291cmNlcyI6WyJsaWIvc2hhcmUvcmVzb3VyY2UvSlNPTlJlc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxPQUFPLEVBQWtCLE9BQU8sRUFBRSxjQUFjLEVBQTRELGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdqSixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUtuRSxNQUFNLG1CQUFvQixTQUFRLHNCQUFzQjs7OztJQU10RCxZQUFZLGFBQWlDO1FBQzNDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQzt3QkFKRixTQUFTLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsa0JBQWtCO1FBTTVFLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztLQUNyQzs7Ozs7SUFFTSxTQUFTLENBQUMsU0FBaUI7UUFDaEMsRUFBRSxDQUFDLENBQUMsU0FBUyxLQUFLLElBQUksSUFBSSxPQUFPLFNBQVMsS0FBSyxRQUFRLElBQUksU0FBUyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDNUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDOUI7UUFFRCxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxLQUFLLElBQUksSUFBSSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQztZQUNqRyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7U0FDdEQ7UUFFRCxNQUFNLENBQUMsSUFBSSxPQUFPLENBQVcsQ0FBQyxPQUFP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QUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtnQkFDMUIscUJBQUksZ0JBQWdCLEdBQVEsSUFBSSxDQUFDO2dCQUNqQyxFQUFFLENBQUMsQ0FBQyxRQUFRLEtBQUssSUFBSSxJQUFJLE9BQU8sUUFBUSxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUM7b0JBQ3pELGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztpQkFDcEM7Z0JBRUQsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7YUFDM0IsRUFBRSxDQUFDLFdBQVcsRUFBRSxFQUFFO2dCQUNqQixNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDckIsQ0FBQyxDQUFDO1NBQ0osQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2pCLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzlCLENBQUMsQ0FBQzs7Q0FFTiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHAsIFJlc3BvbnNlLCBIZWFkZXJzLCBSZXF1ZXN0T3B0aW9ucywgUmVxdWVzdE9wdGlvbnNBcmdzLCBVUkxTZWFyY2hQYXJhbXMsIFJlc3BvbnNlQ29udGVudFR5cGUsIFJlcXVlc3RNZXRob2QgfSBmcm9tICdAYW5ndWxhci9odHRwJztcbmltcG9ydCB7IENvbm5lY3Rpb25NYW5hZ2VyIH0gZnJvbSAnLi4vLi4vc2VydmljZS9Db25uZWN0aW9uTWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7IEpzb25TY2hlbWEgfSBmcm9tICcuLi9tb2RlbC9tb2RlbHMnO1xuaW1wb3J0IHsgQWJzdHJhY3RTZXJ2ZXJSZXNvdXJjZSB9IGZyb20gJy4uL0Fic3RyYWN0U2VydmVyUmVzb3VyY2UnO1xuaW1wb3J0IHsgSUNvbm5lY3Rpb25NYW5hZ2VyIH0gZnJvbSAnLi4vSUNvbm5lY3Rpb25NYW5hZ2VyJztcblxuZGVjbGFyZSB2YXIgd2luZG93OiBhbnk7XG5cbmV4cG9ydCBjbGFzcyBKU09OUmVzb3VyY2UgZXh0ZW5kcyBBYnN0cmFjdFNlcnZlclJlc291cmNlIHtcblxuICBwcml2YXRlIHNjaGVtYUNhY2hlZDogYW55OyAvLyBNYXA8U3RyaW5nW2NsYXNzTmFtZV0sIEpzb25TY2hlbWE+XG4gIHByb3RlY3RlZCBiYXNlUGF0aCA9ICdodHRwOi8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSArICc6ODA4MS9oZWxsby9qc29uJztcbiAgcHVibGljIGRlZmF1bHRIZWFkZXJzOiBIZWFkZXJzO1xuXG4gIGNvbnN0cnVjdG9yKGNvbm5lY3Rpb25NZ3I6IElDb25uZWN0aW9uTWFuYWdlcikge1xuICAgIHN1cGVyKGNvbm5lY3Rpb25NZ3IpO1xuXG4gICAgdGhpcy5zY2hlbWFDYWNoZWQgPSB7fTtcbiAgICB0aGlzLmRlZmF1bHRIZWFkZXJzID0gbmV3IEhlYWRlcnMoKTsgLy8gZGVmYXVsdCBtb3JlIGlmIGV4aXN0XG4gIH1cblxuICBwdWJsaWMgZ2V0U2NoZW1hKGNsYXNzTmFtZTogc3RyaW5nKTogUHJvbWlzZTxSZXNwb25zZT4ge1xuICAgIGlmIChjbGFzc05hbWUgPT09IG51bGwgfHwgdHlwZW9mIGNsYXNzTmFtZSAhPT0gJ3N0cmluZycgfHwgY2xhc3NOYW1lID09PSAnJykge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zY2hlbWFDYWNoZWRbY2xhc3NOYW1lXSAhPT0gbnVsbCAmJiB0eXBlb2YgdGhpcy5zY2hlbWFDYWNoZWRbY2xhc3NOYW1lXSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5zY2hlbWFDYWNoZWRbY2xhc3NOYW1lXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPFJlc3BvbnNlPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAvLyBjYWNoZSBvbmx5IGRlZmF1bHQgbG9hZFxuICAgICAgbGV0IHBhdGggPSB0aGlzLmJhc2VQYXRoICsgXCIvXCIgKyBjbGFzc05hbWUgKyBcIi9zY2hlbWFcIjtcblxuICAgICAgbGV0IGhlYWRlcnMgPSBuZXcgSGVhZGVycyh0aGlzLmRlZmF1bHRIZWFkZXJzLnRvSlNPTigpKTtcbiAgICAgIGxldCByZXF1ZXN0T3B0aW9uczogUmVxdWVzdE9wdGlvbnNBcmdzID0gbmV3IFJlcXVlc3RPcHRpb25zKHtcbiAgICAgICAgbWV0aG9kOiBSZXF1ZXN0TWV0aG9kLkdldCxcbiAgICAgICAgaGVhZGVyczogaGVhZGVyc1xuICAgICAgfSk7XG5cbiAgICAgIGxldCBwcm9tID0gdGhpcy5jb25uZWN0aW9uTWdyLmdldFdpdGhIdHRwSW5mbyhwYXRoLCByZXF1ZXN0T3B0aW9ucyk7XG4gICAgICBwcm9tLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgbGV0IGpzb25TY2hlbWFSZXN1bHQ6IGFueSA9IG51bGw7XG4gICAgICAgIGlmIChyZXNwb25zZSAhPT0gbnVsbCAmJiB0eXBlb2YgcmVzcG9uc2UgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAganNvblNjaGVtYVJlc3VsdCA9IHJlc3BvbnNlLmpzb24oKTtcblxuICAgICAgICAgIGlmIChqc29uU2NoZW1hUmVzdWx0ICE9PSBudWxsICYmIHR5cGVvZiBqc29uU2NoZW1hUmVzdWx0ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgLy8gY2FjaGUgcmVzdWx0XG4gICAgICAgICAgICB0aGlzLnNjaGVtYUNhY2hlZFtjbGFzc05hbWVdID0ganNvblNjaGVtYVJlc3VsdDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXNvbHZlKGpzb25TY2hlbWFSZXN1bHQpO1xuICAgICAgfSwgKGVycm9yUmVzdWx0KSA9PiB7XG4gICAgICAgIHJlamVjdChlcnJvclJlc3VsdCk7XG4gICAgICB9KTtcbiAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0U2NoZW1hV2l0aENvbmZpZ3MoY2xhc3NOYW1lOiBzdHJpbmcsIGlnbm9yZU51bGw6IGJvb2xlYW4sIGlnbm9yZUVtcHR5OiBib29sZWFuLCBpZ25vcmVQcm9wUmVnZXg6IHN0cmluZywgaW5jbHVkZVByb3BzRmllbGRzOiBTdHJpbmdbXSk6IFByb21pc2U8UmVzcG9uc2U+IHtcbiAgICBpZiAoY2xhc3NOYW1lID09PSBudWxsIHx8IHR5cGVvZiBjbGFzc05hbWUgIT09ICdzdHJpbmcnIHx8IGNsYXNzTmFtZSA9PT0gJycpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobnVsbCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPFJlc3BvbnNlPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAvLyBjYWNoZSBvbmx5IGRlZmF1bHQgbG9hZFxuICAgICAgbGV0IHBhdGggPSB0aGlzLmJhc2VQYXRoICsgXCIvXCIgKyBjbGFzc05hbWUgKyBcIi9zY2hlbWFcIjtcblxuICAgICAgbGV0IHBhdGhQYXJhbSA9IFwiXCI7XG4gICAgICBpZiAoaWdub3JlTnVsbCAhPT0gbnVsbCAmJiB0eXBlb2YgaWdub3JlTnVsbCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcGF0aFBhcmFtICs9IFwiaWdub3JlTnVsbD1cIiArIChpZ25vcmVOdWxsID8gXCJ0cnVlXCIgOiBcImZhbHNlXCIpICsgXCImXCI7XG4gICAgICB9XG4gICAgICBpZiAoaWdub3JlRW1wdHkgIT09IG51bGwgJiYgdHlwZW9mIGlnbm9yZUVtcHR5ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBwYXRoUGFyYW0gKz0gXCJpZ25vcmVFbXB0eT1cIiArIChpZ25vcmVFbXB0eSA/IFwidHJ1ZVwiIDogXCJmYWxzZVwiKSArIFwiJlwiO1xuICAgICAgfVxuICAgICAgaWYgKGlnbm9yZVByb3BSZWdleCAhPT0gbnVsbCAmJiB0eXBlb2YgaWdub3JlUHJvcFJlZ2V4ICE9PSAndW5kZWZpbmVkJyAmJiBpZ25vcmVQcm9wUmVnZXggIT09ICcnKSB7XG4gICAgICAgIHBhdGhQYXJhbSArPSBcImlnbm9yZVByb3BSZWdleD1cIiArIGlnbm9yZVByb3BSZWdleCArIFwiJlwiO1xuICAgICAgfVxuICAgICAgaWYgKGluY2x1ZGVQcm9wc0ZpZWxkcyAhPT0gbnVsbCAmJiB0eXBlb2YgaW5jbHVkZVByb3BzRmllbGRzICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBsZXQgbmFtZUFwcGVuZFN0bXQgPSBcIlwiO1xuICAgICAgICBmb3IgKGxldCBuYW1lIG9mIGluY2x1ZGVQcm9wc0ZpZWxkcykge1xuICAgICAgICAgIG5hbWVBcHBlbmRTdG10ICs9IG5hbWUgKyBcIixcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuYW1lQXBwZW5kU3RtdCAhPT0gJycpIHtcbiAgICAgICAgICBuYW1lQXBwZW5kU3RtdCA9IG5hbWVBcHBlbmRTdG10LnNsaWNlKDAsIG5hbWVBcHBlbmRTdG10Lmxlbmd0aCAtIDEpO1xuICAgICAgICAgIHBhdGhQYXJhbSArPSBcImluY2x1ZGVQcm9wc0ZpZWxkcz1cIiArIG5hbWVBcHBlbmRTdG10ICsgXCImXCI7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHBhdGhQYXJhbSAhPT0gXCJcIikge1xuICAgICAgICBwYXRoUGFyYW0gPSBwYXRoUGFyYW0uc2xpY2UoMCwgcGF0aFBhcmFtLmxlbmd0aCAtIDEpO1xuICAgICAgICBwYXRoICs9IFwiP1wiICsgcGF0aFBhcmFtO1xuICAgICAgfVxuXG4gICAgICBsZXQgaGVhZGVycyA9IG5ldyBIZWFkZXJzKHRoaXMuZGVmYXVsdEhlYWRlcnMudG9KU09OKCkpO1xuICAgICAgbGV0IHJlcXVlc3RPcHRpb25zOiBSZXF1ZXN0T3B0aW9uc0FyZ3MgPSBuZXcgUmVxdWVzdE9wdGlvbnMoe1xuICAgICAgICBtZXRob2Q6IFJlcXVlc3RNZXRob2QuR2V0LFxuICAgICAgICBoZWFkZXJzOiBoZWFkZXJzXG4gICAgICB9KTtcblxuICAgICAgbGV0IHByb20gPSB0aGlzLmNvbm5lY3Rpb25NZ3IuZ2V0V2l0aEh0dHBJbmZvKHBhdGgsIHJlcXVlc3RPcHRpb25zKTtcbiAgICAgIHByb20udGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICBsZXQganNvblNjaGVtYVJlc3VsdDogYW55ID0gbnVsbDtcbiAgICAgICAgaWYgKHJlc3BvbnNlICE9PSBudWxsICYmIHR5cGVvZiByZXNwb25zZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICBqc29uU2NoZW1hUmVzdWx0ID0gcmVzcG9uc2UuanNvbigpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzb2x2ZShqc29uU2NoZW1hUmVzdWx0KTtcbiAgICAgIH0sIChlcnJvclJlc3VsdCkgPT4ge1xuICAgICAgICByZWplY3QoZXJyb3JSZXN1bHQpO1xuICAgICAgfSk7XG4gICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=