Package com.sun.jini.tool.envcheck.plugins

Source Code of com.sun.jini.tool.envcheck.plugins.CheckJSKPolicy$JSKPolicyTask

/*
* 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.
*/
package com.sun.jini.tool.envcheck.plugins;

import com.sun.jini.tool.envcheck.AbstractPlugin;
import com.sun.jini.tool.envcheck.Plugin;
import com.sun.jini.tool.envcheck.EnvCheck;
import com.sun.jini.tool.envcheck.Reporter;
import com.sun.jini.tool.envcheck.Reporter.Message;
import com.sun.jini.tool.envcheck.SubVMTask;
import com.sun.jini.tool.envcheck.Util;
import com.sun.jini.start.SharedActivationGroupDescriptor;

/**
* Check whether <code>jsk-policy.jar</code> is installed in the extensions
* directory. For both the current VM and for the group VM (if any) load
* <code>net.jini.security.policy.DynamicPolicyProvider</code> and verify that
* it was loaded with the extension classloader by verifying that the parent
* loader is the bootstrap loader (<code>null</code>).  The group VM is checked
* only if the descriptors <code>getServerCommand()</code> method returns
* non-<code>null</code>
*/
public class CheckJSKPolicy extends AbstractPlugin {

    private EnvCheck envCheck;
    private String codebase;
    private static String provider =
  "net.jini.security.policy.DynamicPolicyProvider";

    /**
     * Perform the check both for the current VM, and for the group VM if a
     * <code>SharedActivationGroupDescriptor</code> is available from the plugin
     * container.
     */
    public void run(EnvCheck envCheck) {
  this.envCheck = envCheck;
  checkPolicy(null);
  SharedActivationGroupDescriptor gd = envCheck.getGroupDescriptor();
  if (gd != null) {
      checkPolicy(gd);
  }
    }

    /**
     * Check the policy for the command line or group. If <code>gd</code>
     * is <code>null</code>, the policy of the command line being analyzed
     * is checked.
     *
     * @param gd the group descriptor, or <code>null</code>
     */
    private void checkPolicy(SharedActivationGroupDescriptor gd) {
  String source =
      gd == null ? getString("vmsource")
                 : getString("groupsource", gd.getServerCommand());
  Object o = envCheck.launch(null, gd, taskName("JSKPolicyTask"));
  if (o instanceof Boolean) {
      Message message;
      if (((Boolean) o).booleanValue()) {
    message = new Message(Reporter.INFO,
              getString("policyOK"),
              getString("policyExp"));
      } else {
    message = new Message(Reporter.ERROR,
              getString("policyBad"),
              getString("missingPolicyExp"));
      }
      Reporter.print(message, source);
  } else {
      handleUnexpectedSubtaskReturn(o, source);
  }
    }

    /**
     * The task which checks the group VM.
     */
    public static class JSKPolicyTask implements SubVMTask {
 
  public Object run(String[] args) {
      try {
    Class c = Class.forName(provider);
    if (c.getClassLoader().getParent() == null) {
        return new Boolean(true);
    } else {
        return new Boolean(false);
    }
      } catch (ClassNotFoundException e) {
    return new Boolean(false);
      }
  }
    }
}
TOP

Related Classes of com.sun.jini.tool.envcheck.plugins.CheckJSKPolicy$JSKPolicyTask

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.