1 //******************************************************************
3 // Copyright 2015 Samsung Electronics All Rights Reserved.
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
7 // Licensed under the Apache License, Version 2.0 (the "License");
8 // you may not use this file except in compliance with the License.
9 // You may obtain a copy of the License at
11 // http://www.apache.org/licenses/LICENSE-2.0
13 // Unless required by applicable law or agreed to in writing, software
14 // distributed under the License is distributed on an "AS IS" BASIS,
15 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 // See the License for the specific language governing permissions and
17 // limitations under the License.
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
21 package org.iotivity.resourcecontainer.bundle.api;
23 import java.util.List;
24 import java.util.Vector;
27 * The BaseActivator implements the native interface to the resource container.
28 * It loads the resource container library and provies native methods
29 * that can be used to register and unregister resources.
31 public class BaseActivator implements BundleActivator {
32 private String bundleId;
33 private Vector<BundleResource> bundleResources = new Vector<BundleResource>();
36 * Creates an instance of the BaseActivator
37 * @param bundleId unique bundle identifier (e.g., oic.bundle.hue)
39 public BaseActivator(String bundleId) {
40 this.bundleId = bundleId;
46 System.loadLibrary("ResContainerLib");
47 } catch (Exception e) {
53 * Bundle activation needs to be provided by the subclass.
55 public void activateBundle() {
60 * Deactivates the bundle and unregisters its resources.
62 public void deactivateBundle() {
63 System.out.println("Deactivating bundle (Base Activator).");
64 for(BundleResource bundleResource : bundleResources){
65 unregisterResource(bundleResource);
70 * Registers a bundle resource at the resource container.
71 * @param resource bundle resource instance that should be made available as OIC resource
73 public void registerResource(BundleResource resource) {
74 bundleResources.add(resource);
75 registerJavaResource(resource, resource.getAttributeKeys(), bundleId,
76 resource.getURI(), resource.getResourceType(),
81 * Wrapper to retrieve the resource configuration of the bundle resources.
82 * @return List of resource configurations.
84 public List<ResourceConfig> getConfiguredBundleResources() {
85 int configuredResources = getNumberOfConfiguredResources(bundleId);
87 Vector<ResourceConfig> configs = new Vector<ResourceConfig>();
89 for (int i = 0; i < configuredResources; i++) {
90 String[] resourceParams = getConfiguredResourceParams(bundleId, i);
91 ResourceConfig config = new ResourceConfig(resourceParams);
99 * Unregisters a resource from the resource container.
101 public void unregisterResource(BundleResource resource) {
102 bundleResources.remove(resource);
103 unregisterJavaResource(resource, resource.getURI());
107 * Native method that calls to the resource container.
108 * @param attributes String array of attribute names
109 * @param bundleId unique bundle identifier
110 * @param uri Uri that should be used to register the resource
112 private native void registerJavaResource(BundleResource resource,
113 String[] attributes, String bundleId, String uri,
114 String resourceType, String name);
117 * Native method that calls to the resource container.
121 private native void unregisterJavaResource(BundleResource resource, String uri);
124 * Native method to retrieve the number of configured resources.
125 * @param bundleId unique bundle identifier
127 private native int getNumberOfConfiguredResources(String bundleId);
130 * Native method to retrieve the configured resource parameters.
131 * @param bundleId unique bundle identifier
132 * @param resId get the resource params for a certain resource
134 private native String[] getConfiguredResourceParams(String bundleId,