public static ApiContext createChefService()

in chef/core/src/main/java/org/jclouds/karaf/chef/core/ChefHelper.java [310:353]


   public static ApiContext<ChefApi> createChefService(ApiMetadata apiMetadata, String name, String clientName,
         String clientCredential, String clientKeyFile, String validatorName, String validatorCredential,
         String validatorKeyFile, String endpoint) throws Exception {
        if (Strings.isNullOrEmpty(clientName) && apiMetadata != null && !apiMetadata.getDefaultCredential().isPresent()) {
            LOGGER.warn("No client specified for api {}.", apiMetadata.getId());
            return null;
        }

        if (Strings.isNullOrEmpty(validatorName) && apiMetadata != null && !apiMetadata.getDefaultCredential().isPresent()) {
            LOGGER.warn("No validator name specified for api {}.", apiMetadata.getId());
            return null;
        }


        if (Strings.isNullOrEmpty(validatorCredential) && !Strings.isNullOrEmpty(validatorKeyFile)) {
            validatorCredential = credentialsFromPath(validatorKeyFile);
        }

        if (Strings.isNullOrEmpty(clientCredential) && !Strings.isNullOrEmpty(clientKeyFile)) {
            clientCredential = credentialsFromPath(clientKeyFile);
        } else if (Strings.isNullOrEmpty(clientCredential)) {
            clientCredential = credentialForClient(clientName);
        }


        Properties chefConfig = new Properties();
        chefConfig.put(ChefProperties.CHEF_VALIDATOR_NAME, validatorName);
        chefConfig.put(ChefProperties.CHEF_VALIDATOR_CREDENTIAL, validatorCredential);

        ContextBuilder builder = null;
        if (apiMetadata != null) {
            builder = ContextBuilder.newBuilder(apiMetadata).overrides(chefConfig);
        }

        if (!Strings.isNullOrEmpty(endpoint)) {
            builder = builder.endpoint(endpoint);
        }

        builder = builder.name(name).modules(ImmutableSet.<Module>of(new SLF4JLoggingModule()));
        builder = builder.name(name).credentials(clientName, clientCredential).overrides(chefConfig);

        // builder.build() does not compile on JDK 6
        return builder.build(CHEF_TOKEN);
    }