<extensionManifest>
    <systemApiVersion>1.8.0</systemApiVersion>
    <extensions>
        <extension>
            <name>org.apache.nifi.processors.TestProcessor1</name>
            <type>PROCESSOR</type>
            <description>Test processor 1.</description>
            <tags>
                <tag>test</tag>
                <tag>processor</tag>
            </tags>
        </extension>
        <extension>
            <name>org.apache.nifi.processors.TestProcessor2</name>
            <type>PROCESSOR</type>
            <description>Test processor 2.</description>
            <tags>
                <tag>test</tag>
                <tag>processor</tag>
            </tags>
            <restricted>
                <restrictions>
                    <restriction>
                        <requiredPermission>write filesystem</requiredPermission>
                        <explanation>Test explanation.</explanation>
                    </restriction>
                </restrictions>
            </restricted>
        </extension>
        <extension>
            <name>org.apache.nifi.processors.TestProcessor3</name>
            <type>PROCESSOR</type>
            <description/>
            <tags>
            </tags>
        </extension>
        <extension>
            <name>org.apache.nifi.service.TestServiceImpl</name>
            <type>CONTROLLER_SERVICE</type>
            <deprecationNotice/>
            <description>Test service.</description>
            <tags>
                <tag>test</tag>
                <tag>service</tag>
            </tags>
            <providedServiceAPIs>
                <providedServiceAPI>
                    <className>org.apache.nifi.service.TestService</className>
                    <groupId>org.apache.nifi</groupId>
                    <artifactId>nifi-test-service-api-nar</artifactId>
                    <version>1.0.0</version>
                </providedServiceAPI>
            </providedServiceAPIs>
        </extension>
    </extensions>
</extensionManifest>