celix-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From abroekh...@apache.org
Subject svn commit: r1547922 - in /incubator/celix/trunk/framework: ./ private/include/ private/mock/ private/src/ private/test/ public/include/
Date Wed, 04 Dec 2013 21:25:28 GMT
Author: abroekhuis
Date: Wed Dec  4 21:25:27 2013
New Revision: 1547922

URL: http://svn.apache.org/r1547922
Log:
CELIX-92: Applied patch, fixed tests and removed now obsolete method from the framework.

Modified:
    incubator/celix/trunk/framework/CMakeLists.txt
    incubator/celix/trunk/framework/private/include/bundle_revision_private.h
    incubator/celix/trunk/framework/private/mock/bundle_mock.c
    incubator/celix/trunk/framework/private/mock/bundle_revision_mock.c
    incubator/celix/trunk/framework/private/mock/manifest_mock.c
    incubator/celix/trunk/framework/private/src/bundle.c
    incubator/celix/trunk/framework/private/src/bundle_revision.c
    incubator/celix/trunk/framework/private/src/framework.c
    incubator/celix/trunk/framework/private/test/bundle_revision_test.cpp
    incubator/celix/trunk/framework/private/test/bundle_test.cpp
    incubator/celix/trunk/framework/public/include/bundle.h
    incubator/celix/trunk/framework/public/include/bundle_revision.h

Modified: incubator/celix/trunk/framework/CMakeLists.txt
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/framework/CMakeLists.txt?rev=1547922&r1=1547921&r2=1547922&view=diff
==============================================================================
--- incubator/celix/trunk/framework/CMakeLists.txt (original)
+++ incubator/celix/trunk/framework/CMakeLists.txt Wed Dec  4 21:25:27 2013
@@ -245,6 +245,7 @@ if (FRAMEWORK) 
 			private/mock/framework_mock.c
 			private/mock/module_mock.c
 			private/mock/bundle_archive_mock.c
+			private/mock/bundle_revision_mock.c
 			private/mock/resolver_mock.c
 			private/mock/version_mock.c
 			private/src/utils.c
@@ -256,6 +257,7 @@ if (FRAMEWORK) 
 		add_executable(bundle_revision_test 
 			private/test/bundle_revision_test.cpp
 			private/mock/miniunz_mock.c
+			private/mock/manifest_mock.c
 			private/src/bundle_revision.c
 			private/src/celix_errorcodes.c
             private/src/celix_log.c)

Modified: incubator/celix/trunk/framework/private/include/bundle_revision_private.h
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/framework/private/include/bundle_revision_private.h?rev=1547922&r1=1547921&r2=1547922&view=diff
==============================================================================
--- incubator/celix/trunk/framework/private/include/bundle_revision_private.h (original)
+++ incubator/celix/trunk/framework/private/include/bundle_revision_private.h Wed Dec  4 21:25:27
2013
@@ -34,6 +34,7 @@ struct bundleRevision {
 	long revisionNr;
 	char *root;
 	char *location;
+	manifest_pt manifest;
 };
 
 #endif /* BUNDLE_REVISION_PRIVATE_H_ */

Modified: incubator/celix/trunk/framework/private/mock/bundle_mock.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/framework/private/mock/bundle_mock.c?rev=1547922&r1=1547921&r2=1547922&view=diff
==============================================================================
--- incubator/celix/trunk/framework/private/mock/bundle_mock.c (original)
+++ incubator/celix/trunk/framework/private/mock/bundle_mock.c Wed Dec  4 21:25:27 2013
@@ -74,14 +74,6 @@ celix_status_t bundle_setActivator(bundl
 	return mock_c()->returnValue().value.intValue;
 }
 
-celix_status_t bundle_getManifest(bundle_pt bundle, manifest_pt *manifest) {
-	return mock_c()->returnValue().value.intValue;
-}
-
-celix_status_t bundle_setManifest(bundle_pt bundle, manifest_pt manifest) {
-	return mock_c()->returnValue().value.intValue;
-}
-
 celix_status_t bundle_getContext(bundle_pt bundle, bundle_context_pt *context) {
 	return mock_c()->returnValue().value.intValue;
 }

Modified: incubator/celix/trunk/framework/private/mock/bundle_revision_mock.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/framework/private/mock/bundle_revision_mock.c?rev=1547922&r1=1547921&r2=1547922&view=diff
==============================================================================
--- incubator/celix/trunk/framework/private/mock/bundle_revision_mock.c (original)
+++ incubator/celix/trunk/framework/private/mock/bundle_revision_mock.c Wed Dec  4 21:25:27
2013
@@ -47,5 +47,8 @@ celix_status_t bundleRevision_getRoot(bu
 	return mock_c()->returnValue().value.intValue;
 }
 
-
+celix_status_t bundleRevision_getManifest(bundle_revision_pt revision, manifest_pt *manifest)
{
+    mock_c()->actualCall("bundle_getCurrentModule");
+    return mock_c()->returnValue().value.intValue;
+}
 

Modified: incubator/celix/trunk/framework/private/mock/manifest_mock.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/framework/private/mock/manifest_mock.c?rev=1547922&r1=1547921&r2=1547922&view=diff
==============================================================================
--- incubator/celix/trunk/framework/private/mock/manifest_mock.c (original)
+++ incubator/celix/trunk/framework/private/mock/manifest_mock.c Wed Dec  4 21:25:27 2013
@@ -28,12 +28,17 @@
 #include "manifest.h"
 
 celix_status_t manifest_create(apr_pool_t *pool, manifest_pt *manifest) {
-	mock_c()->actualCall("bundle_getCurrentModule");
+	mock_c()->actualCall("manifest_create")
+        ->withPointerParameters("pool", pool)
+        ->_andPointerOutputParameters("manifest", (void **) manifest);
 	return mock_c()->returnValue().value.intValue;
 }
 
 celix_status_t manifest_createFromFile(apr_pool_t *pool, char *filename, manifest_pt *manifest)
{
-	mock_c()->actualCall("bundle_getCurrentModule");
+    mock_c()->actualCall("manifest_createFromFile")
+        ->withPointerParameters("pool", pool)
+        ->withStringParameters("filename", filename)
+        ->_andPointerOutputParameters("manifest", (void **) manifest);
 	return mock_c()->returnValue().value.intValue;
 }
 

Modified: incubator/celix/trunk/framework/private/src/bundle.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/framework/private/src/bundle.c?rev=1547922&r1=1547921&r2=1547922&view=diff
==============================================================================
--- incubator/celix/trunk/framework/private/src/bundle.c (original)
+++ incubator/celix/trunk/framework/private/src/bundle.c Wed Dec  4 21:25:27 2013
@@ -36,6 +36,7 @@
 #include "version.h"
 #include "array_list.h"
 #include "bundle_archive.h"
+#include "bundle_revision.h"
 #include "resolver.h"
 #include "utils.h"
 #include "celix_log.h"
@@ -77,8 +78,6 @@ celix_status_t bundle_create(bundle_pt *
 			(*bundle)->lockThread = 0;
 
 			resolver_addModule(module);
-
-			(*bundle)->manifest = NULL;
         }
 	}
 
@@ -216,20 +215,15 @@ celix_status_t bundle_setState(bundle_pt
 	return CELIX_SUCCESS;
 }
 
-celix_status_t bundle_getManifest(bundle_pt bundle, manifest_pt *manifest) {
-	*manifest = bundle->manifest;
-	return CELIX_SUCCESS;
-}
-
-celix_status_t bundle_setManifest(bundle_pt bundle, manifest_pt manifest) {
-	bundle->manifest = manifest;
-	return CELIX_SUCCESS;
-}
-
 celix_status_t bundle_createModule(bundle_pt bundle, module_pt *module) {
 	celix_status_t status = CELIX_SUCCESS;
+	bundle_archive_pt archive = NULL;
+	bundle_revision_pt revision = NULL;
 	manifest_pt headerMap = NULL;
-	status = getManifest(bundle->archive, bundle->memoryPool, &headerMap);
+
+	status = CELIX_DO_IF(status, bundle_getArchive(bundle, &archive));
+	status = CELIX_DO_IF(status, bundleArchive_getCurrentRevision(archive, &revision));
+	status = CELIX_DO_IF(status, bundleRevision_getManifest(revision, &headerMap));
 	if (status == CELIX_SUCCESS) {
         long bundleId;
         status = bundleArchive_getId(bundle->archive, &bundleId);

Modified: incubator/celix/trunk/framework/private/src/bundle_revision.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/framework/private/src/bundle_revision.c?rev=1547922&r1=1547921&r2=1547922&view=diff
==============================================================================
--- incubator/celix/trunk/framework/private/src/bundle_revision.c (original)
+++ incubator/celix/trunk/framework/private/src/bundle_revision.c Wed Dec  4 21:25:27 2013
@@ -63,6 +63,9 @@ celix_status_t bundleRevision_create(apr
                 revision->root = apr_pstrdup(pool, root);
                 revision->location = apr_pstrdup(pool, location);
                 *bundle_revision = revision;
+
+                char *manifest = apr_pstrcat(pool, revision->root, "/META-INF/MANIFEST.MF",
NULL);
+				status = manifest_createFromFile(pool, manifest, &revision->manifest);
             }
         }
     }
@@ -115,3 +118,16 @@ celix_status_t bundleRevision_getRoot(bu
 
 	return status;
 }
+
+celix_status_t bundleRevision_getManifest(bundle_revision_pt revision, manifest_pt *manifest)
{
+	celix_status_t status = CELIX_SUCCESS;
+	if (revision == NULL) {
+		status = CELIX_ILLEGAL_ARGUMENT;
+	} else {
+		*manifest = revision->manifest;
+	}
+
+	framework_logIfError(status, NULL, "Failed to get manifest");
+
+	return status;
+}

Modified: incubator/celix/trunk/framework/private/src/framework.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/framework/private/src/framework.c?rev=1547922&r1=1547921&r2=1547922&view=diff
==============================================================================
--- incubator/celix/trunk/framework/private/src/framework.c (original)
+++ incubator/celix/trunk/framework/private/src/framework.c Wed Dec  4 21:25:27 2013
@@ -56,6 +56,7 @@
 #include "service_registry.h"
 #include "bundle_cache.h"
 #include "bundle_archive.h"
+#include "bundle_revision.h"
 #include "bundle_context.h"
 #include "linked_list_iterator.h"
 #include "service_reference.h"
@@ -607,6 +608,7 @@ celix_status_t fw_startBundle(framework_
 	long revisionNumber;
 	activator_pt activator = NULL;
 	bundle_archive_pt archive = NULL;
+	bundle_revision_pt revision = NULL;
 	apr_pool_t *bundlePool = NULL;
 	char *error = NULL;
 
@@ -654,8 +656,8 @@ celix_status_t fw_startBundle(framework_
 
                 status = CELIX_DO_IF(status, bundle_getArchive(bundle, &archive));
                 status = CELIX_DO_IF(status, bundle_getMemoryPool(bundle, &bundlePool));
-                status = CELIX_DO_IF(status, getManifest(archive, bundlePool, &manifest));
-                status = CELIX_DO_IF(status, bundle_setManifest(bundle, manifest));
+                status = CELIX_DO_IF(status, bundleArchive_getCurrentRevision(archive, &revision));
+                status = CELIX_DO_IF(status, bundleRevision_getManifest(revision, &manifest));
                 if (status == CELIX_SUCCESS) {
                     library = manifest_getValue(manifest, HEADER_LIBRARY);
                 }
@@ -1610,36 +1612,6 @@ void fw_serviceChanged(framework_pt fram
 //	return status;
 //}
 
-celix_status_t getManifest(bundle_archive_pt archive, apr_pool_t *pool, manifest_pt *manifest)
{
-	celix_status_t status = CELIX_SUCCESS;
-	char mf[256];
-	long refreshCount;
-	char *archiveRoot;
-	long revisionNumber;
-
-	status = bundleArchive_getRefreshCount(archive, &refreshCount);
-	if (status == CELIX_SUCCESS) {
-		status = bundleArchive_getArchiveRoot(archive, &archiveRoot);
-		if (status == CELIX_SUCCESS) {
-			status = bundleArchive_getCurrentRevisionNumber(archive, &revisionNumber);
-			if (status == CELIX_SUCCESS) {
-				if (status == CELIX_SUCCESS) {
-					sprintf(mf, "%s/version%ld.%ld/META-INF/MANIFEST.MF",
-							archiveRoot,
-							refreshCount,
-							revisionNumber
-							);
-					status = manifest_createFromFile(pool, mf, manifest);
-				}
-			}
-		}
-	}
-
-	framework_logIfError(status, NULL, "Failed to get manifest");
-
-	return status;
-}
-
 long framework_getNextBundleId(framework_pt framework) {
 	long id = framework->nextBundleId;
 	framework->nextBundleId++;

Modified: incubator/celix/trunk/framework/private/test/bundle_revision_test.cpp
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/framework/private/test/bundle_revision_test.cpp?rev=1547922&r1=1547921&r2=1547922&view=diff
==============================================================================
--- incubator/celix/trunk/framework/private/test/bundle_revision_test.cpp (original)
+++ incubator/celix/trunk/framework/private/test/bundle_revision_test.cpp Wed Dec  4 21:25:27
2013
@@ -59,11 +59,17 @@ TEST(bundle_revision, create) {
 	char location[] = "test_bundle.zip";
 	char *inputFile = NULL;
 	long revisionNr = 1l;
+	manifest_pt manifest = (manifest_pt) 0x42;
 
 	mock().expectOneCall("extractBundle")
 			.withParameter("bundleName", location)
 			.withParameter("revisionRoot", root)
 			.andReturnValue(CELIX_SUCCESS);
+	mock().expectOneCall("manifest_createFromFile")
+            .withParameter("pool", pool)
+            .withParameter("filename", "bundle_revision_test/META-INF/MANIFEST.MF")
+            .andOutputParameter("manifest", manifest)
+            .andReturnValue(CELIX_SUCCESS);
 
 	bundle_revision_pt revision = NULL;
 	celix_status_t status = bundleRevision_create(pool, root, location, revisionNr, inputFile,
&revision);
@@ -78,11 +84,18 @@ TEST(bundle_revision, createWithInput) {
 	char location[] = "test_bundle.zip";
 	char inputFile[] = "from_somewhere.zip";
 	long revisionNr = 1l;
+	manifest_pt manifest = (manifest_pt) 0x42;
 
 	mock().expectOneCall("extractBundle")
-			.withParameter("bundleName", inputFile)
-			.withParameter("revisionRoot", root)
-			.andReturnValue(CELIX_SUCCESS);
+        .withParameter("bundleName", inputFile)
+        .withParameter("revisionRoot", root)
+        .andReturnValue(CELIX_SUCCESS);
+
+	mock().expectOneCall("manifest_createFromFile")
+        .withParameter("pool", pool)
+        .withParameter("filename", "bundle_revision_test/META-INF/MANIFEST.MF")
+        .andOutputParameter("manifest", manifest)
+        .andReturnValue(CELIX_SUCCESS);
 
 	bundle_revision_pt revision = NULL;
 	celix_status_t status = bundleRevision_create(pool, root, location, revisionNr, inputFile,
&revision);
@@ -92,18 +105,21 @@ TEST(bundle_revision, createWithInput) {
 	STRCMP_EQUAL(location, revision->location);
 }
 
-TEST(bundle_revision, getNumber) {
+TEST(bundle_revision, getters) {
 	bundle_revision_pt revision = (bundle_revision_pt) apr_palloc(pool, sizeof(*revision));
 	char root[] = "bundle_revision_test";
 	char location[] = "test_bundle.zip";
 	long revisionNr = 1l;
+	manifest_pt expected = (manifest_pt) 0x42;
 	revision->root = root;
 	revision->location = location;
 	revision->revisionNr = revisionNr;
+	revision->manifest = expected;
 
 	char *actualRoot = NULL;
 	char *actualLocation = NULL;
 	long actualRevisionNr = 0l;
+	manifest_pt actualManifest = NULL;
 	celix_status_t status = CELIX_SUCCESS;
 
 	status = bundleRevision_getNumber(revision, &actualRevisionNr);
@@ -118,6 +134,10 @@ TEST(bundle_revision, getNumber) {
 	LONGS_EQUAL(CELIX_SUCCESS, status);
 	STRCMP_EQUAL(root, actualRoot);
 
+	status = bundleRevision_getManifest(revision, &actualManifest);
+    LONGS_EQUAL(CELIX_SUCCESS, status);
+    POINTERS_EQUAL(expected, actualManifest);
+
 	status = bundleRevision_getNumber(NULL, &actualRevisionNr);
 	LONGS_EQUAL(CELIX_ILLEGAL_ARGUMENT, status);
 
@@ -126,5 +146,7 @@ TEST(bundle_revision, getNumber) {
 
 	status = bundleRevision_getRoot(NULL, &actualRoot);
 	LONGS_EQUAL(CELIX_ILLEGAL_ARGUMENT, status);
-}
 
+	status = bundleRevision_getManifest(NULL, &actualManifest);
+	LONGS_EQUAL(CELIX_ILLEGAL_ARGUMENT, status);
+}

Modified: incubator/celix/trunk/framework/private/test/bundle_test.cpp
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/framework/private/test/bundle_test.cpp?rev=1547922&r1=1547921&r2=1547922&view=diff
==============================================================================
--- incubator/celix/trunk/framework/private/test/bundle_test.cpp (original)
+++ incubator/celix/trunk/framework/private/test/bundle_test.cpp Wed Dec  4 21:25:27 2013
@@ -295,27 +295,6 @@ TEST(bundle, setState) {
 	POINTERS_EQUAL(BUNDLE_INSTALLED, bundle->state);
 }
 
-TEST(bundle, getManifest) {
-	bundle_pt bundle = (bundle_pt) apr_palloc(pool, sizeof(*bundle));
-	manifest_pt manifest = (manifest_pt) 0x10;
-	bundle->manifest = manifest;
-
-	manifest_pt actual = NULL;
-	celix_status_t status = bundle_getManifest(bundle, &actual);
-	LONGS_EQUAL(CELIX_SUCCESS, status);
-	POINTERS_EQUAL(manifest, actual);
-}
-
-TEST(bundle, setManifest) {
-	bundle_pt bundle = (bundle_pt) apr_palloc(pool, sizeof(*bundle));
-	bundle->manifest = NULL;
-
-	manifest_pt manifest = (manifest_pt) 0x10;
-	celix_status_t status = bundle_setManifest(bundle, manifest);
-	LONGS_EQUAL(CELIX_SUCCESS, status);
-	POINTERS_EQUAL(manifest, bundle->manifest);
-}
-
 TEST(bundle, start) {
 	bundle_pt bundle = (bundle_pt) apr_palloc(pool, sizeof(*bundle));
 	framework_pt framework = (framework_pt) 0x10;

Modified: incubator/celix/trunk/framework/public/include/bundle.h
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/framework/public/include/bundle.h?rev=1547922&r1=1547921&r2=1547922&view=diff
==============================================================================
--- incubator/celix/trunk/framework/public/include/bundle.h (original)
+++ incubator/celix/trunk/framework/public/include/bundle.h Wed Dec  4 21:25:27 2013
@@ -53,8 +53,6 @@ FRAMEWORK_EXPORT void * bundle_getHandle
 FRAMEWORK_EXPORT void bundle_setHandle(bundle_pt bundle, void * handle);
 FRAMEWORK_EXPORT activator_pt bundle_getActivator(bundle_pt bundle);
 FRAMEWORK_EXPORT celix_status_t bundle_setActivator(bundle_pt bundle, activator_pt activator);
-FRAMEWORK_EXPORT celix_status_t bundle_getManifest(bundle_pt bundle, manifest_pt *manifest);
-FRAMEWORK_EXPORT celix_status_t bundle_setManifest(bundle_pt bundle, manifest_pt manifest);
 FRAMEWORK_EXPORT celix_status_t bundle_getContext(bundle_pt bundle, bundle_context_pt *context);
 FRAMEWORK_EXPORT celix_status_t bundle_setContext(bundle_pt bundle, bundle_context_pt context);
 FRAMEWORK_EXPORT celix_status_t bundle_getEntry(bundle_pt bundle, char * name, apr_pool_t
*pool, char **entry);

Modified: incubator/celix/trunk/framework/public/include/bundle_revision.h
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/framework/public/include/bundle_revision.h?rev=1547922&r1=1547921&r2=1547922&view=diff
==============================================================================
--- incubator/celix/trunk/framework/public/include/bundle_revision.h (original)
+++ incubator/celix/trunk/framework/public/include/bundle_revision.h Wed Dec  4 21:25:27 2013
@@ -33,6 +33,7 @@
 #include <apr_pools.h>
 
 #include "celix_errno.h"
+#include "manifest.h"
 
 /**
  * Typedef for bundle_revision_pt.
@@ -98,6 +99,18 @@ celix_status_t bundleRevision_getLocatio
  */
 celix_status_t bundleRevision_getRoot(bundle_revision_pt revision, char **root);
 
+/**
+ * Retrieves the manifest of the given revision.
+ *
+ * @param revision The revision to get the manifest for.
+ * @param[out] manifest The manifest.
+ *
+ * @return Status code indication failure or success:
+ * 		- CELIX_SUCCESS when no errors are encountered.
+ * 		- CELIX_ILLEGAL_ARGUMENT If <code>revision</code> is illegal.
+ */
+celix_status_t bundleRevision_getManifest(bundle_revision_pt revision, manifest_pt *manifest);
+
 #endif /* BUNDLE_REVISION_H_ */
 
 /**



Mime
View raw message