bug 419227: Deprecate IFormFieldInjection2 and IService2

https://bugs.eclipse.org/bugs/show_bug.cgi?id=419227

- moved methods from IService2 to IService
- classes/interfaces extending IService2 now extend IService
- moved methods from IFormFieldInjection2 to IFormFieldInjection
- classes/interfaces extending IFormFieldInjection2 now extend
IFormFieldInjection

Change-Id: If3b8e21e26a0e1c5fa4dc202e0d4cd8f6199064a
Signed-off-by: Matthias Nick <Matthias.Nick@bsiag.com>
Reviewed-on: https://git.eclipse.org/r/17353
Tested-by: Hudson CI
Reviewed-by: Jeremie Bresson <jbr@bsiag.com>
IP-Clean: Jeremie Bresson <jbr@bsiag.com>
diff --git a/org.eclipse.scout.rt.client.mobile/src/org/eclipse/scout/rt/client/mobile/navigation/IBreadCrumbsNavigationService.java b/org.eclipse.scout.rt.client.mobile/src/org/eclipse/scout/rt/client/mobile/navigation/IBreadCrumbsNavigationService.java
index 92af401..506bcdb 100644
--- a/org.eclipse.scout.rt.client.mobile/src/org/eclipse/scout/rt/client/mobile/navigation/IBreadCrumbsNavigationService.java
+++ b/org.eclipse.scout.rt.client.mobile/src/org/eclipse/scout/rt/client/mobile/navigation/IBreadCrumbsNavigationService.java
@@ -1,7 +1,7 @@
 package org.eclipse.scout.rt.client.mobile.navigation;
 
 import org.eclipse.scout.rt.client.ui.desktop.IDesktop;
-import org.eclipse.scout.service.IService2;
+import org.eclipse.scout.service.IService;
 
 /*******************************************************************************
  * Copyright (c) 2010 BSI Business Systems Integration AG.
@@ -17,7 +17,7 @@
 /**
  * @since 3.9.0
  */
-public interface IBreadCrumbsNavigationService extends IService2 {
+public interface IBreadCrumbsNavigationService extends IService {
 
   void install();
 
diff --git a/org.eclipse.scout.rt.client.mobile/src/org/eclipse/scout/rt/client/mobile/transformation/IDeviceTransformationService.java b/org.eclipse.scout.rt.client.mobile/src/org/eclipse/scout/rt/client/mobile/transformation/IDeviceTransformationService.java
index 5a35d6b..395e719 100644
--- a/org.eclipse.scout.rt.client.mobile/src/org/eclipse/scout/rt/client/mobile/transformation/IDeviceTransformationService.java
+++ b/org.eclipse.scout.rt.client.mobile/src/org/eclipse/scout/rt/client/mobile/transformation/IDeviceTransformationService.java
@@ -11,12 +11,12 @@
 package org.eclipse.scout.rt.client.mobile.transformation;
 
 import org.eclipse.scout.rt.client.ui.desktop.IDesktop;
-import org.eclipse.scout.service.IService2;
+import org.eclipse.scout.service.IService;
 
 /**
  * @since 3.9.0
  */
-public interface IDeviceTransformationService extends IService2 {
+public interface IDeviceTransformationService extends IService {
 
   void install();
 
diff --git a/org.eclipse.scout.rt.client.test/src/org/eclipse/scout/rt/client/services/common/file/FileServiceTest.java b/org.eclipse.scout.rt.client.test/src/org/eclipse/scout/rt/client/services/common/file/FileServiceTest.java
index 2d69593..c3ede14 100644
--- a/org.eclipse.scout.rt.client.test/src/org/eclipse/scout/rt/client/services/common/file/FileServiceTest.java
+++ b/org.eclipse.scout.rt.client.test/src/org/eclipse/scout/rt/client/services/common/file/FileServiceTest.java
@@ -172,7 +172,7 @@
     }
 
     @Override
-    public void initializeService() {
+    public void initializeService(ServiceRegistration registration) {
     }
 
   }
diff --git a/org.eclipse.scout.rt.client.test/src/org/eclipse/scout/rt/client/ui/form/fields/smartfield/SmartFieldTest.java b/org.eclipse.scout.rt.client.test/src/org/eclipse/scout/rt/client/ui/form/fields/smartfield/SmartFieldTest.java
index 7dae0be..f448246 100644
--- a/org.eclipse.scout.rt.client.test/src/org/eclipse/scout/rt/client/ui/form/fields/smartfield/SmartFieldTest.java
+++ b/org.eclipse.scout.rt.client.test/src/org/eclipse/scout/rt/client/ui/form/fields/smartfield/SmartFieldTest.java
@@ -120,7 +120,7 @@
 
   public static class StyleLookupService extends TestingLookupService {
     @Override
-    public void initializeService() {
+    public void initializeService(ServiceRegistration registration) {
       setRows(new LookupRow[]{
           new LookupRow(10L, "Red", ICON_FILE, "Red tooltip", "ff8888", "880000", FontSpec.parse("italic")),
           new LookupRow(20L, "Yellow", ICON_FILE, "Yellow tooltip", "ffff88", "888800", FontSpec.parse("italic")),
diff --git a/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/busy/IBusyManagerService.java b/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/busy/IBusyManagerService.java
index e287f09..abf77b2 100644
--- a/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/busy/IBusyManagerService.java
+++ b/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/busy/IBusyManagerService.java
@@ -11,7 +11,7 @@
 package org.eclipse.scout.rt.client.busy;
 
 import org.eclipse.scout.rt.client.IClientSession;
-import org.eclipse.scout.service.IService2;
+import org.eclipse.scout.service.IService;
 
 /**
  * The busy manager service is global and is the primary place to register/unregister {@link IBusyHandler}s per
@@ -20,7 +20,7 @@
  * @author imo
  * @since 3.8
  */
-public interface IBusyManagerService extends IService2 {
+public interface IBusyManagerService extends IService {
 
   void register(IClientSession session, IBusyHandler handler);
 
diff --git a/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/services/ClientServiceFactory.java b/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/services/ClientServiceFactory.java
index 0a574d9..7b67979 100644
--- a/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/services/ClientServiceFactory.java
+++ b/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/services/ClientServiceFactory.java
@@ -23,7 +23,6 @@
 import org.eclipse.scout.rt.client.IClientSessionProvider;
 import org.eclipse.scout.service.CreateServiceImmediatelySchedulingRule;
 import org.eclipse.scout.service.IService;
-import org.eclipse.scout.service.IService2;
 import org.eclipse.scout.service.IServiceFactory;
 import org.eclipse.scout.service.ServiceConstants;
 import org.eclipse.scout.service.ServiceUtility;
@@ -128,11 +127,8 @@
       if (m_service == null) {
         try {
           m_service = m_serviceClass.newInstance();
-          if (m_service instanceof IService2) {
-            ((IService2) m_service).initializeService(registration);
-          }
-          else if (m_service instanceof IService) {
-            ((IService) m_service).initializeService();
+          if (m_service instanceof IService) {
+            ((IService) m_service).initializeService(registration);
           }
         }
         catch (Throwable t) {
diff --git a/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/services/common/bookmark/internal/BookmarkService.java b/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/services/common/bookmark/internal/BookmarkService.java
index 02d0cfe..07f10d1 100644
--- a/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/services/common/bookmark/internal/BookmarkService.java
+++ b/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/services/common/bookmark/internal/BookmarkService.java
@@ -35,6 +35,7 @@
 import org.eclipse.scout.rt.shared.services.common.bookmark.IBookmarkVisitor;
 import org.eclipse.scout.service.AbstractService;
 import org.eclipse.scout.service.SERVICES;
+import org.osgi.framework.ServiceRegistration;
 
 /**
  * Client side service for bookmark support
@@ -66,10 +67,9 @@
     return data;
   }
 
-  @SuppressWarnings("deprecation")
   @Override
-  public void initializeService() {
-    super.initializeService();
+  public void initializeService(ServiceRegistration registration) {
+    super.initializeService(registration);
     addBookmarkServiceListener(new BookmarkServiceListener() {
       @Override
       public void bookmarksChanged(BookmarkServiceEvent e) {
diff --git a/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/services/common/code/CodeServiceClientProxy.java b/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/services/common/code/CodeServiceClientProxy.java
index 0604993..8268119 100644
--- a/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/services/common/code/CodeServiceClientProxy.java
+++ b/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/services/common/code/CodeServiceClientProxy.java
@@ -37,6 +37,7 @@
 import org.eclipse.scout.rt.shared.services.common.code.ICodeVisitor;
 import org.eclipse.scout.service.AbstractService;
 import org.eclipse.scout.service.SERVICES;
+import org.osgi.framework.ServiceRegistration;
 
 /**
  * maintains a cache of ICodeType objects that can be (re)loaded using the
@@ -81,10 +82,9 @@
     }
   }
 
-  @SuppressWarnings("deprecation")
   @Override
-  public void initializeService() {
-    super.initializeService();
+  public void initializeService(ServiceRegistration registration) {
+    super.initializeService(registration);
     // add client notification listener
     SERVICES.getService(IClientNotificationConsumerService.class).addGlobalClientNotificationConsumerListener(new IClientNotificationConsumerListener() {
       @Override
diff --git a/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/services/common/icon/IIconProviderService.java b/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/services/common/icon/IIconProviderService.java
index 6c781d4..83a972b 100644
--- a/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/services/common/icon/IIconProviderService.java
+++ b/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/services/common/icon/IIconProviderService.java
@@ -10,13 +10,13 @@
  ******************************************************************************/
 package org.eclipse.scout.rt.client.services.common.icon;
 
-import org.eclipse.scout.service.IService2;
+import org.eclipse.scout.service.IService;
 import org.osgi.framework.Bundle;
 
 /**
  *
  */
-public interface IIconProviderService extends IService2 {
+public interface IIconProviderService extends IService {
 
   /**
    * the icon lookup can be called with a full icon name (with extension) e.g. 'myIcon.gif' or with a simple icon name
diff --git a/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/services/common/security/AccessControlServiceClientProxy.java b/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/services/common/security/AccessControlServiceClientProxy.java
index 6fa065a..fc7d969 100644
--- a/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/services/common/security/AccessControlServiceClientProxy.java
+++ b/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/services/common/security/AccessControlServiceClientProxy.java
@@ -35,6 +35,7 @@
 import org.eclipse.scout.rt.shared.services.common.security.ResetAccessControlChangedNotification;
 import org.eclipse.scout.service.AbstractService;
 import org.eclipse.scout.service.SERVICES;
+import org.osgi.framework.ServiceRegistration;
 
 /**
  * Access control permissions received from backend (JAAS permissions), cached for convenience and performance.
@@ -63,10 +64,9 @@
     return data;
   }
 
-  @SuppressWarnings("deprecation")
   @Override
-  public void initializeService() {
-    super.initializeService();
+  public void initializeService(ServiceRegistration registration) {
+    super.initializeService(registration);
     // add client notification listener
     SERVICES.getService(IClientNotificationConsumerService.class).addGlobalClientNotificationConsumerListener(new IClientNotificationConsumerListener() {
       @Override
diff --git a/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/desktop/navigation/INavigationHistoryService.java b/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/desktop/navigation/INavigationHistoryService.java
index 3bd6050..705185f 100644
--- a/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/desktop/navigation/INavigationHistoryService.java
+++ b/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/desktop/navigation/INavigationHistoryService.java
@@ -17,14 +17,14 @@
 import org.eclipse.scout.rt.client.ui.action.menu.IMenu;
 import org.eclipse.scout.rt.client.ui.desktop.outline.pages.IPage;
 import org.eclipse.scout.rt.shared.services.common.bookmark.Bookmark;
-import org.eclipse.scout.service.IService2;
+import org.eclipse.scout.service.IService;
 
 /**
  * Service interface for storing the navigation history and navigating in that
  * history.
  */
 @Priority(-3)
-public interface INavigationHistoryService extends IService2 {
+public interface INavigationHistoryService extends IService {
   String SERVICE_DATA_KEY = "navigationHistoryServiceData";
 
   /**
diff --git a/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/form/DefaultFormFieldInjection.java b/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/form/DefaultFormFieldInjection.java
index 6c554ad..56ab7ff 100644
--- a/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/form/DefaultFormFieldInjection.java
+++ b/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/form/DefaultFormFieldInjection.java
@@ -34,7 +34,7 @@
  * 
  * @since 3.8.2
  */
-public class DefaultFormFieldInjection implements IFormFieldInjection2 {
+public class DefaultFormFieldInjection implements IFormFieldInjection {
   private static final IScoutLogger LOG = ScoutLogManager.getLogger(DefaultFormFieldInjection.class);
 
   private final Map<IFormField, Set<Class<? extends IFormField>>> m_replacingFormFieldsByContainer;
diff --git a/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/form/FormFieldInjectionThreadLocal.java b/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/form/FormFieldInjectionThreadLocal.java
index 6d4e70f..e23428a 100644
--- a/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/form/FormFieldInjectionThreadLocal.java
+++ b/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/form/FormFieldInjectionThreadLocal.java
@@ -112,9 +112,7 @@
       return;
     }
     for (IFormFieldInjection i : m_stack) {
-      if (i instanceof IFormFieldInjection2) {
-        ((IFormFieldInjection2) i).filterFields(container, fieldList);
-      }
+      i.filterFields(container, fieldList);
     }
   }
 }
diff --git a/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/form/IFormFieldInjection.java b/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/form/IFormFieldInjection.java
index 45ab0ad..a0c8366 100644
--- a/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/form/IFormFieldInjection.java
+++ b/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/form/IFormFieldInjection.java
@@ -33,4 +33,13 @@
    */
   void injectFields(IFormField container, List<IFormField> fieldList);
 
+  /**
+   * @param container
+   *          is the container field the given field classes are created for
+   * @param fieldList
+   *          live and mutable list of configured field classes (i.e. yet not instantiated)
+   * @since 3.8.2 (moved to IFormFieldInjection in 3.10.0-M3)
+   */
+  void filterFields(IFormField container, List<Class<? extends IFormField>> fieldList);
+
 }
diff --git a/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/form/IFormFieldInjection2.java b/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/form/IFormFieldInjection2.java
index fdf64ae..aa0eefb 100644
--- a/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/form/IFormFieldInjection2.java
+++ b/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/form/IFormFieldInjection2.java
@@ -10,24 +10,14 @@
  ******************************************************************************/
 package org.eclipse.scout.rt.client.ui.form;
 
-import java.util.List;
-
-import org.eclipse.scout.rt.client.ui.form.fields.IFormField;
 
 /**
- * Interface extension to {@link IFormFieldInjection} that provides additional methods for filtering form fields before
- * they are initialized.
+ * Interface extension to {@link IFormFieldInjection} that was used with version [3.8.2, 3.10.0) to provide additional
+ * methods for filtering form fields before they are initialized.
  * 
  * @since 3.8.2
+ * @deprecated will be removed with M-Release. Use {@link IFormFieldInjection} instead.
  */
+@Deprecated
 public interface IFormFieldInjection2 extends IFormFieldInjection {
-
-  /**
-   * @param container
-   *          is the container field the given field classes are created for
-   * @param fieldList
-   *          live and mutable list of configured field classes (i.e. yet not instantiated)
-   * @since 3.8.2
-   */
-  void filterFields(IFormField container, List<Class<? extends IFormField>> fieldList);
 }
diff --git a/org.eclipse.scout.rt.server.test/src/org/eclipse/scout/rt/server/services/RemoteServiceAccessTest.java b/org.eclipse.scout.rt.server.test/src/org/eclipse/scout/rt/server/services/RemoteServiceAccessTest.java
index 2c40e6a..f046fbb 100644
--- a/org.eclipse.scout.rt.server.test/src/org/eclipse/scout/rt/server/services/RemoteServiceAccessTest.java
+++ b/org.eclipse.scout.rt.server.test/src/org/eclipse/scout/rt/server/services/RemoteServiceAccessTest.java
@@ -25,7 +25,6 @@
 import org.eclipse.scout.rt.shared.servicetunnel.RemoteServiceAccessDenied;
 import org.eclipse.scout.service.AbstractService;
 import org.eclipse.scout.service.IService;
-import org.eclipse.scout.service.IService2;
 import org.junit.Test;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.Version;
@@ -36,7 +35,7 @@
   public void testAnnotations() throws Exception {
     DefaultTransactionDelegateMock bo = new DefaultTransactionDelegateMock();
     //
-    assertNonAccessible(bo, IMockProcessService.class, IService.class.getMethod("initializeService"), IMockProcessService.class);
+    assertNonAccessible(bo, IMockProcessService.class, IService.class.getMethod("initializeService", org.osgi.framework.ServiceRegistration.class), IMockProcessService.class);
     assertNonAccessible(bo, IMockProcessService.class, Object.class.getMethod("hashCode"), IMockProcessService.class);
     //
     assertAccessible(bo, IMockProcessService.class, IMockProcessService.class.getMethod("hello"), IMockProcessService.class);
@@ -107,7 +106,7 @@
     }
   }
 
-  static interface IMockProcessService extends IService2 {
+  static interface IMockProcessService extends IService {
     void hello();
 
     @RemoteServiceAccessDenied
diff --git a/org.eclipse.scout.rt.server.test/src/org/eclipse/scout/rt/server/services/common/code/CodeServiceTest.java b/org.eclipse.scout.rt.server.test/src/org/eclipse/scout/rt/server/services/common/code/CodeServiceTest.java
index e656162..d3642f6 100644
--- a/org.eclipse.scout.rt.server.test/src/org/eclipse/scout/rt/server/services/common/code/CodeServiceTest.java
+++ b/org.eclipse.scout.rt.server.test/src/org/eclipse/scout/rt/server/services/common/code/CodeServiceTest.java
@@ -103,11 +103,6 @@
       super();
     }
 
-    @SuppressWarnings("deprecation")
-    @Override
-    public void initializeService() {
-    }
-
     @Override
     public void initializeService(ServiceRegistration registration) {
     }
diff --git a/org.eclipse.scout.rt.server.test/src/org/eclipse/scout/rt/server/services/common/security/AbstractAccessControlServiceTest.java b/org.eclipse.scout.rt.server.test/src/org/eclipse/scout/rt/server/services/common/security/AbstractAccessControlServiceTest.java
index 4973855..a51e572 100644
--- a/org.eclipse.scout.rt.server.test/src/org/eclipse/scout/rt/server/services/common/security/AbstractAccessControlServiceTest.java
+++ b/org.eclipse.scout.rt.server.test/src/org/eclipse/scout/rt/server/services/common/security/AbstractAccessControlServiceTest.java
@@ -35,7 +35,7 @@
   @Test
   public void testClientNotificationSentForClearCache() {
     AbstractAccessControlService accessControlService = new TestAccessControlService();
-    accessControlService.initializeService();
+    accessControlService.initializeService(null);
 
     TestClientNotificationQueueListener listener = new TestClientNotificationQueueListener();
     SERVICES.getService(IClientNotificationService.class).addClientNotificationQueueListener(listener);
@@ -81,7 +81,7 @@
 
   private void verifyNoNotificationSentForClearCache(String... userIds) {
     AbstractAccessControlService accessControlService = new TestAccessControlService();
-    accessControlService.initializeService();
+    accessControlService.initializeService(null);
 
     TestClientNotificationQueueListener listener = new TestClientNotificationQueueListener();
     SERVICES.getService(IClientNotificationService.class).addClientNotificationQueueListener(listener);
diff --git a/org.eclipse.scout.rt.server.test/src/org/eclipse/scout/rt/server/services/common/security/PermissionServiceTest.java b/org.eclipse.scout.rt.server.test/src/org/eclipse/scout/rt/server/services/common/security/PermissionServiceTest.java
index 417ddde..335e2fd 100644
--- a/org.eclipse.scout.rt.server.test/src/org/eclipse/scout/rt/server/services/common/security/PermissionServiceTest.java
+++ b/org.eclipse.scout.rt.server.test/src/org/eclipse/scout/rt/server/services/common/security/PermissionServiceTest.java
@@ -103,11 +103,6 @@
       super();
     }
 
-    @SuppressWarnings("deprecation")
-    @Override
-    public void initializeService() {
-    }
-
     @Override
     public void initializeService(ServiceRegistration registration) {
     }
diff --git a/org.eclipse.scout.rt.server/src/org/eclipse/scout/rt/server/services/ServerServiceFactory.java b/org.eclipse.scout.rt.server/src/org/eclipse/scout/rt/server/services/ServerServiceFactory.java
index b940fe8..2f1af39 100644
--- a/org.eclipse.scout.rt.server/src/org/eclipse/scout/rt/server/services/ServerServiceFactory.java
+++ b/org.eclipse.scout.rt.server/src/org/eclipse/scout/rt/server/services/ServerServiceFactory.java
@@ -25,7 +25,6 @@
 import org.eclipse.scout.rt.shared.TierState.Tier;
 import org.eclipse.scout.service.CreateServiceImmediatelySchedulingRule;
 import org.eclipse.scout.service.IService;
-import org.eclipse.scout.service.IService2;
 import org.eclipse.scout.service.IServiceFactory;
 import org.eclipse.scout.service.ServiceConstants;
 import org.eclipse.scout.service.ServiceUtility;
@@ -132,11 +131,8 @@
       if (m_service == null) {
         try {
           m_service = m_serviceClass.newInstance();
-          if (m_service instanceof IService2) {
-            ((IService2) m_service).initializeService(registration);
-          }
-          else if (m_service instanceof IService) {
-            ((IService) m_service).initializeService();
+          if (m_service instanceof IService) {
+            ((IService) m_service).initializeService(registration);
           }
         }
         catch (Throwable t) {
diff --git a/org.eclipse.scout.rt.server/src/org/eclipse/scout/rt/server/services/common/jdbc/AbstractSqlService.java b/org.eclipse.scout.rt.server/src/org/eclipse/scout/rt/server/services/common/jdbc/AbstractSqlService.java
index f5f47fb..ae72e22 100644
--- a/org.eclipse.scout.rt.server/src/org/eclipse/scout/rt/server/services/common/jdbc/AbstractSqlService.java
+++ b/org.eclipse.scout.rt.server/src/org/eclipse/scout/rt/server/services/common/jdbc/AbstractSqlService.java
@@ -54,6 +54,7 @@
 import org.eclipse.scout.service.AbstractService;
 import org.eclipse.scout.service.IServiceInventory;
 import org.eclipse.scout.service.SERVICES;
+import org.osgi.framework.ServiceRegistration;
 
 public abstract class AbstractSqlService extends AbstractService implements ISqlService, ILegacySqlQueryService, IAdaptable {
   private static final IScoutLogger LOG = ScoutLogManager.getLogger(AbstractSqlService.class);
@@ -89,8 +90,8 @@
 
   @SuppressWarnings("deprecation")
   @Override
-  public void initializeService() {
-    super.initializeService();
+  public void initializeService(ServiceRegistration registration) {
+    super.initializeService(registration);
 
     // load code and permission names
     m_permissionNameToDescriptor = new HashMap<String, List<BundleClassDescriptor>>();
diff --git a/org.eclipse.scout.rt.server/src/org/eclipse/scout/rt/server/services/common/security/AbstractAccessControlService.java b/org.eclipse.scout.rt.server/src/org/eclipse/scout/rt/server/services/common/security/AbstractAccessControlService.java
index 13a689d..7704b92 100644
--- a/org.eclipse.scout.rt.server/src/org/eclipse/scout/rt/server/services/common/security/AbstractAccessControlService.java
+++ b/org.eclipse.scout.rt.server/src/org/eclipse/scout/rt/server/services/common/security/AbstractAccessControlService.java
@@ -33,6 +33,7 @@
 import org.eclipse.scout.rt.shared.services.common.security.IAccessControlService;
 import org.eclipse.scout.service.AbstractService;
 import org.eclipse.scout.service.SERVICES;
+import org.osgi.framework.ServiceRegistration;
 
 /**
  * Implementations should override {@link #execLoadPermissions()}
@@ -110,9 +111,9 @@
 
   @SuppressWarnings("deprecation")
   @Override
-  public void initializeService() {
+  public void initializeService(ServiceRegistration registration) {
     m_accessControlStore = new AccessControlStore();
-    super.initializeService();
+    super.initializeService(registration);
   }
 
   @Override
diff --git a/org.eclipse.scout.rt.servicetunnel/src/org/eclipse/scout/rt/services/CommonProxyServiceFactory.java b/org.eclipse.scout.rt.servicetunnel/src/org/eclipse/scout/rt/services/CommonProxyServiceFactory.java
index 7bb2e1a..8ff177f 100644
--- a/org.eclipse.scout.rt.servicetunnel/src/org/eclipse/scout/rt/services/CommonProxyServiceFactory.java
+++ b/org.eclipse.scout.rt.servicetunnel/src/org/eclipse/scout/rt/services/CommonProxyServiceFactory.java
@@ -23,7 +23,6 @@
 import org.eclipse.scout.rt.shared.TierState.Tier;
 import org.eclipse.scout.service.CreateServiceImmediatelySchedulingRule;
 import org.eclipse.scout.service.IService;
-import org.eclipse.scout.service.IService2;
 import org.eclipse.scout.service.IServiceFactory;
 import org.eclipse.scout.service.ServiceConstants;
 import org.eclipse.scout.service.ServiceUtility;
@@ -138,13 +137,9 @@
         try {
           if (!m_serviceClass.isInterface()) {
             m_serviceImpl = createServiceInstance(m_serviceClass);
-            if (m_serviceImpl instanceof IService2) {
-              ((IService2) m_serviceImpl).initializeService(registration);
+            if (m_serviceImpl instanceof IService) {
+              ((IService) m_serviceImpl).initializeService(registration);
             }
-            else if (m_serviceImpl instanceof IService) {
-              ((IService) m_serviceImpl).initializeService();
-            }
-
           }
         }
         catch (Throwable t) {
diff --git a/org.eclipse.scout.rt.shared/src/org/eclipse/scout/rt/shared/services/common/session/ISessionService.java b/org.eclipse.scout.rt.shared/src/org/eclipse/scout/rt/shared/services/common/session/ISessionService.java
index fbdb384..ccb4a5b 100644
--- a/org.eclipse.scout.rt.shared/src/org/eclipse/scout/rt/shared/services/common/session/ISessionService.java
+++ b/org.eclipse.scout.rt.shared/src/org/eclipse/scout/rt/shared/services/common/session/ISessionService.java
@@ -13,13 +13,13 @@
 import org.eclipse.scout.commons.annotations.Priority;
 import org.eclipse.scout.commons.job.JobEx;
 import org.eclipse.scout.rt.shared.ISession;
-import org.eclipse.scout.service.IService2;
+import org.eclipse.scout.service.IService;
 
 /**
  * @since 3.8.0
  */
 @Priority(-3)
-public interface ISessionService extends IService2 {
+public interface ISessionService extends IService {
 
   /**
    * Returns the session which is assigned to the current client respectively server job.
diff --git a/org.eclipse.scout.rt.shared/src/org/eclipse/scout/rt/shared/services/common/text/ITextProviderService.java b/org.eclipse.scout.rt.shared/src/org/eclipse/scout/rt/shared/services/common/text/ITextProviderService.java
index 31e65ed..217f808 100644
--- a/org.eclipse.scout.rt.shared/src/org/eclipse/scout/rt/shared/services/common/text/ITextProviderService.java
+++ b/org.eclipse.scout.rt.shared/src/org/eclipse/scout/rt/shared/services/common/text/ITextProviderService.java
@@ -13,12 +13,12 @@
 import java.util.Locale;
 import java.util.Map;
 
-import org.eclipse.scout.service.IService2;
+import org.eclipse.scout.service.IService;
 
 /**
  * Interface for Scout Text Providers.
  */
-public interface ITextProviderService extends IService2 {
+public interface ITextProviderService extends IService {
   /**
    * Gets the text for the given key and language.<br>
    * if there are parameters in the translation, they are replaced with the given list.
diff --git a/org.eclipse.scout.rt.testing.client/src/org/eclipse/scout/testing/client/IGuiMockService.java b/org.eclipse.scout.rt.testing.client/src/org/eclipse/scout/testing/client/IGuiMockService.java
index 6ec6071..52b22c1 100644
--- a/org.eclipse.scout.rt.testing.client/src/org/eclipse/scout/testing/client/IGuiMockService.java
+++ b/org.eclipse.scout.rt.testing.client/src/org/eclipse/scout/testing/client/IGuiMockService.java
@@ -12,14 +12,14 @@
 
 import org.eclipse.scout.rt.client.IClientSession;
 import org.eclipse.scout.rt.shared.ui.UserAgent;
-import org.eclipse.scout.service.IService2;
+import org.eclipse.scout.service.IService;
 
 /**
  * This interface is used to support gui testing with an abstraction layer.
  * <p>
  * Therefore swt and swing gui tests can be programmed just once in the client and run with both guis.
  */
-public interface IGuiMockService extends IService2 {
+public interface IGuiMockService extends IService {
 
   UserAgent initUserAgent();
 
diff --git a/org.eclipse.scout.rt.testing.shared/src/org/eclipse/scout/rt/testing/shared/TestingUtility.java b/org.eclipse.scout.rt.testing.shared/src/org/eclipse/scout/rt/testing/shared/TestingUtility.java
index 8c8a2d0..cf11bf66 100644
--- a/org.eclipse.scout.rt.testing.shared/src/org/eclipse/scout/rt/testing/shared/TestingUtility.java
+++ b/org.eclipse.scout.rt.testing.shared/src/org/eclipse/scout/rt/testing/shared/TestingUtility.java
@@ -18,7 +18,6 @@
 import java.util.Map;
 
 import org.eclipse.scout.service.IService;
-import org.eclipse.scout.service.IService2;
 import org.eclipse.scout.service.ServiceUtility;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.Constants;
@@ -71,11 +70,8 @@
       if (Proxy.isProxyClass(service.getClass())) {
         //nop
       }
-      else if (service instanceof IService2) {
-        ((IService2) service).initializeService(reg);
-      }
       else if (service instanceof IService) {
-        ((IService) service).initializeService();
+        ((IService) service).initializeService(reg);
       }
     }
     return result;
diff --git a/org.eclipse.scout.rt.testing.shared/src/org/eclipse/scout/rt/testing/shared/services/lookup/TestingLookupService.java b/org.eclipse.scout.rt.testing.shared/src/org/eclipse/scout/rt/testing/shared/services/lookup/TestingLookupService.java
index 0ee5208..3fb8c32 100644
--- a/org.eclipse.scout.rt.testing.shared/src/org/eclipse/scout/rt/testing/shared/services/lookup/TestingLookupService.java
+++ b/org.eclipse.scout.rt.testing.shared/src/org/eclipse/scout/rt/testing/shared/services/lookup/TestingLookupService.java
@@ -18,6 +18,7 @@
 import org.eclipse.scout.rt.shared.services.lookup.ILookupService;
 import org.eclipse.scout.rt.shared.services.lookup.LookupCall;
 import org.eclipse.scout.rt.shared.services.lookup.LookupRow;
+import org.osgi.framework.ServiceRegistration;
 
 /**
  * Lookup service for testing purposes (Implementation of {@link ILookupService}).
@@ -32,7 +33,7 @@
   }
 
   @Override
-  public void initializeService() {
+  public void initializeService(ServiceRegistration registration) {
   }
 
   public LookupRow[] getRows() {
diff --git a/org.eclipse.scout.rt.ui.rap/src/org/eclipse/scout/rt/ui/rap/services/common/patchedclass/IPatchedClassService.java b/org.eclipse.scout.rt.ui.rap/src/org/eclipse/scout/rt/ui/rap/services/common/patchedclass/IPatchedClassService.java
index 7a5258f..053f285 100644
--- a/org.eclipse.scout.rt.ui.rap/src/org/eclipse/scout/rt/ui/rap/services/common/patchedclass/IPatchedClassService.java
+++ b/org.eclipse.scout.rt.ui.rap/src/org/eclipse/scout/rt/ui/rap/services/common/patchedclass/IPatchedClassService.java
@@ -15,10 +15,10 @@
 import org.eclipse.scout.rt.ui.rap.ext.IDropDownFileUploadForPatch;
 import org.eclipse.scout.rt.ui.rap.window.desktop.nonmodalFormBar.IRwtScoutFormButtonForPatch;
 import org.eclipse.scout.rt.ui.rap.window.desktop.toolbar.IRwtScoutToolButtonForPatch;
-import org.eclipse.scout.service.IService2;
+import org.eclipse.scout.service.IService;
 import org.eclipse.swt.widgets.Composite;
 
-public interface IPatchedClassService extends IService2 {
+public interface IPatchedClassService extends IService {
 
   IRwtScoutTableForPatch createRwtScoutTable();
 
diff --git a/org.eclipse.scout.rt.ui.rap/src/org/eclipse/scout/rt/ui/rap/window/filechooser/IRwtScoutFileChooserService.java b/org.eclipse.scout.rt.ui.rap/src/org/eclipse/scout/rt/ui/rap/window/filechooser/IRwtScoutFileChooserService.java
index 2741f6e..9e45078 100644
--- a/org.eclipse.scout.rt.ui.rap/src/org/eclipse/scout/rt/ui/rap/window/filechooser/IRwtScoutFileChooserService.java
+++ b/org.eclipse.scout.rt.ui.rap/src/org/eclipse/scout/rt/ui/rap/window/filechooser/IRwtScoutFileChooserService.java
@@ -11,10 +11,10 @@
 package org.eclipse.scout.rt.ui.rap.window.filechooser;
 
 import org.eclipse.scout.rt.client.ui.basic.filechooser.IFileChooser;
-import org.eclipse.scout.service.IService2;
+import org.eclipse.scout.service.IService;
 import org.eclipse.swt.widgets.Shell;
 
-public interface IRwtScoutFileChooserService extends IService2 {
+public interface IRwtScoutFileChooserService extends IService {
 
   IRwtScoutFileChooser createFileChooser(Shell parentShell, IFileChooser fileChooser);
 }
diff --git a/org.eclipse.scout.rt.ui.swing/src/org/eclipse/scout/rt/ui/swing/services/UserActivityProvider.java b/org.eclipse.scout.rt.ui.swing/src/org/eclipse/scout/rt/ui/swing/services/UserActivityProvider.java
index 7d10004..53db88d 100644
--- a/org.eclipse.scout.rt.ui.swing/src/org/eclipse/scout/rt/ui/swing/services/UserActivityProvider.java
+++ b/org.eclipse.scout.rt.ui.swing/src/org/eclipse/scout/rt/ui/swing/services/UserActivityProvider.java
@@ -4,7 +4,7 @@
  * 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:
  *     BSI Business Systems Integration AG - initial API and implementation
  ******************************************************************************/
@@ -22,6 +22,7 @@
 import org.eclipse.core.runtime.jobs.Job;
 import org.eclipse.scout.commons.beans.AbstractPropertyObserver;
 import org.eclipse.scout.rt.shared.services.common.useractivity.IUserActivityProvider;
+import org.osgi.framework.ServiceRegistration;
 
 public class UserActivityProvider extends AbstractPropertyObserver implements IUserActivityProvider {
   private long m_idleTrigger;
@@ -46,7 +47,7 @@
   }
 
   @Override
-  public void initializeService() {
+  public void initializeService(ServiceRegistration registration) {
     // nop
   }
 
diff --git a/org.eclipse.scout.rt.ui.swt/src/org/eclipse/scout/rt/ui/swt/services/UserActivityProvider.java b/org.eclipse.scout.rt.ui.swt/src/org/eclipse/scout/rt/ui/swt/services/UserActivityProvider.java
index 11e2db7..60a202f 100644
--- a/org.eclipse.scout.rt.ui.swt/src/org/eclipse/scout/rt/ui/swt/services/UserActivityProvider.java
+++ b/org.eclipse.scout.rt.ui.swt/src/org/eclipse/scout/rt/ui/swt/services/UserActivityProvider.java
@@ -4,7 +4,7 @@
  * 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:
  *     BSI Business Systems Integration AG - initial API and implementation
  ******************************************************************************/
@@ -21,6 +21,7 @@
 import org.eclipse.swt.widgets.Event;
 import org.eclipse.swt.widgets.Listener;
 import org.eclipse.ui.PlatformUI;
+import org.osgi.framework.ServiceRegistration;
 
 public class UserActivityProvider extends AbstractPropertyObserver implements IUserActivityProvider {
   private long m_idleTrigger;
@@ -71,7 +72,7 @@
   }
 
   @Override
-  public void initializeService() {
+  public void initializeService(ServiceRegistration registration) {
     // nop
   }
 
diff --git a/org.eclipse.scout.service/src/org/eclipse/scout/service/AbstractService.java b/org.eclipse.scout.service/src/org/eclipse/scout/service/AbstractService.java
index b140c9c..63ea67e 100644
--- a/org.eclipse.scout.service/src/org/eclipse/scout/service/AbstractService.java
+++ b/org.eclipse.scout.service/src/org/eclipse/scout/service/AbstractService.java
@@ -26,7 +26,7 @@
  * Convenience {@link IService} implementation with support for config.ini
  * variable injection. see {@link ServiceUtility#injectConfigProperties(IService)}
  */
-public abstract class AbstractService implements IService2 {
+public abstract class AbstractService implements IService {
   private static final IScoutLogger LOG = ScoutLogManager.getLogger(AbstractService.class);
 
   public AbstractService() {
@@ -34,13 +34,12 @@
 
   /**
    * This default implementation calls the default initializer {@link DefaultServiceInitializer} which calls
-   * {@link org.eclipse.scout.service.ServiceUtility#injectConfigParams}(this)
-   * 
-   * @deprecated use {@link AbstractService#initializeService(ServiceRegistration)} instead.
+   * {@link org.eclipse.scout.service.ServiceUtility#injectConfigParams}(this).
+   * It ensures that properties are getting initialized. This method can be overwritten by
+   * implementers. Implementers should aware the property injection is only done if the super call is made.
    */
   @Override
-  @Deprecated
-  public void initializeService() {
+  public void initializeService(ServiceRegistration registration) {
     Activator activator = Activator.getDefault();
     if (activator == null || activator.getServicesExtensionManager() == null) {
       LOG.error("Could not initialize service. " + getClass().getName());
@@ -73,18 +72,6 @@
         break;
       }
     }
-
-  }
-
-  /**
-   * calls the "old" initialization method to ensure properties getting initialized. This method can be overwritten by
-   * implementers. Implementers should aware the property injection is only done if the super call is made.
-   * 
-   * @see AbstractService#initializeService()
-   */
-  @Override
-  public void initializeService(ServiceRegistration registration) {
-    initializeService();
   }
 
   /**
diff --git a/org.eclipse.scout.service/src/org/eclipse/scout/service/DefaultServiceFactory.java b/org.eclipse.scout.service/src/org/eclipse/scout/service/DefaultServiceFactory.java
index 3ed529c..dc130ee 100644
--- a/org.eclipse.scout.service/src/org/eclipse/scout/service/DefaultServiceFactory.java
+++ b/org.eclipse.scout.service/src/org/eclipse/scout/service/DefaultServiceFactory.java
@@ -26,7 +26,7 @@
  * The service exists once per osgi environment and is cached persistent.
  * <p>
  * The factory supports {@link ServiceConstants#SERVICE_CREATE_IMMEDIATELY} and calls
- * {@link IService#initializeService()} on {@link IService} instances.
+ * {@link IService#initializeService(ServiceRegistration registration)} on {@link IService} instances.
  */
 public class DefaultServiceFactory implements IServiceFactory {
   private static final IScoutLogger LOG = ScoutLogManager.getLogger(DefaultServiceFactory.class);
@@ -84,11 +84,8 @@
       if (m_service == null) {
         try {
           m_service = m_serviceClass.newInstance();
-          if (m_service instanceof IService2) {
-            ((IService2) m_service).initializeService(registration);
-          }
-          else if (m_service instanceof IService) {
-            ((IService) m_service).initializeService();
+          if (m_service instanceof IService) {
+            ((IService) m_service).initializeService(registration);
           }
         }
         catch (Throwable t) {
diff --git a/org.eclipse.scout.service/src/org/eclipse/scout/service/IService.java b/org.eclipse.scout.service/src/org/eclipse/scout/service/IService.java
index f454d56..6e48e10 100644
--- a/org.eclipse.scout.service/src/org/eclipse/scout/service/IService.java
+++ b/org.eclipse.scout.service/src/org/eclipse/scout/service/IService.java
@@ -4,12 +4,14 @@
  * 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:
  *     BSI Business Systems Integration AG - initial API and implementation
  ******************************************************************************/
 package org.eclipse.scout.service;
 
+import org.osgi.framework.ServiceRegistration;
+
 /**
  * Convenience service interface for services that are interested in beeing
  * notified when they are lazily created.
@@ -155,9 +157,11 @@
    * The method is called by the framework just after the service was lazily
    * created by the service factory (not when it was registered!). The service
    * exists once per osgi and is cached by the {@link IServiceFactory} The
-   * default implementation in {@link AbstractService} calls {@link
-   * ServiceUtility#injectConfigProperties(this)}.
+   * default implementation in {@link AbstractService} calls {@link ServiceUtility#injectConfigProperties(this)}.
+   * 
+   * @param registration
+   *          the service registration
+   * @since 3.10.0-M3 (moved from IService2 to IService)
    */
-  void initializeService();
-
+  void initializeService(ServiceRegistration registration);
 }
diff --git a/org.eclipse.scout.service/src/org/eclipse/scout/service/IService2.java b/org.eclipse.scout.service/src/org/eclipse/scout/service/IService2.java
index d1bd821..3d6d1ad 100644
--- a/org.eclipse.scout.service/src/org/eclipse/scout/service/IService2.java
+++ b/org.eclipse.scout.service/src/org/eclipse/scout/service/IService2.java
@@ -10,8 +10,6 @@
  ******************************************************************************/
 package org.eclipse.scout.service;
 
-import org.osgi.framework.ServiceRegistration;
-
 /**
  * Convenience service interface for services that are interested in beeing
  * notified when they are lazily created.
@@ -151,19 +149,8 @@
  * </p>
  * 
  * @since 1.0.0 see also {@link org.eclipse.scout.commons.annotations.Priority} for defining service ranking
+ * @deprecated will be removed with M-Release. Use {@link IService} instead.
  */
+@Deprecated
 public abstract interface IService2 extends IService {
-
-  /**
-   * The method is called by the framework just after the service was lazily
-   * created by the service factory (not when it was registered!). The service
-   * exists once per osgi and is cached by the {@link IServiceFactory} The
-   * default implementation in {@link AbstractService} calls {@link
-   * ServiceUtility#injectConfigProperties(this)}.
-   * 
-   * @param registration
-   *          the service registration
-   */
-  void initializeService(ServiceRegistration registration);
-
 }