Package org.knopflerfish.cpaexample.bundle.admin

Source Code of org.knopflerfish.cpaexample.bundle.admin.AdminActivator

package org.knopflerfish.cpaexample.bundle.admin;

import java.util.List;

import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.framework.BundleException;
import org.osgi.framework.ServiceReference;
import org.osgi.service.condpermadmin.ConditionalPermissionAdmin;
import org.osgi.service.condpermadmin.ConditionalPermissionInfo;
import org.osgi.service.condpermadmin.ConditionalPermissionUpdate;

public class AdminActivator implements BundleActivator {
  /*
  // initial version, for tested bundles without local permission
  private static final String[] ENCODED_PINFO = {
    "allow { [org.osgi.service.condpermadmin.BundleLocationCondition \"file:jars/*\"] (java.security.AllPermission) } \"allToTrusted\"",
    "allow { [org.osgi.service.condpermadmin.BundleLocationCondition \"file:/opt/kf/totest/*\"] (org.osgi.framework.PackagePermission \"*\" \"import\") } \"importToTested\""
  };
  */

  // final version, for tested bundles that use local permissions
  private static final String[] ENCODED_PINFO = {
    "allow { [org.osgi.service.condpermadmin.BundleLocationCondition \"file:jars/*\"] (java.security.AllPermission) } \"allToTrusted\"",
    "allow { [org.osgi.service.condpermadmin.BundleLocationCondition \"file:/opt/kf/totest/cpaexample_user*\"] (java.security.AllPermission) } \"allToUser\"",
    "allow { [org.osgi.service.condpermadmin.BundleLocationCondition \"file:/opt/kf/totest/cpaexample_caller*\"] (java.security.AllPermission) } \"allToCaller\""
  };

  public void start(BundleContext bc) throws BundleException
  {
    ServiceReference sRef =
      bc.getServiceReference(ConditionalPermissionAdmin.class.getName());
    if (sRef != null) {
      ConditionalPermissionAdmin cpa =
        (ConditionalPermissionAdmin) bc.getService(sRef);
    
      installPolicies(cpa, ENCODED_PINFO);
    } else {
      throw new BundleException("Bundle CPA-test can not start, There is no "
          + "ConditinalPermissionAdmin service");
    }
  }

  public void stop(BundleContext context)
  {
  }
   
  void installPolicies(ConditionalPermissionAdmin cpa, String[] pInfos) {
    ConditionalPermissionUpdate cpu = cpa.newConditionalPermissionUpdate();
    List piList = cpu.getConditionalPermissionInfos();
   
    for (int i = 0; i < pInfos.length; i++) {
      String pInfo = pInfos[i];
      ConditionalPermissionInfo cpi = cpa.newConditionalPermissionInfo(pInfo);
      piList.add(cpi);
    }
   
    cpu.commit();
  }
 
}
TOP

Related Classes of org.knopflerfish.cpaexample.bundle.admin.AdminActivator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.