com.iflytek.spider.util.SpiderConfiguration.java Source code

Java tutorial

Introduction

Here is the source code for com.iflytek.spider.util.SpiderConfiguration.java

Source

/**
 * 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.iflytek.spider.util;

// JDK imports
import java.util.Enumeration;

import javax.servlet.ServletContext;

import org.apache.hadoop.conf.Configuration;

/**
 * Utility to create Hadoop {@link Configuration}s that include Spider-specific
 * resources.
 */
public class SpiderConfiguration {

    private final static String KEY = SpiderConfiguration.class.getName();

    private SpiderConfiguration() {
    } // singleton

    /** Create a {@link Configuration} for Spider. */
    public static Configuration create() {
        Configuration conf = new Configuration();
        addSpiderResources(conf);
        return conf;
    }

    /**
     * Create a {@link Configuration for Spider invoked with the command line
     * crawl command, i.e. bin/Spider crawl ...
     */
    public static Configuration createCrawlConfiguration() {
        Configuration conf = new Configuration();
        addSpiderResources(conf);
        return conf;
    }

    /**
     * Create a {@link Configuration} for Spider front-end.
     * 
     * If a {@link Configuration} is found in the
     * {@link javax.servlet.ServletContext} it is simply returned, otherwise, a
     * new {@link Configuration} is created using the {@link #create()} method,
     * and then all the init parameters found in the
     * {@link javax.servlet.ServletContext} are added to the
     * {@link Configuration} (the created {@link Configuration} is then saved
     * into the {@link javax.servlet.ServletContext}).
     * 
     * @param application
     *            is the ServletContext whose init parameters must override
     *            those of Spider.
     */
    public static Configuration get(ServletContext application) {
        Configuration conf = (Configuration) application.getAttribute(KEY);
        if (conf == null) {
            conf = create();
            Enumeration<?> e = application.getInitParameterNames();
            while (e.hasMoreElements()) {
                String name = (String) e.nextElement();
                conf.set(name, application.getInitParameter(name));
            }
            application.setAttribute(KEY, conf);
        }
        return conf;
    }

    /**
     * Add the standard Spider resources to {@link Configuration}.
     * 
     * @param conf
     *            Configuration object to which configuration is to be added.
     * @param crawlConfiguration
     *            Whether configuration for command line crawl using 'bin/Spider
     *            crawl' command should be added.
     */
    private static Configuration addSpiderResources(Configuration conf) {
        conf.addResource("spider.xml");
        return conf;
    }
}