465190: ResourceManager for resource related tasks

ResourceManager replaces EmptyResourceInitializer 

Change-Id: I8a711dbf5b3321734429112e4019fed8dc30a4b2
Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=465190
diff --git a/doc/org.eclipse.emf.parsley.doc/xdoc/documentation/02-FirstExample.xdoc b/doc/org.eclipse.emf.parsley.doc/xdoc/documentation/02-FirstExample.xdoc
index 6dbfe2e..993df87 100644
--- a/doc/org.eclipse.emf.parsley.doc/xdoc/documentation/02-FirstExample.xdoc
+++ b/doc/org.eclipse.emf.parsley.doc/xdoc/documentation/02-FirstExample.xdoc
@@ -106,28 +106,29 @@
 	item[open the class *GuiceModule (FirstexampleGuiceModule in this example) that the wizard created for you.
 	Note that this is a key	class for all customizations; it allows to override several methods in order to provide custom behaviors
 	and implementations.]
-	item[override method e[bindEmptyResourceInitializer()] providing a class for Resource initialization
+	item[override method e[bindResourceManager()] providing a class for Resource initialization
 	
 code[Java][
-public Class<? extends EmptyResourceInitializer> bindEmptyResourceInitializer() {
-	return LibraryEmptyResourceInitializer.class;
+@Override
+public Class<? extends ResourceManager> bindResourceManager() {
+	return LibraryResourceManager.class;
 }
 ]
 	]
-	item[create a new class e[LibraryEmptyResourceInitializer] extending from e[EmptyResourceInitializer] for Resource initialization
+	item[create a new class e[LibraryResourceManager] extending from codeRef[org.eclipse.emf.parsley.resource.ResourceManager] for Resource initialization
 code[Java][
-import org.eclipse.emf.parsley.resource.EmptyResourceInitializer;
 import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.emf.examples.extlibrary.EXTLibraryFactory;
 import org.eclipse.emf.examples.extlibrary.Library;
+import org.eclipse.emf.parsley.resource.ResourceManager;
 
-public class LibraryEmptyResourceInitializer  extends EmptyResourceInitializer { 
-    
-   public void initialize(Resource resource) { 
-       super.initialize(resource); 
-       Library library = EXTLibraryFactory.eINSTANCE.createLibrary(); 
-       resource.getContents().add(library); 
-   }
+public class LibraryResourceManager extends ResourceManager {
+
+	public void initialize(Resource resource) {
+		super.initialize(resource);
+		Library library = EXTLibraryFactory.eINSTANCE.createLibrary();
+		resource.getContents().add(library);
+	}
 
 }
 ]
diff --git a/doc/org.eclipse.emf.parsley.doc/xdoc/documentation/06-Customization-RESOURCES.xdoc b/doc/org.eclipse.emf.parsley.doc/xdoc/documentation/06-Customization-RESOURCES.xdoc
index c036e4d..b419849 100644
--- a/doc/org.eclipse.emf.parsley.doc/xdoc/documentation/06-Customization-RESOURCES.xdoc
+++ b/doc/org.eclipse.emf.parsley.doc/xdoc/documentation/06-Customization-RESOURCES.xdoc
@@ -4,7 +4,7 @@
 
 ul[
 	item[If you need a machanism to fill some data for the first time you use a model, you can provide
-	a specific implementation of ref:EmptyResourceInitializer[Emty Resource Initializer].]
+	a specific implementation of ref:ResourceManager[Resource Manager].]
 	item[If you want to interact with Resource Loading, you can provide a specific ref:ResourceLoader[Resource
 	Loader]]
 ]
@@ -18,14 +18,17 @@
 section2:ResourceLoader[Resource Loader]
 
 The class codeRef[org.eclipse.emf.parsley.resource.ResourceLoader] can be used to handle resource loading.
-This class uses internally the ref:EmptyResourceInitializer[Empty Resource Initializer].
+This class uses internally the ref:ResourceManager[Resource Manager].
 
 
-section2:EmptyResourceInitializer[Empty Resource Initializer]
+section2:ResourceManager[Resource Manager]
 
-If you need to initialize your model, for the first use, you can define an implementation of codeRef[org.eclipse.emf.parsley.resource.EmptyResourceInitializer].
-When the main resource will be found empty, your code will be executed. 
+Tasks concerning an EMF codeRef[org.eclipse.emf.ecore.resource.Resource] are
+delegated to codeRef[org.eclipse.emf.parsley.resource.ResourceManager].
 
+One of such tasks is initializing the resource, e.g., when, after loading, it is
+found empty.  You can derive from this class (and bind it in the Guice module) and provide a custom implementation 
+of the method e[initialize].
 
 section2:ResourceSaveManager[Resource Save Manager]
 
diff --git a/dsl/org.eclipse.emf.parsley.dsl.tests/src/org/eclipse/emf/parsley/dsl/tests/EmfParsleyDslGuiceModuleHelperTests.xtend b/dsl/org.eclipse.emf.parsley.dsl.tests/src/org/eclipse/emf/parsley/dsl/tests/EmfParsleyDslGuiceModuleHelperTests.xtend
index 763b9a3..002894d 100644
--- a/dsl/org.eclipse.emf.parsley.dsl.tests/src/org/eclipse/emf/parsley/dsl/tests/EmfParsleyDslGuiceModuleHelperTests.xtend
+++ b/dsl/org.eclipse.emf.parsley.dsl.tests/src/org/eclipse/emf/parsley/dsl/tests/EmfParsleyDslGuiceModuleHelperTests.xtend
@@ -100,7 +100,7 @@
 bindTableFeaturesProvider
 bindEmfSelectionHelper
 bindResourceSaveManager
-bindEmptyResourceInitializer
+bindResourceManager
 bindIContentProvider
 bindProposalCreator
 bindIEditingStrategy
diff --git a/examples/org.eclipse.emf.parsley.examples.cdo.treeform/src/org/eclipse/emf/parsley/examples/cdo/treeform/TreeformGuiceModule.java b/examples/org.eclipse.emf.parsley.examples.cdo.treeform/src/org/eclipse/emf/parsley/examples/cdo/treeform/TreeformGuiceModule.java
index 449987c..1c3dde3 100644
--- a/examples/org.eclipse.emf.parsley.examples.cdo.treeform/src/org/eclipse/emf/parsley/examples/cdo/treeform/TreeformGuiceModule.java
+++ b/examples/org.eclipse.emf.parsley.examples.cdo.treeform/src/org/eclipse/emf/parsley/examples/cdo/treeform/TreeformGuiceModule.java
@@ -10,11 +10,10 @@
  *******************************************************************************/
 package org.eclipse.emf.parsley.examples.cdo.treeform;
 
-import org.eclipse.emf.parsley.examples.cdo.treeform.customizations.TreeformCDOEmptyResourceInitializer;
-import org.eclipse.emf.parsley.resource.EmptyResourceInitializer;
+import org.eclipse.emf.parsley.examples.cdo.treeform.customizations.TreeformCDOResourceManager;
+import org.eclipse.emf.parsley.resource.ResourceManager;
 import org.eclipse.ui.plugin.AbstractUIPlugin;
 
-
 public class TreeformGuiceModule extends EmfParsleyGuiceModuleGen {
 
 	public TreeformGuiceModule(AbstractUIPlugin plugin) {
@@ -22,8 +21,7 @@
 	}
 
 	@Override
-	public Class<? extends EmptyResourceInitializer> bindEmptyResourceInitializer() {
-		return TreeformCDOEmptyResourceInitializer.class;
+	public Class<? extends ResourceManager> bindResourceManager() {
+		return TreeformCDOResourceManager.class;
 	}
-
 }
diff --git a/examples/org.eclipse.emf.parsley.examples.cdo.treeform/src/org/eclipse/emf/parsley/examples/cdo/treeform/customizations/TreeformCDOEmptyResourceInitializer.java b/examples/org.eclipse.emf.parsley.examples.cdo.treeform/src/org/eclipse/emf/parsley/examples/cdo/treeform/customizations/TreeformCDOResourceManager.java
similarity index 92%
rename from examples/org.eclipse.emf.parsley.examples.cdo.treeform/src/org/eclipse/emf/parsley/examples/cdo/treeform/customizations/TreeformCDOEmptyResourceInitializer.java
rename to examples/org.eclipse.emf.parsley.examples.cdo.treeform/src/org/eclipse/emf/parsley/examples/cdo/treeform/customizations/TreeformCDOResourceManager.java
index 08eecd5..95bcc30 100644
--- a/examples/org.eclipse.emf.parsley.examples.cdo.treeform/src/org/eclipse/emf/parsley/examples/cdo/treeform/customizations/TreeformCDOEmptyResourceInitializer.java
+++ b/examples/org.eclipse.emf.parsley.examples.cdo.treeform/src/org/eclipse/emf/parsley/examples/cdo/treeform/customizations/TreeformCDOResourceManager.java
@@ -20,10 +20,9 @@
 import org.eclipse.emf.cdo.util.CommitException;
 import org.eclipse.emf.cdo.util.ConcurrentAccessException;
 import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.parsley.resource.EmptyResourceInitializer;
+import org.eclipse.emf.parsley.resource.ResourceManager;
 
-public class TreeformCDOEmptyResourceInitializer extends
-		EmptyResourceInitializer {
+public class TreeformCDOResourceManager extends ResourceManager {
 
 	@Override
 	public void initialize(Resource resource) {
diff --git a/examples/org.eclipse.emf.parsley.examples.firstexample/src/org/eclipse/emf/parsley/examples/firstexample/FirstexampleGuiceModule.java b/examples/org.eclipse.emf.parsley.examples.firstexample/src/org/eclipse/emf/parsley/examples/firstexample/FirstexampleGuiceModule.java
index 527fff8..9b5c359 100644
--- a/examples/org.eclipse.emf.parsley.examples.firstexample/src/org/eclipse/emf/parsley/examples/firstexample/FirstexampleGuiceModule.java
+++ b/examples/org.eclipse.emf.parsley.examples.firstexample/src/org/eclipse/emf/parsley/examples/firstexample/FirstexampleGuiceModule.java
@@ -10,20 +10,17 @@
  *******************************************************************************/
 package org.eclipse.emf.parsley.examples.firstexample;
 
-
-import org.eclipse.emf.parsley.examples.firstexample.EmfParsleyGuiceModuleGen;
-
-import org.eclipse.emf.parsley.resource.EmptyResourceInitializer;
+import org.eclipse.emf.parsley.resource.ResourceManager;
 import org.eclipse.ui.plugin.AbstractUIPlugin;
 
-
 public class FirstexampleGuiceModule extends EmfParsleyGuiceModuleGen {
 
 	public FirstexampleGuiceModule(AbstractUIPlugin plugin) {
 		super(plugin);
 	}
 
-	public Class<? extends EmptyResourceInitializer> bindEmptyResourceInitializer() {
-		return LibraryEmptyResourceInitializer.class;
+	@Override
+	public Class<? extends ResourceManager> bindResourceManager() {
+		return LibraryResourceManager.class;
 	}
 }
diff --git a/examples/org.eclipse.emf.parsley.examples.firstexample/src/org/eclipse/emf/parsley/examples/firstexample/LibraryEmptyResourceInitializer.java b/examples/org.eclipse.emf.parsley.examples.firstexample/src/org/eclipse/emf/parsley/examples/firstexample/LibraryEmptyResourceInitializer.java
deleted file mode 100644
index d08e86f..0000000
--- a/examples/org.eclipse.emf.parsley.examples.firstexample/src/org/eclipse/emf/parsley/examples/firstexample/LibraryEmptyResourceInitializer.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2013 RCP Vision (http://www.rcp-vision.com) and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- * Vincenzo Caselli - initial API and implementation
- *******************************************************************************/
-package org.eclipse.emf.parsley.examples.firstexample;
-
-import org.eclipse.emf.ecore.resource.Resource; 
-import org.eclipse.emf.examples.extlibrary.EXTLibraryFactory; 
-import org.eclipse.emf.examples.extlibrary.Library; 
-import org.eclipse.emf.parsley.resource.EmptyResourceInitializer;
-
-public class LibraryEmptyResourceInitializer  extends EmptyResourceInitializer {  
-     
-   public void initialize(Resource resource) {  
-       super.initialize(resource);  
-       Library library = EXTLibraryFactory.eINSTANCE.createLibrary();  
-       resource.getContents().add(library);  
-   }  
-
-}  
-
-
diff --git a/examples/org.eclipse.emf.parsley.examples.firstexample/src/org/eclipse/emf/parsley/examples/firstexample/LibraryResourceManager.java b/examples/org.eclipse.emf.parsley.examples.firstexample/src/org/eclipse/emf/parsley/examples/firstexample/LibraryResourceManager.java
new file mode 100644
index 0000000..ce6187a
--- /dev/null
+++ b/examples/org.eclipse.emf.parsley.examples.firstexample/src/org/eclipse/emf/parsley/examples/firstexample/LibraryResourceManager.java
@@ -0,0 +1,26 @@
+/*******************************************************************************
+ * Copyright (c) 2013 RCP Vision (http://www.rcp-vision.com) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ * Vincenzo Caselli - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.emf.parsley.examples.firstexample;
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.examples.extlibrary.EXTLibraryFactory;
+import org.eclipse.emf.examples.extlibrary.Library;
+import org.eclipse.emf.parsley.resource.ResourceManager;
+
+public class LibraryResourceManager extends ResourceManager {
+
+	public void initialize(Resource resource) {
+		super.initialize(resource);
+		Library library = EXTLibraryFactory.eINSTANCE.createLibrary();
+		resource.getContents().add(library);
+	}
+
+}
diff --git a/examples/org.eclipse.emf.parsley.examples.mail.accountsview/emfparsley-gen/org/eclipse/emf/parsley/examples/mail/accountsview/EmfParsleyGuiceModuleGen.java b/examples/org.eclipse.emf.parsley.examples.mail.accountsview/emfparsley-gen/org/eclipse/emf/parsley/examples/mail/accountsview/EmfParsleyGuiceModuleGen.java
index 5063207..44423c8 100644
--- a/examples/org.eclipse.emf.parsley.examples.mail.accountsview/emfparsley-gen/org/eclipse/emf/parsley/examples/mail/accountsview/EmfParsleyGuiceModuleGen.java
+++ b/examples/org.eclipse.emf.parsley.examples.mail.accountsview/emfparsley-gen/org/eclipse/emf/parsley/examples/mail/accountsview/EmfParsleyGuiceModuleGen.java
@@ -8,10 +8,10 @@
 import org.eclipse.emf.parsley.edit.UndoableEditingStrategy;
 import org.eclipse.emf.parsley.edit.domain.GlobalAdapterFactoryEditingDomainProvider;
 import org.eclipse.emf.parsley.examples.mail.accountsview.config.ConfiguratorGen;
-import org.eclipse.emf.parsley.examples.mail.accountsview.custom.MailEmptyResourceInitializer;
+import org.eclipse.emf.parsley.examples.mail.accountsview.custom.MailResourceManager;
 import org.eclipse.emf.parsley.examples.mail.accountsview.edit.ui.provider.ViewerContentProviderGen;
 import org.eclipse.emf.parsley.examples.mail.accountsview.ui.provider.LabelProviderGen;
-import org.eclipse.emf.parsley.resource.EmptyResourceInitializer;
+import org.eclipse.emf.parsley.resource.ResourceManager;
 import org.eclipse.jface.viewers.IContentProvider;
 import org.eclipse.jface.viewers.ILabelProvider;
 import org.eclipse.ui.plugin.AbstractUIPlugin;
@@ -26,8 +26,8 @@
   }
   
   @Override
-  public Class<? extends EmptyResourceInitializer> bindEmptyResourceInitializer() {
-    return MailEmptyResourceInitializer.class;
+  public Class<? extends ResourceManager> bindResourceManager() {
+    return MailResourceManager.class;
   }
   
   @Override
diff --git a/examples/org.eclipse.emf.parsley.examples.mail.accountsview/src/org/eclipse/emf/parsley/examples/mail/accountsview/custom/MailEmptyResourceInitializer.java b/examples/org.eclipse.emf.parsley.examples.mail.accountsview/src/org/eclipse/emf/parsley/examples/mail/accountsview/custom/MailResourceManager.java
similarity index 94%
rename from examples/org.eclipse.emf.parsley.examples.mail.accountsview/src/org/eclipse/emf/parsley/examples/mail/accountsview/custom/MailEmptyResourceInitializer.java
rename to examples/org.eclipse.emf.parsley.examples.mail.accountsview/src/org/eclipse/emf/parsley/examples/mail/accountsview/custom/MailResourceManager.java
index 3b39837..ddc1288 100644
--- a/examples/org.eclipse.emf.parsley.examples.mail.accountsview/src/org/eclipse/emf/parsley/examples/mail/accountsview/custom/MailEmptyResourceInitializer.java
+++ b/examples/org.eclipse.emf.parsley.examples.mail.accountsview/src/org/eclipse/emf/parsley/examples/mail/accountsview/custom/MailResourceManager.java
@@ -15,14 +15,14 @@
 import org.eclipse.emf.parsley.examples.mail.Folder;
 import org.eclipse.emf.parsley.examples.mail.Mail;
 import org.eclipse.emf.parsley.examples.mail.MailFactory;
-import org.eclipse.emf.parsley.resource.EmptyResourceInitializer;
+import org.eclipse.emf.parsley.resource.ResourceManager;
 
 
 /**
  * @author Lorenzo Bettini
  * 
  */
-public class MailEmptyResourceInitializer extends EmptyResourceInitializer {
+public class MailResourceManager extends ResourceManager {
 	
 	int counter = 0;
 
diff --git a/examples/org.eclipse.emf.parsley.examples.mail.accountsview/src/org/eclipse/emf/parsley/examples/mail/accountsview/module.parsley b/examples/org.eclipse.emf.parsley.examples.mail.accountsview/src/org/eclipse/emf/parsley/examples/mail/accountsview/module.parsley
index 7a0b3e0..4a80daa 100644
--- a/examples/org.eclipse.emf.parsley.examples.mail.accountsview/src/org/eclipse/emf/parsley/examples/mail/accountsview/module.parsley
+++ b/examples/org.eclipse.emf.parsley.examples.mail.accountsview/src/org/eclipse/emf/parsley/examples/mail/accountsview/module.parsley
@@ -1,13 +1,13 @@
+import org.eclipse.emf.common.util.URI
 import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain
 import org.eclipse.emf.parsley.edit.IEditingStrategy
 import org.eclipse.emf.parsley.edit.UndoableEditingStrategy
 import org.eclipse.emf.parsley.edit.domain.GlobalAdapterFactoryEditingDomainProvider
 import org.eclipse.emf.parsley.examples.mail.Account
 import org.eclipse.emf.parsley.examples.mail.Folder
-import org.eclipse.emf.parsley.examples.mail.accountsview.custom.MailEmptyResourceInitializer
+import org.eclipse.emf.parsley.examples.mail.accountsview.custom.MailResourceManager
 import org.eclipse.emf.parsley.examples.mail.accountsview.views.AccountsView
-import org.eclipse.emf.parsley.resource.EmptyResourceInitializer
-import org.eclipse.emf.common.util.URI
+import org.eclipse.emf.parsley.resource.ResourceManager
 
 /* org.eclipse.emf.parsley.examples.mail.accountsview Emf Parsley Dsl Module file */
 module org.eclipse.emf.parsley.examples.mail.accountsview {
@@ -21,7 +21,7 @@
 	}
 
 	bindings {
-		type EmptyResourceInitializer -> MailEmptyResourceInitializer
+		type ResourceManager -> MailResourceManager
 		type IEditingStrategy -> UndoableEditingStrategy
 		
 		// with this binding, a global EditingDomain will be used:
diff --git a/examples/org.eclipse.emf.parsley.examples.rap.ui/src/org/eclipse/emf/parsley/examples/rap/ui/GuiceModule.java b/examples/org.eclipse.emf.parsley.examples.rap.ui/src/org/eclipse/emf/parsley/examples/rap/ui/GuiceModule.java
index 266468c..fadc486 100644
--- a/examples/org.eclipse.emf.parsley.examples.rap.ui/src/org/eclipse/emf/parsley/examples/rap/ui/GuiceModule.java
+++ b/examples/org.eclipse.emf.parsley.examples.rap.ui/src/org/eclipse/emf/parsley/examples/rap/ui/GuiceModule.java
@@ -17,7 +17,7 @@
 import org.eclipse.emf.parsley.examples.rap.model.Item;
 import org.eclipse.emf.parsley.examples.rap.model.Model;
 import org.eclipse.emf.parsley.examples.rap.model.ModelFactory;
-import org.eclipse.emf.parsley.resource.EmptyResourceInitializer;
+import org.eclipse.emf.parsley.resource.ResourceManager;
 import org.eclipse.emf.parsley.ui.provider.ViewerLabelProvider;
 import org.eclipse.jface.viewers.ILabelProvider;
 import org.eclipse.ui.plugin.AbstractUIPlugin;
@@ -26,8 +26,8 @@
 
 public class GuiceModule extends EmfParsleyGuiceModule {
 
-	public static class CustomEmptyResourceInitializer extends
-			EmptyResourceInitializer {
+	public static class CustomResourceManager extends
+			ResourceManager {
 		public void initialize(org.eclipse.emf.ecore.resource.Resource resource) {
 			Model model = ModelFactory.eINSTANCE.createModel();
 			model.setName("My Model");
@@ -105,7 +105,7 @@
 	}
 
 	@Override
-	public Class<? extends EmptyResourceInitializer> bindEmptyResourceInitializer() {
-		return CustomEmptyResourceInitializer.class;
+	public Class<? extends ResourceManager> bindResourceManager() {
+		return CustomResourceManager.class;
 	}
 }
diff --git a/examples/org.eclipse.emf.parsley.examples.rap.ui/src/org/eclipse/emf/parsley/examples/rap/ui/View.java b/examples/org.eclipse.emf.parsley.examples.rap.ui/src/org/eclipse/emf/parsley/examples/rap/ui/View.java
index 16b3cd5..78f9c98 100644
--- a/examples/org.eclipse.emf.parsley.examples.rap.ui/src/org/eclipse/emf/parsley/examples/rap/ui/View.java
+++ b/examples/org.eclipse.emf.parsley.examples.rap.ui/src/org/eclipse/emf/parsley/examples/rap/ui/View.java
@@ -10,11 +10,10 @@
  *******************************************************************************/
 package org.eclipse.emf.parsley.examples.rap.ui;
 
-
 import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.emf.ecore.resource.impl.ResourceImpl;
 import org.eclipse.emf.parsley.factories.TreeFormFactory;
-import org.eclipse.emf.parsley.resource.EmptyResourceInitializer;
+import org.eclipse.emf.parsley.resource.ResourceManager;
 import org.eclipse.emf.parsley.widgets.TreeFormComposite;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.widgets.Composite;
@@ -25,7 +24,7 @@
 public class View extends ViewPart {
 	public static final String ID = "org.eclipse.emf.parsley.examples.rap.ui.view";
 
-	@Inject private EmptyResourceInitializer emptyResourceInitializer;
+	@Inject private ResourceManager resourceManager;
 	
 	@Inject private TreeFormFactory treeFormFactory;
 	
@@ -40,7 +39,7 @@
 				SWT.BORDER);
 		
 		Resource resource = new ResourceImpl();
-		emptyResourceInitializer.initialize(resource);
+		resourceManager.initialize(resource);
 		
 		treeFormComposite.update(resource);
 	}
diff --git a/plugins/org.eclipse.emf.parsley.cdo.common/src/org/eclipse/emf/parsley/cdo/CDOResourceLoader.java b/plugins/org.eclipse.emf.parsley.cdo.common/src/org/eclipse/emf/parsley/cdo/CDOResourceLoader.java
index 1687439..bceccd9 100644
--- a/plugins/org.eclipse.emf.parsley.cdo.common/src/org/eclipse/emf/parsley/cdo/CDOResourceLoader.java
+++ b/plugins/org.eclipse.emf.parsley.cdo.common/src/org/eclipse/emf/parsley/cdo/CDOResourceLoader.java
@@ -21,7 +21,6 @@
 import org.eclipse.emf.ecore.resource.ResourceSet;
 import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
 import org.eclipse.emf.parsley.cdo.util.CDOURIData;
-import org.eclipse.emf.parsley.resource.EmptyResourceInitializer;
 import org.eclipse.emf.parsley.resource.LoadResourceResponse;
 import org.eclipse.emf.parsley.resource.ResourceLoader;
 import org.eclipse.emf.spi.cdo.CDOMergingConflictResolver;
@@ -37,7 +36,6 @@
  */
 public class CDOResourceLoader extends ResourceLoader {
 
-	@Inject private EmptyResourceInitializer emptyResourceInitializer;
 	@Inject private CDOSessionManager sessionManager;
 	
 	private static final Logger LOGGER = Logger.getLogger(CDOResourceLoader.class);
@@ -67,7 +65,7 @@
 			resource = getResource(editingDomain.getResourceSet(), resourceURI);
 			if(resource==null){
 				resource = createResource(editingDomain.getResourceSet(), resourceURI);
-				emptyResourceInitializer.initialize(resource);
+				getResourceManager().initialize(resource);
 				((CDOTransaction)((CDOResource)resource).cdoView()).commit();
 			}
 		} catch (Exception e) {
diff --git a/plugins/org.eclipse.emf.parsley.common/src/org/eclipse/emf/parsley/EmfParsleyJavaGuiceModule.java b/plugins/org.eclipse.emf.parsley.common/src/org/eclipse/emf/parsley/EmfParsleyJavaGuiceModule.java
index 74577ea..aae0e14 100644
--- a/plugins/org.eclipse.emf.parsley.common/src/org/eclipse/emf/parsley/EmfParsleyJavaGuiceModule.java
+++ b/plugins/org.eclipse.emf.parsley.common/src/org/eclipse/emf/parsley/EmfParsleyJavaGuiceModule.java
@@ -49,8 +49,8 @@
 import org.eclipse.emf.parsley.listeners.OpenDialogMouseAdapter;
 import org.eclipse.emf.parsley.listeners.OpenPropertyViewMouseAdapter;
 import org.eclipse.emf.parsley.menus.ViewerContextMenuFactory;
-import org.eclipse.emf.parsley.resource.EmptyResourceInitializer;
 import org.eclipse.emf.parsley.resource.ResourceLoader;
+import org.eclipse.emf.parsley.resource.ResourceManager;
 import org.eclipse.emf.parsley.runtime.service.AbstractGenericModule;
 import org.eclipse.emf.parsley.runtime.ui.ClassLoaderImageHelper;
 import org.eclipse.emf.parsley.runtime.ui.IImageHelper;
@@ -426,11 +426,13 @@
 	}
 	
 	/**
-	 * Use this method to customize the resource initialization.
-	 * @return a specification of {@link EmptyResourceInitializer}
+	 * Use this method to customize tasks concerning a resource,
+	 * for example, its initialization.
+	 * 
+	 * @return a specification of {@link ResourceManager}
 	 */
-	public Class<? extends EmptyResourceInitializer> bindEmptyResourceInitializer() {
-		return EmptyResourceInitializer.class;
+	public Class<? extends ResourceManager> bindResourceManager() {
+		return ResourceManager.class;
 	}
 
 	/**
diff --git a/plugins/org.eclipse.emf.parsley.common/src/org/eclipse/emf/parsley/resource/EmptyResourceInitializer.java b/plugins/org.eclipse.emf.parsley.common/src/org/eclipse/emf/parsley/resource/EmptyResourceInitializer.java
deleted file mode 100644
index f92a3cf..0000000
--- a/plugins/org.eclipse.emf.parsley.common/src/org/eclipse/emf/parsley/resource/EmptyResourceInitializer.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2013 RCP Vision (http://www.rcp-vision.com) and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- * Lorenzo Bettini - initial API and implementation
- *******************************************************************************/
-package org.eclipse.emf.parsley.resource;
-
-import org.eclipse.emf.ecore.resource.Resource;
-
-/**
- * This is used when a loaded resource is empty, so that the programmer
- * can add default contents.
- * 
- * @author Lorenzo Bettini
- *
- */
-public class EmptyResourceInitializer {
-
-	public void initialize(Resource resource) {
-		// the default implementation does nothing
-	}
-}
diff --git a/plugins/org.eclipse.emf.parsley.common/src/org/eclipse/emf/parsley/resource/ResourceLoader.java b/plugins/org.eclipse.emf.parsley.common/src/org/eclipse/emf/parsley/resource/ResourceLoader.java
index 6ce3408..8210f68 100644
--- a/plugins/org.eclipse.emf.parsley.common/src/org/eclipse/emf/parsley/resource/ResourceLoader.java
+++ b/plugins/org.eclipse.emf.parsley.common/src/org/eclipse/emf/parsley/resource/ResourceLoader.java
@@ -18,23 +18,27 @@
 import com.google.inject.Inject;
 
 /**
- * ResourceLoader is responsible for loading the resource.
- * @author Lorenzo Bettini
+ * ResourceLoader is responsible for loading a {@link Resource}.
  * 
+ * @author Lorenzo Bettini
  */
 public class ResourceLoader {
 
 	@Inject
-	private EmptyResourceInitializer emptyResourceInitializer;
+	private ResourceManager resourceManager;
 
 	public Resource getResource(ResourceSet resourceSet, URI resourceURI) {
 		Resource resource = resourceSet.getResource(resourceURI, true);
 		if (resource.getContents().isEmpty()) {
-			emptyResourceInitializer.initialize(resource);
+			resourceManager.initialize(resource);
 		}
 		return resource;
 	}
 
+	protected ResourceManager getResourceManager() {
+		return resourceManager;
+	}
+	
 	/**
 	 * Tries to load the resource using the resource set of the editing domain
 	 * and returns a {@link LoadResourceResponse}.
@@ -55,7 +59,7 @@
 			resource = editingDomain.getResourceSet().getResource(resourceURI,
 					false);
 			if (resource != null && resource.getContents().isEmpty()) {
-				emptyResourceInitializer.initialize(resource);
+				resourceManager.initialize(resource);
 			}
 		}
 
diff --git a/plugins/org.eclipse.emf.parsley.common/src/org/eclipse/emf/parsley/resource/ResourceManager.java b/plugins/org.eclipse.emf.parsley.common/src/org/eclipse/emf/parsley/resource/ResourceManager.java
new file mode 100644
index 0000000..c0be578
--- /dev/null
+++ b/plugins/org.eclipse.emf.parsley.common/src/org/eclipse/emf/parsley/resource/ResourceManager.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2015 RCP Vision (http://www.rcp-vision.com) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ * Lorenzo Bettini - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.emf.parsley.resource;
+
+import org.eclipse.emf.ecore.resource.Resource;
+
+/**
+ * ResourceManager is responsible for tasks concerning a {@link Resource}.
+ * 
+ * @author Lorenzo Bettini - initial API and implementation
+ * 
+ */
+public class ResourceManager {
+
+	/**
+	 * This method is called by the framework when a loaded resource has to be
+	 * initialized; subclasses can redefine it in order to put some contents in
+	 * the empty resource.
+	 * 
+	 * The default implementation is empty
+	 * 
+	 * @param resource
+	 */
+	public void initialize(Resource resource) {
+		// the default implementation does nothing
+	}
+}
diff --git a/tests/org.eclipse.emf.parsley.tests.swtbot/src/org/eclipse/emf/parsley/tests/factories/CustomLibraryModule.java b/tests/org.eclipse.emf.parsley.tests.swtbot/src/org/eclipse/emf/parsley/tests/factories/CustomLibraryModule.java
index d529602..8e7dd89 100644
--- a/tests/org.eclipse.emf.parsley.tests.swtbot/src/org/eclipse/emf/parsley/tests/factories/CustomLibraryModule.java
+++ b/tests/org.eclipse.emf.parsley.tests.swtbot/src/org/eclipse/emf/parsley/tests/factories/CustomLibraryModule.java
@@ -13,7 +13,7 @@
 
 import org.eclipse.emf.parsley.binding.FormControlFactory;
 import org.eclipse.emf.parsley.binding.ProposalCreator;
-import org.eclipse.emf.parsley.resource.EmptyResourceInitializer;
+import org.eclipse.emf.parsley.resource.ResourceManager;
 import org.eclipse.emf.parsley.tests.EmfParsleyGuiceModuleWithConfigurator;
 import org.eclipse.emf.parsley.tests.binding.CustomLibraryFormControlFactory;
 import org.eclipse.emf.parsley.tests.binding.CustomLibraryProposalCreator;
@@ -23,7 +23,7 @@
 import org.eclipse.emf.parsley.tests.labeling.CustomLibraryTableColumnLabelProvider;
 import org.eclipse.emf.parsley.tests.providers.TestFeaturesProvider;
 import org.eclipse.emf.parsley.tests.providers.TestTableFeaturesProvider;
-import org.eclipse.emf.parsley.tests.resource.TestEmptyLibraryResourceInitializer;
+import org.eclipse.emf.parsley.tests.resource.TestLibraryResourceManager;
 import org.eclipse.emf.parsley.ui.provider.FeatureCaptionProvider;
 import org.eclipse.emf.parsley.ui.provider.FeaturesProvider;
 import org.eclipse.emf.parsley.ui.provider.FormFeatureCaptionProvider;
@@ -68,8 +68,8 @@
 	}
 
 	@Override
-	public Class<? extends EmptyResourceInitializer> bindEmptyResourceInitializer() {
-		return TestEmptyLibraryResourceInitializer.class;
+	public Class<? extends ResourceManager> bindResourceManager() {
+		return TestLibraryResourceManager.class;
 	}
 
 	@Override
diff --git a/tests/org.eclipse.emf.parsley.tests.swtbot/src/org/eclipse/emf/parsley/tests/resource/TestEmptyLibraryResourceInitializer.java b/tests/org.eclipse.emf.parsley.tests.swtbot/src/org/eclipse/emf/parsley/tests/resource/TestLibraryResourceManager.java
similarity index 91%
rename from tests/org.eclipse.emf.parsley.tests.swtbot/src/org/eclipse/emf/parsley/tests/resource/TestEmptyLibraryResourceInitializer.java
rename to tests/org.eclipse.emf.parsley.tests.swtbot/src/org/eclipse/emf/parsley/tests/resource/TestLibraryResourceManager.java
index e035c06..fff0bf2 100644
--- a/tests/org.eclipse.emf.parsley.tests.swtbot/src/org/eclipse/emf/parsley/tests/resource/TestEmptyLibraryResourceInitializer.java
+++ b/tests/org.eclipse.emf.parsley.tests.swtbot/src/org/eclipse/emf/parsley/tests/resource/TestLibraryResourceManager.java
@@ -16,14 +16,14 @@
 import org.eclipse.emf.parsley.examples.library.EXTLibraryFactory;
 import org.eclipse.emf.parsley.examples.library.Library;
 import org.eclipse.emf.parsley.examples.library.Writer;
-import org.eclipse.emf.parsley.resource.EmptyResourceInitializer;
+import org.eclipse.emf.parsley.resource.ResourceManager;
 
 /**
  * @author Lorenzo Bettini
  * 
  */
-public class TestEmptyLibraryResourceInitializer extends
-		EmptyResourceInitializer {
+public class TestLibraryResourceManager extends
+		ResourceManager {
 
 	@Override
 	public void initialize(Resource resource) {
diff --git a/tests/org.eclipse.emf.parsley.tests/src/org/eclipse/emf/parsley/tests/GlobalAdapterFactoryEditingDomainModule.java b/tests/org.eclipse.emf.parsley.tests/src/org/eclipse/emf/parsley/tests/GlobalAdapterFactoryEditingDomainModule.java
index 42e80a7..186148c 100644
--- a/tests/org.eclipse.emf.parsley.tests/src/org/eclipse/emf/parsley/tests/GlobalAdapterFactoryEditingDomainModule.java
+++ b/tests/org.eclipse.emf.parsley.tests/src/org/eclipse/emf/parsley/tests/GlobalAdapterFactoryEditingDomainModule.java
@@ -13,15 +13,14 @@
 import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
 import org.eclipse.emf.parsley.edit.domain.GlobalAdapterFactoryEditingDomainProvider;
-import org.eclipse.emf.parsley.resource.EmptyResourceInitializer;
+import org.eclipse.emf.parsley.resource.ResourceManager;
 import org.eclipse.emf.parsley.tests.models.testmodels.TestmodelsFactory;
 
 import com.google.inject.Provider;
 
 public class GlobalAdapterFactoryEditingDomainModule extends
 		EmfParsleyGuiceModuleForTesting {
-	protected static class TestEmptyResourceInitializer extends
-			EmptyResourceInitializer {
+	protected static class TestResourceManager extends ResourceManager {
 		public void initialize(Resource resource) {
 			resource.getContents().add(
 					TestmodelsFactory.eINSTANCE.createClassWithName());
@@ -34,7 +33,7 @@
 	}
 
 	@Override
-	public Class<? extends EmptyResourceInitializer> bindEmptyResourceInitializer() {
-		return TestEmptyResourceInitializer.class;
+	public Class<? extends ResourceManager> bindResourceManager() {
+		return TestResourceManager.class;
 	}
 }
\ No newline at end of file