All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.microsoft.windowsazure.core.Builder Maven / Gradle / Ivy

/**
 * Copyright Microsoft Corporation
 * 
 * Licensed 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.
 */
package com.microsoft.windowsazure.core;

import java.util.Map;

public interface Builder {

     T build(String profile, Class service, Class instance,
            Map properties);

    interface Factory {
         T create(String profile, Class service, Builder builder,
                Map properties);
    }

    interface Alteration {
        T alter(String profile, T instance, Builder builder,
                Map properties);
    }

    interface Registry {
         Registry add(Class service);

         Registry add(Class service, Class implementation);

         Registry add(Factory factory);

         void alter(Class service, Class instance,
                Alteration alteration);
    }

    interface Exports {
        void register(Registry registry);
    }
}