/*******************************************************************************
* Copyright (c) 2006-2010 eBay Inc. All Rights Reserved.
* 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
*******************************************************************************/
/**
*
*/
package org.ebayopensource.turmeric.repositorysystem.imp.impl;
import java.util.List;
import org.ebayopensource.turmeric.eclipse.codegen.utils.SOACodegenTransformer;
import org.ebayopensource.turmeric.eclipse.core.buildsystem.AbstractSOAClassPathContainer;
import org.ebayopensource.turmeric.eclipse.core.resources.constants.SOAProjectConstants.SupportedProjectType;
import org.ebayopensource.turmeric.eclipse.maven.core.utils.SOAMavenConstants;
import org.ebayopensource.turmeric.eclipse.maven.ui.dialogs.MavenLibraryDependencyDialog;
import org.ebayopensource.turmeric.eclipse.repositorysystem.core.IErrorRegistryBridge;
import org.ebayopensource.turmeric.eclipse.repositorysystem.core.IProjectHealthChecker;
import org.ebayopensource.turmeric.eclipse.repositorysystem.core.ISOAAssetRegistry;
import org.ebayopensource.turmeric.eclipse.repositorysystem.core.ISOACodegenProvider;
import org.ebayopensource.turmeric.eclipse.repositorysystem.core.ISOACodegenTransformer;
import org.ebayopensource.turmeric.eclipse.repositorysystem.core.ISOAConfigurationRegistry;
import org.ebayopensource.turmeric.eclipse.repositorysystem.core.ISOAHelpProvider;
import org.ebayopensource.turmeric.eclipse.repositorysystem.core.ISOALibraryDependencyDialog;
import org.ebayopensource.turmeric.eclipse.repositorysystem.core.ISOAOrganizationProvider;
import org.ebayopensource.turmeric.eclipse.repositorysystem.core.ISOAProjectConfigurer;
import org.ebayopensource.turmeric.eclipse.repositorysystem.core.ISOARepositorySystem;
import org.ebayopensource.turmeric.eclipse.repositorysystem.core.ISOARootLocator;
import org.ebayopensource.turmeric.eclipse.repositorysystem.core.ITypeRegistryBridge;
import org.ebayopensource.turmeric.eclipse.repositorysystem.core.TrackingEvent;
import org.ebayopensource.turmeric.eclipse.resources.util.SOAServiceUtil;
import org.ebayopensource.turmeric.eclipse.utils.collections.ListUtil;
import org.ebayopensource.turmeric.eclipse.validator.core.AbstractSOAValidator;
import org.ebayopensource.turmeric.eclipse.validator.core.ISOAPreValidator;
import org.ebayopensource.turmeric.eclipse.validator.core.ISOAValidator;
import org.ebayopensource.turmeric.eclipse.validator.utils.common.ProjectFileSystemValidator;
import org.ebayopensource.turmeric.eclipse.validator.utils.common.ProjectWorkspaceValidator;
import org.ebayopensource.turmeric.eclipse.validator.utils.common.WSDLValidator;
import org.ebayopensource.turmeric.repositorysystem.imp.utils.TurmericConstants;
import org.ebayopensource.turmeric.repositorysystem.imp.validators.TurmericPreValidator;
import org.ebayopensource.turmeric.repositorysystem.imp.validators.TurmericServiceValidator;
import org.ebayopensource.turmeric.repositorysystem.imp.validators.TurmericTargetDirectoryValidator;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.jdt.core.IJavaProject;
/**
* The Class TurmericRepositorySystem.
*
* @author yayu
*/
public class TurmericRepositorySystem implements ISOARepositorySystem {
private ISOAValidator targetDirValidator;
private ISOAProjectConfigurer projectConfigurer;
private ISOAValidator serviceValidator;
private ISOAValidator projectFileSystemValidator;
private ISOAValidator projectWorkspaceValidator;
private ISOAPreValidator preValidator;
private ISOAValidator postValidator;
private ISOAValidator wsdlValidator;
private ISOAAssetRegistry assetRegistry;
private ISOACodegenTransformer codegenTransformer;
private ITypeRegistryBridge typeRegistryBridge;
private IErrorRegistryBridge errorRegistryBridge;
private ISOAConfigurationRegistry configRegistry;
private ISOACodegenProvider codegenProvider;
private IProjectHealthChecker projectHealthChecker;
/**
* Instantiates a new turmeric repository system.
*/
public TurmericRepositorySystem() {
super();
}
/**
* {@inheritDoc}
*
*/
public ISOARootLocator getSOARootLocator() {
return TurmericRootLocator.INSTANCE;
}
/**
* {@inheritDoc}
*
*/
public String getDisplayName() {
return TurmericConstants.TURMERIC_DISPLAY_NAME;
}
/**
* {@inheritDoc}
*
*/
public String getId() {
return TurmericConstants.TURMERIC_ID;
}
/**
* {@inheritDoc}
*
*/
public String getClasspathContainerID() {
return SOAMavenConstants.MAVEN_CLASSPATH_CONTAINER_ID;
}
/**
* {@inheritDoc}
*
*/
public ISOAProjectConfigurer getProjectConfigurer() {
if (projectConfigurer == null)
projectConfigurer = new TurmericProjectConfigurer();
return projectConfigurer;
}
/**
* {@inheritDoc}
*
*/
public ISOAAssetRegistry getAssetRegistry() {
if (this.assetRegistry == null)
assetRegistry = new TurmericAssetRegistry();
return assetRegistry;
}
/**
* {@inheritDoc}
*/
public ISOACodegenTransformer getCodegenTranformer() {
if (this.codegenTransformer == null)
codegenTransformer = new SOACodegenTransformer();
return codegenTransformer;
}
/**
* {@inheritDoc}
*
*/
public ISOALibraryDependencyDialog getLibraryDependencyDialog() {
return new MavenLibraryDependencyDialog();
}
/**
* {@inheritDoc}
*/
public ITypeRegistryBridge getTypeRegistryBridge() {
if (this.typeRegistryBridge == null)
typeRegistryBridge = new TurmericTypeRegistryBridge();
return typeRegistryBridge;
}
/**
* {@inheritDoc}
*
*/
public ISOAHelpProvider getHelpProvider() {
return TurmericHelpProvider.INSTANCE;
}
/**
* {@inheritDoc}
*
*/
public ISOAConfigurationRegistry getConfigurationRegistry() {
final String orgId = getActiveOrganizationProvider().getName();
if (configRegistry == null
|| configRegistry.getOrganizationName().equals(orgId) == false) {
// either not init yet or org has been changed
configRegistry = new TurmericConfigurationRegistry(orgId);
}
return configRegistry;
}
/**
* {@inheritDoc}
*/
public IErrorRegistryBridge getErorRegistryBridge() {
if (errorRegistryBridge == null)
errorRegistryBridge = new TurmericErrorRegistryBridge();
return errorRegistryBridge;
}
/**
* {@inheritDoc}
*/
public List<ISOAOrganizationProvider> getOrganizationProviders() {
return ListUtil.list(TurmericOrganizationProvider.INSTANCE);
}
/**
* {@inheritDoc}
*/
public ISOAOrganizationProvider getActiveOrganizationProvider() {
return TurmericOrganizationProvider.INSTANCE;
}
/**
* {@inheritDoc}
*
* <p>Currently this doesn't track any events.</p>
*/
public void trackingUsage(TrackingEvent event) {
// we don't track anything for now
}
/**
* {@inheritDoc}
*
*/
public ISOAValidator getTargetDirectoryValidator() {
if (targetDirValidator == null)
targetDirValidator = new TurmericTargetDirectoryValidator();
return targetDirValidator;
}
/**
* {@inheritDoc}
*/
public ISOAValidator getServiceValidator() {
if (serviceValidator == null)
serviceValidator = new TurmericServiceValidator();
return serviceValidator;
}
/**
* {@inheritDoc}
*
*/
public ISOAValidator getProjectWorkspaceValidator() {
if (projectWorkspaceValidator == null)
projectWorkspaceValidator = new ProjectWorkspaceValidator();
return projectWorkspaceValidator;
}
/**
* {@inheritDoc}
*
*/
public ISOAValidator getProjectFileSystemValidator() {
if (projectFileSystemValidator == null)
projectFileSystemValidator = new ProjectFileSystemValidator();
return projectFileSystemValidator;
}
/**
* {@inheritDoc}
*
*/
public ISOAValidator getWSDLValidator() {
if (wsdlValidator == null)
wsdlValidator = new WSDLValidator();
return wsdlValidator;
}
/**
* {@inheritDoc}
*/
public ISOAPreValidator getPreValidator() {
if (preValidator == null)
preValidator = new TurmericPreValidator();
return preValidator;
}
/**
* {@inheritDoc}
*/
public ISOAValidator getPostValidator() {
if (postValidator == null)
postValidator = new AbstractSOAValidator() {
};
return postValidator;
}
/**
* {@inheritDoc}
*/
public AbstractSOAClassPathContainer getClassPathContainer(IPath path,
IJavaProject javaProject) {
return null;
}
/**
* {@inheritDoc}
*/
public Object getAdapter(Class arg0) {
return null;
}
/**
* {@inheritDoc}
*/
public String getProjectNatureId(SupportedProjectType projectType) {
return TurmericConstants.PROJECT_NATUREIDS_MAP.get(projectType);
}
/**
* {@inheritDoc}
*/
public boolean isValidTurmericProject(IProject project)
throws CoreException {
return SOAServiceUtil.hasNatures(project,
TurmericConstants.PROJECT_NATUREIDS_MAP.values().toArray(
new String[0]));
}
/**
* {@inheritDoc}
*
* @seeorg.ebayopensource.turmeric.eclipse.repositorysystem.core.
* ISOARepositorySystem#getProjectType(org.eclipse.core.resources.IProject)
*/
public SupportedProjectType getProjectType(IProject project)
throws CoreException {
if (SOAServiceUtil.hasNatures(project,
TurmericConstants.NATURE_ID_SOA_INTF_PROJECT)) {
return SupportedProjectType.INTERFACE;
} else if (SOAServiceUtil.hasNatures(project,
TurmericConstants.NATURE_ID_SOA_IMPL_PROJECT)) {
return SupportedProjectType.IMPL;
} else if (SOAServiceUtil.hasNatures(project,
TurmericConstants.NATURE_ID_SOA_CONSUMER_PROJECT)) {
return SupportedProjectType.CONSUMER;
} else if (SOAServiceUtil.hasNatures(project,
TurmericConstants.NATURE_ID_SOA_TYPELIB_PROJECT)) {
return SupportedProjectType.TYPE_LIBRARY;
} else if (SOAServiceUtil.hasNatures(project,
TurmericConstants.NATURE_ID_TURMERIC_ERRORLIB_PROJECT)) {
return SupportedProjectType.ERROR_LIBRARY;
}
return null;
}
/**
* {@inheritDoc}
*/
public String getTurmericProjectNatureId(IProject project)
throws CoreException {
return getProjectNatureId(getProjectType(project));
}
/**
* {@inheritDoc}
*/
public ISOACodegenProvider getSOACodegenProvider() {
if (codegenProvider == null) {
codegenProvider = new TurmericCodegenProvider();
}
return codegenProvider;
}
/**
* {@inheritDoc}
*
* @see org.ebayopensource.turmeric.eclipse.repositorysystem.ui.ISOARepositorySystem#getProjectHealthChecker()
*/
public IProjectHealthChecker getProjectHealthChecker() {
if (this.projectHealthChecker == null) {
this.projectHealthChecker = new TurmericProjectHealthChecker();
}
return this.projectHealthChecker;
}
}