Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUGFIX beta] Initializer/Instance Initializer Deprecations. #3666

Merged
merged 4 commits into from
Aug 20, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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