osate / osate2

Open Source AADL2 Tool Environment
http://osate.org
Eclipse Public License 2.0
36 stars 8 forks source link

defaultTraversalAllInstanes() is not traversing instance models #297

Closed philip-alldredge closed 6 years ago

philip-alldredge commented 10 years ago

Hello, I am attempting to traverse all instance models in a workspace using AadlProcessingSwitch.defaultTraversalAllInstances().

Unfortunately, it does not seem to be working. Using the following code, my switch is never called.

final AadlProcessingSwitch generationSwitch = new AadlProcessingSwitch() {
            @Override
            protected void initSwitches() {
                this.instanceSwitch = new InstanceSwitch<String>() {
                    @Override
                    public String caseComponentInstance(final ComponentInstance ci) 
                    {
                        System.out.println("COMPONENT");
                        System.out.println(ci);
                        return DONE;
                    }
                };
            }
        };

        generationSwitch.defaultTraversalAllInstances();
juli1 commented 10 years ago

Hi Philip,

Do you have a code sample and a plugin that use this method ? (with a plugin.xml, etc...) ?

philip-alldredge commented 10 years ago

Below are what I consider the relevant files. Let me know if you need something else.

Plugin.xml

<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
   <extension
         point="org.eclipse.ui.actionSets">
      <actionSet
            id="edu.uah.rsesc.aadl.codegen.actionSet"
            label="Code Generation Action Set"
            visible="true">
         <menu
               id="menu.codegen"
               label="Code Generation">
            <separator
                  name="codeGenGroup">
            </separator>
         </menu>
         <action
               class="edu.uah.rsesc.aadl.codegen.actions.GenerateProgramsAction"
               id="edu.uah.rsesc.aadl.codegen.actions.GenerateProgramsAction"
               label="&amp;Generate Programs"
               menubarPath="menu.codegen/codeGenGroup"
               tooltip="Generate C++ source code for all system instances.">
         </action>
      </actionSet>
   </extension>
</plugin>

GenerateProgramsAction.java

package edu.uah.rsesc.aadl.codegen.actions;

import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.IWorkbenchWindowActionDelegate;
import org.osate.aadl2.ComponentCategory;
import org.osate.aadl2.Element;
import org.osate.aadl2.instance.ComponentInstance;
import org.osate.aadl2.instance.util.InstanceSwitch;
import org.osate.aadl2.modelsupport.modeltraversal.AadlProcessingSwitch;
import org.osate.aadl2.modelsupport.resources.OsateResourceUtil;

public class GenerateProgramsAction implements IWorkbenchWindowActionDelegate {
    public GenerateProgramsAction() {
    }

    public void run(final IAction action) {

        // Clear the resource set. This shouldn't be required but for some reason if it is not done, the same model for subsequent runs
        OsateResourceUtil.getResourceSet().getResources().clear();

        final AadlProcessingSwitch generationSwitch = new AadlProcessingSwitch() {
            @Override
            protected void initSwitches() {
                this.instanceSwitch = new InstanceSwitch<String>() {
                    @Override
                    public String caseComponentInstance(final ComponentInstance ci) 
                    {
                        System.out.println("COMPONENT");
                        System.out.println(ci);
                        return DONE;
                    }
                };
            }
        };

        generationSwitch.defaultTraversalAllInstances();
    }

    public void selectionChanged(IAction action, ISelection selection) {
    }

    public void dispose() {
    }

    public void init(IWorkbenchWindow window) {
    }
}

build.properties

source.. = src/,\
           src-gen/
output.. = bin/
bin.includes = META-INF/,\
               .,\
               plugin.xml,\
               resources/

MANIFEST.MF

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Codegen
Bundle-SymbolicName: edu.uah.rsesc.aadl.codegen;singleton:=true
Bundle-Version: 1.0.0.qualifier
Bundle-Activator: edu.uah.rsesc.aadl.codegen.Activator
Require-Bundle: org.eclipse.ui,
 org.eclipse.core.runtime,
 org.osate.aadl2,
 org.osate.ui;bundle-version="1.0.0",
 org.osate.aadl2.modelsupport;bundle-version="1.0.0",
 org.osate.xtext.aadl2.properties;bundle-version="1.0.0",
 org.osate.pluginsupport;bundle-version="1.0.0"
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Bundle-ActivationPolicy: lazy