You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@celix.apache.org by ab...@apache.org on 2011/11/17 13:36:17 UTC
svn commit: r1203167 [1/3] - in /incubator/celix/trunk: ./ cmake/
deployment_admin/ deployment_admin/META-INF/ deployment_admin/private/
deployment_admin/private/include/ deployment_admin/private/src/
examples/echo_service/client/MANIFEST/ examples/ech...
Author: abroekhuis
Date: Thu Nov 17 12:36:14 2011
New Revision: 1203167
URL: http://svn.apache.org/viewvc?rev=1203167&view=rev
Log:
Initial DeploymentAdmin version and support
Added:
incubator/celix/trunk/Deployment Admin.launch
- copied, changed from r1198848, incubator/celix/trunk/Remote Services.launch
incubator/celix/trunk/deployment_admin/
incubator/celix/trunk/deployment_admin/CMakeLists.txt
incubator/celix/trunk/deployment_admin/META-INF/
incubator/celix/trunk/deployment_admin/META-INF/MANIFEST.MF
incubator/celix/trunk/deployment_admin/private/
incubator/celix/trunk/deployment_admin/private/include/
incubator/celix/trunk/deployment_admin/private/include/deployment_admin.h
incubator/celix/trunk/deployment_admin/private/include/deployment_package.h
incubator/celix/trunk/deployment_admin/private/include/ioapi.h
incubator/celix/trunk/deployment_admin/private/include/unzip.h
incubator/celix/trunk/deployment_admin/private/src/
incubator/celix/trunk/deployment_admin/private/src/deployment_admin.c
incubator/celix/trunk/deployment_admin/private/src/deployment_admin_activator.c
incubator/celix/trunk/deployment_admin/private/src/deployment_package.c
incubator/celix/trunk/deployment_admin/private/src/ioapi.c
incubator/celix/trunk/deployment_admin/private/src/miniunz.c
incubator/celix/trunk/deployment_admin/private/src/unzip.c
incubator/celix/trunk/examples/echo_service/client/META-INF/
incubator/celix/trunk/examples/echo_service/client/META-INF/MANIFEST.MF
- copied, changed from r1198848, incubator/celix/trunk/examples/echo_service/client/MANIFEST/MANIFEST.MF
incubator/celix/trunk/examples/echo_service/server/META-INF/
incubator/celix/trunk/examples/echo_service/server/META-INF/MANIFEST.MF
- copied, changed from r1198848, incubator/celix/trunk/examples/echo_service/server/MANIFEST/MANIFEST.MF
incubator/celix/trunk/examples/hello_world/META-INF/
incubator/celix/trunk/examples/hello_world/META-INF/MANIFEST.MF
- copied, changed from r1198848, incubator/celix/trunk/examples/hello_world/MANIFEST/MANIFEST.MF
incubator/celix/trunk/examples/mongoose/META-INF/
incubator/celix/trunk/examples/mongoose/META-INF/MANIFEST.MF
- copied, changed from r1198848, incubator/celix/trunk/examples/mongoose/MANIFEST/MANIFEST.MF
incubator/celix/trunk/examples/osgi-in-action/chapter01-greeting-example/client/META-INF/
incubator/celix/trunk/examples/osgi-in-action/chapter01-greeting-example/client/META-INF/MANIFEST.MF
- copied, changed from r1198848, incubator/celix/trunk/examples/osgi-in-action/chapter01-greeting-example/client/MANIFEST/MANIFEST.MF
incubator/celix/trunk/examples/osgi-in-action/chapter01-greeting-example/greeting/META-INF/
incubator/celix/trunk/examples/osgi-in-action/chapter01-greeting-example/greeting/META-INF/MANIFEST.MF
- copied, changed from r1198848, incubator/celix/trunk/examples/osgi-in-action/chapter01-greeting-example/greeting/MANIFEST/MANIFEST.MF
incubator/celix/trunk/examples/osgi-in-action/chapter04-correct-listener/META-INF/
incubator/celix/trunk/examples/osgi-in-action/chapter04-correct-listener/META-INF/MANIFEST.MF
- copied, changed from r1198848, incubator/celix/trunk/examples/osgi-in-action/chapter04-correct-listener/MANIFEST/MANIFEST.MF
incubator/celix/trunk/examples/osgi-in-action/chapter04-correct-lookup/META-INF/
incubator/celix/trunk/examples/osgi-in-action/chapter04-correct-lookup/META-INF/MANIFEST.MF
- copied, changed from r1198848, incubator/celix/trunk/examples/osgi-in-action/chapter04-correct-lookup/MANIFEST/MANIFEST.MF
incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/circle/META-INF/
incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/circle/META-INF/MANIFEST.MF
- copied, changed from r1198848, incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/circle/MANIFEST/MANIFEST.MF
incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/paint/META-INF/
incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/paint/META-INF/MANIFEST.MF
- copied, changed from r1198848, incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/paint/MANIFEST/MANIFEST.MF
incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/square/META-INF/
incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/square/META-INF/MANIFEST.MF
- copied, changed from r1198848, incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/square/MANIFEST/MANIFEST.MF
incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/triangle/META-INF/
incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/triangle/META-INF/MANIFEST.MF
- copied, changed from r1198848, incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/triangle/MANIFEST/MANIFEST.MF
incubator/celix/trunk/examples/receiver-2.0/META-INF/
incubator/celix/trunk/examples/receiver-2.0/META-INF/MANIFEST.MF
- copied, changed from r1198848, incubator/celix/trunk/examples/receiver-2.0/MANIFEST/MANIFEST.MF
incubator/celix/trunk/examples/receiver/META-INF/
incubator/celix/trunk/examples/receiver/META-INF/MANIFEST.MF
- copied, changed from r1198848, incubator/celix/trunk/examples/receiver/MANIFEST/MANIFEST.MF
incubator/celix/trunk/examples/sender/META-INF/
incubator/celix/trunk/examples/sender/META-INF/MANIFEST.MF
- copied, changed from r1198848, incubator/celix/trunk/examples/sender/MANIFEST/MANIFEST.MF
incubator/celix/trunk/examples/whiteboard/publisherA/META-INF/
incubator/celix/trunk/examples/whiteboard/publisherA/META-INF/MANIFEST.MF
- copied, changed from r1198848, incubator/celix/trunk/examples/whiteboard/publisherA/MANIFEST/MANIFEST.MF
incubator/celix/trunk/examples/whiteboard/publisherB/META-INF/
incubator/celix/trunk/examples/whiteboard/publisherB/META-INF/MANIFEST.MF
- copied, changed from r1198848, incubator/celix/trunk/examples/whiteboard/publisherB/MANIFEST/MANIFEST.MF
incubator/celix/trunk/examples/whiteboard/tracker/META-INF/
incubator/celix/trunk/examples/whiteboard/tracker/META-INF/MANIFEST.MF
- copied, changed from r1198848, incubator/celix/trunk/examples/whiteboard/tracker/MANIFEST/MANIFEST.MF
incubator/celix/trunk/examples/whiteboard/tracker_depman/META-INF/
incubator/celix/trunk/examples/whiteboard/tracker_depman/META-INF/MANIFEST.MF
- copied, changed from r1198848, incubator/celix/trunk/examples/whiteboard/tracker_depman/MANIFEST/MANIFEST.MF
incubator/celix/trunk/log_service/META-INF/
incubator/celix/trunk/log_service/META-INF/MANIFEST.MF
- copied, changed from r1198848, incubator/celix/trunk/log_service/MANIFEST/MANIFEST.MF
incubator/celix/trunk/log_writer/META-INF/
incubator/celix/trunk/log_writer/META-INF/MANIFEST.MF
- copied, changed from r1198848, incubator/celix/trunk/log_writer/MANIFEST/MANIFEST.MF
incubator/celix/trunk/remote_services/calc_shell/META-INF/
incubator/celix/trunk/remote_services/calc_shell/META-INF/MANIFEST.MF
- copied, changed from r1198848, incubator/celix/trunk/remote_services/calc_shell/MANIFEST/MANIFEST.MF
incubator/celix/trunk/remote_services/discovery/META-INF/
incubator/celix/trunk/remote_services/discovery/META-INF/MANIFEST.MF
- copied, changed from r1198848, incubator/celix/trunk/remote_services/discovery/MANIFEST/MANIFEST.MF
incubator/celix/trunk/remote_services/example_endpoint/META-INF/
incubator/celix/trunk/remote_services/example_endpoint/META-INF/MANIFEST.MF
- copied, changed from r1198848, incubator/celix/trunk/remote_services/example_endpoint/MANIFEST/MANIFEST.MF
incubator/celix/trunk/remote_services/example_proxy/META-INF/
incubator/celix/trunk/remote_services/example_proxy/META-INF/MANIFEST.MF
- copied, changed from r1198848, incubator/celix/trunk/remote_services/example_proxy/MANIFEST/MANIFEST.MF
incubator/celix/trunk/remote_services/example_service/META-INF/
incubator/celix/trunk/remote_services/example_service/META-INF/MANIFEST.MF
- copied, changed from r1198848, incubator/celix/trunk/remote_services/example_service/MANIFEST/MANIFEST.MF
incubator/celix/trunk/remote_services/remote_service_admin/META-INF/
incubator/celix/trunk/remote_services/remote_service_admin/META-INF/MANIFEST.MF
- copied, changed from r1198848, incubator/celix/trunk/remote_services/remote_service_admin/MANIFEST/MANIFEST.MF
incubator/celix/trunk/remote_services/topology_manager/META-INF/
incubator/celix/trunk/remote_services/topology_manager/META-INF/MANIFEST.MF
- copied, changed from r1198848, incubator/celix/trunk/remote_services/topology_manager/MANIFEST/MANIFEST.MF
incubator/celix/trunk/shell/META-INF/
incubator/celix/trunk/shell/META-INF/MANIFEST.MF
- copied, changed from r1198848, incubator/celix/trunk/shell/MANIFEST/MANIFEST.MF
incubator/celix/trunk/shell_tui/META-INF/
incubator/celix/trunk/shell_tui/META-INF/MANIFEST.MF
- copied, changed from r1198848, incubator/celix/trunk/shell_tui/MANIFEST/MANIFEST.MF
Removed:
incubator/celix/trunk/examples/echo_service/client/MANIFEST/MANIFEST.MF
incubator/celix/trunk/examples/echo_service/server/MANIFEST/MANIFEST.MF
incubator/celix/trunk/examples/hello_world/MANIFEST/MANIFEST.MF
incubator/celix/trunk/examples/mongoose/MANIFEST/MANIFEST.MF
incubator/celix/trunk/examples/osgi-in-action/chapter01-greeting-example/client/MANIFEST/MANIFEST.MF
incubator/celix/trunk/examples/osgi-in-action/chapter01-greeting-example/greeting/MANIFEST/MANIFEST.MF
incubator/celix/trunk/examples/osgi-in-action/chapter04-correct-listener/MANIFEST/MANIFEST.MF
incubator/celix/trunk/examples/osgi-in-action/chapter04-correct-lookup/MANIFEST/MANIFEST.MF
incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/circle/MANIFEST/MANIFEST.MF
incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/paint/MANIFEST/MANIFEST.MF
incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/square/MANIFEST/MANIFEST.MF
incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/triangle/MANIFEST/MANIFEST.MF
incubator/celix/trunk/examples/receiver-2.0/MANIFEST/MANIFEST.MF
incubator/celix/trunk/examples/receiver/MANIFEST/MANIFEST.MF
incubator/celix/trunk/examples/sender/MANIFEST/MANIFEST.MF
incubator/celix/trunk/examples/whiteboard/publisherA/MANIFEST/MANIFEST.MF
incubator/celix/trunk/examples/whiteboard/publisherB/MANIFEST/MANIFEST.MF
incubator/celix/trunk/examples/whiteboard/tracker/MANIFEST/MANIFEST.MF
incubator/celix/trunk/examples/whiteboard/tracker_depman/MANIFEST/MANIFEST.MF
incubator/celix/trunk/log_service/MANIFEST/MANIFEST.MF
incubator/celix/trunk/log_writer/MANIFEST/MANIFEST.MF
incubator/celix/trunk/remote_services/calc_shell/MANIFEST/MANIFEST.MF
incubator/celix/trunk/remote_services/discovery/MANIFEST/MANIFEST.MF
incubator/celix/trunk/remote_services/example_endpoint/MANIFEST/MANIFEST.MF
incubator/celix/trunk/remote_services/example_proxy/MANIFEST/MANIFEST.MF
incubator/celix/trunk/remote_services/example_service/MANIFEST/MANIFEST.MF
incubator/celix/trunk/remote_services/remote_service_admin/MANIFEST/MANIFEST.MF
incubator/celix/trunk/remote_services/topology_manager/MANIFEST/MANIFEST.MF
incubator/celix/trunk/shell/MANIFEST/MANIFEST.MF
incubator/celix/trunk/shell_tui/MANIFEST/MANIFEST.MF
Modified:
incubator/celix/trunk/CMakeLists.txt
incubator/celix/trunk/Remote Services.launch
incubator/celix/trunk/cmake/CPackConfig.in
incubator/celix/trunk/cmake/Packaging.cmake
incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/paint/private/src/paint_frame.c
incubator/celix/trunk/framework/private/include/bundle_archive.h
incubator/celix/trunk/framework/private/include/bundle_cache.h
incubator/celix/trunk/framework/private/include/bundle_context.h
incubator/celix/trunk/framework/private/include/framework.h
incubator/celix/trunk/framework/private/include/manifest.h
incubator/celix/trunk/framework/private/src/bundle_archive.c
incubator/celix/trunk/framework/private/src/bundle_cache.c
incubator/celix/trunk/framework/private/src/bundle_context.c
incubator/celix/trunk/framework/private/src/bundle_revision.c
incubator/celix/trunk/framework/private/src/framework.c
incubator/celix/trunk/framework/private/src/manifest.c
Modified: incubator/celix/trunk/CMakeLists.txt
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/CMakeLists.txt?rev=1203167&r1=1203166&r2=1203167&view=diff
==============================================================================
--- incubator/celix/trunk/CMakeLists.txt (original)
+++ incubator/celix/trunk/CMakeLists.txt Thu Nov 17 12:36:14 2011
@@ -59,5 +59,7 @@ add_subdirectory(examples)
add_subdirectory(remote_services)
-include(target.cmake)
+add_subdirectory(deployment_admin)
+
+#include(target.cmake)
#enable_testing()
Copied: incubator/celix/trunk/Deployment Admin.launch (from r1198848, incubator/celix/trunk/Remote Services.launch)
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/Deployment%20Admin.launch?p2=incubator/celix/trunk/Deployment%20Admin.launch&p1=incubator/celix/trunk/Remote%20Services.launch&r1=1198848&r2=1203167&rev=1203167&view=diff
==============================================================================
--- incubator/celix/trunk/Remote Services.launch (original)
+++ incubator/celix/trunk/Deployment Admin.launch Thu Nov 17 12:36:14 2011
@@ -29,13 +29,13 @@
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN_SYMBOL" value="main"/>
<booleanAttribute key="org.eclipse.cdt.launch.ENABLE_REGISTER_BOOKKEEPING" value="false"/>
<booleanAttribute key="org.eclipse.cdt.launch.ENABLE_VARIABLE_BOOKKEEPING" value="false"/>
-<stringAttribute key="org.eclipse.cdt.launch.FORMAT" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?><contentList><content id="userData-bundleActivator_stop-(cast)" val="DEPENDENCY_ACTIVATOR_BASE"/><content id="*table-table-exportedServices-admin-activator-bundleActivator_stop-(cast_to_array)" val="0:1"/><content id="componentData-bundleActivator_create-(cast)" val="log_writer_t"/><content id="key-hashMapIterator_remove-(cast)" val="char *"/><content id="userData-userData-fw_startBundle-(cast)" val="log_writer_t"/><content id="*userData-userData-bundleActivator_create-(cast)" val="DEPENDENCY_ACTIVATOR_BASE"/><content id="userData-*userData-userData-bundleActivator_create-(cast)" val="log_writer_t"/><content id="userData-data-bundleAct
ivator_start-(cast)" val="log_writer_t"/><content id="userData-fw_startBundle-(cast)" val="DEPENDENCY_ACTIVATOR_BASE"/><content id="userData-userData-bundleActivator_stop-(cast)" val="log_writer_t"/></contentList>"/>
+<stringAttribute key="org.eclipse.cdt.launch.FORMAT" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?><contentList><content id="*table-table-exportedServices-admin-activator-bundleActivator_stop-(cast_to_array)" val="0:1"/><content id="componentData-bundleActivator_create-(cast)" val="log_writer_t"/><content id="key-hashMapIterator_remove-(cast)" val="char *"/><content id="userData-userData-fw_startBundle-(cast)" val="log_writer_t"/><content id="*userData-userData-bundleActivator_create-(cast)" val="DEPENDENCY_ACTIVATOR_BASE"/><content id="userData-*userData-userData-bundleActivator_create-(cast)" val="log_writer_t"/><content id="userData-data-bundleActivator_start-(cast)" val="log_writer_t"/><content id="userData-userData-bundleActiva
tor_stop-(cast)" val="log_writer_t"/><content id="userData-fw_startBundle-(cast)" val="DEPENDENCY_ACTIVATOR_BASE"/><content id="userData-bundleActivator_stop-(cast)" val="DEPENDENCY_ACTIVATOR_BASE"/></contentList>"/>
<stringAttribute key="org.eclipse.cdt.launch.GLOBAL_VARIABLES" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <globalVariableList/> "/>
<stringAttribute key="org.eclipse.cdt.launch.MEMORY_BLOCKS" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <memoryBlockExpressionList/> "/>
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="build/launcher/launcher"/>
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="celix"/>
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value="cdt.managedbuild.toolchain.gnu.macosx.base.1808592147"/>
-<stringAttribute key="org.eclipse.cdt.launch.WORKING_DIRECTORY" value="${workspace_loc:celix/build/remote_services/deploy/remote-services}"/>
+<stringAttribute key="org.eclipse.cdt.launch.WORKING_DIRECTORY" value="${workspace_loc:celix/build/deployment_admin/deploy/deployment-admin}"/>
<booleanAttribute key="org.eclipse.cdt.launch.ui.ApplicationCDebuggerTab.DEFAULTS_SET" value="true"/>
<booleanAttribute key="org.eclipse.cdt.launch.use_terminal" value="true"/>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
Modified: incubator/celix/trunk/Remote Services.launch
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/Remote%20Services.launch?rev=1203167&r1=1203166&r2=1203167&view=diff
==============================================================================
--- incubator/celix/trunk/Remote Services.launch (original)
+++ incubator/celix/trunk/Remote Services.launch Thu Nov 17 12:36:14 2011
@@ -29,7 +29,7 @@
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN_SYMBOL" value="main"/>
<booleanAttribute key="org.eclipse.cdt.launch.ENABLE_REGISTER_BOOKKEEPING" value="false"/>
<booleanAttribute key="org.eclipse.cdt.launch.ENABLE_VARIABLE_BOOKKEEPING" value="false"/>
-<stringAttribute key="org.eclipse.cdt.launch.FORMAT" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?><contentList><content id="userData-bundleActivator_stop-(cast)" val="DEPENDENCY_ACTIVATOR_BASE"/><content id="*table-table-exportedServices-admin-activator-bundleActivator_stop-(cast_to_array)" val="0:1"/><content id="componentData-bundleActivator_create-(cast)" val="log_writer_t"/><content id="key-hashMapIterator_remove-(cast)" val="char *"/><content id="userData-userData-fw_startBundle-(cast)" val="log_writer_t"/><content id="*userData-userData-bundleActivator_create-(cast)" val="DEPENDENCY_ACTIVATOR_BASE"/><content id="userData-*userData-userData-bundleActivator_create-(cast)" val="log_writer_t"/><content id="userData-data-bundleAct
ivator_start-(cast)" val="log_writer_t"/><content id="userData-fw_startBundle-(cast)" val="DEPENDENCY_ACTIVATOR_BASE"/><content id="userData-userData-bundleActivator_stop-(cast)" val="log_writer_t"/></contentList>"/>
+<stringAttribute key="org.eclipse.cdt.launch.FORMAT" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?><contentList><content id="userData-userData-bundleActivator_stop-(cast)" val="log_writer_t"/><content id="userData-fw_startBundle-(cast)" val="DEPENDENCY_ACTIVATOR_BASE"/><content id="userData-data-bundleActivator_start-(cast)" val="log_writer_t"/><content id="userData-*userData-userData-bundleActivator_create-(cast)" val="log_writer_t"/><content id="*userData-userData-bundleActivator_create-(cast)" val="DEPENDENCY_ACTIVATOR_BASE"/><content id="userData-userData-fw_startBundle-(cast)" val="log_writer_t"/><content id="key-hashMapIterator_remove-(cast)" val="char *"/><content id="componentData-bundleActivator_create-(cast)" val=&quo
t;log_writer_t"/><content id="*table-table-exportedServices-admin-activator-bundleActivator_stop-(cast_to_array)" val="0:1"/><content id="userData-bundleActivator_stop-(cast)" val="DEPENDENCY_ACTIVATOR_BASE"/></contentList>"/>
<stringAttribute key="org.eclipse.cdt.launch.GLOBAL_VARIABLES" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <globalVariableList/> "/>
<stringAttribute key="org.eclipse.cdt.launch.MEMORY_BLOCKS" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <memoryBlockExpressionList/> "/>
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="build/launcher/launcher"/>
Modified: incubator/celix/trunk/cmake/CPackConfig.in
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/cmake/CPackConfig.in?rev=1203167&r1=1203166&r2=1203167&view=diff
==============================================================================
--- incubator/celix/trunk/cmake/CPackConfig.in (original)
+++ incubator/celix/trunk/cmake/CPackConfig.in Thu Nov 17 12:36:14 2011
@@ -20,19 +20,20 @@ SET(CPACK_GENERATOR "@CPACK_GENERATOR@")
SET(CPACK_INSTALL_CMAKE_PROJECTS "@PROJECT_BINARY_DIR@;@PROJECT_NAME@;@BUNDLE_NAME@;/")
SET(CPACK_MODULE_PATH "")
SET(CPACK_PACKAGE_DESCRIPTION "Package description")
-SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "IBS @BUNDLE_NAME@ Package")
+#SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "IBS @BUNDLE_NAME@ Package")
#SET(CPACK_PACKAGE_FILE_NAME "@BUNDLE_NAME@-@IBS_VERSION@")
SET(CPACK_PACKAGE_FILE_NAME "@BUNDLE_NAME@")
-SET(CPACK_PACKAGE_INSTALL_DIRECTORY "IBS")
+#SET(CPACK_PACKAGE_INSTALL_DIRECTORY "IBS")
SET(CPACK_PACKAGE_NAME "@CPACK_PACKAGE_NAME@")
-SET(CPACK_PACKAGE_VENDOR "HPA")
+#SET(CPACK_PACKAGE_VENDOR "HPA")
SET(CPACK_PACKAGE_VERSION "@IBS_VERSION@")
-SET(CPACK_PACKAGE_VERSION_MAJOR "@IBS_MAJOR@")
-SET(CPACK_PACKAGE_VERSION_MINOR "@IBS_MINOR@")
-SET(CPACK_PACKAGE_VERSION_PATCH "@IBS_PATCH@")
-SET(CPACK_RESOURCE_FILE_LICENSE "@PROJECT_SOURCE_DIR@/cpack/License.txt")
-SET(CPACK_RESOURCE_FILE_README "@PROJECT_SOURCE_DIR@/cpack/Readme.txt")
-SET(CPACK_RESOURCE_FILE_WELCOME "@PROJECT_SOURCE_DIR@/cpack/Welcome.txt")
+#SET(CPACK_PACKAGE_VERSION_MAJOR "@IBS_MAJOR@")
+#SET(CPACK_PACKAGE_VERSION_MINOR "@IBS_MINOR@")
+#SET(CPACK_PACKAGE_VERSION_PATCH "@IBS_PATCH@")
+#SET(CPACK_RESOURCE_FILE_LICENSE "@PROJECT_SOURCE_DIR@/cpack/License.txt")
+#SET(CPACK_RESOURCE_FILE_README "@PROJECT_SOURCE_DIR@/cpack/Readme.txt")
+#SET(CPACK_RESOURCE_FILE_WELCOME "@PROJECT_SOURCE_DIR@/cpack/Welcome.txt")
SET(CPACK_SYSTEM_NAME "@CPACK_SYSTEM_NAME@")
SET(CPACK_TOPLEVEL_TAG "@CPACK_TOPLEVEL_TAG@")
SET(CPACK_INCLUDE_TOPLEVEL_DIRECTORY "0")
+set(CPACK_INSTALLED_DIRECTORIES "@BUNDLE_SOURCE_DIR@/META-INF;/META-INF")
Modified: incubator/celix/trunk/cmake/Packaging.cmake
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/cmake/Packaging.cmake?rev=1203167&r1=1203166&r2=1203167&view=diff
==============================================================================
--- incubator/celix/trunk/cmake/Packaging.cmake (original)
+++ incubator/celix/trunk/cmake/Packaging.cmake Thu Nov 17 12:36:14 2011
@@ -40,9 +40,10 @@ ADD_CUSTOM_TARGET(packages)
MACRO(bundle)
PARSE_ARGUMENTS(BUNDLE "FILES;DIRECTORIES" "" ${ARGN})
LIST(GET BUNDLE_DEFAULT_ARGS 0 BUNDLE_NAME)
+
+ #install (DIRECTORY META-INF DESTINATION . COMPONENT ${BUNDLE_NAME} FILES_MATCHING PATTERN "*" PATTERN ".svn" EXCLUDE)
install (TARGETS ${BUNDLE_NAME} DESTINATION . COMPONENT ${BUNDLE_NAME})
- install (DIRECTORY MANIFEST DESTINATION . COMPONENT ${BUNDLE_NAME} FILES_MATCHING PATTERN "*" PATTERN ".svn" EXCLUDE)
if (BUNDLE_FILES)
install (FILES ${BUNDLE_FILES} DESTINATION . COMPONENT ${BUNDLE_NAME})
@@ -51,8 +52,10 @@ MACRO(bundle)
install (DIRECTORY ${BUNDLE_DIRECTORIES} DESTINATION . COMPONENT ${BUNDLE_NAME})
endif(BUNDLE_DIRECTORIES)
+
SET(__bundleTarget bundle_${BUNDLE_NAME})
SET(__bundleConfig ${CMAKE_CURRENT_BINARY_DIR}/CPackConfig-${BUNDLE_NAME}-bundle.cmake)
+ SET(BUNDLE_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/cmake/CPackConfig.in ${__bundleConfig} @ONLY)
ADD_CUSTOM_TARGET(${__bundleTarget}
Added: incubator/celix/trunk/deployment_admin/CMakeLists.txt
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/deployment_admin/CMakeLists.txt?rev=1203167&view=auto
==============================================================================
--- incubator/celix/trunk/deployment_admin/CMakeLists.txt (added)
+++ incubator/celix/trunk/deployment_admin/CMakeLists.txt Thu Nov 17 12:36:14 2011
@@ -0,0 +1,37 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+add_definitions(-DUSE_FILE32API)
+
+include_directories("/opt/local/include")
+include_directories("${PROJECT_SOURCE_DIR}/utils/public/include")
+include_directories("${PROJECT_SOURCE_DIR}/deployment_admin/private/include")
+
+link_directories("/opt/local/lib")
+add_library(deployment_admin SHARED
+ private/src/deployment_package
+ private/src/deployment_admin
+ private/src/deployment_admin_activator
+ private/src/ioapi
+ private/src/miniunz
+ private/src/unzip
+)
+target_link_libraries(deployment_admin framework curl)
+
+bundle(deployment_admin)
+
+deploy("deployment-admin" BUNDLES deployment_admin shell shell_tui log_service log_writer)
Added: incubator/celix/trunk/deployment_admin/META-INF/MANIFEST.MF
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/deployment_admin/META-INF/MANIFEST.MF?rev=1203167&view=auto
==============================================================================
--- incubator/celix/trunk/deployment_admin/META-INF/MANIFEST.MF (added)
+++ incubator/celix/trunk/deployment_admin/META-INF/MANIFEST.MF Thu Nov 17 12:36:14 2011
@@ -0,0 +1,3 @@
+Bundle-SymbolicName: deployment_admin
+Bundle-Version: 1.0.0
+library: deployment_admin
Added: incubator/celix/trunk/deployment_admin/private/include/deployment_admin.h
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/deployment_admin/private/include/deployment_admin.h?rev=1203167&view=auto
==============================================================================
--- incubator/celix/trunk/deployment_admin/private/include/deployment_admin.h (added)
+++ incubator/celix/trunk/deployment_admin/private/include/deployment_admin.h Thu Nov 17 12:36:14 2011
@@ -0,0 +1,27 @@
+/*
+ * deployment_admin.h
+ *
+ * Created on: Nov 7, 2011
+ * Author: alexander
+ */
+
+#ifndef DEPLOYMENT_ADMIN_H_
+#define DEPLOYMENT_ADMIN_H_
+
+#include "headers.h"
+
+typedef struct deployment_admin *deployment_admin_t;
+
+struct deployment_admin {
+ apr_pool_t *pool;
+ apr_thread_t *poller;
+ BUNDLE_CONTEXT context;
+
+ bool running;
+ char *current;
+ HASH_MAP packages;
+};
+
+celix_status_t deploymentAdmin_create(apr_pool_t *pool, BUNDLE_CONTEXT context, deployment_admin_t *admin);
+
+#endif /* DEPLOYMENT_ADMIN_H_ */
Added: incubator/celix/trunk/deployment_admin/private/include/deployment_package.h
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/deployment_admin/private/include/deployment_package.h?rev=1203167&view=auto
==============================================================================
--- incubator/celix/trunk/deployment_admin/private/include/deployment_package.h (added)
+++ incubator/celix/trunk/deployment_admin/private/include/deployment_package.h Thu Nov 17 12:36:14 2011
@@ -0,0 +1,40 @@
+/*
+ * deployment_package.h
+ *
+ * Created on: Nov 8, 2011
+ * Author: alexander
+ */
+
+#ifndef DEPLOYMENT_PACKAGE_H_
+#define DEPLOYMENT_PACKAGE_H_
+
+#include "headers.h"
+
+struct bundle_info {
+ char *path;
+ VERSION version;
+ char *symbolicName;
+
+ PROPERTIES attributes;
+};
+
+typedef struct bundle_info *bundle_info_t;
+
+struct deployment_package {
+ apr_pool_t *pool;
+ BUNDLE_CONTEXT context;
+ MANIFEST manifest;
+ ARRAY_LIST bundleInfos;
+ HASH_MAP nameToBundleInfo;
+};
+
+typedef struct deployment_package *deployment_package_t;
+
+celix_status_t deploymentPackage_create(apr_pool_t *pool, BUNDLE_CONTEXT context, MANIFEST manifest, deployment_package_t *package);
+celix_status_t deploymentPackage_getName(deployment_package_t package, char **name);
+celix_status_t deploymentPackage_getBundleInfos(deployment_package_t package, ARRAY_LIST *infos);
+celix_status_t deploymentPackage_getBundleInfoByName(deployment_package_t package, char *name, bundle_info_t *info);
+celix_status_t deploymentPackage_getBundle(deployment_package_t package, char *name, BUNDLE *bundle);
+celix_status_t deploymentPackage_getVersion(deployment_package_t package, VERSION *version);
+
+#endif /* DEPLOYMENT_PACKAGE_H_ */
Added: incubator/celix/trunk/deployment_admin/private/include/ioapi.h
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/deployment_admin/private/include/ioapi.h?rev=1203167&view=auto
==============================================================================
--- incubator/celix/trunk/deployment_admin/private/include/ioapi.h (added)
+++ incubator/celix/trunk/deployment_admin/private/include/ioapi.h Thu Nov 17 12:36:14 2011
@@ -0,0 +1,200 @@
+/* ioapi.h -- IO base function header for compress/uncompress .zip
+ part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html )
+
+ Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html )
+
+ Modifications for Zip64 support
+ Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com )
+
+ For more info read MiniZip_info.txt
+
+ Changes
+
+ Oct-2009 - Defined ZPOS64_T to fpos_t on windows and u_int64_t on linux. (might need to find a better why for this)
+ Oct-2009 - Change to fseeko64, ftello64 and fopen64 so large files would work on linux.
+ More if/def section may be needed to support other platforms
+ Oct-2009 - Defined fxxxx64 calls to normal fopen/ftell/fseek so they would compile on windows.
+ (but you should use iowin32.c for windows instead)
+
+*/
+
+#ifndef _ZLIBIOAPI64_H
+#define _ZLIBIOAPI64_H
+
+#if (!defined(_WIN32)) && (!defined(WIN32))
+
+ // Linux needs this to support file operation on files larger then 4+GB
+ // But might need better if/def to select just the platforms that needs them.
+
+ #ifndef __USE_FILE_OFFSET64
+ #define __USE_FILE_OFFSET64
+ #endif
+ #ifndef __USE_LARGEFILE64
+ #define __USE_LARGEFILE64
+ #endif
+ #ifndef _LARGEFILE64_SOURCE
+ #define _LARGEFILE64_SOURCE
+ #endif
+ #ifndef _FILE_OFFSET_BIT
+ #define _FILE_OFFSET_BIT 64
+ #endif
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include "zlib.h"
+
+#if defined(USE_FILE32API)
+#define fopen64 fopen
+#define ftello64 ftell
+#define fseeko64 fseek
+#else
+#ifdef _MSC_VER
+ #define fopen64 fopen
+ #if (_MSC_VER >= 1400) && (!(defined(NO_MSCVER_FILE64_FUNC)))
+ #define ftello64 _ftelli64
+ #define fseeko64 _fseeki64
+ #else // old MSC
+ #define ftello64 ftell
+ #define fseeko64 fseek
+ #endif
+#endif
+#endif
+
+/*
+#ifndef ZPOS64_T
+ #ifdef _WIN32
+ #define ZPOS64_T fpos_t
+ #else
+ #include <stdint.h>
+ #define ZPOS64_T uint64_t
+ #endif
+#endif
+*/
+
+#ifdef HAVE_MINIZIP64_CONF_H
+#include "mz64conf.h"
+#endif
+
+/* a type choosen by DEFINE */
+#ifdef HAVE_64BIT_INT_CUSTOM
+typedef 64BIT_INT_CUSTOM_TYPE ZPOS64_T;
+#else
+#ifdef HAS_STDINT_H
+#include "stdint.h"
+typedef uint64_t ZPOS64_T;
+#else
+
+
+#if defined(_MSC_VER) || defined(__BORLANDC__)
+typedef unsigned __int64 ZPOS64_T;
+#else
+typedef unsigned long long int ZPOS64_T;
+#endif
+#endif
+#endif
+
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#define ZLIB_FILEFUNC_SEEK_CUR (1)
+#define ZLIB_FILEFUNC_SEEK_END (2)
+#define ZLIB_FILEFUNC_SEEK_SET (0)
+
+#define ZLIB_FILEFUNC_MODE_READ (1)
+#define ZLIB_FILEFUNC_MODE_WRITE (2)
+#define ZLIB_FILEFUNC_MODE_READWRITEFILTER (3)
+
+#define ZLIB_FILEFUNC_MODE_EXISTING (4)
+#define ZLIB_FILEFUNC_MODE_CREATE (8)
+
+
+#ifndef ZCALLBACK
+ #if (defined(WIN32) || defined(_WIN32) || defined (WINDOWS) || defined (_WINDOWS)) && defined(CALLBACK) && defined (USEWINDOWS_CALLBACK)
+ #define ZCALLBACK CALLBACK
+ #else
+ #define ZCALLBACK
+ #endif
+#endif
+
+
+
+
+typedef voidpf (ZCALLBACK *open_file_func) OF((voidpf opaque, const char* filename, int mode));
+typedef uLong (ZCALLBACK *read_file_func) OF((voidpf opaque, voidpf stream, void* buf, uLong size));
+typedef uLong (ZCALLBACK *write_file_func) OF((voidpf opaque, voidpf stream, const void* buf, uLong size));
+typedef int (ZCALLBACK *close_file_func) OF((voidpf opaque, voidpf stream));
+typedef int (ZCALLBACK *testerror_file_func) OF((voidpf opaque, voidpf stream));
+
+typedef long (ZCALLBACK *tell_file_func) OF((voidpf opaque, voidpf stream));
+typedef long (ZCALLBACK *seek_file_func) OF((voidpf opaque, voidpf stream, uLong offset, int origin));
+
+
+/* here is the "old" 32 bits structure structure */
+typedef struct zlib_filefunc_def_s
+{
+ open_file_func zopen_file;
+ read_file_func zread_file;
+ write_file_func zwrite_file;
+ tell_file_func ztell_file;
+ seek_file_func zseek_file;
+ close_file_func zclose_file;
+ testerror_file_func zerror_file;
+ voidpf opaque;
+} zlib_filefunc_def;
+
+typedef ZPOS64_T (ZCALLBACK *tell64_file_func) OF((voidpf opaque, voidpf stream));
+typedef long (ZCALLBACK *seek64_file_func) OF((voidpf opaque, voidpf stream, ZPOS64_T offset, int origin));
+typedef voidpf (ZCALLBACK *open64_file_func) OF((voidpf opaque, const void* filename, int mode));
+
+typedef struct zlib_filefunc64_def_s
+{
+ open64_file_func zopen64_file;
+ read_file_func zread_file;
+ write_file_func zwrite_file;
+ tell64_file_func ztell64_file;
+ seek64_file_func zseek64_file;
+ close_file_func zclose_file;
+ testerror_file_func zerror_file;
+ voidpf opaque;
+} zlib_filefunc64_def;
+
+void fill_fopen64_filefunc OF((zlib_filefunc64_def* pzlib_filefunc_def));
+void fill_fopen_filefunc OF((zlib_filefunc_def* pzlib_filefunc_def));
+
+/* now internal definition, only for zip.c and unzip.h */
+typedef struct zlib_filefunc64_32_def_s
+{
+ zlib_filefunc64_def zfile_func64;
+ open_file_func zopen32_file;
+ tell_file_func ztell32_file;
+ seek_file_func zseek32_file;
+} zlib_filefunc64_32_def;
+
+
+#define ZREAD64(filefunc,filestream,buf,size) ((*((filefunc).zfile_func64.zread_file)) ((filefunc).zfile_func64.opaque,filestream,buf,size))
+#define ZWRITE64(filefunc,filestream,buf,size) ((*((filefunc).zfile_func64.zwrite_file)) ((filefunc).zfile_func64.opaque,filestream,buf,size))
+//#define ZTELL64(filefunc,filestream) ((*((filefunc).ztell64_file)) ((filefunc).opaque,filestream))
+//#define ZSEEK64(filefunc,filestream,pos,mode) ((*((filefunc).zseek64_file)) ((filefunc).opaque,filestream,pos,mode))
+#define ZCLOSE64(filefunc,filestream) ((*((filefunc).zfile_func64.zclose_file)) ((filefunc).zfile_func64.opaque,filestream))
+#define ZERROR64(filefunc,filestream) ((*((filefunc).zfile_func64.zerror_file)) ((filefunc).zfile_func64.opaque,filestream))
+
+voidpf call_zopen64 OF((const zlib_filefunc64_32_def* pfilefunc,const void*filename,int mode));
+long call_zseek64 OF((const zlib_filefunc64_32_def* pfilefunc,voidpf filestream, ZPOS64_T offset, int origin));
+ZPOS64_T call_ztell64 OF((const zlib_filefunc64_32_def* pfilefunc,voidpf filestream));
+
+void fill_zlib_filefunc64_32_def_from_filefunc32(zlib_filefunc64_32_def* p_filefunc64_32,const zlib_filefunc_def* p_filefunc32);
+
+#define ZOPEN64(filefunc,filename,mode) (call_zopen64((&(filefunc)),(filename),(mode)))
+#define ZTELL64(filefunc,filestream) (call_ztell64((&(filefunc)),(filestream)))
+#define ZSEEK64(filefunc,filestream,pos,mode) (call_zseek64((&(filefunc)),(filestream),(pos),(mode)))
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
Added: incubator/celix/trunk/deployment_admin/private/include/unzip.h
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/deployment_admin/private/include/unzip.h?rev=1203167&view=auto
==============================================================================
--- incubator/celix/trunk/deployment_admin/private/include/unzip.h (added)
+++ incubator/celix/trunk/deployment_admin/private/include/unzip.h Thu Nov 17 12:36:14 2011
@@ -0,0 +1,437 @@
+/* unzip.h -- IO for uncompress .zip files using zlib
+ Version 1.1, February 14h, 2010
+ part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html )
+
+ Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html )
+
+ Modifications of Unzip for Zip64
+ Copyright (C) 2007-2008 Even Rouault
+
+ Modifications for Zip64 support on both zip and unzip
+ Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com )
+
+ For more info read MiniZip_info.txt
+
+ ---------------------------------------------------------------------------------
+
+ Condition of use and distribution are the same than zlib :
+
+ This software is provided 'as-is', without any express or implied
+ warranty. In no event will the authors be held liable for any damages
+ arising from the use of this software.
+
+ Permission is granted to anyone to use this software for any purpose,
+ including commercial applications, and to alter it and redistribute it
+ freely, subject to the following restrictions:
+
+ 1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+ 2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+ 3. This notice may not be removed or altered from any source distribution.
+
+ ---------------------------------------------------------------------------------
+
+ Changes
+
+ See header of unzip64.c
+
+*/
+
+#ifndef _unz64_H
+#define _unz64_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef _ZLIB_H
+#include "zlib.h"
+#endif
+
+#ifndef _ZLIBIOAPI_H
+#include "ioapi.h"
+#endif
+
+#ifdef HAVE_BZIP2
+#include "bzlib.h"
+#endif
+
+#define Z_BZIP2ED 12
+
+#if defined(STRICTUNZIP) || defined(STRICTZIPUNZIP)
+/* like the STRICT of WIN32, we define a pointer that cannot be converted
+ from (void*) without cast */
+typedef struct TagunzFile__ { int unused; } unzFile__;
+typedef unzFile__ *unzFile;
+#else
+typedef voidp unzFile;
+#endif
+
+
+#define UNZ_OK (0)
+#define UNZ_END_OF_LIST_OF_FILE (-100)
+#define UNZ_ERRNO (Z_ERRNO)
+#define UNZ_EOF (0)
+#define UNZ_PARAMERROR (-102)
+#define UNZ_BADZIPFILE (-103)
+#define UNZ_INTERNALERROR (-104)
+#define UNZ_CRCERROR (-105)
+
+/* tm_unz contain date/time info */
+typedef struct tm_unz_s
+{
+ uInt tm_sec; /* seconds after the minute - [0,59] */
+ uInt tm_min; /* minutes after the hour - [0,59] */
+ uInt tm_hour; /* hours since midnight - [0,23] */
+ uInt tm_mday; /* day of the month - [1,31] */
+ uInt tm_mon; /* months since January - [0,11] */
+ uInt tm_year; /* years - [1980..2044] */
+} tm_unz;
+
+/* unz_global_info structure contain global data about the ZIPfile
+ These data comes from the end of central dir */
+typedef struct unz_global_info64_s
+{
+ ZPOS64_T number_entry; /* total number of entries in
+ the central dir on this disk */
+ uLong size_comment; /* size of the global comment of the zipfile */
+} unz_global_info64;
+
+typedef struct unz_global_info_s
+{
+ uLong number_entry; /* total number of entries in
+ the central dir on this disk */
+ uLong size_comment; /* size of the global comment of the zipfile */
+} unz_global_info;
+
+/* unz_file_info contain information about a file in the zipfile */
+typedef struct unz_file_info64_s
+{
+ uLong version; /* version made by 2 bytes */
+ uLong version_needed; /* version needed to extract 2 bytes */
+ uLong flag; /* general purpose bit flag 2 bytes */
+ uLong compression_method; /* compression method 2 bytes */
+ uLong dosDate; /* last mod file date in Dos fmt 4 bytes */
+ uLong crc; /* crc-32 4 bytes */
+ ZPOS64_T compressed_size; /* compressed size 8 bytes */
+ ZPOS64_T uncompressed_size; /* uncompressed size 8 bytes */
+ uLong size_filename; /* filename length 2 bytes */
+ uLong size_file_extra; /* extra field length 2 bytes */
+ uLong size_file_comment; /* file comment length 2 bytes */
+
+ uLong disk_num_start; /* disk number start 2 bytes */
+ uLong internal_fa; /* internal file attributes 2 bytes */
+ uLong external_fa; /* external file attributes 4 bytes */
+
+ tm_unz tmu_date;
+} unz_file_info64;
+
+typedef struct unz_file_info_s
+{
+ uLong version; /* version made by 2 bytes */
+ uLong version_needed; /* version needed to extract 2 bytes */
+ uLong flag; /* general purpose bit flag 2 bytes */
+ uLong compression_method; /* compression method 2 bytes */
+ uLong dosDate; /* last mod file date in Dos fmt 4 bytes */
+ uLong crc; /* crc-32 4 bytes */
+ uLong compressed_size; /* compressed size 4 bytes */
+ uLong uncompressed_size; /* uncompressed size 4 bytes */
+ uLong size_filename; /* filename length 2 bytes */
+ uLong size_file_extra; /* extra field length 2 bytes */
+ uLong size_file_comment; /* file comment length 2 bytes */
+
+ uLong disk_num_start; /* disk number start 2 bytes */
+ uLong internal_fa; /* internal file attributes 2 bytes */
+ uLong external_fa; /* external file attributes 4 bytes */
+
+ tm_unz tmu_date;
+} unz_file_info;
+
+extern int ZEXPORT unzStringFileNameCompare OF ((const char* fileName1,
+ const char* fileName2,
+ int iCaseSensitivity));
+/*
+ Compare two filename (fileName1,fileName2).
+ If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp)
+ If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi
+ or strcasecmp)
+ If iCaseSenisivity = 0, case sensitivity is defaut of your operating system
+ (like 1 on Unix, 2 on Windows)
+*/
+
+
+extern unzFile ZEXPORT unzOpen OF((const char *path));
+extern unzFile ZEXPORT unzOpen64 OF((const void *path));
+/*
+ Open a Zip file. path contain the full pathname (by example,
+ on a Windows XP computer "c:\\zlib\\zlib113.zip" or on an Unix computer
+ "zlib/zlib113.zip".
+ If the zipfile cannot be opened (file don't exist or in not valid), the
+ return value is NULL.
+ Else, the return value is a unzFile Handle, usable with other function
+ of this unzip package.
+ the "64" function take a const void* pointer, because the path is just the
+ value passed to the open64_file_func callback.
+ Under Windows, if UNICODE is defined, using fill_fopen64_filefunc, the path
+ is a pointer to a wide unicode string (LPCTSTR is LPCWSTR), so const char*
+ does not describe the reality
+*/
+
+
+extern unzFile ZEXPORT unzOpen2 OF((const char *path,
+ zlib_filefunc_def* pzlib_filefunc_def));
+/*
+ Open a Zip file, like unzOpen, but provide a set of file low level API
+ for read/write the zip file (see ioapi.h)
+*/
+
+extern unzFile ZEXPORT unzOpen2_64 OF((const void *path,
+ zlib_filefunc64_def* pzlib_filefunc_def));
+/*
+ Open a Zip file, like unz64Open, but provide a set of file low level API
+ for read/write the zip file (see ioapi.h)
+*/
+
+extern int ZEXPORT unzClose OF((unzFile file));
+/*
+ Close a ZipFile opened with unzipOpen.
+ If there is files inside the .Zip opened with unzOpenCurrentFile (see later),
+ these files MUST be closed with unzipCloseCurrentFile before call unzipClose.
+ return UNZ_OK if there is no problem. */
+
+extern int ZEXPORT unzGetGlobalInfo OF((unzFile file,
+ unz_global_info *pglobal_info));
+
+extern int ZEXPORT unzGetGlobalInfo64 OF((unzFile file,
+ unz_global_info64 *pglobal_info));
+/*
+ Write info about the ZipFile in the *pglobal_info structure.
+ No preparation of the structure is needed
+ return UNZ_OK if there is no problem. */
+
+
+extern int ZEXPORT unzGetGlobalComment OF((unzFile file,
+ char *szComment,
+ uLong uSizeBuf));
+/*
+ Get the global comment string of the ZipFile, in the szComment buffer.
+ uSizeBuf is the size of the szComment buffer.
+ return the number of byte copied or an error code <0
+*/
+
+
+/***************************************************************************/
+/* Unzip package allow you browse the directory of the zipfile */
+
+extern int ZEXPORT unzGoToFirstFile OF((unzFile file));
+/*
+ Set the current file of the zipfile to the first file.
+ return UNZ_OK if there is no problem
+*/
+
+extern int ZEXPORT unzGoToNextFile OF((unzFile file));
+/*
+ Set the current file of the zipfile to the next file.
+ return UNZ_OK if there is no problem
+ return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest.
+*/
+
+extern int ZEXPORT unzLocateFile OF((unzFile file,
+ const char *szFileName,
+ int iCaseSensitivity));
+/*
+ Try locate the file szFileName in the zipfile.
+ For the iCaseSensitivity signification, see unzStringFileNameCompare
+
+ return value :
+ UNZ_OK if the file is found. It becomes the current file.
+ UNZ_END_OF_LIST_OF_FILE if the file is not found
+*/
+
+
+/* ****************************************** */
+/* Ryan supplied functions */
+/* unz_file_info contain information about a file in the zipfile */
+typedef struct unz_file_pos_s
+{
+ uLong pos_in_zip_directory; /* offset in zip file directory */
+ uLong num_of_file; /* # of file */
+} unz_file_pos;
+
+extern int ZEXPORT unzGetFilePos(
+ unzFile file,
+ unz_file_pos* file_pos);
+
+extern int ZEXPORT unzGoToFilePos(
+ unzFile file,
+ unz_file_pos* file_pos);
+
+typedef struct unz64_file_pos_s
+{
+ ZPOS64_T pos_in_zip_directory; /* offset in zip file directory */
+ ZPOS64_T num_of_file; /* # of file */
+} unz64_file_pos;
+
+extern int ZEXPORT unzGetFilePos64(
+ unzFile file,
+ unz64_file_pos* file_pos);
+
+extern int ZEXPORT unzGoToFilePos64(
+ unzFile file,
+ const unz64_file_pos* file_pos);
+
+/* ****************************************** */
+
+extern int ZEXPORT unzGetCurrentFileInfo64 OF((unzFile file,
+ unz_file_info64 *pfile_info,
+ char *szFileName,
+ uLong fileNameBufferSize,
+ void *extraField,
+ uLong extraFieldBufferSize,
+ char *szComment,
+ uLong commentBufferSize));
+
+extern int ZEXPORT unzGetCurrentFileInfo OF((unzFile file,
+ unz_file_info *pfile_info,
+ char *szFileName,
+ uLong fileNameBufferSize,
+ void *extraField,
+ uLong extraFieldBufferSize,
+ char *szComment,
+ uLong commentBufferSize));
+/*
+ Get Info about the current file
+ if pfile_info!=NULL, the *pfile_info structure will contain somes info about
+ the current file
+ if szFileName!=NULL, the filemane string will be copied in szFileName
+ (fileNameBufferSize is the size of the buffer)
+ if extraField!=NULL, the extra field information will be copied in extraField
+ (extraFieldBufferSize is the size of the buffer).
+ This is the Central-header version of the extra field
+ if szComment!=NULL, the comment string of the file will be copied in szComment
+ (commentBufferSize is the size of the buffer)
+*/
+
+
+/** Addition for GDAL : START */
+
+extern ZPOS64_T ZEXPORT unzGetCurrentFileZStreamPos64 OF((unzFile file));
+
+/** Addition for GDAL : END */
+
+
+/***************************************************************************/
+/* for reading the content of the current zipfile, you can open it, read data
+ from it, and close it (you can close it before reading all the file)
+ */
+
+extern int ZEXPORT unzOpenCurrentFile OF((unzFile file));
+/*
+ Open for reading data the current file in the zipfile.
+ If there is no error, the return value is UNZ_OK.
+*/
+
+extern int ZEXPORT unzOpenCurrentFilePassword OF((unzFile file,
+ const char* password));
+/*
+ Open for reading data the current file in the zipfile.
+ password is a crypting password
+ If there is no error, the return value is UNZ_OK.
+*/
+
+extern int ZEXPORT unzOpenCurrentFile2 OF((unzFile file,
+ int* method,
+ int* level,
+ int raw));
+/*
+ Same than unzOpenCurrentFile, but open for read raw the file (not uncompress)
+ if raw==1
+ *method will receive method of compression, *level will receive level of
+ compression
+ note : you can set level parameter as NULL (if you did not want known level,
+ but you CANNOT set method parameter as NULL
+*/
+
+extern int ZEXPORT unzOpenCurrentFile3 OF((unzFile file,
+ int* method,
+ int* level,
+ int raw,
+ const char* password));
+/*
+ Same than unzOpenCurrentFile, but open for read raw the file (not uncompress)
+ if raw==1
+ *method will receive method of compression, *level will receive level of
+ compression
+ note : you can set level parameter as NULL (if you did not want known level,
+ but you CANNOT set method parameter as NULL
+*/
+
+
+extern int ZEXPORT unzCloseCurrentFile OF((unzFile file));
+/*
+ Close the file in zip opened with unzOpenCurrentFile
+ Return UNZ_CRCERROR if all the file was read but the CRC is not good
+*/
+
+extern int ZEXPORT unzReadCurrentFile OF((unzFile file,
+ voidp buf,
+ unsigned len));
+/*
+ Read bytes from the current file (opened by unzOpenCurrentFile)
+ buf contain buffer where data must be copied
+ len the size of buf.
+
+ return the number of byte copied if somes bytes are copied
+ return 0 if the end of file was reached
+ return <0 with error code if there is an error
+ (UNZ_ERRNO for IO error, or zLib error for uncompress error)
+*/
+
+extern z_off_t ZEXPORT unztell OF((unzFile file));
+
+extern ZPOS64_T ZEXPORT unztell64 OF((unzFile file));
+/*
+ Give the current position in uncompressed data
+*/
+
+extern int ZEXPORT unzeof OF((unzFile file));
+/*
+ return 1 if the end of file was reached, 0 elsewhere
+*/
+
+extern int ZEXPORT unzGetLocalExtrafield OF((unzFile file,
+ voidp buf,
+ unsigned len));
+/*
+ Read extra field from the current file (opened by unzOpenCurrentFile)
+ This is the local-header version of the extra field (sometimes, there is
+ more info in the local-header version than in the central-header)
+
+ if buf==NULL, it return the size of the local extra field
+
+ if buf!=NULL, len is the size of the buffer, the extra header is copied in
+ buf.
+ the return value is the number of bytes copied in buf, or (if <0)
+ the error code
+*/
+
+/***************************************************************************/
+
+/* Get the current file offset */
+extern ZPOS64_T ZEXPORT unzGetOffset64 (unzFile file);
+extern uLong ZEXPORT unzGetOffset (unzFile file);
+
+/* Set the current file offset */
+extern int ZEXPORT unzSetOffset64 (unzFile file, ZPOS64_T pos);
+extern int ZEXPORT unzSetOffset (unzFile file, uLong pos);
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _unz64_H */
Added: incubator/celix/trunk/deployment_admin/private/src/deployment_admin.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/deployment_admin/private/src/deployment_admin.c?rev=1203167&view=auto
==============================================================================
--- incubator/celix/trunk/deployment_admin/private/src/deployment_admin.c (added)
+++ incubator/celix/trunk/deployment_admin/private/src/deployment_admin.c Thu Nov 17 12:36:14 2011
@@ -0,0 +1,362 @@
+/*
+ * deployment_admin.c
+ *
+ * Created on: Nov 7, 2011
+ * Author: alexander
+ */
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <curl/curl.h>
+#include <curl/types.h>
+#include <curl/easy.h>
+#include <apr_strings.h>
+
+#include "deployment_admin.h"
+#include "celix_errno.h"
+#include "bundle_context.h"
+#include "constants.h"
+#include "deployment_package.h"
+#include "bundle.h"
+#include "utils.h"
+
+#define VERSIONS "http://localhost:8080/deployment/test/versions"
+
+static void *APR_THREAD_FUNC deploymentAdmin_poll(apr_thread_t *thd, void *deploymentAdmin);
+celix_status_t deploymentAdmin_download(char * url, char **inputFile);
+size_t deploymentAdmin_writeData(void *ptr, size_t size, size_t nmemb, FILE *stream);
+static celix_status_t deploymentAdmin_deleteTree(char * directory, apr_pool_t *mp);
+celix_status_t deploymentAdmin_readVersions(deployment_admin_t admin, ARRAY_LIST *versions);
+
+celix_status_t deploymentAdmin_stopDeploymentPackageBundles(deployment_admin_t admin, deployment_package_t target);
+celix_status_t deploymentAdmin_updateDeploymentPackageBundles(deployment_admin_t admin, deployment_package_t source);
+celix_status_t deploymentAdmin_dropDeploymentPackageBundles(deployment_admin_t admin, deployment_package_t source, deployment_package_t target);
+celix_status_t deploymentAdmin_startDeploymentPackageBundles(deployment_admin_t admin, deployment_package_t source);
+
+celix_status_t deploymentAdmin_create(apr_pool_t *pool, BUNDLE_CONTEXT context, deployment_admin_t *admin) {
+ celix_status_t status = CELIX_SUCCESS;
+ apr_pool_t *subpool;
+ apr_pool_create(&subpool, pool);
+
+ *admin = apr_palloc(subpool, sizeof(**admin));
+ if (!*admin) {
+ status = CELIX_ENOMEM;
+ } else {
+ (*admin)->pool = subpool;
+ (*admin)->running = true;
+ (*admin)->context = context;
+ (*admin)->current = NULL;
+ (*admin)->packages = hashMap_create(string_hash, NULL, string_equals, NULL);
+ apr_thread_create(&(*admin)->poller, NULL, deploymentAdmin_poll, *admin, subpool);
+ }
+
+ return status;
+}
+
+static void *APR_THREAD_FUNC deploymentAdmin_poll(apr_thread_t *thd, void *deploymentAdmin) {
+ deployment_admin_t admin = deploymentAdmin;
+
+ while (admin->running) {
+ //poll ace
+ printf("Read version\n");
+ ARRAY_LIST versions = NULL;
+ deploymentAdmin_readVersions(admin, &versions);
+
+ char *last = arrayList_get(versions, arrayList_size(versions) - 1);
+
+ if (admin->current == NULL || strcmp(last, admin->current) > 0) {
+ printf("install version: %s\n", last);
+ char *request = NULL;
+ if (admin->current == NULL) {
+ request = apr_pstrcat(admin->pool, VERSIONS, "/", last, NULL);
+ } else {
+ // We do not yet support fix packages
+ //request = apr_pstrcat(admin->pool, VERSIONS, "/", last, "?current=", admin->current, NULL);
+ request = apr_pstrcat(admin->pool, VERSIONS, "/", last, NULL);
+ }
+ printf("Request: %s\n", request);
+
+ char inputFile[MAXNAMLEN];
+ inputFile[0] = '\0';
+ char *test = inputFile;
+ celix_status_t status = deploymentAdmin_download(request, &test);
+ if (status == CELIX_SUCCESS) {
+ // Handle file
+ printf("Handle file\n");
+ char tmpDir[MAXNAMLEN];
+ tmpDir[0] = '\0';
+ tmpnam(tmpDir);
+
+ apr_dir_make(tmpDir, APR_UREAD|APR_UWRITE|APR_UEXECUTE, admin->pool);
+
+ // TODO: update to use bundle cache DataFile instead of module entries.
+ printf("Extract %s t0 %s\n", test, tmpDir);
+ extractBundle(test, tmpDir);
+ char *manifest = apr_pstrcat(admin->pool, tmpDir, "/META-INF/MANIFEST.MF", NULL);
+ MANIFEST mf = NULL;
+ manifest_read(manifest, &mf);
+ deployment_package_t source = NULL;
+ deploymentPackage_create(admin->pool, admin->context, mf, &source);
+ char *name = NULL;
+ deploymentPackage_getName(source, &name);
+
+ BUNDLE bundle = NULL;
+ bundleContext_getBundle(admin->context, &bundle);
+ char *entry = NULL;
+ bundle_getEntry(bundle, "/", admin->pool, &entry);
+ char *repoDir = apr_pstrcat(admin->pool, entry, "repo", NULL);
+ apr_dir_make(repoDir, APR_UREAD|APR_UWRITE|APR_UEXECUTE, admin->pool);
+ char *repoCache = apr_pstrcat(admin->pool, entry, "repo/", name, NULL);
+ printf("CAche: %s\n", repoCache);
+ deploymentAdmin_deleteTree(repoCache, admin->pool);
+ apr_status_t stat = apr_file_rename(tmpDir, repoCache, admin->pool);
+ if (stat != APR_SUCCESS) {
+ printf("No success\n");
+ }
+
+ deployment_package_t target = hashMap_get(admin->packages, name);
+ deploymentAdmin_stopDeploymentPackageBundles(admin, target);
+ deploymentAdmin_updateDeploymentPackageBundles(admin, source);
+ deploymentAdmin_dropDeploymentPackageBundles(admin, source, target);
+ deploymentAdmin_startDeploymentPackageBundles(admin, source);
+
+ deploymentAdmin_deleteTree(repoCache, admin->pool);
+ deploymentAdmin_deleteTree(tmpDir, admin->pool);
+ remove(test);
+ admin->current = strdup(last);
+ hashMap_put(admin->packages, name, source);
+ }
+ }
+ sleep(5);
+ }
+
+ apr_thread_exit(thd, APR_SUCCESS);
+ return NULL;
+}
+
+struct MemoryStruct {
+ char *memory;
+ size_t size;
+};
+
+size_t deploymentAdmin_parseVersions(void *contents, size_t size, size_t nmemb, void *userp) {
+ size_t realsize = size * nmemb;
+ struct MemoryStruct *mem = (struct MemoryStruct *)userp;
+
+ mem->memory = realloc(mem->memory, mem->size + realsize + 1);
+ if (mem->memory == NULL) {
+ /* out of memory! */
+ printf("not enough memory (realloc returned NULL)\n");
+ exit(EXIT_FAILURE);
+ }
+
+ memcpy(&(mem->memory[mem->size]), contents, realsize);
+ mem->size += realsize;
+ mem->memory[mem->size] = 0;
+
+ return realsize;
+}
+
+celix_status_t deploymentAdmin_readVersions(deployment_admin_t admin, ARRAY_LIST *versions) {
+ celix_status_t status = CELIX_SUCCESS;
+ arrayList_create(admin->pool, versions);
+ CURL *curl;
+ CURLcode res;
+ curl = curl_easy_init();
+ struct MemoryStruct chunk;
+ chunk.memory = malloc(1);
+ chunk.size = 0;
+ if (curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, VERSIONS);
+ curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, deploymentAdmin_parseVersions);
+ curl_easy_setopt(curl, CURLOPT_WRITEDATA, &chunk);
+ curl_easy_setopt(curl, CURLOPT_FAILONERROR, true);
+ res = curl_easy_perform(curl);
+ if (res != CURLE_OK) {
+ status = CELIX_BUNDLE_EXCEPTION;
+ }
+ printf("Error: %d\n", res);
+ /* always cleanup */
+ curl_easy_cleanup(curl);
+
+ char *last;
+ char *token = apr_strtok(chunk.memory, "\n", &last);
+ while (token != NULL) {
+ arrayList_add(*versions, token);
+ token = apr_strtok(NULL, "\n", &last);
+ }
+ }
+
+
+
+ return status;
+}
+
+
+celix_status_t deploymentAdmin_download(char * url, char **inputFile) {
+ celix_status_t status = CELIX_SUCCESS;
+ CURL *curl;
+ CURLcode res;
+ curl = curl_easy_init();
+ if (curl) {
+ tmpnam(*inputFile);
+ printf("Temp file: %s\n", *inputFile);
+ FILE *fp = fopen(*inputFile, "wb+");
+ curl_easy_setopt(curl, CURLOPT_URL, url);
+ curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, deploymentAdmin_writeData);
+ curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
+ curl_easy_setopt(curl, CURLOPT_FAILONERROR, true);
+ //curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 0);
+ //curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, updateCommand_downloadProgress);
+ res = curl_easy_perform(curl);
+ if (res != CURLE_OK) {
+ status = CELIX_BUNDLE_EXCEPTION;
+ }
+ printf("Error: %d\n", res);
+ /* always cleanup */
+ curl_easy_cleanup(curl);
+ fclose(fp);
+ }
+ if (res != CURLE_OK) {
+ *inputFile[0] = '\0';
+ status = CELIX_ILLEGAL_STATE;
+ } else {
+ status = CELIX_SUCCESS;
+ }
+
+ return status;
+}
+
+size_t deploymentAdmin_writeData(void *ptr, size_t size, size_t nmemb, FILE *stream) {
+ size_t written = fwrite(ptr, size, nmemb, stream);
+ return written;
+}
+
+static celix_status_t deploymentAdmin_deleteTree(char * directory, apr_pool_t *mp) {
+ celix_status_t status = CELIX_SUCCESS;
+ apr_dir_t *dir;
+
+ if (directory && mp) {
+ if (apr_dir_open(&dir, directory, mp) == APR_SUCCESS) {
+ apr_finfo_t dp;
+ while ((apr_dir_read(&dp, APR_FINFO_DIRENT|APR_FINFO_TYPE, dir)) == APR_SUCCESS) {
+ if ((strcmp((dp.name), ".") != 0) && (strcmp((dp.name), "..") != 0)) {
+ char subdir[strlen(directory) + strlen(dp.name) + 2];
+ strcpy(subdir, directory);
+ strcat(subdir, "/");
+ strcat(subdir, dp.name);
+
+ if (dp.filetype == APR_DIR) {
+ deploymentAdmin_deleteTree(subdir, mp);
+ } else {
+ remove(subdir);
+ }
+ }
+ }
+ remove(directory);
+ } else {
+ status = CELIX_FILE_IO_EXCEPTION;
+ }
+ } else {
+ status = CELIX_ILLEGAL_ARGUMENT;
+ }
+
+ return status;
+}
+
+celix_status_t deploymentAdmin_stopDeploymentPackageBundles(deployment_admin_t admin, deployment_package_t target) {
+ celix_status_t status = CELIX_SUCCESS;
+
+ if (target != NULL) {
+ ARRAY_LIST infos = NULL;
+ deploymentPackage_getBundleInfos(target, &infos);
+ int i;
+ for (i = 0; i < arrayList_size(infos); i++) {
+ BUNDLE bundle = NULL;
+ bundle_info_t info = arrayList_get(infos, i);
+ deploymentPackage_getBundle(target, info->symbolicName, &bundle);
+ if (bundle != NULL) {
+ bundle_stop(bundle, 0);
+ } else {
+ printf("DEPLOYMENT_ADMIN: Bundle %s not found\n", info->symbolicName);
+ }
+ }
+ }
+
+ return status;
+}
+
+celix_status_t deploymentAdmin_updateDeploymentPackageBundles(deployment_admin_t admin, deployment_package_t source) {
+ celix_status_t status = CELIX_SUCCESS;
+
+ ARRAY_LIST infos = NULL;
+ deploymentPackage_getBundleInfos(source, &infos);
+ int i;
+ for (i = 0; i < arrayList_size(infos); i++) {
+ BUNDLE bundle = NULL;
+ bundle_info_t info = arrayList_get(infos, i);
+
+ bundleContext_getBundle(admin->context, &bundle);
+ char *entry = NULL;
+ bundle_getEntry(bundle, "/", admin->pool, &entry);
+ char *name = NULL;
+ deploymentPackage_getName(source, &name);
+ char *bundlePath = apr_pstrcat(admin->pool, entry, "repo/", name, "/", info->path, NULL);
+ char *bsn = apr_pstrcat(admin->pool, "osgi-dp:", info->symbolicName, NULL);
+
+ BUNDLE updateBundle = NULL;
+ deploymentPackage_getBundle(source, info->symbolicName, &updateBundle);
+ if (updateBundle != NULL) {
+ printf("Update bundle from: %s\n", bundlePath);
+ bundle_update(updateBundle, bundlePath);
+ } else {
+ printf("Install bundle from: %s\n", bundlePath);
+ bundleContext_installBundle2(admin->context, bsn, bundlePath, &updateBundle);
+ }
+ }
+
+ return status;
+}
+
+celix_status_t deploymentAdmin_dropDeploymentPackageBundles(deployment_admin_t admin, deployment_package_t source, deployment_package_t target) {
+ celix_status_t status = CELIX_SUCCESS;
+
+ if (target != NULL) {
+ ARRAY_LIST targetInfos = NULL;
+ deploymentPackage_getBundleInfos(target, &targetInfos);
+ int i;
+ for (i = 0; i < arrayList_size(targetInfos); i++) {
+ bundle_info_t targetInfo = arrayList_get(targetInfos, i);
+ bundle_info_t info = NULL;
+ deploymentPackage_getBundleInfoByName(source, targetInfo->symbolicName, &info);
+ if (info == NULL) {
+ BUNDLE bundle = NULL;
+ deploymentPackage_getBundle(target, targetInfo->symbolicName, &bundle);
+ bundle_uninstall(bundle);
+ }
+ }
+ }
+
+ return status;
+}
+
+celix_status_t deploymentAdmin_startDeploymentPackageBundles(deployment_admin_t admin, deployment_package_t source) {
+ celix_status_t status = CELIX_SUCCESS;
+
+ ARRAY_LIST infos = NULL;
+ deploymentPackage_getBundleInfos(source, &infos);
+ int i;
+ for (i = 0; i < arrayList_size(infos); i++) {
+ BUNDLE bundle = NULL;
+ bundle_info_t info = arrayList_get(infos, i);
+ deploymentPackage_getBundle(source, info->symbolicName, &bundle);
+ if (bundle != NULL) {
+ bundle_start(bundle, 0);
+ } else {
+ printf("DEPLOYMENT_ADMIN: Could not start bundle %s\n", info->symbolicName);
+ }
+ }
+
+ return status;
+}
Added: incubator/celix/trunk/deployment_admin/private/src/deployment_admin_activator.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/deployment_admin/private/src/deployment_admin_activator.c?rev=1203167&view=auto
==============================================================================
--- incubator/celix/trunk/deployment_admin/private/src/deployment_admin_activator.c (added)
+++ incubator/celix/trunk/deployment_admin/private/src/deployment_admin_activator.c Thu Nov 17 12:36:14 2011
@@ -0,0 +1,65 @@
+/*
+ * deployment_admin_activator.c
+ *
+ * Created on: Nov 7, 2011
+ * Author: alexander
+ */
+#include <stdlib.h>
+
+#include "bundle_activator.h"
+#include "deployment_admin.h"
+
+struct activator {
+ apr_pool_t *pool;
+ deployment_admin_t admin;
+};
+
+celix_status_t bundleActivator_create(BUNDLE_CONTEXT context, void **userData) {
+ celix_status_t status = CELIX_SUCCESS;
+
+ apr_pool_t *parentPool = NULL;
+ apr_pool_t *pool = NULL;
+ struct activator *activator;
+
+ status = bundleContext_getMemoryPool(context, &parentPool);
+ if (status == CELIX_SUCCESS) {
+ if (apr_pool_create(&pool, parentPool) != APR_SUCCESS) {
+ status = CELIX_BUNDLE_EXCEPTION;
+ } else {
+ activator = apr_palloc(pool, sizeof(*activator));
+ if (!activator) {
+ status = CELIX_ENOMEM;
+ } else {
+ activator->pool = pool;
+
+ status = deploymentAdmin_create(pool, context, &activator->admin);
+
+ *userData = activator;
+ }
+ }
+ }
+
+ return status;
+}
+
+celix_status_t bundleActivator_start(void * userData, BUNDLE_CONTEXT context) {
+ celix_status_t status = CELIX_SUCCESS;
+ struct activator *activator = userData;
+
+
+ return status;
+}
+
+celix_status_t bundleActivator_stop(void * userData, BUNDLE_CONTEXT context) {
+ celix_status_t status = CELIX_SUCCESS;
+ struct activator *activator = userData;
+
+ return status;
+}
+
+celix_status_t bundleActivator_destroy(void * userData, BUNDLE_CONTEXT context) {
+ celix_status_t status = CELIX_SUCCESS;
+ return status;
+}
+
+
Added: incubator/celix/trunk/deployment_admin/private/src/deployment_package.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/deployment_admin/private/src/deployment_package.c?rev=1203167&view=auto
==============================================================================
--- incubator/celix/trunk/deployment_admin/private/src/deployment_package.c (added)
+++ incubator/celix/trunk/deployment_admin/private/src/deployment_package.c Thu Nov 17 12:36:14 2011
@@ -0,0 +1,114 @@
+/*
+ * deployment_package.c
+ *
+ * Created on: Nov 8, 2011
+ * Author: alexander
+ */
+#include <stdlib.h>
+
+#include "celix_errno.h"
+
+#include "deployment_package.h"
+#include "constants.h"
+#include "utils.h"
+#include "bundle_context.h"
+#include "module.h"
+#include "bundle.h"
+
+celix_status_t deploymentPackage_setBundleInfos(deployment_package_t package);
+
+celix_status_t deploymentPackage_create(apr_pool_t *pool, BUNDLE_CONTEXT context, MANIFEST manifest, deployment_package_t *package) {
+ celix_status_t status = CELIX_SUCCESS;
+
+ *package = apr_palloc(pool, sizeof(**package));
+ if (!package) {
+ status = CELIX_ENOMEM;
+ } else {
+ (*package)->pool = pool;
+ (*package)->context = context;
+ (*package)->manifest = manifest;
+ (*package)->bundleInfos = NULL;
+ (*package)->nameToBundleInfo = hashMap_create(string_hash, NULL, string_equals, NULL);
+ status = arrayList_create(pool, &(*package)->bundleInfos);
+ if (status == CELIX_SUCCESS) {
+ status = deploymentPackage_setBundleInfos(*package);
+ if (status == CELIX_SUCCESS) {
+ int i;
+ for (i = 0; i < arrayList_size((*package)->bundleInfos); i++) {
+ bundle_info_t info = arrayList_get((*package)->bundleInfos, i);
+ hashMap_put((*package)->nameToBundleInfo, info->symbolicName, info);
+ }
+ }
+ }
+ }
+
+ return status;
+}
+
+celix_status_t deploymentPackage_getName(deployment_package_t package, char **name) {
+ *name = manifest_getValue(package->manifest, "DeploymentPackage-SymbolicName");
+ return CELIX_SUCCESS;
+}
+
+celix_status_t deploymentPackage_getBundleInfos(deployment_package_t package, ARRAY_LIST *infos) {
+ *infos = arrayList_clone(package->pool, package->bundleInfos);
+ return CELIX_SUCCESS;
+}
+
+celix_status_t deploymentPackage_getBundleInfoByName(deployment_package_t package, char *name, bundle_info_t *info) {
+ *info = hashMap_get(package->nameToBundleInfo, name);
+ return CELIX_SUCCESS;
+}
+
+celix_status_t deploymentPackage_getBundle(deployment_package_t package, char *name, BUNDLE *bundle) {
+ if (hashMap_containsKey(package->nameToBundleInfo, name)) {
+ ARRAY_LIST bundles = NULL;
+ bundleContext_getBundles(package->context, &bundles);
+ int i;
+ for (i = 0; i < arrayList_size(bundles); i++) {
+ BUNDLE ibundle = arrayList_get(bundles, i);
+ MODULE module = NULL;
+ bundle_getCurrentModule(ibundle, &module);
+ char *bsn = NULL;
+ module_getSymbolicName(module, &bsn);
+ if (strcmp(bsn, name) == 0) {
+ *bundle = ibundle;
+ break;
+ }
+ }
+ }
+
+ return CELIX_SUCCESS;
+}
+
+celix_status_t deploymentPackage_getVersion(deployment_package_t package, VERSION *version) {
+ char *versionStr = manifest_getValue(package->manifest, "DeploymentPackage-Version");
+ *version = version_createVersionFromString(versionStr);
+ return CELIX_SUCCESS;
+}
+
+celix_status_t deploymentPackage_setBundleInfos(deployment_package_t package) {
+ celix_status_t status = CELIX_SUCCESS;
+
+ HASH_MAP entries = NULL;
+ manifest_getEntries(package->manifest, &entries);
+ HASH_MAP_ITERATOR iter = hashMapIterator_create(entries);
+ while (hashMapIterator_hasNext(iter)) {
+ HASH_MAP_ENTRY entry = hashMapIterator_nextEntry(iter);
+ char *name = hashMapEntry_getKey(entry);
+ PROPERTIES values = hashMapEntry_getValue(entry);
+
+ bundle_info_t info = apr_palloc(package->pool, sizeof(*info));
+ info->path = name;
+ info->attributes = values;
+ info->symbolicName = properties_get(values, (char *) BUNDLE_SYMBOLICNAME);
+ char *version = properties_get(values, (char *) BUNDLE_VERSION);
+ info->version = version_createVersionFromString(version);
+
+ arrayList_add(package->bundleInfos, info);
+ }
+
+ return status;
+}
+
+
Added: incubator/celix/trunk/deployment_admin/private/src/ioapi.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/deployment_admin/private/src/ioapi.c?rev=1203167&view=auto
==============================================================================
--- incubator/celix/trunk/deployment_admin/private/src/ioapi.c (added)
+++ incubator/celix/trunk/deployment_admin/private/src/ioapi.c Thu Nov 17 12:36:14 2011
@@ -0,0 +1,235 @@
+/* ioapi.h -- IO base function header for compress/uncompress .zip
+ part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html )
+
+ Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html )
+
+ Modifications for Zip64 support
+ Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com )
+
+ For more info read MiniZip_info.txt
+
+*/
+
+#if (defined(_WIN32))
+ #define _CRT_SECURE_NO_WARNINGS
+#endif
+
+#include "ioapi.h"
+
+voidpf call_zopen64 (const zlib_filefunc64_32_def* pfilefunc,const void*filename,int mode)
+{
+ if (pfilefunc->zfile_func64.zopen64_file != NULL)
+ return (*(pfilefunc->zfile_func64.zopen64_file)) (pfilefunc->zfile_func64.opaque,filename,mode);
+ else
+ {
+ return (*(pfilefunc->zopen32_file))(pfilefunc->zfile_func64.opaque,(const char*)filename,mode);
+ }
+}
+
+long call_zseek64 (const zlib_filefunc64_32_def* pfilefunc,voidpf filestream, ZPOS64_T offset, int origin)
+{
+ if (pfilefunc->zfile_func64.zseek64_file != NULL)
+ return (*(pfilefunc->zfile_func64.zseek64_file)) (pfilefunc->zfile_func64.opaque,filestream,offset,origin);
+ else
+ {
+ uLong offsetTruncated = (uLong)offset;
+ if (offsetTruncated != offset)
+ return -1;
+ else
+ return (*(pfilefunc->zseek32_file))(pfilefunc->zfile_func64.opaque,filestream,offsetTruncated,origin);
+ }
+}
+
+ZPOS64_T call_ztell64 (const zlib_filefunc64_32_def* pfilefunc,voidpf filestream)
+{
+ if (pfilefunc->zfile_func64.zseek64_file != NULL)
+ return (*(pfilefunc->zfile_func64.ztell64_file)) (pfilefunc->zfile_func64.opaque,filestream);
+ else
+ {
+ uLong tell_uLong = (*(pfilefunc->ztell32_file))(pfilefunc->zfile_func64.opaque,filestream);
+ if ((tell_uLong) == ((uLong)-1))
+ return (ZPOS64_T)-1;
+ else
+ return tell_uLong;
+ }
+}
+
+void fill_zlib_filefunc64_32_def_from_filefunc32(zlib_filefunc64_32_def* p_filefunc64_32,const zlib_filefunc_def* p_filefunc32)
+{
+ p_filefunc64_32->zfile_func64.zopen64_file = NULL;
+ p_filefunc64_32->zopen32_file = p_filefunc32->zopen_file;
+ p_filefunc64_32->zfile_func64.zerror_file = p_filefunc32->zerror_file;
+ p_filefunc64_32->zfile_func64.zread_file = p_filefunc32->zread_file;
+ p_filefunc64_32->zfile_func64.zwrite_file = p_filefunc32->zwrite_file;
+ p_filefunc64_32->zfile_func64.ztell64_file = NULL;
+ p_filefunc64_32->zfile_func64.zseek64_file = NULL;
+ p_filefunc64_32->zfile_func64.zclose_file = p_filefunc32->zclose_file;
+ p_filefunc64_32->zfile_func64.zerror_file = p_filefunc32->zerror_file;
+ p_filefunc64_32->zfile_func64.opaque = p_filefunc32->opaque;
+ p_filefunc64_32->zseek32_file = p_filefunc32->zseek_file;
+ p_filefunc64_32->ztell32_file = p_filefunc32->ztell_file;
+}
+
+
+
+static voidpf ZCALLBACK fopen_file_func OF((voidpf opaque, const char* filename, int mode));
+static uLong ZCALLBACK fread_file_func OF((voidpf opaque, voidpf stream, void* buf, uLong size));
+static uLong ZCALLBACK fwrite_file_func OF((voidpf opaque, voidpf stream, const void* buf,uLong size));
+static ZPOS64_T ZCALLBACK ftell64_file_func OF((voidpf opaque, voidpf stream));
+static long ZCALLBACK fseek64_file_func OF((voidpf opaque, voidpf stream, ZPOS64_T offset, int origin));
+static int ZCALLBACK fclose_file_func OF((voidpf opaque, voidpf stream));
+static int ZCALLBACK ferror_file_func OF((voidpf opaque, voidpf stream));
+
+static voidpf ZCALLBACK fopen_file_func (voidpf opaque, const char* filename, int mode)
+{
+ FILE* file = NULL;
+ const char* mode_fopen = NULL;
+ if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER)==ZLIB_FILEFUNC_MODE_READ)
+ mode_fopen = "rb";
+ else
+ if (mode & ZLIB_FILEFUNC_MODE_EXISTING)
+ mode_fopen = "r+b";
+ else
+ if (mode & ZLIB_FILEFUNC_MODE_CREATE)
+ mode_fopen = "wb";
+
+ if ((filename!=NULL) && (mode_fopen != NULL))
+ file = fopen(filename, mode_fopen);
+ return file;
+}
+
+static voidpf ZCALLBACK fopen64_file_func (voidpf opaque, const void* filename, int mode)
+{
+ FILE* file = NULL;
+ const char* mode_fopen = NULL;
+ if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER)==ZLIB_FILEFUNC_MODE_READ)
+ mode_fopen = "rb";
+ else
+ if (mode & ZLIB_FILEFUNC_MODE_EXISTING)
+ mode_fopen = "r+b";
+ else
+ if (mode & ZLIB_FILEFUNC_MODE_CREATE)
+ mode_fopen = "wb";
+
+ if ((filename!=NULL) && (mode_fopen != NULL))
+ file = fopen64((const char*)filename, mode_fopen);
+ return file;
+}
+
+
+static uLong ZCALLBACK fread_file_func (voidpf opaque, voidpf stream, void* buf, uLong size)
+{
+ uLong ret;
+ ret = (uLong)fread(buf, 1, (size_t)size, (FILE *)stream);
+ return ret;
+}
+
+static uLong ZCALLBACK fwrite_file_func (voidpf opaque, voidpf stream, const void* buf, uLong size)
+{
+ uLong ret;
+ ret = (uLong)fwrite(buf, 1, (size_t)size, (FILE *)stream);
+ return ret;
+}
+
+static long ZCALLBACK ftell_file_func (voidpf opaque, voidpf stream)
+{
+ long ret;
+ ret = ftell((FILE *)stream);
+ return ret;
+}
+
+
+static ZPOS64_T ZCALLBACK ftell64_file_func (voidpf opaque, voidpf stream)
+{
+ ZPOS64_T ret;
+ ret = ftello64((FILE *)stream);
+ return ret;
+}
+
+static long ZCALLBACK fseek_file_func (voidpf opaque, voidpf stream, uLong offset, int origin)
+{
+ int fseek_origin=0;
+ long ret;
+ switch (origin)
+ {
+ case ZLIB_FILEFUNC_SEEK_CUR :
+ fseek_origin = SEEK_CUR;
+ break;
+ case ZLIB_FILEFUNC_SEEK_END :
+ fseek_origin = SEEK_END;
+ break;
+ case ZLIB_FILEFUNC_SEEK_SET :
+ fseek_origin = SEEK_SET;
+ break;
+ default: return -1;
+ }
+ ret = 0;
+ if (fseek((FILE *)stream, offset, fseek_origin) != 0)
+ ret = -1;
+ return ret;
+}
+
+static long ZCALLBACK fseek64_file_func (voidpf opaque, voidpf stream, ZPOS64_T offset, int origin)
+{
+ int fseek_origin=0;
+ long ret;
+ switch (origin)
+ {
+ case ZLIB_FILEFUNC_SEEK_CUR :
+ fseek_origin = SEEK_CUR;
+ break;
+ case ZLIB_FILEFUNC_SEEK_END :
+ fseek_origin = SEEK_END;
+ break;
+ case ZLIB_FILEFUNC_SEEK_SET :
+ fseek_origin = SEEK_SET;
+ break;
+ default: return -1;
+ }
+ ret = 0;
+
+ if(fseeko64((FILE *)stream, offset, fseek_origin) != 0)
+ ret = -1;
+
+ return ret;
+}
+
+
+static int ZCALLBACK fclose_file_func (voidpf opaque, voidpf stream)
+{
+ int ret;
+ ret = fclose((FILE *)stream);
+ return ret;
+}
+
+static int ZCALLBACK ferror_file_func (voidpf opaque, voidpf stream)
+{
+ int ret;
+ ret = ferror((FILE *)stream);
+ return ret;
+}
+
+void fill_fopen_filefunc (pzlib_filefunc_def)
+ zlib_filefunc_def* pzlib_filefunc_def;
+{
+ pzlib_filefunc_def->zopen_file = fopen_file_func;
+ pzlib_filefunc_def->zread_file = fread_file_func;
+ pzlib_filefunc_def->zwrite_file = fwrite_file_func;
+ pzlib_filefunc_def->ztell_file = ftell_file_func;
+ pzlib_filefunc_def->zseek_file = fseek_file_func;
+ pzlib_filefunc_def->zclose_file = fclose_file_func;
+ pzlib_filefunc_def->zerror_file = ferror_file_func;
+ pzlib_filefunc_def->opaque = NULL;
+}
+
+void fill_fopen64_filefunc (zlib_filefunc64_def* pzlib_filefunc_def)
+{
+ pzlib_filefunc_def->zopen64_file = fopen64_file_func;
+ pzlib_filefunc_def->zread_file = fread_file_func;
+ pzlib_filefunc_def->zwrite_file = fwrite_file_func;
+ pzlib_filefunc_def->ztell64_file = ftell64_file_func;
+ pzlib_filefunc_def->zseek64_file = fseek64_file_func;
+ pzlib_filefunc_def->zclose_file = fclose_file_func;
+ pzlib_filefunc_def->zerror_file = ferror_file_func;
+ pzlib_filefunc_def->opaque = NULL;
+}