blob: 1bd6698d9c176bad4ce279fee7e5ab11d02c03ad [file] [log] [blame]
Marcel Offermans613a6202009-03-11 22:31:44 +00001/*
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing,
13 * software distributed under the License is distributed on an
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 * KIND, either express or implied. See the License for the
16 * specific language governing permissions and limitations
17 * under the License.
18 */
19package org.apache.felix.das;
20
21
Marcel Offermansb8f9bcb2011-04-11 20:46:19 +000022import org.apache.felix.das.util.Util;
23import org.apache.felix.dm.Component;
24import org.apache.felix.dm.DependencyActivatorBase;
25import org.apache.felix.dm.DependencyManager;
Marcel Offermans613a6202009-03-11 22:31:44 +000026import org.osgi.framework.BundleContext;
27import org.osgi.framework.Constants;
Marcel Offermans613a6202009-03-11 22:31:44 +000028import org.osgi.service.device.Device;
29import org.osgi.service.device.Driver;
30import org.osgi.service.device.DriverLocator;
31import org.osgi.service.device.DriverSelector;
32import org.osgi.service.log.LogService;
33
Marcel Offermans613a6202009-03-11 22:31:44 +000034
35/**
36 * TODO: add javadoc
37 *
38 * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
39 */
40public class Activator extends DependencyActivatorBase
41{
42
43 /** the bundle context */
44 private BundleContext m_context;
45
46 /** the dependency manager */
47 private DependencyManager m_manager;
48
49 /** the device manager */
50 private DeviceManager m_deviceManager;
51
52
53 /**
54 * Here, we create and start the device manager, but we do not register it
55 * within the framework, since that is not specified by the specification.
56 *
57 * @see org.apache.felix.dependencymanager.DependencyActivatorBase#init(org.osgi.framework.BundleContext,
58 * org.apache.felix.dependencymanager.DependencyManager)
59 */
60 public void init( BundleContext context, DependencyManager manager ) throws Exception
61 {
62
63 m_context = context;
64 m_manager = manager;
65
66 m_deviceManager = new DeviceManager( m_context );
67
68 // the real device manager
69 startDeviceManager();
70
Marcel Offermans613a6202009-03-11 22:31:44 +000071 }
72
73
Marcel Offermansb8f9bcb2011-04-11 20:46:19 +000074 private void startDeviceManager() {
Marcel Offermans613a6202009-03-11 22:31:44 +000075
Marcel Offermansb8f9bcb2011-04-11 20:46:19 +000076 final String driverFilter = Util.createFilterString( "(%s=%s)", new String[]
77 { org.osgi.service.device.Constants.DRIVER_ID, "*" } );
Marcel Offermans613a6202009-03-11 22:31:44 +000078
Marcel Offermansb8f9bcb2011-04-11 20:46:19 +000079 final String deviceFilter = Util.createFilterString( "(|(%s=%s)(&(%s=%s)(%s=%s)))", new String[]
80 {
81 Constants.OBJECTCLASS, Device.class.getName(),
82 Constants.OBJECTCLASS, "*",
83 org.osgi.service.device.Constants.DEVICE_CATEGORY, "*"
84 } );
Marcel Offermans613a6202009-03-11 22:31:44 +000085
Marcel Offermansb8f9bcb2011-04-11 20:46:19 +000086 Component svc = createComponent();
Marcel Offermans613a6202009-03-11 22:31:44 +000087
88 svc.setImplementation( m_deviceManager );
89
90 svc.add( createServiceDependency().setService( LogService.class ).setRequired( false ) );
91
Marcel Offermansb8f9bcb2011-04-11 20:46:19 +000092 svc.add( createServiceDependency().setService( DriverSelector.class ).setRequired( false ).setAutoConfig( false )
93 .setCallbacks( "selectorAdded", "selectorRemoved" ) );
Marcel Offermans613a6202009-03-11 22:31:44 +000094
95 svc.add( createServiceDependency().setService( DriverLocator.class ).setRequired( false ).setAutoConfig( false )
96 .setCallbacks( "locatorAdded", "locatorRemoved" ) );
Marcel Offermansb8f9bcb2011-04-11 20:46:19 +000097
98 svc.add( createServiceDependency().setService( Driver.class, driverFilter ).setRequired( false )
99 .setCallbacks( "driverAdded", "driverRemoved" ) );
100
101 svc.add( createServiceDependency().setService( deviceFilter ).setRequired( false )
102 .setCallbacks( "deviceAdded", "deviceModified", "deviceRemoved" ) );
103
Marcel Offermans613a6202009-03-11 22:31:44 +0000104 m_manager.add( svc );
105
106 }
107
108
109 public void destroy( BundleContext context, DependencyManager manager ) throws Exception
110 {
111 // TODO Auto-generated method stub
112
113 }
114
115}