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

    https://github.com/apache/nifi-minifi/pull/118#discussion_r176278082
  
    --- Diff: 
minifi-c2/minifi-c2-commons/src/main/java/org/apache/nifi/minifi/c2/model/extension/ExtensionComponent.java
 ---
    @@ -0,0 +1,85 @@
    +/*
    + * 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.nifi.minifi.c2.model.extension;
    +
    +import io.swagger.annotations.ApiModel;
    +import io.swagger.annotations.ApiModelProperty;
    +
    +import java.util.List;
    +import java.util.Set;
    +
    +/**
    + * A component provided by an extension bundle
    + */
    +@ApiModel
    +public class ExtensionComponent extends DefinedType {
    +
    +    // TODO, does arch/binary/compiler metadata need to be added here?
    --- End diff --
    
    > ... would it make this an implementation of N types of components based 
on flags/architectures or a singular object which is encapsulated elsewhere, 
with the necessary information...
    
    Great question, and one I am still grappling with myself. I'd like to 
abstract these details away from the user as well and make it as easy as 
possible for both extension authors and extension users. I think I would lean 
towards something along the lines that an extension should define an interface 
(eg, the metadata in this model) that can be implemented on multiple platforms. 
In otherwords, if I choose to support the JVM, x86, and ARM, I could publish 
that as a single extension (MyCompany, MyExtension, v1.0) and there is some 
metadata that lets the MiNiFi/NiFi ecosystem know about the platform-specific 
binaries. I think this is heading down the path of a full-fledged Extension 
Registry though, which might be biting of a bit to much for this initial 
version of the C2 effort (we aren't even attempting to host binaries or 
facilitate centralized distribution and dynamic installation). That said, If 
anyone can think of a minimal version of that concept that gets us on the right 
path,
  I'll be happy to include it!


---

Reply via email to