<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at
      http://www.apache.org/licenses/LICENSE-2.0
  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<providers>

    <flowPersistenceProvider>
        <class>org.apache.nifi.registry.provider.FlowProviderXXX</class>
        <property name="Flow Property 1">foo</property>
        <property name="Flow Property 2">bar</property>
    </flowPersistenceProvider>

    <extensionBundlePersistenceProvider>
        <class>org.apache.nifi.registry.provider.MockBundlePersistenceProvider</class>
        <property name="Extension Property 1">extension foo</property>
        <property name="Extension Property 2">extension bar</property>
    </extensionBundlePersistenceProvider>

</providers>