Skip to content

Commit

Permalink
Merge pull request #3666 from rwjblue/fix-initializer-deprecations
Browse files Browse the repository at this point in the history
[BUGFIX beta] Initializer/Instance Initializer Deprecations.
  • Loading branch information
bmac committed Aug 20, 2015
2 parents 64bc46f + 64a0688 commit 1ed437a
Show file tree
Hide file tree
Showing 5 changed files with 47 additions and 28 deletions.
9 changes: 6 additions & 3 deletions packages/ember-data/lib/initializers/store-injections.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,10 @@
@param {Ember.Registry} registry
*/
export default function initializeStoreInjections(registry) {
registry.injection('controller', 'store', 'service:store');
registry.injection('route', 'store', 'service:store');
registry.injection('data-adapter', 'store', 'service:store');
// registry.injection for Ember < 2.1.0
// application.inject for Ember 2.1.0+
var inject = registry.injection || registry.inject;
inject.call(registry, 'controller', 'store', 'service:store');
inject.call(registry, 'route', 'store', 'service:store');
inject.call(registry, 'data-adapter', 'store', 'service:store');
}
22 changes: 17 additions & 5 deletions packages/ember-data/lib/initializers/store.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,29 @@ import Store from "ember-data/system/store";
import { JSONAPISerializer, JSONSerializer, RESTSerializer } from "ember-data/serializers";
import { JSONAPIAdapter, RESTAdapter } from "ember-data/adapters";

function has(applicationOrRegistry, fullName) {
if (applicationOrRegistry.has) {
// < 2.1.0
return applicationOrRegistry.has(fullName);
} else {
// 2.1.0+
return applicationOrRegistry.hasRegistration(fullName);
}
}

/**
Configures a registry for use with an Ember-Data
store. Accepts an optional namespace argument.
@method initializeStore
@param {Ember.Registry} registry
@param {Object} [application] an application namespace
*/
export default function initializeStore(registry, application) {
registry.optionsForType('serializer', { singleton: false });
registry.optionsForType('adapter', { singleton: false });
export default function initializeStore(registry) {
// registry.optionsForType for Ember < 2.1.0
// application.registerOptionsForType for Ember 2.1.0+
var registerOptionsForType = registry.optionsForType || registry.registerOptionsForType;
registerOptionsForType.call(registry, 'serializer', { singleton: false });
registerOptionsForType.call(registry, 'adapter', { singleton: false });

registry.register('serializer:-default', JSONSerializer);
registry.register('serializer:-rest', RESTSerializer);
Expand All @@ -22,7 +34,7 @@ export default function initializeStore(registry, application) {
registry.register('serializer:-json-api', JSONAPISerializer);


if (!registry.has('service:store')) {
if (!has(registry, 'service:store')) {
registry.register('service:store', Store);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
@param {Ember.ApplicationInstance} applicationOrRegistry
*/
export default function initializeStoreService(application) {
var container = application.container;
var container = application.lookup ? application : application.container;
// Eagerly generate the store so defaultStore is populated.
container.lookup('service:store');
}
14 changes: 5 additions & 9 deletions packages/ember-data/lib/setup-container.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,9 @@ import initializeTransforms from 'ember-data/initializers/transforms';
import initializeStoreInjections from 'ember-data/initializers/store-injections';
import initializeDataAdapter from 'ember-data/initializers/data-adapter';

export default function setupContainer(registry, application) {
// application is not a required argument. This ensures
// testing setups can setup a container without booting an
// entire ember application.

initializeDataAdapter(registry, application);
initializeTransforms(registry, application);
initializeStoreInjections(registry, application);
initializeStore(registry, application);
export default function setupContainer(application) {
initializeDataAdapter(application);
initializeTransforms(application);
initializeStoreInjections(application);
initializeStore(application);
}
28 changes: 18 additions & 10 deletions packages/ember-data/tests/integration/setup-container-test.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
var run = Ember.run;
var Container = Ember.Container;
var Registry = Ember.Registry;
var Store = DS.Store;
var EmberObject = Ember.Object;
var setupContainer = DS._setupContainer;

var container, registry;
var container, registry, application;

/*
These tests ensure that Ember Data works with Ember.js' container
Expand All @@ -14,18 +12,28 @@ var container, registry;

module("integration/setup-container - Setting up a container", {
setup: function() {
if (Registry) {
registry = new Registry();
container = registry.container();
run(function() {
application = Ember.Application.create();
});

container = application.__container__;
registry = application.__registry__;

var setupContainerArgument;
if (registry) {
setupContainerArgument = application;
} else {
container = new Container();
registry = container;
// In Ember < 2.1.0 application.__registry__ is undefined so we
// pass in the registry to mimic the setup behavior.
registry = setupContainerArgument = application.registry;
}
setupContainer(registry);
setupContainer(setupContainerArgument);
},

teardown: function() {
run(container, container.destroy);
run(function() {
application.destroy();
});
}
});

Expand Down

0 comments on commit 1ed437a

Please sign in to comment.