You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@celix.apache.org by bp...@apache.org on 2014/09/30 15:28:42 UTC

svn commit: r1628441 - in /celix/trunk/remote_services/remote_service_admin_http/private/src: import_registration_impl.c remote_service_admin_impl.c

Author: bpetri
Date: Tue Sep 30 13:28:42 2014
New Revision: 1628441

URL: http://svn.apache.org/r1628441
Log:
CELIX-158: start tracker before starting of endpoint

Modified:
    celix/trunk/remote_services/remote_service_admin_http/private/src/import_registration_impl.c
    celix/trunk/remote_services/remote_service_admin_http/private/src/remote_service_admin_impl.c

Modified: celix/trunk/remote_services/remote_service_admin_http/private/src/import_registration_impl.c
URL: http://svn.apache.org/viewvc/celix/trunk/remote_services/remote_service_admin_http/private/src/import_registration_impl.c?rev=1628441&r1=1628440&r2=1628441&view=diff
==============================================================================
--- celix/trunk/remote_services/remote_service_admin_http/private/src/import_registration_impl.c (original)
+++ celix/trunk/remote_services/remote_service_admin_http/private/src/import_registration_impl.c Tue Sep 30 13:28:42 2014
@@ -142,6 +142,11 @@ celix_status_t importRegistrationFactory
 {
 	celix_status_t status = CELIX_SUCCESS;
 
+
+	if (registration_factory->proxyFactoryTracker != NULL) {
+		serviceTracker_close(registration_factory->proxyFactoryTracker);
+	}
+
 	if (registration_factory->bundle != NULL) {
 		bundle_stop(registration_factory->bundle);
 		bundle_uninstall(registration_factory->bundle);
@@ -214,21 +219,26 @@ celix_status_t importRegistrationFactory
 	{
 		fw_log(logger, OSGI_FRAMEWORK_LOG_ERROR, "remoteServiceAdmin_importService: error while creating importRegistrationFactory.");
 	}
-	else if ((status = importRegistrationFactory_open(*registration_factory)) != CELIX_SUCCESS)
-	{
-		fw_log(logger, OSGI_FRAMEWORK_LOG_ERROR, "remoteServiceAdmin_importService: cannot open registration_factory for %s.", serviceName);
-		importRegistrationFactory_destroy(registration_factory);
-	}
 	else
 	{
+		// starting the proxy tracker first allows us to pick up already available proxy factories
 		importRegistration_createProxyFactoryTracker(*registration_factory, &((*registration_factory)->proxyFactoryTracker));
 		fw_log(logger, OSGI_FRAMEWORK_LOG_INFO, "remoteServiceAdmin_importService: new registration_factory added for %s at %p", serviceName, (*registration_factory)->proxyFactoryTracker);
-	}
 
+		// check whether factory is available
+		if (((*registration_factory)->trackedFactory == NULL) && ((status = importRegistrationFactory_open(*registration_factory)) != CELIX_SUCCESS))
+		{
+			fw_log(logger, OSGI_FRAMEWORK_LOG_ERROR, "remoteServiceAdmin_importService: cannot open registration_factory for %s.", serviceName);
+			importRegistrationFactory_destroy(registration_factory);
+			serviceTracker_close((*registration_factory)->proxyFactoryTracker);
+		}
+	}
 	return status;
 }
 
 
+
+
 celix_status_t importRegistration_getException(import_registration_pt registration) {
 	celix_status_t status = CELIX_SUCCESS;
 	return status;

Modified: celix/trunk/remote_services/remote_service_admin_http/private/src/remote_service_admin_impl.c
URL: http://svn.apache.org/viewvc/celix/trunk/remote_services/remote_service_admin_http/private/src/remote_service_admin_impl.c?rev=1628441&r1=1628440&r2=1628441&view=diff
==============================================================================
--- celix/trunk/remote_services/remote_service_admin_http/private/src/remote_service_admin_impl.c (original)
+++ celix/trunk/remote_services/remote_service_admin_http/private/src/remote_service_admin_impl.c Tue Sep 30 13:28:42 2014
@@ -434,7 +434,7 @@ celix_status_t remoteServiceAdmin_import
 
    import_registration_factory_pt registration_factory = (import_registration_factory_pt) hashMap_get(admin->importedServices, endpointDescription->service);
 
-	// check whether we already have a registration_factory
+	// check whether we already have a registration_factory registered in the hashmap
 	if (registration_factory == NULL)
 	{
 		status = importRegistrationFactory_install(admin->pool, endpointDescription->service, admin->context, &registration_factory);