incubator-celix-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From abroekh...@apache.org
Subject 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...
Date Thu, 17 Nov 2011 12:36:17 GMT
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="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&lt;contentList&gt;&lt;content id=&quot;userData-bundleActivator_stop-(cast)&quot; val=&quot;DEPENDENCY_ACTIVATOR_BASE&quot;/&gt;&lt;content id=&quot;*table-table-exportedServices-admin-activator-bundleActivator_stop-(cast_to_array)&quot; val=&quot;0:1&quot;/&gt;&lt;content id=&quot;componentData-bundleActivator_create-(cast)&quot; val=&quot;log_writer_t&quot;/&gt;&lt;content id=&quot;key-hashMapIterator_remove-(cast)&quot; val=&quot;char *&quot;/&gt;&lt;content id=&quot;userData-userData-fw_startBundle-(cast)&quot; val=&quot;log_writer_t&quot;/&gt;&lt;content id=&quot;*userData-userData-bundleActivator_create-(cast)&quot; val=&quot;DEPENDENCY_ACTIVATOR_BASE&quot;/&gt;&lt;content id=&quot;userData-*userData-userData-bundleActivator_create-(cast)&quot; val=&quot;log_writer_t&quot;/&gt;&lt;content id=&quot;userData-data-bundleAct
 ivator_start-(cast)&quot; val=&quot;log_writer_t&quot;/&gt;&lt;content id=&quot;userData-fw_startBundle-(cast)&quot; val=&quot;DEPENDENCY_ACTIVATOR_BASE&quot;/&gt;&lt;content id=&quot;userData-userData-bundleActivator_stop-(cast)&quot; val=&quot;log_writer_t&quot;/&gt;&lt;/contentList&gt;"/>
+<stringAttribute key="org.eclipse.cdt.launch.FORMAT" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&lt;contentList&gt;&lt;content id=&quot;*table-table-exportedServices-admin-activator-bundleActivator_stop-(cast_to_array)&quot; val=&quot;0:1&quot;/&gt;&lt;content id=&quot;componentData-bundleActivator_create-(cast)&quot; val=&quot;log_writer_t&quot;/&gt;&lt;content id=&quot;key-hashMapIterator_remove-(cast)&quot; val=&quot;char *&quot;/&gt;&lt;content id=&quot;userData-userData-fw_startBundle-(cast)&quot; val=&quot;log_writer_t&quot;/&gt;&lt;content id=&quot;*userData-userData-bundleActivator_create-(cast)&quot; val=&quot;DEPENDENCY_ACTIVATOR_BASE&quot;/&gt;&lt;content id=&quot;userData-*userData-userData-bundleActivator_create-(cast)&quot; val=&quot;log_writer_t&quot;/&gt;&lt;content id=&quot;userData-data-bundleActivator_start-(cast)&quot; val=&quot;log_writer_t&quot;/&gt;&lt;content id=&quot;userData-userData-bundleActiva
 tor_stop-(cast)&quot; val=&quot;log_writer_t&quot;/&gt;&lt;content id=&quot;userData-fw_startBundle-(cast)&quot; val=&quot;DEPENDENCY_ACTIVATOR_BASE&quot;/&gt;&lt;content id=&quot;userData-bundleActivator_stop-(cast)&quot; val=&quot;DEPENDENCY_ACTIVATOR_BASE&quot;/&gt;&lt;/contentList&gt;"/>
 <stringAttribute key="org.eclipse.cdt.launch.GLOBAL_VARIABLES" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;globalVariableList/&gt;&#10;"/>
 <stringAttribute key="org.eclipse.cdt.launch.MEMORY_BLOCKS" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;memoryBlockExpressionList/&gt;&#10;"/>
 <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="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&lt;contentList&gt;&lt;content id=&quot;userData-bundleActivator_stop-(cast)&quot; val=&quot;DEPENDENCY_ACTIVATOR_BASE&quot;/&gt;&lt;content id=&quot;*table-table-exportedServices-admin-activator-bundleActivator_stop-(cast_to_array)&quot; val=&quot;0:1&quot;/&gt;&lt;content id=&quot;componentData-bundleActivator_create-(cast)&quot; val=&quot;log_writer_t&quot;/&gt;&lt;content id=&quot;key-hashMapIterator_remove-(cast)&quot; val=&quot;char *&quot;/&gt;&lt;content id=&quot;userData-userData-fw_startBundle-(cast)&quot; val=&quot;log_writer_t&quot;/&gt;&lt;content id=&quot;*userData-userData-bundleActivator_create-(cast)&quot; val=&quot;DEPENDENCY_ACTIVATOR_BASE&quot;/&gt;&lt;content id=&quot;userData-*userData-userData-bundleActivator_create-(cast)&quot; val=&quot;log_writer_t&quot;/&gt;&lt;content id=&quot;userData-data-bundleAct
 ivator_start-(cast)&quot; val=&quot;log_writer_t&quot;/&gt;&lt;content id=&quot;userData-fw_startBundle-(cast)&quot; val=&quot;DEPENDENCY_ACTIVATOR_BASE&quot;/&gt;&lt;content id=&quot;userData-userData-bundleActivator_stop-(cast)&quot; val=&quot;log_writer_t&quot;/&gt;&lt;/contentList&gt;"/>
+<stringAttribute key="org.eclipse.cdt.launch.FORMAT" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&lt;contentList&gt;&lt;content id=&quot;userData-userData-bundleActivator_stop-(cast)&quot; val=&quot;log_writer_t&quot;/&gt;&lt;content id=&quot;userData-fw_startBundle-(cast)&quot; val=&quot;DEPENDENCY_ACTIVATOR_BASE&quot;/&gt;&lt;content id=&quot;userData-data-bundleActivator_start-(cast)&quot; val=&quot;log_writer_t&quot;/&gt;&lt;content id=&quot;userData-*userData-userData-bundleActivator_create-(cast)&quot; val=&quot;log_writer_t&quot;/&gt;&lt;content id=&quot;*userData-userData-bundleActivator_create-(cast)&quot; val=&quot;DEPENDENCY_ACTIVATOR_BASE&quot;/&gt;&lt;content id=&quot;userData-userData-fw_startBundle-(cast)&quot; val=&quot;log_writer_t&quot;/&gt;&lt;content id=&quot;key-hashMapIterator_remove-(cast)&quot; val=&quot;char *&quot;/&gt;&lt;content id=&quot;componentData-bundleActivator_create-(cast)&quot; val=&quo
 t;log_writer_t&quot;/&gt;&lt;content id=&quot;*table-table-exportedServices-admin-activator-bundleActivator_stop-(cast_to_array)&quot; val=&quot;0:1&quot;/&gt;&lt;content id=&quot;userData-bundleActivator_stop-(cast)&quot; val=&quot;DEPENDENCY_ACTIVATOR_BASE&quot;/&gt;&lt;/contentList&gt;"/>
 <stringAttribute key="org.eclipse.cdt.launch.GLOBAL_VARIABLES" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;globalVariableList/&gt;&#10;"/>
 <stringAttribute key="org.eclipse.cdt.launch.MEMORY_BLOCKS" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;memoryBlockExpressionList/&gt;&#10;"/>
 <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;
+}



Mime
View raw message