Github user mcgilman commented on a diff in the pull request: https://github.com/apache/nifi/pull/2750#discussion_r195449260 --- Diff: nifi-nar-bundles/nifi-couchbase-bundle/nifi-couchbase-processors/src/main/java/org/apache/nifi/processors/couchbase/AbstractCouchbaseProcessor.java --- @@ -39,54 +38,32 @@ import com.couchbase.client.core.CouchbaseException; import com.couchbase.client.java.Bucket; +import static org.apache.nifi.couchbase.CouchbaseConfigurationProperties.BUCKET_NAME; +import static org.apache.nifi.couchbase.CouchbaseConfigurationProperties.COUCHBASE_CLUSTER_SERVICE; + /** - * Provides common functionalities for Couchbase processors. + * Provides common functionality for Couchbase processors. */ public abstract class AbstractCouchbaseProcessor extends AbstractProcessor { - public static final PropertyDescriptor DOCUMENT_TYPE = new PropertyDescriptor.Builder().name("Document Type") - .description("The type of contents.") - .required(true) - .allowableValues(DocumentType.values()) - .defaultValue(DocumentType.Json.toString()) - .build(); - - public static final PropertyDescriptor DOC_ID = new PropertyDescriptor.Builder().name("Document Id") + public static final PropertyDescriptor DOC_ID = new PropertyDescriptor.Builder() + .name("document-id") + .displayName("Document Id") .description("A static, fixed Couchbase document id, or an expression to construct the Couchbase document id.") .expressionLanguageSupported(ExpressionLanguageScope.FLOWFILE_ATTRIBUTES) .addValidator(StandardValidators.NON_EMPTY_VALIDATOR) .build(); - public static final Relationship REL_SUCCESS = new Relationship.Builder() - .name("success") - .description("All FlowFiles that are written to Couchbase Server are routed to this relationship.") - .build(); - public static final Relationship REL_ORIGINAL = new Relationship.Builder() - .name("original") - .description("The original input file will be routed to this destination when it has been successfully processed.") - .build(); - public static final Relationship REL_RETRY = new Relationship.Builder() - .name("retry") - .description("All FlowFiles that cannot written to Couchbase Server but can be retried are routed to this relationship.") - .build(); - public static final Relationship REL_FAILURE = new Relationship.Builder() - .name("failure") - .description("All FlowFiles that cannot written to Couchbase Server and can't be retried are routed to this relationship.") - .build(); - - public static final PropertyDescriptor COUCHBASE_CLUSTER_SERVICE = new PropertyDescriptor.Builder().name("Couchbase Cluster Controller Service") - .description("A Couchbase Cluster Controller Service which manages connections to a Couchbase cluster.") - .required(true) - .identifiesControllerService(CouchbaseClusterControllerService.class) - .build(); + public static final Relationship.Builder RELB_SUCCESS = new Relationship.Builder().name("success"); + public static final Relationship.Builder RELB_ORIGINAL = new Relationship.Builder().name("original"); + public static final Relationship.Builder RELB_RETRY = new Relationship.Builder().name("retry"); + public static final Relationship.Builder RELB_FAILURE = new Relationship.Builder().name("failure"); - public static final PropertyDescriptor BUCKET_NAME = new PropertyDescriptor.Builder().name("Bucket Name") - .description("The name of bucket to access.") - .required(true) - .addValidator(StandardValidators.NON_EMPTY_VALIDATOR) - .defaultValue("default") - .build(); + public static final Relationship REL_ORIGINAL = RELB_ORIGINAL.build(); + public static final Relationship REL_SUCCESS = RELB_SUCCESS.build(); + public static final Relationship REL_RETRY = RELB_RETRY.build(); + public static final Relationship REL_FAILURE = RELB_FAILURE.build(); --- End diff -- While the issue does not surface due to the way `getRelationships` is invoked, as `static` fields I believe these `Relationship` and `Relationship.Builder` variables are shared across any implementations of an `AbstractCouchbaseProcessor`. Because they are shared, when one implementation set's a description it would be reflected in any other implementation. With an approach like this, it probably makes sense to have these be not `static`.
---