/*
* Copyright (C) 2012 Red Hat, Inc. and/or its affiliates.
*
* 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 org.jboss.errai.bus.server.service;
import org.jboss.errai.common.client.api.ResourceProvider;
import org.jboss.errai.common.metadata.MetaDataScanner;
import java.util.Map;
/**
* The <tt>ErraiServiceConfigurator</tt> is a template for creating a configuration for a service
*/
public interface ErraiServiceConfigurator {
/**
* Provides access to the {@link org.jboss.errai.common.metadata.MetaDataScanner}
* that is used to read component annotation meta data.
*
* @return
*/
public MetaDataScanner getMetaDataScanner();
/**
* Gets the resource providers associated with this configurator
*
* @return the resource providers associated with this configurator
*/
public Map<String, ResourceProvider> getResourceProviders();
/**
* Gets the resources attached to the specified resource class
*
* @param resourceClass - the class to search the resources for
* @param <T> - the class type
* @return the resource of type <tt>T</tt>
*/
public <T> T getResource(Class<? extends T> resourceClass);
/**
* Returns true if the configuration has this <tt>key</tt> property
*
* @param key - the property too search for
* @return false if the property does not exist
*/
public boolean hasProperty(String key);
/**
* Gets the property associated with the key
*
* @param key - the key to search for
* @return the property, if it exists, null otherwise
*/
public String getProperty(String key);
/**
* Gets the property associated with the key. Returns true if the flag is set true, or false if not or
* if the property is undefined.
* @param key
* @return
*/
public boolean getBooleanProperty(String key);
/**
* Gets the property associated with the key. Returns the number if set, or null if not set. Throws
* a NumberFormatException if the underlying key is not a number.
* @param key
* @return
*/
public Integer getIntProperty(String key);
/**
* Sets a property with the specified key and value
*
* @param key the name of the property.
* @param value the string value of the property.
*/
public void setProperty(String key, String value);
}