http://git-wip-us.apache.org/repos/asf/eagle/blob/6fd95d5c/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/MetricSystem.java ---------------------------------------------------------------------- diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/MetricSystem.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/MetricSystem.java deleted file mode 100644 index 255f1e6..0000000 --- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/MetricSystem.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - * 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 - * <p/> - * http://www.apache.org/licenses/LICENSE-2.0 - * <p/> - * 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.eagle.alert.metric; - -import com.codahale.metrics.MetricRegistry; -import com.typesafe.config.Config; -import com.typesafe.config.ConfigFactory; -import org.apache.eagle.alert.metric.sink.MetricSink; -import org.apache.eagle.alert.metric.sink.MetricSinkRepository; -import org.apache.eagle.alert.metric.source.MetricSource; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.HashMap; -import java.util.Map; -import java.util.concurrent.TimeUnit; - -public class MetricSystem implements IMetricSystem { - private final Config config; - private Map<MetricSink, Config> sinks = new HashMap<>(); - private MetricRegistry registry = new MetricRegistry(); - private volatile boolean running; - private volatile boolean initialized; - private static final Logger LOG = LoggerFactory.getLogger(MetricSystem.class); - private final Map<String, Object> metricTags = new HashMap<>(); - private int scheduleDurationSeconds = 10; - - public MetricSystem(Config config) { - this.config = config; - if (this.config.hasPath(MetricConfigs.DURATION_SECONDS_CONF)) { - this.scheduleDurationSeconds = this.config.getInt(MetricConfigs.DURATION_SECONDS_CONF); - LOG.info("Override {}: {}",MetricConfigs.DURATION_SECONDS_CONF, this.scheduleDurationSeconds); - } - } - - public static MetricSystem load(Config config) { - MetricSystem instance = new MetricSystem(config); - instance.loadFromConfig(); - return instance; - } - - /** - * Add additional tags. - */ - @Override - public void tags(Map<String, Object> metricTags) { - this.metricTags.putAll(metricTags); - } - - @Override - public void start() { - if (initialized) { - throw new IllegalStateException("Attempting to initialize a MetricsSystem that is already initialized"); - } - sinks.forEach((sink, conf) -> { - sink.prepare(conf.withValue(MetricConfigs.TAGS_FIELD_NAME, ConfigFactory.parseMap(metricTags).root()), registry); - }); - initialized = true; - } - - @Override - public void schedule() { - if (running) { - throw new IllegalStateException("Attempting to start a MetricsSystem that is already running"); - } - sinks.keySet().forEach((sink) -> sink.start(this.scheduleDurationSeconds, TimeUnit.SECONDS)); - running = true; - } - - public void loadFromConfig() { - loadSinksFromConfig(); - } - - private void loadSinksFromConfig() { - Config sinkCls = config.hasPath(MetricConfigs.METRIC_SINK_CONF) ? config.getConfig(MetricConfigs.METRIC_SINK_CONF) : null; - if (sinkCls == null) { - // do nothing - } else { - for (String sinkType : sinkCls.root().unwrapped().keySet()) { - register(MetricSinkRepository.createSink(sinkType), config.getConfig(MetricConfigs.METRIC_SINK_CONF + "." + sinkType)); - } - } - } - - @Override - public void stop() { - sinks.keySet().forEach(MetricSink::stop); - } - - @Override - public void report() { - sinks.keySet().forEach(MetricSink::report); - } - - @Override - public void register(MetricSink sink, Config config) { - sinks.put(sink, config); - LOG.info("Registered {}", sink); - } - - @Override - public void register(MetricSource source) { - registry().registerAll(source.registry()); - } - - @Override - public MetricRegistry registry() { - return registry; - } -} \ No newline at end of file
http://git-wip-us.apache.org/repos/asf/eagle/blob/6fd95d5c/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/entity/MetricEvent.java ---------------------------------------------------------------------- diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/entity/MetricEvent.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/entity/MetricEvent.java deleted file mode 100644 index 229bbd9..0000000 --- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/entity/MetricEvent.java +++ /dev/null @@ -1,112 +0,0 @@ -/** - * 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 - * <p/> - * http://www.apache.org/licenses/LICENSE-2.0 - * <p/> - * 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.eagle.alert.metric.entity; - -import org.apache.eagle.common.DateTimeUtil; - -import com.codahale.metrics.Counter; -import com.codahale.metrics.Gauge; -import com.codahale.metrics.Histogram; -import com.codahale.metrics.Meter; -import com.codahale.metrics.Snapshot; -import com.codahale.metrics.Timer; - -import java.util.Map; -import java.util.TreeMap; - -public class MetricEvent extends TreeMap<String, Object> { - - private static final long serialVersionUID = 6862373651636342744L; - - public static Builder of(String name) { - return new Builder(name); - } - - /** - * TODO: Refactor according to ConsoleReporter. - */ - public static class Builder { - private final String name; - private MetricEvent instance; - - public Builder(String name) { - this.instance = new MetricEvent(); - this.name = name; - } - - public MetricEvent build() { - this.instance.put("name", name); - if (!this.instance.containsKey("timestamp")) { - this.instance.put("timestamp", DateTimeUtil.getCurrentTimestamp()); - } - return this.instance; - } - - public Builder from(Counter value) { - // this.instance.put("type","counter"); - this.instance.put("count", value.getCount()); - return this; - } - - @SuppressWarnings( {"rawtypes", "unchecked"}) - public Builder from(Gauge gauge) { - Object value = gauge.getValue(); - if (value instanceof Map) { - Map<? extends String, ?> map = (Map<? extends String, ?>) value; - this.instance.putAll(map); - } else { - this.instance.put("value", value); - } - return this; - } - - public Builder from(Histogram value) { - this.instance.put("count", value.getCount()); - Snapshot snapshot = value.getSnapshot(); - this.instance.put("min", snapshot.getMin()); - this.instance.put("max", snapshot.getMax()); - this.instance.put("mean", snapshot.getMean()); - this.instance.put("stddev", snapshot.getStdDev()); - this.instance.put("median", snapshot.getMedian()); - this.instance.put("75thPercentile", snapshot.get75thPercentile()); - this.instance.put("95thPercentile", snapshot.get95thPercentile()); - this.instance.put("98thPercentile", snapshot.get98thPercentile()); - this.instance.put("99thPercentile", snapshot.get99thPercentile()); - this.instance.put("999thPercentile", snapshot.get999thPercentile()); - return this; - } - - public Builder from(Meter value) { - this.instance.put("value", value.getCount()); - this.instance.put("15MinRate", value.getFifteenMinuteRate()); - this.instance.put("5MinRate", value.getFiveMinuteRate()); - this.instance.put("mean", value.getMeanRate()); - this.instance.put("1MinRate", value.getOneMinuteRate()); - return this; - } - - public Builder from(Timer value) { - // this.instance.put("type","timer"); - this.instance.put("value", value.getCount()); - this.instance.put("15MinRate", value.getFifteenMinuteRate()); - this.instance.put("5MinRate", value.getFiveMinuteRate()); - this.instance.put("mean", value.getMeanRate()); - this.instance.put("1MinRate", value.getOneMinuteRate()); - return this; - } - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/eagle/blob/6fd95d5c/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/reporter/KafkaReporter.java ---------------------------------------------------------------------- diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/reporter/KafkaReporter.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/reporter/KafkaReporter.java deleted file mode 100644 index bf0b365..0000000 --- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/reporter/KafkaReporter.java +++ /dev/null @@ -1,208 +0,0 @@ -/* - * 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.eagle.alert.metric.reporter; - -import org.apache.eagle.alert.metric.entity.MetricEvent; -import org.apache.eagle.alert.utils.ByteUtils; -import com.codahale.metrics.*; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.google.common.base.Preconditions; -import com.typesafe.config.Config; -import org.apache.kafka.clients.producer.KafkaProducer; -import org.apache.kafka.clients.producer.Producer; -import org.apache.kafka.clients.producer.ProducerRecord; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import java.util.Map; -import java.util.Properties; -import java.util.SortedMap; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; - -public class KafkaReporter extends ScheduledReporter { - private static final Logger LOG = LoggerFactory.getLogger(KafkaReporter.class); - private final String topic; - private final Properties properties; - private final Producer<byte[], String> producer; - private final Map<String, Object> additionalFields; - - protected KafkaReporter(MetricRegistry registry, MetricFilter filter, TimeUnit rateUnit, TimeUnit durationUnit, String topic, Properties config, Map<String, Object> additionalFields) { - super(registry, "kafka-reporter", filter, rateUnit, durationUnit); - this.topic = topic; - this.properties = new Properties(); - Preconditions.checkNotNull(topic, "topic should not be null"); - // properties.put("bootstrap.servers", brokerList); - // properties.put("metadata.broker.list", brokerList); - properties.put("key.serializer", "org.apache.kafka.common.serialization.ByteArraySerializer"); - properties.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer"); - properties.put("request.required.acks", "1"); - properties.put("key.deserializer", "org.apache.kafka.common.serialization.ByteArraySerializer"); - properties.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer"); - if (config != null) { - LOG.info(config.toString()); - properties.putAll(config); - } - this.additionalFields = additionalFields; - this.producer = new KafkaProducer<>(properties); - LOG.info("Initialized kafka-reporter"); - } - - @SuppressWarnings("rawtypes") - @Override - public void report(SortedMap<String, Gauge> gauges, SortedMap<String, Counter> counters, - SortedMap<String, Histogram> histograms, SortedMap<String, Meter> meters, SortedMap<String, Timer> timers) { - for (SortedMap.Entry<String, Gauge> entry : gauges.entrySet()) { - onMetricEvent(MetricEvent.of(entry.getKey()).from(entry.getValue()).build()); - } - for (SortedMap.Entry<String, Counter> entry : counters.entrySet()) { - onMetricEvent(MetricEvent.of(entry.getKey()).from(entry.getValue()).build()); - } - for (SortedMap.Entry<String, Histogram> entry : histograms.entrySet()) { - onMetricEvent(MetricEvent.of(entry.getKey()).from(entry.getValue()).build()); - } - for (SortedMap.Entry<String, Meter> entry : meters.entrySet()) { - onMetricEvent(MetricEvent.of(entry.getKey()).from(entry.getValue()).build()); - } - for (SortedMap.Entry<String, Timer> entry : timers.entrySet()) { - onMetricEvent(MetricEvent.of(entry.getKey()).from(entry.getValue()).build()); - } - } - - private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); - - private void onMetricEvent(MetricEvent event) { - try { - if (additionalFields != null) { - event.putAll(additionalFields); - } - // TODO: Support configurable partition key - byte[] key = ByteUtils.intToBytes(event.hashCode()); - ProducerRecord<byte[], String> record = new ProducerRecord<>(topic, key, OBJECT_MAPPER.writeValueAsString(event)); - // TODO: Support configuration timeout - this.producer.send(record).get(5, TimeUnit.SECONDS); - } catch (JsonProcessingException e) { - LOG.error("Failed to serialize {} as json", event, e); - } catch (InterruptedException | ExecutionException | TimeoutException e) { - LOG.error("Failed to produce message to topic {}", topic, e); - } - } - - @Override - public void stop() { - this.producer.close(); - super.stop(); - } - - @Override - public void close() { - this.producer.close(); - super.close(); - } - - public static Builder forRegistry(MetricRegistry registry) { - return new Builder(registry); - } - - public static class Builder { - private final MetricRegistry registry; - private TimeUnit rateUnit; - private TimeUnit durationUnit; - private MetricFilter filter; - private String topic; - private Properties properties; - private Map<String, Object> additionalFields; - - private Builder(MetricRegistry registry) { - this.registry = registry; - this.rateUnit = TimeUnit.SECONDS; - this.durationUnit = TimeUnit.MILLISECONDS; - this.filter = MetricFilter.ALL; - } - - /** - * Convert rates to the given time unit. - * - * @param rateUnit a unit of time - * @return {@code this} - */ - public Builder convertRatesTo(TimeUnit rateUnit) { - this.rateUnit = rateUnit; - return this; - } - - /** - * Convert durations to the given time unit. - * - * @param durationUnit a unit of time - * @return {@code this} - */ - public Builder convertDurationsTo(TimeUnit durationUnit) { - this.durationUnit = durationUnit; - return this; - } - - /** - * Only report metrics which match the given filter. - * - * @param filter a {@link MetricFilter} - * @return {@code this} - */ - public Builder filter(MetricFilter filter) { - this.filter = filter; - return this; - } - - public Builder topic(String topic) { - this.topic = topic; - return this; - } - - /** - * Builds a {@link ConsoleReporter} with the given properties. - * - * @return a {@link ConsoleReporter} - */ - public KafkaReporter build() { - if (topic == null && properties != null) { - topic = properties.getProperty("topic"); - } - return new KafkaReporter(registry, filter, rateUnit, durationUnit, topic, properties, additionalFields); - } - - @SuppressWarnings("serial") - public Builder config(Config config) { - this.config(new Properties() { - { - putAll(config.root().unwrapped()); - } - }); - return this; - } - - public Builder config(Properties properties) { - this.properties = properties; - return this; - } - - public Builder addFields(Map<String, Object> tags) { - this.additionalFields = tags; - return this; - } - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/eagle/blob/6fd95d5c/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/ConsoleSink.java ---------------------------------------------------------------------- diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/ConsoleSink.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/ConsoleSink.java deleted file mode 100644 index 6ded685..0000000 --- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/ConsoleSink.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * 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 - * <p/> - * http://www.apache.org/licenses/LICENSE-2.0 - * <p/> - * 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.eagle.alert.metric.sink; - -import com.codahale.metrics.ConsoleReporter; -import com.codahale.metrics.MetricRegistry; -import com.typesafe.config.Config; -import java.util.concurrent.TimeUnit; - -public class ConsoleSink implements MetricSink { - private ConsoleReporter reporter; - - @Override - public void prepare(Config config, MetricRegistry registry) { - reporter = ConsoleReporter.forRegistry(registry).build(); - } - - @Override - public void start(long period, TimeUnit unit) { - reporter.start(period, unit); - } - - @Override - public void stop() { - reporter.stop(); - reporter.close(); - } - - @Override - public void report() { - reporter.report(); - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/eagle/blob/6fd95d5c/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/ElasticSearchSink.java ---------------------------------------------------------------------- diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/ElasticSearchSink.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/ElasticSearchSink.java deleted file mode 100644 index 3015be2..0000000 --- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/ElasticSearchSink.java +++ /dev/null @@ -1,93 +0,0 @@ -/** - * 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 - * <p/> - * http://www.apache.org/licenses/LICENSE-2.0 - * <p/> - * 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.eagle.alert.metric.sink; - -import com.codahale.metrics.MetricRegistry; -import com.typesafe.config.Config; -import org.apache.eagle.alert.metric.MetricConfigs; -import org.elasticsearch.metrics.ElasticsearchReporter; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.IOException; -import java.util.List; -import java.util.concurrent.TimeUnit; - -public class ElasticSearchSink implements MetricSink { - - private ElasticsearchReporter reporter = null; - private static final Logger LOG = LoggerFactory.getLogger(ElasticSearchSink.class); - - private static final String INDEX_DATEFORMAT_CONF = "indexDateFormat"; - private static final String TIMESTAMP_FIELD_CONF = "timestampField"; - private static final String HOSTS_CONF = "hosts"; - private static final String INDEX_CONF = "index"; - - private static final String DEFAULT_INDEX_DATE_FORMAT = "yyyy-MM-dd"; - private static final String DEFAULT_TIMESTAMP_FIELD = "@timestamp"; - - @Override - public void prepare(Config config, MetricRegistry registry) { - LOG.info("Preparing elasticsearch-sink"); - try { - ElasticsearchReporter.Builder builder = ElasticsearchReporter.forRegistry(registry); - - if (config.hasPath(HOSTS_CONF)) { - List<String> hosts = config.getStringList(HOSTS_CONF); - builder.hosts(hosts.toArray(new String[hosts.size()])); - } - - if (config.hasPath(INDEX_CONF)) { - builder.index(config.getString(INDEX_CONF)); - } - - builder.indexDateFormat(config.hasPath(INDEX_DATEFORMAT_CONF) - ? config.getString(INDEX_DATEFORMAT_CONF) : DEFAULT_INDEX_DATE_FORMAT); - - builder.timestampFieldname(config.hasPath(TIMESTAMP_FIELD_CONF) - ? config.getString(TIMESTAMP_FIELD_CONF) : DEFAULT_TIMESTAMP_FIELD); - - if (config.hasPath(MetricConfigs.TAGS_FIELD_NAME)) { - builder.additionalFields(config.getConfig(MetricConfigs.TAGS_FIELD_NAME).root().unwrapped()); - } - - reporter = builder.build(); - } catch (IOException e) { - LOG.error(e.getMessage(), e); - throw new IllegalStateException(e.getMessage(), e); - } - LOG.info("Initialized elasticsearch-sink"); - } - - @Override - public void start(long period, TimeUnit unit) { - LOG.info("Starting elasticsearch-sink"); - reporter.start(period, unit); - } - - @Override - public void stop() { - LOG.info("Stopping elasticsearch-sink"); - reporter.stop(); - reporter.close(); - } - - @Override - public void report() { - reporter.report(); - } -} http://git-wip-us.apache.org/repos/asf/eagle/blob/6fd95d5c/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/JmxSink.java ---------------------------------------------------------------------- diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/JmxSink.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/JmxSink.java deleted file mode 100644 index 2d3ed93..0000000 --- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/JmxSink.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * 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 - * <p/> - * http://www.apache.org/licenses/LICENSE-2.0 - * <p/> - * 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.eagle.alert.metric.sink; - -import com.codahale.metrics.JmxReporter; -import com.codahale.metrics.MetricRegistry; -import com.typesafe.config.Config; -import java.util.concurrent.TimeUnit; - -public class JmxSink implements MetricSink { - private JmxReporter reporter; - - @Override - public void prepare(Config config, MetricRegistry registry) { - reporter = JmxReporter.forRegistry(registry).build(); - } - - @Override - public void start(long period, TimeUnit unit) { - reporter.start(); - } - - @Override - public void stop() { - reporter.stop(); - reporter.close(); - } - - @Override - public void report() { - // do nothing - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/eagle/blob/6fd95d5c/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/KafkaSink.java ---------------------------------------------------------------------- diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/KafkaSink.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/KafkaSink.java deleted file mode 100644 index f8bc8f3..0000000 --- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/KafkaSink.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * 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 - * <p/> - * http://www.apache.org/licenses/LICENSE-2.0 - * <p/> - * 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.eagle.alert.metric.sink; - -import org.apache.eagle.alert.metric.MetricConfigs; -import org.apache.eagle.alert.metric.reporter.KafkaReporter; -import com.codahale.metrics.MetricRegistry; -import com.typesafe.config.Config; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import java.util.concurrent.TimeUnit; - -public class KafkaSink implements MetricSink { - private KafkaReporter reporter; - private static final Logger LOG = LoggerFactory.getLogger(KafkaSink.class); - - @Override - public void prepare(Config config, MetricRegistry registry) { - LOG.debug("Preparing kafka-sink"); - KafkaReporter.Builder builder = KafkaReporter.forRegistry(registry) - .topic(config.getString("topic")) - .config(config); - - if (config.hasPath(MetricConfigs.TAGS_FIELD_NAME)) { - builder.addFields(config.getConfig(MetricConfigs.TAGS_FIELD_NAME).root().unwrapped()); - } - - reporter = builder.build(); - LOG.info("Prepared kafka-sink"); - } - - @Override - public void start(long period, TimeUnit unit) { - LOG.info("Starting"); - reporter.start(period, unit); - } - - @Override - public void stop() { - LOG.info("Stopping"); - reporter.stop(); - - LOG.info("Closing"); - reporter.close(); - } - - @Override - public void report() { - reporter.report(); - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/eagle/blob/6fd95d5c/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/MetricSink.java ---------------------------------------------------------------------- diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/MetricSink.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/MetricSink.java deleted file mode 100644 index 2030d8e..0000000 --- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/MetricSink.java +++ /dev/null @@ -1,31 +0,0 @@ -/** - * 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 - * <p/> - * http://www.apache.org/licenses/LICENSE-2.0 - * <p/> - * 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.eagle.alert.metric.sink; - -import com.codahale.metrics.MetricRegistry; -import com.typesafe.config.Config; -import java.util.concurrent.TimeUnit; - -public interface MetricSink { - void prepare(Config config, MetricRegistry registry); - - void start(long period, TimeUnit unit); - - void stop(); - - void report(); -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/eagle/blob/6fd95d5c/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/MetricSinkRepository.java ---------------------------------------------------------------------- diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/MetricSinkRepository.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/MetricSinkRepository.java deleted file mode 100644 index 70d7331..0000000 --- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/MetricSinkRepository.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * 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 - * <p/> - * http://www.apache.org/licenses/LICENSE-2.0 - * <p/> - * 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.eagle.alert.metric.sink; - -import java.util.HashMap; -import java.util.Map; - -public class MetricSinkRepository { - private static final Map<String, Class<? extends MetricSink>> sinkTypeClassMapping = new HashMap<>(); - - public static void register(String sinkType, Class<? extends MetricSink> sinkClass) { - sinkTypeClassMapping.put(sinkType, sinkClass); - } - - public static MetricSink createSink(String sinkType) { - if (!sinkTypeClassMapping.containsKey(sinkType)) { - throw new IllegalArgumentException("Unknown sink type: " + sinkType); - } - try { - return sinkTypeClassMapping.get(sinkType).newInstance(); - } catch (InstantiationException | IllegalAccessException e) { - throw new IllegalStateException(e); - } - } - - static { - register("kafka", KafkaSink.class); - register("jmx", JmxSink.class); - register("elasticsearch", ElasticSearchSink.class); - register("stdout", ConsoleSink.class); - register("logger", Slf4jSink.class); - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/eagle/blob/6fd95d5c/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/Slf4jSink.java ---------------------------------------------------------------------- diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/Slf4jSink.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/Slf4jSink.java deleted file mode 100644 index c25c835..0000000 --- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/sink/Slf4jSink.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * 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 - * <p/> - * http://www.apache.org/licenses/LICENSE-2.0 - * <p/> - * 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.eagle.alert.metric.sink; - -import com.codahale.metrics.MetricRegistry; -import com.codahale.metrics.Slf4jReporter; -import com.typesafe.config.Config; -import org.slf4j.LoggerFactory; - -import java.util.HashMap; -import java.util.Map; -import java.util.concurrent.TimeUnit; - -public class Slf4jSink implements MetricSink { - private Slf4jReporter reporter; - - @SuppressWarnings("serial") - private static final Map<String, Slf4jReporter.LoggingLevel> LEVEL_MAPPING = new HashMap<String, Slf4jReporter.LoggingLevel>() { - { - put("INFO", Slf4jReporter.LoggingLevel.INFO); - put("DEBUG", Slf4jReporter.LoggingLevel.DEBUG); - put("ERROR", Slf4jReporter.LoggingLevel.ERROR); - put("TRACE", Slf4jReporter.LoggingLevel.TRACE); - put("WARN", Slf4jReporter.LoggingLevel.WARN); - } - }; - - private static Slf4jReporter.LoggingLevel getLoggingLevel(String level) { - if (LEVEL_MAPPING.containsKey(level.toUpperCase())) { - return LEVEL_MAPPING.get(level.toUpperCase()); - } else { - throw new IllegalArgumentException("Illegal logging level: " + level); - } - } - - @Override - public void prepare(Config config, MetricRegistry registry) { - reporter = Slf4jReporter.forRegistry(registry) - .outputTo(LoggerFactory.getLogger("org.apache.eagle.alert.metric")) - .withLoggingLevel(config.hasPath("level") ? getLoggingLevel(config.getString("level")) : Slf4jReporter.LoggingLevel.INFO) - .convertRatesTo(TimeUnit.SECONDS) - .convertDurationsTo(TimeUnit.MILLISECONDS) - .build(); - } - - @Override - public void start(long period, TimeUnit unit) { - reporter.start(period, unit); - } - - @Override - public void stop() { - reporter.stop(); - reporter.close(); - } - - @Override - public void report() { - reporter.report(); - } -} http://git-wip-us.apache.org/repos/asf/eagle/blob/6fd95d5c/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/source/JVMMetricSource.java ---------------------------------------------------------------------- diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/source/JVMMetricSource.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/source/JVMMetricSource.java deleted file mode 100644 index 8261a25..0000000 --- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/source/JVMMetricSource.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * 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 - * <p/> - * http://www.apache.org/licenses/LICENSE-2.0 - * <p/> - * 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.eagle.alert.metric.source; - -import com.codahale.metrics.JvmAttributeGaugeSet; -import com.codahale.metrics.MetricRegistry; -import com.codahale.metrics.jvm.MemoryUsageGaugeSet; - -public class JVMMetricSource implements MetricSource { - - private MetricRegistry registry = new MetricRegistry(); - - public JVMMetricSource() { - registry.registerAll(new JvmAttributeGaugeSet()); - registry.registerAll(new MemoryUsageGaugeSet()); - } - - @Override - public String name() { - return "jvm"; - } - - @Override - public MetricRegistry registry() { - return registry; - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/eagle/blob/6fd95d5c/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/source/MetricSource.java ---------------------------------------------------------------------- diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/source/MetricSource.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/source/MetricSource.java deleted file mode 100644 index 180fa97..0000000 --- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/source/MetricSource.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * 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 - * <p/> - * http://www.apache.org/licenses/LICENSE-2.0 - * <p/> - * 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.eagle.alert.metric.source; - -import com.codahale.metrics.MetricRegistry; - -public interface MetricSource { - String name(); - - MetricRegistry registry(); -} http://git-wip-us.apache.org/repos/asf/eagle/blob/6fd95d5c/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/source/MetricSourceWrapper.java ---------------------------------------------------------------------- diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/source/MetricSourceWrapper.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/source/MetricSourceWrapper.java deleted file mode 100644 index d83576c..0000000 --- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/metric/source/MetricSourceWrapper.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * 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 - * <p/> - * http://www.apache.org/licenses/LICENSE-2.0 - * <p/> - * 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.eagle.alert.metric.source; - -import com.codahale.metrics.MetricRegistry; - -public class MetricSourceWrapper implements MetricSource { - private final MetricRegistry registry; - private final String name; - - public MetricSourceWrapper(String name, MetricRegistry registry) { - this.name = name; - this.registry = registry; - } - - @Override - public String name() { - return name; - } - - @Override - public MetricRegistry registry() { - return registry; - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/eagle/blob/6fd95d5c/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/resource/SimpleCORSFiler.java ---------------------------------------------------------------------- diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/resource/SimpleCORSFiler.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/resource/SimpleCORSFiler.java deleted file mode 100644 index f0e0f87..0000000 --- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/resource/SimpleCORSFiler.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * 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.eagle.alert.resource; - -import java.io.IOException; - -import javax.servlet.Filter; -import javax.servlet.FilterChain; -import javax.servlet.FilterConfig; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.http.HttpServletResponse; - -/** - * A simple allow all CORS filter that works with swagger UI. Tomcat CORS filter - * doesn't support Origin: null case which is the swagger UI request. - * - * @since Apr 15, 2016 - */ -public class SimpleCORSFiler implements Filter { - - @Override - public void init(FilterConfig filterConfig) throws ServletException { - - } - - @Override - public void doFilter(ServletRequest request, ServletResponse res, FilterChain chain) throws IOException, - ServletException { - HttpServletResponse response = (HttpServletResponse) res; - response.setHeader("Access-Control-Allow-Origin", "*"); - response.setHeader("Access-Control-Allow-Methods", "HEAD, POST, GET, PUT, OPTIONS, DELETE"); - response.setHeader("Access-Control-Max-Age", "3600"); - response.setHeader("Access-Control-Allow-Headers", - "Origin, Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers, Authorization"); - chain.doFilter(request, response); - } - - @Override - public void destroy() { - - } -} http://git-wip-us.apache.org/repos/asf/eagle/blob/6fd95d5c/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/service/IMetadataServiceClient.java ---------------------------------------------------------------------- diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/service/IMetadataServiceClient.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/service/IMetadataServiceClient.java deleted file mode 100644 index efa6d0e..0000000 --- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/service/IMetadataServiceClient.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * - * * 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.eagle.alert.service; - -import org.apache.eagle.alert.coordination.model.Kafka2TupleMetadata; -import org.apache.eagle.alert.coordination.model.ScheduleState; -import org.apache.eagle.alert.coordination.model.SpoutSpec; -import org.apache.eagle.alert.coordination.model.internal.Topology; -import org.apache.eagle.alert.engine.coordinator.PolicyDefinition; -import org.apache.eagle.alert.engine.coordinator.Publishment; -import org.apache.eagle.alert.engine.coordinator.StreamDefinition; -import org.apache.eagle.alert.engine.coordinator.StreamingCluster; -import org.apache.eagle.alert.engine.model.AlertPublishEvent; - -import java.io.Closeable; -import java.io.Serializable; -import java.util.List; - -/** - * service stub to get metadata from remote metadata service. - */ -public interface IMetadataServiceClient extends Closeable, Serializable { - - // user metadta - void addStreamingCluster(StreamingCluster cluster); - - void addStreamingClusters(List<StreamingCluster> clusters); - - List<StreamingCluster> listClusters(); - - List<Topology> listTopologies(); - - void addTopology(Topology t); - - void addTopologies(List<Topology> topologies); - - void addPolicy(PolicyDefinition policy); - - void addPolicies(List<PolicyDefinition> policies); - - List<PolicyDefinition> listPolicies(); - - void addStreamDefinition(StreamDefinition streamDef); - - void addStreamDefinitions(List<StreamDefinition> streamDefs); - - List<StreamDefinition> listStreams(); - - void addDataSource(Kafka2TupleMetadata k2t); - - void addDataSources(List<Kafka2TupleMetadata> k2ts); - - List<Kafka2TupleMetadata> listDataSources(); - - void addPublishment(Publishment pub); - - void addPublishments(List<Publishment> pubs); - - List<Publishment> listPublishment(); - - // monitor metadata - List<SpoutSpec> listSpoutMetadata(); - - ScheduleState getVersionedSpec(); - - ScheduleState getVersionedSpec(String version); - - void addScheduleState(ScheduleState state); - - void clear(); - - void clearScheduleState(int maxCapacity); - - // for topology mgmt - - // for alert event - List<AlertPublishEvent> listAlertPublishEvent(); - - void addAlertPublishEvent(AlertPublishEvent event); - - void addAlertPublishEvents(List<AlertPublishEvent> events); - -} http://git-wip-us.apache.org/repos/asf/eagle/blob/6fd95d5c/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/service/MetadataServiceClientImpl.java ---------------------------------------------------------------------- diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/service/MetadataServiceClientImpl.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/service/MetadataServiceClientImpl.java deleted file mode 100644 index 4565d96..0000000 --- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/service/MetadataServiceClientImpl.java +++ /dev/null @@ -1,305 +0,0 @@ -/* - * - * * 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.eagle.alert.service; - -import org.apache.eagle.alert.coordination.model.Kafka2TupleMetadata; -import org.apache.eagle.alert.coordination.model.ScheduleState; -import org.apache.eagle.alert.coordination.model.SpoutSpec; -import org.apache.eagle.alert.coordination.model.internal.Topology; -import org.apache.eagle.alert.engine.coordinator.PolicyDefinition; -import org.apache.eagle.alert.engine.coordinator.Publishment; -import org.apache.eagle.alert.engine.coordinator.StreamDefinition; -import org.apache.eagle.alert.engine.coordinator.StreamingCluster; - -import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider; -import com.sun.jersey.api.client.Client; -import com.sun.jersey.api.client.ClientResponse; -import com.sun.jersey.api.client.GenericType; -import com.sun.jersey.api.client.WebResource; -import com.sun.jersey.api.client.config.ClientConfig; -import com.sun.jersey.api.client.config.DefaultClientConfig; -import com.sun.jersey.client.urlconnection.URLConnectionClientHandler; -import com.typesafe.config.Config; -import org.apache.eagle.alert.engine.model.AlertPublishEvent; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import javax.ws.rs.core.MediaType; - -public class MetadataServiceClientImpl implements IMetadataServiceClient { - private static final long serialVersionUID = 3003976065082684128L; - - private static final Logger LOG = LoggerFactory.getLogger(MetadataServiceClientImpl.class); - - private static final String METADATA_SCHEDULESTATES_PATH = "/metadata/schedulestates"; - private static final String METADATA_PUBLISHMENTS_PATH = "/metadata/publishments"; - private static final String METADATA_DATASOURCES_PATH = "/metadata/datasources"; - private static final String METADATA_STREAMS_PATH = "/metadata/streams"; - private static final String METADATA_POLICIES_PATH = "/metadata/policies"; - private static final String METADATA_CLUSTERS_PATH = "/metadata/clusters"; - private static final String METADATA_TOPOLOGY_PATH = "/metadata/topologies"; - private static final String METADATA_ALERTS_PATH = "/metadata/alerts"; - - private static final String METADATA_PUBLISHMENTS_BATCH_PATH = "/metadata/publishments/batch"; - private static final String METADATA_DATASOURCES_BATCH_PATH = "/metadata/datasources/batch"; - private static final String METADATA_STREAMS_BATCH_PATH = "/metadata/streams/batch"; - private static final String METADATA_POLICIES_BATCH_PATH = "/metadata/policies/batch"; - private static final String METADATA_CLUSTERS_BATCH_PATH = "/metadata/clusters/batch"; - private static final String METADATA_TOPOLOGY_BATCH_PATH = "/metadata/topologies/batch"; - private static final String METADATA_ALERTS_BATCH_PATH = "/metadata/alerts/batch"; - - private static final String METADATA_CLEAR_PATH = "/metadata/clear"; - private static final String METADATA_CLEAR_SCHEDULESTATES_PATH = "/metadata/clear/schedulestates"; - - private static final String EAGLE_CORRELATION_CONTEXT = "metadataService.context"; - public static final String EAGLE_CORRELATION_SERVICE_PORT = "metadataService.port"; - public static final String EAGLE_CORRELATION_SERVICE_HOST = "metadataService.host"; - - protected static final String CONTENT_TYPE = "Content-Type"; - - private String host; - private int port; - private String context; - private transient Client client; - private String basePath; - - public MetadataServiceClientImpl(Config config) { - this(config.getString(EAGLE_CORRELATION_SERVICE_HOST), config.getInt(EAGLE_CORRELATION_SERVICE_PORT), config - .getString(EAGLE_CORRELATION_CONTEXT)); - basePath = buildBasePath(); - } - - public MetadataServiceClientImpl(String host, int port, String context) { - this.host = host; - this.port = port; - this.context = context; - this.basePath = buildBasePath(); - ClientConfig cc = new DefaultClientConfig(); - cc.getProperties().put(DefaultClientConfig.PROPERTY_CONNECT_TIMEOUT, 60 * 1000); - cc.getProperties().put(DefaultClientConfig.PROPERTY_READ_TIMEOUT, 60 * 1000); - cc.getClasses().add(JacksonJsonProvider.class); - cc.getProperties().put(URLConnectionClientHandler.PROPERTY_HTTP_URL_CONNECTION_SET_METHOD_WORKAROUND, true); - this.client = Client.create(cc); - client.addFilter(new com.sun.jersey.api.client.filter.GZIPContentEncodingFilter()); - } - - private String buildBasePath() { - StringBuilder sb = new StringBuilder(); - sb.append("http://"); - sb.append(host); - sb.append(":"); - sb.append(port); - sb.append(context); - return sb.toString(); - } - - @Override - public void close() throws IOException { - client.destroy(); - } - - @Override - public List<SpoutSpec> listSpoutMetadata() { - ScheduleState state = getVersionedSpec(); - return new ArrayList<>(state.getSpoutSpecs().values()); - } - - @Override - public List<StreamingCluster> listClusters() { - return list(METADATA_CLUSTERS_PATH, new GenericType<List<StreamingCluster>>() { - }); - } - - @Override - public List<PolicyDefinition> listPolicies() { - return list(METADATA_POLICIES_PATH, new GenericType<List<PolicyDefinition>>() { - }); - } - - @Override - public List<StreamDefinition> listStreams() { - return list(METADATA_STREAMS_PATH, new GenericType<List<StreamDefinition>>() { - }); - } - - @Override - public List<Kafka2TupleMetadata> listDataSources() { - return list(METADATA_DATASOURCES_PATH, new GenericType<List<Kafka2TupleMetadata>>() { - }); - } - - private <T> List<T> list(String path, GenericType<List<T>> type) { - WebResource r = client.resource(basePath + path); - LOG.info("Requesting {}", basePath + path); - List<T> ret = r.accept(MediaType.APPLICATION_JSON_TYPE).type(MediaType.APPLICATION_JSON).get(type); - return ret; - } - - @Override - public List<Publishment> listPublishment() { - return list(METADATA_PUBLISHMENTS_PATH, new GenericType<List<Publishment>>() { - }); - } - - @Override - public ScheduleState getVersionedSpec(String version) { - return listOne(METADATA_SCHEDULESTATES_PATH + "/" + version, ScheduleState.class); - } - - @Override - public ScheduleState getVersionedSpec() { - return listOne(METADATA_SCHEDULESTATES_PATH, ScheduleState.class); - } - - private <T> T listOne(String path, Class<T> tClz) { - LOG.info("Requesting {}", basePath + path); - WebResource r = client.resource(basePath + path); - - ClientResponse resp = r.accept(MediaType.APPLICATION_JSON_TYPE).type(MediaType.APPLICATION_JSON) - .get(ClientResponse.class); - if (resp.getStatus() < 300) { - try { - return resp.getEntity(tClz); - } catch (Exception e) { - LOG.warn("List one entity failed, ignored and continue, path:{}", path, e); - } - } else { - LOG.warn("Fail querying metadata service {}, http status: {}", basePath + path, resp.getStatus()); - } - return null; - } - - @Override - public void addScheduleState(ScheduleState state) { - WebResource r = client.resource(basePath + METADATA_SCHEDULESTATES_PATH); - r.accept(MediaType.APPLICATION_JSON_TYPE).type(MediaType.APPLICATION_JSON).post(state); - } - - @Override - public List<Topology> listTopologies() { - return list(METADATA_TOPOLOGY_PATH, new GenericType<List<Topology>>() { - }); - } - - @Override - public void addStreamingCluster(StreamingCluster cluster) { - WebResource r = client.resource(basePath + METADATA_CLUSTERS_PATH); - r.accept(MediaType.APPLICATION_JSON_TYPE).type(MediaType.APPLICATION_JSON).post(cluster); - } - - @Override - public void addStreamingClusters(List<StreamingCluster> clusters) { - WebResource r = client.resource(basePath + METADATA_CLUSTERS_BATCH_PATH); - r.accept(MediaType.APPLICATION_JSON_TYPE).type(MediaType.APPLICATION_JSON).post(clusters); - } - - @Override - public void addTopology(Topology t) { - WebResource r = client.resource(basePath + METADATA_TOPOLOGY_PATH); - r.accept(MediaType.APPLICATION_JSON_TYPE).type(MediaType.APPLICATION_JSON).post(t); - } - - @Override - public void addTopologies(List<Topology> topologies) { - WebResource r = client.resource(basePath + METADATA_TOPOLOGY_BATCH_PATH); - r.accept(MediaType.APPLICATION_JSON_TYPE).type(MediaType.APPLICATION_JSON).post(topologies); - } - - @Override - public void addPolicy(PolicyDefinition policy) { - WebResource r = client.resource(basePath + METADATA_POLICIES_PATH); - r.accept(MediaType.APPLICATION_JSON_TYPE).type(MediaType.APPLICATION_JSON).post(policy); - } - - @Override - public void addPolicies(List<PolicyDefinition> policies) { - WebResource r = client.resource(basePath + METADATA_POLICIES_BATCH_PATH); - r.accept(MediaType.APPLICATION_JSON_TYPE).type(MediaType.APPLICATION_JSON).post(policies); - } - - @Override - public void addStreamDefinition(StreamDefinition streamDef) { - WebResource r = client.resource(basePath + METADATA_STREAMS_PATH); - r.accept(MediaType.APPLICATION_JSON_TYPE).type(MediaType.APPLICATION_JSON).post(streamDef); - } - - @Override - public void addStreamDefinitions(List<StreamDefinition> streamDefs) { - WebResource r = client.resource(basePath + METADATA_STREAMS_BATCH_PATH); - r.accept(MediaType.APPLICATION_JSON_TYPE).type(MediaType.APPLICATION_JSON).post(streamDefs); - } - - @Override - public void addDataSource(Kafka2TupleMetadata k2t) { - WebResource r = client.resource(basePath + METADATA_DATASOURCES_PATH); - r.accept(MediaType.APPLICATION_JSON_TYPE).type(MediaType.APPLICATION_JSON).post(k2t); - } - - @Override - public void addDataSources(List<Kafka2TupleMetadata> k2ts) { - WebResource r = client.resource(basePath + METADATA_DATASOURCES_BATCH_PATH); - r.accept(MediaType.APPLICATION_JSON_TYPE).type(MediaType.APPLICATION_JSON).post(k2ts); - } - - @Override - public void addPublishment(Publishment pub) { - WebResource r = client.resource(basePath + METADATA_PUBLISHMENTS_PATH); - r.accept(MediaType.APPLICATION_JSON_TYPE).type(MediaType.APPLICATION_JSON).post(pub); - } - - @Override - public void addPublishments(List<Publishment> pubs) { - WebResource r = client.resource(basePath + METADATA_PUBLISHMENTS_BATCH_PATH); - r.accept(MediaType.APPLICATION_JSON_TYPE).type(MediaType.APPLICATION_JSON).post(pubs); - } - - @Override - public void clear() { - WebResource r = client.resource(basePath + METADATA_CLEAR_PATH); - r.accept(MediaType.APPLICATION_JSON_TYPE).type(MediaType.APPLICATION_JSON).post(); - } - - @Override - public void clearScheduleState(int maxCapacity) { - WebResource r = client.resource(basePath + METADATA_CLEAR_SCHEDULESTATES_PATH); - r.accept(MediaType.APPLICATION_JSON_TYPE).type(MediaType.APPLICATION_JSON).post(maxCapacity); - } - - @Override - public List<AlertPublishEvent> listAlertPublishEvent() { - return list(METADATA_ALERTS_PATH, new GenericType<List<AlertPublishEvent>>(){}); - } - - @Override - public void addAlertPublishEvent(AlertPublishEvent event) { - WebResource r = client.resource(basePath + METADATA_ALERTS_PATH); - r.accept(MediaType.APPLICATION_JSON_TYPE).type(MediaType.APPLICATION_JSON).post(event); - } - - @Override - public void addAlertPublishEvents(List<AlertPublishEvent> events) { - WebResource r = client.resource(basePath + METADATA_ALERTS_BATCH_PATH); - r.accept(MediaType.APPLICATION_JSON_TYPE).type(MediaType.APPLICATION_JSON).post(events); - } - -} http://git-wip-us.apache.org/repos/asf/eagle/blob/6fd95d5c/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/siddhiext/StringEmptyFunctionExtension.java ---------------------------------------------------------------------- diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/siddhiext/StringEmptyFunctionExtension.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/siddhiext/StringEmptyFunctionExtension.java deleted file mode 100644 index e047662..0000000 --- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/siddhiext/StringEmptyFunctionExtension.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * 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 - * <p/> - * http://www.apache.org/licenses/LICENSE-2.0 - * <p/> - * 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.eagle.alert.siddhiext; - -import org.wso2.siddhi.core.config.ExecutionPlanContext; -import org.wso2.siddhi.core.executor.ExpressionExecutor; -import org.wso2.siddhi.core.executor.function.FunctionExecutor; -import org.wso2.siddhi.query.api.definition.Attribute; -import org.wso2.siddhi.query.api.exception.ExecutionPlanValidationException; - -public class StringEmptyFunctionExtension extends FunctionExecutor { - /** - * The initialization method for StringEmptyFunctionExtension, this method will be called before the other methods. - * - * @param attributeExpressionExecutors the executors of each function parameter - * @param executionPlanContext the context of the execution plan - */ - @Override - protected void init(ExpressionExecutor[] attributeExpressionExecutors, ExecutionPlanContext executionPlanContext) { - if (attributeExpressionExecutors.length != 1) { - throw new ExecutionPlanValidationException("Invalid no of arguments passed to string:empty() function, " - + "required 1, but found " + attributeExpressionExecutors.length); - } - - Attribute.Type attributeType = attributeExpressionExecutors[0].getReturnType(); - if (attributeType != Attribute.Type.STRING) { - throw new ExecutionPlanValidationException("Invalid parameter type found for the argument of math:string() function, " - + "required " + Attribute.Type.STRING - + ", but found " + attributeType.toString()); - } - } - - /** - * The main execution method which will be called upon event arrival. - * when there are more than one function parameter - * - * @param data the runtime values of function parameters - * @return the function result - */ - @Override - protected Object execute(Object[] data) { - return null; - } - - @Override - protected Object execute(Object data) { - return !(data == null || ((String) data).isEmpty()); - } - - @Override - public void start() { - } - - @Override - public void stop() { - } - - @Override - public Attribute.Type getReturnType() { - return Attribute.Type.BOOL; - } - - @Override - public Object[] currentState() { - return null; - } - - @Override - public void restoreState(Object[] state) { - } -} http://git-wip-us.apache.org/repos/asf/eagle/blob/6fd95d5c/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/siddhiext/StringListSizeFunctionExtension.java ---------------------------------------------------------------------- diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/siddhiext/StringListSizeFunctionExtension.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/siddhiext/StringListSizeFunctionExtension.java deleted file mode 100644 index 5d3d3ae..0000000 --- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/siddhiext/StringListSizeFunctionExtension.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * 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 - * <p/> - * http://www.apache.org/licenses/LICENSE-2.0 - * <p/> - * 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.eagle.alert.siddhiext; - -import org.apache.commons.collections.ListUtils; -import org.apache.eagle.alert.utils.JsonUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.wso2.siddhi.core.config.ExecutionPlanContext; -import org.wso2.siddhi.core.executor.ExpressionExecutor; -import org.wso2.siddhi.core.executor.function.FunctionExecutor; -import org.wso2.siddhi.query.api.definition.Attribute; -import org.wso2.siddhi.query.api.exception.ExecutionPlanValidationException; - -import java.util.List; - -public class StringListSizeFunctionExtension extends FunctionExecutor { - private static final Logger LOG = LoggerFactory.getLogger(StringListSizeFunctionExtension.class); - - /** - * The initialization method for StringListSizeFunctionExtension, this method will be called before the other methods. - * - * @param attributeExpressionExecutors the executors of each function parameter - * @param executionPlanContext the context of the execution plan - */ - @Override - protected void init(ExpressionExecutor[] attributeExpressionExecutors, ExecutionPlanContext executionPlanContext) { - if (attributeExpressionExecutors.length != 1) { - throw new ExecutionPlanValidationException("Invalid no of arguments passed to string:listSize() function, " - + "required 1, but found " + attributeExpressionExecutors.length); - } - - Attribute.Type attributeType = attributeExpressionExecutors[0].getReturnType(); - if (attributeType != Attribute.Type.STRING) { - throw new ExecutionPlanValidationException("Invalid parameter type found for the argument of string:listSize() function, " - + "required " + Attribute.Type.STRING - + ", but found " + attributeType.toString()); - } - } - - /** - * The main execution method which will be called upon event arrival. - * when there are more than one function parameter - * This method calculates subtraction of two List Of Strings - * Each String is a jobs string needs to be loaded - * @param data the runtime values of function parameters - * @return the function result - */ - @Override - protected Object execute(Object[] data) { - return null; - } - - @Override - protected Object execute(Object data) { - try { - return JsonUtils.jsonStringToList((String)data).size(); - } catch (Exception e) { - LOG.warn("exception found {}", e); - return 0; - } - } - - @Override - public void start() { - } - - @Override - public void stop() { - } - - @Override - public Attribute.Type getReturnType() { - return Attribute.Type.INT; - } - - @Override - public Object[] currentState() { - return null; - } - - @Override - public void restoreState(Object[] state) { - } -} http://git-wip-us.apache.org/repos/asf/eagle/blob/6fd95d5c/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/siddhiext/StringSubtractFunctionExtension.java ---------------------------------------------------------------------- diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/siddhiext/StringSubtractFunctionExtension.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/siddhiext/StringSubtractFunctionExtension.java deleted file mode 100644 index 9d26adf..0000000 --- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/siddhiext/StringSubtractFunctionExtension.java +++ /dev/null @@ -1,106 +0,0 @@ -/* - * 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 - * <p/> - * http://www.apache.org/licenses/LICENSE-2.0 - * <p/> - * 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.eagle.alert.siddhiext; - -import org.apache.commons.collections.ListUtils; -import org.apache.eagle.alert.utils.JsonUtils; -import org.codehaus.jettison.json.JSONArray; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.wso2.siddhi.core.config.ExecutionPlanContext; -import org.wso2.siddhi.core.executor.ExpressionExecutor; -import org.wso2.siddhi.core.executor.function.FunctionExecutor; -import org.wso2.siddhi.query.api.definition.Attribute; -import org.wso2.siddhi.query.api.exception.ExecutionPlanValidationException; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -public class StringSubtractFunctionExtension extends FunctionExecutor { - private static final Logger LOG = LoggerFactory.getLogger(StringSubtractFunctionExtension.class); - - /** - * The initialization method for StringSubtractFunctionExtension, this method will be called before the other methods. - * - * @param attributeExpressionExecutors the executors of each function parameter - * @param executionPlanContext the context of the execution plan - */ - @Override - protected void init(ExpressionExecutor[] attributeExpressionExecutors, ExecutionPlanContext executionPlanContext) { - if (attributeExpressionExecutors.length != 2) { - throw new ExecutionPlanValidationException("Invalid no of arguments passed to string:subtract() function, " - + "required 2, but found " + attributeExpressionExecutors.length); - } - - Attribute.Type attributeType = attributeExpressionExecutors[0].getReturnType(); - if (attributeType != Attribute.Type.STRING) { - throw new ExecutionPlanValidationException("Invalid parameter type found for the argument of string:subtract() function, " - + "required " + Attribute.Type.STRING - + ", but found " + attributeType.toString()); - } - } - - /** - * The main execution method which will be called upon event arrival. - * when there are more than one function parameter - * This method calculates subtraction of two List Of Strings - * Each String is a jobs string needs to be loaded - * @param data the runtime values of function parameters - * @return the function result - */ - @Override - protected Object execute(Object[] data) { - try { - List<String> ths = JsonUtils.jsonStringToList((String) data[0]); - List<String> rhs = JsonUtils.jsonStringToList((String) data[1]); - - return org.apache.commons.lang.StringUtils.join(ListUtils.subtract(ths, rhs), "\n"); - } catch (Exception e) { - LOG.warn("exception found {}", e); - return null; - } - } - - @Override - protected Object execute(Object data) { - return null; - } - - @Override - public void start() { - } - - @Override - public void stop() { - } - - @Override - public Attribute.Type getReturnType() { - return Attribute.Type.STRING; - } - - @Override - public Object[] currentState() { - return null; - } - - @Override - public void restoreState(Object[] state) { - } -} http://git-wip-us.apache.org/repos/asf/eagle/blob/6fd95d5c/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/AlertConstants.java ---------------------------------------------------------------------- diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/AlertConstants.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/AlertConstants.java deleted file mode 100644 index 2740836..0000000 --- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/AlertConstants.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * 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 - * <p/> - * http://www.apache.org/licenses/LICENSE-2.0 - * <p/> - * 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.eagle.alert.utils; - -public class AlertConstants { - public static final String FIELD_0 = "f0"; - public static final String FIELD_1 = "f1"; - public static final String FIELD_2 = "f2"; - public static final String FIELD_3 = "f3"; - - public static final String DEFAULT_SPOUT_NAME = "alertEngineSpout"; - public static final String DEFAULT_ROUTERBOLT_NAME = "streamRouterBolt"; - - public static final String ALERT_SERVICE_ENDPOINT_NAME = "AlertService"; - - public static final String COORDINATOR = "coordinator"; - - public static final String KAFKA_BROKER_ZK_BASE_PATH = "spout.kafkaBrokerZkBasePath"; - public static final String KAFKA_BROKER_ZK_QUORUM = "spout.kafkaBrokerZkQuorum"; -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/eagle/blob/6fd95d5c/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/ByteUtils.java ---------------------------------------------------------------------- diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/ByteUtils.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/ByteUtils.java deleted file mode 100644 index 53fc4ac..0000000 --- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/ByteUtils.java +++ /dev/null @@ -1,188 +0,0 @@ -/* - * 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.eagle.alert.utils; - -import java.io.UnsupportedEncodingException; - -public class ByteUtils { - - public static double bytesToDouble(byte[] bytes, int offset) { - return Double.longBitsToDouble(bytesToLong(bytes, offset)); - } - - public static double bytesToDouble(byte[] bytes) { - return Double.longBitsToDouble(bytesToLong(bytes)); - } - - public static void doubleToBytes(double v, byte[] bytes) { - doubleToBytes(v, bytes, 0); - } - - public static void doubleToBytes(double v, byte[] bytes, int offset) { - longToBytes(Double.doubleToLongBits(v), bytes, offset); - } - - public static byte[] doubleToBytes(double v) { - return longToBytes(Double.doubleToLongBits(v)); - } - - public static long bytesToLong(byte[] bytes) { - return bytesToLong(bytes, 0); - } - - public static long bytesToLong(byte[] bytes, int offset) { - long value = 0; - for (int i = 0; i < 8; i++) { - value <<= 8; - value |= (bytes[i + offset] & 0xFF); - } - return value; - } - - public static void longToBytes(long v, byte[] bytes) { - longToBytes(v, bytes, 0); - } - - public static void longToBytes(long v, byte[] bytes, int offset) { - long tmp = v; - for (int i = 0; i < 8; i++) { - bytes[offset + 7 - i] = (byte) (tmp & 0xFF); - tmp >>= 8; - } - } - - public static byte[] longToBytes(long v) { - long tmp = v; - byte[] b = new byte[8]; - for (int i = 0; i < 8; i++) { - b[7 - i] = (byte) (tmp & 0xFF); - tmp >>= 8; - } - return b; - } - - public static int bytesToInt(byte[] bytes) { - return bytesToInt(bytes, 0); - } - - public static int bytesToInt(byte[] bytes, int offset) { - int value = 0; - for (int i = 0; i < 4; i++) { - value <<= 8; - value |= (bytes[i + offset] & 0xFF); - } - return value; - } - - public static void intToBytes(int v, byte[] bytes) { - intToBytes(v, bytes, 0); - } - - public static void intToBytes(int v, byte[] bytes, int offset) { - int tmp = v; - for (int i = 0; i < 4; i++) { - bytes[offset + 3 - i] = (byte) (tmp & 0xFF); - tmp >>= 8; - } - } - - public static byte[] intToBytes(int v) { - int tmp = v; - byte[] b = new byte[4]; - for (int i = 0; i < 4; i++) { - b[3 - i] = (byte) (tmp & 0xFF); - tmp >>= 8; - } - return b; - } - - ////// - - public static short bytesToShort(byte[] bytes) { - return bytesToShort(bytes, 0); - } - - public static short bytesToShort(byte[] bytes, int offset) { - short value = 0; - for (int i = 0; i < 2; i++) { - value <<= 8; - value |= (bytes[i + offset] & 0xFF); - } - return value; - } - - public static void shortToBytes(short v, byte[] bytes) { - shortToBytes(v, bytes, 0); - } - - public static void shortToBytes(short v, byte[] bytes, int offset) { - int tmp = v; - for (int i = 0; i < 2; i++) { - bytes[offset + 1 - i] = (byte) (tmp & 0xFF); - tmp >>= 8; - } - } - - public static byte[] shortToBytes(short v) { - int tmp = v; - byte[] b = new byte[2]; - for (int i = 0; i < 2; i++) { - b[1 - i] = (byte) (tmp & 0xFF); - tmp >>= 8; - } - return b; - } - - public static byte[] concat(byte[]... arrays) { - int length = 0; - for (byte[] array : arrays) { - length += array.length; - } - byte[] result = new byte[length]; - int pos = 0; - for (byte[] array : arrays) { - System.arraycopy(array, 0, result, pos, array.length); - pos += array.length; - } - return result; - } - - public static byte[] stringToBytes(String str) { - try { - return str.getBytes("UTF-8"); - } catch (UnsupportedEncodingException e) { - throw new IllegalStateException(e); - } - } - - // public static void main(String[] args){ - // int a = "ThreadName".hashCode(); - // byte[] b = intToBytes(a); - // byte[] c = intToBytes(1676687583); - // String s = new String(b); - // System.out.println(s); - - // byte[] d = intToBytes(8652353); - // System.out.println(bytesToInt(d)); - - // byte[] e = longToBytes(12131513513l); - // System.out.println(bytesToLong(e)); - // if(12131513513l == bytesToLong(e)){ - // System.out.println("yes"); - // } - // } -} \ No newline at end of file
