You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@storm.apache.org by pt...@apache.org on 2015/11/05 21:41:29 UTC

[50/60] [abbrv] [partial] storm git commit: Release 2.0.4-SNAPSHOT

http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/LICENSE
----------------------------------------------------------------------
diff --git a/LICENSE b/LICENSE
old mode 100644
new mode 100755

http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/README.md
----------------------------------------------------------------------
diff --git a/README.md b/README.md
old mode 100644
new mode 100755

http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/bin/check_jstorm_Supervisor.sh
----------------------------------------------------------------------
diff --git a/bin/check_jstorm_Supervisor.sh b/bin/check_jstorm_Supervisor.sh
new file mode 100644
index 0000000..1ec4394
--- /dev/null
+++ b/bin/check_jstorm_Supervisor.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+JAVA_HOME=/opt/taobao/java
+export PATH=$PATH:$JAVA_HOME/bin
+
+LOG=/home/admin/logs/check.log
+SP=`ps -ef |grep com.alibaba.jstorm.daemon.supervisor.Supervisor |grep -v grep |wc -l`
+if [ $SP -lt 1 ];then
+	mkdir -p /home/admin/logs
+        echo -e "`date` [ERROR] no process and restart Jstorm Suppervisor" >>$LOG
+        cd /home/admin/bin; nohup /home/admin/jstorm/bin/jstorm supervisor >/dev/null 2>&1  &
+else
+        echo -e "`date`  [INFO:] return $SP Jstorm Supervisor ok " >>$LOG
+fi

http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/bin/jstorm.py
----------------------------------------------------------------------
diff --git a/bin/jstorm.py b/bin/jstorm.py
new file mode 100755
index 0000000..c4b3fe7
--- /dev/null
+++ b/bin/jstorm.py
@@ -0,0 +1,459 @@
+#!/usr/bin/env python
+#
+# 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.
+
+#!/usr/bin/python
+
+import os
+import sys
+import random
+import subprocess as sub
+import getopt
+
+def identity(x):
+    return x
+
+def cygpath(x):
+    command = ["cygpath", "-wp", x]
+    p = sub.Popen(command,stdout=sub.PIPE)
+    output, errors = p.communicate()
+    lines = output.split("\n")
+    return lines[0]
+
+if sys.platform == "cygwin":
+    normclasspath = cygpath
+else:
+    normclasspath = identity
+
+CLIENT_CONF_FILE = ""
+JSTORM_DIR = "/".join(os.path.realpath( __file__ ).split("/")[:-2])
+JSTORM_CONF_DIR = os.getenv("JSTORM_CONF_DIR", JSTORM_DIR + "/conf" )
+LOGBACK_CONF = JSTORM_CONF_DIR + "/jstorm.logback.xml"
+CONFIG_OPTS = []
+EXCLUDE_JARS = []
+INCLUDE_JARS = []
+STATUS = 0
+
+
+def check_java():
+    check_java_cmd = 'which java'
+    ret = os.system(check_java_cmd)
+    if ret != 0:
+        print("Failed to find java, please add java to PATH")
+        sys.exit(-1)
+
+def get_config_opts():
+    global CONFIG_OPTS
+    return "-Dstorm.options=" + (','.join(CONFIG_OPTS)).replace(' ', "%%%%")
+
+def get_client_childopts():
+    ret = (" -Dstorm.root.logger=INFO,stdout -Dlogback.configurationFile=" + JSTORM_DIR +
+           "/conf/client_logback.xml -Dlog4j.configuration=File:" + JSTORM_DIR + 
+           "/conf/client_log4j.properties")
+    if CLIENT_CONF_FILE != "":
+        ret += (" -Dstorm.conf.file=" + CLIENT_CONF_FILE)
+    return ret
+
+def get_server_childopts(log_name):
+    ret = (" -Dlogfile.name=%s -Dlogback.configurationFile=%s"  %(log_name, LOGBACK_CONF))
+    return ret
+
+if not os.path.exists(JSTORM_DIR + "/RELEASE"):
+    print "******************************************"
+    print "The jstorm client can only be run from within a release. You appear to be trying to run the client from a checkout of JStorm's source code."
+    print "\nYou can download a JStorm release "
+    print "******************************************"
+    sys.exit(1)  
+
+def get_jars_full(adir):
+    files = os.listdir(adir)
+    ret = []
+    for f in files:
+        if f.endswith(".jar") == False:
+            continue
+        filter = False
+        for exclude_jar in EXCLUDE_JARS:
+            if f.find(exclude_jar) >= 0:
+                filter = True
+                break
+        
+        if filter == True:
+            print "Don't add " + f + " to classpath"
+        else:
+            ret.append(adir + "/" + f)
+    return ret
+
+def get_classpath(extrajars):
+    ret = []
+    ret.extend(extrajars)
+    ret.extend(get_jars_full(JSTORM_DIR))
+    ret.extend(get_jars_full(JSTORM_DIR + "/lib"))
+    ret.extend(INCLUDE_JARS)
+    
+    return normclasspath(":".join(ret))
+
+def confvalue(name, extrapaths):
+    command = [
+        "java", "-client", "-Xms256m", "-Xmx256m", get_config_opts(), "-cp", get_classpath(extrapaths), "backtype.storm.command.config_value", name
+    ]
+    p = sub.Popen(command, stdout=sub.PIPE)
+    output, errors = p.communicate()
+    lines = output.split("\n")
+    for line in lines:
+        tokens = line.split(" ")
+        if tokens[0] == "VALUE:":
+            return " ".join(tokens[1:])
+    print "Failed to get config " + name
+    print errors
+    print output
+
+def print_localconfvalue(name):
+    """Syntax: [jstorm localconfvalue conf-name]
+
+    Prints out the value for conf-name in the local JStorm configs. 
+    The local JStorm configs are the ones in ~/.jstorm/storm.yaml merged 
+    in with the configs in defaults.yaml.
+    """
+    print name + ": " + confvalue(name, [JSTORM_CONF_DIR])
+
+def print_remoteconfvalue(name):
+    """Syntax: [jstorm remoteconfvalue conf-name]
+
+    Prints out the value for conf-name in the cluster's JStorm configs. 
+    The cluster's JStorm configs are the ones in $STORM-PATH/conf/storm.yaml 
+    merged in with the configs in defaults.yaml. 
+
+    This command must be run on a cluster machine.
+    """
+    print name + ": " + confvalue(name, [JSTORM_CONF_DIR])
+
+def exec_storm_class(klass, jvmtype="-server", childopts="", extrajars=[], args=[]):
+    nativepath = confvalue("java.library.path", extrajars)
+    args_str = " ".join(map(lambda s: "\"" + s + "\"", args))
+    command = "java " + jvmtype + " -Djstorm.home=" + JSTORM_DIR + " " + get_config_opts() + " -Djava.library.path=" + nativepath + " " + childopts + " -cp " + get_classpath(extrajars) + " " + klass + " " + args_str
+    print "Running: " + command    
+    global STATUS
+    STATUS = os.system(command)
+
+def jar(jarfile, klass, *args):
+    """Syntax: [jstorm jar topology-jar-path class ...]
+
+    Runs the main method of class with the specified arguments. 
+    The jstorm jars and configs in $JSTORM_CONF_DIR/storm.yaml are put on the classpath. 
+    The process is configured so that StormSubmitter 
+    (https://github.com/alibaba/jstorm/wiki/JStorm-Chinese-Documentation)
+    will upload the jar at topology-jar-path when the topology is submitted.
+    """
+    childopts = "-Dstorm.jar=" + jarfile + get_client_childopts()
+    exec_storm_class(
+        klass,
+        jvmtype="-client -Xms256m -Xmx256m",
+        extrajars=[jarfile, JSTORM_CONF_DIR, JSTORM_DIR + "/bin", CLIENT_CONF_FILE],
+        args=args,
+        childopts=childopts)
+
+def zktool(*args):
+    """Syntax: [jstorm jar topology-jar-path class ...]
+
+    Runs the main method of class with the specified arguments. 
+    The jstorm jars and configs in ~/.jstorm are put on the classpath. 
+    The process is configured so that StormSubmitter 
+    (https://github.com/alibaba/jstorm/wiki/JStorm-Chinese-Documentation)
+    will upload the jar at topology-jar-path when the topology is submitted.
+    """
+    childopts = get_client_childopts()
+    exec_storm_class(
+        "com.alibaba.jstorm.zk.ZkTool",
+        jvmtype="-client -Xms256m -Xmx256m",
+        extrajars=[ JSTORM_CONF_DIR, CLIENT_CONF_FILE],
+        args=args,
+        childopts=childopts)
+
+def kill(*args):
+    """Syntax: [jstorm kill topology-name [wait-time-secs]]
+
+    Kills the topology with the name topology-name. JStorm will 
+    first deactivate the topology's spouts for the duration of 
+    the topology's message timeout to allow all messages currently 
+    being processed to finish processing. JStorm will then shutdown 
+    the workers and clean up their state. You can override the length 
+    of time JStorm waits between deactivation and shutdown.
+    """
+    childopts = get_client_childopts()
+    exec_storm_class(
+        "backtype.storm.command.kill_topology", 
+        args=args, 
+        jvmtype="-client -Xms256m -Xmx256m", 
+        extrajars=[JSTORM_CONF_DIR, JSTORM_DIR + "/bin", CLIENT_CONF_FILE],
+        childopts=childopts)
+
+def activate(*args):
+    """Syntax: [jstorm activate topology-name]
+
+    Activates the specified topology's spouts.
+    """
+    childopts = get_client_childopts()
+    exec_storm_class(
+        "backtype.storm.command.activate", 
+        args=args, 
+        jvmtype="-client -Xms256m -Xmx256m", 
+        extrajars=[JSTORM_CONF_DIR, JSTORM_DIR + "/bin", CLIENT_CONF_FILE],
+        childopts=childopts)
+
+def deactivate(*args):
+    """Syntax: [jstorm deactivate topology-name]
+
+    Deactivates the specified topology's spouts.
+    """
+    childopts = get_client_childopts()
+    exec_storm_class(
+        "backtype.storm.command.deactivate", 
+        args=args, 
+        jvmtype="-client -Xms256m -Xmx256m", 
+        extrajars=[JSTORM_CONF_DIR, JSTORM_DIR + "/bin", CLIENT_CONF_FILE],
+        childopts=childopts)
+
+def rebalance(*args):
+    """Syntax: [jstorm rebalance topology-name [-w wait-time-secs]]
+
+    Sometimes you may wish to spread out where the workers for a topology 
+    are running. For example, let's say you have a 10 node cluster running 
+    4 workers per node, and then let's say you add another 10 nodes to 
+    the cluster. You may wish to have JStorm spread out the workers for the 
+    running topology so that each node runs 2 workers. One way to do this 
+    is to kill the topology and resubmit it, but JStorm provides a "rebalance" 
+    command that provides an easier way to do this.
+
+    Rebalance will first deactivate the topology for the duration of the 
+    message timeout  and then redistribute 
+    the workers evenly around the cluster. The topology will then return to 
+    its previous state of activation (so a deactivated topology will still 
+    be deactivated and an activated topology will go back to being activated).
+    """
+    childopts = get_client_childopts()
+    exec_storm_class(
+        "backtype.storm.command.rebalance", 
+        args=args, 
+        jvmtype="-client -Xms256m -Xmx256m", 
+        extrajars=[JSTORM_CONF_DIR, JSTORM_DIR + "/bin", CLIENT_CONF_FILE],
+        childopts=childopts)
+
+def restart(*args):
+    """Syntax: [jstorm restart topology-name [conf]]
+    """
+    childopts = get_client_childopts()
+    exec_storm_class(
+        "backtype.storm.command.restart", 
+        args=args, 
+        jvmtype="-client -Xms256m -Xmx256m", 
+        extrajars=[JSTORM_CONF_DIR, JSTORM_DIR + "/bin", CLIENT_CONF_FILE],
+        childopts=childopts)
+
+def update_config(*args):
+    """Syntax: [jstorm restart topology-name [conf]]
+    """
+    childopts = get_client_childopts()
+    exec_storm_class(
+        "backtype.storm.command.update_config",
+        args=args,
+        jvmtype="-client -Xms256m -Xmx256m",
+        extrajars=[JSTORM_CONF_DIR, JSTORM_DIR + "/bin", CLIENT_CONF_FILE],
+        childopts=childopts)
+
+def nimbus():
+    """Syntax: [jstorm nimbus]
+
+    Launches the nimbus daemon. This command should be run under 
+    supervision with a tool like daemontools or monit. 
+
+    See Setting up a JStorm cluster for more information.
+    (https://github.com/alibaba/jstorm/wiki/JStorm-Chinese-Documentation)
+    """
+    cppaths = [JSTORM_CONF_DIR]
+    nimbus_classpath = confvalue("nimbus.classpath", cppaths)
+    childopts = confvalue("nimbus.childopts", cppaths) + get_server_childopts("nimbus.log")
+    exec_storm_class(
+        "com.alibaba.jstorm.daemon.nimbus.NimbusServer", 
+        jvmtype="-server", 
+        extrajars=(cppaths+[nimbus_classpath]), 
+        childopts=childopts)
+
+def supervisor():
+    """Syntax: [jstorm supervisor]
+
+    Launches the supervisor daemon. This command should be run 
+    under supervision with a tool like daemontools or monit. 
+
+    See Setting up a JStorm cluster for more information.
+    (https://github.com/alibaba/jstorm/wiki/JStorm-Chinese-Documentation)
+    """
+    cppaths = [JSTORM_CONF_DIR]
+    childopts = confvalue("supervisor.childopts", cppaths) + get_server_childopts("supervisor.log")
+    exec_storm_class(
+        "com.alibaba.jstorm.daemon.supervisor.Supervisor", 
+        jvmtype="-server", 
+        extrajars=cppaths, 
+        childopts=childopts)
+
+
+def drpc():
+    """Syntax: [jstorm drpc]
+
+    Launches a DRPC daemon. This command should be run under supervision 
+    with a tool like daemontools or monit. 
+
+    See Distributed RPC for more information.
+    (https://github.com/alibaba/jstorm/wiki/JStorm-Chinese-Documentation)
+    """
+    cppaths = [JSTORM_CONF_DIR]
+    childopts = confvalue("drpc.childopts", cppaths) + get_server_childopts("drpc.log")
+    exec_storm_class(
+        "com.alibaba.jstorm.drpc.Drpc", 
+        jvmtype="-server", 
+        extrajars=cppaths, 
+        childopts=childopts)
+
+def print_classpath():
+    """Syntax: [jstorm classpath]
+
+    Prints the classpath used by the jstorm client when running commands.
+    """
+    print get_classpath([])
+
+def print_commands():
+    """Print all client commands and link to documentation"""
+    print "jstorm command [--config client_storm.yaml] [--exclude-jars exclude1.jar,exclude2.jar] [-c key1=value1,key2=value2][command parameter]"
+    print "Commands:\n\t",  "\n\t".join(sorted(COMMANDS.keys()))
+    print "\n\t[--config client_storm.yaml]\t\t\t optional, setting client's storm.yaml"
+    print "\n\t[--exclude-jars exclude1.jar,exclude2.jar]\t optional, exclude jars, avoid jar conflict"
+    print "\n\t[-c key1=value1,key2=value2]\t\t\t optional, add key=value pair to configuration"
+    print "\nHelp:", "\n\thelp", "\n\thelp <command>"
+    print "\nDocumentation for the jstorm client can be found at https://github.com/alibaba/jstorm/wiki/JStorm-Chinese-Documentation\n"
+
+def print_usage(command=None):
+    """Print one help message or list of available commands"""
+    if command != None:
+        if COMMANDS.has_key(command):
+            print (COMMANDS[command].__doc__ or 
+                  "No documentation provided for <%s>" % command)
+        else:
+           print "<%s> is not a valid command" % command
+    else:
+        print_commands()
+
+def unknown_command(*args):
+    print "Unknown command: [jstorm %s]" % ' '.join(sys.argv[1:])
+    print_usage()
+
+def metrics_Monitor(*args):
+    """Syntax: [jstorm metricsMonitor topologyname bool]
+    Enable or disable the metrics monitor of one topology.
+    """
+    childopts = get_client_childopts()
+    exec_storm_class(
+        "backtype.storm.command.metrics_monitor", 
+        args=args, 
+        jvmtype="-client -Xms256m -Xmx256m", 
+        extrajars=[JSTORM_CONF_DIR, JSTORM_DIR + "/bin", CLIENT_CONF_FILE],
+        childopts=childopts)
+
+def list(*args):
+    """Syntax: [jstorm list]
+
+    List cluster information
+    """
+    childopts = get_client_childopts()
+    exec_storm_class(
+        "backtype.storm.command.list", 
+        args=args, 
+        jvmtype="-client -Xms256m -Xmx256m", 
+        extrajars=[JSTORM_CONF_DIR, JSTORM_DIR + "/bin", CLIENT_CONF_FILE],
+        childopts=childopts)
+
+COMMANDS = {"jar": jar, "kill": kill, "nimbus": nimbus, "zktool": zktool,
+            "drpc": drpc, "supervisor": supervisor, "localconfvalue": print_localconfvalue,
+            "remoteconfvalue": print_remoteconfvalue, "classpath": print_classpath,
+            "activate": activate, "deactivate": deactivate, "rebalance": rebalance, "help": print_usage,
+            "metricsMonitor": metrics_Monitor, "list": list, "restart": restart, "update_config": update_config}
+
+def parse_config(config_list):
+    global CONFIG_OPTS
+    if len(config_list) > 0:
+        for config in config_list:
+            CONFIG_OPTS.append(config)
+
+def parse_exclude_jars(jars):
+    global EXCLUDE_JARS
+    EXCLUDE_JARS = jars.split(",")
+    print " Excludes jars:"
+    print EXCLUDE_JARS
+    
+def parse_include_jars(jars):
+    global INCLUDE_JARS
+    INCLUDE_JARS = jars.split(",")
+    print " Include jars:"
+    print INCLUDE_JARS
+
+def parse_config_opts(args):
+  curr = args[:]
+  curr.reverse()
+  config_list = []
+  args_list = []
+  
+  while len(curr) > 0:
+    token = curr.pop()
+    if token == "-c":
+      config_list.append(curr.pop())
+    elif token == "--config":
+      global CLIENT_CONF_FILE
+      CLIENT_CONF_FILE = curr.pop()
+    elif token == "--exclude-jars":
+      parse_exclude_jars(curr.pop())
+    elif token == "--include-jars":
+      parse_include_jars(curr.pop())
+    else:
+      args_list.append(token)
+  
+  return config_list, args_list
+    
+def main():
+    if len(sys.argv) <= 1:
+        print_usage()
+        sys.exit(-1)
+    global CONFIG_OPTS
+    config_list, args = parse_config_opts(sys.argv[1:])
+    parse_config(config_list)
+    COMMAND = args[0]
+    ARGS = args[1:]
+    if COMMANDS.get(COMMAND) == None:
+        unknown_command(COMMAND)
+        sys.exit(-1)
+    if len(ARGS) != 0 and ARGS[0] == "help":
+        print_usage(COMMAND)
+        sys.exit(0)
+    try:
+        (COMMANDS.get(COMMAND, "help"))(*ARGS)
+    except Exception, msg:
+        print(msg)
+        print_usage(COMMAND)
+        sys.exit(-1)
+    sys.exit(STATUS)
+
+if __name__ == "__main__":
+    check_java()
+    main()
+

http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/bin/start.sh
----------------------------------------------------------------------
diff --git a/bin/start.sh b/bin/start.sh
new file mode 100644
index 0000000..01f81e0
--- /dev/null
+++ b/bin/start.sh
@@ -0,0 +1,78 @@
+#!/bin/sh
+
+if [ -e  ~/.bashrc ]
+then
+    source ~/.bashrc
+fi
+
+if [ -e  ~/.bash_profile ]
+then
+    source ~/.bash_profile
+fi
+
+if [ "x$JAVA_HOME" != "x" ]
+then
+    echo "JAVA_HOME has been set " 
+else
+    export JAVA_HOME=/opt/taobao/java
+fi
+echo "JAVA_HOME =" $JAVA_HOME
+
+if [ "x$JSTORM_HOME" != "x" ]
+then
+    echo "JSTORM_HOME has been set "
+else
+    export JSTORM_HOME=/home/admin/jstorm
+fi
+echo "JSTORM_HOME =" $JSTORM_HOME
+
+if [ "x$JSTORM_CONF_DIR_PATH" != "x" ]
+then
+    echo "JSTORM_CONF_DIR_PATH has been set " 
+else
+    export JSTORM_CONF_DIR_PATH=$JSTORM_HOME/conf
+fi
+echo "JSTORM_CONF_DIR_PATH =" $JSTORM_CONF_DIR_PATH
+
+
+
+export PATH=$JAVA_HOME/bin:$JSTORM_HOME/bin:$PATH
+
+
+which java
+
+if [ $? -eq 0 ]
+then
+    echo "Find java"
+else
+    echo "No java, please install java firstly !!!"
+    exit 1
+fi
+
+function startJStorm()
+{
+	PROCESS=$1
+  echo "start $PROCESS"
+  cd $JSTORM_HOME/bin; nohup $JSTORM_HOME/bin/jstorm $PROCESS >/dev/null 2>&1 &
+	sleep 4
+	rm -rf nohup
+	ps -ef|grep $2
+}
+
+
+
+HOSTNAME=`hostname -i`
+NIMBUS_HOST=`grep "nimbus.host:" $JSTORM_CONF_DIR_PATH/storm.yaml  | grep -w $HOSTNAME`
+SUPERVISOR_HOST_START=`grep "supervisor.host.start:" $JSTORM_CONF_DIR_PATH/storm.yaml  | grep -w "false"`
+
+if [ "X${NIMBUS_HOST}" != "X" ]
+then
+	startJStorm "nimbus" "NimbusServer"
+fi
+
+if [ "X${SUPERVISOR_HOST_START}" == "X" ]
+then
+	startJStorm "supervisor" "Supervisor"
+fi
+
+echo "Successfully  start jstorm daemon...."

http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/bin/stop.sh
----------------------------------------------------------------------
diff --git a/bin/stop.sh b/bin/stop.sh
new file mode 100755
index 0000000..aa7935a
--- /dev/null
+++ b/bin/stop.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+
+function killJStorm()
+{
+  ps -ef|grep $1|grep -v grep |awk '{print $2}' |xargs kill
+	sleep 1
+	ps -ef|grep $1
+
+	echo "kill "$1
+}
+
+killJStorm "Supervisor"
+killJStorm "NimbusServer"
+echo "Successfully stop jstorm"

http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/conf/cgconfig.conf
----------------------------------------------------------------------
diff --git a/conf/cgconfig.conf b/conf/cgconfig.conf
new file mode 100755
index 0000000..c21cd13
--- /dev/null
+++ b/conf/cgconfig.conf
@@ -0,0 +1,18 @@
+mount {
+       cpu = /cgroup/cpu;
+}
+ 
+group jstorm {
+       perm {
+               task {
+                      uid = 500;
+                      gid = 500;
+               }
+               admin {
+                      uid = 500;
+                      gid = 500;
+               }
+       }
+       cpu {
+       }
+}

http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/conf/client_log4j.properties
----------------------------------------------------------------------
diff --git a/conf/client_log4j.properties b/conf/client_log4j.properties
new file mode 100755
index 0000000..e80ce0b
--- /dev/null
+++ b/conf/client_log4j.properties
@@ -0,0 +1,19 @@
+#This file should be deleted when deployed to server (workaround to leiningen classpath putting dev resources on path)
+#This file is needed for tests
+
+
+storm.root.logger=INFO, D
+
+log4j.rootLogger=${storm.root.logger}
+#log4j.rootLogger=INFO,stdout, D
+
+
+
+### output to console ###
+log4j.appender.stdout = org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.Target = System.out
+log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern =  [%p  %d{yyyy-MM-dd HH:mm:ss} %c{1}:%L %t] %m%n
+
+log4j.category.org.apache.zookeeper=warn
+log4j.category.com.netflix.curator=warn
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/conf/client_logback.xml
----------------------------------------------------------------------
diff --git a/conf/client_logback.xml b/conf/client_logback.xml
new file mode 100755
index 0000000..02ef72e
--- /dev/null
+++ b/conf/client_logback.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<configuration scan="true" scanPeriod="30 seconds">
+	<appender name="A1" class="ch.qos.logback.core.ConsoleAppender">
+		<encoder>
+			<pattern>%-4r [%t] %-5p %c - %m%n</pattern>
+		</encoder>
+	</appender>
+	<logger name="org.apache.zookeeper" level="ERROR" />
+	<logger name="com.netflix.curator" level="ERROR" />
+	<logger name="com.alibaba.jstorm.common.metric" level="ERROR" />	
+	<logger name="com.alibaba.jstorm.daemon.nimbus.TopologyMetricsRunnable" level="ERROR" />
+	<logger name="com.alibaba.jstorm.metric" level="ERROR" />
+
+	<root level="INFO">
+		<appender-ref ref="A1" />
+	</root>
+</configuration>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/conf/jstorm.log4j.properties
----------------------------------------------------------------------
diff --git a/conf/jstorm.log4j.properties b/conf/jstorm.log4j.properties
new file mode 100755
index 0000000..ef31aed
--- /dev/null
+++ b/conf/jstorm.log4j.properties
@@ -0,0 +1,50 @@
+#This file should be deleted when deployed to server (workaround to leiningen classpath putting dev resources on path)
+#This file is needed for tests
+
+storm.root.logger=INFO, D
+
+log4j.rootLogger=${storm.root.logger}
+#log4j.rootLogger=INFO,stdout, D, jmonitor
+
+### output to console ###
+### In order to avoid dead lock, redirect supervisor out/err to /dev/null
+### Stdout logger can't be used until manually start worker
+log4j.appender.stdout = org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.Target = System.out
+log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern =  [%p  %d{yyyy-MM-dd HH:mm:ss} %c{1}:%L %t] %m%n
+
+### output to file ###
+log4j.appender.D = org.apache.log4j.RollingFileAppender
+log4j.appender.D.File = ${jstorm.home}/logs/${logfile.name}
+log4j.appender.D.Append = true
+log4j.appender.D.Threshold = INFO
+log4j.appender.D.MaxFileSize=1GB
+log4j.appender.D.MaxBackupIndex=5
+log4j.appender.D.layout = org.apache.log4j.PatternLayout
+log4j.appender.D.layout.ConversionPattern = [%p  %d{yyyy-MM-dd HH:mm:ss} %c{1}:%L %t] %m%n
+
+log4j.logger.com.alibaba.jstorm=INFO
+
+### jstorm metrics ###
+log4j.logger.com.alibaba.jstorm.daemon.worker.metrics= INFO, M
+log4j.additivity.com.alibaba.jstorm.daemon.worker.metrics=false
+log4j.logger.com.alibaba.jstorm.task.heartbeat= INFO, M
+log4j.additivity.com.alibaba.jstorm.task.heartbeat=false
+log4j.logger.com.alibaba.jstorm.daemon.worker.hearbeat= INFO, M
+log4j.additivity.com.alibaba.jstorm.daemon.worker.hearbeat=false
+log4j.logger.com.alibaba.jstorm.metric= INFO, M
+log4j.additivity.com.alibaba.jstorm.metric=false
+
+log4j.appender.M = org.apache.log4j.RollingFileAppender
+log4j.appender.M.File = ${jstorm.home}/logs/${logfile.name}.metrics
+log4j.appender.M.Append = true
+log4j.appender.M.Threshold = INFO 
+log4j.appender.M.MaxFileSize=100MB
+log4j.appender.M.MaxBackupIndex=5
+log4j.appender.M.layout = org.apache.log4j.PatternLayout
+log4j.appender.M.layout.ConversionPattern = [%p  %d{yyyy-MM-dd HH:mm:ss} %c{1}:%L %t] %m%n
+
+ 
+##################jmonitor appender ##########################
+#log4j.appender.jmonitor=com.alibaba.alimonitor.jmonitor.plugin.log4j.JMonitorLog4jAppender

http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/conf/jstorm.logback.xml
----------------------------------------------------------------------
diff --git a/conf/jstorm.logback.xml b/conf/jstorm.logback.xml
new file mode 100755
index 0000000..bd097ea
--- /dev/null
+++ b/conf/jstorm.logback.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<configuration scan="true" scanPeriod="60 seconds">
+	<appender name="A1"
+		class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<file>${jstorm.home}/logs/${logfile.name}</file>
+		<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+			<fileNamePattern>${jstorm.home}/logs/${logfile.name}.%i</fileNamePattern>
+			<minIndex>1</minIndex>
+			<maxIndex>5</maxIndex>
+		</rollingPolicy>
+
+		<triggeringPolicy
+			class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+			<maxFileSize>1GB</maxFileSize>
+		</triggeringPolicy>
+
+		<encoder>
+			<pattern>[%p %d{yyyy-MM-dd HH:mm:ss} %c{1}:%L %t] %m%n</pattern>
+
+		</encoder>
+	</appender>
+
+	<appender name="METRICS"
+		class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<file>${jstorm.home}/logs/${logfile.name}.metrics</file>
+		<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+			<fileNamePattern>${jstorm.home}/logs/${logfile.name}.metrics.%i</fileNamePattern>
+			<minIndex>1</minIndex>
+			<maxIndex>5</maxIndex>
+		</rollingPolicy>
+
+		<triggeringPolicy
+			class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+			<maxFileSize>100MB</maxFileSize>
+		</triggeringPolicy>
+
+		<encoder>
+			<pattern>[%p %d{yyyy-MM-dd HH:mm:ss} %c{1}:%L %t] %m%n</pattern>
+		</encoder>
+	</appender>
+
+	<root level="INFO">
+		<appender-ref ref="A1" />
+	</root>
+
+	<logger name="com.alibaba.jstorm"
+		additivity="false">
+		<level value="INFO" />
+		<appender-ref ref="A1" />
+	</logger>
+
+	<logger name="com.alibaba.jstorm.common.metric"
+		additivity="false">
+		<level value="INFO" />
+		<appender-ref ref="METRICS" />
+	</logger>
+	
+	<logger name="com.alibaba.jstorm.task.heartbeat"
+		additivity="false">
+		<level value="INFO" />
+		<appender-ref ref="METRICS" />
+	</logger>
+	
+	<logger name="com.alibaba.jstorm.daemon.worker.hearbeat"
+		additivity="false">
+		<level value="INFO" />
+		<appender-ref ref="METRICS" />
+	</logger>
+	
+	<logger name="com.alibaba.jstorm.daemon.nimbus.TopologyMetricsRunnable"
+		additivity="false">
+		<level value="INFO" />
+		<appender-ref ref="METRICS" />
+	</logger>
+	
+	<logger name="com.alibaba.jstorm.metric"
+		additivity="false">
+		<level value="INFO" />
+		<appender-ref ref="METRICS" />
+	</logger>
+
+</configuration>
+ 
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/conf/storm.yaml
----------------------------------------------------------------------
diff --git a/conf/storm.yaml b/conf/storm.yaml
new file mode 100755
index 0000000..99bc984
--- /dev/null
+++ b/conf/storm.yaml
@@ -0,0 +1,83 @@
+########### These MUST be filled in for a storm configuration
+ storm.zookeeper.servers:
+     - "localhost"
+
+ storm.zookeeper.root: "/jstorm"
+ 
+ #nimbus.host is being used by $JSTORM_HOME/bin/start.sh
+ #it only support IP, please don't set hostname
+ # For example 
+ # nimbus.host: "10.132.168.10, 10.132.168.45"
+ #nimbus.host: "localhost"
+ 
+# %JSTORM_HOME% is the jstorm home directory
+ storm.local.dir: "%JSTORM_HOME%/data"
+ 
+ java.library.path: "/usr/local/lib:/opt/local/lib:/usr/lib"
+
+
+
+# if supervisor.slots.ports is null, 
+# the port list will be generated by cpu cores and system memory size 
+# for example, if there are 24 cpu cores and supervisor.slots.port.cpu.weight is 1.2
+# then there are 24/1.2 ports for cpu, 
+# there are system_physical_memory_size/worker.memory.size ports for memory 
+# The final port number is min(cpu_ports, memory_port)
+ supervisor.slots.ports.base: 6800
+ supervisor.slots.port.cpu.weight: 1
+ supervisor.slots.ports: null
+#supervisor.slots.ports:
+#    - 6800
+#    - 6801
+#    - 6802
+#    - 6803
+
+# Default disable user-define classloader
+# If there are jar conflict between jstorm and application, 
+# please enable it 
+ topology.enable.classloader: false
+
+# enable supervisor use cgroup to make resource isolation
+# Before enable it, you should make sure:
+# 	1. Linux version (>= 2.6.18)
+# 	2. Have installed cgroup (check the file's existence:/proc/cgroups)
+#	3. You should start your supervisor on root
+# You can get more about cgroup:
+#   http://t.cn/8s7nexU
+ supervisor.enable.cgroup: false
+
+
+### Netty will send multiple messages in one batch  
+### Setting true will improve throughput, but more latency
+ storm.messaging.netty.transfer.async.batch: true
+
+### if this setting  is true, it will use disruptor as internal queue, which size is limited
+### otherwise, it will use LinkedBlockingDeque as internal queue , which size is unlimited
+### generally when this setting is true, the topology will be more stable,
+### but when there is a data loop flow, for example A -> B -> C -> A
+### and the data flow occur blocking, please set this as false
+ topology.buffer.size.limited: true
+ 
+### default worker memory size, unit is byte
+ worker.memory.size: 2147483648
+
+# Metrics Monitor
+# topology.performance.metrics: it is the switch flag for performance 
+# purpose. When it is disabled, the data of timer and histogram metrics 
+# will not be collected.
+# topology.alimonitor.metrics.post: If it is disable, metrics data
+# will only be printed to log. If it is enabled, the metrics data will be
+# posted to alimonitor besides printing to log.
+ topology.performance.metrics: true
+ topology.alimonitor.metrics.post: false
+
+# UI MultiCluster
+# Following is an example of multicluster UI configuration
+# ui.clusters:
+#     - {
+#         name: "jstorm",
+#         zkRoot: "/jstorm",
+#         zkServers:
+#             [ "localhost"],
+#         zkPort: 2181,
+#       }

http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/dev-tools/add_apache_license.sh
----------------------------------------------------------------------
diff --git a/dev-tools/add_apache_license.sh b/dev-tools/add_apache_license.sh
new file mode 100755
index 0000000..26a0054
--- /dev/null
+++ b/dev-tools/add_apache_license.sh
@@ -0,0 +1 @@
+find . -name \*.java -exec sh -c "if ! grep -q 'LICENSE-2.0' '{}';then mv '{}' tmp && cp LICENSEHEADER.txt '{}' && cat tmp >> '{}' && rm tmp;fi" \;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/dev-tools/java_license_header.txt
----------------------------------------------------------------------
diff --git a/dev-tools/java_license_header.txt b/dev-tools/java_license_header.txt
new file mode 100755
index 0000000..7e66353
--- /dev/null
+++ b/dev-tools/java_license_header.txt
@@ -0,0 +1,17 @@
+/**
+ * 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.
+ */

http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/dev-tools/py_license_header.txt
----------------------------------------------------------------------
diff --git a/dev-tools/py_license_header.txt b/dev-tools/py_license_header.txt
new file mode 100755
index 0000000..0896fcd
--- /dev/null
+++ b/dev-tools/py_license_header.txt
@@ -0,0 +1,18 @@
+#!/usr/bin/env python
+#
+# 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.
+

http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/dev-tools/storm-eclipse-java-formatter.xml
----------------------------------------------------------------------
diff --git a/dev-tools/storm-eclipse-java-formatter.xml b/dev-tools/storm-eclipse-java-formatter.xml
new file mode 100755
index 0000000..25e6f92
--- /dev/null
+++ b/dev-tools/storm-eclipse-java-formatter.xml
@@ -0,0 +1,291 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<profiles version="12">
+<profile kind="CodeFormatterProfile" name="Apache Storm Java Formatter" version="12">
+<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.disabling_tag" value="@formatter:off"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_field" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.use_on_off_tags" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_ellipsis" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_multiple_fields" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression" value="80"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_binary_operator" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_array_initializer" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_package" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.continuation_indentation" value="2"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_binary_operator" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_package" value="0"/>
+<setting id="org.eclipse.jdt.core.compiler.source" value="1.7"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_line_comments" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.join_wrapped_lines" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_member_type" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.align_type_members_on_columns" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_unary_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.indent_parameter_description" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.lineSplit" value="160"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indentation.size" value="4"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.enabling_tag" value="@formatter:on"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_assignment" value="16"/>
+<setting id="org.eclipse.jdt.core.compiler.problem.assertIdentifier" value="error"/>
+<setting id="org.eclipse.jdt.core.formatter.tabulation.char" value="space"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_body" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_method" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_method_declaration" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_switch" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.compiler.problem.enumIdentifier" value="error"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_ellipsis" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_method_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.compact_else_if" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_constant" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.indent_root_tags" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.tabulation.size" value="4"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_empty_lines" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block_in_case" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter" value="insert"/>
+<setting id="org.eclipse.jdt.core.compiler.compliance" value="1.7"/>
+<setting id="org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer" value="2"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_unary_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_binary_expression" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode" value="enabled"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_label" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_javadoc_comments" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.line_length" value="160"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_import_groups" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.wrap_before_binary_operator" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_block" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.join_lines_in_comments" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_compact_if" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_imports" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_html" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_source_code" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer" value="insert"/>
+<setting id="org.eclipse.jdt.core.compiler.codegen.targetPlatform" value="1.7"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_resources_in_try" value="160"/>
+<setting id="org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_header" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_block_comments" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_enum_constants" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_type_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_imports" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line" value="false"/>
+</profile>
+</profiles>

http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/docs/log.test.xlsx
----------------------------------------------------------------------
diff --git a/docs/log.test.xlsx b/docs/log.test.xlsx
new file mode 100755
index 0000000..b178ba7
Binary files /dev/null and b/docs/log.test.xlsx differ

http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/example/sequence-split-merge/.classpath
----------------------------------------------------------------------
diff --git a/example/sequence-split-merge/.classpath b/example/sequence-split-merge/.classpath
new file mode 100755
index 0000000..f8ce0d3
--- /dev/null
+++ b/example/sequence-split-merge/.classpath
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" output="target/classes" path="src/main/java">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>

http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/example/sequence-split-merge/.gitignore
----------------------------------------------------------------------
diff --git a/example/sequence-split-merge/.gitignore b/example/sequence-split-merge/.gitignore
new file mode 100755
index 0000000..1dd3331
--- /dev/null
+++ b/example/sequence-split-merge/.gitignore
@@ -0,0 +1,2 @@
+/target/
+/target/

http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/example/sequence-split-merge/.project
----------------------------------------------------------------------
diff --git a/example/sequence-split-merge/.project b/example/sequence-split-merge/.project
new file mode 100755
index 0000000..4269e67
--- /dev/null
+++ b/example/sequence-split-merge/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>sequence-split-merge</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+	</natures>
+</projectDescription>

http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/example/sequence-split-merge/.settings/org.eclipse.core.resources.prefs
----------------------------------------------------------------------
diff --git a/example/sequence-split-merge/.settings/org.eclipse.core.resources.prefs b/example/sequence-split-merge/.settings/org.eclipse.core.resources.prefs
new file mode 100755
index 0000000..8bc0e1c
--- /dev/null
+++ b/example/sequence-split-merge/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,5 @@
+eclipse.preferences.version=1
+encoding//src/main/java=UTF-8
+encoding//src/test/java=UTF-8
+encoding//src/test/resources=UTF-8
+encoding/<project>=UTF-8

http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/example/sequence-split-merge/.settings/org.eclipse.jdt.core.prefs
----------------------------------------------------------------------
diff --git a/example/sequence-split-merge/.settings/org.eclipse.jdt.core.prefs b/example/sequence-split-merge/.settings/org.eclipse.jdt.core.prefs
new file mode 100755
index 0000000..14f521d
--- /dev/null
+++ b/example/sequence-split-merge/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,5 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.source=1.6

http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/example/sequence-split-merge/.settings/org.eclipse.m2e.core.prefs
----------------------------------------------------------------------
diff --git a/example/sequence-split-merge/.settings/org.eclipse.m2e.core.prefs b/example/sequence-split-merge/.settings/org.eclipse.m2e.core.prefs
new file mode 100755
index 0000000..14b697b
--- /dev/null
+++ b/example/sequence-split-merge/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1

http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/example/sequence-split-merge/conf/conf.prop
----------------------------------------------------------------------
diff --git a/example/sequence-split-merge/conf/conf.prop b/example/sequence-split-merge/conf/conf.prop
old mode 100644
new mode 100755

http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/example/sequence-split-merge/conf/conf.yaml
----------------------------------------------------------------------
diff --git a/example/sequence-split-merge/conf/conf.yaml b/example/sequence-split-merge/conf/conf.yaml
old mode 100644
new mode 100755

http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/example/sequence-split-merge/conf/topology.yaml
----------------------------------------------------------------------
diff --git a/example/sequence-split-merge/conf/topology.yaml b/example/sequence-split-merge/conf/topology.yaml
old mode 100644
new mode 100755

http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/example/sequence-split-merge/drpc.sh
----------------------------------------------------------------------
diff --git a/example/sequence-split-merge/drpc.sh b/example/sequence-split-merge/drpc.sh
new file mode 100755
index 0000000..1492a51
--- /dev/null
+++ b/example/sequence-split-merge/drpc.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+jstorm jar target/sequence-split-merge-1.1.0-jar-with-dependencies.jar com.alipay.dw.jstorm.example.drpc.ReachTopology reach

http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/example/sequence-split-merge/pom.xml
----------------------------------------------------------------------
diff --git a/example/sequence-split-merge/pom.xml b/example/sequence-split-merge/pom.xml
old mode 100644
new mode 100755
index 71f5154..afba08c
--- a/example/sequence-split-merge/pom.xml
+++ b/example/sequence-split-merge/pom.xml
@@ -3,7 +3,7 @@
 	<modelVersion>4.0.0</modelVersion>
 	<groupId>storm</groupId>
 	<artifactId>sequence-split-merge</artifactId>
-	<version>1.0.8</version>
+	<version>1.1.0</version>
 	<packaging>jar</packaging>
 
 	<name>sequence-split-merge</name>
@@ -11,7 +11,7 @@
 
 	<properties>
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-		<jstorm.version>0.9.6.3</jstorm.version>
+		<jstorm.version>2.0.4-SNAPSHOT</jstorm.version>
 		<storm.version>storm-0.9.2-incubating</storm.version>
 	</properties>
 	<repositories>
@@ -34,33 +34,22 @@
 
 		<dependency>
 			<groupId>com.alibaba.jstorm</groupId>
-			<artifactId>jstorm-client-extension</artifactId>
+			<artifactId>jstorm-core</artifactId>
 			<version>${jstorm.version}</version>
 			<scope>provided</scope>
 		</dependency>
 
-
-		<dependency>
-			<groupId>com.alibaba.jstorm</groupId>
-			<artifactId>jstorm-client</artifactId>
-			<version>${jstorm.version}</version>
-			<scope>provided</scope>
-			<exclusions>
-				<exclusion>
-					<groupId>org.slf4j</groupId>
-					<artifactId>slf4j-log4j12</artifactId>
-				</exclusion>
-			</exclusions>
-		</dependency>
-
+		
+		
 		<dependency>
-			<groupId>com.alibaba.jstorm</groupId>
-			<artifactId>jstorm-server</artifactId>
-			<version>${jstorm.version}</version>
-			<scope>provided</scope>
-
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<version>4.10</version>
+			<scope>test</scope>
 		</dependency>
+ 
 
+		<!--
 		<dependency>
 			<groupId>ch.qos.logback</groupId>
 			<artifactId>logback-classic</artifactId>
@@ -72,16 +61,7 @@
 			<artifactId>log4j-over-slf4j</artifactId>
 			<version>1.7.10</version>
 		</dependency>
-		
-		<dependency>
-			<groupId>junit</groupId>
-			<artifactId>junit</artifactId>
-			<version>4.10</version>
-			<scope>test</scope>
-		</dependency>
- 
-
-		<!-- <dependency> <groupId>org.clojure</groupId> <artifactId>clojure</artifactId> 
+		 <dependency> <groupId>org.clojure</groupId> <artifactId>clojure</artifactId> 
 			<version>1.2.0</version> </dependency> <dependency> <groupId>org.clojure</groupId> 
 			<artifactId>clojure-contrib</artifactId> <version>1.2.0</version> </dependency> 
 			<dependency> <groupId>backtype</groupId> <artifactId>twitter4j-core</artifactId> 

http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/IntervalCheck.java
----------------------------------------------------------------------
diff --git a/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/IntervalCheck.java b/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/IntervalCheck.java
old mode 100644
new mode 100755
index 005fbdf..0b36abf
--- a/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/IntervalCheck.java
+++ b/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/IntervalCheck.java
@@ -1,3 +1,20 @@
+/**
+ * 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.alipay.dw.jstorm.example;
 
 import java.io.Serializable;

http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/TpsCounter.java
----------------------------------------------------------------------
diff --git a/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/TpsCounter.java b/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/TpsCounter.java
old mode 100644
new mode 100755
index f9943a5..262ef8c
--- a/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/TpsCounter.java
+++ b/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/TpsCounter.java
@@ -1,3 +1,20 @@
+/**
+ * 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.alipay.dw.jstorm.example;
 
 import java.io.Serializable;

http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/batch/SimpleBatchTopology.java
----------------------------------------------------------------------
diff --git a/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/batch/SimpleBatchTopology.java b/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/batch/SimpleBatchTopology.java
old mode 100644
new mode 100755
index e4cda48..d225ad0
--- a/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/batch/SimpleBatchTopology.java
+++ b/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/batch/SimpleBatchTopology.java
@@ -1,54 +1,43 @@
+/**
+ * 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.alipay.dw.jstorm.example.batch;
 
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.InputStream;
-import java.util.Map;
-
-import org.yaml.snakeyaml.Yaml;
-
-import backtype.storm.Config;
-import backtype.storm.LocalCluster;
-import backtype.storm.StormSubmitter;
-import backtype.storm.generated.AlreadyAliveException;
-import backtype.storm.generated.InvalidTopologyException;
-import backtype.storm.generated.TopologyAssignException;
-import backtype.storm.topology.BoltDeclarer;
+import java.util.Map;
+
+import com.alibaba.jstorm.batch.BatchTopologyBuilder;
+import com.alibaba.jstorm.cluster.StormConfig;
+import com.alibaba.jstorm.utils.JStormUtils;
+import com.alibaba.jstorm.utils.LoadConf;
+
+import backtype.storm.LocalCluster;
+import backtype.storm.StormSubmitter;
+import backtype.storm.generated.AlreadyAliveException;
+import backtype.storm.generated.InvalidTopologyException;
+import backtype.storm.generated.TopologyAssignException;
+import backtype.storm.topology.BoltDeclarer;
 import backtype.storm.topology.TopologyBuilder;
 
-import com.alibaba.jstorm.batch.BatchTopologyBuilder;
-import com.alibaba.jstorm.cluster.StormConfig;
-import com.alibaba.jstorm.utils.JStormUtils;
-
 public class SimpleBatchTopology {
 
-	private static String topologyName;
+	private static String topologyName = "Batch";
 
 	private static Map conf;
 
-	private static void LoadYaml(String confPath) {
-
-		Yaml yaml = new Yaml();
-
-		try {
-			InputStream stream = new FileInputStream(confPath);
-
-			conf = (Map) yaml.load(stream);
-			if (conf == null || conf.isEmpty() == true) {
-				throw new RuntimeException("Failed to read config file");
-			}
-
-		} catch (FileNotFoundException e) {
-			System.out.println("No such file " + confPath);
-			throw new RuntimeException("No config file");
-		} catch (Exception e1) {
-			e1.printStackTrace();
-			throw new RuntimeException("Failed to read config file");
-		}
-
-		topologyName = (String) conf.get(Config.TOPOLOGY_NAME);
-		return;
-	}
 
 	public static TopologyBuilder SetBuilder() {
 		BatchTopologyBuilder topologyBuilder = new BatchTopologyBuilder(
@@ -72,7 +61,7 @@ public class SimpleBatchTopology {
 		LocalCluster cluster = new LocalCluster();
 		cluster.submitTopology(topologyName, conf, builder.createTopology());
 
-		Thread.sleep(600000);
+		Thread.sleep(60000);
 
 		cluster.shutdown();
 	}
@@ -94,7 +83,8 @@ public class SimpleBatchTopology {
 			System.exit(-1);
 		}
 
-		LoadYaml(args[0]);
+		conf = LoadConf.LoadYaml(args[0]);
+		
 
 		boolean isLocal = StormConfig.local_mode(conf);
 

http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/batch/SimpleBolt.java
----------------------------------------------------------------------
diff --git a/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/batch/SimpleBolt.java b/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/batch/SimpleBolt.java
old mode 100644
new mode 100755
index 6587076..67259d9
--- a/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/batch/SimpleBolt.java
+++ b/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/batch/SimpleBolt.java
@@ -1,3 +1,20 @@
+/**
+ * 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.alipay.dw.jstorm.example.batch;
 
 import java.util.Map;
@@ -102,7 +119,7 @@ public class SimpleBolt implements IBasicBolt, ICommitter {
 	public void revert(BatchId id, byte[] commitResult) {
 		LOG.info("Receive BatchId " + id);
 		
-		BatchId failedId = (BatchId)Utils.deserialize(commitResult);
+		BatchId failedId = (BatchId)Utils.javaDeserialize(commitResult);
 		
 		if (failedId.equals(id) == false) {
 			LOG.info("Deserialized error  " + id);

http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/batch/SimpleSpout.java
----------------------------------------------------------------------
diff --git a/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/batch/SimpleSpout.java b/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/batch/SimpleSpout.java
old mode 100644
new mode 100755
index 4fdb5a3..3b16d80
--- a/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/batch/SimpleSpout.java
+++ b/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/batch/SimpleSpout.java
@@ -1,3 +1,20 @@
+/**
+ * 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.alipay.dw.jstorm.example.batch;
 
 import java.util.Map;

http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/drpc/ReachTopology.java
----------------------------------------------------------------------
diff --git a/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/drpc/ReachTopology.java b/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/drpc/ReachTopology.java
old mode 100644
new mode 100755
index 8e03837..f7d39f4
--- a/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/drpc/ReachTopology.java
+++ b/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/drpc/ReachTopology.java
@@ -1,3 +1,20 @@
+/**
+ * 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.alipay.dw.jstorm.example.drpc;
 
 import java.util.Arrays;
@@ -7,6 +24,9 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
+import com.alibaba.jstorm.utils.JStormUtils;
+import com.alibaba.jstorm.utils.LoadConf;
+
 import backtype.storm.Config;
 import backtype.storm.LocalCluster;
 import backtype.storm.LocalDRPC;
@@ -22,8 +42,6 @@ import backtype.storm.tuple.Fields;
 import backtype.storm.tuple.Tuple;
 import backtype.storm.tuple.Values;
 
-import com.alibaba.jstorm.utils.JStormUtils;
-
 /**
  * This is a good example of doing complex Distributed RPC on top of Storm. This 
  * program creates a topology that can compute the reach for any URL on Twitter
@@ -166,14 +184,27 @@ public class ReachTopology {
         return builder;
     }
     
+
+	
+    
     public static void main(String[] args) throws Exception {
     	
         LinearDRPCTopologyBuilder builder = construct();
-        
-        
+  
         Config conf = new Config();
         conf.setNumWorkers(6);
-        if (args.length == 0) {
+        if (args.length != 0) {
+        	
+        	try {
+	        	Map yamlConf = LoadConf.LoadYaml(args[0]);
+	        	if (yamlConf != null) {
+	        		conf.putAll(yamlConf);
+	        	}
+        	}catch (Exception e) {
+        		System.out.println("Input " + args[0] + " isn't one yaml ");
+        	}
+        	
+        	
         	StormSubmitter.submitTopology(TOPOLOGY_NAME, conf, builder.createRemoteTopology());
         }else {