[
https://issues.apache.org/jira/browse/METRON-777?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16120496#comment-16120496
]
ASF GitHub Bot commented on METRON-777:
---------------------------------------
Github user mattf-horton commented on a diff in the pull request:
https://github.com/apache/metron/pull/530#discussion_r132280796
--- Diff:
bundles-lib/src/main/java/org/apache/metron/bundles/bundle/BundleCoordinates.java
---
@@ -0,0 +1,93 @@
+/*
+ * 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.metron.bundles.bundle;
+
+/**
+ * The coordinates of a bundle (group, artifact, version).
+ */
+public class BundleCoordinates {
+
+ public static final String DEFAULT_GROUP = "default";
+ public static final String DEFAULT_VERSION = "unversioned";
+
+ public static final BundleCoordinates UNKNOWN_COORDINATE = new
BundleCoordinates(DEFAULT_GROUP, "unknown", DEFAULT_VERSION);
+
+ private final String group;
+ private final String id;
+ private final String version;
+ private final String coordinate;
+
+ public BundleCoordinates(final String group, final String id, final
String version) {
+ this.group = isBlank(group) ? DEFAULT_GROUP : group;
+ this.id = id;
+ this.version = isBlank(version) ? DEFAULT_VERSION : version;
+
+ if (isBlank(id)) {
+ throw new IllegalStateException("Id is required for
BundleCoordinates");
+ }
+
+ if(this.group.contains(":") || this.id.contains(":") ||
this.version.contains(":")) {
+ throw new IllegalStateException(String.format("Invalid
coordinates: cannot contain : character group[%s] id[%s]
version[%s]",this.group,this.id,this.version));
+ }
+ this.coordinate = this.group + ":" + this.id + ":" + this.version;
+ }
+
+ private boolean isBlank(String str) {
+ return str == null || str.trim().length() == 0;
+ }
+
+ public String getGroup() {
+ return group;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public String getVersion() {
+ return version;
+ }
+
+ public final String getCoordinate() {
--- End diff --
Please rename this to getCoordinates() too, since it is public.
> Create a plugin system for Metron based on 'NAR'
> ------------------------------------------------
>
> Key: METRON-777
> URL: https://issues.apache.org/jira/browse/METRON-777
> Project: Metron
> Issue Type: New Feature
> Reporter: Otto Fowler
> Assignee: Otto Fowler
>
> The success of the Metron project will be greatly dependent on community
> participation, and with that the ability to adapt and extend Metron without
> having to maintain a fork of the project.
> As organizations and individuals look to extend the Metron system with custom
> parsers, enrichments, and stellar functions that may be proprietary in
> nature, the ability to develop and deploy these extensions outside the Metron
> code base is critically important.
> To that end, and after community discussion and proposal we create or
> formalize the 'plugin' development story in Metron.
> The proposal is to adapt the Apache Nifi NAR system for use in Metron. This
> will provide the system with:
> * archetype(s) for developer projects and independent development
> * defined packaging and metadata for 'plugin' products
> * loading and instantiation with classloader isolation capabilities
> * removing the necessity for shading plugin jars
> These capabilities will also enable other features, such as plugin lifecycle,
> plugin configuration+redeployment, and other things.
> The plugin archetypes and their installation will be a followon
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)