Yes, this is a DS component.
@Component(
configurationPid = "medline.bam.metric.provider.query",
configurationPolicy = ConfigurationPolicy.REQUIRE,
immediate = true
)
@Designate(ocd = QueryProviderConfig.class)
public class QueryProvider
Configuration Property Type: Name per
http://njbartlett.name/2015/08/17/osgir6-declarative-services.html
The CFP is the following:
@ObjectClassDefinition(name = "BAM Query Metric Provider Configuration")
@interface QueryProviderConfig
{
String system();
String path();
int frequency() default 60;
Status status() default Status.Requested;
boolean postable() default false;
RuleType ruleType();
String ruleDef() default "";
ProviderType providerType();
String dataSource();
String queryFile();
String[] queryMods() default {};
String nameColumn() default "";
String valueColumn();
ValueColumnType valueColumnType() default ValueColumnType.INT;
}
The exception occurs within the Activator when the method ruleType() of the CFP
is invoked.
I hesitate to post the code as it’s a bit more complicated but that’s the
upshot. My gut is telling me that since RuleType is an enum, it can’t be null,
although that make sense in this case. I can test it of course, by adding
“None” to the RuleType enum and setting the default to that but I’d prefer not
to unless that’s the expected approach.
From: David Jencks [mailto:[email protected]]
Sent: Tuesday, September 06, 2016 2:48 PM
To: [email protected]
Subject: Re: configuration property types and enums
I have some guesses about what you might be talking about but it doesn’t all
make sense yet.This is a DS component, right? Could you be a lot more
specific, showing at least the activate method signature, whatever you mean by
configuration property type, the enum, and the stack trace? If you’ve used any
extra annotations on the component please show them too.
thanks
david jencks
On Sep 6, 2016, at 11:52 AM, Leschke, Scott
<[email protected]<mailto:[email protected]>> wrote:
I’m getting the following exception from an activate method.
org.osgi.service.component.ComponentException:
java.lang.IllegalArgumentException: No enum constant (Enumeration type name).
The activate method takes a Configuration Property Type that has a method that
returns a value of the type but does NOT have a default defined. The activate
method checks to see the method returns null. This is what I want but it seems
like it’s demanding that the Enum be non-null. Am I reading this correctly?
Must CFPs that return enums always return a valid value for the type?
Scott