Repository: camel Updated Branches: refs/heads/master 4a89d61b8 -> 8104c5d77
CAMEL-8342 Added Ganglia component Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/12779b64 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/12779b64 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/12779b64 Branch: refs/heads/master Commit: 12779b64b9749892933d69e30c4a9b1eb9d5c806 Parents: 4a89d61 Author: Daniel Pocock <dan...@pocock.pro> Authored: Tue Feb 10 21:45:11 2015 +0100 Committer: Willem Jiang <willem.ji...@gmail.com> Committed: Thu Feb 12 23:24:09 2015 +0800 ---------------------------------------------------------------------- components/camel-ganglia/pom.xml | 85 ++++++ .../component/ganglia/GangliaComponent.java | 62 +++++ .../component/ganglia/GangliaConfiguration.java | 256 +++++++++++++++++++ .../component/ganglia/GangliaConstants.java | 35 +++ .../component/ganglia/GangliaEndpoint.java | 82 ++++++ .../component/ganglia/GangliaProducer.java | 99 +++++++ .../src/main/resources/META-INF/LICENSE.txt | 203 +++++++++++++++ .../src/main/resources/META-INF/NOTICE.txt | 11 + .../services/org/apache/camel/component/ganglia | 17 ++ components/pom.xml | 1 + 10 files changed, 851 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/12779b64/components/camel-ganglia/pom.xml ---------------------------------------------------------------------- diff --git a/components/camel-ganglia/pom.xml b/components/camel-ganglia/pom.xml new file mode 100644 index 0000000..8e858f0 --- /dev/null +++ b/components/camel-ganglia/pom.xml @@ -0,0 +1,85 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + 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. +--> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.apache.camel</groupId> + <artifactId>components</artifactId> + <version>2.15-SNAPSHOT</version> + </parent> + + <artifactId>camel-ganglia</artifactId> + <packaging>bundle</packaging> + <name>Camel :: Ganglia</name> + <description>Camel Ganglia support</description> + + <properties> + <camel.osgi.export.pkg> + org.apache.camel.component.ganglia.* + </camel.osgi.export.pkg> + <camel.osgi.export.service>org.apache.camel.spi.ComponentResolver;component=ganglia</camel.osgi.export.service> + </properties> + + <repositories> + <repository> + <id>jboss.fs</id> + <name>JBoss FuseSource Public Release Repository</name> + <url>https://repository.jboss.org/nexus/content/groups/fs-public</url> + <snapshots> + <enabled>false</enabled> + </snapshots> + <releases> + <enabled>true</enabled> + </releases> + </repository> + </repositories> + + <dependencies> + + <dependency> + <groupId>org.apache.camel</groupId> + <artifactId>camel-core</artifactId> + </dependency> + + <dependency> + <groupId>info.ganglia.gmetric4j</groupId> + <artifactId>gmetric4j</artifactId> + <version>1.0.7</version> + </dependency> + + <!-- test dependencies --> + <dependency> + <groupId>org.apache.camel</groupId> + <artifactId>camel-test</artifactId> + <optional>true</optional> + <scope>test</scope> + </dependency> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-log4j12</artifactId> + <scope>test</scope> + </dependency> + </dependencies> + +</project> http://git-wip-us.apache.org/repos/asf/camel/blob/12779b64/components/camel-ganglia/src/main/java/org/apache/camel/component/ganglia/GangliaComponent.java ---------------------------------------------------------------------- diff --git a/components/camel-ganglia/src/main/java/org/apache/camel/component/ganglia/GangliaComponent.java b/components/camel-ganglia/src/main/java/org/apache/camel/component/ganglia/GangliaComponent.java new file mode 100644 index 0000000..c491a29 --- /dev/null +++ b/components/camel-ganglia/src/main/java/org/apache/camel/component/ganglia/GangliaComponent.java @@ -0,0 +1,62 @@ +/** + * 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.camel.component.ganglia; + +import java.net.URI; +import java.util.Map; + +import org.apache.camel.Endpoint; +import org.apache.camel.impl.UriEndpointComponent; +import org.apache.camel.util.ObjectHelper; + +/** + * @version + */ +public class GangliaComponent extends UriEndpointComponent { + + private GangliaConfiguration configuration; + + public GangliaComponent() { + super(GangliaEndpoint.class); + configuration = new GangliaConfiguration(); + } + + @Override + protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception { + URI url = new URI(uri); + + // must use copy as each endpoint can have different options + ObjectHelper.notNull(configuration, "configuration"); + GangliaConfiguration config = configuration.copy(); + config.configure(url); + setProperties(config, parameters); + + GangliaEndpoint endpoint = new GangliaEndpoint(uri, this); + endpoint.setConfiguration(config); + setProperties(endpoint, parameters); + + return endpoint; + } + + public GangliaConfiguration getConfiguration() { + return configuration; + } + + public void setConfiguration(GangliaConfiguration configuration) { + this.configuration = configuration; + } +} http://git-wip-us.apache.org/repos/asf/camel/blob/12779b64/components/camel-ganglia/src/main/java/org/apache/camel/component/ganglia/GangliaConfiguration.java ---------------------------------------------------------------------- diff --git a/components/camel-ganglia/src/main/java/org/apache/camel/component/ganglia/GangliaConfiguration.java b/components/camel-ganglia/src/main/java/org/apache/camel/component/ganglia/GangliaConfiguration.java new file mode 100644 index 0000000..510e318 --- /dev/null +++ b/components/camel-ganglia/src/main/java/org/apache/camel/component/ganglia/GangliaConfiguration.java @@ -0,0 +1,256 @@ +/** + * 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.camel.component.ganglia; + +import java.io.IOException; +import java.net.URI; + +import org.apache.camel.RuntimeCamelException; +import org.apache.camel.spi.UriParam; +import org.apache.camel.spi.UriParams; +import org.apache.camel.spi.UriPath; +import org.apache.camel.util.ObjectHelper; + +import info.ganglia.gmetric4j.gmetric.GMetric; +import info.ganglia.gmetric4j.gmetric.GMetricSlope; +import info.ganglia.gmetric4j.gmetric.GMetricType; + +/** + * @version + */ +@UriParams +public class GangliaConfiguration implements Cloneable { + + public final static String DEFAULT_DESTINATION = "239.2.11.71"; + public final static int DEFAULT_PORT = 8649; + public final static GMetric.UDPAddressingMode DEFAULT_MODE = GMetric.UDPAddressingMode.MULTICAST; + public final static int DEFAULT_TTL = 5; + public final static boolean DEFAULT_WIRE_FORMAT_31X = true; + public final static String DEFAULT_GROUP_NAME = "Java"; + public final static String DEFAULT_METRIC_NAME = "metric"; + public final static GMetricType DEFAULT_TYPE = GMetricType.STRING; + public final static GMetricSlope DEFAULT_SLOPE = GMetricSlope.BOTH; + public final static String DEFAULT_UNITS = ""; + public final static int DEFAULT_TMAX = 60; + public final static int DEFAULT_DMAX = 0; + + @UriPath + private String host = DEFAULT_DESTINATION; + + @UriPath + private int port = DEFAULT_PORT; + + @UriParam + private GMetric.UDPAddressingMode mode = DEFAULT_MODE; + + @UriParam + private int ttl = DEFAULT_TTL; + + @UriParam + private boolean wireFormat31x = DEFAULT_WIRE_FORMAT_31X; + + @UriParam + private String spoofHostname; + + @UriParam + private String groupName = DEFAULT_GROUP_NAME; + + @UriParam + private String prefix = null; + + @UriParam + private String metricName = DEFAULT_METRIC_NAME; + + @UriParam + private GMetricType type = DEFAULT_TYPE; + + @UriParam + private GMetricSlope slope = DEFAULT_SLOPE; + + @UriParam + private String units = DEFAULT_UNITS; + + @UriParam + private int tmax = DEFAULT_TMAX; + + @UriParam + private int dmax = DEFAULT_DMAX; + + /** + * Returns a copy of this configuration + */ + public GangliaConfiguration copy() { + try { + GangliaConfiguration copy = (GangliaConfiguration) clone(); + return copy; + } catch (CloneNotSupportedException e) { + throw new RuntimeCamelException(e); + } + } + + public void configure(URI uri) { + String value = uri.getHost(); + if (value != null) { + setHost(value); + } + int port = uri.getPort(); + if (port > 0) { + setPort(port); + } + } + + public GMetric createGMetric() { + try { + return new GMetric(host, port, mode, ttl, wireFormat31x, + null, spoofHostname); + } catch(IOException ex) { + throw new RuntimeCamelException("Failed to initialize Ganglia", ex); + } + } + + public String getHost() { + return host; + } + + public void setHost(String host) { + this.host = host; + } + + public int getPort() { + return port; + } + + public void setPort(int port) { + this.port = port; + } + + public GMetric.UDPAddressingMode getMode() { + return mode; + } + + public void setMode(GMetric.UDPAddressingMode mode) { + this.mode = mode; + } + + public int getTtl() { + return ttl; + } + + public void setTtl(int ttl) { + this.ttl = ttl; + } + + public boolean getWireFormat31x() { + return wireFormat31x; + } + + public void setWireFormat31x(boolean wireFormat31x) { + this.wireFormat31x = wireFormat31x; + } + + public String getSpoofHostname() { + return spoofHostname; + } + + public void setSpoofHostname(String spoofHostname) { + this.spoofHostname = spoofHostname; + } + + public String getGroupName() { + return groupName; + } + + public void setGroupName(String groupName) { + this.groupName = groupName; + } + + public String getPrefix() { + return prefix; + } + + public void setPrefix(String prefix) { + this.prefix = prefix; + } + + public String getMetricName() { + return metricName; + } + + public void setMetricName(String metricName) { + this.metricName = metricName; + } + + public GMetricType getType() { + return type; + } + + public void setType(GMetricType type) { + this.type = type; + } + + public GMetricSlope getSlope() { + return slope; + } + + public void setSlope(GMetricSlope slope) { + this.slope = slope; + } + + public String getUnits() { + return units; + } + + public void setUnits(String units) { + this.units = units; + } + + public int getTMax() { + return tmax; + } + + public void setTMax(int tmax) { + this.tmax = tmax; + } + + public int getDMax() { + return dmax; + } + + public void setDMax(int dmax) { + this.dmax = dmax; + } + + @Override + public String toString() { + return "GangliaConfiguration[" + + "host=" + host + ":" + port + + ", mode=" + mode + + ", ttl=" + ttl + + ", wireFormat31x=" + wireFormat31x + + ", spoofHostname=" + spoofHostname + + ", groupName=" + groupName + + ", prefix=" + prefix + + ", metricName=" + metricName + + ", type=" + type + + ", slope=" + slope + + ", units=" + units + + ", tmax=" + tmax + + ", dmax=" + dmax + + "]"; + } + +} http://git-wip-us.apache.org/repos/asf/camel/blob/12779b64/components/camel-ganglia/src/main/java/org/apache/camel/component/ganglia/GangliaConstants.java ---------------------------------------------------------------------- diff --git a/components/camel-ganglia/src/main/java/org/apache/camel/component/ganglia/GangliaConstants.java b/components/camel-ganglia/src/main/java/org/apache/camel/component/ganglia/GangliaConstants.java new file mode 100644 index 0000000..e5d71a2 --- /dev/null +++ b/components/camel-ganglia/src/main/java/org/apache/camel/component/ganglia/GangliaConstants.java @@ -0,0 +1,35 @@ +/** + * 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.camel.component.ganglia; + +/** + * @version + */ +public final class GangliaConstants { + + public static final String GROUP_NAME = "CamelGangliaGroupName"; + public static final String METRIC_NAME = "CamelGangliaMetricName"; + public static final String METRIC_TYPE = "CamelGangliaMetricType"; + public static final String METRIC_SLOPE = "CamelGangliaMetricSlope"; + public static final String METRIC_UNITS = "CamelGangliaMetricUnits"; + public static final String METRIC_TMAX = "CamelGangliaMetricTMax"; + public static final String METRIC_DMAX = "CamelGangliaMetricDMax"; + + private GangliaConstants() { + } + +} http://git-wip-us.apache.org/repos/asf/camel/blob/12779b64/components/camel-ganglia/src/main/java/org/apache/camel/component/ganglia/GangliaEndpoint.java ---------------------------------------------------------------------- diff --git a/components/camel-ganglia/src/main/java/org/apache/camel/component/ganglia/GangliaEndpoint.java b/components/camel-ganglia/src/main/java/org/apache/camel/component/ganglia/GangliaEndpoint.java new file mode 100644 index 0000000..91ed5d4 --- /dev/null +++ b/components/camel-ganglia/src/main/java/org/apache/camel/component/ganglia/GangliaEndpoint.java @@ -0,0 +1,82 @@ +/** + * 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.camel.component.ganglia; + +import org.apache.camel.Component; +import org.apache.camel.Consumer; +import org.apache.camel.Processor; +import org.apache.camel.Producer; +import org.apache.camel.impl.DefaultEndpoint; +import org.apache.camel.spi.UriEndpoint; +import org.apache.camel.spi.UriParam; +import org.apache.camel.util.ObjectHelper; + +import info.ganglia.gmetric4j.Publisher; +import info.ganglia.gmetric4j.gmetric.GMetric; +import info.ganglia.gmetric4j.gmetric.GMetricPublisher; + +/** + * @version + */ +@UriEndpoint(scheme = "ganglia", label = "monitoring") +public class GangliaEndpoint extends DefaultEndpoint { + + private Publisher publisher; + + @UriParam + private GangliaConfiguration configuration; + + public GangliaEndpoint() { + } + + public GangliaEndpoint(String endpointUri, Component component) { + super(endpointUri, component); + } + + public Producer createProducer() throws Exception { + ObjectHelper.notNull(configuration, "configuration"); + return new GangliaProducer(this, getPublisher()); + } + + public Consumer createConsumer(Processor processor) throws Exception { + throw new UnsupportedOperationException("Ganglia consumer not supported"); + } + + public boolean isSingleton() { + return true; + } + + public GangliaConfiguration getConfiguration() { + return configuration; + } + + public void setConfiguration(GangliaConfiguration configuration) { + this.configuration = configuration; + } + + public synchronized Publisher getPublisher() { + if (publisher == null) { + GMetric gmetric = configuration.createGMetric(); + publisher = new GMetricPublisher(gmetric); + } + return publisher; + } + + public void setPublisher(Publisher publisher) { + this.publisher = publisher; + } +} http://git-wip-us.apache.org/repos/asf/camel/blob/12779b64/components/camel-ganglia/src/main/java/org/apache/camel/component/ganglia/GangliaProducer.java ---------------------------------------------------------------------- diff --git a/components/camel-ganglia/src/main/java/org/apache/camel/component/ganglia/GangliaProducer.java b/components/camel-ganglia/src/main/java/org/apache/camel/component/ganglia/GangliaProducer.java new file mode 100644 index 0000000..1133654 --- /dev/null +++ b/components/camel-ganglia/src/main/java/org/apache/camel/component/ganglia/GangliaProducer.java @@ -0,0 +1,99 @@ +/** + * 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.camel.component.ganglia; + +import java.util.concurrent.ExecutorService; + +import org.apache.camel.CamelException; +import org.apache.camel.Exchange; +import org.apache.camel.Message; +import org.apache.camel.impl.DefaultProducer; + +import org.apache.camel.component.ganglia.GangliaConstants; + +import info.ganglia.gmetric4j.Publisher; +import info.ganglia.gmetric4j.gmetric.GMetricSlope; +import info.ganglia.gmetric4j.gmetric.GMetricType; + +/** + * @version + */ +public class GangliaProducer extends DefaultProducer { + + private final Publisher publisher; + private final GangliaEndpoint gangliaEndpoint; + + public GangliaProducer(GangliaEndpoint endpoint, Publisher publisher) { + super(endpoint); + this.gangliaEndpoint = endpoint; + this.publisher = publisher; + } + + public void process(Exchange exchange) throws Exception { + Message message = exchange.getIn(); + + GangliaConfiguration conf = gangliaEndpoint.getConfiguration(); + + String groupName = conf.getGroupName(); + if (message.getHeaders().containsKey(GangliaConstants.GROUP_NAME)) { + groupName = message.getHeader(GangliaConstants.GROUP_NAME, String.class); + } + + String prefix = conf.getPrefix(); + String metricName = conf.getMetricName(); + if (message.getHeaders().containsKey(GangliaConstants.METRIC_NAME)) { + metricName = message.getHeader(GangliaConstants.METRIC_NAME, String.class); + } + if (prefix != null && prefix.length() > 0) { + metricName = prefix + "_" + metricName; + } + + GMetricType type = conf.getType(); + if (message.getHeaders().containsKey(GangliaConstants.METRIC_TYPE)) { + type = message.getHeader(GangliaConstants.METRIC_TYPE, GMetricType.class); + } + + GMetricSlope slope = conf.getSlope(); + if (message.getHeaders().containsKey(GangliaConstants.METRIC_SLOPE)) { + slope = message.getHeader(GangliaConstants.METRIC_SLOPE, GMetricSlope.class); + } + + String units = conf.getUnits(); + if (message.getHeaders().containsKey(GangliaConstants.METRIC_UNITS)) { + units = message.getHeader(GangliaConstants.METRIC_UNITS, String.class); + } + + int tmax = conf.getTMax(); + if (message.getHeaders().containsKey(GangliaConstants.METRIC_TMAX)) { + tmax = message.getHeader(GangliaConstants.METRIC_TMAX, Integer.class); + } + + int dmax = conf.getDMax(); + if (message.getHeaders().containsKey(GangliaConstants.METRIC_DMAX)) { + dmax = message.getHeader(GangliaConstants.METRIC_DMAX, Integer.class); + } + + String value = message.getBody(String.class); + + if (log.isDebugEnabled()) { + log.debug("Sending metric {} to Ganglia: {}", metricName, value); + } + publisher.publish(groupName, + metricName, value, type, slope, tmax, dmax, units); + log.trace("Sending metric done"); + } +} http://git-wip-us.apache.org/repos/asf/camel/blob/12779b64/components/camel-ganglia/src/main/resources/META-INF/LICENSE.txt ---------------------------------------------------------------------- diff --git a/components/camel-ganglia/src/main/resources/META-INF/LICENSE.txt b/components/camel-ganglia/src/main/resources/META-INF/LICENSE.txt new file mode 100644 index 0000000..6b0b127 --- /dev/null +++ b/components/camel-ganglia/src/main/resources/META-INF/LICENSE.txt @@ -0,0 +1,203 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed 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/camel/blob/12779b64/components/camel-ganglia/src/main/resources/META-INF/NOTICE.txt ---------------------------------------------------------------------- diff --git a/components/camel-ganglia/src/main/resources/META-INF/NOTICE.txt b/components/camel-ganglia/src/main/resources/META-INF/NOTICE.txt new file mode 100644 index 0000000..2e215bf --- /dev/null +++ b/components/camel-ganglia/src/main/resources/META-INF/NOTICE.txt @@ -0,0 +1,11 @@ + ========================================================================= + == NOTICE file corresponding to the section 4 d of == + == the Apache License, Version 2.0, == + == in this case for the Apache Camel distribution. == + ========================================================================= + + This product includes software developed by + The Apache Software Foundation (http://www.apache.org/). + + Please read the different LICENSE files present in the licenses directory of + this distribution. http://git-wip-us.apache.org/repos/asf/camel/blob/12779b64/components/camel-ganglia/src/main/resources/META-INF/services/org/apache/camel/component/ganglia ---------------------------------------------------------------------- diff --git a/components/camel-ganglia/src/main/resources/META-INF/services/org/apache/camel/component/ganglia b/components/camel-ganglia/src/main/resources/META-INF/services/org/apache/camel/component/ganglia new file mode 100644 index 0000000..19d4014 --- /dev/null +++ b/components/camel-ganglia/src/main/resources/META-INF/services/org/apache/camel/component/ganglia @@ -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. +# +class=org.apache.camel.component.ganglia.GangliaComponent http://git-wip-us.apache.org/repos/asf/camel/blob/12779b64/components/pom.xml ---------------------------------------------------------------------- diff --git a/components/pom.xml b/components/pom.xml index a122dfc..fd299a3 100644 --- a/components/pom.xml +++ b/components/pom.xml @@ -99,6 +99,7 @@ <module>camel-freemarker</module> <module>camel-ftp</module> <module>camel-gae</module> + <module>camel-ganglia</module> <module>camel-geocoder</module> <module>camel-github</module> <module>camel-google-calendar</module>