diff --git a/build.txt b/build.txt index 4a807ed922fedcea1113d042406bc0908c8986a1..0f0df832f27e62585503435b68ac1135eb778b34 100644 --- a/build.txt +++ b/build.txt @@ -1,5 +1 @@ -<<<<<<< HEAD -12360 -======= -12357 ->>>>>>> parent of 23b85be... update on build version: build.txt +12362 \ No newline at end of file diff --git a/executablecode/Makefile.src b/executablecode/Makefile.src index 318ad1aba0dc6c25adff59226637339f0066ad94..fa78915f9679b5cabeae6bffa822fe34d4b875bb 100755 --- a/executablecode/Makefile.src +++ b/executablecode/Makefile.src @@ -1 +1 @@ -SRCS = generated_src/main.c generated_src/AlarmActuator.c generated_src/PressureSensor.c generated_src/PressureController.c generated_src/AlarmManager.c generated_src/MainController.c generated_src/Timer__alarmTimer__AlarmManager.c \ No newline at end of file +SRCS = generated_src/main.c generated_src/Wallet.c generated_src/CoffeeMachine.c generated_src/TeaButton.c generated_src/CoffeeButton.c \ No newline at end of file diff --git a/src/main/java/common/ConfigurationTTool.java b/src/main/java/common/ConfigurationTTool.java index bf9193d5c653e8ec28673776c93ca04b38494a9f..b53531d257c1aba657d5dc296560d17b70bf6362 100755 --- a/src/main/java/common/ConfigurationTTool.java +++ b/src/main/java/common/ConfigurationTTool.java @@ -150,6 +150,7 @@ public class ConfigurationTTool { //public static String AttackOntologyWebsite = ""; // PLUGINS + public static String[] PLUGIN_PKG = new String[0]; public static String PLUGIN_PATH = ""; public static String[] PLUGIN = new String[0]; //public static String PLUGIN_JAVA_CODE_GENERATOR = ""; @@ -467,13 +468,14 @@ public class ConfigurationTTool { // Plugins sb.append("\nPlugins:\n"); + //sb.append("Plugin path: " + PLUGIN_PKG + "\n"); sb.append("Plugin path: " + PLUGIN_PATH + "\n"); /*sb.append("Plugin for java code generation: " + PLUGIN_JAVA_CODE_GENERATOR + "\n"); for (int i=0; i<PLUGIN_GRAPHICAL_COMPONENT.length; i++) { sb.append("Plugin for graphical component: " + PLUGIN_GRAPHICAL_COMPONENT[i] + "\n"); }*/ for (int i=0; i<PLUGIN.length; i++) { - sb.append("Plugin: " + PLUGIN[i] + "\n"); + sb.append("Plugin: " + PLUGIN[i] + " package:" + PLUGIN_PKG[i] + "\n"); } // URL @@ -1500,10 +1502,12 @@ public class ConfigurationTTool { private static void Plugin(NodeList nl) throws MalformedConfigurationException { PLUGIN = new String[nl.getLength()]; + PLUGIN_PKG = new String[nl.getLength()]; try { for (int i=0; i<nl.getLength(); i++) { Element elt = (Element)(nl.item(i)); - PLUGIN[i] = elt.getAttribute("data"); + PLUGIN[i] = elt.getAttribute("file"); + PLUGIN_PKG[i] = elt.getAttribute("package"); } } catch (Exception e) { throw new MalformedConfigurationException(e.getMessage()); diff --git a/src/main/java/myutil/Plugin.java b/src/main/java/myutil/Plugin.java index 06905f10d1a2bc4b74ae7a48f1429384146d1bb6..f57b22779a22ae87d8bc8fb414b79ebc7697c534 100755 --- a/src/main/java/myutil/Plugin.java +++ b/src/main/java/myutil/Plugin.java @@ -58,6 +58,7 @@ import javax.swing.*; public class Plugin { private String path; private String name; + private String packageName; private File file; private HashMap<String, Class> listOfClasses; private Class classAvatarCodeGenerator; @@ -65,9 +66,10 @@ public class Plugin { private Class classGraphicalComponent; - public Plugin(String _path, String _name) { + public Plugin(String _path, String _name, String _packageName) { path = _path; name = _name; + packageName = _packageName.trim(); listOfClasses = new HashMap<String, Class>(); } @@ -161,8 +163,13 @@ public class Plugin { TraceManager.addDev("Loading plugin=" + path + java.io.File.separator + name); URL[] urls = new URL[] { file.toURI().toURL() }; ClassLoader loader = new URLClassLoader(urls); - //TraceManager.addDev("Loader created"); - c = loader.loadClass(_className); + //TraceManager.addDev("getClass() Loader created"); + if ((packageName == null) || (packageName.length() == 0)) { + c = loader.loadClass( _className ); + } else { + c = loader.loadClass( packageName + "." + _className); + } + //TraceManager.addDev("getClass() class loaded"); if (c == null) { return null; } @@ -171,7 +178,9 @@ public class Plugin { } } catch (Exception e) { - //TraceManager.addDev("Exception when using plugin " + name + " with className=" + _className); + TraceManager.addDev( "getClass()\n" ); + e.printStackTrace( System.out ); + //TraceManager.addDev("Exception when using plugin " + name + " with className=" + _className); return null; } @@ -184,11 +193,17 @@ public class Plugin { try { if (c == null) { file = new File(path + java.io.File.separator + name); - TraceManager.addDev("Loading plugin=" + path + java.io.File.separator + name); + //TraceManager.addDev("Loading plugin=" + path + java.io.File.separator + name); URL[] urls = new URL[] { file.toURI().toURL() }; ClassLoader loader = new URLClassLoader(urls); //TraceManager.addDev("Loader created"); - c = loader.loadClass(_className); + if ((packageName == null) || (packageName.length() == 0)) { + c = loader.loadClass( _className ); + } else { + c = loader.loadClass( packageName + "." + _className); + } + + //TraceManager.addDev( "Class loaded" ); if (c == null) { return null; } @@ -197,7 +212,8 @@ public class Plugin { return c.getMethod(_methodName); } catch (Exception e) { - //TraceManager.addDev("Exception when using plugin " + name + " with className=" + _className + " and method " + _methodName); + //e.printStackTrace( System.out ); + TraceManager.addDev("Exception when using plugin " + name + " with className=" + _className + " and method " + _methodName); return null; } diff --git a/src/main/java/myutil/PluginManager.java b/src/main/java/myutil/PluginManager.java index 240ac7a2e73af5e199bda7c00bc4f2b0cc81879d..791a1fb521a76132886d0c71e0008cf0c1c0514a 100755 --- a/src/main/java/myutil/PluginManager.java +++ b/src/main/java/myutil/PluginManager.java @@ -58,15 +58,19 @@ public class PluginManager { public static String PLUGIN_PATH = ""; public ArrayList<Plugin> plugins; + public ArrayList<Plugin> pluginPackages; public PluginManager() { plugins = new ArrayList<Plugin>(); + pluginPackages = new ArrayList<Plugin>(); } - public void preparePlugins(String path, String[] plugins) { + public void preparePlugins(String path, String[] plugins, String[] packages) { PLUGIN_PATH = path; + int cpt = 0; for(String s: plugins) { - createPlugin(s); + createPlugin(s, packages[cpt]); + cpt ++; } } @@ -107,14 +111,14 @@ public class PluginManager { plugins.add(_plugin); } - public Plugin getPluginOrCreate(String _name) { + /*public Plugin getPluginOrCreate(String _name) { Plugin plug = getPlugin(_name); if (plug != null) { return plug; } return createPlugin(_name); - } + }*/ public Plugin getPlugin(String _name) { for(Plugin plugin: plugins) { @@ -125,8 +129,8 @@ public class PluginManager { return null; } - public Plugin createPlugin(String _name) { - Plugin plugin = new Plugin(PLUGIN_PATH, _name); + public Plugin createPlugin(String _name, String packageName) { + Plugin plugin = new Plugin(PLUGIN_PATH, _name, packageName); addPlugin(plugin); return plugin; } @@ -148,9 +152,10 @@ public class PluginManager { } } - public String executeString(String _pluginName, String _className, String _methodName) { + /*public String executeString(String _pluginName, String _className, String _methodName) { Plugin plugin = getPlugin(_pluginName); if (plugin == null) { + // We must find the package of this plugin plugin = createPlugin(_pluginName); if (plugin == null) { return null; @@ -160,7 +165,7 @@ public class PluginManager { return plugin.executeRetStringMethod(_className, _methodName); - } + }*/ diff --git a/src/main/java/ui/util/DefaultText.java b/src/main/java/ui/util/DefaultText.java index 723b2e9a1f19eeae0ae5ff7bde642c71f977e508..b73da8680c981f84ed7fe6de68a23d992d724d8f 100755 --- a/src/main/java/ui/util/DefaultText.java +++ b/src/main/java/ui/util/DefaultText.java @@ -51,8 +51,8 @@ package ui.util; */ public class DefaultText { - public static String BUILD = "12359"; - public static String DATE = "2017/09/10 02:01:25 CET"; + public static String BUILD = "12361"; + public static String DATE = "2017/09/22 17:01:42 CET"; public static StringBuffer sbAbout = makeAbout(); diff --git a/src/main/java/ui/window/JDialogAvatarExecutableCodeGeneration.java b/src/main/java/ui/window/JDialogAvatarExecutableCodeGeneration.java index 4700b0ebd3a0fb9eb844c6e4f875c78f48d6e5a3..0b3222f149788f59a2b66fffbf2e053418e7cd04 100644 --- a/src/main/java/ui/window/JDialogAvatarExecutableCodeGeneration.java +++ b/src/main/java/ui/window/JDialogAvatarExecutableCodeGeneration.java @@ -195,6 +195,11 @@ public class JDialogAvatarExecutableCodeGeneration extends javax.swing.JFrame im protected void initComponents() { + + if (PluginManager.pluginManager.getPluginAvatarCodeGenerator() != null) { + codes[0] = "AVATAR CPOSIX (with Plugin)"; + } + Container c = getContentPane(); setFont(new Font("Helvetica", Font.PLAIN, 14)); c.setLayout(new BorderLayout()); @@ -603,7 +608,12 @@ public class JDialogAvatarExecutableCodeGeneration extends javax.swing.JFrame im if (avspec == null) { jta.append("Error: No AVATAR specification\n"); } else { + if (PluginManager.pluginManager.getPluginAvatarCodeGenerator() != null) { + TraceManager.addDev("Using customize Avatar code generator"); + } + AVATAR2CPOSIX avatartocposix = new AVATAR2CPOSIX(avspec, PluginManager.pluginManager.getPluginAvatarCodeGenerator()); + avatartocposix.includeUserCode(putUserCode.isSelected()); avatartocposix.setTimeUnit(selectedUnit); avatartocposix.generateCPOSIX(debugmode.isSelected(), tracemode.isSelected()); diff --git a/src/main/java/ui/window/JDialogCommPatternMapping.java b/src/main/java/ui/window/JDialogCommPatternMapping.java index f3f546d297dbc883f354c5ebc70e9fb1a0d8b202..98a5eb9a049cf046d4fe9af624a8e68f0cdb2256 100644 --- a/src/main/java/ui/window/JDialogCommPatternMapping.java +++ b/src/main/java/ui/window/JDialogCommPatternMapping.java @@ -690,6 +690,7 @@ public class JDialogCommPatternMapping extends JDialog /* implements ActionListe if( cpMEC.equals( "VOID" ) || cpMEC.equals( "" ) ) { cpMECsCB.setSelectedIndex( 0 ); + cpMEC = CPMEC.MemoryCopy; } else { cpMECsCB.setSelectedIndex( new Vector<String>( Arrays.asList( CPMEC.CP_TYPES ) ).indexOf( cpMEC ) ); @@ -1457,6 +1458,9 @@ public class JDialogCommPatternMapping extends JDialog /* implements ActionListe cancelled = false; name = nameOfCP.getText(); cpMEC = (String)cpMECsCB.getSelectedItem(); + if( cpMEC.equals( "VOID" ) || cpMEC.equals( "" ) ) { + cpMEC = CPMEC.MemoryCopy; + } transferType1 = Arrays.asList( CPMEC.TRANSFER_TYPES ).indexOf(transferTypeCB1.getSelectedItem()); transferType2 = Arrays.asList( CPMEC.TRANSFER_TYPES ).indexOf(transferTypeCB2.getSelectedItem()); diff --git a/ttool/src/main/java/Main.java b/ttool/src/main/java/Main.java index f7cd002d139cf88506f004fdcfbbf253b882fe63..f1ca30980f9284c3b22f5a04424fe9b5d4580ffb 100755 --- a/ttool/src/main/java/Main.java +++ b/ttool/src/main/java/Main.java @@ -307,7 +307,7 @@ public class Main implements ActionListener { splashFrame.setMessage("Preparing plugins"); } PluginManager.pluginManager = new PluginManager(); - PluginManager.pluginManager.preparePlugins(ConfigurationTTool.PLUGIN_PATH, ConfigurationTTool.PLUGIN); + PluginManager.pluginManager.preparePlugins(ConfigurationTTool.PLUGIN_PATH, ConfigurationTTool.PLUGIN, ConfigurationTTool.PLUGIN_PKG); if (ConfigurationTTool.LauncherPort.length() > 0) { try {