class StandardFDExtensionManager implements FDExtensionManager {

    @Override
    public PropertyDescriptor createDynamicProcessorPropertyDescriptor(final String type, final Bundle bundle, final String propertyName) {
        final ProcessorDefinition manifestProcessor = locateManifestProcessor(type, bundle);

        if (!manifestProcessor.getSupportsDynamicProperties()) {
            throw new IllegalStateException("Processor does not support dynamic properties");
        }

        // NOTE - Eventually we should be getting the definition of the dynamic property from the manifest, but for now it is hard-coded

        final PropertyDescriptor propertyDescriptor = new PropertyDescriptor();
        propertyDescriptor.setName(propertyName);
        propertyDescriptor.setDisplayName(propertyName);
        propertyDescriptor.setExpressionLanguageScope(ExpressionLanguageScope.FLOWFILE_ATTRIBUTES);
        propertyDescriptor.setDescription("Dynamic property");
        propertyDescriptor.setRequired(false);
        propertyDescriptor.setDynamic(true);
        return propertyDescriptor;
    }

    public  StandardFDExtensionManager(final AgentManifest agentManifest);

}