/*******************************************************************************
* 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.eclipse.repositorysystem.core;
import java.util.List;
import org.ebayopensource.turmeric.eclipse.core.buildsystem.AbstractSOAClassPathContainer;
import org.ebayopensource.turmeric.eclipse.core.resources.constants.SOAProjectConstants.SupportedProjectType;
import org.ebayopensource.turmeric.eclipse.validator.core.ISOAPreValidator;
import org.ebayopensource.turmeric.eclipse.validator.core.ISOAValidator;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IPath;
import org.eclipse.jdt.core.IJavaProject;
/**
* The Interface ISOARepositorySystem.
*
* @author smathew
*
* The spec for all repo system to contribute their own locators,
* validators to the global repo etc. the validators are now many and
* could be moved out to a seperate spec. Implementors will implement
* this interface and contribute their class to repository system
* extension point
*/
public interface ISOARepositorySystem extends IAdaptable {
/**
* Gets the sOA root locator.
*
* @return the root locator service of the underlying system
*/
public ISOARootLocator getSOARootLocator();
/**
* Gets the display name.
*
* @return the descriptive name of the underlying system
*/
public String getDisplayName();
/**
* Gets the id.
*
* @return the ID of the underlyig build system
*/
public String getId();
/**
* Gets the target directory validator.
*
* @return the target directory validator
*/
public ISOAValidator getTargetDirectoryValidator();
/**
* Gets the project configurer.
*
* @return the project configurer
*/
public ISOAProjectConfigurer getProjectConfigurer();
/**
* Gets the service validator.
*
* @return the service validator
*/
public ISOAValidator getServiceValidator();
/**
* Gets the project workspace validator.
*
* @return the project workspace validator
*/
public ISOAValidator getProjectWorkspaceValidator();
/**
* Gets the project file system validator.
*
* @return the project file system validator
*/
public ISOAValidator getProjectFileSystemValidator();
/**
* Gets the wSDL validator.
*
* @return the wSDL validator
*/
public ISOAValidator getWSDLValidator();
/**
* Gets the pre validator.
*
* @return the pre validator
*/
public ISOAPreValidator getPreValidator();
/**
* Gets the post validator.
*
* @return the post validator
*/
public ISOAValidator getPostValidator();
/**
* Gets the asset registry.
*
* @return the asset registry
*/
public ISOAAssetRegistry getAssetRegistry();
/**
* Gets the class path container.
*
* @param path the path
* @param javaProject the java project
* @return the class path container
*/
public AbstractSOAClassPathContainer getClassPathContainer(IPath path,
IJavaProject javaProject);
/**
* Gets the classpath container id.
*
* @return The classpath container ID for the underlying repository system
*/
public String getClasspathContainerID();
/**
* Gets the codegen tranformer.
*
* @return the codegen tranformer
*/
public ISOACodegenTransformer getCodegenTranformer();
/**
* Gets the library dependency dialog.
*
* @return the library dependency dialog
*/
public ISOALibraryDependencyDialog getLibraryDependencyDialog();
/**
* Gets the type registry bridge.
*
* @return the type registry bridge
*/
public ITypeRegistryBridge getTypeRegistryBridge();
/**
* Gets the help provider.
*
* @return the instance of ISOAHelpProvider for the underlying repository
* system.
*/
public ISOAHelpProvider getHelpProvider();
/**
* Gets the configuration registry.
*
* @return the configuration registry
*/
public ISOAConfigurationRegistry getConfigurationRegistry();
/**
* Gets the eror registry bridge.
*
* @return the eror registry bridge
*/
public IErrorRegistryBridge getErorRegistryBridge();
/**
* Gets the organization providers.
*
* @return the organization providers
*/
public List<ISOAOrganizationProvider> getOrganizationProviders();
/**
* Gets the active organization provider.
*
* @return the active organization provider
*/
public ISOAOrganizationProvider getActiveOrganizationProvider();
/**
* log tracking message for the underlying system.
*
* @param event the event
*/
public void trackingUsage(TrackingEvent event);
/**
* Gets the project type.
*
* @param project the project
* @return the project type
* @throws CoreException the core exception
*/
public SupportedProjectType getProjectType(IProject project)
throws CoreException;
/**
* Gets the project nature id.
*
* @param projectType the project type
* @return the Eclipse project nature ID for the given project type
*/
public String getProjectNatureId(SupportedProjectType projectType);
/**
* Gets the turmeric project nature id.
*
* @param project the project
* @return the Eclipse project nature ID for the given Turmeric project
* @throws CoreException the core exception
*/
public String getTurmericProjectNatureId(IProject project)
throws CoreException;
/**
* check whether the given Eclipse project is a valid Turmeric project.
*
* @param project the project
* @return true, if is valid turmeric project
* @throws CoreException the core exception
*/
public boolean isValidTurmericProject(IProject project)
throws CoreException;
/**
* Need a codegen system for each organization. it will provide the
* destination folder for intf/impl/consumer project and be response for
* calling ServiceGenerator for each organization.
*
* @return the sOA codegen provider
*/
public ISOACodegenProvider getSOACodegenProvider();
/**
* Gets the project health checker.
*
* @return the project health checker instance for the underlying system
*/
public IProjectHealthChecker getProjectHealthChecker();
}