diff options
author | Henrik Rentz-Reichert | 2013-11-25 08:41:42 +0000 |
---|---|---|
committer | Henrik Rentz-Reichert | 2013-11-25 08:41:42 +0000 |
commit | 2207283a15d7f4a30ac820b41f3d14961d0c0b87 (patch) | |
tree | 9762fc71c0027f6ae33c1f0d9082aea3acdb06c0 /plugins | |
parent | 475da5253481df1a63b0ebf52071729c2bd86881 (diff) | |
download | org.eclipse.etrice-2207283a15d7f4a30ac820b41f3d14961d0c0b87.tar.gz org.eclipse.etrice-2207283a15d7f4a30ac820b41f3d14961d0c0b87.tar.xz org.eclipse.etrice-2207283a15d7f4a30ac820b41f3d14961d0c0b87.zip |
Bug 422442: [generator.c] generator crashes with NPE if generated as library but contains LogicalSystem and SubSystem
https://bugs.eclipse.org/422442
Diffstat (limited to 'plugins')
9 files changed, 150 insertions, 124 deletions
diff --git a/plugins/org.eclipse.etrice.generator.c/src/org/eclipse/etrice/generator/c/gen/NodeGen.xtend b/plugins/org.eclipse.etrice.generator.c/src/org/eclipse/etrice/generator/c/gen/NodeGen.xtend index 50dfdfe66..c142f9771 100644 --- a/plugins/org.eclipse.etrice.generator.c/src/org/eclipse/etrice/generator/c/gen/NodeGen.xtend +++ b/plugins/org.eclipse.etrice.generator.c/src/org/eclipse/etrice/generator/c/gen/NodeGen.xtend @@ -58,29 +58,31 @@ class NodeGen { for (nr : ETMapUtil::getNodeRefs()) { for (instpath : ETMapUtil::getSubSystemInstancePaths(nr)) { val ssi = root.getInstance(instpath) as SubSystemInstance - val filepath = ssi.subSystemClass.generationTargetPath+ssi.subSystemClass.getPath - val infopath = ssi.subSystemClass.generationInfoPath+ssi.subSystemClass.getPath - var file = nr.getCHeaderFileName(ssi) - - checkDataPorts(ssi) + if (ssi!=null) { + val filepath = ssi.subSystemClass.generationTargetPath+ssi.subSystemClass.getPath + val infopath = ssi.subSystemClass.generationInfoPath+ssi.subSystemClass.getPath + var file = nr.getCHeaderFileName(ssi) - val usedThreads = new HashSet<PhysicalThread>(); - for (thread: nr.type.threads) { - val instancesOnThread = ssi.allContainedInstances.filter(ai|ETMapUtil::getMappedThread(ai).thread==thread) - if (!instancesOnThread.empty) - usedThreads.add(thread) + checkDataPorts(ssi) + + val usedThreads = new HashSet<PhysicalThread>(); + for (thread: nr.type.threads) { + val instancesOnThread = ssi.allContainedInstances.filter(ai|ETMapUtil::getMappedThread(ai).thread==thread) + if (!instancesOnThread.empty) + usedThreads.add(thread) + } + + fileIO.generateFile("generating Node declaration", filepath, infopath, file, root.generateHeaderFile(ssi)) + + file = nr.getCSourceFileName(ssi) + fileIO.generateFile("generating Node implementation", filepath, infopath, file, root.generateSourceFile(ssi, usedThreads)) + + file = nr.getInstSourceFileName(ssi) + fileIO.generateFile("generating Node instance file", filepath, infopath, file, root.generateInstanceFile(ssi, usedThreads)) + + file = nr.getDispSourceFileName(ssi) + fileIO.generateFile("generating Node dispatcher file", filepath, infopath, file, root.generateDispatcherFile(ssi, usedThreads)) } - - fileIO.generateFile("generating Node declaration", filepath, infopath, file, root.generateHeaderFile(ssi)) - - file = nr.getCSourceFileName(ssi) - fileIO.generateFile("generating Node implementation", filepath, infopath, file, root.generateSourceFile(ssi, usedThreads)) - - file = nr.getInstSourceFileName(ssi) - fileIO.generateFile("generating Node instance file", filepath, infopath, file, root.generateInstanceFile(ssi, usedThreads)) - - file = nr.getDispSourceFileName(ssi) - fileIO.generateFile("generating Node dispatcher file", filepath, infopath, file, root.generateDispatcherFile(ssi, usedThreads)) } } } diff --git a/plugins/org.eclipse.etrice.generator.c/src/org/eclipse/etrice/generator/c/gen/NodeRunnerGen.xtend b/plugins/org.eclipse.etrice.generator.c/src/org/eclipse/etrice/generator/c/gen/NodeRunnerGen.xtend index d6c4a04b3..d162810c5 100644 --- a/plugins/org.eclipse.etrice.generator.c/src/org/eclipse/etrice/generator/c/gen/NodeRunnerGen.xtend +++ b/plugins/org.eclipse.etrice.generator.c/src/org/eclipse/etrice/generator/c/gen/NodeRunnerGen.xtend @@ -33,10 +33,12 @@ class NodeRunnerGen { for (nr : ETMapUtil::getNodeRefs()) { for (instpath : ETMapUtil::getSubSystemInstancePaths(nr)) { val ssi = root.getInstance(instpath) as SubSystemInstance - val clsname = nr.name+"_"+ssi.name - fileAccess.setOutputPath(ssi.subSystemClass.generationTargetPath+ssi.subSystemClass.getPath) - fileAccess.generateFile( clsname+"_Runner.c", root.generateSourceFile(ssi, first)) - first = false + if (ssi!=null) { + val clsname = nr.name+"_"+ssi.name + fileAccess.setOutputPath(ssi.subSystemClass.generationTargetPath+ssi.subSystemClass.getPath) + fileAccess.generateFile( clsname+"_Runner.c", root.generateSourceFile(ssi, first)) + first = false + } } } } diff --git a/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/NodeGen.java b/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/NodeGen.java index 61fd23fdb..3757f2f97 100644 --- a/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/NodeGen.java +++ b/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/NodeGen.java @@ -108,55 +108,58 @@ public class NodeGen { { StructureInstance _instance = root.getInstance(instpath); final SubSystemInstance ssi = ((SubSystemInstance) _instance); - SubSystemClass _subSystemClass = ssi.getSubSystemClass(); - String _generationTargetPath = this._roomExtensions.getGenerationTargetPath(_subSystemClass); - SubSystemClass _subSystemClass_1 = ssi.getSubSystemClass(); - String _path = this._roomExtensions.getPath(_subSystemClass_1); - final String filepath = (_generationTargetPath + _path); - SubSystemClass _subSystemClass_2 = ssi.getSubSystemClass(); - String _generationInfoPath = this._roomExtensions.getGenerationInfoPath(_subSystemClass_2); - SubSystemClass _subSystemClass_3 = ssi.getSubSystemClass(); - String _path_1 = this._roomExtensions.getPath(_subSystemClass_3); - final String infopath = (_generationInfoPath + _path_1); - String file = this._cExtensions.getCHeaderFileName(nr, ssi); - this.checkDataPorts(ssi); - HashSet<PhysicalThread> _hashSet = new HashSet<PhysicalThread>(); - final HashSet<PhysicalThread> usedThreads = _hashSet; - NodeClass _type = nr.getType(); - EList<PhysicalThread> _threads = _type.getThreads(); - for (final PhysicalThread thread : _threads) { - { - EList<ActorInstance> _allContainedInstances = ssi.getAllContainedInstances(); - final Function1<ActorInstance,Boolean> _function = new Function1<ActorInstance,Boolean>() { - public Boolean apply(final ActorInstance ai) { - MappedThread _mappedThread = ETMapUtil.getMappedThread(ai); - PhysicalThread _thread = _mappedThread.getThread(); - boolean _equals = Objects.equal(_thread, thread); - return Boolean.valueOf(_equals); + boolean _notEquals = (!Objects.equal(ssi, null)); + if (_notEquals) { + SubSystemClass _subSystemClass = ssi.getSubSystemClass(); + String _generationTargetPath = this._roomExtensions.getGenerationTargetPath(_subSystemClass); + SubSystemClass _subSystemClass_1 = ssi.getSubSystemClass(); + String _path = this._roomExtensions.getPath(_subSystemClass_1); + final String filepath = (_generationTargetPath + _path); + SubSystemClass _subSystemClass_2 = ssi.getSubSystemClass(); + String _generationInfoPath = this._roomExtensions.getGenerationInfoPath(_subSystemClass_2); + SubSystemClass _subSystemClass_3 = ssi.getSubSystemClass(); + String _path_1 = this._roomExtensions.getPath(_subSystemClass_3); + final String infopath = (_generationInfoPath + _path_1); + String file = this._cExtensions.getCHeaderFileName(nr, ssi); + this.checkDataPorts(ssi); + HashSet<PhysicalThread> _hashSet = new HashSet<PhysicalThread>(); + final HashSet<PhysicalThread> usedThreads = _hashSet; + NodeClass _type = nr.getType(); + EList<PhysicalThread> _threads = _type.getThreads(); + for (final PhysicalThread thread : _threads) { + { + EList<ActorInstance> _allContainedInstances = ssi.getAllContainedInstances(); + final Function1<ActorInstance,Boolean> _function = new Function1<ActorInstance,Boolean>() { + public Boolean apply(final ActorInstance ai) { + MappedThread _mappedThread = ETMapUtil.getMappedThread(ai); + PhysicalThread _thread = _mappedThread.getThread(); + boolean _equals = Objects.equal(_thread, thread); + return Boolean.valueOf(_equals); + } + }; + final Iterable<ActorInstance> instancesOnThread = IterableExtensions.<ActorInstance>filter(_allContainedInstances, _function); + boolean _isEmpty = IterableExtensions.isEmpty(instancesOnThread); + boolean _not = (!_isEmpty); + if (_not) { + usedThreads.add(thread); } - }; - final Iterable<ActorInstance> instancesOnThread = IterableExtensions.<ActorInstance>filter(_allContainedInstances, _function); - boolean _isEmpty = IterableExtensions.isEmpty(instancesOnThread); - boolean _not = (!_isEmpty); - if (_not) { - usedThreads.add(thread); } } + CharSequence _generateHeaderFile = this.generateHeaderFile(root, ssi); + this.fileIO.generateFile("generating Node declaration", filepath, infopath, file, _generateHeaderFile); + String _cSourceFileName = this._cExtensions.getCSourceFileName(nr, ssi); + file = _cSourceFileName; + CharSequence _generateSourceFile = this.generateSourceFile(root, ssi, usedThreads); + this.fileIO.generateFile("generating Node implementation", filepath, infopath, file, _generateSourceFile); + String _instSourceFileName = this._cExtensions.getInstSourceFileName(nr, ssi); + file = _instSourceFileName; + CharSequence _generateInstanceFile = this.generateInstanceFile(root, ssi, usedThreads); + this.fileIO.generateFile("generating Node instance file", filepath, infopath, file, _generateInstanceFile); + String _dispSourceFileName = this._cExtensions.getDispSourceFileName(nr, ssi); + file = _dispSourceFileName; + CharSequence _generateDispatcherFile = this.generateDispatcherFile(root, ssi, usedThreads); + this.fileIO.generateFile("generating Node dispatcher file", filepath, infopath, file, _generateDispatcherFile); } - CharSequence _generateHeaderFile = this.generateHeaderFile(root, ssi); - this.fileIO.generateFile("generating Node declaration", filepath, infopath, file, _generateHeaderFile); - String _cSourceFileName = this._cExtensions.getCSourceFileName(nr, ssi); - file = _cSourceFileName; - CharSequence _generateSourceFile = this.generateSourceFile(root, ssi, usedThreads); - this.fileIO.generateFile("generating Node implementation", filepath, infopath, file, _generateSourceFile); - String _instSourceFileName = this._cExtensions.getInstSourceFileName(nr, ssi); - file = _instSourceFileName; - CharSequence _generateInstanceFile = this.generateInstanceFile(root, ssi, usedThreads); - this.fileIO.generateFile("generating Node instance file", filepath, infopath, file, _generateInstanceFile); - String _dispSourceFileName = this._cExtensions.getDispSourceFileName(nr, ssi); - file = _dispSourceFileName; - CharSequence _generateDispatcherFile = this.generateDispatcherFile(root, ssi, usedThreads); - this.fileIO.generateFile("generating Node dispatcher file", filepath, infopath, file, _generateDispatcherFile); } } } diff --git a/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/NodeRunnerGen.java b/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/NodeRunnerGen.java index 8810ecdff..ed72afca2 100644 --- a/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/NodeRunnerGen.java +++ b/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/NodeRunnerGen.java @@ -11,6 +11,7 @@ */ package org.eclipse.etrice.generator.c.gen; +import com.google.common.base.Objects; import com.google.inject.Inject; import com.google.inject.Singleton; import java.util.Collection; @@ -51,20 +52,23 @@ public class NodeRunnerGen { { StructureInstance _instance = root.getInstance(instpath); final SubSystemInstance ssi = ((SubSystemInstance) _instance); - String _name = nr.getName(); - String _plus = (_name + "_"); - String _name_1 = ssi.getName(); - final String clsname = (_plus + _name_1); - SubSystemClass _subSystemClass = ssi.getSubSystemClass(); - String _generationTargetPath = this._roomExtensions.getGenerationTargetPath(_subSystemClass); - SubSystemClass _subSystemClass_1 = ssi.getSubSystemClass(); - String _path = this._roomExtensions.getPath(_subSystemClass_1); - String _plus_1 = (_generationTargetPath + _path); - this.fileAccess.setOutputPath(_plus_1); - String _plus_2 = (clsname + "_Runner.c"); - CharSequence _generateSourceFile = this.generateSourceFile(root, ssi, first); - this.fileAccess.generateFile(_plus_2, _generateSourceFile); - first = false; + boolean _notEquals = (!Objects.equal(ssi, null)); + if (_notEquals) { + String _name = nr.getName(); + String _plus = (_name + "_"); + String _name_1 = ssi.getName(); + final String clsname = (_plus + _name_1); + SubSystemClass _subSystemClass = ssi.getSubSystemClass(); + String _generationTargetPath = this._roomExtensions.getGenerationTargetPath(_subSystemClass); + SubSystemClass _subSystemClass_1 = ssi.getSubSystemClass(); + String _path = this._roomExtensions.getPath(_subSystemClass_1); + String _plus_1 = (_generationTargetPath + _path); + this.fileAccess.setOutputPath(_plus_1); + String _plus_2 = (clsname + "_Runner.c"); + CharSequence _generateSourceFile = this.generateSourceFile(root, ssi, first); + this.fileAccess.generateFile(_plus_2, _generateSourceFile); + first = false; + } } } } diff --git a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/NodeGen.xtend b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/NodeGen.xtend index 0ca5bf5ad..c8408c8e9 100644 --- a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/NodeGen.xtend +++ b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/NodeGen.xtend @@ -62,7 +62,7 @@ class NodeGen { for (nr : ETMapUtil::getNodeRefs()) { for (instpath : ETMapUtil::getSubSystemInstancePaths(nr)) { val ssi = root.getInstance(instpath) as SubSystemInstance - if (ssi.subSystemClass.validGenerationLocation) { + if (ssi!=null && ssi.subSystemClass.validGenerationLocation) { val wired = sscc2wired.get(ssi.subSystemClass) val path = ssi.subSystemClass.generationTargetPath+ssi.subSystemClass.getPath val infopath = ssi.subSystemClass.generationInfoPath+ssi.subSystemClass.getPath diff --git a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/NodeRunnerGen.xtend b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/NodeRunnerGen.xtend index 35bb1ee75..325033ca4 100644 --- a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/NodeRunnerGen.xtend +++ b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/NodeRunnerGen.xtend @@ -35,7 +35,7 @@ class NodeRunnerGen { for (nr : ETMapUtil::getNodeRefs()) { for (instpath : ETMapUtil::getSubSystemInstancePaths(nr)) { val ssi = root.getInstance(instpath) as SubSystemInstance - if (ssi.subSystemClass.validGenerationLocation) { + if (ssi!=null && ssi.subSystemClass.validGenerationLocation) { val file = nr.getJavaClassName(ssi)+"Runner.java" val filepath = ssi.subSystemClass.generationTargetPath+ssi.subSystemClass.getPath val infopath = ssi.subSystemClass.generationInfoPath+ssi.subSystemClass.getPath diff --git a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/ActorClassGen.java b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/ActorClassGen.java index 7c94c566c..738151a41 100644 --- a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/ActorClassGen.java +++ b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/ActorClassGen.java @@ -103,21 +103,21 @@ public class ActorClassGen extends GenericActorClassGenerator { private FileSystemHelpers _fileSystemHelpers; public void doGenerate(final Root root) { - HashMap<ActorClass,WiredActorClass> _hashMap = new HashMap<ActorClass,WiredActorClass>(); + HashMap<ActorClass,WiredActorClass> _hashMap = new HashMap<ActorClass, WiredActorClass>(); final HashMap<ActorClass,WiredActorClass> ac2wired = _hashMap; EList<WiredStructureClass> _wiredInstances = root.getWiredInstances(); final Function1<WiredStructureClass,Boolean> _function = new Function1<WiredStructureClass,Boolean>() { - public Boolean apply(final WiredStructureClass w) { - return Boolean.valueOf((w instanceof WiredActorClass)); - } - }; + public Boolean apply(final WiredStructureClass w) { + return Boolean.valueOf((w instanceof WiredActorClass)); + } + }; Iterable<WiredStructureClass> _filter = IterableExtensions.<WiredStructureClass>filter(_wiredInstances, _function); final Procedure1<WiredStructureClass> _function_1 = new Procedure1<WiredStructureClass>() { - public void apply(final WiredStructureClass w) { - ActorClass _actorClass = ((WiredActorClass) w).getActorClass(); - ac2wired.put(_actorClass, ((WiredActorClass) w)); - } - }; + public void apply(final WiredStructureClass w) { + ActorClass _actorClass = ((WiredActorClass) w).getActorClass(); + ac2wired.put(_actorClass, ((WiredActorClass) w)); + } + }; IterableExtensions.<WiredStructureClass>forEach(_filter, _function_1); EList<ExpandedActorClass> _xpActorClasses = root.getXpActorClasses(); final Function1<ExpandedActorClass,Boolean> _function_2 = new Function1<ExpandedActorClass,Boolean>() { @@ -172,20 +172,20 @@ public class ActorClassGen extends GenericActorClassGenerator { final String clsname = _xifexpression; EList<StandardOperation> _operations = ac.getOperations(); final Function1<StandardOperation,Boolean> _function = new Function1<StandardOperation,Boolean>() { - public Boolean apply(final StandardOperation op) { - boolean _isConstructor = RoomHelpers.isConstructor(op); - return Boolean.valueOf(_isConstructor); - } - }; + public Boolean apply(final StandardOperation op) { + boolean _isConstructor = RoomHelpers.isConstructor(op); + return Boolean.valueOf(_isConstructor); + } + }; Iterable<StandardOperation> _filter = IterableExtensions.<StandardOperation>filter(_operations, _function); final StandardOperation ctor = IterableExtensions.<StandardOperation>head(_filter); EList<StandardOperation> _operations_1 = ac.getOperations(); final Function1<StandardOperation,Boolean> _function_1 = new Function1<StandardOperation,Boolean>() { - public Boolean apply(final StandardOperation op) { - boolean _isDestructor = op.isDestructor(); - return Boolean.valueOf(_isDestructor); - } - }; + public Boolean apply(final StandardOperation op) { + boolean _isDestructor = op.isDestructor(); + return Boolean.valueOf(_isDestructor); + } + }; Iterable<StandardOperation> _filter_1 = IterableExtensions.<StandardOperation>filter(_operations_1, _function_1); final StandardOperation dtor = IterableExtensions.<StandardOperation>head(_filter_1); final EList<RoomModel> models = root.getReferencedModels(ac); @@ -302,12 +302,12 @@ public class ActorClassGen extends GenericActorClassGenerator { { EList<ActorRef> _actorRefs = ac.getActorRefs(); final Function1<ActorRef,Boolean> _function_2 = new Function1<ActorRef,Boolean>() { - public Boolean apply(final ActorRef r) { - ReferenceType _refType = r.getRefType(); - boolean _equals = Objects.equal(_refType, ReferenceType.OPTIONAL); - return Boolean.valueOf(_equals); - } - }; + public Boolean apply(final ActorRef r) { + ReferenceType _refType = r.getRefType(); + boolean _equals = Objects.equal(_refType, ReferenceType.OPTIONAL); + return Boolean.valueOf(_equals); + } + }; Iterable<ActorRef> _filter_2 = IterableExtensions.<ActorRef>filter(_actorRefs, _function_2); for(final ActorRef sub : _filter_2) { _builder.append("import "); @@ -420,12 +420,12 @@ public class ActorClassGen extends GenericActorClassGenerator { { EList<ActorRef> _actorRefs_1 = ac.getActorRefs(); final Function1<ActorRef,Boolean> _function_3 = new Function1<ActorRef,Boolean>() { - public Boolean apply(final ActorRef r) { - ReferenceType _refType = r.getRefType(); - boolean _equals = Objects.equal(_refType, ReferenceType.OPTIONAL); - return Boolean.valueOf(_equals); - } - }; + public Boolean apply(final ActorRef r) { + ReferenceType _refType = r.getRefType(); + boolean _equals = Objects.equal(_refType, ReferenceType.OPTIONAL); + return Boolean.valueOf(_equals); + } + }; Iterable<ActorRef> _filter_3 = IterableExtensions.<ActorRef>filter(_actorRefs_1, _function_3); for(final ActorRef sub_1 : _filter_3) { _builder.append("\t"); diff --git a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/NodeGen.java b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/NodeGen.java index a8796a49e..bdfb75471 100644 --- a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/NodeGen.java +++ b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/NodeGen.java @@ -131,9 +131,16 @@ public class NodeGen { { StructureInstance _instance = root.getInstance(instpath); final SubSystemInstance ssi = ((SubSystemInstance) _instance); - SubSystemClass _subSystemClass = ssi.getSubSystemClass(); - boolean _isValidGenerationLocation = this._fileSystemHelpers.isValidGenerationLocation(_subSystemClass); - if (_isValidGenerationLocation) { + boolean _and = false; + boolean _notEquals = (!Objects.equal(ssi, null)); + if (!_notEquals) { + _and = false; + } else { + SubSystemClass _subSystemClass = ssi.getSubSystemClass(); + boolean _isValidGenerationLocation = this._fileSystemHelpers.isValidGenerationLocation(_subSystemClass); + _and = (_notEquals && _isValidGenerationLocation); + } + if (_and) { SubSystemClass _subSystemClass_1 = ssi.getSubSystemClass(); final WiredSubSystemClass wired = sscc2wired.get(_subSystemClass_1); SubSystemClass _subSystemClass_2 = ssi.getSubSystemClass(); diff --git a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/NodeRunnerGen.java b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/NodeRunnerGen.java index bf1471d6f..69b4c2f65 100644 --- a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/NodeRunnerGen.java +++ b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/NodeRunnerGen.java @@ -10,6 +10,7 @@ */ package org.eclipse.etrice.generator.java.gen; +import com.google.common.base.Objects; import com.google.inject.Inject; import com.google.inject.Singleton; import java.util.Collection; @@ -55,9 +56,16 @@ public class NodeRunnerGen { { StructureInstance _instance = root.getInstance(instpath); final SubSystemInstance ssi = ((SubSystemInstance) _instance); - SubSystemClass _subSystemClass = ssi.getSubSystemClass(); - boolean _isValidGenerationLocation = this._fileSystemHelpers.isValidGenerationLocation(_subSystemClass); - if (_isValidGenerationLocation) { + boolean _and = false; + boolean _notEquals = (!Objects.equal(ssi, null)); + if (!_notEquals) { + _and = false; + } else { + SubSystemClass _subSystemClass = ssi.getSubSystemClass(); + boolean _isValidGenerationLocation = this._fileSystemHelpers.isValidGenerationLocation(_subSystemClass); + _and = (_notEquals && _isValidGenerationLocation); + } + if (_and) { String _javaClassName = this._javaExtensions.getJavaClassName(nr, ssi); final String file = (_javaClassName + "Runner.java"); SubSystemClass _subSystemClass_1 = ssi.getSubSystemClass(); |