[ 
https://issues.apache.org/jira/browse/STORM-1269?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15183697#comment-15183697
 ] 

ASF GitHub Bot commented on STORM-1269:
---------------------------------------

Github user revans2 commented on a diff in the pull request:

    https://github.com/apache/storm/pull/1185#discussion_r55271310
  
    --- Diff: storm-core/src/jvm/org/apache/storm/daemon/StormCommon.java ---
    @@ -0,0 +1,604 @@
    +/**
    + * 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 org.apache.storm.daemon;
    +
    +import com.codahale.metrics.MetricRegistry;
    +import org.apache.storm.Config;
    +import org.apache.storm.Constants;
    +import org.apache.storm.Thrift;
    +import org.apache.storm.cluster.IStormClusterState;
    +import org.apache.storm.daemon.metrics.MetricsUtils;
    +import org.apache.storm.daemon.metrics.reporters.PreparableReporter;
    +import org.apache.storm.generated.*;
    +import org.apache.storm.generated.StormBase;
    +import org.apache.storm.metric.EventLoggerBolt;
    +import org.apache.storm.metric.MetricsConsumerBolt;
    +import org.apache.storm.metric.SystemBolt;
    +import org.apache.storm.security.auth.IAuthorizer;
    +import org.apache.storm.task.IBolt;
    +import org.apache.storm.testing.NonRichBoltTracker;
    +import org.apache.storm.utils.ConfigUtils;
    +import org.apache.storm.utils.IPredicate;
    +import org.apache.storm.utils.ThriftTopologyUtils;
    +import org.apache.storm.utils.Utils;
    +import org.json.simple.JSONValue;
    +import org.slf4j.Logger;
    +import org.slf4j.LoggerFactory;
    +
    +import java.util.*;
    +
    +public class StormCommon {
    +    // A singleton instance allows us to mock delegated static methods in 
our
    +    // tests by subclassing.
    +    private static StormCommon _instance = new StormCommon();
    +
    +    /**
    +     * Provide an instance of this class for delegates to use.  To mock out
    +     * delegated methods, provide an instance of a subclass that overrides 
the
    +     * implementation of the delegated method.
    +     * @param common a StormCommon instance
    +     * @return the previously set instance
    +     */
    +    public static StormCommon setInstance(StormCommon common) {
    +        StormCommon oldInstance = _instance;
    +        _instance = common;
    +        return oldInstance;
    +    }
    +
    +    private static final Logger LOG = 
LoggerFactory.getLogger(StormCommon.class);
    +
    +    public static final String ACKER_COMPONENT_ID = 
Acker.ACKER_COMPONENT_ID;
    +    public static final String ACKER_INIT_STREAM_ID = 
Acker.ACKER_INIT_STREAM_ID;
    +    public static final String ACKER_ACK_STREAM_ID = 
Acker.ACKER_ACK_STREAM_ID;
    +    public static final String ACKER_FAIL_STREAM_ID = 
Acker.ACKER_FAIL_STREAM_ID;
    +
    +    public static final String SYSTEM_STREAM_ID = "__system";
    +
    +    public static final String EVENTLOGGER_COMPONENT_ID = "__eventlogger";
    +    public static final String EVENTLOGGER_STREAM_ID = "__eventlog";
    +
    +    public static void startMetricsReporter(PreparableReporter report, Map 
conf) {
    +        report.prepare(new MetricRegistry(), conf);
    +        report.start();
    +        LOG.info("Started statistics report plugin...");
    +    }
    +
    +    public static void startMetricsReporters(Map conf) {
    +        List<PreparableReporter> reporters = 
MetricsUtils.getPreparableReporters(conf);
    +        for (PreparableReporter reporter : reporters) {
    +            startMetricsReporter(reporter, conf);
    +        }
    +    }
    +
    +    public static String getTopologyNameById(String topologyId) {
    +        String topologyName = null;
    +        try {
    +            topologyName = topologyIdToName(topologyId);
    +        } catch (InvalidTopologyException e) {
    +            LOG.error("Invalid topologyId=" + topologyId);
    +        }
    +        return topologyName;
    +    }
    +
    +    /**
    +     * Convert topologyId to topologyName. TopologyId = 
topoloygName-counter-timeStamp
    +     *
    +     * @param topologyId
    +     * @return
    +     */
    +    public static String topologyIdToName(String topologyId) throws 
InvalidTopologyException {
    +        String ret = null;
    +        int index = topologyId.lastIndexOf('-');
    +        if (index != -1 && index > 2) {
    +            index = topologyId.lastIndexOf('-', index - 1);
    +            if (index != -1 && index > 0)
    +                ret = topologyId.substring(0, index);
    +            else
    +                throw new InvalidTopologyException(topologyId + " is not a 
valid topologyId");
    +        } else
    +            throw new InvalidTopologyException(topologyId + " is not a 
valid topologyId");
    +        return ret;
    +    }
    +
    +    public static String getStormId(IStormClusterState stormClusterState, 
final String topologyName) {
    +        List<String> activeTopologys = stormClusterState.activeStorms();
    +        IPredicate pred = new IPredicate<String>() {
    +            @Override
    +            public boolean test(String obj) {
    +                return obj != null ? 
getTopologyNameById(obj).equals(topologyName) : false;
    +            }
    +        };
    +        return Utils.findOne(pred, activeTopologys);
    +    }
    +
    +    public static Map<String, StormBase> topologyBases(IStormClusterState 
stormClusterState) {
    +        return _instance.topologyBasesImpl(stormClusterState);
    +    }
    +
    +    protected Map<String, StormBase> topologyBasesImpl(IStormClusterState 
stormClusterState) {
    +        List<String> activeTopologys = stormClusterState.activeStorms();
    +        Map<String, StormBase> stormBases = new HashMap<String, 
StormBase>();
    +        if (activeTopologys != null) {
    --- End diff --
    
    The original code didn't check for null.


> port backtype.storm.daemon.common to java
> -----------------------------------------
>
>                 Key: STORM-1269
>                 URL: https://issues.apache.org/jira/browse/STORM-1269
>             Project: Apache Storm
>          Issue Type: New Feature
>          Components: storm-core
>            Reporter: Robert Joseph Evans
>            Assignee: Basti Liu
>              Labels: java-migration, jstorm-merger
>
> Common utils shared by the daemons (Some things should just use the Thrift 
> object)
> https://github.com/apache/storm/blob/jstorm-import/jstorm-core/src/main/java/com/alibaba/jstorm/cluster/Common.java
>  is similar but not exactly the same.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to