Skip to content

Commit 33fa5a7

Browse files
committed
Adds setDefaultAdapter
1 parent d504681 commit 33fa5a7

File tree

4 files changed

+29
-11
lines changed

4 files changed

+29
-11
lines changed

spec/AdaptableController.spec.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,16 @@ describe("AdaptableController", ()=>{
4747
});
4848

4949
it("should instantiate the default adapter from Class", (done) => {
50-
var controller = new AdaptableController(null, FilesAdapter);
50+
AdaptableController.setDefaultAdapter(FilesAdapter);
51+
var controller = new AdaptableController();
5152
expect(controller.adapter instanceof FilesAdapter).toBe(true);
5253
done();
5354
});
5455

5556
it("should use the default adapter", (done) => {
5657
var adapter = new FilesAdapter();
57-
var controller = new AdaptableController(null, adapter);
58+
AdaptableController.setDefaultAdapter(adapter);
59+
var controller = new AdaptableController();
5860
expect(controller.adapter).toBe(adapter);
5961
done();
6062
});

spec/LoggerController.spec.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,12 +76,13 @@ describe('LoggerController', () => {
7676
});
7777

7878
it('should throw without an adapter', (done) => {
79-
79+
LoggerController.setDefaultAdapter(undefined);
8080
var loggerController = new LoggerController();
8181

8282
expect(() => {
8383
loggerController.getLogs();
8484
}).toThrow();
85+
LoggerController.setDefaultAdapter(FileLoggerAdapter);
8586
done();
8687
});
8788
});

src/Controllers/AdaptableController.js

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ based on the parameters passed
88
99
*/
1010

11+
const DefaultAdapters = {};
12+
1113
export class AdaptableController {
1214
/**
1315
* Check whether the api call has master key or not.
@@ -17,12 +19,11 @@ export class AdaptableController {
1719
* Supported options types:
1820
* - string: the options will be loaded with required, when loaded, if default
1921
* is set on the returned object, we'll use that one to support modules
20-
* - object: a plain javascript object (options.constructor === Object), if options.adapter is set, we'll try to load it with the same mechanics
22+
* - object: a plain javascript object (options.constructor === Object), if options.adapter is set, we'll try to load it with the same mechanics.
2123
* - function: we'll create a new instance from that function, and pass the options object
2224
*/
23-
constructor(options, defaultAdapter) {
24-
25-
// Use the default by default
25+
constructor(options) {
26+
2627
let adapter;
2728

2829
// We have options and options have adapter key
@@ -37,7 +38,7 @@ export class AdaptableController {
3738
}
3839

3940
if (!adapter) {
40-
adapter = defaultAdapter;
41+
adapter = this.defaultAdapter();
4142
}
4243

4344
// This is a string, require the module
@@ -58,6 +59,15 @@ export class AdaptableController {
5859
this.adapter = adapter;
5960
this.options = options;
6061
}
62+
63+
defaultAdapter() {
64+
return DefaultAdapters[this.constructor.name];
65+
}
66+
67+
// Sets the default adapter for that Class
68+
static setDefaultAdapter(defaultAdapter) {
69+
DefaultAdapters[this.name] = defaultAdapter;
70+
}
6171
}
6272

6373
export default AdaptableController;

src/index.js

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,11 @@ import { LogsRouter } from './Routers/LogsRouter';
3636
import { FileLoggerAdapter } from './Adapters/Logger/FileLoggerAdapter';
3737
import { LoggerController } from './Controllers/LoggerController';
3838

39+
40+
FilesController.setDefaultAdapter(GridStoreAdapter);
41+
PushController.setDefaultAdapter(ParsePushAdapter);
42+
LoggerController.setDefaultAdapter(FileLoggerAdapter);
43+
3944
// Mutate the Parse object to add the Cloud Code handlers
4045
addParseCloud();
4146

@@ -107,9 +112,9 @@ function ParseServer({
107112

108113
// We pass the options and the base class for the adatper,
109114
// Note that passing an instance would work too
110-
const filesController = new FilesController(filesAdapter, GridStoreAdapter);
111-
const pushController = new PushController(push, new ParsePushAdapter(push));
112-
const loggerController = new LoggerController(loggerAdapter, FileLoggerAdapter);
115+
const filesController = new FilesController(filesAdapter);
116+
const pushController = new PushController(push);
117+
const loggerController = new LoggerController(loggerAdapter);
113118

114119
cache.apps[appId] = {
115120
masterKey: masterKey,

0 commit comments

Comments
 (0)