Search in sources :

Example 1 with ProjectProvider

use of org.osate.ge.internal.services.ProjectProvider in project osate2 by osate.

the class GefDiagramExportService method loadDiagram.

private GefAgeDiagram loadDiagram(final IFile diagramFile) {
    final URI uri = URI.createPlatformResourceURI(diagramFile.getFullPath().toString(), true);
    final IProject project = ProjectUtil.getProjectOrNull(uri);
    final org.osate.ge.diagram.Diagram mmDiagram = DiagramSerialization.readMetaModelDiagram(uri);
    final IEclipseContext eclipseContext = EclipseContextFactory.getServiceContext(FrameworkUtil.getBundle(GefDiagramExportService.class).getBundleContext());
    final ExtensionRegistryService extensionRegistry = Objects.requireNonNull(eclipseContext.get(ExtensionRegistryService.class), "Unable to retrieve extension registry");
    final ReferenceService referenceService = Objects.requireNonNull(eclipseContext.get(ReferenceService.class), "unable to retrieve reference service");
    final ActionService actionService = Objects.requireNonNull(eclipseContext.get(ActionService.class), "unable to retrieve action service");
    final AgeDiagram diagram = DiagramSerialization.createAgeDiagram(project, mmDiagram, extensionRegistry);
    // Update the diagram
    final QueryService queryService = new DefaultQueryService(referenceService);
    final ProjectProvider projectProvider = diagramFile::getProject;
    final ProjectReferenceService projectReferenceService = new ProjectReferenceServiceProxy(referenceService, projectProvider);
    final BusinessObjectNodeFactory nodeFactory = new BusinessObjectNodeFactory(projectReferenceService);
    final DefaultBusinessObjectTreeUpdater boTreeUpdater = new DefaultBusinessObjectTreeUpdater(projectProvider, extensionRegistry, projectReferenceService, queryService, nodeFactory);
    final DefaultDiagramElementGraphicalConfigurationProvider deInfoProvider = new DefaultDiagramElementGraphicalConfigurationProvider(queryService, () -> diagram, extensionRegistry);
    final DiagramUpdater diagramUpdater = new DiagramUpdater(boTreeUpdater, deInfoProvider, actionService, projectReferenceService, projectReferenceService);
    diagramUpdater.updateDiagram(diagram);
    // Create the GEF Diagram
    final GefAgeDiagram gefDiagram = new GefAgeDiagram(diagram, new DefaultColoringService(new org.osate.ge.internal.services.impl.DefaultColoringService.StyleRefresher() {

        @Override
        public void refreshDiagramColoring() {
        // No-op. Handling coloring service refresh requests is not required.
        }

        @Override
        public void refreshColoring(final Collection<DiagramElement> diagramElements) {
        // No-op. Handling coloring service refresh requests is not required.
        }
    }));
    // Add to scene. This is required for text rendering
    new Scene(gefDiagram.getSceneNode());
    // Update the diagram to reflect the scene graph and perform incremental layout
    gefDiagram.updateDiagramFromSceneGraph(false);
    diagram.modify("Incremental Layout", m -> DiagramElementLayoutUtil.layoutIncrementally(diagram, m, gefDiagram));
    return gefDiagram;
}
Also used : ReferenceService(org.osate.ge.internal.services.ReferenceService) ProjectReferenceService(org.osate.ge.internal.services.ProjectReferenceService) ProjectReferenceService(org.osate.ge.internal.services.ProjectReferenceService) DefaultColoringService(org.osate.ge.internal.services.impl.DefaultColoringService) ExtensionRegistryService(org.osate.ge.internal.services.ExtensionRegistryService) URI(org.eclipse.emf.common.util.URI) GefAgeDiagram(org.osate.ge.gef.ui.diagram.GefAgeDiagram) AgeDiagram(org.osate.ge.internal.diagram.runtime.AgeDiagram) ProjectReferenceServiceProxy(org.osate.ge.internal.services.impl.ProjectReferenceServiceProxy) DefaultQueryService(org.osate.ge.services.impl.DefaultQueryService) BusinessObjectNodeFactory(org.osate.ge.internal.diagram.runtime.updating.BusinessObjectNodeFactory) ActionService(org.osate.ge.internal.services.ActionService) ProjectProvider(org.osate.ge.internal.services.ProjectProvider) DefaultDiagramElementGraphicalConfigurationProvider(org.osate.ge.internal.diagram.runtime.updating.DefaultDiagramElementGraphicalConfigurationProvider) DiagramUpdater(org.osate.ge.internal.diagram.runtime.updating.DiagramUpdater) Scene(javafx.scene.Scene) IProject(org.eclipse.core.resources.IProject) GefAgeDiagram(org.osate.ge.gef.ui.diagram.GefAgeDiagram) DefaultQueryService(org.osate.ge.services.impl.DefaultQueryService) QueryService(org.osate.ge.services.QueryService) DefaultBusinessObjectTreeUpdater(org.osate.ge.internal.diagram.runtime.updating.DefaultBusinessObjectTreeUpdater) IEclipseContext(org.eclipse.e4.core.contexts.IEclipseContext) Collection(java.util.Collection)

Example 2 with ProjectProvider

use of org.osate.ge.internal.services.ProjectProvider in project osate2 by osate.

the class ConfigureDiagramHandler method execute.

@Override
public Object execute(final ExecutionEvent event) throws ExecutionException {
    final IEditorPart activeEditor = HandlerUtil.getActiveEditor(event);
    if (!(activeEditor instanceof InternalDiagramEditor)) {
        throw new RuntimeException("Unexpected editor: " + activeEditor);
    }
    // Get diagram and selected elements
    final InternalDiagramEditor diagramEditor = (InternalDiagramEditor) activeEditor;
    final List<DiagramElement> selectedDiagramElements = AgeHandlerUtil.getSelectedDiagramElements();
    final AgeDiagram diagram = diagramEditor.getDiagram();
    if (diagram == null) {
        throw new RuntimeException("Unable to get diagram");
    }
    // Get services
    final BusinessObjectTreeUpdater boTreeUpdater = diagramEditor.getBoTreeUpdater();
    final DiagramUpdater diagramUpdater = diagramEditor.getDiagramUpdater();
    final ProjectProvider projectProvider = Objects.requireNonNull(Adapters.adapt(diagramEditor, ProjectProvider.class), "Unable to retrieve project provider");
    final LayoutInfoProvider layoutInfoProvider = Objects.requireNonNull(Adapters.adapt(diagramEditor, LayoutInfoProvider.class), "Unable to retrieve layout information provider");
    final ExtensionRegistryService extService = Objects.requireNonNull(Adapters.adapt(diagramEditor, ExtensionRegistryService.class), "Unable to retrieve extension service");
    final ProjectReferenceService referenceService = Objects.requireNonNull(Adapters.adapt(diagramEditor, ProjectReferenceService.class), "Unable to retrieve reference service");
    BusinessObjectNode boTree = DiagramToBusinessObjectTreeConverter.createBusinessObjectNode(diagram);
    // Update the tree so that it's business objects are refreshed
    boTree = boTreeUpdater.updateTree(diagram.getConfiguration(), boTree);
    final DefaultDiagramConfigurationDialogModel model = new DefaultDiagramConfigurationDialogModel(referenceService, extService, projectProvider, diagram.getConfiguration().getDiagramType());
    // Create a BO path for the initial selection. The initial selection will be the first diagram element which will be included in the BO tree.
    Object[] initialSelectionBoPath = null;
    for (final DiagramElement selectedDiagramElement : selectedDiagramElements) {
        if (model.shouldShowBusinessObject(selectedDiagramElement.getBusinessObject())) {
            // Only build a selection path if the BO will be shown
            DiagramNode tmp = selectedDiagramElement;
            final LinkedList<Object> boList = new LinkedList<>();
            while (tmp instanceof DiagramElement) {
                boList.addFirst(tmp.getBusinessObject());
                tmp = tmp.getParent();
            }
            initialSelectionBoPath = boList.toArray();
            break;
        }
    }
    // Show the dialog
    final DiagramConfigurationDialog.Result result = DiagramConfigurationDialog.show(null, model, diagram.getConfiguration(), boTree, initialSelectionBoPath);
    if (result != null) {
        // Update the diagram
        diagramEditor.getActionExecutor().execute("Set Diagram Configuration", ExecutionMode.NORMAL, () -> {
            diagram.modify("Set Diagram Configuration", m -> {
                m.setDiagramConfiguration(result.getDiagramConfiguration());
                diagramUpdater.updateDiagram(diagram, result.getBusinessObjectTree());
            });
            // Clear ghosts triggered by this update to prevent them from being unghosted during the next update.
            diagramUpdater.clearGhosts();
            diagram.modify("Layout", m -> DiagramElementLayoutUtil.layoutIncrementally(diagram, m, layoutInfoProvider));
            return null;
        });
    }
    return null;
}
Also used : BusinessObjectTreeUpdater(org.osate.ge.internal.diagram.runtime.updating.BusinessObjectTreeUpdater) DiagramNode(org.osate.ge.internal.diagram.runtime.DiagramNode) ProjectReferenceService(org.osate.ge.internal.services.ProjectReferenceService) ExtensionRegistryService(org.osate.ge.internal.services.ExtensionRegistryService) DefaultDiagramConfigurationDialogModel(org.osate.ge.internal.ui.dialogs.DefaultDiagramConfigurationDialogModel) DiagramUpdater(org.osate.ge.internal.diagram.runtime.updating.DiagramUpdater) IEditorPart(org.eclipse.ui.IEditorPart) LinkedList(java.util.LinkedList) InternalDiagramEditor(org.osate.ge.internal.ui.editor.InternalDiagramEditor) DiagramElement(org.osate.ge.internal.diagram.runtime.DiagramElement) BusinessObjectNode(org.osate.ge.internal.diagram.runtime.updating.BusinessObjectNode) DiagramConfigurationDialog(org.osate.ge.internal.ui.dialogs.DiagramConfigurationDialog) AgeDiagram(org.osate.ge.internal.diagram.runtime.AgeDiagram) LayoutInfoProvider(org.osate.ge.internal.diagram.runtime.layout.LayoutInfoProvider) ProjectProvider(org.osate.ge.internal.services.ProjectProvider)

Example 3 with ProjectProvider

use of org.osate.ge.internal.services.ProjectProvider in project osate2 by osate.

the class RestoreMissingDiagramElementsHandler method execute.

@Override
public Object execute(final ExecutionEvent event) throws ExecutionException {
    final IEditorPart activeEditor = HandlerUtil.getActiveEditor(event);
    if (!(activeEditor instanceof InternalDiagramEditor)) {
        throw new RuntimeException("Unexpected editor: " + activeEditor);
    }
    // Get editor and various services
    final InternalDiagramEditor diagramEditor = (InternalDiagramEditor) activeEditor;
    final ProjectProvider projectProvider = (ProjectProvider) Objects.requireNonNull(diagramEditor.getAdapter(ProjectProvider.class), "Unable to retrieve project provider");
    final DiagramUpdater diagramUpdater = Objects.requireNonNull(diagramEditor.getDiagramUpdater(), "Unable to retrieve diagram updater");
    final ExtensionRegistryService extService = (ExtensionRegistryService) Objects.requireNonNull(diagramEditor.getAdapter(ExtensionRegistryService.class), "Unable to retrieve extension service");
    final AgeDiagram diagram = diagramEditor.getDiagram();
    final IEclipseContext serviceContext = EclipseContextFactory.getServiceContext(FrameworkUtil.getBundle(getClass()).getBundleContext());
    final ReferenceService referenceService = Objects.requireNonNull(serviceContext.get(ReferenceService.class), "Unable to retrieve reference service");
    final LayoutInfoProvider layoutInfoProvider = Objects.requireNonNull(Adapters.adapt(diagramEditor, LayoutInfoProvider.class), "Unable to retrieve layout info provider");
    // Stores child business object contexts which are applicable for a given parent node
    final Multimap<DiagramNode, BusinessObjectContext> diagramNodeToAvailableBusinessObjectContextsMap = ArrayListMultimap.create();
    // Build a list of ghosts that will be presented to the user to modify
    final List<DiagramUpdater.GhostedElement> ghostsToModify = new ArrayList<>();
    final BusinessObjectProviderHelper bopHelper = new BusinessObjectProviderHelper(extService);
    // Walk all nodes and look for ghosts
    diagram.getAllDiagramNodes().forEachOrdered(parent -> {
        final Collection<DiagramUpdater.GhostedElement> ghosts = diagramUpdater.getGhosts(parent);
        if (!ghosts.isEmpty()) {
            final BusinessObjectContext parentToUse;
            if (diagram.getConfiguration().getContextBoReference() == null && parent.getParent() == null) {
                parentToUse = getRootContextForProject(projectProvider);
            } else {
                parentToUse = parent;
            }
            // Create a mapping between relative reference and available child business objects
            final Map<RelativeBusinessObjectReference, Object> relRefToBusinessObjectMap = bopHelper.getChildBusinessObjects(parentToUse).stream().collect(HashMap::new, (map, bo) -> {
                final RelativeBusinessObjectReference relRef = referenceService.getRelativeReference(bo);
                if (relRef != null) {
                    map.put(relRef, bo);
                }
            }, Map::putAll);
            // Remove any entries based on existing node relative references.
            parent.getChildren().forEach(de -> relRefToBusinessObjectMap.remove(de.getRelativeReference()));
            // Don't show ghosts if there aren't any unused business objects
            if (!relRefToBusinessObjectMap.isEmpty()) {
                // Store the ghosts and the available business objects
                relRefToBusinessObjectMap.values().stream().map(bo -> new BusinessObjectContext() {

                    @Override
                    public Collection<? extends BusinessObjectContext> getChildren() {
                        return Collections.emptyList();
                    }

                    @Override
                    public BusinessObjectContext getParent() {
                        return parent;
                    }

                    @Override
                    public Object getBusinessObject() {
                        return bo;
                    }
                }).forEachOrdered(// see https://github.com/osate/osate2/issues/976
                boc -> diagramNodeToAvailableBusinessObjectContextsMap.put(parent, (BusinessObjectContext) boc));
                ghostsToModify.addAll(ghosts);
            }
        }
    });
    // Show the dialog
    final RestoreMissingDiagramElementsDialog.Result<DiagramUpdater.GhostedElement, BusinessObjectContext> result = RestoreMissingDiagramElementsDialog.show(null, new RestoreMissingDiagramElementsDialog.Model<DiagramUpdater.GhostedElement, BusinessObjectContext>() {

        @Override
        public Collection<DiagramUpdater.GhostedElement> getElements() {
            return ghostsToModify;
        }

        @Override
        public String getParentLabel(final DiagramUpdater.GhostedElement element) {
            return UiUtil.getPathLabel(element.getParent());
        }

        @Override
        public String getMissingReferenceLabel(final DiagramUpdater.GhostedElement element) {
            return referenceService.getLabel(element.getRelativeReference());
        }

        @Override
        public Collection<BusinessObjectContext> getAvailableBusinessObjects(final DiagramUpdater.GhostedElement element) {
            return diagramNodeToAvailableBusinessObjectContextsMap.get(element.getParent());
        }

        @Override
        public String getBusinessObjectLabel(final BusinessObjectContext boc) {
            return UiUtil.getDescription(boc, extService);
        }
    });
    if (result != null) {
        diagramEditor.getActionExecutor().execute("Restore Missing Diagram Elements", ExecutionMode.NORMAL, () -> {
            // Update the ghosts and the diagram
            diagram.modify("Restore Missing Diagram Elements", m -> {
                result.getObjectToNewBoMap().forEach((ghost, newBoc) -> {
                    final Object newBo = newBoc.getBusinessObject();
                    ghost.updateBusinessObject(m, newBo, referenceService.getRelativeReference(newBo));
                });
                // Update the diagram
                diagramUpdater.updateDiagram(diagram);
            });
            diagram.modify("Layout", m -> DiagramElementLayoutUtil.layoutIncrementally(diagram, m, layoutInfoProvider));
            return null;
        });
    }
    return null;
}
Also used : ExecutionEvent(org.eclipse.core.commands.ExecutionEvent) EclipseContextFactory(org.eclipse.e4.core.contexts.EclipseContextFactory) ArrayListMultimap(com.google.common.collect.ArrayListMultimap) RestoreMissingDiagramElementsDialog(org.osate.ge.internal.ui.dialogs.RestoreMissingDiagramElementsDialog) ExtensionRegistryService(org.osate.ge.internal.services.ExtensionRegistryService) HashMap(java.util.HashMap) DiagramElementLayoutUtil(org.osate.ge.internal.diagram.runtime.layout.DiagramElementLayoutUtil) Multimap(com.google.common.collect.Multimap) ArrayList(java.util.ArrayList) HandlerUtil(org.eclipse.ui.handlers.HandlerUtil) InternalDiagramEditor(org.osate.ge.internal.ui.editor.InternalDiagramEditor) BusinessObjectContext(org.osate.ge.BusinessObjectContext) IEclipseContext(org.eclipse.e4.core.contexts.IEclipseContext) Map(java.util.Map) ProjectProvider(org.osate.ge.internal.services.ProjectProvider) RelativeBusinessObjectReference(org.osate.ge.RelativeBusinessObjectReference) IEditorPart(org.eclipse.ui.IEditorPart) DiagramUpdater(org.osate.ge.internal.diagram.runtime.updating.DiagramUpdater) Collection(java.util.Collection) ExecutionException(org.eclipse.core.commands.ExecutionException) Objects(java.util.Objects) Adapters(org.eclipse.core.runtime.Adapters) AgeDiagram(org.osate.ge.internal.diagram.runtime.AgeDiagram) ReferenceService(org.osate.ge.internal.services.ReferenceService) List(java.util.List) UiUtil(org.osate.ge.internal.ui.util.UiUtil) ExecutionMode(org.osate.ge.internal.services.ActionExecutor.ExecutionMode) BusinessObjectProviderHelper(org.osate.ge.internal.util.BusinessObjectProviderHelper) AbstractHandler(org.eclipse.core.commands.AbstractHandler) LayoutInfoProvider(org.osate.ge.internal.diagram.runtime.layout.LayoutInfoProvider) Collections(java.util.Collections) FrameworkUtil(org.osgi.framework.FrameworkUtil) DiagramNode(org.osate.ge.internal.diagram.runtime.DiagramNode) ReferenceService(org.osate.ge.internal.services.ReferenceService) DiagramNode(org.osate.ge.internal.diagram.runtime.DiagramNode) HashMap(java.util.HashMap) ExtensionRegistryService(org.osate.ge.internal.services.ExtensionRegistryService) ArrayList(java.util.ArrayList) RelativeBusinessObjectReference(org.osate.ge.RelativeBusinessObjectReference) InternalDiagramEditor(org.osate.ge.internal.ui.editor.InternalDiagramEditor) AgeDiagram(org.osate.ge.internal.diagram.runtime.AgeDiagram) BusinessObjectProviderHelper(org.osate.ge.internal.util.BusinessObjectProviderHelper) ProjectProvider(org.osate.ge.internal.services.ProjectProvider) RestoreMissingDiagramElementsDialog(org.osate.ge.internal.ui.dialogs.RestoreMissingDiagramElementsDialog) DiagramUpdater(org.osate.ge.internal.diagram.runtime.updating.DiagramUpdater) IEditorPart(org.eclipse.ui.IEditorPart) IEclipseContext(org.eclipse.e4.core.contexts.IEclipseContext) Collection(java.util.Collection) BusinessObjectContext(org.osate.ge.BusinessObjectContext) HashMap(java.util.HashMap) Map(java.util.Map) LayoutInfoProvider(org.osate.ge.internal.diagram.runtime.layout.LayoutInfoProvider)

Example 4 with ProjectProvider

use of org.osate.ge.internal.services.ProjectProvider in project osate2 by osate.

the class EditorRenameUtil method rename.

public static void rename(final DiagramElement de, final String value, final InternalDiagramEditor editor) {
    final ReferenceBuilderService referenceBuilder = Objects.requireNonNull(editor.getAdapter(ReferenceBuilderService.class), "Unable to retrieve reference builder service");
    final DiagramService diagramService = Objects.requireNonNull(editor.getAdapter(DiagramService.class), "Unable to retrieve diagram service");
    final AadlModificationService aadlModService = Objects.requireNonNull(editor.getAdapter(AadlModificationService.class), "Unable to retrieve AADL modification service");
    final ProjectProvider projectProvider = Objects.requireNonNull(editor.getAdapter(ProjectProvider.class), "Unable to retrieve project provider");
    final ActionExecutor actionExecutor = editor.getActionExecutor();
    final ModelChangeNotifier modelChangeNotifier = Objects.requireNonNull(editor.getAdapter(ModelChangeNotifier.class), "Unable to retrieve model change notifier");
    final EObject bo = (EObject) de.getBusinessObject();
    final BusinessObjectHandler handler = de.getBusinessObjectHandler();
    final String initialValue = getCurrentName(de);
    // If the business object handler provides a Rename method, then use it to rename the element instead of using LTK refactoring.
    if (RenameUtil.supportsNonLtkRename(handler)) {
        final CanonicalBusinessObjectReference canonicalRef = referenceBuilder.getCanonicalReference(bo);
        final IProject project = ProjectUtil.getProjectOrNull(EcoreUtil.getURI(bo));
        final ReferenceCollection references;
        if (canonicalRef == null || project == null) {
            references = null;
        } else {
            final Set<IProject> relevantProjects = ProjectUtil.getAffectedProjects(project, new HashSet<>());
            references = diagramService.getReferences(relevantProjects, Collections.singleton(canonicalRef));
        }
        aadlModService.modify(bo, (boToModify) -> {
            RenameUtil.performNonLtkRename(boToModify, handler, value);
            // Update diagram references. This is done in the modify block because the project is build and the diagram is updated before the modify()
            // function returns.
            final CanonicalBusinessObjectReference newCanonicalRef = referenceBuilder.getCanonicalReference(boToModify);
            final RelativeBusinessObjectReference newRelRef = referenceBuilder.getRelativeReference(boToModify);
            if (newCanonicalRef != null && newRelRef != null) {
                references.update(new UpdatedReferenceValueProvider() {

                    @Override
                    public CanonicalBusinessObjectReference getNewCanonicalReference(final CanonicalBusinessObjectReference originalCanonicalReference) {
                        if (originalCanonicalReference.equals(canonicalRef)) {
                            return newCanonicalRef;
                        }
                        return null;
                    }

                    @Override
                    public RelativeBusinessObjectReference getNewRelativeReference(final CanonicalBusinessObjectReference originalCanonicalReference) {
                        if (originalCanonicalReference.equals(canonicalRef)) {
                            return newRelRef;
                        }
                        return null;
                    }
                });
            }
        });
    } else {
        // Rename using LTK
        actionExecutor.execute("Rename Element " + initialValue + " to " + value, ActionExecutor.ExecutionMode.NORMAL, new LtkRenameAction(projectProvider, modelChangeNotifier, new BoSupplier(de), value, initialValue));
    }
}
Also used : ActionExecutor(org.osate.ge.internal.services.ActionExecutor) ModelChangeNotifier(org.osate.ge.internal.services.ModelChangeNotifier) RelativeBusinessObjectReference(org.osate.ge.RelativeBusinessObjectReference) BusinessObjectHandler(org.osate.ge.businessobjecthandling.BusinessObjectHandler) IProject(org.eclipse.core.resources.IProject) AadlModificationService(org.osate.ge.internal.services.AadlModificationService) UpdatedReferenceValueProvider(org.osate.ge.internal.services.DiagramService.UpdatedReferenceValueProvider) ReferenceBuilderService(org.osate.ge.services.ReferenceBuilderService) CanonicalBusinessObjectReference(org.osate.ge.CanonicalBusinessObjectReference) EObject(org.eclipse.emf.ecore.EObject) LtkRenameAction(org.osate.ge.internal.ui.LtkRenameAction) DiagramService(org.osate.ge.internal.services.DiagramService) ReferenceCollection(org.osate.ge.internal.services.DiagramService.ReferenceCollection) ProjectProvider(org.osate.ge.internal.services.ProjectProvider)

Aggregations

ProjectProvider (org.osate.ge.internal.services.ProjectProvider)4 AgeDiagram (org.osate.ge.internal.diagram.runtime.AgeDiagram)3 DiagramUpdater (org.osate.ge.internal.diagram.runtime.updating.DiagramUpdater)3 ExtensionRegistryService (org.osate.ge.internal.services.ExtensionRegistryService)3 Collection (java.util.Collection)2 IProject (org.eclipse.core.resources.IProject)2 IEclipseContext (org.eclipse.e4.core.contexts.IEclipseContext)2 IEditorPart (org.eclipse.ui.IEditorPart)2 RelativeBusinessObjectReference (org.osate.ge.RelativeBusinessObjectReference)2 DiagramNode (org.osate.ge.internal.diagram.runtime.DiagramNode)2 LayoutInfoProvider (org.osate.ge.internal.diagram.runtime.layout.LayoutInfoProvider)2 ProjectReferenceService (org.osate.ge.internal.services.ProjectReferenceService)2 ReferenceService (org.osate.ge.internal.services.ReferenceService)2 ArrayListMultimap (com.google.common.collect.ArrayListMultimap)1 Multimap (com.google.common.collect.Multimap)1 ArrayList (java.util.ArrayList)1 Collections (java.util.Collections)1 HashMap (java.util.HashMap)1 LinkedList (java.util.LinkedList)1 List (java.util.List)1