Skip to content

Commit

Permalink
Fixes _lookupFactory deprecation for Ember canary
Browse files Browse the repository at this point in the history
(cherry picked from commit 7ef8273)
  • Loading branch information
Ricardo Mendes authored and bmac committed Jan 26, 2017
1 parent 43c7183 commit 5d11fd3
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 5 deletions.
26 changes: 23 additions & 3 deletions addon/-private/system/store.js
Original file line number Diff line number Diff line change
Expand Up @@ -2033,8 +2033,15 @@ Store = Service.extend({
// container._registry = 1.11 - 2.0
// container = < 1.11
let owner = getOwner(this);
let mixin;

if (owner.factoryFor) {
let MaybeMixin = owner.factoryFor(`mixin:${normalizedModelName}`);
mixin = MaybeMixin && MaybeMixin.class;
} else {
mixin = owner._lookupFactory(`mixin:${normalizedModelName}`);
}

let mixin = owner._lookupFactory('mixin:' + normalizedModelName);
if (mixin) {
//Cache the class as a model
owner.register('model:' + normalizedModelName, Model.extend(mixin));
Expand Down Expand Up @@ -2107,7 +2114,14 @@ Store = Service.extend({
let trueModelName = this._classKeyFor(modelName);
let owner = getOwner(this);

return owner._lookupFactory(`model:${trueModelName}`);
if (owner.factoryFor) {
let MaybeModel = owner.factoryFor(`model:${trueModelName}`);
let MaybeModelFactory = MaybeModel && MaybeModel.class;

return MaybeModelFactory;
} else {
return owner._lookupFactory(`model:${trueModelName}`);
}
},

/**
Expand Down Expand Up @@ -2326,7 +2340,13 @@ Store = Service.extend({
},

_hasModelFor(modelName) {
return !!getOwner(this)._lookupFactory(`model:${modelName}`);
let owner = getOwner(this);

if (owner.factoryFor) {
return !!owner.factoryFor(`model:${modelName}`);
} else {
return !!owner._lookupFactory(`model:${modelName}`);
}
},

_pushInternalModel(data) {
Expand Down
2 changes: 1 addition & 1 deletion addon/-private/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ function modelHasAttributeOrRelationshipNamedType(modelClass) {
ember-container-inject-owner is a new feature in Ember 2.3 that finally provides a public
API for looking items up. This function serves as a super simple polyfill to avoid
triggering deprecations.
*/
*/
function getOwner(context) {
var owner;

Expand Down
10 changes: 9 additions & 1 deletion tests/integration/debug-adapter-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,17 @@ module("DS.DebugAdapter", {
store = App.__container__.lookup('service:store');
debugAdapter = App.__container__.lookup('data-adapter:main');

let klass;

if (App.__container__.factoryFor) {
klass = App.__container__.factoryFor('model:post').class;
} else {
klass = App.__container__.lookupFactory('model:post');
}

debugAdapter.reopen({
getModelTypes() {
return Ember.A([{ klass: App.__container__.lookupFactory('model:post'), name: 'post' }]);
return Ember.A([{ klass, name: 'post' }]);
}
});
},
Expand Down

0 comments on commit 5d11fd3

Please sign in to comment.