/*******************************************************************************
* Copyright 2015 Software Evolution and Architecture Lab, University of Zurich
*
* 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 eu.cloudwave.wp5.feedback.eclipse.performance;
import com.google.inject.AbstractModule;
import com.google.inject.Singleton;
import com.google.inject.assistedinject.FactoryModuleBuilder;
import eu.cloudwave.wp5.feedback.eclipse.base.core.builders.FeedbackCleaner;
import eu.cloudwave.wp5.feedback.eclipse.base.core.builders.FeedbackCleanerImpl;
import eu.cloudwave.wp5.feedback.eclipse.base.infrastructure.rest.RestClient;
import eu.cloudwave.wp5.feedback.eclipse.base.infrastructure.rest.RestClientImpl;
import eu.cloudwave.wp5.feedback.eclipse.base.infrastructure.template.TemplateHandler;
import eu.cloudwave.wp5.feedback.eclipse.base.resources.core.FeedbackResourceExtensionFactory;
import eu.cloudwave.wp5.feedback.eclipse.base.resources.core.FeedbackResourceFactory;
import eu.cloudwave.wp5.feedback.eclipse.base.resources.core.java.FeedbackJavaResourceFactory;
import eu.cloudwave.wp5.feedback.eclipse.base.ui.factories.ColorFactory;
import eu.cloudwave.wp5.feedback.eclipse.base.ui.factories.ColorFactoryImpl;
import eu.cloudwave.wp5.feedback.eclipse.base.ui.factories.ControlFactory;
import eu.cloudwave.wp5.feedback.eclipse.base.ui.factories.ControlFactoryImpl;
import eu.cloudwave.wp5.feedback.eclipse.base.ui.factories.LayoutFactory;
import eu.cloudwave.wp5.feedback.eclipse.base.ui.factories.LayoutFactoryImpl;
import eu.cloudwave.wp5.feedback.eclipse.base.ui.hovers.contentprovider.FeedbackInformationControlContentProviderRegistry;
import eu.cloudwave.wp5.feedback.eclipse.base.ui.hovers.contentprovider.FeedbackInformationControlContentProviderRegistryImpl;
import eu.cloudwave.wp5.feedback.eclipse.performance.core.builders.participants.TemplateHandlerImpl;
import eu.cloudwave.wp5.feedback.eclipse.performance.core.feedbackhandler.FeedbackHandlerClient;
import eu.cloudwave.wp5.feedback.eclipse.performance.core.feedbackhandler.FeedbackHandlerClientFactory;
import eu.cloudwave.wp5.feedback.eclipse.performance.core.feedbackhandler.FeedbackHandlerClientImpl;
import eu.cloudwave.wp5.feedback.eclipse.performance.core.feedbackhandler.FeedbackHandlerEclipseClient;
import eu.cloudwave.wp5.feedback.eclipse.performance.core.feedbackhandler.FeedbackHandlerEclipseClientImpl;
import eu.cloudwave.wp5.feedback.eclipse.performance.resources.core.FeedbackResourceExtensionFactoryImpl;
import eu.cloudwave.wp5.feedback.eclipse.performance.resources.core.FeedbackResourceFactoryImpl;
import eu.cloudwave.wp5.feedback.eclipse.performance.resources.core.java.FeedbackJavaResourceFactoryImpl;
public class ProductionModule extends AbstractModule {
/**
* {@inheritDoc}
*/
@Override
protected final void configure() {
finalConfiguration();
overridableConfiguration();
}
private final void finalConfiguration() {
// infrastructure
bind(RestClient.class).to(RestClientImpl.class).in(Singleton.class);
bind(TemplateHandler.class).to(TemplateHandlerImpl.class).in(Singleton.class);
// Resource Factories
bind(FeedbackResourceFactory.class).to(FeedbackResourceFactoryImpl.class).in(Singleton.class);
bind(FeedbackJavaResourceFactory.class).to(FeedbackJavaResourceFactoryImpl.class).in(Singleton.class);
bind(FeedbackResourceExtensionFactory.class).to(FeedbackResourceExtensionFactoryImpl.class).in(Singleton.class);
// builder
bind(FeedbackCleaner.class).to(FeedbackCleanerImpl.class).in(Singleton.class);
bind(FeedbackInformationControlContentProviderRegistry.class).to(FeedbackInformationControlContentProviderRegistryImpl.class).in(Singleton.class);
// feedback handler client
install(new FactoryModuleBuilder().implement(FeedbackHandlerClient.class, FeedbackHandlerClientImpl.class).build(FeedbackHandlerClientFactory.class));
// UI
bind(ColorFactory.class).to(ColorFactoryImpl.class).in(Singleton.class);
bind(ControlFactory.class).to(ControlFactoryImpl.class).in(Singleton.class);
bind(LayoutFactory.class).to(LayoutFactoryImpl.class).in(Singleton.class);
}
protected void overridableConfiguration() {
// core
bind(FeedbackHandlerEclipseClient.class).to(FeedbackHandlerEclipseClientImpl.class).in(Singleton.class);
}
}