force Eclipse3.4 validating service registration when SCR is not present
diff --git a/modeling/plugins/org.eclipse.pde.emfforms/src/org/eclipse/pde/emfforms/internal/validation/ValidatingEContentAdapter.java b/modeling/plugins/org.eclipse.pde.emfforms/src/org/eclipse/pde/emfforms/internal/validation/ValidatingEContentAdapter.java
index e17d0c0..2fbc289 100644
--- a/modeling/plugins/org.eclipse.pde.emfforms/src/org/eclipse/pde/emfforms/internal/validation/ValidatingEContentAdapter.java
+++ b/modeling/plugins/org.eclipse.pde.emfforms/src/org/eclipse/pde/emfforms/internal/validation/ValidatingEContentAdapter.java
@@ -8,10 +8,11 @@
  * Contributors:
  *     Anyware Technologies - initial API and implementation
  *
- * $Id: AbstractEmfFormPage.java,v 1.7 2009/08/07 11:03:24 bcabe Exp $
+ * $Id: ValidatingEContentAdapter.java,v 1.6 2009/08/20 17:27:03 bcabe Exp $
  */
- package org.eclipse.pde.emfforms.internal.validation;
+package org.eclipse.pde.emfforms.internal.validation;
 
+import java.util.Properties;
 import org.eclipse.core.databinding.DataBindingContext;
 import org.eclipse.core.databinding.observable.value.IObservableValue;
 import org.eclipse.emf.common.notify.Notification;
@@ -25,8 +26,7 @@
 import org.eclipse.pde.emfforms.internal.Activator;
 import org.eclipse.ui.forms.IMessageManager;
 import org.eclipse.ui.forms.editor.IFormPage;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceReference;
+import org.osgi.framework.*;
 
 public class ValidatingEContentAdapter extends EContentAdapter {
 	private DataBindingContext _dataBindingContext;
@@ -41,6 +41,9 @@
 		_dataBindingContext = dataBindingContext;
 		_observedValue = observedValue;
 
+		// if SCR is not present, we want to register the Eclipse 3.4 validator manually ...
+		forceValidatingService34Registration();
+
 		// Subclass the default Diagnostician to customize the String
 		// representation of each validated EObject
 		_diagnostician = new Diagnostician() {
@@ -59,6 +62,17 @@
 
 	}
 
+	private void forceValidatingService34Registration() {
+		if (getValidatorService() == null) {
+			BundleContext context = Activator.getDefault().getBundle().getBundleContext();
+			Properties serviceProperties = new Properties();
+			serviceProperties.put(Constants.SERVICE_RANKING, 10); //$NON-NLS-1$
+			validatingService = new ValidatingService34();
+			context.registerService(ValidatingService.class.getName(), validatingService, serviceProperties);
+
+		}
+	}
+
 	@Override
 	public void notifyChanged(Notification notification) {
 		if (notification.getEventType() != Notification.REMOVING_ADAPTER) {
@@ -93,7 +107,8 @@
 		BundleContext context = Activator.getDefault().getBundle().getBundleContext();
 		if (validatingService == null) {
 			ServiceReference validatingServiceRef = context.getServiceReference(ValidatingService.class.getName());
-			validatingService = (ValidatingService) context.getService(validatingServiceRef);
+			if (validatingServiceRef != null)
+				validatingService = (ValidatingService) context.getService(validatingServiceRef);
 		}
 		return validatingService;
 	}