/******************************************************************************* * Copyright (c) 2007 Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is made available under the terms of the * Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.seam.core; import java.util.Collection; import java.util.Map; import java.util.Set; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.IPath; import org.jboss.tools.common.validation.IProjectValidationContext; import org.jboss.tools.seam.core.event.ISeamProjectChangeListener; import org.jboss.tools.seam.core.project.facet.SeamRuntime; public interface ISeamProject extends ISeamElement { public static String NATURE_ID = "org.jboss.tools.seam.core.seamnature"; //$NON-NLS-1$ public static String RUNTIME_NAME = "seam.runtime.name"; //$NON-NLS-1$ /** * Returns Eclipse project. */ public IProject getProject(); /** * Test or EJB project have WAR project as the parent. * The method returns the parent project name, * or null if project has no parent project. */ public String getParentProjectName(); /** * * @return parent project or null * @see getParentProjectName() */ public ISeamProject getParentProject(); /** * Returns Seam runtime name. * @return */ public String getRuntimeName(); /** * Returns Seam runtime object. * @return */ public SeamRuntime getRuntime(); /** * * @param runtime * @return */ public void setRuntimeName(String runtimeName); /** * Returns list of scope objects for all scope types. * @return */ public ISeamScope[] getScopes(); /** * Returns scope object for specified scope type. * @param scopeType * @return */ public ISeamScope getScope(ScopeType scopeType); /** * Returns root packages * @return */ public Collection<ISeamPackage> getPackages(); /** * * @return collection of all packages */ public Collection<ISeamPackage> getAllPackages(); /** * Finds package object in this project for component. * @param c * @return */ public ISeamPackage getPackage(ISeamComponent c); /** * * @return */ public Map<String, Set<ISeamNamespace>> getNamespaces(); /** * Returns seam component. Project can have only one ISeamComponent with * unique name. If project has a few seam components with the same name, * then corresponding ISeamComponent will have all declarations * of components with this name. * @param name of component. * @return ISeamComponent. */ public ISeamComponent getComponent(String name); /** * @param scope type. * @return Set of ISeamComponents by Scope Type. */ public Set<ISeamComponent> getComponentsByScope(ScopeType type); /** * * @param type * @param addVisibleScopes * @return Set of all ISeamComponents visible in specified context. */ public Set<ISeamComponent> getComponentsByScope(ScopeType type, boolean addVisibleScopes); /** * @param resource path of ISeamComponentDeclaration that belongs to component * @return Set of ISeamComponents by resource path. */ public Set<ISeamComponent> getComponentsByPath(IPath path); /** * @param className * @return Set of ISeamComponents by class name. */ public Set<ISeamComponent> getComponentsByClass(String className); /** * @return Set of all ISeamComponents of project */ public ISeamComponent[] getComponents(); /** * @return validation context */ public IProjectValidationContext getValidationContext(); /** * Adds component into project * @param component */ public void addComponent(ISeamComponent component); /** * Removes component from project * @param component */ public void removeComponent(ISeamComponent component); /** * @return all seam context variables of project */ public Set<ISeamContextVariable> getVariables(); /** * Adds references to variables that provide short name if * seam package including the original variable is imported by components.xml. * @return all seam context variables of project */ public Set<ISeamContextVariable> getVariables(boolean includeShortNames); /** * Adds references to variables that provide short name if * seam package including the original variable is imported * 1) by components.xml; * 2) by Java type presented by context; * 3) by Java package that contains Java type presented by context. * @return all seam context variables of project */ public Set<ISeamContextVariable> getVariables(ISeamJavaComponentDeclaration context); public void addVariable(ISeamContextVariable v); public void removeVariable(ISeamContextVariable v); /** * @param name * @return all seam variables by name from all contexts */ public Set<ISeamContextVariable> getVariablesByName(String name); /** * @param name * @return all seam variables from specific context */ public Set<ISeamContextVariable> getVariablesByScope(ScopeType scope); /** * * @param scope * @param addVisibleScopes * @return all seam variables visible in specific context */ public Set<ISeamContextVariable> getVariablesByScope(ScopeType scope, boolean addVisibleScopes); /** * @param full path of IResource where the variable is declared. * @return Set of ISeamContextVariables by resource path. */ public Set<ISeamContextVariable> getVariablesByPath(IPath path); /** * Utility method collecting all bijected attributes in java declarations. * @return set of all bijections in Seam project. */ public Set<IBijectedAttribute> getBijectedAttributes(); /** * Utility method collecting all bijections of given type in java declarations. * @param type * @return set of all bijections of given type in Seam project. */ public Set<IBijectedAttribute> getBijectedAttributesByType(BijectedAttributeType type); /** * Utility method collecting all bijections of given name and type in java declarations. * Parameters name and/or type can be set to null, then bijections with any * name and/or type is returned. * @param name * @param type * @return */ public Set<IBijectedAttribute> getBijectedAttributesByName(String name, BijectedAttributeType type); /** * @return all factories methods of project */ public ISeamFactory[] getFactories(); /** * @return Factories methods of project by name and scope */ public Set<ISeamFactory> getFactories(String name, ScopeType scope); /** * @return Factories methods of project by name */ public Set<ISeamFactory> getFactoriesByName(String name); /** * @return Factories methods of project by scope */ public Set<ISeamFactory> getFactoriesByScope(ScopeType scope); /** * * @param scope * @param addVisibleScopes * @return Factories of project visible in specified scope */ public Set<ISeamFactory> getFactoriesByScope(ScopeType scope, boolean addVisibleScopes); /** * @param resource path of ISeamFactory that belongs to factory declaration * @return Set of ISeamFactory by resource path. */ public Set<ISeamFactory> getFactoriesByPath(IPath path); /** * Adds factory method into project * @param factory */ public void addFactory(ISeamFactory factory); /** * Remove factory method from project * @param factory */ public void removeFactory(ISeamFactory factory); /** * Adds listener to the project * @param listener */ public void addSeamProjectListener(ISeamProjectChangeListener listener); /** * Removes listener from the project * @param listener */ public void removeSeamProjectListener(ISeamProjectChangeListener listener); /** * Loads results of last build if that was not done before. */ public void resolve(); }