Andy,

I have formulated, on the basis of posts I've seen over the years, that there are two ways to build a NAR containing one's own, custom processors, what I term a /single-module product/ and a /multi-module product/. mostly based on whether I need multiple modules in IntelliJ IDEA or only one. I expose this in a page of notes that I have maintained for some time and I just looked at the single-module version, the one with the simple NAR build and discovered (I had probably just never noticed before) that the simple one suffers from the same problem as I suffer from now, to wit, that the simpler project structure and /pom.xml/ files yields a processor whose /@CapabilityDescription/ is ignored.

My original projects used the more complicated project build, but I saw someone propose the simpler one, tried it, it worked, and I have been trying to adopt it for my new project where I plan for only one module, i.e.: the project itself, and therefore dispence with separate /nar/ and /processor/ subdirectories.

This is exposed at https://www.javahotchocolate.com/notes/nifi-project.html.

If you have time and choose to look at it, and the /single-module project/ leaps out at you with the answer (as to why it can't be done that way or what, of this way, prevents the documentation from working), would you point that out? I have rebuilt using the more complex build process with /nar/ subdirectory and three instead of one /pom.xml/ files and I now get the documentation to work. This is the answer, but why can't I build using one /pom.xml/ and the simpler project structure?

Russ

On 1/28/20 10:33 AM, Russell Bateman wrote:
Andy,

The processor is really called NoOp (not CustomProcessor), it's a straight, pass-through that doesn't copy let alone modify the flowfile. It's used for debugging and crafting flows (and is always ultimately discarded or replaced with a real processor doing real things).

In my new NAR, I see

    META-INF
      bundled-dependencies
      docs
      maven
        com.windofkeltia.pipeline
          pom.properties
          pom.xml
      services
    *org.apache.nifi.processor.Processor* (of which,
    com.windofkeltia.processor.NoOp)
    com
      windofkeltia
        processor
    *NoOp.class*


In my old, huge NAR, this is under a JAR, /standard-processors.jar/...

    META-INF
      maven
        com.windofkeltia.nifi.pipeline.standard-processors
          pom.properties
          pom.xml
      services
    *org.apache.nifi.processor.Processor* (of which,
    com.windofkeltia.nifi.processor.NoOp)
    com
      windofkeltia
        nifi
          processor
    *NoOp.class*


This looks pretty much the same in both cases to me except for bundled dependencies. Also, this (huge) NAR is a sub NAR of a more complex, hierarchical way of building NARs I used to use until I stumbled upon a more shallow way. This (huge) NAR, called /nifi-pipeline.nar/, contains under its /META-INF/bundled-dependencies/ many JARs one of which is named, /standard-processors.jar/ which contains what I show just above.

Russ


On 1/28/20 8:52 AM, Andy LoPresto wrote:
When you build the Maven module which contains the custom NAR, what does your 
output look like? Specifically under the target/ directory? If you unzip the 
NAR file and compare that to one of the custom processors that has working 
documentation, do you see any differences?


Andy LoPresto
alopre...@apache.org
alopresto.apa...@gmail.com
PGP Fingerprint: 70EC B3E5 98A6 5A3F D3C4  BACE 3C6E F65B 2F7D EF69

On Jan 28, 2020, at 7:02 AM, Russell Bateman<r...@windofkeltia.com>  wrote:

Thanks, Andy, no offense taken. I tried this in Chrome and Firefox, but am 
still getting that default page. My sample flow also contains an instance of 
GetFile feeding sample files into CustomProcessor. When I look at GetFile's 
usage, I see /Description: Creates FlowFiles from file in a directory/, etc.

I've written a few custom processors over the years, but this is the first time 
I've done something inadvertently so stupid as not to stumble later upon what 
would make usage fail for it. The only thing different is that I have it in a 
totally new NAR by itself so far and am using 1.10.0.

This is bizarre to say the least.

Russ

On 1/27/20 5:56 PM, Andy LoPresto wrote:
Hi Russ,

I hate to suggest something so simple, but have you cleared the cache of your 
browser? Sometimes this can be a result of stale caching.

Andy LoPresto
alopre...@apache.org
alopresto.apa...@gmail.com
PGP Fingerprint: 70EC B3E5 98A6 5A3F D3C4  BACE 3C6E F65B 2F7D EF69

On Jan 27, 2020, at 2:30 PM, Russell Bateman<r...@windofkeltia.com>  wrote:

Addendum: the @TagsI add are not showing up in the tag field at the left, but 
when I scroll down in the processor list and see my new custom processor, I do 
see these tags listed next, to its right.

On 1/27/20 3:27 PM, Russell Bateman wrote:
Perhaps I made my question less clear that I could have. Consider that I have 
this annotation on the class of processor:

    @CapabilityDescription( "Custom processor usage statement..." )

and, because my processor is listed in the file

    /src/main/resources/META-INF/services/org.apache.nifi.processor.Processor/

as

    /com.windofkeltia.processor.//CustomProcessor/

I am able to create a perfectly running and working instance of this processor 
on the canvas through the web browser UI of NiFi 1.10.0.

However, when I right-click the processor instance and choose View usage, I do 
not see documentation with

    "Custom processor usage statement..."

but, instead, I see what I assume is default page content saying principally, 
"Apache NiFi Overview". I am looking for help/things to check that are keeping 
NiFi from displaying documentation for my capability description, properties, 
relationships, etc. Also, I am using the @Tags annotation to add a couple of quick-find 
tags: neither of these are showing up when I go to create an instance of the processor. 
This is also likely a clue to what I'm doing wrong.

Thanks,
Russ


On 1/24/20 3:30 PM, Russell Bateman wrote:
My custom processor's usage, which should come from the @CapabilityDescription 
annotation of the class containing the onTrigger() method, nevertheless is 
nothing more than the Apache NiFi Overview. I am able to place an instance on 
the canvas via the processor Component Tool (so, the custom processor is 
there--I just can't get my usage statement):

    @SupportsBatching
    @SideEffectFree
    @InputRequirement( InputRequirement.Requirement.INPUT_REQUIRED )
    *@CapabilityDescription( "Custom processor usage statement..**." )*
    public class CustomProcessor extends AbstractSessionFactory Processor
    {
      @Override
      public void onTrigger( final ProcessContext context, final
    ProcessSessionFactory sessionFactory )
          throws ProcessException
      {
        ...
      }

      etc.
    }

What thing missing should I be looking for to fix this?

I'm sure it's some stupid oversight that I have not failed to provide in other 
(successfully documented) custom processors I've written. I have compared this 
processor to those others; I've structured it identically, etc. and I have 
pored 
throughhttps://nifi.apache.org/docs/nifi-docs/html/developer-guide.html#documenting-a-component
  a number of times. Usage just doesn't work.

Thanks.




Reply via email to