/*
* Copyright 2016 ThoughtWorks, Inc.
*
* 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.thoughtworks.go.config.registry;
import com.thoughtworks.go.config.*;
import com.thoughtworks.go.config.materials.PackageMaterialConfig;
import com.thoughtworks.go.config.materials.PluggableSCMMaterialConfig;
import com.thoughtworks.go.config.materials.dependency.DependencyMaterialConfig;
import com.thoughtworks.go.config.materials.git.GitMaterialConfig;
import com.thoughtworks.go.config.materials.mercurial.HgMaterialConfig;
import com.thoughtworks.go.config.materials.perforce.P4MaterialConfig;
import com.thoughtworks.go.config.materials.svn.SvnMaterialConfig;
import com.thoughtworks.go.config.materials.tfs.TfsMaterialConfig;
import com.thoughtworks.go.config.pluggabletask.PluggableTask;
import com.thoughtworks.go.domain.Artifact;
import com.thoughtworks.go.domain.BuildOutputMatcher;
import com.thoughtworks.go.domain.OutputMatcher;
import com.thoughtworks.go.domain.Task;
import com.thoughtworks.go.domain.config.Admin;
import com.thoughtworks.go.domain.materials.MaterialConfig;
import com.thoughtworks.go.plugins.presentation.BuiltinTaskViewModelFactory;
import com.thoughtworks.go.plugins.presentation.PluggableTaskViewModelFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class ConfigElementImplementationRegistrar {
private ConfigElementImplementationRegistry registry;
@Autowired
public ConfigElementImplementationRegistrar(ConfigElementImplementationRegistry registry) {
this.registry = registry;
}
public void initialize() {
registerBuiltinTasks();
registerBuiltinMaterials();
registerBuiltinUserTypes();
registerBuiltinConsoleOutputMatchers();
registerBuiltinArtifactTypes();
registerRoleTypes();
}
private void registerRoleTypes() {
registry.registerImplementer(Role.class, RoleConfig.class, PluginRoleConfig.class);
}
private void registerBuiltinTasks() {
registry.registerImplementer(Task.class, AntTask.class, NantTask.class, ExecTask.class, RakeTask.class, FetchTask.class, PluggableTask.class);
registry.registerView(AntTask.class, new BuiltinTaskViewModelFactory("ant"));
registry.registerView(NantTask.class, new BuiltinTaskViewModelFactory("nant"));
registry.registerView(ExecTask.class, new BuiltinTaskViewModelFactory("exec"));
registry.registerView(RakeTask.class, new BuiltinTaskViewModelFactory("rake"));
registry.registerView(FetchTask.class, new BuiltinTaskViewModelFactory("fetch"));
registry.registerView(PluggableTask.class, new PluggableTaskViewModelFactory());
}
private void registerBuiltinArtifactTypes() {
registry.registerImplementer(Artifact.class, TestArtifactPlan.class, ArtifactPlan.class);
}
private void registerBuiltinConsoleOutputMatchers() {
registry.registerImplementer(OutputMatcher.class, BuildOutputMatcher.class);
}
private void registerBuiltinUserTypes() {
registry.registerImplementer(Admin.class, AdminUser.class, AdminRole.class);
}
private void registerBuiltinMaterials() {
registry.registerImplementer(MaterialConfig.class, SvnMaterialConfig.class, HgMaterialConfig.class, GitMaterialConfig.class, DependencyMaterialConfig.class, P4MaterialConfig.class,
TfsMaterialConfig.class, PackageMaterialConfig.class, PluggableSCMMaterialConfig.class);
}
}