You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@celix.apache.org by pn...@apache.org on 2016/10/16 12:47:05 UTC

[5/8] celix git commit: CELIX-282: Removes superfluous examples.

http://git-wip-us.apache.org/repos/asf/celix/blob/505f6a84/examples/osgi-in-action/chapter04-paint-example/paint/private/src/activator.c
----------------------------------------------------------------------
diff --git a/examples/osgi-in-action/chapter04-paint-example/paint/private/src/activator.c b/examples/osgi-in-action/chapter04-paint-example/paint/private/src/activator.c
deleted file mode 100644
index f82b572..0000000
--- a/examples/osgi-in-action/chapter04-paint-example/paint/private/src/activator.c
+++ /dev/null
@@ -1,139 +0,0 @@
-/**
- *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.
- */
-/*
- * activator.c
- *
- *  \date       Aug 22, 2011
- *  \author    	<a href="mailto:dev@celix.apache.org">Apache Celix Project Team</a>
- *  \copyright	Apache License, Version 2.0
- */
-#include <stdlib.h>
-#include <stdio.h>
-#include <apr_general.h>
-#include <glib.h>
-#include <gtk/gtk.h>
-#include <gdk/gdk.h>
-
-#include "bundle_activator.h"
-#include "bundle_context.h"
-#include "simple_shape.h"
-#include "paint_frame.h"
-#include "service_tracker.h"
-#include "service_reference.h"
-#include "service_registration.h"
-
-struct paintFrameActivatorData {
-	service_registration_pt reg;
-	apr_pool_t *pool;
-	service_tracker_pt tracker;
-	bundle_context_pt context;
-	paint_frame_pt paint_frame;
-};
-celix_status_t addingServ(void * handle, service_reference_pt ref, void **service);
-celix_status_t addedServ(void * handle, service_reference_pt reference, void * service);
-celix_status_t modifiedServ(void * handle, service_reference_pt reference, void * service);
-celix_status_t removedServ(void * handle, service_reference_pt reference, void * service);
-
-typedef struct paintFrameActivatorData *greeting_activator_pt;
-
-celix_status_t bundleActivator_create(bundle_context_pt context, void **userData) {
-	celix_status_t status = CELIX_SUCCESS;
-	apr_pool_t *pool;
-	greeting_activator_pt activator;
-	service_tracker_customizer_pt cust = NULL;
-	printf("Paint_frame create\n");
-	status = bundleContext_getMemoryPool(context, &pool);
-	if (status == CELIX_SUCCESS) {
-		*userData = apr_palloc(pool, sizeof(struct paintFrameActivatorData));
-		activator = *userData;
-		activator->reg = NULL;
-		activator->pool = pool;
-		activator->context = context;
-		activator->paint_frame = NULL;
-		activator->tracker = NULL;
-		status = paintFrame_create(context, pool, &activator->paint_frame);
-
-		serviceTrackerCustomizer_create(pool, activator, addingServ,
-				addedServ, modifiedServ, removedServ, &cust);
-
-        serviceTracker_create(pool, context, SIMPLE_SHAPE_SERVICE_NAME, cust, &activator->tracker);
-		serviceTracker_open(activator->tracker);
-
-	}
-	return status;
-}
-
-celix_status_t bundleActivator_start(void * userData, bundle_context_pt ctx) {
-	struct paintFrameActivatorData * act = (struct paintFrameActivatorData *) userData;
-	celix_status_t status = CELIX_SUCCESS;
-	return status;
-}
-
-celix_status_t bundleActivator_stop(void * userData, bundle_context_pt context) {
-	struct paintFrameActivatorData * act = (struct paintFrameActivatorData *) userData;
-	serviceTracker_close(act->tracker);
-	paintFrame_exit(act->paint_frame);
-	return CELIX_SUCCESS;
-}
-
-celix_status_t bundleActivator_destroy(void * userData, bundle_context_pt context) {
-	struct paintFrameActivatorData * act = (struct paintFrameActivatorData *) userData;
-	return CELIX_SUCCESS;
-}
-
-celix_status_t addingServ(void * handle, service_reference_pt ref, void **service) {
-	struct paintFrameActivatorData * data = (struct paintFrameActivatorData *) handle;
-    bundleContext_getService(data->context, ref, service);
-    return CELIX_SUCCESS;
-}
-
-celix_status_t addedServ(void * handle, service_reference_pt ref, void * service) {
-	struct paintFrameActivatorData * data = (struct paintFrameActivatorData *) handle;
-	service_registration_pt reg = NULL;
-	properties_pt props = NULL;
-	char * serviceName = NULL;
-	serviceReference_getServiceRegistration(ref, &reg);
-	serviceRegistration_getProperties(reg, &props);
-	serviceName = properties_get(props, "name");
-	paintFrame_addShape(data->paint_frame, data->context, service);
-	return CELIX_SUCCESS;
- }
-
-celix_status_t modifiedServ(void * handle, service_reference_pt ref, void * service) {
-	struct paintFrameActivatorData * data = (struct paintFrameActivatorData *) handle;
-	service_registration_pt reg = NULL;
-	properties_pt props = NULL;
-	char * serviceName = NULL;
-	serviceReference_getServiceRegistration(ref, &reg);
-	serviceRegistration_getProperties(reg, &props);
-	serviceName = properties_get(props, "name");
-	return CELIX_SUCCESS;
-}
-
-celix_status_t removedServ(void * handle, service_reference_pt ref, void * service) {
-	struct paintFrameActivatorData * data = (struct paintFrameActivatorData *) handle;
-	service_registration_pt reg = NULL;
-	properties_pt props = NULL;
-	char * serviceName = NULL;
-	serviceReference_getServiceRegistration(ref, &reg);
-	serviceRegistration_getProperties(reg, &props);
-	serviceName = properties_get(props, "name");
-	paintFrame_removeShape(data->paint_frame, service);
-	return CELIX_SUCCESS;
-}

http://git-wip-us.apache.org/repos/asf/celix/blob/505f6a84/examples/osgi-in-action/chapter04-paint-example/paint/private/src/default_shape.c
----------------------------------------------------------------------
diff --git a/examples/osgi-in-action/chapter04-paint-example/paint/private/src/default_shape.c b/examples/osgi-in-action/chapter04-paint-example/paint/private/src/default_shape.c
deleted file mode 100644
index e3d45b5..0000000
--- a/examples/osgi-in-action/chapter04-paint-example/paint/private/src/default_shape.c
+++ /dev/null
@@ -1,96 +0,0 @@
-/**
- *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.
- */
-/*
- * default_shape.c
- *
- *  \date       Aug 22, 2011
- *  \author    	<a href="mailto:dev@celix.apache.org">Apache Celix Project Team</a>
- *  \copyright	Apache License, Version 2.0
- */
-
-
-#include <stdio.h>
-#include <string.h>
-#include <celixbool.h>
-#include <stdlib.h>
-#include <glib.h>
-#include <gtk/gtk.h>
-#include <gdk/gdk.h>
-#include "bundle_context.h"
-#include "bundle.h"
-#include "hash_map.h"
-#include "simple_shape.h"
-#include "default_shape.h"
-#define DEFAULT_FILE "underc.png"
-
-void defaultShape_draw(simple_shape_pt shape, GdkPixmap *pixMap, GtkWidget *widget, gdouble x, gdouble y);
-
-simple_shape_pt defaultShape_create(bundle_context_pt context) {
-	celix_status_t status = CELIX_SUCCESS;
-	bundle_pt bundle;
-	apr_pool_t *pool;
-	simple_shape_pt shape = (simple_shape_pt) malloc(sizeof(*shape));
-	bundleContext_getBundle(context, &bundle);
-	bundleContext_getMemoryPool(context, &pool);
-	shape->icon_path = NULL;
-	status = bundle_getEntry(bundle, DEFAULT_FILE, pool, &shape->icon_path);
-	shape->simpleShape_draw = defaultShape_draw;
-	if (status == CELIX_SUCCESS){
-		// no error
-	} else {
-		printf("Could not find resource %s\n", DEFAULT_FILE);
-	}
-	return shape;
-}
-
-void defaultShape_draw(simple_shape_pt shape, GdkPixmap *pixMap, GtkWidget *widget, gdouble x, gdouble y){
-	GdkRectangle update_rect;
-	GdkPixbuf *curr_pix_buf;
-	GError *gerror = NULL;
-	gsize rd = 0, wr = 0;
-	if (shape->icon_path == NULL) {
-		printf("error message: icon path unknown\n");
-	} else {
-		gchar *gfn = g_locale_to_utf8(shape->icon_path, strlen(shape->icon_path), &rd, &wr, &gerror);
-		curr_pix_buf = gdk_pixbuf_new_from_file(gfn, &gerror);
-		if(!curr_pix_buf) {
-			g_printerr("error message: %s\n", (gchar *) gerror->message);
-		}
-		update_rect.x = x - 5;
-		update_rect.y = y - 5;
-		update_rect.width = gdk_pixbuf_get_width(curr_pix_buf);
-		update_rect.height = gdk_pixbuf_get_height(curr_pix_buf);
-		gdk_pixbuf_render_to_drawable(
-				curr_pix_buf,
-				pixMap,
-				gtk_widget_get_style(widget)->fg_gc[gtk_widget_get_state(widget)],
-				0, 0,
-				update_rect.x, update_rect.y,
-				update_rect.width,
-				update_rect.height,
-				GDK_RGB_DITHER_NONE,
-				0, 0);
-		gtk_widget_queue_draw_area (widget,
-				update_rect.x, update_rect.y,
-				update_rect.width, update_rect.height);
-	}
-}
-
-
-

http://git-wip-us.apache.org/repos/asf/celix/blob/505f6a84/examples/osgi-in-action/chapter04-paint-example/paint/private/src/paint_frame.c
----------------------------------------------------------------------
diff --git a/examples/osgi-in-action/chapter04-paint-example/paint/private/src/paint_frame.c b/examples/osgi-in-action/chapter04-paint-example/paint/private/src/paint_frame.c
deleted file mode 100644
index 1c56311..0000000
--- a/examples/osgi-in-action/chapter04-paint-example/paint/private/src/paint_frame.c
+++ /dev/null
@@ -1,363 +0,0 @@
-/**
- *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.
- */
-/*
- * paint_frame.c
- *
- *  \date       Aug 22, 2011
- *  \author    	<a href="mailto:dev@celix.apache.org">Apache Celix Project Team</a>
- *  \copyright	Apache License, Version 2.0
- */
-
-
-/*
- * This class represents the main application class, which is a JFrame subclass
- * that manages a toolbar of shapes and a drawing canvas. This class does not
- * directly interact with the underlying OSGi framework; instead, it is injected
- * with the available <tt>SimpleShape</tt> instances to eliminate any
- * dependencies on the OSGi application programming interfaces.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <gtk/gtk.h>
-#include <string.h>
-#include <celixbool.h>
-#include <glib.h>
-#include <gdk/gdk.h>
-#include "bundle_context.h"
-#include "bundle.h"
-#include "utils.h"
-#include "hash_map.h"
-#include "simple_shape.h"
-#include "linked_list_iterator.h"
-#include "linked_list.h"
-#include "paint_frame.h"
-#include "shape_component.h"
-#include "default_shape.h"
-#include "celix_errno.h"
-
-static paint_frame_pt this = NULL;
-
-struct shape_info {
-	char *name;
-	simple_shape_pt shape;
-	GtkWidget *button;
-};
-
-typedef struct shape_info *shape_info_pt;
-static celix_status_t paintFrame_redraw(paint_frame_pt frame, GdkModifierType state);
-static celix_status_t paintFrame_show(paint_frame_pt frame);
-static void paintFrame_destroy(GtkWidget *widget, gpointer data);
-static void paintFrame_expose(GtkWidget *widget, GdkEventExpose *event, gpointer data);
-static void paintFrame_configure(GtkWidget *widget, GdkEventConfigure *event, gpointer data);
-static void paintFrame_buttonClicked(GtkWidget *button, gpointer data);
-static gboolean paintFrame_mousePressed( GtkWidget *widget, GdkEventButton *event, gpointer data);
-static gpointer paintFrame_gtkmain(gpointer a_data);
-static void paintFrame_destroyWidgets(paint_frame_pt frame);
-
-/**
- * Default constructor that populates the main window.
- **/
-celix_status_t paintFrame_create(bundle_context_pt context, apr_pool_t *pool, paint_frame_pt *frame) {
-	celix_status_t status = CELIX_SUCCESS;
-	apr_pool_t *mypool = NULL;
-	apr_pool_create(&mypool, pool);
-	this = malloc(sizeof(*this));
-	if (!this) {
-		this = NULL;
-		status = CELIX_ENOMEM;
-	} else {
-		char *builderFile;
-		bundle_pt bundle;
-		GError *error = NULL;
-		*frame = this;
-		
-
-		(*frame)->showing = false;
-		(*frame)->pool = mypool;
-		(*frame)->pixMap = NULL;
-		(*frame)->m_selected = NULL;
-		(*frame)->context = context;
-		(*frame)->m_shapes = hashMap_create(utils_stringHash, NULL, utils_stringEquals, NULL);
-		(*frame)->m_defaultShape = defaultShape_create((*frame)->context);
-		linkedList_create((*frame)->pool, &(*frame)->m_shapeComponents);
-
-
-		status = bundleContext_getBundle(context, &bundle);
-		if (status == CELIX_SUCCESS) {
-			status = bundle_getEntry(bundle, "gtktest.glade", mypool, &builderFile);
-			if (status == CELIX_SUCCESS) {
-				(*frame)->file = builderFile;
-
-				gdk_threads_init();
-				gtk_init(NULL, NULL);
-
-				if( g_thread_supported()) {
-					// (*frame)->main = g_thread_new("main", paintFrame_gtkmain, (*frame));
-					(*frame)->main = g_thread_create(paintFrame_gtkmain, (*frame), TRUE, &error);
-					if ((*frame)->main == NULL){
-						g_printerr ("Failed to create thread: %s\n", error->message);
-						status = CELIX_BUNDLE_EXCEPTION;
-					}
-				} else {
-					g_printerr("g_thread NOT supported\n");
-				}
-			}
-		}
-	}
-
-	return status;
-}
-
-celix_status_t paintFrame_exit(paint_frame_pt frame) {
-	frame->showing = false;
-
-	paintFrame_destroyWidgets(frame);
-
-	gdk_threads_enter();
-
-	gtk_main_quit();
-
-	gdk_threads_leave();
-
-	g_thread_join(frame->main);
-
-	return CELIX_SUCCESS;
-}
-
-static celix_status_t shapeInfo_create(paint_frame_pt frame, char* name, GtkWidget *button, simple_shape_pt shape, shape_info_pt *info){
-	*info = malloc(sizeof(**info));
-	(*info)->shape = shape;
-	(*info)->name = name;
-	(*info)->button = button;
-	return CELIX_SUCCESS;
-}
-static celix_status_t paintFrame_show(paint_frame_pt frame) {
-	gtk_widget_show(frame->drawingArea);
-	gtk_widget_show(frame->toolbar);
-	gtk_widget_show(frame->window);
-
-	return CELIX_SUCCESS;
-}
-
-/**
- * Injects an available <tt>SimpleShape</tt> into the drawing frame.
- *
- * @param name The name of the injected <tt>SimpleShape</tt>.
- * @param icon The icon associated with the injected <tt>SimpleShape</tt>.
- * @param shape The injected <tt>SimpleShape</tt> instance.
- **/
-celix_status_t paintFrame_addShape(paint_frame_pt frame, bundle_context_pt context, simple_shape_pt shape) {
-	celix_status_t status = CELIX_SUCCESS;
-	GError *gerror = NULL;
-	GtkWidget *button = NULL;
-	GtkWidget *im = NULL;
-
-	gdk_threads_enter();
-	
-	button = gtk_button_new();
-	gtk_widget_set_name((GtkWidget *) button, shape->name);
-	im = gtk_image_new_from_file(shape->icon_path);
-	gtk_button_set_image((GtkButton *) button, im);
-	gtk_toolbar_append_widget((GtkToolbar *) frame->toolbar, (GtkWidget *) button, "", "");
-	g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (paintFrame_buttonClicked), frame);
-	gtk_widget_show(button);
-	if (hashMap_get(frame->m_shapes, shape->name) == NULL) {
-		shape_info_pt info = NULL;
-		shapeInfo_create(frame, shape->name, button, shape, &info);
-		hashMap_put(frame->m_shapes, shape->name, info);
-	}
-	paintFrame_redraw(frame, 0);
-	paintFrame_show(frame);
-	gdk_threads_leave();
-
-	return status;
-}
-
-/**
- * Removes a no longer available <tt>SimpleShape</tt> from the drawing frame.
- *
- * @param name The name of the <tt>SimpleShape</tt> to remove.
- **/
-celix_status_t paintFrame_removeShape(paint_frame_pt frame, simple_shape_pt sshape) {
-	celix_status_t status = CELIX_SUCCESS;
-	shape_info_pt shape = NULL;
-	gdk_threads_enter();
-	shape = (shape_info_pt) hashMap_remove(this->m_shapes, sshape->name);
-	if (shape != NULL) {
-		this->m_selected = NULL;
-		gtk_widget_destroy(GTK_WIDGET(shape->button));
-		gtk_widget_show_all(this->toolbar);
-		paintFrame_redraw(this, 0);
-		paintFrame_show(this);
-	}
-	gdk_threads_leave();
-
-	return status;
-}
-
-/**
- * Retrieves the available <tt>SimpleShape</tt> associated with the given
- * name.
- *
- * @param name The name of the <tt>SimpleShape</tt> to retrieve.
- * @return The corresponding <tt>SimpleShape</tt> instance if available or
- *         <tt>null</tt>.
- **/
-simple_shape_pt paintFrame_getShape(paint_frame_pt frame, char *name) {
-	shape_info_pt info = (shape_info_pt) hashMap_get(frame->m_shapes, name);
-	if (info == NULL) {
-		return frame->m_defaultShape;
-	} else {
-		return info->shape;
-	}
-}
-
-static void paintFrame_destroy(GtkWidget *widget, gpointer data) {
-	paint_frame_pt frame = data;
-	bundle_pt bundle = NULL;
-
-	frame->showing = false;
-
-//	bundleContext_getBundleById(frame->context, 0, &bundle);
-//	bundle_stop(bundle, 0);
-}
-
-static void paintFrame_destroyWidgets(paint_frame_pt frame) {
-	gdk_threads_enter();
-
-	if (frame->pixMap != NULL) {
-		gdk_pixmap_unref(frame->pixMap);
-	}
-	if (frame->toolbar != NULL) {
-		gtk_widget_destroy(frame->toolbar);
-	}
-	if (frame->drawingArea != NULL) {
-		gtk_widget_destroy(frame->drawingArea);
-	}
-	if (frame->window != NULL) {
-		gtk_widget_destroy(frame->window);
-	}
-
-	frame->pixMap = NULL;
-	frame->toolbar = NULL;
-	frame->window = NULL;
-	frame->drawingArea = NULL;
-
-	gdk_threads_leave();
-}
-
-static void paintFrame_configure(GtkWidget *widget, GdkEventConfigure *event, gpointer data) {
-	paint_frame_pt frame = data;
-	GtkAllocation allocation;
-
-	if (frame->pixMap != NULL) {
-		gdk_pixmap_unref(frame->pixMap);
-	}
-
-	gtk_widget_get_allocation(widget, &allocation);
-	frame->pixMap = gdk_pixmap_new(gtk_widget_get_window(widget), allocation.width, allocation.height, -1);
-	paintFrame_redraw(frame, 0);
-}
-
-static void paintFrame_expose(GtkWidget *widget, GdkEventExpose *event, gpointer data) {
-	paint_frame_pt frame = data;
-	gdk_draw_pixmap(gtk_widget_get_window(widget),
-			gtk_widget_get_style(widget)->fg_gc[gtk_widget_get_state(widget)],
-			frame->pixMap, event->area.x, event->area.y, event->area.x,
-			event->area.y, event->area.width, event->area.height);
-}
-
-static void paintFrame_buttonClicked(GtkWidget *button, gpointer data) {
-	paint_frame_pt frame = data;
-	frame->m_selected = (char *) gtk_widget_get_name(button);
-}
-
-static gboolean paintFrame_mousePressed( GtkWidget *widget, GdkEventButton *event, gpointer data) {
-	paint_frame_pt frame = data;
-	if (event->button == 1 && frame->pixMap != NULL) {
-		if (frame->m_selected == NULL){
-			printf("no button selected yet\n");
-		} else {
-			shape_component_pt sc = shapeComponent_create(frame, paintFrame_getShape(frame, frame->m_selected), event->x, event->y);
-			linkedList_addFirst(frame->m_shapeComponents, sc);
-			(*sc->shapeComponent_paintComponent)(sc, frame, frame->pixMap, widget);
-		}
-	}
-	return TRUE;
-}
-
-static celix_status_t paintFrame_redraw(paint_frame_pt frame, GdkModifierType state) {
-	if (frame->pixMap != NULL && frame->showing) {
-		GdkRectangle update_rect;
-		GtkAllocation allocation;
-		linked_list_iterator_pt it = NULL;
-
-		update_rect.x = 0;
-		update_rect.y = 0;
-		gtk_widget_get_allocation(frame->drawingArea, &allocation);
-		update_rect.width = allocation.width;
-		update_rect.height = allocation.height;
-		gdk_draw_rectangle (this->pixMap,
-				gtk_widget_get_style(frame->drawingArea)->white_gc,
-				TRUE,
-				update_rect.x, update_rect.y,
-				update_rect.width, update_rect.height);
-		gtk_widget_draw(frame->drawingArea, &update_rect);
-		it = linkedListIterator_create(this->m_shapeComponents, 0);
-		while (linkedListIterator_hasNext(it)) {
-			shape_component_pt sc = linkedListIterator_next(it);
-			(*sc->shapeComponent_paintComponent)(sc, this, this->pixMap, frame->drawingArea);
-		}
-	}
-
-	return CELIX_SUCCESS;
-}
-
-static gpointer paintFrame_gtkmain(gpointer a_data) {
-	GtkBuilder *builder;
-	paint_frame_pt frame = (paint_frame_pt) a_data;
-
-	gdk_threads_enter();
-	builder = gtk_builder_new();
-	gtk_builder_add_from_file(builder, frame->file, NULL);
-
-	frame->window = GTK_WIDGET(gtk_builder_get_object (builder, "window1"));
-	frame->toolbar = GTK_WIDGET(gtk_builder_get_object (builder, "toolbar1"));
-	frame->drawingArea = GTK_WIDGET(gtk_builder_get_object (builder, "drawingarea1"));
-	g_object_unref(G_OBJECT(builder));
-
-	gtk_window_set_title(GTK_WINDOW(frame->window), "OSGi in Action, Paint-Example");
-
-	gtk_widget_set_events (frame->drawingArea, GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK);
-
-	g_signal_connect(G_OBJECT(frame->window), "destroy", G_CALLBACK(paintFrame_destroy), frame);
-	g_signal_connect(G_OBJECT(frame->drawingArea), "expose_event", G_CALLBACK(paintFrame_expose), frame);
-	g_signal_connect(G_OBJECT(frame->drawingArea), "configure_event", G_CALLBACK(paintFrame_configure), frame);
-	g_signal_connect(G_OBJECT(frame->drawingArea), "button_press_event", G_CALLBACK(paintFrame_mousePressed), frame);
-
-
-	paintFrame_show(frame);
-	frame->showing = true;
-
-	gtk_main();
-	gdk_threads_leave();
-
-	return NULL;
-}

http://git-wip-us.apache.org/repos/asf/celix/blob/505f6a84/examples/osgi-in-action/chapter04-paint-example/paint/private/src/shape_component.c
----------------------------------------------------------------------
diff --git a/examples/osgi-in-action/chapter04-paint-example/paint/private/src/shape_component.c b/examples/osgi-in-action/chapter04-paint-example/paint/private/src/shape_component.c
deleted file mode 100644
index db8d274..0000000
--- a/examples/osgi-in-action/chapter04-paint-example/paint/private/src/shape_component.c
+++ /dev/null
@@ -1,69 +0,0 @@
-/**
- *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.
- */
-/*
- * shape_component.c
- *
- *  \date       Aug 22, 2011
- *  \author    	<a href="mailto:dev@celix.apache.org">Apache Celix Project Team</a>
- *  \copyright	Apache License, Version 2.0
- */
-#include <stdio.h>
-#include <stdio.h>
-#include <string.h>
-#include <celixbool.h>
-#include <stdlib.h>
-#include <glib.h>
-#include <gtk/gtk.h>
-#include <gdk/gdk.h>
-#include "bundle_context.h"
-#include "utils.h"
-#include "linked_list.h"
-#include "hash_map.h"
-#include "simple_shape.h"
-#include "shape_component.h"
-
-static const int BOX = 54;
-
-extern void shapeComponent_paintComponent(shape_component_pt shapeComponent, paint_frame_pt frame,
-		GdkPixmap *pixMap, GtkWidget *widget);
-
-shape_component_pt shapeComponent_create(paint_frame_pt frame, simple_shape_pt sshape,
-		gdouble x, gdouble y) {
-	shape_component_pt shape = malloc(sizeof(*shape));
-	shape->m_frame = frame;
-	shape->shapeName = strdup(sshape->name);
-	shape->x = x - BOX /2;
-	shape->y = y - BOX /2;
-	shape->w = BOX;
-	shape->h = BOX;
-	/* methods */
-	shape->shapeComponent_paintComponent = shapeComponent_paintComponent;
-	return shape;
-}
-
-void shapeComponent_paintComponent(shape_component_pt shapeComponent, paint_frame_pt frame,
-		GdkPixmap *pixMap, GtkWidget *widget) {
-	simple_shape_pt shape = paintFrame_getShape(frame, shapeComponent->shapeName);
-	if (shape == NULL) {
-		g_printerr("cannot find shape %s\n", shapeComponent->shapeName);
-	} else {
-		(*shape->simpleShape_draw)(shape, pixMap, widget,
-				shapeComponent->x, shapeComponent->y);
-	}
-}

http://git-wip-us.apache.org/repos/asf/celix/blob/505f6a84/examples/osgi-in-action/chapter04-paint-example/paint/private/src/underc.png
----------------------------------------------------------------------
diff --git a/examples/osgi-in-action/chapter04-paint-example/paint/private/src/underc.png b/examples/osgi-in-action/chapter04-paint-example/paint/private/src/underc.png
deleted file mode 100644
index 425cdb9..0000000
Binary files a/examples/osgi-in-action/chapter04-paint-example/paint/private/src/underc.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/celix/blob/505f6a84/examples/osgi-in-action/chapter04-paint-example/simple/public/include/simple_shape.h
----------------------------------------------------------------------
diff --git a/examples/osgi-in-action/chapter04-paint-example/simple/public/include/simple_shape.h b/examples/osgi-in-action/chapter04-paint-example/simple/public/include/simple_shape.h
deleted file mode 100644
index 6385b54..0000000
--- a/examples/osgi-in-action/chapter04-paint-example/simple/public/include/simple_shape.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- *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.
- */
-/*
- * simple_shape.h
- *
- *  \date       Aug 22, 2011
- *  \author    	<a href="mailto:dev@celix.apache.org">Apache Celix Project Team</a>
- *  \copyright	Apache License, Version 2.0
- */
-#ifndef SIMPLE_SHAPE_H_
-#define SIMPLE_SHAPE_H_
-
-#include <gdk/gdk.h>
-
-struct simple_shape {
-	char *icon_path;
-	char *name;
-	void (*simpleShape_draw) (struct simple_shape *shape, GdkPixmap *pixMap, GtkWidget *widget, gdouble x, gdouble y);
-};
-
-typedef struct simple_shape *simple_shape_pt;
-
-#define SIMPLE_SHAPE_SERVICE_NAME "simple_shape"
-
-
-#endif /* SIMPLE_SHAPE_H_ */

http://git-wip-us.apache.org/repos/asf/celix/blob/505f6a84/examples/osgi-in-action/chapter04-paint-example/square/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/examples/osgi-in-action/chapter04-paint-example/square/CMakeLists.txt b/examples/osgi-in-action/chapter04-paint-example/square/CMakeLists.txt
deleted file mode 100644
index df87ee4..0000000
--- a/examples/osgi-in-action/chapter04-paint-example/square/CMakeLists.txt
+++ /dev/null
@@ -1,45 +0,0 @@
-# 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.
-
-INCLUDE(FindPkgConfig)
-pkg_search_module (GLIB  REQUIRED glib-2.0)
-pkg_search_module (GTHR  REQUIRED gthread-2.0)
-pkg_search_module (GTK   REQUIRED gtk+-2.0)
-include_directories(
-	private/include
-	../simple/public/include
-)
-include_directories(${GTK_INCLUDE_DIRS})
-include_directories(${GLIB_INCLUDE_DIRS})
-include_directories(${GTHR_INCLUDE_DIRS})
-
-link_directories(${GTK_LIBRARY_DIRS})
-link_directories(${GLIB_LIBRARY_DIRS})
-link_directories(${GTHR_LIBRARY_DIRS})
-
-add_bundle(square  VERSION 0.0.1  SOURCES
- 	private/src/activator
- 	private/src/square_shape
-    
-    private/include/square_shape.h
- FILES 
- 	private/src/square.png
-)
-
-include_directories("${PROJECT_SOURCE_DIR}/utils/public/include")
-include_directories("${PROJECT_SOURCE_DIR}/log_service/public/include")
-target_link_libraries(square celix_framework ${GLIB_LIBRARIES} ${GTK_LIBRARIES} ${GTHR_LIBRARIES})

http://git-wip-us.apache.org/repos/asf/celix/blob/505f6a84/examples/osgi-in-action/chapter04-paint-example/square/private/include/square_shape.h
----------------------------------------------------------------------
diff --git a/examples/osgi-in-action/chapter04-paint-example/square/private/include/square_shape.h b/examples/osgi-in-action/chapter04-paint-example/square/private/include/square_shape.h
deleted file mode 100644
index 35c4be1..0000000
--- a/examples/osgi-in-action/chapter04-paint-example/square/private/include/square_shape.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- *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.
- */
-/*
- * square_shape.h
- *
- *  \date       Aug 22, 2011
- *  \author    	<a href="mailto:dev@celix.apache.org">Apache Celix Project Team</a>
- *  \copyright	Apache License, Version 2.0
- */
-#ifndef SQUARE_SHAPE_H_
-#define SQUARE_SHAPE_H_
-
-extern simple_shape_pt squareShape_create(bundle_context_pt context);
-
-#endif /* SQUARE_SHAPE_H_ */

http://git-wip-us.apache.org/repos/asf/celix/blob/505f6a84/examples/osgi-in-action/chapter04-paint-example/square/private/src/activator.c
----------------------------------------------------------------------
diff --git a/examples/osgi-in-action/chapter04-paint-example/square/private/src/activator.c b/examples/osgi-in-action/chapter04-paint-example/square/private/src/activator.c
deleted file mode 100644
index 96ca227..0000000
--- a/examples/osgi-in-action/chapter04-paint-example/square/private/src/activator.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/**
- *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.
- */
-/*
- * activator.c
- *
- *  \date       Aug 22, 2011
- *  \author    	<a href="mailto:dev@celix.apache.org">Apache Celix Project Team</a>
- *  \copyright	Apache License, Version 2.0
- */
-#include <stdlib.h>
-#include <stdio.h>
-#include <apr_general.h>
-#include <glib.h>
-#include <gtk/gtk.h>
-#include <gdk/gdk.h>
-
-#include "bundle_activator.h"
-#include "bundle_context.h"
-#include "simple_shape.h"
-#include "square_shape.h"
-#include "simple_shape.h"
-
-struct squareActivator {
-	service_registration_pt reg;
-	apr_pool_t *pool;
-};
-
-typedef struct squareActivator *greeting_activator_pt;
-
-celix_status_t bundleActivator_create(bundle_context_pt context, void **userData) {
-	apr_pool_t *pool;
-	greeting_activator_pt activator;
-	celix_status_t status = bundleContext_getMemoryPool(context, &pool);
-	if (status == CELIX_SUCCESS) {
-		*userData = apr_palloc(pool, sizeof(struct squareActivator));
-		activator = *userData;
-		activator->reg = NULL;
-		activator->pool = pool;
-		printf("Square created\n");
-	}
-	return status;
-}
-
-celix_status_t bundleActivator_start(void * userData, bundle_context_pt ctx) {
-	struct squareActivator * act = (struct squareActivator *) userData;
-	celix_status_t status = CELIX_SUCCESS;
-	simple_shape_pt es = squareShape_create(ctx);
-	properties_pt props = properties_create();
-	properties_set(props, "name", "square");
-    status = bundleContext_registerService(ctx, SIMPLE_SHAPE_SERVICE_NAME, es, props, &act->reg);
-	printf("Square start\n");
-	return status;
-}
-
-celix_status_t bundleActivator_stop(void * userData, bundle_context_pt context) {
-	return CELIX_SUCCESS;
-}
-
-celix_status_t bundleActivator_destroy(void * userData, bundle_context_pt context) {
-	return CELIX_SUCCESS;
-}

http://git-wip-us.apache.org/repos/asf/celix/blob/505f6a84/examples/osgi-in-action/chapter04-paint-example/square/private/src/square.png
----------------------------------------------------------------------
diff --git a/examples/osgi-in-action/chapter04-paint-example/square/private/src/square.png b/examples/osgi-in-action/chapter04-paint-example/square/private/src/square.png
deleted file mode 100644
index 3f24cfc..0000000
Binary files a/examples/osgi-in-action/chapter04-paint-example/square/private/src/square.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/celix/blob/505f6a84/examples/osgi-in-action/chapter04-paint-example/square/private/src/square_shape.c
----------------------------------------------------------------------
diff --git a/examples/osgi-in-action/chapter04-paint-example/square/private/src/square_shape.c b/examples/osgi-in-action/chapter04-paint-example/square/private/src/square_shape.c
deleted file mode 100644
index 41c6e83..0000000
--- a/examples/osgi-in-action/chapter04-paint-example/square/private/src/square_shape.c
+++ /dev/null
@@ -1,95 +0,0 @@
-/**
- *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.
- */
-/*
- * square_shape.c
- *
- *  \date       Aug 22, 2011
- *  \author    	<a href="mailto:dev@celix.apache.org">Apache Celix Project Team</a>
- *  \copyright	Apache License, Version 2.0
- */
-#include <stdio.h>
-#include <string.h>
-#include <celixbool.h>
-#include <stdlib.h>
-#include <glib.h>
-#include <gtk/gtk.h>
-#include <gdk/gdk.h>
-#include "bundle_context.h"
-#include "bundle.h"
-#include "hash_map.h"
-#include "simple_shape.h"
-#include "square_shape.h"
-#define SQUARE_FILE "square.png"
-
-void squareShape_draw(simple_shape_pt shape, GdkPixmap *pixMap, GtkWidget *widget, gdouble x, gdouble y);
-
-simple_shape_pt squareShape_create(bundle_context_pt context) {
-	bundle_pt bundle;
-	apr_pool_t *pool;
-	simple_shape_pt shape = (simple_shape_pt) malloc(sizeof(*shape));
-	celix_status_t status = CELIX_SUCCESS;
-	bundleContext_getBundle(context, &bundle);
-	bundleContext_getMemoryPool(context, &pool);
-	shape->name = "Square";
-	shape->icon_path = NULL;
-	status = bundle_getEntry(bundle, SQUARE_FILE, pool, &shape->icon_path);
-	shape->simpleShape_draw = squareShape_draw;
-	if (status == CELIX_SUCCESS) {
-		// no error
-	} else {
-		printf("Could not find resource %s\n", SQUARE_FILE);
-	}
-	return shape;
-}
-
-void squareShape_draw(simple_shape_pt shape, GdkPixmap *pixMap, GtkWidget *widget, gdouble x, gdouble y){
-	GdkRectangle update_rect;
-	GdkPixbuf *curr_pix_buf;
-	GError *gerror = NULL;
-	gsize rd = 0, wr = 0;
-	if (shape->icon_path == NULL){
-		printf("no icon path\n");
-	} else {
-		gchar *gfn = g_locale_to_utf8(shape->icon_path, strlen(shape->icon_path), &rd, &wr, &gerror);
-		curr_pix_buf = gdk_pixbuf_new_from_file(gfn, &gerror);
-		if(!curr_pix_buf) {
-			g_printerr("error message: %s\n", (gchar *) gerror->message);
-		}
-		update_rect.x = x - 5;
-		update_rect.y = y - 5;
-		update_rect.width = gdk_pixbuf_get_width(curr_pix_buf);
-		update_rect.height = gdk_pixbuf_get_height(curr_pix_buf);
-		gdk_pixbuf_render_to_drawable(
-				curr_pix_buf,
-				pixMap,
-				gtk_widget_get_style(widget)->fg_gc[gtk_widget_get_state(widget)],
-				0, 0,
-				update_rect.x, update_rect.y,
-				update_rect.width,
-				update_rect.height,
-				GDK_RGB_DITHER_NONE,
-				0, 0);
-		gtk_widget_queue_draw_area (widget,
-				update_rect.x, update_rect.y,
-				update_rect.width, update_rect.height);
-	}
-}
-
-
-

http://git-wip-us.apache.org/repos/asf/celix/blob/505f6a84/examples/osgi-in-action/chapter04-paint-example/triangle/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/examples/osgi-in-action/chapter04-paint-example/triangle/CMakeLists.txt b/examples/osgi-in-action/chapter04-paint-example/triangle/CMakeLists.txt
deleted file mode 100644
index ff069b3..0000000
--- a/examples/osgi-in-action/chapter04-paint-example/triangle/CMakeLists.txt
+++ /dev/null
@@ -1,45 +0,0 @@
-# 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.
-
-INCLUDE(FindPkgConfig)
-pkg_search_module (GLIB  REQUIRED glib-2.0)
-pkg_search_module (GTHR  REQUIRED gthread-2.0)
-pkg_search_module (GTK   REQUIRED gtk+-2.0)
-include_directories(
-	private/include
-	../simple/public/include
-)
-include_directories(${GTK_INCLUDE_DIRS})
-include_directories(${GLIB_INCLUDE_DIRS})
-include_directories(${GTHR_INCLUDE_DIRS})
-
-link_directories(${GTK_LIBRARY_DIRS})
-link_directories(${GLIB_LIBRARY_DIRS})
-link_directories(${GTHR_LIBRARY_DIRS})
-
-add_bundle(triangle  VERSION 0.0.1 SOURCES
- 	private/src/activator
- 	private/src/triangle_shape
-    
-    private/include/triangle_shape.h
- FILES 
- 	private/src/triangle.png
-)
-
-include_directories("${PROJECT_SOURCE_DIR}/utils/public/include")
-include_directories("${PROJECT_SOURCE_DIR}/log_service/public/include")
-target_link_libraries(triangle celix_framework ${GLIB_LIBRARIES} ${GTK_LIBRARIES} ${GTHR_LIBRARIES})

http://git-wip-us.apache.org/repos/asf/celix/blob/505f6a84/examples/osgi-in-action/chapter04-paint-example/triangle/private/include/triangle_shape.h
----------------------------------------------------------------------
diff --git a/examples/osgi-in-action/chapter04-paint-example/triangle/private/include/triangle_shape.h b/examples/osgi-in-action/chapter04-paint-example/triangle/private/include/triangle_shape.h
deleted file mode 100644
index 02b924c..0000000
--- a/examples/osgi-in-action/chapter04-paint-example/triangle/private/include/triangle_shape.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- *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.
- */
-/*
- * triangle_shape.h
- *
- *  \date       Aug 22, 2011
- *  \author    	<a href="mailto:dev@celix.apache.org">Apache Celix Project Team</a>
- *  \copyright	Apache License, Version 2.0
- */
-
-#ifndef TRIANGLE_SHAPE_H_
-#define TRIANGLE_SHAPE_H_
-
-extern simple_shape_pt triangleShape_create(bundle_context_pt ctx);
-
-#endif /* TRIANGLE_SHAPE_H_ */

http://git-wip-us.apache.org/repos/asf/celix/blob/505f6a84/examples/osgi-in-action/chapter04-paint-example/triangle/private/src/activator.c
----------------------------------------------------------------------
diff --git a/examples/osgi-in-action/chapter04-paint-example/triangle/private/src/activator.c b/examples/osgi-in-action/chapter04-paint-example/triangle/private/src/activator.c
deleted file mode 100644
index 49875ac..0000000
--- a/examples/osgi-in-action/chapter04-paint-example/triangle/private/src/activator.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/**
- *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.
- */
-/*
- * activator.c
- *
- *  \date       Aug 22, 2011
- *  \author    	<a href="mailto:dev@celix.apache.org">Apache Celix Project Team</a>
- *  \copyright	Apache License, Version 2.0
- */
-#include <stdlib.h>
-#include <stdio.h>
-#include <apr_general.h>
-#include <glib.h>
-#include <gtk/gtk.h>
-#include <gdk/gdk.h>
-
-#include "bundle_activator.h"
-#include "bundle_context.h"
-#include "simple_shape.h"
-#include "triangle_shape.h"
-#include "simple_shape.h"
-
-struct greetingActivator {
-	service_registration_pt reg;
-	apr_pool_t *pool;
-};
-
-typedef struct greetingActivator *greeting_activator_pt;
-
-celix_status_t bundleActivator_create(bundle_context_pt context, void **userData) {
-	apr_pool_t *pool;
-	greeting_activator_pt activator;
-	celix_status_t status = bundleContext_getMemoryPool(context, &pool);
-	if (status == CELIX_SUCCESS) {
-		*userData = apr_palloc(pool, sizeof(struct greetingActivator));
-		activator = *userData;
-		activator->reg = NULL;
-		activator->pool = pool;
-	}
-	printf("Triangle created %d\n", status);
-	return status;
-}
-
-celix_status_t bundleActivator_start(void * userData, bundle_context_pt ctx) {
-	struct greetingActivator * act = (struct greetingActivator *) userData;
-	celix_status_t status = CELIX_SUCCESS;
-	simple_shape_pt es = triangleShape_create(ctx);
-	properties_pt props = properties_create();
-	properties_set(props, "name", "triangle");
-    status = bundleContext_registerService(ctx, SIMPLE_SHAPE_SERVICE_NAME, es, props, &act->reg);
-	printf("Triangle activated %d\n", status);
-	return status;
-}
-
-celix_status_t bundleActivator_stop(void * userData, bundle_context_pt context) {
-	return CELIX_SUCCESS;
-}
-
-celix_status_t bundleActivator_destroy(void * userData, bundle_context_pt context) {
-	return CELIX_SUCCESS;
-}

http://git-wip-us.apache.org/repos/asf/celix/blob/505f6a84/examples/osgi-in-action/chapter04-paint-example/triangle/private/src/triangle.png
----------------------------------------------------------------------
diff --git a/examples/osgi-in-action/chapter04-paint-example/triangle/private/src/triangle.png b/examples/osgi-in-action/chapter04-paint-example/triangle/private/src/triangle.png
deleted file mode 100644
index 46a5288..0000000
Binary files a/examples/osgi-in-action/chapter04-paint-example/triangle/private/src/triangle.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/celix/blob/505f6a84/examples/osgi-in-action/chapter04-paint-example/triangle/private/src/triangle_shape.c
----------------------------------------------------------------------
diff --git a/examples/osgi-in-action/chapter04-paint-example/triangle/private/src/triangle_shape.c b/examples/osgi-in-action/chapter04-paint-example/triangle/private/src/triangle_shape.c
deleted file mode 100644
index 71fca10..0000000
--- a/examples/osgi-in-action/chapter04-paint-example/triangle/private/src/triangle_shape.c
+++ /dev/null
@@ -1,97 +0,0 @@
-/**
- *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.
- */
-/*
- * triangle_shape.c
- *
- *  \date       Aug 22, 2011
- *  \author    	<a href="mailto:dev@celix.apache.org">Apache Celix Project Team</a>
- *  \copyright	Apache License, Version 2.0
- */
-
-
-#include <stdio.h>
-#include <string.h>
-#include <celixbool.h>
-#include <stdlib.h>
-#include <glib.h>
-#include <gtk/gtk.h>
-#include <gdk/gdk.h>
-#include "bundle_context.h"
-#include "bundle.h"
-#include "hash_map.h"
-#include "simple_shape.h"
-#include "triangle_shape.h"
-#define TRIANGLE_FILE "triangle.png"
-
-void triangleShape_draw(simple_shape_pt shape, GdkPixmap *pixMap, GtkWidget *widget, gdouble x, gdouble y);
-
-simple_shape_pt triangleShape_create(bundle_context_pt context) {
-	bundle_pt bundle;
-	apr_pool_t *pool;
-	simple_shape_pt shape = (simple_shape_pt) malloc(sizeof(*shape));
-	celix_status_t status = CELIX_SUCCESS;
-	bundleContext_getBundle(context, &bundle);
-	bundleContext_getMemoryPool(context, &pool);
-	shape->name = "Triangle";
-	shape->icon_path = NULL;
-	status = bundle_getEntry(bundle, TRIANGLE_FILE, pool, &shape->icon_path);
-	shape->simpleShape_draw = triangleShape_draw;
-	if (status == CELIX_SUCCESS){
-		// no error
-	} else {
-		printf("Could not find resource %s\n", TRIANGLE_FILE);
-	}
-	return shape;
-}
-
-void triangleShape_draw(simple_shape_pt shape, GdkPixmap *pixMap, GtkWidget *widget, gdouble x, gdouble y){
-	GdkRectangle update_rect;
-	GdkPixbuf *curr_pix_buf;
-	GError *gerror = NULL;
-	gsize rd = 0, wr = 0;
-	if (shape->icon_path == NULL) {
-		printf("error message: icon path unknown\n");
-	} else {
-	gchar *gfn = g_locale_to_utf8(shape->icon_path, strlen(shape->icon_path), &rd, &wr, &gerror);
-	curr_pix_buf = gdk_pixbuf_new_from_file(gfn, &gerror);
-	if(!curr_pix_buf) {
-		g_printerr("error message: %s\n", (gchar *) gerror->message);
-	}
-	update_rect.x = x - 5;
-	update_rect.y = y - 5;
-	update_rect.width = gdk_pixbuf_get_width(curr_pix_buf);
-	update_rect.height = gdk_pixbuf_get_height(curr_pix_buf);
-	gdk_pixbuf_render_to_drawable(
-			curr_pix_buf,
-			pixMap,
-			gtk_widget_get_style(widget)->fg_gc[gtk_widget_get_state(widget)],
-			0, 0,
-			update_rect.x, update_rect.y,
-			update_rect.width,
-			update_rect.height,
-			GDK_RGB_DITHER_NONE,
-			0, 0);
-	gtk_widget_queue_draw_area (widget,
-			update_rect.x, update_rect.y,
-			update_rect.width, update_rect.height);
-	}
-}
-
-
-

http://git-wip-us.apache.org/repos/asf/celix/blob/505f6a84/examples/producer_consumer/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/examples/producer_consumer/CMakeLists.txt b/examples/producer_consumer/CMakeLists.txt
deleted file mode 100644
index 5e07a12..0000000
--- a/examples/producer_consumer/CMakeLists.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-# 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_subdirectory(database)
-add_subdirectory(producer)
-add_subdirectory(consumer)

http://git-wip-us.apache.org/repos/asf/celix/blob/505f6a84/examples/producer_consumer/consumer/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/examples/producer_consumer/consumer/CMakeLists.txt b/examples/producer_consumer/consumer/CMakeLists.txt
deleted file mode 100644
index 2803af7..0000000
--- a/examples/producer_consumer/consumer/CMakeLists.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-# 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.
-
-include_directories("${PROJECT_SOURCE_DIR}/utils/public/include")
-include_directories("${PROJECT_SOURCE_DIR}/examples/producer_consumer/database/public/include")
-
-add_bundle(consumer
-	VERSION 1.0.0
-	SOURCES
-	 	private/src/activator.c
-)
-
-target_link_libraries(consumer celix_framework)

http://git-wip-us.apache.org/repos/asf/celix/blob/505f6a84/examples/producer_consumer/consumer/private/src/activator.c
----------------------------------------------------------------------
diff --git a/examples/producer_consumer/consumer/private/src/activator.c b/examples/producer_consumer/consumer/private/src/activator.c
deleted file mode 100644
index 0e58856..0000000
--- a/examples/producer_consumer/consumer/private/src/activator.c
+++ /dev/null
@@ -1,195 +0,0 @@
-/**
- * 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.
- */
-
-/*
- * activator.c
- *
- *  \date       16 Feb 2015
- *  \author     <a href="mailto:dev@celix.apache.org">Apache Celix Project Team</a>
- *  \copyright  Apache License, Version 2.0
- */
-
-#include <stdlib.h>
-
-#include <unistd.h>
-
-#include <sys/time.h>
-
-#include <bundle_activator.h>
-#include <service_tracker.h>
-#include <constants.h>
-
-#include <array_list.h>
-
-#include "reader_service.h"
-#include "writer_service.h"
-#include "data.h"
-
-struct activator {
-    service_tracker_pt readerTracker;
-    service_tracker_pt writerTracker;
-    array_list_pt readerServices;
-    array_list_pt writerServices;
-    bool running;
-    celix_thread_t worker;
-};
-
-celix_status_t readerServiceAdded(void *handle, service_reference_pt reference, void *service);
-celix_status_t readerServiceRemoved(void *handle, service_reference_pt reference, void *service);
-
-celix_status_t writerServiceAdded(void *handle, service_reference_pt reference, void *service);
-celix_status_t writerServiceRemoved(void *handle, service_reference_pt reference, void *service);
-
-void *retrieveData(void *handle);
-
-celix_status_t bundleActivator_create(bundle_context_pt context, void **userData) {
-    celix_status_t status = CELIX_SUCCESS;
-    *userData = calloc(1, sizeof(struct activator));
-    if (*userData) {
-        ((struct activator *) *userData)->readerTracker = NULL;
-        ((struct activator *) *userData)->writerTracker = NULL;
-        ((struct activator *) *userData)->readerServices = NULL;
-        ((struct activator *) *userData)->writerServices = NULL;
-        ((struct activator *) *userData)->running = false;
-        ((struct activator *) *userData)->worker = celix_thread_default;
-    } else {
-        status = CELIX_ENOMEM;
-    }
-    return status;
-}
-
-celix_status_t bundleActivator_start(void * userData, bundle_context_pt context) {
-    celix_status_t status = CELIX_SUCCESS;
-    struct activator *activator = userData;
-
-    // create list for services
-    arrayList_create(&activator->readerServices);
-    arrayList_create(&activator->writerServices);
-
-    // start the thread
-    activator->running = true;
-    status = celixThread_create(&activator->worker, NULL, retrieveData, activator);
-
-    if (status == CELIX_SUCCESS) {
-        service_tracker_customizer_pt readerCustomizer = NULL;
-        service_tracker_customizer_pt writerCustomizer = NULL;
-        serviceTrackerCustomizer_create(userData, NULL, readerServiceAdded, NULL, readerServiceRemoved, &readerCustomizer);
-        serviceTrackerCustomizer_create(userData, NULL, writerServiceAdded, NULL, writerServiceRemoved, &writerCustomizer);
-
-        serviceTracker_create(context, WRITER_SERVICE_NAME, writerCustomizer, &activator->writerTracker);
-        serviceTracker_open(activator->writerTracker);
-
-        serviceTracker_create(context, READER_SERVICE_NAME, readerCustomizer, &activator->readerTracker);
-        serviceTracker_open(activator->readerTracker);
-    }
-
-    return status;
-}
-
-celix_status_t bundleActivator_stop(void * userData, bundle_context_pt context) {
-    celix_status_t status = CELIX_SUCCESS;
-    struct activator *activator = userData;
-
-    // stop the thread
-    activator->running = false;
-
-    celixThread_join(activator->worker, NULL);
-
-    serviceTracker_close(activator->readerTracker);
-    serviceTracker_close(activator->writerTracker);
-
-    serviceTracker_destroy(activator->readerTracker);
-    serviceTracker_destroy(activator->writerTracker);
-
-    // destroy the list of services
-    arrayList_destroy(activator->readerServices);
-    arrayList_destroy(activator->writerServices);
-
-    return status;
-}
-
-celix_status_t bundleActivator_destroy(void * userData, bundle_context_pt context) {
-    celix_status_t status = CELIX_SUCCESS;
-    struct activator *activator = userData;
-
-    free(activator);
-
-    return status;
-}
-
-celix_status_t readerServiceAdded(void *handle, service_reference_pt reference, void *service) {
-    struct activator *activator = handle;
-    arrayList_add(activator->readerServices, service);
-    printf("Consumer: Reader Service Added.\n");
-
-    return CELIX_SUCCESS;
-}
-
-celix_status_t readerServiceRemoved(void *handle, service_reference_pt reference, void *service) {
-    struct activator *activator = handle;
-    arrayList_removeElement(activator->readerServices, service);
-    printf("Consumer: Reader Service Removed.\n");
-
-    return CELIX_SUCCESS;
-}
-
-celix_status_t writerServiceAdded(void *handle, service_reference_pt reference, void *service) {
-    struct activator *activator = handle;
-    arrayList_add(activator->writerServices, service);
-    printf("Consumer: Writer Service Added.\n");
-
-    return CELIX_SUCCESS;
-}
-
-celix_status_t writerServiceRemoved(void *handle, service_reference_pt reference, void *service) {
-    struct activator *activator = handle;
-    arrayList_removeElement(activator->writerServices, service);
-    printf("Consumer: Writer Service Removed.\n");
-
-    return CELIX_SUCCESS;
-}
-
-void *retrieveData(void *handle) {
-    struct activator *activator = handle;
-
-    while (activator->running) {
-        int i;
-        for (i = 0; i < arrayList_size(activator->readerServices); i++) {
-            reader_service_pt service = arrayList_get(activator->readerServices, i);
-            data_pt retrievedData = NULL;
-
-            if (service->readerService_getNextData(service->handler, &retrievedData) == CELIX_SUCCESS) {
-                printf(" Data #%d received.", retrievedData->id);
-
-                writer_service_pt writerService = arrayList_get(activator->writerServices, 0);
-                if (writerService && writerService->writerService_removeData(writerService->handler, &retrievedData) == CELIX_SUCCESS) {
-                    printf(" and removed\n");
-                }
-
-            } else {
-                printf(" No data available\n");
-                sleep(5);
-            }
-
-        }
-
-    }
-
-    return NULL;
-}

http://git-wip-us.apache.org/repos/asf/celix/blob/505f6a84/examples/producer_consumer/database/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/examples/producer_consumer/database/CMakeLists.txt b/examples/producer_consumer/database/CMakeLists.txt
deleted file mode 100644
index 40b8b35..0000000
--- a/examples/producer_consumer/database/CMakeLists.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-# 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.
-
-include_directories("${PROJECT_SOURCE_DIR}/utils/public/include")
-include_directories("${PROJECT_SOURCE_DIR}/examples/producer_consumer/database/private/include")
-include_directories("${PROJECT_SOURCE_DIR}/examples/producer_consumer/database/public/include")
-
-add_bundle(database
-	VERSION 1.0.0
-	SOURCES private/src/activator 
-		private/src/writer 
-		private/src/reader
-)
-
-target_link_libraries(database celix_framework)
-

http://git-wip-us.apache.org/repos/asf/celix/blob/505f6a84/examples/producer_consumer/database/private/include/reader_service_impl.h
----------------------------------------------------------------------
diff --git a/examples/producer_consumer/database/private/include/reader_service_impl.h b/examples/producer_consumer/database/private/include/reader_service_impl.h
deleted file mode 100644
index 6db7195..0000000
--- a/examples/producer_consumer/database/private/include/reader_service_impl.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/**
- * 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.
- */
-
-/*
- * reader_service_impl.h
- *
- *  \date       16 Feb 2015
- *  \author     <a href="mailto:dev@celix.apache.org">Apache Celix Project Team</a>
- *  \copyright  Apache License, Version 2.0
- */
-
-
-
-#ifndef READER_SERVICE_IMPL_H_
-#define READER_SERVICE_IMPL_H_
-
-#include "data.h"
-#include "database.h"
-
-celix_status_t readerService_getFirstData(database_handler_pt, data_pt firstData);
-celix_status_t readerService_getNextData(database_handler_pt, data_pt* nextData);
-
-#endif

http://git-wip-us.apache.org/repos/asf/celix/blob/505f6a84/examples/producer_consumer/database/private/include/writer_service_impl.h
----------------------------------------------------------------------
diff --git a/examples/producer_consumer/database/private/include/writer_service_impl.h b/examples/producer_consumer/database/private/include/writer_service_impl.h
deleted file mode 100644
index 1933892..0000000
--- a/examples/producer_consumer/database/private/include/writer_service_impl.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
- * 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.
- */
-
-/*
- * writer_service_impl.h
- *
- *  \date       16 Feb 2015
- *  \author     <a href="mailto:dev@celix.apache.org">Apache Celix Project Team</a>
- *  \copyright  Apache License, Version 2.0
- */
-
-
-
-#ifndef WRITER_SERVICE_IMPL_H_
-#define WRITER_SERVICE_IMPL_H_
-
-#include "data.h"
-#include "database.h"
-
-celix_status_t writerService_storeData(database_handler_pt, data_pt data);
-celix_status_t writerService_removeData(database_handler_pt, data_pt* data);
-
-
-#endif

http://git-wip-us.apache.org/repos/asf/celix/blob/505f6a84/examples/producer_consumer/database/private/src/activator.c
----------------------------------------------------------------------
diff --git a/examples/producer_consumer/database/private/src/activator.c b/examples/producer_consumer/database/private/src/activator.c
deleted file mode 100644
index 3d866e1..0000000
--- a/examples/producer_consumer/database/private/src/activator.c
+++ /dev/null
@@ -1,157 +0,0 @@
-/**
- * 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.
- */
-
-/*
- * activator.c
- *
- *  \date       16 Feb 2015
- *  \author     <a href="mailto:dev@celix.apache.org">Apache Celix Project Team</a>
- *  \copyright  Apache License, Version 2.0
- */
-
-
-#include <stdlib.h>
-#include <unistd.h>
-
-#include <sys/time.h>
-
-#include <bundle_activator.h>
-#include <service_tracker.h>
-#include <constants.h>
-
-#include <array_list.h>
-#include <pthread.h>
-
-#include "reader_service.h"
-#include "reader_service_impl.h"
-#include "writer_service.h"
-#include "writer_service_impl.h"
-
-#include "database.h"
-
-struct activator {
-	database_handler_pt databaseHandler;
-
-	service_registration_pt readerRegistration;
-	service_registration_pt writerRegistration;
-
-	reader_service_pt readerService;
-	writer_service_pt writerService;
-};
-
-
-
-celix_status_t bundleActivator_create(bundle_context_pt context, void **userData) {
-	celix_status_t status = CELIX_SUCCESS;
-
-	*userData = calloc (1, sizeof(struct activator));
-
-	if (*userData) {
-		((struct activator *) *userData)->readerService = NULL;
-		((struct activator *) *userData)->writerService = NULL;
-		((struct activator *) *userData)->databaseHandler = NULL;
-
-	} else {
-		status = CELIX_ENOMEM;
-	}
-	return status;
-}
-
-
-celix_status_t bundleActivator_start(void * userData, bundle_context_pt context) {
-	celix_status_t status = CELIX_ENOMEM;
-	struct activator *activator = userData;
-	reader_service_pt readerService = calloc(1, sizeof(struct reader_service));
-	writer_service_pt writerService = calloc(1, sizeof(struct writer_service));
-	database_handler_pt databaseHandler = calloc(1, sizeof(struct database_handler));
-
-	if (readerService && writerService && databaseHandler)
-	{
-		status = celixThreadMutex_create(&databaseHandler->lock, NULL);
-
-		if (status == CELIX_SUCCESS)
-		{
-			arrayList_create(&databaseHandler->data);
-			databaseHandler->dataIndex = 0;
-
-			readerService->handler = databaseHandler;
-			readerService->readerService_getFirstData = readerService_getFirstData;
-			readerService->readerService_getNextData = readerService_getNextData;
-
-			writerService->handler = databaseHandler;
-			writerService->writerService_storeData = writerService_storeData;
-			writerService->writerService_removeData = writerService_removeData;
-
-			activator->readerService = readerService;
-			activator->writerService = writerService;
-
-			status = bundleContext_registerService(context, READER_SERVICE_NAME, activator->readerService, NULL,  &activator->readerRegistration);
-
-			if (status == CELIX_SUCCESS){
-				status = bundleContext_registerService(context, WRITER_SERVICE_NAME, activator->writerService, NULL,  &activator->writerRegistration);
-			}
-		}
-	}
-
-	if(status != CELIX_SUCCESS){
-		if(readerService!=NULL){
-			free(readerService);
-		}
-		if(writerService!=NULL){
-			free(writerService);
-		}
-		if(databaseHandler!=NULL){
-			free(databaseHandler);
-		}
-	}
-
-	return status;
-}
-
-celix_status_t bundleActivator_stop(void * userData, bundle_context_pt context) {
-	celix_status_t status = CELIX_SUCCESS;
-	struct activator *activator = userData;
-
-	serviceRegistration_unregister(activator->readerRegistration);
-	serviceRegistration_unregister(activator->writerRegistration);
-
-	return status;
-}
-
-celix_status_t bundleActivator_destroy(void * userData, bundle_context_pt context) {
-	celix_status_t status = CELIX_SUCCESS;
-	struct activator *activator = userData;
-
-	database_handler_pt dbh = (database_handler_pt)activator->writerService->handler;
-	if(dbh != NULL){
-		celixThreadMutex_destroy(&dbh->lock);
-		if(dbh->data != NULL){
-			arrayList_destroy(dbh->data);
-		}
-		free(dbh);
-		activator->writerService->handler=NULL;
-	}
-
-	free(activator->readerService);
-	free(activator->writerService);
-	free(activator);
-
-	return status;
-}
-

http://git-wip-us.apache.org/repos/asf/celix/blob/505f6a84/examples/producer_consumer/database/private/src/reader.c
----------------------------------------------------------------------
diff --git a/examples/producer_consumer/database/private/src/reader.c b/examples/producer_consumer/database/private/src/reader.c
deleted file mode 100644
index c28cd7b..0000000
--- a/examples/producer_consumer/database/private/src/reader.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/**
- * 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.
- */
-
-/*
- * reader.c
- *
- *  \date       16 Feb 2015
- *  \author     <a href="mailto:dev@celix.apache.org">Apache Celix Project Team</a>
- *  \copyright  Apache License, Version 2.0
- */
-
-
-
-#include <pthread.h>
-
-#include "array_list.h"
-#include "celix_errno.h"
-#include "data.h"
-#include "database.h"
-#include "reader_service.h"
-
-
-celix_status_t readerService_getFirstData(database_handler_pt handler, __attribute__((unused)) data_pt firstData)
-{
-	celix_status_t status = CELIX_BUNDLE_EXCEPTION;
-
-	celixThreadMutex_lock(&handler->lock);
-
-	if (arrayList_remove(handler->data, 0) != NULL)
-	{
-		handler->dataIndex--;
-		status = CELIX_SUCCESS;
-	}
-
-    celixThreadMutex_unlock(&handler->lock);
-
-	return status;
-}
-
-
-celix_status_t readerService_getNextData(database_handler_pt handler, data_pt* nextData)
-{
-	celix_status_t status = CELIX_BUNDLE_EXCEPTION;
-
-    celixThreadMutex_lock(&handler->lock);
-
-	if (((*nextData) = (data_pt) arrayList_get(handler->data, handler->dataIndex)) != NULL)
-	{
-		handler->dataIndex++;
-		status = CELIX_SUCCESS;
-	}
-
-    celixThreadMutex_unlock(&handler->lock);
-
-	return status;
-}
-

http://git-wip-us.apache.org/repos/asf/celix/blob/505f6a84/examples/producer_consumer/database/private/src/writer.c
----------------------------------------------------------------------
diff --git a/examples/producer_consumer/database/private/src/writer.c b/examples/producer_consumer/database/private/src/writer.c
deleted file mode 100644
index cce12fa..0000000
--- a/examples/producer_consumer/database/private/src/writer.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/**
- * 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.
- */
-
-/*
- * writer.c
- *
- *  \date       16 Feb 2015
- *  \author     <a href="mailto:dev@celix.apache.org">Apache Celix Project Team</a>
- *  \copyright  Apache License, Version 2.0
- */
-
-
-
-#include <stdlib.h>
-#include <pthread.h>
-
-#include "array_list.h"
-#include "celix_errno.h"
-#include "data.h"
-#include "database.h"
-
-#include "writer_service.h"
-
-celix_status_t writerService_storeData(database_handler_pt handler, data_pt newData)
-{
-	celix_status_t status = CELIX_BUNDLE_EXCEPTION;
-
-    celixThreadMutex_lock(&handler->lock);
-
-	if ( arrayList_add(handler->data, newData) == true)
-		status = CELIX_SUCCESS;
-
-    celixThreadMutex_unlock(&handler->lock);
-	return status;
-}
-
-
-celix_status_t writerService_removeData(database_handler_pt handler, data_pt* newData)
-{
-	celix_status_t status = CELIX_BUNDLE_EXCEPTION;
-
-    celixThreadMutex_lock(&handler->lock);
-
-	if ( arrayList_removeElement(handler->data, *newData) == true)
-		status = CELIX_SUCCESS;
-
-	free(*newData);
-
-    celixThreadMutex_unlock(&handler->lock);
-	return status;
-}
-

http://git-wip-us.apache.org/repos/asf/celix/blob/505f6a84/examples/producer_consumer/database/public/include/data.h
----------------------------------------------------------------------
diff --git a/examples/producer_consumer/database/public/include/data.h b/examples/producer_consumer/database/public/include/data.h
deleted file mode 100644
index d5bd059..0000000
--- a/examples/producer_consumer/database/public/include/data.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/**
- * 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.
- */
-
-/*
- * data.h
- *
- *  \date       16 Feb 2015
- *  \author     <a href="mailto:dev@celix.apache.org">Apache Celix Project Team</a>
- *  \copyright  Apache License, Version 2.0
- */
-
-#ifndef _DATA_H_
-#define _DATA_H_
-
-struct data {
-    int id;
-    char description[100];
-};
-
-typedef struct data* data_pt;
-
-#endif

http://git-wip-us.apache.org/repos/asf/celix/blob/505f6a84/examples/producer_consumer/database/public/include/database.h
----------------------------------------------------------------------
diff --git a/examples/producer_consumer/database/public/include/database.h b/examples/producer_consumer/database/public/include/database.h
deleted file mode 100644
index 054fac0..0000000
--- a/examples/producer_consumer/database/public/include/database.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/**
- * 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.
- */
-
-/*
- * database.h
- *
- *  \date       16 Feb 2015
- *  \author     <a href="mailto:dev@celix.apache.org">Apache Celix Project Team</a>
- *  \copyright  Apache License, Version 2.0
- */
-
-
-
-#ifndef _DATABASE_H_
-#define _DATABASE_H_
-
-#include "array_list.h"
-#include  "celix_threads.h"
-
-struct database_handler {
-	celix_thread_mutex_t lock;
-	array_list_pt data;
-	int dataIndex;
-};
-
-typedef struct database_handler* database_handler_pt;
-
-#endif

http://git-wip-us.apache.org/repos/asf/celix/blob/505f6a84/examples/producer_consumer/database/public/include/reader_service.h
----------------------------------------------------------------------
diff --git a/examples/producer_consumer/database/public/include/reader_service.h b/examples/producer_consumer/database/public/include/reader_service.h
deleted file mode 100644
index e27e843..0000000
--- a/examples/producer_consumer/database/public/include/reader_service.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/**
- * 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.
- */
-
-/*
- * reader_service.h
- *
- *  \date       16 Feb 2015
- *  \author     <a href="mailto:dev@celix.apache.org">Apache Celix Project Team</a>
- *  \copyright  Apache License, Version 2.0
- */
-
-
-
-#ifndef READER_SERVICE_H_
-#define READER_SERVICE_H_
-
-#include "celix_errno.h"
-#include "data.h"
-#include "database.h"
-
-#define READER_SERVICE_NAME		"service.database.reader"
-
-
-struct reader_service {
-	database_handler_pt handler;
-	celix_status_t (*readerService_getFirstData)(database_handler_pt handle, data_pt firstData);
-	celix_status_t (*readerService_getNextData)(database_handler_pt handle, data_pt* nextData);
-};
-
-typedef struct reader_service* reader_service_pt;
-
-
-
-#endif

http://git-wip-us.apache.org/repos/asf/celix/blob/505f6a84/examples/producer_consumer/database/public/include/writer_service.h
----------------------------------------------------------------------
diff --git a/examples/producer_consumer/database/public/include/writer_service.h b/examples/producer_consumer/database/public/include/writer_service.h
deleted file mode 100644
index 936bbbb..0000000
--- a/examples/producer_consumer/database/public/include/writer_service.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/**
- * 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.
- */
-
-/*
- * writer_service.h
- *
- *  \date       16 Feb 2015
- *  \author     <a href="mailto:dev@celix.apache.org">Apache Celix Project Team</a>
- *  \copyright  Apache License, Version 2.0
- */
-
-
-
-
-#ifndef WRITER_SERVICE_H_
-#define WRITER_SERVICE_H_
-
-#include "celix_errno.h"
-#include "data.h"
-#include "database.h"
-
-#define WRITER_SERVICE_NAME		"service.database.writer"
-
-struct writer_service {
-	void *handler;
-	celix_status_t (*writerService_storeData)(database_handler_pt handle, data_pt data);
-	celix_status_t (*writerService_removeData)(database_handler_pt handle, data_pt* data);
-};
-
-typedef struct writer_service* writer_service_pt;
-
-#endif

http://git-wip-us.apache.org/repos/asf/celix/blob/505f6a84/examples/producer_consumer/producer/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/examples/producer_consumer/producer/CMakeLists.txt b/examples/producer_consumer/producer/CMakeLists.txt
deleted file mode 100644
index 83ba7d4..0000000
--- a/examples/producer_consumer/producer/CMakeLists.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-# 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.
-
-include_directories("${PROJECT_SOURCE_DIR}/utils/public/include")
-include_directories("${PROJECT_SOURCE_DIR}/examples/producer_consumer/database/public/include")
-
-add_bundle(producer
-	VERSION 1.0.0
-	SOURCES
-	 	private/src/activator.c
-)
-
-target_link_libraries(producer celix_framework)
\ No newline at end of file