From 894a412214e85067108509b4ecd43f43e85cb7f2 Mon Sep 17 00:00:00 2001 From: erititan Date: Fri, 29 Jan 2016 13:09:25 +0100 Subject: [PATCH] Sync with 5.4.2 --- Eclipse_Designer_userguide.doc | Bin 4721664 -> 4709888 bytes Eclipse_installationguide.doc | Bin 559616 -> 558592 bytes README | 61 ++- .../{bin => cfg}/config.cfg | 0 .../{bin => cfg}/included.cfg | 0 .../{bin => cfg}/ipv6addresses.cfg | 0 TITAN_Designer_feature/feature.xml | 134 +++---- TITAN_Executor_feature/feature.xml | 122 +++--- TITAN_Log_Viewer_Feature/feature.xml | 112 +++--- Titanium_feature/feature.xml | 179 +++++---- automatic_build/build_config.xml | 2 +- org.eclipse.titan.common/.antlr-eclipse | 233 ----------- org.eclipse.titan.common/.project | 16 - org.eclipse.titan.common/META-INF/MANIFEST.MF | 2 +- .../TITANResourceLocatorFieldEditor.java | 8 +- .../common/parsers/SyntacticErrorStorage.java | 25 +- .../titan/common/parsers/cfg/CfgAnalyzer.java | 6 + .../titan/common/parsers/cfg/CfgParser.g4 | 20 +- .../parsers/cfg/CfgResolverListener.java | 1 - .../common/parsers/cfg/ConfigFileHandler.java | 9 +- .../titan/common/path/TITANPathUtilities.java | 64 ++- org.eclipse.titan.debug/META-INF/MANIFEST.MF | 6 +- org.eclipse.titan.designer/.antlr-eclipse | 140 ------- org.eclipse.titan.designer/.project | 16 - .../META-INF/MANIFEST.MF | 4 +- .../titan/designer/AST/ASN1/Block.java | 1 - .../designer/AST/ASN1/InformationFromObj.java | 5 + .../AST/ASN1/definitions/ASN1Module.java | 2 +- .../AST/ASN1/definitions/ImportModule.java | 8 +- .../AST/ASN1/definitions/Imports.java | 10 +- .../org/eclipse/titan/designer/AST/IType.java | 23 +- .../titan/designer/AST/ModuleImportation.java | 4 +- .../templates/BitString_Pattern_Template.java | 2 +- .../CharString_Pattern_Template.java | 4 +- .../templates/HexString_Pattern_Template.java | 2 +- .../OctetString_Pattern_Template.java | 2 +- .../templates/RangeLenghtRestriction.java | 8 - .../TTCN3/templates/Referenced_Template.java | 45 ++- .../templates/SingleLenghtRestriction.java | 8 +- .../AST/TTCN3/types/ComponentTypeBody.java | 36 +- .../AST/TTCN3/types/SequenceOf_Type.java | 59 ++- .../designer/AST/TTCN3/types/SetOf_Type.java | 65 ++- .../AST/TTCN3/types/subtypes/SubType.java | 4 +- .../org/eclipse/titan/designer/AST/Type.java | 25 +- .../titan/designer/GeneralConstants.java | 2 +- .../titan/designer/actions/CheckSemantic.java | 2 - .../titan/designer/actions/RemoteBuilder.java | 9 +- .../designer/application/LoadFromTpd.java | 18 +- .../designer/consoles/TITANDebugConsole.java | 8 +- .../CompilerVersionInformationCollector.java | 4 - .../titan/designer/core/OutputAnalyzer.java | 7 +- .../eclipse/titan/designer/core/TITANJob.java | 9 +- .../core/makefile/MakefileGenerator.java | 2 - .../editors/AbstractIndentAction.java | 1 + .../editors/RewriteSessionEditProcessor.java | 61 --- .../editors/asn1editor/ASN1CodeSkeletons.java | 22 ++ .../editors/asn1editor/IndentAction.java | 2 +- .../asn1editor/ReconcilingStrategy.java | 18 +- .../editors/configeditor/ConfigEditor.java | 1 - .../editors/configeditor/IndentAction.java | 2 +- .../editors/ttcn3editor/AddImport.java | 2 +- .../editors/ttcn3editor/IndentAction.java | 2 +- .../ttcn3editor/OutlineContentProvider.java | 2 + .../ttcn3editor/ReconcilingStrategy.java | 2 +- .../ttcn3editor/TTCN3CodeSkeletons.java | 19 +- .../editors/ttcnppeditor/IndentAction.java | 2 +- .../ttcnppeditor/ReconcilingStrategy.java | 33 +- .../nativewin32actions/CheckSemantic.java | 2 - .../designer/parsers/asn1parser/Asn1Parser.g4 | 12 +- .../parsers/ttcn3parser/Ttcn3BaseLexer.g4 | 6 + .../parsers/ttcn3parser/Ttcn3Parser.g4 | 90 ++++- .../parsers/ttcn3parser/Ttcn3Reparser.g4 | 6 +- .../data/InternalMakefileCreationData.java | 2 +- .../data/ProjectBuildPropertyData.java | 3 +- .../pages/ConfigurationManagerControl.java | 16 +- .../pages/ProjectBuildPropertyPage.java | 1 - .../NewASN1ModuleCreationWizardPage.java | 23 +- .../NewASN1ModuleOptionsWizardPage.java | 89 +---- .../wizards/NewModuleOptionsWizardPage.java | 126 ++++++ .../NewTTCN3ModuleCreationWizardPage.java | 26 +- .../NewTTCN3ModuleOptionsWizardPage.java | 87 +--- .../projectFormat/TITANProjectExporter.java | 10 +- .../wizards/projectFormat/TpdImporter.java | 374 ++++++++++-------- .../META-INF/MANIFEST.MF | 4 +- .../executor/executors/BaseExecutor.java | 85 ++-- .../TitanLaunchConfigurationDelegate.java | 1 + .../jni/LaunchConfigurationDelegate.java | 4 +- .../preferences/PreferenceInitializer.java | 1 - org.eclipse.titan.help/META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 4 +- .../META-INF/MANIFEST.MF | 4 +- .../common/cfg/ConfigFileTest.java | 2 +- org.eclipse.titanium/META-INF/MANIFEST.MF | 6 +- org.eclipse.titanium/docs/referenceguide.docx | Bin 137171 -> 201868 bytes .../spotters/implementation/InfiniteLoop.java | 3 + .../implementation/IterateOnWrongArray.java | 3 + .../markers/spotters/implementation/Lazy.java | 6 +- .../implementation/PrivateViaPublic.java | 2 +- .../titanium/markers/types/CodeSmellType.java | 6 +- 99 files changed, 1314 insertions(+), 1395 deletions(-) rename Semantic_Analizer_Tests/{bin => cfg}/config.cfg (100%) rename Semantic_Analizer_Tests/{bin => cfg}/included.cfg (100%) rename Semantic_Analizer_Tests/{bin => cfg}/ipv6addresses.cfg (100%) delete mode 100644 org.eclipse.titan.common/.antlr-eclipse delete mode 100644 org.eclipse.titan.designer/.antlr-eclipse delete mode 100644 org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/RewriteSessionEditProcessor.java create mode 100644 org.eclipse.titan.designer/src/org/eclipse/titan/designer/wizards/NewModuleOptionsWizardPage.java diff --git a/Eclipse_Designer_userguide.doc b/Eclipse_Designer_userguide.doc index 0ca0154c28e9fb97f13cacc65a6a06cc0a0da3c5..5cec2bf02e6cd1663ab2d91f6a1b1f850475ba3e 100755 GIT binary patch delta 111352 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 +-LaVoi0uO0%xZ6*|xatn- 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∾ytn% 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 delta 13723 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 Help -> Install New Software... ANTLR http://antlreclipse.sourceforge.net/updates/ -Titan plug-ins can be obtained from the Titan download site: -https://projects.eclipse.org/projects/tools.titan/downloads +Titan plug-ins +from the Titan update site +TODO: add URL Set the new JDK in Window -> Preferences -> Java -> Installed JREs @@ -65,43 +66,33 @@ It modifies the source, you need to rebuild org.eclipse.titan.common plug-in pro 4.1. EXTERNAL JAR DEPENDENCIES - - antlr-4.3-complete.jar + antlr-4.3-complete.jar available at Eclipse Orbit - http://download.eclipse.org/tools/orbit/downloads/ - NOTE: Use a recommended or a stable repository; the drop version of the latter changes often. - - - junit.jar (JUnit4) - available at Eclipse Orbit - http://download.eclipse.org/tools/orbit/downloads/ - + http://download.eclipse.org/tools/orbit/downloads/drops/S20150519210750/ + NOTE: The drop version changes very often. + junit.jar (JUnit4) - The following jars are needed by help.plugin to create pdf documentation; + These jars are needed by help.plugin to create pdf documentation PDF documentation can be created only inside Ericcson network - - doc2pdf.jar (optional, pdf will not be created if file not found at this location) - For Ericsson users only: Download the plugin from http://ttcn.ericsson.se/download/third_party/ - OR write to any contact person at Project Titan - - ant-contrib.jar (mandatory if doc2pdf.jar exists) - - The following jars are needed by the Titanium plugin: - - - org.apache.commons.collections15/collections-generic-4.01.jar - For Ericsson users only: Download the Jung plugin from http://ttcn.ericsson.se/download/third_party/commons.collections.zip - OR for users outside Ericsson: - Dwonload the plug-in from https://www.eclipse.org/downloads/download.php?file=/titan/commons.collections.zip - - Jung 2.0.1 - - edu.uci.ics.jung/jung-graph-impl-2.0.1.jar - - edu.uci.ics.jung/jung-visualization-2.0.1.jar - - edu.uci.ics.jung/jung-algorithms-2.0.1.jar - - edu.uci.ics.jung/jung-io-2.0.1.jar - + doc2pdf.jar (optional, pdf will not be created if file not found at this location) + For Ericsson users only: Download the plugin from http://ttcn.ericsson.se/download/third_party/ OR write to any contact person at Project Titan + ant-contrib.jar (mandatory if doc2pdf.jar exists) + + These jars are needed by titanium.plugin + org.apache.commons.collections15/collections-generic-4.01.jar + Download Commons-Collections from http://commons.apache.org/proper/commons-collections/ + OR for Ericsson users only: Download the Jung plugin from http://ttcn.ericsson.se/download/third_party/commons.collections.zip + OR for users outside Ericsson: Write to any contact person on site https://projects.eclipse.org/projects/tools.titan and ask the commons.collections.zip . + edu.uci.ics.jung/jung-graph-impl-2.0.1.jar + edu.uci.ics.jung/jung-visualization-2.0.1.jar + edu.uci.ics.jung/jung-algorithms-2.0.1.jar + edu.uci.ics.jung/jung-io-2.0.1.jar For Ericsson users only: Download the Jung plugin from http://ttcn.ericsson.se/download/third_party/edu.uci.ics.jung.zip - OR for users outside Ericsson: - https://www.eclipse.org/downloads/download.php?file=/titan/edu.uci.ics.jung.zip - - - org.apache.poi_3.9.0.v201405241750.jar + OR for users outside Ericsson: Write to any contact person on site https://projects.eclipse.org/projects/tools.titan and ask the jung.zip + org.apache.poi_3.9.0.v201405241750.jar available at Eclipse Orbit - http://download.eclipse.org/tools/orbit/downloads + http://download.eclipse.org/tools/orbit/downloads/drops/S20150519210750/ + NOTE: The drop version changes very often. 4.2. BUILDING TITAN PLUG-INS FROM COMMAND LINE WITH ANT diff --git a/Semantic_Analizer_Tests/bin/config.cfg b/Semantic_Analizer_Tests/cfg/config.cfg similarity index 100% rename from Semantic_Analizer_Tests/bin/config.cfg rename to Semantic_Analizer_Tests/cfg/config.cfg diff --git a/Semantic_Analizer_Tests/bin/included.cfg b/Semantic_Analizer_Tests/cfg/included.cfg similarity index 100% rename from Semantic_Analizer_Tests/bin/included.cfg rename to Semantic_Analizer_Tests/cfg/included.cfg diff --git a/Semantic_Analizer_Tests/bin/ipv6addresses.cfg b/Semantic_Analizer_Tests/cfg/ipv6addresses.cfg similarity index 100% rename from Semantic_Analizer_Tests/bin/ipv6addresses.cfg rename to Semantic_Analizer_Tests/cfg/ipv6addresses.cfg diff --git a/TITAN_Designer_feature/feature.xml b/TITAN_Designer_feature/feature.xml index fc1f35e5a..21383b82d 100755 --- a/TITAN_Designer_feature/feature.xml +++ b/TITAN_Designer_feature/feature.xml @@ -1,4 +1,4 @@ - + - - - - CRL 113 200/5 R4A (5.4.pl0) version of the TITAN Designer plug-in. - - - + --> + + + + CRL 113 200/5 R4C (5.4.pl2) version of the TITAN Designer plug-in. + + + /******************************************************************************* * Copyright (c) 2000-2015 Ericsson Telecom AB * All rights reserved. This program and the accompanying materials @@ -49,10 +49,10 @@ * Arpad Lovassy (Ericsson) - Java Executor API * Laszlo Baji (Ericsson) - maintenance * Marton Godar (Ericsson) - xsd2ttcn converter -*******************************************************************************/ - - - +*******************************************************************************/ + + + Eclipse Public License - v 1.0 THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. @@ -122,54 +122,54 @@ All Recipient's rights under this Agreement shall terminate if it fails to Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved. -This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation. LICENSE AGREEMENT - - - - - - - - - - - - - - - - - - +This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation. LICENSE AGREEMENT + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + diff --git a/TITAN_Executor_feature/feature.xml b/TITAN_Executor_feature/feature.xml index c09b700cf..f2f0c88d0 100755 --- a/TITAN_Executor_feature/feature.xml +++ b/TITAN_Executor_feature/feature.xml @@ -1,4 +1,4 @@ - + - - - - CRL 113 200/5 R4A (5.4.pl0) version of the TITAN Executor -plug-in. - - - + --> + + + + CRL 113 200/5 R4C (5.4.pl2) version of the TITAN Executor +plug-in. + + + /******************************************************************************* * Copyright (c) 2000-2015 Ericsson Telecom AB * All rights reserved. This program and the accompanying materials @@ -57,10 +57,10 @@ catch, support of pre-processor directives in Eclipse * Arpad Lovassy (Ericsson) - Java Executor API * Laszlo Baji (Ericsson) - maintenance * Marton Godar (Ericsson) - xsd2ttcn converter -*******************************************************************************/ - - - +*******************************************************************************/ + + + Eclipse Public License - v 1.0 THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. @@ -130,47 +130,47 @@ All Recipient's rights under this Agreement shall terminate if it fails to Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved. -This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation. LICENSE AGREEMENT - - - - - - - - - - - - - - +This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation. LICENSE AGREEMENT + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + diff --git a/TITAN_Log_Viewer_Feature/feature.xml b/TITAN_Log_Viewer_Feature/feature.xml index c83de22ee..8f5ddb9bc 100755 --- a/TITAN_Log_Viewer_Feature/feature.xml +++ b/TITAN_Log_Viewer_Feature/feature.xml @@ -1,4 +1,4 @@ - + - - - - CRL 113 200/5 R4A (5.4.pl0) version of the TITAN Log Viewer plug-in. - - - + --> + + + + CRL 113 200/5 R4C (5.4.pl2) version of the TITAN Log Viewer plug-in. + + + /******************************************************************************* * Copyright (c) 2000-2015 Ericsson Telecom AB * All rights reserved. This program and the accompanying materials @@ -49,10 +49,10 @@ * Arpad Lovassy (Ericsson) - Java Executor API * Laszlo Baji (Ericsson) - maintenance * Marton Godar (Ericsson) - xsd2ttcn converter -*******************************************************************************/ - - - +*******************************************************************************/ + + + Eclipse Public License - v 1.0 THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. @@ -122,42 +122,42 @@ All Recipient's rights under this Agreement shall terminate if it fails to Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved. -This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation. LICENSE AGREEMENT - - - - - - - - - - - - - - - - - - - - - - - - +This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation. LICENSE AGREEMENT + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Titanium_feature/feature.xml b/Titanium_feature/feature.xml index 1d5920d2a..5bb3b8495 100755 --- a/Titanium_feature/feature.xml +++ b/Titanium_feature/feature.xml @@ -1,4 +1,4 @@ - + - - - - CRL 113 200/5 R4A (5.4.pl0) version of the Titanium -plug-in. - - - + --> + + + + CRL 113 200/5 R4C (5.4.pl2) version of the Titanium +plug-in. + + + /******************************************************************************* * Copyright (c) 2000-2015 Ericsson Telecom AB * All rights reserved. This program and the accompanying materials -* are made available under the terms of the Eclipse Public License v1.0 +* are 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: -* Zoltan Janos Szabo (Ericsson) - initial architecture design and implementation +* Zoltan Janos Szabo (Ericsson) - initial architecture design +and implementation * Roland Gecse (Ericsson) - initial architecture design -* Akos Cserveni (Ericsson) - Basic AST in compiler, semantic checking +* Akos Cserveni (Ericsson) - Basic AST in compiler, semantic +checking * Gabor Szalai (Ericsson) – RAW and TEXT codecs -* Matyas Forstner (Ericsson) - ASN.1 extension of the compiler and BER/CER/DER codecs -* Kristof Szabados (Ericsson) - Eclipse Designer, Executor, Titanium UIs +* Matyas Forstner (Ericsson) - ASN.1 extension of the compiler +and BER/CER/DER codecs +* Kristof Szabados (Ericsson) - Eclipse Designer, Executor, +Titanium UIs * Szabolcs Beres (Ericsson) - Eclipse LogViewer -* Ferenc Kovacs (Ericsson) – log interfaces, big number support, subtype checking +* Ferenc Kovacs (Ericsson) – log interfaces, big number support, +subtype checking * Csaba Raduly (Ericsson) – ASN.1 additions, XML encoder/decoder -* Adam Delic (Ericsson) – template restrictions, try and catch, support of pre-processor directives in Eclipse +* Adam Delic (Ericsson) – template restrictions, try and +catch, support of pre-processor directives in Eclipse * Krisztian Pandi (Ericsson) – import of imports * Peter Dimitrov (Ericsson)- maintenance * Balazs Andor Zalanyi (Ericsson) – code splitting @@ -50,10 +57,10 @@ plug-in. * Arpad Lovassy (Ericsson) - Java Executor API * Laszlo Baji (Ericsson) - maintenance * Marton Godar (Ericsson) - xsd2ttcn converter -*******************************************************************************/ - - - +*******************************************************************************/ + + + Eclipse Public License - v 1.0 THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. @@ -123,65 +130,65 @@ All Recipient's rights under this Agreement shall terminate if it fails to Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved. -This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation. LICENSE AGREEMENT - - - - - - - - - - - - - - - - - - - - - - - - +This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation. LICENSE AGREEMENT + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + diff --git a/automatic_build/build_config.xml b/automatic_build/build_config.xml index 2c6fc0ae6..42d0c096f 100644 --- a/automatic_build/build_config.xml +++ b/automatic_build/build_config.xml @@ -10,7 +10,7 @@ - + diff --git a/org.eclipse.titan.common/.antlr-eclipse b/org.eclipse.titan.common/.antlr-eclipse deleted file mode 100644 index 3da4e7bb3..000000000 --- a/org.eclipse.titan.common/.antlr-eclipse +++ /dev/null @@ -1,233 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/org.eclipse.titan.common/.project b/org.eclipse.titan.common/.project index 62b276fdb..7aa8f205a 100644 --- a/org.eclipse.titan.common/.project +++ b/org.eclipse.titan.common/.project @@ -10,11 +10,6 @@ - - org.antlr.eclipse.core.antlrbuilder - - - org.eclipse.jdt.core.javabuilder @@ -30,19 +25,8 @@ - - org.antlr.eclipse.core.warningcleanerbuilder - - - - - org.antlr.eclipse.core.smapbuilder - - - - org.antlr.eclipse.core.antlrnature org.eclipse.pde.PluginNature org.eclipse.jdt.core.javanature org.eclipse.xtext.ui.shared.xtextNature diff --git a/org.eclipse.titan.common/META-INF/MANIFEST.MF b/org.eclipse.titan.common/META-INF/MANIFEST.MF index 9687becde..8dde50182 100755 --- a/org.eclipse.titan.common/META-INF/MANIFEST.MF +++ b/org.eclipse.titan.common/META-INF/MANIFEST.MF @@ -4,7 +4,7 @@ Created-By: 23.6-b04 (Oracle Corporation) Bundle-ManifestVersion: 2 Bundle-Name: Common TITAN on Eclipse Plug-in Bundle-SymbolicName: org.eclipse.titan.common;singleton:=true -Bundle-Version: 5.4.0.CRL_113_200_5_R4A_20151030-1100 +Bundle-Version: 5.4.2.CRL_113_200_5_R4C_20160105-1100 Bundle-Activator: org.eclipse.titan.common.Activator Bundle-Vendor: Eclipse Titan Project Require-Bundle: org.eclipse.ui, diff --git a/org.eclipse.titan.common/src/org/eclipse/titan/common/fieldeditors/TITANResourceLocatorFieldEditor.java b/org.eclipse.titan.common/src/org/eclipse/titan/common/fieldeditors/TITANResourceLocatorFieldEditor.java index 9ff7d28a6..79ab4bcd9 100644 --- a/org.eclipse.titan.common/src/org/eclipse/titan/common/fieldeditors/TITANResourceLocatorFieldEditor.java +++ b/org.eclipse.titan.common/src/org/eclipse/titan/common/fieldeditors/TITANResourceLocatorFieldEditor.java @@ -283,11 +283,11 @@ public class TITANResourceLocatorFieldEditor extends StringFieldEditor { resolvedPathLabelText.setVisible(false); return; } - + //TODO: To change the next lines for this one: + //final URI uri1 = TITANPathUtilities.getURI(target, rootPath); final IPath path = new Path(target); - final IPath resolvedPath = TITANPathUtilities.resolvePath(target, rootPath); - - final URI uri = URIUtil.toURI(resolvedPath); + final IPath resolvedPath = TITANPathUtilities.resolvePath(target, rootPath); + final URI uri = URIUtil.toURI(resolvedPath); final String message = "Resolved location: " + uri.toString(); resolvedPathLabelText.setText(message); diff --git a/org.eclipse.titan.common/src/org/eclipse/titan/common/parsers/SyntacticErrorStorage.java b/org.eclipse.titan.common/src/org/eclipse/titan/common/parsers/SyntacticErrorStorage.java index 6de570e9c..3d8562774 100644 --- a/org.eclipse.titan.common/src/org/eclipse/titan/common/parsers/SyntacticErrorStorage.java +++ b/org.eclipse.titan.common/src/org/eclipse/titan/common/parsers/SyntacticErrorStorage.java @@ -12,9 +12,10 @@ import org.antlr.v4.runtime.RecognitionException; import org.antlr.v4.runtime.LexerNoViableAltException; import org.antlr.v4.runtime.InputMismatchException; import org.antlr.v4.runtime.FailedPredicateException; + /** * @author Kristof Szabados - * + * */ public class SyntacticErrorStorage { public final int lineNumber; @@ -22,23 +23,27 @@ public class SyntacticErrorStorage { public final int charEnd; public final String message; public final ExceptionType exceptionType; - public enum ExceptionType { LexerNoViableAltException, NoViableAltException, InputMismatchException, FailedPredicateException, InvalidExceptionType }; - - public SyntacticErrorStorage (final int lineNumber, final int charStart, final int charEnd, final String message, RecognitionException e) { + + public enum ExceptionType { + LexerNoViableAltException, NoViableAltException, InputMismatchException, FailedPredicateException, InvalidExceptionType + }; + + public SyntacticErrorStorage(final int lineNumber, final int charStart, final int charEnd, final String message, RecognitionException e) { this.lineNumber = lineNumber; this.charStart = charStart; this.charEnd = charEnd; this.message = message; - - if (e instanceof LexerNoViableAltException) + + if (e instanceof LexerNoViableAltException) { exceptionType = ExceptionType.LexerNoViableAltException; - else if (e instanceof NoViableAltException) + } else if (e instanceof NoViableAltException) { exceptionType = ExceptionType.NoViableAltException; - else if (e instanceof FailedPredicateException) + } else if (e instanceof FailedPredicateException) { exceptionType = ExceptionType.FailedPredicateException; - else if (e instanceof InputMismatchException) + } else if (e instanceof InputMismatchException) { exceptionType = ExceptionType.InputMismatchException; - else + } else { exceptionType = ExceptionType.InvalidExceptionType; + } } } diff --git a/org.eclipse.titan.common/src/org/eclipse/titan/common/parsers/cfg/CfgAnalyzer.java b/org.eclipse.titan.common/src/org/eclipse/titan/common/parsers/cfg/CfgAnalyzer.java index 07d914d7e..ea36737a5 100644 --- a/org.eclipse.titan.common/src/org/eclipse/titan/common/parsers/cfg/CfgAnalyzer.java +++ b/org.eclipse.titan.common/src/org/eclipse/titan/common/parsers/cfg/CfgAnalyzer.java @@ -65,6 +65,7 @@ public final class CfgAnalyzer { private DefineSectionHandler defineSectionHandler = null; private LoggingSectionHandler loggingSectionHandler = null; private ParserRuleContext mParseTreeRoot = null; + private String mLogFileName = null; public List getWarnings() { return warnings; @@ -78,6 +79,10 @@ public final class CfgAnalyzer { return logFileNameDefined; } + public String getLogFileName() { + return mLogFileName; + } + public Map getDefinitions(){ return definitions; } @@ -229,6 +234,7 @@ public final class CfgAnalyzer { loggingSectionHandler = parser.getLoggingSectionHandler(); logFileNameDefined = parser.isLogFileDefined(); + mLogFileName = parser.getLogFileName(); } } diff --git a/org.eclipse.titan.common/src/org/eclipse/titan/common/parsers/cfg/CfgParser.g4 b/org.eclipse.titan.common/src/org/eclipse/titan/common/parsers/cfg/CfgParser.g4 index b410f16d6..593f49ac8 100644 --- a/org.eclipse.titan.common/src/org/eclipse/titan/common/parsers/cfg/CfgParser.g4 +++ b/org.eclipse.titan.common/src/org/eclipse/titan/common/parsers/cfg/CfgParser.g4 @@ -34,6 +34,8 @@ import java.util.Map; private boolean mLogFileDefined = false; + private String mLogFileName = null; + private Map mEnvVariables; private Integer mTcpPort = null; @@ -91,6 +93,10 @@ import java.util.Map; return mLogFileDefined; } + public String getLogFileName() { + return mLogFileName; + } + public Integer getTcpPort() { return mTcpPort; } @@ -580,8 +586,18 @@ pr_PlainLoggingParam: | DISKFULLACTION ASSIGNMENTCHAR11 pr_DiskFullActionValue | LOGFILENUMBER ASSIGNMENTCHAR11 pr_Number | LOGFILESIZE ASSIGNMENTCHAR11 pr_Number -| LOGFILENAME ASSIGNMENTCHAR11 pr_LogfileName - { mLogFileDefined = true; } +| LOGFILENAME ASSIGNMENTCHAR11 f = pr_LogfileName + { mLogFileDefined = true; + mLogFileName = $f.text; + if ( mLogFileName != null ) { + if ( mLogFileName.length() > 0 && mLogFileName.startsWith( "\"" ) ) { + mLogFileName = mLogFileName.substring( 1 ); + } + if ( mLogFileName.length() > 0 && mLogFileName.endsWith( "\"" ) ) { + mLogFileName = mLogFileName.substring( 0, mLogFileName.length() - 1 ); + } + } + } | (TIMESTAMPFORMAT | CONSOLETIMESTAMPFORMAT) ASSIGNMENTCHAR11 TIMESTAMPVALUE | SOURCEINFOFORMAT ASSIGNMENTCHAR11 ( SOURCEINFOVALUE diff --git a/org.eclipse.titan.common/src/org/eclipse/titan/common/parsers/cfg/CfgResolverListener.java b/org.eclipse.titan.common/src/org/eclipse/titan/common/parsers/cfg/CfgResolverListener.java index b581a3206..f3e856220 100644 --- a/org.eclipse.titan.common/src/org/eclipse/titan/common/parsers/cfg/CfgResolverListener.java +++ b/org.eclipse.titan.common/src/org/eclipse/titan/common/parsers/cfg/CfgResolverListener.java @@ -15,7 +15,6 @@ import java.util.Map; import org.antlr.v4.runtime.Token; import org.antlr.v4.runtime.misc.NotNull; import org.eclipse.core.resources.IMarker; -import org.eclipse.titan.common.parsers.LocationAST; import org.eclipse.titan.common.parsers.TITANMarker; public class CfgResolverListener extends CfgParserBaseListener { diff --git a/org.eclipse.titan.common/src/org/eclipse/titan/common/parsers/cfg/ConfigFileHandler.java b/org.eclipse.titan.common/src/org/eclipse/titan/common/parsers/cfg/ConfigFileHandler.java index 739fb985f..f6f3aea86 100644 --- a/org.eclipse.titan.common/src/org/eclipse/titan/common/parsers/cfg/ConfigFileHandler.java +++ b/org.eclipse.titan.common/src/org/eclipse/titan/common/parsers/cfg/ConfigFileHandler.java @@ -13,8 +13,6 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; -import org.antlr.v4.runtime.ParserRuleContext; -import org.antlr.v4.runtime.tree.ParseTreeWalker; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IWorkspaceRoot; import org.eclipse.core.resources.ResourcesPlugin; @@ -58,6 +56,8 @@ public final class ConfigFileHandler { private boolean logFileNameDefined = false; + private String mLogFileName = null; + public ConfigFileHandler(){ // Do nothing } @@ -70,6 +70,10 @@ public final class ConfigFileHandler { return logFileNameDefined; } + public String getLogFileName() { + return mLogFileName; + } + public int getTcpPort(){ return tcpPort; } @@ -262,6 +266,7 @@ public final class ConfigFileHandler { if (analyzer.isLogFileNameDefined()) { logFileNameDefined = true; + mLogFileName = analyzer.getLogFileName(); } LocationAST rootNode = new LocationAST( analyzer.getParseTreeRoot() ); if ( rootNode != null ) { diff --git a/org.eclipse.titan.common/src/org/eclipse/titan/common/path/TITANPathUtilities.java b/org.eclipse.titan.common/src/org/eclipse/titan/common/path/TITANPathUtilities.java index f3ee05f21..fdd5ca1c7 100644 --- a/org.eclipse.titan.common/src/org/eclipse/titan/common/path/TITANPathUtilities.java +++ b/org.eclipse.titan.common/src/org/eclipse/titan/common/path/TITANPathUtilities.java @@ -18,6 +18,7 @@ import org.eclipse.core.runtime.Path; import org.eclipse.debug.core.DebugPlugin; import org.eclipse.titan.common.logging.ErrorReporter; import org.eclipse.titan.common.utils.environment.EnvironmentVariableResolver; +import org.eclipse.titan.common.utils.environment.EnvironmentVariableResolver.VariableNotFoundException; /** * Utility class to resolve eclipse paths. @@ -32,7 +33,7 @@ public final class TITANPathUtilities { /** * Resolves the provided uri relative to the provided base uri. - * + * Environment variables and path variables will be resolved * @param pathToBeResolved * the path to be resolved. * @param basePath @@ -49,21 +50,28 @@ public final class TITANPathUtilities { envVariables = null; } - String tmp1 = EnvironmentVariableResolver.eclipseStyle().resolveIgnoreErrors(pathToBeResolved, envVariables); - + String tmp1 = null; + String tmp2 = null; + try { + tmp1 = EnvironmentVariableResolver.eclipseStyle().resolve(pathToBeResolved, envVariables); + tmp2 = EnvironmentVariableResolver.unixStyle().resolveIgnoreErrors(tmp1, envVariables); + } catch(VariableNotFoundException e){ + ErrorReporter.logError("There was an error while resolving `" + pathToBeResolved + "'"); + return null; + } + final IPathVariableManager pathVariableManager = ResourcesPlugin.getWorkspace().getPathVariableManager(); - final IPath path2 = new Path(tmp1); - final IPath resolvedPath = pathVariableManager.resolvePath(path2); - final URI pathURI = URIUtil.toURI(tmp1); - - if (basePath != null && !resolvedPath.isAbsolute()) { - final URI temp = org.eclipse.core.runtime.URIUtil.append(basePath, path2.toString()); - if (temp != null) { - return temp; + URI uri = URIUtil.toURI(tmp2); + uri = pathVariableManager.resolveURI(uri); + + if (basePath != null && uri != null && !uri.isAbsolute()) { + final URI mergedURI = org.eclipse.core.runtime.URIUtil.append(basePath, uri.toString()); + return mergedURI; + + } else { + return uri; } - } - - return pathVariableManager.resolveURI(pathURI); + } /** @@ -135,4 +143,32 @@ public final class TITANPathUtilities { return URIUtil.toURI(resolvedPath); } + + /** + * Converts the provided uri relative to the provided base uri + * Environment variables and path variables will not be resolved. + * If the pathToBeConverted is absolute or the basePath is null, the basePath is not used + * + * @param pathToBeConverted + * the path to be resolved. + * @param basePath + * the absolute URI with schema part and absolute path + * relative to. + * + * @return the resolved uri. + * */ + public static URI convertToAbsoluteURI(final String pathToBeConverted, final String basePath) { + return convertToAbsoluteURI(pathToBeConverted, URIUtil.toURI(basePath)); + } + + public static URI convertToAbsoluteURI(final String pathToBeConverted, final URI basePath) { + IPath tmp = new Path(pathToBeConverted); + if( basePath != null && tmp != null && !tmp.isAbsolute()) { + final URI convertedURI = org.eclipse.core.runtime.URIUtil.append(basePath, pathToBeConverted); + if(convertedURI != null) { + return convertedURI; + } + } + return URIUtil.toURI(tmp); //!! wrong if basePath == null && !tmp.isAbsolute() because ../ will be removed !! + } } diff --git a/org.eclipse.titan.debug/META-INF/MANIFEST.MF b/org.eclipse.titan.debug/META-INF/MANIFEST.MF index f47ebc422..9bccc88b5 100644 --- a/org.eclipse.titan.debug/META-INF/MANIFEST.MF +++ b/org.eclipse.titan.debug/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Titan_Debug Bundle-SymbolicName: org.eclipse.titan.debug;singleton:=true -Bundle-Version: 5.4.0.20151030-1100 +Bundle-Version: 5.4.1.CRL_113_200_5_R4B_20151202-1100 Bundle-Activator: org.eclipse.titan.debug.Activator Bundle-Vendor: ekrisza Require-Bundle: org.eclipse.ui, @@ -10,8 +10,8 @@ Require-Bundle: org.eclipse.ui, org.eclipse.titan.common, org.eclipse.core.resources, org.eclipse.ui.console, - org.eclipse.titan.designer;bundle-version="5.4.0", - org.eclipse.titan.common, + org.eclipse.titan.common;bundle-version="5.4.1", + org.eclipse.titan.designer;bundle-version="5.4.1", org.eclipse.titan.designer Bundle-RequiredExecutionEnvironment: J2SE-1.5 Bundle-ActivationPolicy: lazy diff --git a/org.eclipse.titan.designer/.antlr-eclipse b/org.eclipse.titan.designer/.antlr-eclipse deleted file mode 100644 index b8872b7b7..000000000 --- a/org.eclipse.titan.designer/.antlr-eclipse +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/org.eclipse.titan.designer/.project b/org.eclipse.titan.designer/.project index 3888bb1f4..7bce24264 100644 --- a/org.eclipse.titan.designer/.project +++ b/org.eclipse.titan.designer/.project @@ -12,11 +12,6 @@ - - org.antlr.eclipse.core.antlrbuilder - - - org.eclipse.jdt.core.javabuilder @@ -32,19 +27,8 @@ - - org.antlr.eclipse.core.warningcleanerbuilder - - - - - org.antlr.eclipse.core.smapbuilder - - - - org.antlr.eclipse.core.antlrnature org.eclipse.pde.PluginNature org.eclipse.jdt.core.javanature org.eclipse.xtext.ui.shared.xtextNature diff --git a/org.eclipse.titan.designer/META-INF/MANIFEST.MF b/org.eclipse.titan.designer/META-INF/MANIFEST.MF index e38e830ae..60106f345 100644 --- a/org.eclipse.titan.designer/META-INF/MANIFEST.MF +++ b/org.eclipse.titan.designer/META-INF/MANIFEST.MF @@ -4,7 +4,7 @@ Created-By: 23.6-b04 (Oracle Corporation) Bundle-ManifestVersion: 2 Bundle-Name: TITAN_Designer Plug-in Bundle-SymbolicName: org.eclipse.titan.designer;singleton:=true -Bundle-Version: 5.4.0.CRL_113_200_5_R4A_20151030-1100 +Bundle-Version: 5.4.2.CRL_113_200_5_R4C_20160105-1100 Bundle-Activator: org.eclipse.titan.designer.Activator Bundle-Vendor: Eclipse Titan Project Require-Bundle: org.eclipse.ui, @@ -22,7 +22,7 @@ Require-Bundle: org.eclipse.ui, org.eclipse.ui.navigator.resources, org.eclipse.core.filesystem, org.eclipse.debug.core, - org.eclipse.titan.common;bundle-version="5.4.0", + org.eclipse.titan.common;bundle-version="5.4.1", org.antlr.runtime;bundle-version="4.3.0" Bundle-ActivationPolicy: lazy Eclipse-LazyStart: true diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/ASN1/Block.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/ASN1/Block.java index 4bdb33756..6af972745 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/ASN1/Block.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/ASN1/Block.java @@ -121,7 +121,6 @@ public final class Block implements INamedNode, IVisitableNode, Token, TokenSour case ASTVisitor.V_SKIP: return true; } - // if (v.leave(this) == ASTVisitor.V_ABORT) { return false; } diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/ASN1/InformationFromObj.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/ASN1/InformationFromObj.java index fce4a7f6a..e064659af 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/ASN1/InformationFromObj.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/ASN1/InformationFromObj.java @@ -110,6 +110,11 @@ public final class InformationFromObj extends Reference { reference.setMyScope(scope); } + @Override + public Identifier getId() { + return reference.getId(); + } + @Override public String getDisplayName() { return reference.getDisplayName() + fieldName.getDisplayName(); diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/ASN1/definitions/ASN1Module.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/ASN1/definitions/ASN1Module.java index c662754c6..27c0e2fb9 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/ASN1/definitions/ASN1Module.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/ASN1/definitions/ASN1Module.java @@ -262,7 +262,7 @@ public final class ASN1Module extends Module { module = imports.singularImportedSymbols_map.get(id.getName()); moduleId = module.getIdentifier(); imports.getImportedModuleById(moduleId).setUsedForImportation(); - } else if (imports.pluralImportedSymlos.contains(id.getName())) { + } else if (imports.pluralImportedSymbols.contains(id.getName())) { id.getLocation().reportSemanticError( MessageFormat.format(MORESYMBOLS, id.getDisplayName(), identifier.getDisplayName())); return null; diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/ASN1/definitions/ImportModule.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/ASN1/definitions/ImportModule.java index ad3303f85..82e99e18c 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/ASN1/definitions/ImportModule.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/ASN1/definitions/ImportModule.java @@ -32,6 +32,7 @@ import org.eclipse.titan.designer.parsers.ProjectSourceParser; /** * Import module. + * Models an asn.1 module of the section IMPORTS in the parent asn1.module * * @author Kristof Szabados */ @@ -40,7 +41,7 @@ public final class ImportModule extends ModuleImportation { private static final String NOTASN1MODULE = "The module referred by `{0}'' is not an ASN.1 module"; private static final String SYMBOLNOTEXPORTED = "Symbol `{0}'' is not exported from module `{1}''"; - /** imported symbols. */ + /** imported symbols FROM this module */ private final Symbols symbols; public ImportModule(final Identifier identifier, final Symbols symbols) { @@ -85,7 +86,8 @@ public final class ImportModule extends ModuleImportation { final ProjectSourceParser parser = GlobalParser.getProjectSourceParser(project); if (null == parser || null == identifier) { - lastImportCheckTimeStamp = timestamp; + lastImportCheckTimeStamp = timestamp; + //FIXME: is it correct? lastImportCheckTimeStamp will be set in extreme case only - very early running return; } @@ -107,7 +109,7 @@ public final class ImportModule extends ModuleImportation { if (!referenceChain.add(this)) { moduleStack.remove(moduleStack.size() - 1); lastImportCheckTimeStamp = timestamp; - return; + return; } referredModule.checkImports(timestamp, referenceChain, moduleStack); diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/ASN1/definitions/Imports.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/ASN1/definitions/Imports.java index 8cb78b10c..da951726b 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/ASN1/definitions/Imports.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/ASN1/definitions/Imports.java @@ -62,7 +62,7 @@ public final class Imports extends ASTNode implements IOutlineElement, ILocateab * A hashset of imported symbol names which were imported from multiple * locations. */ - protected final Set pluralImportedSymlos = new HashSet(); + protected final Set pluralImportedSymbols = new HashSet(); private CompilationTimeStamp lastImportCheckTimeStamp; private IProject project; @@ -164,7 +164,7 @@ public final class Imports extends ASTNode implements IOutlineElement, ILocateab importedModules_map.clear(); singularImportedSymbols_map.clear(); - pluralImportedSymlos.clear(); + pluralImportedSymbols.clear(); final ProjectSourceParser parser = GlobalParser.getProjectSourceParser(project); if (null == parser) { @@ -218,9 +218,9 @@ public final class Imports extends ASTNode implements IOutlineElement, ILocateab if (singularImportedSymbols_map.containsKey(name)) { if (!referredModule.equals(singularImportedSymbols_map.get(name))) { singularImportedSymbols_map.remove(name); - pluralImportedSymlos.add(name); + pluralImportedSymbols.add(name); } - } else if (!pluralImportedSymlos.contains(name)) { + } else if (!pluralImportedSymbols.contains(name)) { singularImportedSymbols_map.put(name, referredModule); } } @@ -326,7 +326,7 @@ public final class Imports extends ASTNode implements IOutlineElement, ILocateab * otherwise. * */ public boolean hasImportedSymbolWithId(final Identifier identifier) { - return singularImportedSymbols_map.containsKey(identifier.getName()) || pluralImportedSymlos.contains(identifier.getName()); + return singularImportedSymbols_map.containsKey(identifier.getName()) || pluralImportedSymbols.contains(identifier.getName()); } /** diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/IType.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/IType.java index 7dc627a49..815b3cb7d 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/IType.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/IType.java @@ -165,8 +165,8 @@ public interface IType extends IGovernor, IIdentifierContainer, IVisitableNode, RAW, /** text encoding. */ TEXT, - /** json encoding. */ - JSON + /** json encoding. */ + JSON } /** @@ -569,6 +569,25 @@ public interface IType extends IGovernor, IIdentifierContainer, IVisitableNode, * */ boolean isCompatible(final CompilationTimeStamp timestamp, final IType otherType, TypeCompatibilityInfo info, final TypeCompatibilityInfo.Chain leftChain, final TypeCompatibilityInfo.Chain rightChain); + + /** + * Returns whether this type is strongly compatible with type that is exactly has the same type and they are both base types + *

+ * + * @param timestamp + * the time stamp of the actual semantic check cycle. + * @param otherType + * the type to check against. + * @param info + * the type compatibility information. + * @param leftChain + * to detect type recursion on the left side. + * @param rightChain + * to detect type recursion on the right side. + * @return true if they are compatible, false otherwise. + * */ + boolean isStronglyCompatible(final CompilationTimeStamp timestamp, final IType otherType, TypeCompatibilityInfo info, + final TypeCompatibilityInfo.Chain leftChain, final TypeCompatibilityInfo.Chain rightChain); /** * Returns whether this type and it's sub-type are compatible to the diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/ModuleImportation.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/ModuleImportation.java index 5773240eb..1de0d130b 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/ModuleImportation.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/ModuleImportation.java @@ -37,7 +37,7 @@ public abstract class ModuleImportation implements IReferenceChainElement, IOutl protected CompilationTimeStamp lastImportCheckTimeStamp; /** - * Stores whether the module refered by this importation has changed + * Stores whether the module referred by this importation has changed * when the importation check was last done. */ private boolean hasUnhandledChange = false; @@ -64,7 +64,7 @@ public abstract class ModuleImportation implements IReferenceChainElement, IOutl } /** - * @return whether the module refered to by this importation has changed + * @return whether the module referred to by this importation has changed * to an other one since the last importation check. * */ public boolean hasUnhandledChange() { diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/TTCN3/templates/BitString_Pattern_Template.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/TTCN3/templates/BitString_Pattern_Template.java index 013c85bf8..7ba6c701d 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/TTCN3/templates/BitString_Pattern_Template.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/TTCN3/templates/BitString_Pattern_Template.java @@ -89,7 +89,7 @@ public final class BitString_Pattern_Template extends TTCN3Template { protected void checkTemplateSpecificLengthRestriction(final CompilationTimeStamp timestamp, final Type_type typeType) { if (Type_type.TYPE_BITSTRING.equals(typeType)) { boolean hasAnyOrNone = containsAnyornoneSymbol(); - lengthRestriction.checkNofElements(timestamp, getMinLengthOfPattern(), hasAnyOrNone, hasAnyOrNone, hasAnyOrNone, this); + lengthRestriction.checkNofElements(timestamp, getMinLengthOfPattern(), hasAnyOrNone, false, hasAnyOrNone, this); } } diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/TTCN3/templates/CharString_Pattern_Template.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/TTCN3/templates/CharString_Pattern_Template.java index 2f303e17a..3b13f046f 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/TTCN3/templates/CharString_Pattern_Template.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/TTCN3/templates/CharString_Pattern_Template.java @@ -24,7 +24,7 @@ public final class CharString_Pattern_Template extends TTCN3Template { private PatternString patternstring; public CharString_Pattern_Template() { - patternstring = new PatternString(PatternType.UNIVCHARSTRING_PATTERN); + patternstring = new PatternString(PatternType.CHARSTRING_PATTERN); } public CharString_Pattern_Template(final PatternString ps) { @@ -108,7 +108,7 @@ public final class CharString_Pattern_Template extends TTCN3Template { protected void checkTemplateSpecificLengthRestriction(final CompilationTimeStamp timestamp, final Type_type typeType) { if (Type_type.TYPE_CHARSTRING.equals(typeType) || Type_type.TYPE_UCHARSTRING.equals(typeType)) { boolean hasAnyOrNone = patternContainsAnyornoneSymbol(); - lengthRestriction.checkNofElements(timestamp, getMinLengthOfPattern(), false, hasAnyOrNone, hasAnyOrNone, this); + lengthRestriction.checkNofElements(timestamp, getMinLengthOfPattern(), hasAnyOrNone, false, hasAnyOrNone, this); } } diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/TTCN3/templates/HexString_Pattern_Template.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/TTCN3/templates/HexString_Pattern_Template.java index 9e7c1ac83..b97e0f314 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/TTCN3/templates/HexString_Pattern_Template.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/TTCN3/templates/HexString_Pattern_Template.java @@ -89,7 +89,7 @@ public final class HexString_Pattern_Template extends TTCN3Template { protected void checkTemplateSpecificLengthRestriction(final CompilationTimeStamp timestamp, final Type_type typeType) { if (Type_type.TYPE_HEXSTRING.equals(typeType)) { boolean hasAnyOrNone = containsAnyornoneSymbol(); - lengthRestriction.checkNofElements(timestamp, getMinLengthOfPattern(), false, hasAnyOrNone, hasAnyOrNone, this); + lengthRestriction.checkNofElements(timestamp, getMinLengthOfPattern(), hasAnyOrNone, false, hasAnyOrNone, this); } } diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/TTCN3/templates/OctetString_Pattern_Template.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/TTCN3/templates/OctetString_Pattern_Template.java index 806367920..ff14c84c4 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/TTCN3/templates/OctetString_Pattern_Template.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/TTCN3/templates/OctetString_Pattern_Template.java @@ -89,7 +89,7 @@ public final class OctetString_Pattern_Template extends TTCN3Template { protected void checkTemplateSpecificLengthRestriction(final CompilationTimeStamp timestamp, final Type_type typeType) { if (Type_type.TYPE_OCTETSTRING.equals(typeType)) { boolean hasAnyOrNone = containsAnyornoneSymbol(); - lengthRestriction.checkNofElements(timestamp, getMinLengthOfPattern(), false, hasAnyOrNone, hasAnyOrNone, this); + lengthRestriction.checkNofElements(timestamp, getMinLengthOfPattern(), hasAnyOrNone, false, hasAnyOrNone, this); } } diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/TTCN3/templates/RangeLenghtRestriction.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/TTCN3/templates/RangeLenghtRestriction.java index 19fb46852..253aee00d 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/TTCN3/templates/RangeLenghtRestriction.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/TTCN3/templates/RangeLenghtRestriction.java @@ -267,14 +267,6 @@ public final class RangeLenghtRestriction extends LengthRestriction { return; } - if (locatable instanceof BitString_Pattern_Template || - locatable instanceof CharString_Pattern_Template || - locatable instanceof HexString_Pattern_Template || - locatable instanceof UnivCharString_Pattern_Template - ) { - return; // xString Pattern Templates will not be checked to No of elements - } - if (!lessAllowed) { IReferenceChain chain = ReferenceChain.getInstance(IReferenceChain.CIRCULARREFERENCE, true); IValue last = lower.getValueRefdLast(timestamp, chain); diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/TTCN3/templates/Referenced_Template.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/TTCN3/templates/Referenced_Template.java index 4bfd63cf6..ecdf116cc 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/TTCN3/templates/Referenced_Template.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/TTCN3/templates/Referenced_Template.java @@ -12,10 +12,12 @@ import java.util.List; import org.eclipse.titan.designer.AST.ASTVisitor; import org.eclipse.titan.designer.AST.Assignment; +import org.eclipse.titan.designer.AST.Assignment.Assignment_type; import org.eclipse.titan.designer.AST.FieldSubReference; import org.eclipse.titan.designer.AST.IReferenceChain; import org.eclipse.titan.designer.AST.ISubReference; import org.eclipse.titan.designer.AST.IType; +import org.eclipse.titan.designer.AST.IType.Type_type; import org.eclipse.titan.designer.AST.IValue; import org.eclipse.titan.designer.AST.Identifier; import org.eclipse.titan.designer.AST.Location; @@ -23,10 +25,9 @@ import org.eclipse.titan.designer.AST.ParameterisedSubReference; import org.eclipse.titan.designer.AST.Reference; import org.eclipse.titan.designer.AST.ReferenceChain; import org.eclipse.titan.designer.AST.ReferenceFinder; -import org.eclipse.titan.designer.AST.Scope; -import org.eclipse.titan.designer.AST.Assignment.Assignment_type; -import org.eclipse.titan.designer.AST.IType.Type_type; import org.eclipse.titan.designer.AST.ReferenceFinder.Hit; +import org.eclipse.titan.designer.AST.Scope; +import org.eclipse.titan.designer.AST.TypeCompatibilityInfo; import org.eclipse.titan.designer.AST.TTCN3.Expected_Value_type; import org.eclipse.titan.designer.AST.TTCN3.IIncrementallyUpdateable; import org.eclipse.titan.designer.AST.TTCN3.TemplateRestriction; @@ -181,9 +182,9 @@ public final class Referenced_Template extends TTCN3Template { * reference too. * * @param timestamp - * the time stamp of the actual semantic check cycle. + * the time stamp of the actual semantic check cycle. * @param referenceChain - * the reference chain used to detect cyclic references. + * the reference chain used to detect cyclic references. * * @return the template referenced * */ @@ -262,13 +263,13 @@ public final class Referenced_Template extends TTCN3Template { } /** - * Returns whether in the chain of referenced templates there is one - * which was defined to have the implicit omit attribute set + * Returns whether in the chain of referenced templates there is one which + * was defined to have the implicit omit attribute set * * @param timestamp - * the time stamp of the actual semantic check cycle. + * the time stamp of the actual semantic check cycle. * @param referenceChain - * the ReferenceChain used to detect circular references + * the ReferenceChain used to detect circular references * * @return true if it has, false otherwise. * */ @@ -365,7 +366,9 @@ public final class Referenced_Template extends TTCN3Template { return; } - if (!type.isCompatible(timestamp, governor, null, null, null)) { + TypeCompatibilityInfo info = new TypeCompatibilityInfo(type, governor, true); + + if (!type.isCompatible(timestamp, governor, info, null, null)) { IType last = type.getTypeRefdLast(timestamp); switch (last.getTypetype()) { @@ -374,13 +377,13 @@ public final class Referenced_Template extends TTCN3Template { break; case TYPE_SIGNATURE: getLocation().reportSemanticError(MessageFormat.format(TYPEMISSMATCH1, type.getTypename(), governor.getTypename())); + setIsErroneous(true); break; default: getLocation().reportSemanticError(MessageFormat.format(TYPEMISSMATCH2, type.getTypename(), governor.getTypename())); + setIsErroneous(true); break; } - setIsErroneous(true); - return; } // check for circular references @@ -399,7 +402,8 @@ public final class Referenced_Template extends TTCN3Template { } @Override - public boolean checkValueomitRestriction(final CompilationTimeStamp timestamp, final String definitionName, final boolean omitAllowed, final Location usageLocation) { + public boolean checkValueomitRestriction(final CompilationTimeStamp timestamp, final String definitionName, final boolean omitAllowed, + final Location usageLocation) { if (omitAllowed) { checkRestrictionCommon(definitionName, TemplateRestriction.Restriction_type.TR_OMIT, usageLocation); } else { @@ -420,15 +424,13 @@ public final class Referenced_Template extends TTCN3Template { case A_PAR_TEMP_INOUT: if (ass instanceof Definition) { TemplateRestriction.Restriction_type refdTemplateRestriction = ((Definition) ass).getTemplateRestriction(); - refdTemplateRestriction = TemplateRestriction - .getSubRestriction(refdTemplateRestriction, timestamp, reference); + refdTemplateRestriction = TemplateRestriction.getSubRestriction(refdTemplateRestriction, timestamp, reference); // if restriction not satisfied issue // warning if (TemplateRestriction.isLessRestrictive(omitAllowed ? TemplateRestriction.Restriction_type.TR_OMIT : TemplateRestriction.Restriction_type.TR_VALUE, refdTemplateRestriction)) { getLocation().reportSemanticError( - MessageFormat.format(INADEQUATETEMPLATERESTRICTION, ass.getAssignmentName(), - reference.getDisplayName())); + MessageFormat.format(INADEQUATETEMPLATERESTRICTION, ass.getAssignmentName(), reference.getDisplayName())); return true; } } @@ -457,15 +459,12 @@ public final class Referenced_Template extends TTCN3Template { case A_PAR_TEMP_INOUT: if (ass instanceof Definition) { TemplateRestriction.Restriction_type refdTemplateRestriction = ((Definition) ass).getTemplateRestriction(); - refdTemplateRestriction = TemplateRestriction - .getSubRestriction(refdTemplateRestriction, timestamp, reference); + refdTemplateRestriction = TemplateRestriction.getSubRestriction(refdTemplateRestriction, timestamp, reference); // if restriction not satisfied issue // warning - if (TemplateRestriction.isLessRestrictive(TemplateRestriction.Restriction_type.TR_PRESENT, - refdTemplateRestriction)) { + if (TemplateRestriction.isLessRestrictive(TemplateRestriction.Restriction_type.TR_PRESENT, refdTemplateRestriction)) { getLocation().reportSemanticError( - MessageFormat.format(INADEQUATETEMPLATERESTRICTION, ass.getAssignmentName(), - reference.getDisplayName())); + MessageFormat.format(INADEQUATETEMPLATERESTRICTION, ass.getAssignmentName(), reference.getDisplayName())); return true; } } diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/TTCN3/templates/SingleLenghtRestriction.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/TTCN3/templates/SingleLenghtRestriction.java index d1275466b..6b9b26485 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/TTCN3/templates/SingleLenghtRestriction.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/TTCN3/templates/SingleLenghtRestriction.java @@ -92,6 +92,9 @@ public final class SingleLenghtRestriction extends LengthRestriction { lastTimeChecked = timestamp; Integer_Type integer = new Integer_Type(); + if( value == null) { + return; + } value.setMyGovernor(integer); IValue last = integer.checkThisValueRef(timestamp, value); integer.checkThisValue(timestamp, last, new ValueCheckingOptions(expected_value, false, false, true, false, false)); @@ -161,11 +164,6 @@ public final class SingleLenghtRestriction extends LengthRestriction { return; } - if (locatable instanceof CharString_Pattern_Template || - locatable instanceof UnivCharString_Pattern_Template) { - return; // CharString Pattern Template will not be checked to No of elements - } - IReferenceChain chain = ReferenceChain.getInstance(IReferenceChain.CIRCULARREFERENCE, true); IValue last = value.getValueRefdLast(timestamp, chain); chain.release(); diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/TTCN3/types/ComponentTypeBody.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/TTCN3/types/ComponentTypeBody.java index a333c0078..db08e7c71 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/TTCN3/types/ComponentTypeBody.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/TTCN3/types/ComponentTypeBody.java @@ -75,11 +75,14 @@ public final class ComponentTypeBody extends TTCN3Scope implements IReferenceCha public static final String HIDINGSCOPEELEMENT = "The name of the inherited definition `{0}'' is not unique in the scope hierarchy"; public static final String HIDDENSCOPEELEMENT = "Previous definition with identifier `{0}'' in higher scope unit is here"; public static final String HIDINGMODULEIDENTIFIER = "Inherited definition with name `{0}'' hides a module identifier"; + + public static final String MEMBERNOTVISIBLE = "The member definition `{0}'' in component type `{1}'' is not visible in this scope"; private Location location; private Location commentLocation = null; + /** the identifier of the component does not belong to the componentTypeBody naturally !*/ private final Identifier identifier; /** component references from the extends part or null if none */ private final ComponentTypeReferenceList extendsReferences; @@ -276,10 +279,25 @@ public final class ComponentTypeBody extends TTCN3Scope implements IReferenceCha definition = getExtendsInheritedDefinition(identifier); if (definition != null) { - return definition; + if (VisibilityModifier.Public.equals(definition.getVisibilityModifier())) { + return definition; + } else { + identifier.getLocation().reportSemanticError(MessageFormat.format( + MEMBERNOTVISIBLE, identifier.getDisplayName(), this.identifier.getDisplayName())); + } } - return getAttributesInheritedDefinition(identifier); + definition = getAttributesInheritedDefinition(identifier); + if (definition != null) { + if (VisibilityModifier.Public.equals(definition.getVisibilityModifier())) { + return definition; + } else { + identifier.getLocation().reportSemanticError(MessageFormat.format( + MEMBERNOTVISIBLE, identifier.getDisplayName(), this.identifier.getDisplayName())); + } + } + + return null; } @Override @@ -329,8 +347,7 @@ public final class ComponentTypeBody extends TTCN3Scope implements IReferenceCha } reference.getLocation().reportSemanticError(MessageFormat.format( - "The member definition `{0}'' in component type `{1}'' is not visible in this scope", - reference.getId().getDisplayName(), identifier.getDisplayName())); + MEMBERNOTVISIBLE, reference.getId().getDisplayName(), identifier.getDisplayName())); return null; } @@ -341,8 +358,7 @@ public final class ComponentTypeBody extends TTCN3Scope implements IReferenceCha } reference.getLocation().reportSemanticError(MessageFormat.format( - "The member definition `{0}'' in component type `{1}'' is not visible in this scope", - reference.getId().getDisplayName(), identifier.getDisplayName())); + MEMBERNOTVISIBLE, reference.getId().getDisplayName(), identifier.getDisplayName())); return null; } @@ -847,8 +863,6 @@ public final class ComponentTypeBody extends TTCN3Scope implements IReferenceCha throw new ReParseException(); } - reparser.updateLocation(identifier.getLocation()); - for (Definition definition : definitions) { definition.updateSyntax(reparser, false); reparser.updateLocation(definition.getLocation()); @@ -899,11 +913,7 @@ public final class ComponentTypeBody extends TTCN3Scope implements IReferenceCha case ASTVisitor.V_SKIP: return true; } - if (identifier != null) { - if (!identifier.accept(v)) { - return false; - } - } + if (definitions != null) { for (Definition def : definitions) { if (!def.accept(v)) { diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/TTCN3/types/SequenceOf_Type.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/TTCN3/types/SequenceOf_Type.java index 9a87c2d31..9eac2d040 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/TTCN3/types/SequenceOf_Type.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/TTCN3/types/SequenceOf_Type.java @@ -100,7 +100,14 @@ public final class SequenceOf_Type extends AbstractOfType implements IReferencea } if (info == null || noStructuredTypeCompatibility) { - return this == lastOtherType; + //There is another chance to be compatible: + //If records of/sets of are strongly compatible, then the records of/sets of are compatible + IType last = getTypeRefdLast(timestamp); + if(! last.isStronglyCompatible(timestamp, lastOtherType, info, leftChain, rightChain)) { + return false; + } else { + return true; + } } switch (lastOtherType.getTypetype()) { @@ -315,6 +322,56 @@ public final class SequenceOf_Type extends AbstractOfType implements IReferencea return false; } } + + @Override + public boolean isStronglyCompatible(final CompilationTimeStamp timestamp, final IType otherType, TypeCompatibilityInfo info, + final TypeCompatibilityInfo.Chain leftChain, final TypeCompatibilityInfo.Chain rightChain) { + + IType lastOtherType = otherType.getTypeRefdLast(timestamp); + if (Type_type.TYPE_SEQUENCE_OF.equals(lastOtherType.getTypetype())) { + IType oftOther = ((SequenceOf_Type) lastOtherType).getOfType(); + IType oft = getOfType().getTypeRefdLast(timestamp); // type of the + // fields + if (oft != null && oftOther != null) { + // For basic types pre-generated seq/set of is applied in titan: + switch (oft.getTypetype()) { + case TYPE_BOOL: + case TYPE_BITSTRING: + case TYPE_OCTETSTRING: + case TYPE_INTEGER: + case TYPE_REAL: + case TYPE_CHARSTRING: + case TYPE_HEXSTRING: + case TYPE_UCHARSTRING: + case TYPE_INTEGER_A: + case TYPE_ASN1_ENUMERATED: + case TYPE_BITSTRING_A: + case TYPE_UTF8STRING: + case TYPE_NUMERICSTRING: + case TYPE_PRINTABLESTRING: + case TYPE_TELETEXSTRING: + case TYPE_VIDEOTEXSTRING: + case TYPE_IA5STRING: + case TYPE_GRAPHICSTRING: + case TYPE_VISIBLESTRING: + case TYPE_GENERALSTRING: + case TYPE_UNIVERSALSTRING: + case TYPE_BMPSTRING: + case TYPE_UNRESTRICTEDSTRING: + case TYPE_UTCTIME: + case TYPE_GENERALIZEDTIME: + case TYPE_OBJECTDESCRIPTOR: + if (oft.isStronglyCompatible(timestamp, oftOther, info, leftChain, rightChain)) { + return true; + } + break; + default: + break; + } + } + } + return false; + } @Override public String getOutlineIcon() { diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/TTCN3/types/SetOf_Type.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/TTCN3/types/SetOf_Type.java index 1e5172063..4faae022c 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/TTCN3/types/SetOf_Type.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/TTCN3/types/SetOf_Type.java @@ -14,21 +14,21 @@ import java.util.Map; import org.eclipse.titan.designer.AST.IReferenceChain; import org.eclipse.titan.designer.AST.IType; import org.eclipse.titan.designer.AST.IValue; +import org.eclipse.titan.designer.AST.IValue.Value_type; import org.eclipse.titan.designer.AST.ReferenceChain; import org.eclipse.titan.designer.AST.TypeCompatibilityInfo; import org.eclipse.titan.designer.AST.Value; import org.eclipse.titan.designer.AST.ASN1.ASN1Type; import org.eclipse.titan.designer.AST.ASN1.IASN1Type; import org.eclipse.titan.designer.AST.ASN1.types.ASN1_Set_Type; -import org.eclipse.titan.designer.AST.IValue.Value_type; import org.eclipse.titan.designer.AST.TTCN3.templates.ITTCN3Template; +import org.eclipse.titan.designer.AST.TTCN3.templates.ITTCN3Template.Completeness_type; +import org.eclipse.titan.designer.AST.TTCN3.templates.ITTCN3Template.Template_type; import org.eclipse.titan.designer.AST.TTCN3.templates.IndexedTemplate; import org.eclipse.titan.designer.AST.TTCN3.templates.Indexed_Template_List; import org.eclipse.titan.designer.AST.TTCN3.templates.SubsetMatch_Template; import org.eclipse.titan.designer.AST.TTCN3.templates.SupersetMatch_Template; import org.eclipse.titan.designer.AST.TTCN3.templates.Template_List; -import org.eclipse.titan.designer.AST.TTCN3.templates.ITTCN3Template.Completeness_type; -import org.eclipse.titan.designer.AST.TTCN3.templates.ITTCN3Template.Template_type; import org.eclipse.titan.designer.AST.TTCN3.types.subtypes.SubType; import org.eclipse.titan.designer.AST.TTCN3.values.Integer_Value; import org.eclipse.titan.designer.AST.TTCN3.values.SetOf_Value; @@ -78,7 +78,14 @@ public final class SetOf_Type extends AbstractOfType { } if (info == null || noStructuredTypeCompatibility) { - return this == lastOtherType; + //There is another chance to be compatible: + //If records of/sets of are strongly compatible, then the records of/sets of are compatible + IType last = getTypeRefdLast(timestamp); + if(! last.isStronglyCompatible(timestamp, lastOtherType, info, leftChain, rightChain)) { + return false; + } else { + return true; + } } switch (lastOtherType.getTypetype()) { @@ -243,6 +250,56 @@ public final class SetOf_Type extends AbstractOfType { return false; } } + + @Override + public boolean isStronglyCompatible(final CompilationTimeStamp timestamp, final IType otherType, TypeCompatibilityInfo info, + final TypeCompatibilityInfo.Chain leftChain, final TypeCompatibilityInfo.Chain rightChain) { + + IType lastOtherType = otherType.getTypeRefdLast(timestamp); + if (Type_type.TYPE_SET_OF.equals(lastOtherType.getTypetype())) { + IType oftOther = ((SetOf_Type) lastOtherType).getOfType(); + IType oft = getOfType().getTypeRefdLast(timestamp); // type of the + // fields + if (oft != null && oftOther != null) { + // For basic types pre-generated seq/set of is applied in titan: + switch (oft.getTypetype()) { + case TYPE_BOOL: + case TYPE_BITSTRING: + case TYPE_OCTETSTRING: + case TYPE_INTEGER: + case TYPE_REAL: + case TYPE_CHARSTRING: + case TYPE_HEXSTRING: + case TYPE_UCHARSTRING: + case TYPE_INTEGER_A: + case TYPE_ASN1_ENUMERATED: + case TYPE_BITSTRING_A: + case TYPE_UTF8STRING: + case TYPE_NUMERICSTRING: + case TYPE_PRINTABLESTRING: + case TYPE_TELETEXSTRING: + case TYPE_VIDEOTEXSTRING: + case TYPE_IA5STRING: + case TYPE_GRAPHICSTRING: + case TYPE_VISIBLESTRING: + case TYPE_GENERALSTRING: + case TYPE_UNIVERSALSTRING: + case TYPE_BMPSTRING: + case TYPE_UNRESTRICTEDSTRING: + case TYPE_UTCTIME: + case TYPE_GENERALIZEDTIME: + case TYPE_OBJECTDESCRIPTOR: + if (oft.isStronglyCompatible(timestamp, oftOther, info, leftChain, rightChain)) { + return true; + } + break; + default: + break; + } + } + } + return false; + } @Override public String getOutlineIcon() { diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/TTCN3/types/subtypes/SubType.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/TTCN3/types/subtypes/SubType.java index d8c50ce5a..7e15d3cfe 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/TTCN3/types/subtypes/SubType.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/TTCN3/types/subtypes/SubType.java @@ -781,7 +781,7 @@ public final class SubType implements IIncrementallyUpdateable { IValue lower = null, upper = null; if (lengthRestriction instanceof SingleLenghtRestriction) { lower = ((SingleLenghtRestriction) lengthRestriction).getRestriction(timestamp); - if (lower.getIsErroneous(timestamp) || !Value_type.INTEGER_VALUE.equals(lower.getValuetype()) + if (lower == null || lower.getIsErroneous(timestamp) || !Value_type.INTEGER_VALUE.equals(lower.getValuetype()) || lower.isUnfoldable(timestamp)) { return false; } @@ -793,7 +793,7 @@ public final class SubType implements IIncrementallyUpdateable { } lower = ((RangeLenghtRestriction) lengthRestriction).getLowerValue(timestamp); - if (lower.getIsErroneous(timestamp) || !Value_type.INTEGER_VALUE.equals(lower.getValuetype()) || lower.isUnfoldable(timestamp)) { + if (lower == null || lower.getIsErroneous(timestamp) || !Value_type.INTEGER_VALUE.equals(lower.getValuetype()) || lower.isUnfoldable(timestamp)) { return false; } if (!checkBoundaryValid(lower, "lower boundary")) { diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/Type.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/Type.java index ba20ca49c..ca125ea7e 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/Type.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/Type.java @@ -697,6 +697,7 @@ public abstract class Type extends Governor implements IType, IIncrementallyUpda value.setIsErroneous(true); return; } + final TypeCompatibilityInfo info = new TypeCompatibilityInfo(this, governor, true); info.setStr1Elem(strElem); info.setStr2Elem(reference.refersToStringElement()); @@ -720,9 +721,9 @@ public abstract class Type extends Governor implements IType, IIncrementallyUpda value.getLocation().reportSemanticError(message); } break; + case TYPE_SEQUENCE_OF: case TYPE_ASN1_SEQUENCE: case TYPE_TTCN3_SEQUENCE: - case TYPE_SEQUENCE_OF: case TYPE_ARRAY: case TYPE_ASN1_SET: case TYPE_TTCN3_SET: @@ -956,6 +957,23 @@ public abstract class Type extends Governor implements IType, IIncrementallyUpda @Override public abstract boolean isCompatible(final CompilationTimeStamp timestamp, final IType otherType, TypeCompatibilityInfo info, final TypeCompatibilityInfo.Chain leftChain, final TypeCompatibilityInfo.Chain rightChain); + + @Override + public boolean isStronglyCompatible(final CompilationTimeStamp timestamp, final IType otherType, TypeCompatibilityInfo info, + final TypeCompatibilityInfo.Chain leftChain, final TypeCompatibilityInfo.Chain rightChain) { + + check(timestamp); + otherType.check(timestamp); + final IType thisTypeLast = this.getTypeRefdLast(timestamp); + final IType otherTypeLast = otherType.getTypeRefdLast(timestamp); + + if (thisTypeLast == null || otherTypeLast == null || thisTypeLast.getIsErroneous(timestamp) + || otherTypeLast.getIsErroneous(timestamp)) { + return true; + } + + return thisTypeLast.getTypetype().equals(otherTypeLast.getTypetype()); + } public enum CompatibilityLevel { INCOMPATIBLE_TYPE, INCOMPATIBLE_SUBTYPE, COMPATIBLE @@ -971,6 +989,11 @@ public abstract class Type extends Governor implements IType, IIncrementallyUpda if (!isCompatible(timestamp, type, info, leftChain, rightChain)) { return CompatibilityLevel.INCOMPATIBLE_TYPE; } + + // if there is noStructuredTypeCompatibility and isCompatible then it should be strong compatibility: + if( noStructuredTypeCompatibility ) { + return CompatibilityLevel.COMPATIBLE; + } SubType otherSubType = type.getSubtype(); if ((info != null) && (subType != null) && (otherSubType != null)) { diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/GeneralConstants.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/GeneralConstants.java index 923fd386f..2636ea22e 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/GeneralConstants.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/GeneralConstants.java @@ -20,7 +20,7 @@ import org.eclipse.titan.designer.properties.data.FolderBuildPropertyData; */ public final class GeneralConstants { public static final ProductIdentity ON_THE_FLY_ANALYZER_VERSION = - ProductIdentity.getProductIdentity(ProductIdentity.TITAN_PRODUCT_NUMBER, 5, 4, 0, 0); + ProductIdentity.getProductIdentity(ProductIdentity.TITAN_PRODUCT_NUMBER, 5, 4, 2, 0); public static final boolean DEBUG = true; public static final boolean ETSI_BUILD = false; diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/actions/CheckSemantic.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/actions/CheckSemantic.java index 99a998c0a..2f8652ffa 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/actions/CheckSemantic.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/actions/CheckSemantic.java @@ -102,11 +102,9 @@ public final class CheckSemantic extends ExternalTitanAction { // If a single project is selected used than use it's attributes used to generate the Makefile, otherwise use the general preferences. if (singleSelectedProject == null) { - //TITANConsole.getConsole().newMessageStream().println("Using the general preferences to do the external semantic check"); TITANConsole.println("Using the general preferences to do the external semantic check"); command.add('-' + SEMANTIC_CHECK_FLAG + getTITANActionFlags()); } else { - //TITANConsole.getConsole().newMessageStream().println("Using the project properties to do the external semantic check"); TITANConsole.println("Using the project properties to do the external semantic check"); boolean useRuntime2 = false; try { diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/actions/RemoteBuilder.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/actions/RemoteBuilder.java index b20a58ddf..179e0900a 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/actions/RemoteBuilder.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/actions/RemoteBuilder.java @@ -131,7 +131,7 @@ public final class RemoteBuilder extends AbstractHandler implements IObjectActio Process proc = null; BufferedReader stdout; - MessageConsoleStream stream = TITANConsole.getConsole().newMessageStream(); //ethbaat + MessageConsoleStream stream = TITANConsole.getConsole().newMessageStream(); String actualCommand; for (int i = 0; i < commands.size(); i++) { @@ -148,14 +148,12 @@ public final class RemoteBuilder extends AbstractHandler implements IObjectActio for (String c : finalCommand) { builder.append(c + ' '); } - //TITANConsole.getConsole().newMessageStream().println(builder.toString()); TITANConsole.println(builder.toString(),stream); pb.command(finalCommand); try { proc = pb.start(); } catch (IOException e) { - //TITANConsole.getConsole().newMessageStream().println(ExternalTitanAction.EXECUTION_FAILED); TITANConsole.println(ExternalTitanAction.EXECUTION_FAILED,stream); ErrorReporter.logExceptionStackTrace(e); TITANJob.reportExecutionProblem(project, Platform.getPreferencesService(), getName(), finalCommand, null, false); @@ -175,16 +173,13 @@ public final class RemoteBuilder extends AbstractHandler implements IObjectActio MarkerHandler.removeAllMarkedMarkers(project); return Status.CANCEL_STATUS; } - //TITANConsole.getConsole().newMessageStream().println(hostnames.get(i) + ": " + line); TITANConsole.println(hostnames.get(i) + ": " + line,stream); line = stdout.readLine(); } int exitval = proc.waitFor(); if (exitval == 0) { - //TITANConsole.getConsole().newMessageStream().println("The process on " + hostnames.get(i) + " finished without indicating an error."); TITANConsole.println("The process on " + hostnames.get(i) + " finished without indicating an error.",stream); } else { - //TITANConsole.getConsole().newMessageStream().println(hostnames.get(i) + " finished with return value: " + exitval); TITANConsole.println(hostnames.get(i) + " finished with return value: " + exitval,stream); if (stderr.ready()) { @@ -203,11 +198,9 @@ public final class RemoteBuilder extends AbstractHandler implements IObjectActio return Status.CANCEL_STATUS; } } catch (IOException e) { - //TITANConsole.getConsole().newMessageStream().println(ExternalTitanAction.EXECUTION_FAILED); TITANConsole.println(ExternalTitanAction.EXECUTION_FAILED,stream); ErrorReporter.logExceptionStackTrace(e); } catch (InterruptedException e) { - //TITANConsole.getConsole().newMessageStream().println(ExternalTitanAction.INTERRUPTION); TITANConsole.println(ExternalTitanAction.INTERRUPTION,stream); ErrorReporter.logExceptionStackTrace(e); } finally { diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/application/LoadFromTpd.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/application/LoadFromTpd.java index 422209891..bf91507a8 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/application/LoadFromTpd.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/application/LoadFromTpd.java @@ -14,9 +14,10 @@ import java.util.List; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IPlatformRunnable; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.Platform; +import org.eclipse.equinox.app.IApplication; +import org.eclipse.equinox.app.IApplicationContext; import org.eclipse.jface.dialogs.ProgressMonitorDialog; import org.eclipse.jface.operation.IRunnableWithProgress; import org.eclipse.swt.widgets.Display; @@ -30,7 +31,7 @@ import org.eclipse.titan.designer.wizards.projectFormat.TpdImporter; * * @author Kristof Szabados * */ -public class LoadFromTpd implements IPlatformRunnable { +public class LoadFromTpd implements IApplication { private boolean result; private void reportResult(final boolean result) { @@ -38,18 +39,19 @@ public class LoadFromTpd implements IPlatformRunnable { } @Override - public Object run(final Object args) throws Exception { + public Object start(IApplicationContext context) throws Exception { if (!GeneralConstants.DEBUG) { ErrorReporter.INTERNAL_ERROR("Loading Tpd files in headless mode is in prototype mode and so should not be available in released versions yet"); } Platform.getBundle("org.eclipse.titan.designer").start(); - if (!(args instanceof String[])) { + Object arguments = context.getArguments().get(IApplicationContext.APPLICATION_ARGS); + if (!(arguments instanceof String[])) { System.out.println("A list of strings was expected as argument."); return Integer.valueOf(-1); } - final String[] projectFiles = (String[]) args; + final String[] projectFiles = (String[]) arguments; if (projectFiles.length != 1) { System.out.println("This application takes as parameter the location of the Tpd file it should load projects from."); @@ -101,4 +103,10 @@ public class LoadFromTpd implements IPlatformRunnable { return Integer.valueOf(-1); } + + @Override + public void stop() { + // nothing to be done + + } } diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/consoles/TITANDebugConsole.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/consoles/TITANDebugConsole.java index 884397311..49aa9ec3e 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/consoles/TITANDebugConsole.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/consoles/TITANDebugConsole.java @@ -90,14 +90,14 @@ public final class TITANDebugConsole { if(inHeadLessMode) { return; } - String msg = ""; + StringBuilder msg = new StringBuilder(); for (int i = 0; i < message.length; i++) { - msg += message[i]; + msg.append(message[i]); if (i < message.length-1) { - msg += ": "; + msg.append(": "); } } - println(msg, getConsole().newMessageStream()); + println(msg.toString(), getConsole().newMessageStream()); } public static void print(String message, MessageConsoleStream stream) { diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/core/CompilerVersionInformationCollector.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/core/CompilerVersionInformationCollector.java index 6b89cc8b5..326785d7e 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/core/CompilerVersionInformationCollector.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/core/CompilerVersionInformationCollector.java @@ -199,7 +199,6 @@ public final class CompilerVersionInformationCollector { try { proc = pb.start(); } catch (IOException e) { - //TITANConsole.getConsole().newMessageStream().println(ExternalTitanAction.EXECUTION_FAILED); TITANConsole.println(ExternalTitanAction.EXECUTION_FAILED); ErrorReporter.logExceptionStackTrace(e); return null; @@ -217,7 +216,6 @@ public final class CompilerVersionInformationCollector { return null; } if (reportDebugInformation) { - //TITANConsole.getConsole().newMessageStream().println(line); TITANConsole.println(line); } line = stdout.readLine(); @@ -225,7 +223,6 @@ public final class CompilerVersionInformationCollector { int exitval = proc.waitFor(); if (exitval != 0) { if (reportDebugInformation) { - //TITANConsole.getConsole().newMessageStream().println(FAILURE + exitval); TITANConsole.println(FAILURE + exitval); } proc.destroy(); @@ -233,7 +230,6 @@ public final class CompilerVersionInformationCollector { } if (reportDebugInformation) { - //TITANConsole.getConsole().newMessageStream().println(SUCCESS); TITANConsole.println(SUCCESS); } } catch (IOException e) { diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/core/OutputAnalyzer.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/core/OutputAnalyzer.java index aa1868b3e..bc63b69b1 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/core/OutputAnalyzer.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/core/OutputAnalyzer.java @@ -18,6 +18,7 @@ import java.util.regex.Pattern; import org.eclipse.core.filebuffers.FileBuffers; import org.eclipse.core.filebuffers.ITextFileBuffer; import org.eclipse.core.filebuffers.ITextFileBufferManager; +import org.eclipse.core.filebuffers.LocationKind; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IMarker; import org.eclipse.core.resources.IProject; @@ -113,7 +114,7 @@ public final class OutputAnalyzer { ITextFileBufferManager manager = FileBuffers.getTextFileBufferManager(); for (IPath path : filesOpened) { try { - manager.disconnect(path, null); + manager.disconnect(path,LocationKind.IFILE,null); } catch (CoreException e) { ErrorReporter.logExceptionStackTrace(e); } @@ -310,8 +311,8 @@ public final class OutputAnalyzer { ITextFileBufferManager manager = FileBuffers.getTextFileBufferManager(); IPath fullPath = resource.getFullPath(); if (manager != null) { - manager.connect(fullPath, null); - ITextFileBuffer buffer = manager.getTextFileBuffer(fullPath); + manager.connect(fullPath, LocationKind.IFILE, null); + ITextFileBuffer buffer = manager.getTextFileBuffer(fullPath,LocationKind.IFILE); document = buffer.getDocument(); documentMap.put(resource, document); filesOpened.add(fullPath); diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/core/TITANJob.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/core/TITANJob.java index 59e3d17ce..ab4d8c646 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/core/TITANJob.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/core/TITANJob.java @@ -229,7 +229,7 @@ public class TITANJob extends WorkspaceJob { pb.redirectErrorStream(true); Process proc = null; - MessageConsoleStream stream = TITANConsole.getConsole().newMessageStream(); //ethbaat + MessageConsoleStream stream = TITANConsole.getConsole().newMessageStream(); String line; BufferedReader stdout; @@ -277,14 +277,12 @@ public class TITANJob extends WorkspaceJob { for (String c : finalCommand) { builder.append(c + SPACE); } - //TITANConsole.getConsole().newMessageStream().println(builder.toString()); TITANConsole.println(builder.toString(),stream); pb.command(finalCommand); try { proc = pb.start(); } catch (IOException e) { - //TITANConsole.getConsole().newMessageStream().println(ExternalTitanAction.EXECUTION_FAILED); TITANConsole.println(ExternalTitanAction.EXECUTION_FAILED,stream); ErrorReporter.logExceptionStackTrace(e); reportExecutionProblem(project, prefs, getName(), finalCommand, null, false); @@ -312,12 +310,10 @@ public class TITANJob extends WorkspaceJob { return Status.CANCEL_STATUS; } analyzer.parseTitanErrors(line); - //TITANConsole.getConsole().newMessageStream().println(line); TITANConsole.println(line,stream); } int exitval = proc.waitFor(); if (exitval != 0) { - //TITANConsole.getConsole().newMessageStream().println(FAILURE + exitval); TITANConsole.println(FAILURE + exitval,stream); if (!analyzer.hasProcessedErrorMessages()) { if (stderr.ready()) { @@ -339,14 +335,11 @@ public class TITANJob extends WorkspaceJob { return Status.CANCEL_STATUS; } - //TITANConsole.getConsole().newMessageStream().println(SUCCESS); TITANConsole.println(SUCCESS,stream); } catch (IOException e) { - //TITANConsole.getConsole().newMessageStream().println(ExternalTitanAction.EXECUTION_FAILED); TITANConsole.println(ExternalTitanAction.EXECUTION_FAILED,stream); ErrorReporter.logExceptionStackTrace(ExternalTitanAction.EXECUTION_FAILED, e); } catch (InterruptedException e) { - //TITANConsole.getConsole().newMessageStream().println(ExternalTitanAction.INTERRUPTION); TITANConsole.println(ExternalTitanAction.INTERRUPTION,stream); ErrorReporter.logExceptionStackTrace(ExternalTitanAction.INTERRUPTION, e); } finally { diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/core/makefile/MakefileGenerator.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/core/makefile/MakefileGenerator.java index 53b3c2414..22049f2de 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/core/makefile/MakefileGenerator.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/core/makefile/MakefileGenerator.java @@ -2151,7 +2151,6 @@ public final class MakefileGenerator { project, ProjectBuildPropertyData.QUALIFIER, MakefileCreationData.INCREMENTAL_DEPENDENCY_PROPERTY)) { incrementalDependencyRefresh = true; if (!gnuMake) { - //TITANConsole.getConsole().newMessageStream().println(INVALID_OPTIONS); TITANConsole.println(INVALID_OPTIONS); ErrorReporter.logError("Incremental dependency refresh is only supported if generating GNU makefiles. The GNU make option was turned on."); ResourceUtils.setPersistentProperty(project, ProjectBuildPropertyData.QUALIFIER, MakefileCreationData.GNU_MAKE_PROPERTY, true); @@ -2162,7 +2161,6 @@ public final class MakefileGenerator { if (!Platform.OS_WIN32.equals(Platform.getOS())) { dynamicLinking = true; } else { - //TITANConsole.getConsole().newMessageStream().println(INVALID_OPTIONS); TITANConsole.println(INVALID_OPTIONS); ErrorReporter.logError("Could not create Makefile with dynamic linking enabled for project " + project.getName() + " as this is not supported on Windows"); diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/AbstractIndentAction.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/AbstractIndentAction.java index b18a1379a..14482e2c2 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/AbstractIndentAction.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/AbstractIndentAction.java @@ -16,6 +16,7 @@ import org.eclipse.core.commands.ExecutionException; import org.eclipse.jface.action.IAction; import org.eclipse.jface.text.BadLocationException; import org.eclipse.jface.text.IDocument; +import org.eclipse.jface.text.RewriteSessionEditProcessor; import org.eclipse.jface.text.TextSelection; import org.eclipse.jface.viewers.ISelection; import org.eclipse.text.edits.MultiTextEdit; diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/RewriteSessionEditProcessor.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/RewriteSessionEditProcessor.java deleted file mode 100644 index 700796b67..000000000 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/RewriteSessionEditProcessor.java +++ /dev/null @@ -1,61 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2000-2015 Ericsson Telecom AB - * All rights reserved. This program and the accompanying materials - * are 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 - ******************************************************************************/ -package org.eclipse.titan.designer.editors; - -import org.eclipse.jface.text.BadLocationException; -import org.eclipse.jface.text.DocumentRewriteSession; -import org.eclipse.jface.text.DocumentRewriteSessionType; -import org.eclipse.jface.text.IDocument; -import org.eclipse.jface.text.IDocumentExtension4; -import org.eclipse.text.edits.TextEdit; -import org.eclipse.text.edits.TextEditProcessor; -import org.eclipse.text.edits.UndoEdit; - -/** - * - * FIXME this class was taken from JFace as the one there only appeared in - * Eclipse 3.3, please remove this class once support for earlier versions is - * dropped on our side. - * */ -public final class RewriteSessionEditProcessor extends TextEditProcessor { - - /** - * Constructs a new edit processor for the given document. - * - * @param document - * the document to manipulate - * @param root - * the root of the text edit tree describing the - * modifications. By passing a text edit a a text edit - * processor the ownership of the edit is transfered to - * the text edit processors. Clients must not modify the - * edit (e.g adding new children) any longer. - * @param style - * {@link TextEdit#NONE}, {@link TextEdit#CREATE_UNDO} or - * {@link TextEdit#UPDATE_REGIONS}) - */ - public RewriteSessionEditProcessor(final IDocument document, final TextEdit root, final int style) { - super(document, root, style); - } - - @Override - public UndoEdit performEdits() throws BadLocationException { - IDocument document = getDocument(); - if (!(document instanceof IDocumentExtension4)) { - return super.performEdits(); - } - - IDocumentExtension4 extension = (IDocumentExtension4) document; - DocumentRewriteSession session = extension.startRewriteSession(DocumentRewriteSessionType.SEQUENTIAL); - try { - return super.performEdits(); - } finally { - extension.stopRewriteSession(session); - } - } -} diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/asn1editor/ASN1CodeSkeletons.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/asn1editor/ASN1CodeSkeletons.java index 1990885c0..f7b639ad1 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/asn1editor/ASN1CodeSkeletons.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/asn1editor/ASN1CodeSkeletons.java @@ -57,6 +57,14 @@ public final class ASN1CodeSkeletons { new SkeletonTemplateProposal("VALUESET", new Template("Value Set", "", CONTEXT_IDENTIFIER, "${Identifier} ${type} := {" + NEWLINE + "${first-value} |" + NEWLINE + "${second-value}" + NEWLINE + "}", false)) }; + private static final String ASN1_MODULE_EMPTY = " DEFINITIONS" + NEWLINE + + NEWLINE + + " AUTOMATIC TAGS ::=" + NEWLINE + + NEWLINE + + "BEGIN" + NEWLINE + + NEWLINE + + "END" + NEWLINE; + private static final String ASN1_MODULE_SKELETON = " DEFINITIONS" + NEWLINE + NEWLINE + "-- [(AUTOMATIC|EXPLICIT|IMPLICIT) TAGS]" + NEWLINE @@ -90,6 +98,20 @@ public final class ASN1CodeSkeletons { collector.addTemplateProposal(templateProposal.getPrefix(), templateProposal.getProposal(), skeletonImage); } } + + /** + * Returns a valid ASN1 module with almost empty content. + * + * @param moduleName + * the name of the module to be used to create the + * skeleton + * @return the ASN1 module skeleton + * */ + public static String getASN1ModuleWithEmptyBody(final String moduleName) { + StringBuilder buffer = new StringBuilder(moduleName); + buffer.append(ASN1_MODULE_EMPTY); + return buffer.toString(); + } /** * Returns a valid ASN1 module skeleton. diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/asn1editor/IndentAction.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/asn1editor/IndentAction.java index 6198fdb93..d5dd79573 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/asn1editor/IndentAction.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/asn1editor/IndentAction.java @@ -9,10 +9,10 @@ package org.eclipse.titan.designer.editors.asn1editor; import org.eclipse.jface.text.BadLocationException; import org.eclipse.jface.text.IDocument; +import org.eclipse.jface.text.RewriteSessionEditProcessor; import org.eclipse.titan.common.parsers.Interval; import org.eclipse.titan.common.parsers.Interval.interval_type; import org.eclipse.titan.designer.editors.AbstractIndentAction; -import org.eclipse.titan.designer.editors.RewriteSessionEditProcessor; import org.eclipse.ui.IEditorPart; /** diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/asn1editor/ReconcilingStrategy.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/asn1editor/ReconcilingStrategy.java index 117a92dfe..3585e8de1 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/asn1editor/ReconcilingStrategy.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/asn1editor/ReconcilingStrategy.java @@ -27,6 +27,7 @@ import org.eclipse.jface.text.reconciler.IReconcilingStrategyExtension; import org.eclipse.swt.widgets.Display; import org.eclipse.titan.designer.GeneralConstants; import org.eclipse.titan.designer.AST.MarkerHandler; +import org.eclipse.titan.designer.commonFilters.ResourceExclusionHelper; import org.eclipse.titan.designer.graphics.ImageCache; import org.eclipse.titan.designer.parsers.GlobalIntervalHandler; import org.eclipse.titan.designer.parsers.GlobalParser; @@ -95,19 +96,16 @@ public final class ReconcilingStrategy implements IReconcilingStrategy, IReconci } void analyze(final boolean is_initial) { - final IFile file = (IFile) editor.getEditorInput().getAdapter(IFile.class); - - if (file == null) { + final IFile editedFile = (IFile) editor.getEditorInput().getAdapter(IFile.class); + if (editedFile == null || ResourceExclusionHelper.isExcluded(editedFile)) { return; } - IProject project = file.getProject(); + IProject project = editedFile.getProject(); if (project == null) { return; } - ProjectSourceParser projectSourceParser = GlobalParser.getProjectSourceParser(project); - Display.getDefault().asyncExec(new Runnable() { @Override public void run() { @@ -116,7 +114,8 @@ public final class ReconcilingStrategy implements IReconcilingStrategy, IReconci } }); - projectSourceParser.reportOutdating(file); + ProjectSourceParser projectSourceParser = GlobalParser.getProjectSourceParser(project); + projectSourceParser.reportOutdating(editedFile); if (is_initial || !editor.isSemanticCheckingDelayed()) { projectSourceParser.setFullSemanticAnalysisNeeded(); @@ -130,8 +129,8 @@ public final class ReconcilingStrategy implements IReconcilingStrategy, IReconci Display.getDefault().asyncExec(new Runnable() { @Override public void run() { - if (!MarkerHandler.hasMarker(GeneralConstants.ONTHEFLY_SYNTACTIC_MARKER, file) || - !MarkerHandler.hasMarker(GeneralConstants.ONTHEFLY_MIXED_MARKER, file) ) { + if (!MarkerHandler.hasMarker(GeneralConstants.ONTHEFLY_SYNTACTIC_MARKER, editedFile) || + !MarkerHandler.hasMarker(GeneralConstants.ONTHEFLY_MIXED_MARKER, editedFile) ) { getEditor().updateOutlinePage(); } } @@ -145,6 +144,7 @@ public final class ReconcilingStrategy implements IReconcilingStrategy, IReconci op.setRule(project); op.schedule(); } else { + projectSourceParser.reportSyntacticOutdatingOnly(editedFile); projectSourceParser.analyzeAllOnlySyntactically(); } } diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/configeditor/ConfigEditor.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/configeditor/ConfigEditor.java index dbc7b7d5d..d0a1ce1ba 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/configeditor/ConfigEditor.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/configeditor/ConfigEditor.java @@ -15,7 +15,6 @@ import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.dialogs.ErrorDialog; import org.eclipse.swt.widgets.Display; -import org.eclipse.titan.common.logging.ErrorReporter; import org.eclipse.titan.common.parsers.LocationAST; import org.eclipse.titan.common.parsers.cfg.CfgAnalyzer; import org.eclipse.titan.common.parsers.cfg.ConfigTreeNodeUtilities; diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/configeditor/IndentAction.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/configeditor/IndentAction.java index bba5564c3..d127ca1da 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/configeditor/IndentAction.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/configeditor/IndentAction.java @@ -9,10 +9,10 @@ package org.eclipse.titan.designer.editors.configeditor; import org.eclipse.jface.text.BadLocationException; import org.eclipse.jface.text.IDocument; +import org.eclipse.jface.text.RewriteSessionEditProcessor; import org.eclipse.titan.common.parsers.Interval; import org.eclipse.titan.common.parsers.Interval.interval_type; import org.eclipse.titan.designer.editors.AbstractIndentAction; -import org.eclipse.titan.designer.editors.RewriteSessionEditProcessor; import org.eclipse.ui.IEditorPart; /** diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/ttcn3editor/AddImport.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/ttcn3editor/AddImport.java index 87eb38387..f241f3a2f 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/ttcn3editor/AddImport.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/ttcn3editor/AddImport.java @@ -15,6 +15,7 @@ import org.eclipse.core.runtime.preferences.IPreferencesService; import org.eclipse.jface.action.IAction; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.text.BadLocationException; +import org.eclipse.jface.text.RewriteSessionEditProcessor; import org.eclipse.jface.text.TextSelection; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.window.Window; @@ -33,7 +34,6 @@ import org.eclipse.titan.designer.editors.DeclarationCollectionHelper; import org.eclipse.titan.designer.editors.DeclarationCollector; import org.eclipse.titan.designer.editors.OpenDeclarationHelper; import org.eclipse.titan.designer.editors.OpenDeclarationLabelProvider; -import org.eclipse.titan.designer.editors.RewriteSessionEditProcessor; import org.eclipse.titan.designer.parsers.GlobalParser; import org.eclipse.titan.designer.parsers.ProjectSourceParser; import org.eclipse.titan.designer.preferences.PreferenceConstants; diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/ttcn3editor/IndentAction.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/ttcn3editor/IndentAction.java index eff1f15b6..907918cca 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/ttcn3editor/IndentAction.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/ttcn3editor/IndentAction.java @@ -9,10 +9,10 @@ package org.eclipse.titan.designer.editors.ttcn3editor; import org.eclipse.jface.text.BadLocationException; import org.eclipse.jface.text.IDocument; +import org.eclipse.jface.text.RewriteSessionEditProcessor; import org.eclipse.titan.common.parsers.Interval; import org.eclipse.titan.common.parsers.Interval.interval_type; import org.eclipse.titan.designer.editors.AbstractIndentAction; -import org.eclipse.titan.designer.editors.RewriteSessionEditProcessor; import org.eclipse.ui.IEditorPart; /** diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/ttcn3editor/OutlineContentProvider.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/ttcn3editor/OutlineContentProvider.java index 0d504d12b..c5dc68e79 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/ttcn3editor/OutlineContentProvider.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/ttcn3editor/OutlineContentProvider.java @@ -15,6 +15,8 @@ import org.eclipse.titan.designer.AST.IOutlineElement; /** * @author Kristof Szabados + * + * TODO: instead of getOutlineChildren we should use visitors * */ public final class OutlineContentProvider implements ITreeContentProvider { diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/ttcn3editor/ReconcilingStrategy.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/ttcn3editor/ReconcilingStrategy.java index 84a208edd..b42f81449 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/ttcn3editor/ReconcilingStrategy.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/ttcn3editor/ReconcilingStrategy.java @@ -114,7 +114,6 @@ public final class ReconcilingStrategy implements IReconcilingStrategy, IReconci return; } - IPreferenceStore store = Activator.getDefault().getPreferenceStore(); int lineBreaks = 0; try { if (DirtyRegion.INSERT.equals(dirtyRegion.getType())) { @@ -215,6 +214,7 @@ public final class ReconcilingStrategy implements IReconcilingStrategy, IReconci op.setProperty(IProgressConstants.ICON_PROPERTY, ImageCache.getImageDescriptor("titan.gif")); op.schedule(); + IPreferenceStore store = Activator.getDefault().getPreferenceStore(); if (store.getBoolean(PreferenceConstants.DISPLAYDEBUGINFORMATION)) { TITANDebugConsole.println("Refreshing the syntax took " + (System.nanoTime() - parserStart) * (1e-9) + " secs"); } diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/ttcn3editor/TTCN3CodeSkeletons.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/ttcn3editor/TTCN3CodeSkeletons.java index ad398158b..4a140871e 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/ttcn3editor/TTCN3CodeSkeletons.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/ttcn3editor/TTCN3CodeSkeletons.java @@ -660,6 +660,21 @@ public final class TTCN3CodeSkeletons { } } + /** + * Returns a valid TTCN3 module with empty body. + * + * @param moduleName + * the name of the module to be used to create the + * module + * @return the TTCN3 module content + * */ + public static String getTTCN3ModuleWithEmptyBody(final String moduleName) { + StringBuilder buffer = new StringBuilder(MODULE_KEYWORD); + buffer.append(moduleName).append(" {\n\n}\n"); + return buffer.toString(); + } + + /** * Returns a valid TTCN3 module skeleton. * @@ -670,7 +685,9 @@ public final class TTCN3CodeSkeletons { * */ public static String getTTCN3ModuleSkeleton(final String moduleName) { StringBuilder buffer = new StringBuilder(TTCN3_MODULE_HEADER_SKELETON); - buffer.append(MODULE_KEYWORD).append(moduleName).append('\n').append(TTCN3_MODULE_BODY_SKELETON); + buffer.append(MODULE_KEYWORD).append(moduleName).append(NEWLINE).append(TTCN3_MODULE_BODY_SKELETON); return buffer.toString(); } + + } diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/ttcnppeditor/IndentAction.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/ttcnppeditor/IndentAction.java index c5979180d..6319b3283 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/ttcnppeditor/IndentAction.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/ttcnppeditor/IndentAction.java @@ -11,11 +11,11 @@ import org.eclipse.core.runtime.Platform; import org.eclipse.core.runtime.preferences.IPreferencesService; import org.eclipse.jface.text.BadLocationException; import org.eclipse.jface.text.IDocument; +import org.eclipse.jface.text.RewriteSessionEditProcessor; import org.eclipse.jface.text.reconciler.MonoReconciler; import org.eclipse.titan.common.parsers.Interval; import org.eclipse.titan.common.parsers.Interval.interval_type; import org.eclipse.titan.designer.editors.AbstractIndentAction; -import org.eclipse.titan.designer.editors.RewriteSessionEditProcessor; import org.eclipse.titan.designer.preferences.PreferenceConstants; import org.eclipse.titan.designer.productUtilities.ProductConstants; import org.eclipse.ui.IEditorPart; diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/ttcnppeditor/ReconcilingStrategy.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/ttcnppeditor/ReconcilingStrategy.java index 0463818fa..c50b9cb61 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/ttcnppeditor/ReconcilingStrategy.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/ttcnppeditor/ReconcilingStrategy.java @@ -27,6 +27,9 @@ import org.eclipse.jface.text.reconciler.IReconcilingStrategy; import org.eclipse.jface.text.reconciler.IReconcilingStrategyExtension; import org.eclipse.swt.widgets.Display; import org.eclipse.titan.common.logging.ErrorReporter; +import org.eclipse.titan.designer.GeneralConstants; +import org.eclipse.titan.designer.AST.MarkerHandler; +import org.eclipse.titan.designer.commonFilters.ResourceExclusionHelper; import org.eclipse.titan.designer.editors.ttcn3editor.TTCN3FoldingSupport; import org.eclipse.titan.designer.graphics.ImageCache; import org.eclipse.titan.designer.parsers.GlobalIntervalHandler; @@ -178,10 +181,10 @@ public final class ReconcilingStrategy implements IReconcilingStrategy, IReconci } private void fullReconciliation(final boolean is_initial) { - IPreferencesService prefs = Platform.getPreferencesService(); - // if (prefs.getBoolean(Activator.PLUGIN_ID, - // PreferenceConstants.TREATTTCNPPASTTCN, true, null)) { + actualCode = new StringBuilder(document.get()); + GlobalIntervalHandler.putInterval(document, null); + IPreferencesService prefs = Platform.getPreferencesService(); if (prefs.getBoolean(ProductConstants.PRODUCT_ID_DESIGNER, PreferenceConstants.USEONTHEFLYPARSING, true, null)) { analyze(is_initial); } else { @@ -194,22 +197,11 @@ public final class ReconcilingStrategy implements IReconcilingStrategy, IReconci } }); } - // } else { - // Display.getDefault().asyncExec(new Runnable() { - // public void run() { - // ArrayList positions = (new - // TTCN3FoldingSupport()).calculatePositions(document); - // editor.updateFoldingStructure(positions); - // editor.updateOutlinePage(); - // } - // }); - // } } public void analyze(final boolean is_initial) { - IFile editedFile = (IFile) editor.getEditorInput().getAdapter(IFile.class); - - if (editedFile == null) { + final IFile editedFile = (IFile) editor.getEditorInput().getAdapter(IFile.class); + if (editedFile == null || ResourceExclusionHelper.isExcluded(editedFile)) { return; } @@ -218,9 +210,6 @@ public final class ReconcilingStrategy implements IReconcilingStrategy, IReconci return; } - final ProjectSourceParser projectSourceParser = GlobalParser.getProjectSourceParser(project); - projectSourceParser.setFullSemanticAnalysisNeeded(); - Display.getDefault().asyncExec(new Runnable() { @Override public void run() { @@ -229,6 +218,8 @@ public final class ReconcilingStrategy implements IReconcilingStrategy, IReconci } }); + final ProjectSourceParser projectSourceParser = GlobalParser.getProjectSourceParser(project); + projectSourceParser.setFullSemanticAnalysisNeeded(); if (is_initial || !editor.isSemanticCheckingDelayed()) { projectSourceParser.reportOutdating(editedFile); projectSourceParser.analyzeAll(); @@ -242,7 +233,9 @@ public final class ReconcilingStrategy implements IReconcilingStrategy, IReconci Display.getDefault().asyncExec(new Runnable() { @Override public void run() { - editor.updateOutlinePage(); + if (!MarkerHandler.hasMarker(GeneralConstants.ONTHEFLY_SYNTACTIC_MARKER, editedFile)) { + getEditor().updateOutlinePage(); + } } }); return Status.OK_STATUS; diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/nativewin32actions/CheckSemantic.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/nativewin32actions/CheckSemantic.java index bc1bc731b..e7cb70338 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/nativewin32actions/CheckSemantic.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/nativewin32actions/CheckSemantic.java @@ -115,12 +115,10 @@ public final class CheckSemantic extends ExternalTitanAction { // used to generate the Makefile, otherwise use the general // preferences. if (singleSelectedProject == null) { - //TITANConsole.getConsole().newMessageStream().println("Using the general preferences to do the external semantic check"); TITANConsole.println("Using the general preferences to do the external semantic check"); titanFlags += getTITANActionFlags(); command.add(titanFlags); } else { - //TITANConsole.getConsole().newMessageStream().println("Using the project properties to do the external semantic check"); TITANConsole.println("Using the project properties to do the external semantic check"); boolean useRuntime2 = false; try { diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/parsers/asn1parser/Asn1Parser.g4 b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/parsers/asn1parser/Asn1Parser.g4 index b3ba241c9..3d7bdbed2 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/parsers/asn1parser/Asn1Parser.g4 +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/parsers/asn1parser/Asn1Parser.g4 @@ -624,15 +624,19 @@ locals [ASN1Type subType, NamedType_Helper namedType_Helper, Constraint constrai e = pr_Constraints { $constraints = $e.constraints; } )? // pr_BuiltinType_reg, pr_ConstrainedType { - $type.setLocation(new Location(actualFile, $builtin.start, $builtin.start)); - $type.addConstraints($constraints); + if ( $type != null ) { + $type.setLocation(new Location(actualFile, $builtin.start, $builtin.start)); + $type.addConstraints($constraints); + } } | ref = pr_ReferencedType { $type = $ref.type; } f = pr_Constraints { $constraints = $f.constraints; - $type.setLocation(new Location(actualFile, $ref.start, $ref.start)); - $type.addConstraints($constraints); + if ( $type != null ) { + $type.setLocation(new Location(actualFile, $ref.start, $ref.start)); + $type.addConstraints($constraints); + } } ) /* ( ( pr_ReferencedType diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/parsers/ttcn3parser/Ttcn3BaseLexer.g4 b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/parsers/ttcn3parser/Ttcn3BaseLexer.g4 index b6be2525d..445e2716f 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/parsers/ttcn3parser/Ttcn3BaseLexer.g4 +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/parsers/ttcn3parser/Ttcn3BaseLexer.g4 @@ -354,6 +354,12 @@ HSTRINGMATCH: '\'' WS? ( HEXORMATCH WS? )* '\'H'; OSTRING: '\'' WS? ( OCT WS? )* '\'O'; OSTRINGMATCH: '\'' WS? ( OCTORMATCH WS? )* '\'O'; +// Tokens for erroneous cases for [BHO]STRING(MATCH)? rules +// - wrong character between the quotes +// - odd number of hex digits in case of OSTRING(MATCH)?) +// These tokens are not used in any parser rules, but these cases must be parser errors instead of lexer errors +BHOSTRING_WRONG: '\'' ~( '\'' )* '\'' [BHO]; + // Macros MACRO_MODULEID: '%moduleId' | '__MODULE__'; MACRO_DEFINITION_ID: '%definitionId'; diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/parsers/ttcn3parser/Ttcn3Parser.g4 b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/parsers/ttcn3parser/Ttcn3Parser.g4 index 6f5bc349b..3330fc3da 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/parsers/ttcn3parser/Ttcn3Parser.g4 +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/parsers/ttcn3parser/Ttcn3Parser.g4 @@ -21,6 +21,55 @@ NOTE: Rule pr_CString is for CSTRING to remove the beginning and ending '"' characters, as lexer cannot remove them as it was done in the ANTLR V2 Parser. Do NOT use CSTRING in any rule, use this instead. + +-------------------------- +Precedence of Operators with precedence levels (higher number is higher precedence) + +15 ( ... ) +14 +, - (unary) +13 *, /, mod, rem +12 +, -, & +11 not4b (unary) +10 and4b + 9 xor4b + 8 or4b + 7 <<, >>, <@, @> + 6 <, >, <=, >= + 5 ==, != + 4 not (unary) + 3 and + 2 xor + 1 or + +Simplified* expression rules using precedence climbing method: + +E1 : E2 ( OR E2 )* +E2 : E3 ( XOR E3 )* +E3 : E4 ( AND E4 )* +E4 : NOT E4 | E5 +E5 : E6 ( ( '==' | '!=' ) E6 )* +E6 : E7 ( ( '<' | '>' | '<=' | '>=' ) E7 )* +E7 : E8 ( ( '<<' | '>>' | '<@' | '@>' ) E8 )* +E8 : E9 ( OR4B E9 )* +E9 : E10 ( XOR4B E10 )* +E10: E11 ( AND4B E11 )* +E11: NOT4B E11 | E12 +E12: E13 ( ( '+' | '-' | '&' ) E13 )* +E13: P ( ( '*' | '/' | MOD | REM ) P )* +P : NOT E4 | NOT4B E11 | ( '+' | '-' ) P | '(' E1 ')' | v + +*: without java code, but the structure is identical to the used rules, where + En: rule for the n-th precedence level + E1: pr_SingleExpression in case of Ttcn3Parser.g4 + P: last rule with unary operations + v: atomic expression without any operators, pr_Primary in case of Ttcn3Parser.g4 + +NOTE: unary operators, which are not on the highest priority level, are used twice, because they must be handled at their precendence level, + and also at the last (highest precedence) level, if there is no match to other operators. + If any of these unary operators was matched in the last rule, control must jump back to the rule of its precedence level ( NOT E4, NOT4B E11 ). + Example case: + not4b a & not4b b <=> not4b ( a & ( not4b b ) ) + 1st not4b matches at rule E4, but the 2nd not4b matches at rule P. */ options { @@ -6120,8 +6169,10 @@ pr_NotExpression returns[Value value = null]: pr_EqualExpression returns[Value value = null]: ( v = pr_RelExpression { $value = $v.value; } - ( EQUAL v2 = pr_RelExpression { $value = new EqualsExpression($value, $v2.value); - $value.setLocation(getLocation( $v.start, $v2.stop)); } + ( EQUAL v1 = pr_RelExpression { $value = new EqualsExpression($value, $v1.value); + $value.setLocation(getLocation( $v.start, $v1.stop)); } + | NOTEQUALS v2 = pr_ShiftExpression { $value = new NotequalesExpression($value, $v2.value); + $value.setLocation(getLocation( $v.start, $v2.stop)); } )* ); @@ -6131,13 +6182,11 @@ pr_RelExpression returns[Value value = null]: $value.setLocation(getLocation( $v.start, $v1.stop)); } | MORETHAN v2 = pr_ShiftExpression { $value = new GreaterThanExpression($value, $v2.value); $value.setLocation(getLocation( $v.start, $v2.stop)); } - | NOTEQUALS v3 = pr_ShiftExpression { $value = new NotequalesExpression($value, $v3.value); + | MOREOREQUAL v3 = pr_ShiftExpression { $value = new GreaterThanOrEqualExpression($value, $v3.value); $value.setLocation(getLocation( $v.start, $v3.stop)); } - | MOREOREQUAL v4 = pr_ShiftExpression { $value = new GreaterThanOrEqualExpression($value, $v4.value); + | LESSOREQUAL v4 = pr_ShiftExpression { $value = new LessThanOrEqualExpression($value, $v4.value); $value.setLocation(getLocation( $v.start, $v4.stop)); } - | LESSOREQUAL v5 = pr_ShiftExpression { $value = new LessThanOrEqualExpression($value, $v5.value); - $value.setLocation(getLocation( $v.start, $v5.stop)); } - )? + )* ); pr_ShiftExpression returns[Value value = null]: @@ -6176,8 +6225,8 @@ pr_BitAndExpression returns[Value value = null]: pr_BitNotExpression returns[Value value = null]: ( NOT4B - v = pr_AddExpression { $value = new Not4bExpression($v.value); - $value.setLocation(getLocation( $start, getStopToken())); } + v = pr_BitNotExpression { $value = new Not4bExpression($v.value); + $value.setLocation(getLocation( $start, getStopToken())); } | v2 = pr_AddExpression { $value = $v2.value; } ); @@ -6185,8 +6234,8 @@ pr_AddExpression returns[Value value = null]: ( v = pr_MulExpression { $value = $v.value; } ( PLUS v1 = pr_MulExpression { $value = new AddExpression($value, $v1.value); $value.setLocation(getLocation( $v.start, $v1.stop)); } - | pr_Minus v2 = pr_MulExpression { $value = new SubstractExpression($value, $v2.value); - $value.setLocation(getLocation( $v.start, $v2.stop)); } + | MINUS v2 = pr_MulExpression { $value = new SubstractExpression($value, $v2.value); + $value.setLocation(getLocation( $v.start, $v2.stop)); } | STRINGOP v3 = pr_MulExpression { $value = new StringConcatenationExpression($value, $v3.value); $value.setLocation(getLocation( $v.start, $v3.stop)); } )* @@ -6206,13 +6255,20 @@ pr_MulExpression returns[Value value = null]: ); pr_UnaryExpression returns [Value value = null]: -( PLUS - v1 = pr_Primary { $value = new UnaryPlusExpression($v1.value); - $value.setLocation(getLocation( $PLUS, $v1.stop)); } +( NOT + v1 = pr_NotExpression { $value = new NotExpression($v1.value); + $value.setLocation(getLocation( $NOT, $v1.stop )); } +| NOT4B + v2 = pr_BitNotExpression { $value = new Not4bExpression($v2.value); + $value.setLocation(getLocation( $NOT4B, $v2.stop )); } +| PLUS + v3 = pr_Primary { $value = new UnaryPlusExpression($v3.value); + $value.setLocation(getLocation( $PLUS, $v3.stop)); } | MINUS - v2 = pr_Primary { $value = new UnaryMinusExpression($v2.value); - $value.setLocation(getLocation( $MINUS, $v2.stop)); } -| v3 = pr_Primary { $value = $v3.value; } + v4 = pr_Primary { $value = new UnaryMinusExpression($v4.value); + $value.setLocation(getLocation( $MINUS, $v4.stop)); } +| pr_LParen v5 = pr_SingleExpression pr_RParen { $value = $v5.value; } +| v6 = pr_Primary { $value = $v6.value; } ); pr_Primary returns[Value value = null] diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/parsers/ttcn3parser/Ttcn3Reparser.g4 b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/parsers/ttcn3parser/Ttcn3Reparser.g4 index db1f8da0b..c1e6b28b2 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/parsers/ttcn3parser/Ttcn3Reparser.g4 +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/parsers/ttcn3parser/Ttcn3Reparser.g4 @@ -133,7 +133,7 @@ pr_reparse_ImportDef [Group parent_group, List all_imports, List newConfigurations = ProjectFileHandler.getConfigurations(document); - if (newConfigurations.contains(newName)) { + List configurations = ProjectFileHandler.getConfigurations(document); + if (configurations.contains(newName)) { errorText.setText("It is not possible to create a new configuration with name `" + newName + "' as there is already one with that name."); errorText.setEnabled(true); @@ -214,18 +214,18 @@ public class ConfigurationManagerControl { Node configurationRoot = ProjectFileHandler.findConfigurationNode(document.getDocumentElement(), newName); if (configurationRoot == null) { - Element temp = document.createElement("Configuration"); + Element newConfiguration = document.createElement("Configuration"); - temp.setAttribute("name", newName); - configurationsRoot.appendChild(temp); - configurationRoot = temp; + newConfiguration.setAttribute("name", newName); + configurationsRoot.appendChild(newConfiguration); + configurationRoot = newConfiguration; } ProjectFileHandler.saveProjectInfoToNode(project, configurationRoot, document); - newConfigurations = ProjectFileHandler.getConfigurations(ProjectDocumentHandlingUtility + configurations = ProjectFileHandler.getConfigurations(ProjectDocumentHandlingUtility .getDocument(project)); - hostViewer.setInput(newConfigurations.toArray(new String[newConfigurations.size()])); + hostViewer.setInput(configurations.toArray(new String[configurations.size()])); } } }); diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/properties/pages/ProjectBuildPropertyPage.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/properties/pages/ProjectBuildPropertyPage.java index ded04a8bb..5619b5155 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/properties/pages/ProjectBuildPropertyPage.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/properties/pages/ProjectBuildPropertyPage.java @@ -29,7 +29,6 @@ import org.eclipse.titan.designer.properties.PropertyNotificationManager; import org.eclipse.titan.designer.properties.data.ProjectBuildPropertyData; import org.eclipse.titan.designer.properties.data.ProjectDocumentHandlingUtility; import org.eclipse.titan.designer.wizards.projectFormat.TITANAutomaticProjectExporter; -import org.eclipse.titan.designer.wizards.projectFormat.TITANProjectExporter; import org.eclipse.ui.dialogs.PropertyPage; /** diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/wizards/NewASN1ModuleCreationWizardPage.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/wizards/NewASN1ModuleCreationWizardPage.java index d2a6c9ade..f2729d4ca 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/wizards/NewASN1ModuleCreationWizardPage.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/wizards/NewASN1ModuleCreationWizardPage.java @@ -162,16 +162,27 @@ public final class NewASN1ModuleCreationWizardPage extends WizardNewFileCreation @Override protected InputStream getInitialContents() { - if (wizard.getOptionsPage().isGenerateSkeletonSelected()) { - String moduleName = getFileName(); - int dotIndex = moduleName.indexOf('.'); - moduleName = dotIndex == -1 ? moduleName : moduleName.substring(0, dotIndex); - String temporalModuleSkeleton = ASN1CodeSkeletons.getASN1ModuleSkeleton(moduleName); + switch (wizard.getOptionsPage().getGeneratedModuleType()) { + case EMPTY: + return super.getInitialContents(); + case NAME_AND_EMPTY_BODY: + String temporalModule = ASN1CodeSkeletons.getASN1ModuleWithEmptyBody(getModuleName()); + return new BufferedInputStream(new ByteArrayInputStream(temporalModule.getBytes())); + case SKELETON: + String temporalModuleSkeleton = ASN1CodeSkeletons.getASN1ModuleSkeleton(getModuleName()); return new BufferedInputStream(new ByteArrayInputStream(temporalModuleSkeleton.getBytes())); + default: + return super.getInitialContents(); } - return super.getInitialContents(); + } + + private String getModuleName() { + String moduleName = getFileName(); + int dotIndex = moduleName.indexOf('.'); + moduleName = dotIndex == -1 ? moduleName : moduleName.substring(0, dotIndex); + return moduleName; } } diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/wizards/NewASN1ModuleOptionsWizardPage.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/wizards/NewASN1ModuleOptionsWizardPage.java index 208a69333..a3fb0c4cd 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/wizards/NewASN1ModuleOptionsWizardPage.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/wizards/NewASN1ModuleOptionsWizardPage.java @@ -1,5 +1,5 @@ /****************************************************************************** - * Copyright (c) 2000-2015 Ericsson Telecom AB + * Copyright (c) 2000-2016 Ericsson Telecom AB * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -7,36 +7,17 @@ ******************************************************************************/ package org.eclipse.titan.designer.wizards; -import org.eclipse.jface.wizard.IWizard; -import org.eclipse.jface.wizard.WizardPage; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Composite; - /** - * @author Kristof Szabados - * */ -public final class NewASN1ModuleOptionsWizardPage extends WizardPage { - +* @author Kristof Szabados, Jeno Balasko +* */ +public final class NewASN1ModuleOptionsWizardPage extends NewModuleOptionsWizardPage { private static final String TITLE = "ASN1 Module creation options"; private static final String DESCRIPTION = "Create the new ASN1 module according to these options"; - private static final String GEN_EXCLUDED = "Generate as excluded from build"; - private static final String GEN_SKELETON = "Generate with module skeleton inserted"; - - private Composite pageComposite; - private Button excludeFromBuildButton; - private boolean isExcludedFromBuildSelected = false; - private Button generateSkeletonButton; - private boolean isGenerateSkeletonSelected = true; - public NewASN1ModuleOptionsWizardPage() { + NewASN1ModuleOptionsWizardPage() { super(TITLE); } - + @Override public String getDescription() { return DESCRIPTION; @@ -46,60 +27,4 @@ public final class NewASN1ModuleOptionsWizardPage extends WizardPage { public String getTitle() { return TITLE; } - - /* - * (non-Javadoc) - * - * @see - * org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt - * .widgets.Composite) - */ - @Override - public void createControl(final Composite parent) { - pageComposite = new Composite(parent, SWT.NONE); - GridLayout layout = new GridLayout(); - pageComposite.setLayout(layout); - GridData data = new GridData(GridData.FILL); - data.grabExcessHorizontalSpace = true; - pageComposite.setLayoutData(data); - - excludeFromBuildButton = new Button(pageComposite, SWT.CHECK); - excludeFromBuildButton.setText(GEN_EXCLUDED); - excludeFromBuildButton.setEnabled(true); - excludeFromBuildButton.setSelection(false); - isExcludedFromBuildSelected = false; - excludeFromBuildButton.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(final SelectionEvent e) { - isExcludedFromBuildSelected = excludeFromBuildButton.getSelection(); - } - }); - - generateSkeletonButton = new Button(pageComposite, SWT.CHECK); - generateSkeletonButton.setText(GEN_SKELETON); - generateSkeletonButton.setEnabled(true); - generateSkeletonButton.setSelection(true); - isGenerateSkeletonSelected = true; - generateSkeletonButton.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(final SelectionEvent e) { - isGenerateSkeletonSelected = generateSkeletonButton.getSelection(); - } - }); - - setControl(pageComposite); - } - - public boolean isExcludeFromBuildSelected() { - return isExcludedFromBuildSelected; - } - - public boolean isGenerateSkeletonSelected() { - return isGenerateSkeletonSelected; - } - - @Override - public void setWizard(final IWizard newWizard) { - super.setWizard(newWizard); - } -} +} \ No newline at end of file diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/wizards/NewModuleOptionsWizardPage.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/wizards/NewModuleOptionsWizardPage.java new file mode 100644 index 000000000..ef73e4079 --- /dev/null +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/wizards/NewModuleOptionsWizardPage.java @@ -0,0 +1,126 @@ + /****************************************************************************** + * Copyright (c) 2000-2016 Ericsson Telecom AB + * All rights reserved. This program and the accompanying materials + * are 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 + ******************************************************************************/ +package org.eclipse.titan.designer.wizards; + +import org.eclipse.jface.wizard.IWizard; +import org.eclipse.jface.wizard.WizardPage; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Composite; + +/** + * @author Kristof Szabados, Jeno Balasko + * */ +public abstract class NewModuleOptionsWizardPage extends WizardPage { + + private static final String GEN_EXCLUDED = "Generate as excluded from build"; + + //Module generation + private static final String GEN_WITH = "Generate module with this content:"; + private static final String GEN_EMPTY_CONT = "Empty module"; + private static final String GEN_MODULE_NAME = "Module name and empty body"; + private static final String GEN_MODULE_SKEL = "Module skeleton"; + private static final String GEN_MODULE_TOOLTIP = "What will be in the module"; + /** + * The items of the combo box. + */ + private static final String[] GEN_MODULE_OPTIONS = new String[] { + GEN_EMPTY_CONT, + GEN_MODULE_NAME, + GEN_MODULE_SKEL + }; + + public static enum GeneratedModuleType { + EMPTY, NAME_AND_EMPTY_BODY, SKELETON + }; + + private static GeneratedModuleType[] GeneratedModuleTypeValues = GeneratedModuleType.values(); + + private Composite pageComposite; + + private Button excludeFromBuildButton; + private boolean isExcludedFromBuildSelected = false; + + private Label generateModuleLabel; + + private Combo generateModuleCombo; + private GeneratedModuleType generatedModuleType = GeneratedModuleType.NAME_AND_EMPTY_BODY; + + public NewModuleOptionsWizardPage(String title) { + super(title); + } + + /* + * (non-Javadoc) + * + * @see + * org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt + * .widgets.Composite) + */ + @Override + public void createControl(final Composite parent) { + pageComposite = new Composite(parent, SWT.NONE); + GridLayout layout = new GridLayout(); + pageComposite.setLayout(layout); + GridData data = new GridData(GridData.FILL); + data.grabExcessHorizontalSpace = true; + pageComposite.setLayoutData(data); + + excludeFromBuildButton = new Button(pageComposite, SWT.CHECK); + excludeFromBuildButton.setText(GEN_EXCLUDED); + excludeFromBuildButton.setEnabled(true); + excludeFromBuildButton.setSelection(false); + isExcludedFromBuildSelected = false; + excludeFromBuildButton.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(final SelectionEvent e) { + isExcludedFromBuildSelected = excludeFromBuildButton.getSelection(); + } + }); + + generateModuleLabel = new org.eclipse.swt.widgets.Label(pageComposite, SWT.READ_ONLY|SWT.LEFT); + generateModuleLabel.setText(GEN_WITH); + + generateModuleCombo = new Combo(pageComposite,SWT.READ_ONLY|SWT.RIGHT); + generateModuleCombo.setEnabled(true); + generateModuleCombo.setItems(GEN_MODULE_OPTIONS); + generateModuleCombo.setText(GEN_MODULE_NAME); + generateModuleCombo.setToolTipText(GEN_MODULE_TOOLTIP); + generateModuleCombo.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(final SelectionEvent e) { + setGeneratedModuleType(generateModuleCombo.getSelectionIndex()); + return; + } + }); + setControl(pageComposite); + } + + public boolean isExcludeFromBuildSelected() { + return isExcludedFromBuildSelected; + } + + public GeneratedModuleType getGeneratedModuleType() { + return generatedModuleType; + } + + private void setGeneratedModuleType(int index) { + generatedModuleType = GeneratedModuleTypeValues[index]; + } + + @Override + public void setWizard(final IWizard newWizard) { + super.setWizard(newWizard); + } +} diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/wizards/NewTTCN3ModuleCreationWizardPage.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/wizards/NewTTCN3ModuleCreationWizardPage.java index 9523a52f6..b5e2ebd74 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/wizards/NewTTCN3ModuleCreationWizardPage.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/wizards/NewTTCN3ModuleCreationWizardPage.java @@ -40,7 +40,7 @@ public final class NewTTCN3ModuleCreationWizardPage extends WizardNewFileCreatio private static final String DESCRIPTION = "Create a new TTCN3 module"; private static final String ERROR_MESSAGE = "When provided the extension of the TTCN3 Module must be \"ttcn\" or \"ttcn3\""; private static final String OCCUPIED = "This module name would create a file that already exists."; - + private boolean hasLicense; private final NewTTCN3ModuleWizard wizard; @@ -152,16 +152,26 @@ public final class NewTTCN3ModuleCreationWizardPage extends WizardNewFileCreatio @Override protected InputStream getInitialContents() { - if (wizard.getOptionsPage().isGenerateSkeletonSelected()) { - String moduleName = getFileName(); - int dotIndex = moduleName.indexOf('.'); - moduleName = dotIndex == -1 ? moduleName : moduleName.substring(0, dotIndex); - String temporalModuleSkeleton = TTCN3CodeSkeletons.getTTCN3ModuleSkeleton(moduleName); - + switch (wizard.getOptionsPage().getGeneratedModuleType()) { + case EMPTY: + return super.getInitialContents(); + case NAME_AND_EMPTY_BODY: + String temporalModule = TTCN3CodeSkeletons.getTTCN3ModuleWithEmptyBody(getModuleName()); + return new BufferedInputStream(new ByteArrayInputStream(temporalModule.getBytes())); + case SKELETON: + String temporalModuleSkeleton = TTCN3CodeSkeletons.getTTCN3ModuleSkeleton(getModuleName()); return new BufferedInputStream(new ByteArrayInputStream(temporalModuleSkeleton.getBytes())); + default: + return super.getInitialContents(); } - return super.getInitialContents(); + } + + private String getModuleName() { + String moduleName = getFileName(); + int dotIndex = moduleName.indexOf('.'); + moduleName = dotIndex == -1 ? moduleName : moduleName.substring(0, dotIndex); + return moduleName; } } diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/wizards/NewTTCN3ModuleOptionsWizardPage.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/wizards/NewTTCN3ModuleOptionsWizardPage.java index c1f8e5ce2..3fef8afc6 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/wizards/NewTTCN3ModuleOptionsWizardPage.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/wizards/NewTTCN3ModuleOptionsWizardPage.java @@ -1,5 +1,5 @@ /****************************************************************************** - * Copyright (c) 2000-2015 Ericsson Telecom AB + * Copyright (c) 2000-2016 Ericsson Telecom AB * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -7,36 +7,17 @@ ******************************************************************************/ package org.eclipse.titan.designer.wizards; -import org.eclipse.jface.wizard.IWizard; -import org.eclipse.jface.wizard.WizardPage; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Composite; - /** - * @author Kristof Szabados + * @author Kristof Szabados, Jeno Balasko * */ -public final class NewTTCN3ModuleOptionsWizardPage extends WizardPage { - +public final class NewTTCN3ModuleOptionsWizardPage extends NewModuleOptionsWizardPage { private static final String TITLE = "TTCN3 Module creation options"; private static final String DESCRIPTION = "Create the new TTCN3 module according to these options"; - private static final String GEN_EXCLUDED = "Generate as excluded from build"; - private static final String GEN_SKELETON = "Generate with module skeleton inserted"; - - private Composite pageComposite; - private Button excludeFromBuildButton; - private boolean isExcludedFromBuildSelected = false; - private Button generateSkeletonButton; - private boolean isGenerateSkeletonSelected = true; - - public NewTTCN3ModuleOptionsWizardPage() { + + NewTTCN3ModuleOptionsWizardPage() { super(TITLE); } - + @Override public String getDescription() { return DESCRIPTION; @@ -47,59 +28,5 @@ public final class NewTTCN3ModuleOptionsWizardPage extends WizardPage { return TITLE; } - /* - * (non-Javadoc) - * - * @see - * org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt - * .widgets.Composite) - */ - @Override - public void createControl(final Composite parent) { - pageComposite = new Composite(parent, SWT.NONE); - GridLayout layout = new GridLayout(); - pageComposite.setLayout(layout); - GridData data = new GridData(GridData.FILL); - data.grabExcessHorizontalSpace = true; - pageComposite.setLayoutData(data); - - excludeFromBuildButton = new Button(pageComposite, SWT.CHECK); - excludeFromBuildButton.setText(GEN_EXCLUDED); - excludeFromBuildButton.setEnabled(true); - excludeFromBuildButton.setSelection(false); - isExcludedFromBuildSelected = false; - excludeFromBuildButton.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(final SelectionEvent e) { - isExcludedFromBuildSelected = excludeFromBuildButton.getSelection(); - } - }); - - generateSkeletonButton = new Button(pageComposite, SWT.CHECK); - generateSkeletonButton.setText(GEN_SKELETON); - generateSkeletonButton.setEnabled(true); - generateSkeletonButton.setSelection(true); - isGenerateSkeletonSelected = true; - generateSkeletonButton.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(final SelectionEvent e) { - isGenerateSkeletonSelected = generateSkeletonButton.getSelection(); - } - }); - - setControl(pageComposite); - } - - public boolean isExcludeFromBuildSelected() { - return isExcludedFromBuildSelected; - } - - public boolean isGenerateSkeletonSelected() { - return isGenerateSkeletonSelected; - } - - @Override - public void setWizard(final IWizard newWizard) { - super.setWizard(newWizard); - } } + diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/wizards/projectFormat/TITANProjectExporter.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/wizards/projectFormat/TITANProjectExporter.java index 34b14edb7..661c16714 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/wizards/projectFormat/TITANProjectExporter.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/wizards/projectFormat/TITANProjectExporter.java @@ -168,7 +168,7 @@ public final class TITANProjectExporter { project.setPersistentProperty(new QualifiedName(ProjectBuildPropertyData.QUALIFIER, ProjectBuildPropertyData.LOAD_LOCATION),projectFile); } - if( projectFile.startsWith("/")) + if( projectFile.matches("/[a-zA-Z]:.*")) { projectFile = projectFile.substring(1); project.setPersistentProperty(new QualifiedName(ProjectBuildPropertyData.QUALIFIER, @@ -198,7 +198,7 @@ public final class TITANProjectExporter { /** * Saves all project information of "project" into the tpd file given output - * file "projectFile" Prerequites: project and projectFile are set properly + * file "projectFile" Prerequisites: project and projectFile are set properly * * @return true if the save was successful */ @@ -542,9 +542,9 @@ public final class TITANProjectExporter { for (String name : namesArray) { final Element variableRoot = document.createElement(ProjectFormatConstants.PATH_VARIABLE); variablesRoot.appendChild(variableRoot); - // IPath value = pathVariableManager.getValue(name); - URI uri = pathVariableManager.getURIValue(name); - variableRoot.setAttribute("value", uri.toString()); + URI value = pathVariableManager.getURIValue(name); + variableRoot.setAttribute("value", value.toString()); + variableRoot.setAttribute("name", name); } } diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/wizards/projectFormat/TpdImporter.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/wizards/projectFormat/TpdImporter.java index 04e98b670..b97f013c9 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/wizards/projectFormat/TpdImporter.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/wizards/projectFormat/TpdImporter.java @@ -13,7 +13,6 @@ import java.io.IOException; import java.io.InputStream; import java.lang.reflect.InvocationTargetException; import java.net.URI; -import java.net.URISyntaxException; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; @@ -55,6 +54,7 @@ import org.eclipse.jface.window.Window; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.titan.common.logging.ErrorReporter; +import org.eclipse.titan.common.path.TITANPathUtilities; import org.eclipse.titan.common.path.TitanURIUtil; import org.eclipse.titan.common.utils.IOUtils; import org.eclipse.titan.designer.Activator; @@ -121,21 +121,21 @@ public class TpdImporter { } /** - * Internal function used to do the import job. It is needed to extract - * this functionality i order to be able to handle erroneous situations. + * Internal function used to do the import job. It is needed to extract this + * functionality i order to be able to handle erroneous situations. * * @param projectFile - * the file path string of the project descriptor file (tpd) + * the file path string of the project descriptor file (tpd) * @param projectsCreated - * the list of projects created so far. In case of - * problems we will try to delete them. + * the list of projects created so far. In case of problems we + * will try to delete them. * @param monitor - * the monitor used to report progress. + * the monitor used to report progress. * * @return true if the import was successful, false otherwise. * */ - public boolean internalFinish(final String projectFile, final boolean isSkipExistingProjects, final boolean isOpenPropertiesForAllImports, - final List projectsCreated, final IProgressMonitor monitor) { + public boolean internalFinish(final String projectFile, final boolean isSkipExistingProjects, + final boolean isOpenPropertiesForAllImports, final List projectsCreated, final IProgressMonitor monitor) { if (projectFile == null || "".equals(projectFile.trim())) { return false; } @@ -175,13 +175,16 @@ public class TpdImporter { final Schema tpdXsd = getTPDSchema(); tpdValidator = tpdXsd.newValidator(); } catch (Exception e) { - ErrorReporter.INTERNAL_ERROR(e.getMessage());//Hint: cp $TTCN3_DIR/etc/xsd/TPD.xsd designer/schema/ + ErrorReporter.INTERNAL_ERROR(e.getMessage()); + // Hint: cp $TTCN3_DIR/etc/xsd/TPD.xsd designer/schema/ } - IPath projectFilePath = Path.fromOSString(projectFile); - URI projectFileURI = URIUtil.toURI(projectFilePath); - - if (!loadURIDocuments(projectFileURI, null, tpdValidator)) { + URI resolvedProjectFileURI = TITANPathUtilities.convertToAbsoluteURI(projectFile, (URI) null); + //==================================== + // Loading all URI Documents (tpds) + // and collect projects to be imported + //==================================== + if (!loadURIDocuments(resolvedProjectFileURI, null, tpdValidator)) { return false; } @@ -189,12 +192,16 @@ public class TpdImporter { internalMonitor.beginTask("Loading data", 3); IProgressMonitor projectCreationMonitor = new SubProgressMonitor(internalMonitor, 1); projectCreationMonitor.beginTask("Creating required projects", projectsToImport.size()); - + //======================== + // Create projects and + // store load location + // (where they are loaded from) + //======================== Map projectMap = new HashMap(); for (URI file : projectsToImport.keySet()) { Document actualDocument = projectsToImport.get(file); - IProject project = createProject(actualDocument.getDocumentElement(), file.equals(projectFileURI) || !isSkipExistingProjects); + IProject project = createProject(actualDocument.getDocumentElement(), file.equals(resolvedProjectFileURI) || !isSkipExistingProjects); if (project == null) { projectCreationMonitor.worked(1); continue; @@ -202,8 +209,9 @@ public class TpdImporter { projectsCreated.add(project); projectMap.put(file, project); try { - project.setPersistentProperty(new QualifiedName(ProjectBuildPropertyData.QUALIFIER, - ProjectBuildPropertyData.LOAD_LOCATION), file.getPath().toString()); + project.setPersistentProperty( + new QualifiedName(ProjectBuildPropertyData.QUALIFIER, ProjectBuildPropertyData.LOAD_LOCATION), file.getPath() + .toString()); } catch (CoreException e) { ErrorReporter.logExceptionStackTrace("While loading referenced project from `" + file.getPath() + "'", e); } @@ -214,6 +222,9 @@ public class TpdImporter { IProgressMonitor normalInformationLoadingMonitor = new SubProgressMonitor(internalMonitor, 1); normalInformationLoadingMonitor.beginTask("Loading directly stored project information", projectsToImport.size()); + //==================================== + //Load Project Data from all projects: + //==================================== for (URI file : projectsToImport.keySet()) { if (!projectMap.containsKey(file)) { normalInformationLoadingMonitor.worked(1); @@ -233,11 +244,13 @@ public class TpdImporter { normalInformationLoadingMonitor.worked(1); } normalInformationLoadingMonitor.done(); - - IPath mainProjectFileFolderPath = new Path(projectFileURI.getPath()).removeLastSegments(1); + //===================================== + //Load information from packed projects + //===================================== + IPath mainProjectFileFolderPath = new Path(resolvedProjectFileURI.getPath()).removeLastSegments(1); URI mainProjectFileFolderURI = URIUtil.toURI(mainProjectFileFolderPath); - List packedProjects = loadPackedProjects(projectsToImport.get(projectFileURI)); + List packedProjects = loadPackedProjects(projectsToImport.get(resolvedProjectFileURI)); IProgressMonitor packedInformationLoadingMonitor = new SubProgressMonitor(internalMonitor, 1); packedInformationLoadingMonitor.beginTask("Loading packed project information", packedProjects.size()); for (Node node : packedProjects) { @@ -249,10 +262,11 @@ public class TpdImporter { projectsCreated.add(project); try { - project.setPersistentProperty(new QualifiedName(ProjectBuildPropertyData.QUALIFIER, - ProjectBuildPropertyData.LOAD_LOCATION), projectFileURI.toString()); + project.setPersistentProperty( + new QualifiedName(ProjectBuildPropertyData.QUALIFIER, ProjectBuildPropertyData.LOAD_LOCATION), + resolvedProjectFileURI.toString()); } catch (CoreException e) { - ErrorReporter.logExceptionStackTrace("While loading packed project `" + project.getName() + "'",e); + ErrorReporter.logExceptionStackTrace("While loading packed project `" + project.getName() + "'", e); } if (!loadProjectDataFromNode(node, project, mainProjectFileFolderURI)) { @@ -263,7 +277,7 @@ public class TpdImporter { } packedInformationLoadingMonitor.done(); - IProject mainProject = projectMap.get(projectFileURI); + IProject mainProject = projectMap.get(resolvedProjectFileURI); if (mainProject == null) { internalMonitor.done(); return false; @@ -309,7 +323,7 @@ public class TpdImporter { try { job.join(); } catch (InterruptedException e) { - ErrorReporter.logExceptionStackTrace("Interrupted while performing: " + job.getName(),e); + ErrorReporter.logExceptionStackTrace("Interrupted while performing: " + job.getName(), e); } } } @@ -347,7 +361,7 @@ public class TpdImporter { try { ResourcesPlugin.getWorkspace().setDescription(description); } catch (CoreException e) { - ErrorReporter.logExceptionStackTrace("Resetting autobuild settings to" + wasAutoBuilding,e); + ErrorReporter.logExceptionStackTrace("Resetting autobuild settings to" + wasAutoBuilding, e); } } Activator.getDefault().resumeHandlingResourceChanges(); @@ -357,7 +371,7 @@ public class TpdImporter { * Collects the list of packed projects from the provided document. * * @param document - * the document to check. + * the document to check. * * @return the list of found packed projects, an empty list if none. * */ @@ -381,16 +395,14 @@ public class TpdImporter { } /** - * Loads the project data from the provided node onto the provided - * project. + * Loads the project data from the provided node onto the provided project. * * @param mainElement - * the node to load the data from. + * the node to load the data from. * @param project - * the project to set the loaded data on. + * the project to set the loaded data on. * @param projectFileFolderURI - * the URI of the folder to calculate all paths relative - * to. + * the URI of the folder to calculate all paths relative to. * * @return true if the import was successful, false otherwise. * */ @@ -438,10 +450,9 @@ public class TpdImporter { * Load the data related to project references. * * @param referencedProjectsNode - * the node containing information on referenced - * projects. + * the node containing information on referenced projects. * @param project - * the project to set the data on. + * the project to set the data on. * * @return true if the import was successful, false otherwise. * */ @@ -459,9 +470,8 @@ public class TpdImporter { } Node nameNode = attributeMap.getNamedItem(ProjectFormatConstants.REFERENCED_PROJECT_NAME_ATTRIBUTE); if (nameNode == null) { - displayError("Import failed", - "Error while importing project " + project.getName() + " the name attribute of the " - + i + " th referenced project is missing"); + displayError("Import failed", "Error while importing project " + project.getName() + " the name attribute of the " + i + + " th referenced project is missing"); return false; } @@ -472,6 +482,7 @@ public class TpdImporter { IProject tempProject = ResourcesPlugin.getWorkspace().getRoot().getProject(realProjectName); referencedProjects.add(tempProject); } else { + //already existing projects: IProject tempProject = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName); referencedProjects.add(tempProject); } @@ -481,7 +492,7 @@ public class TpdImporter { description.setReferencedProjects(referencedProjects.toArray(new IProject[referencedProjects.size()])); project.setDescription(description, null); } catch (CoreException e) { - ErrorReporter.logExceptionStackTrace("While setting project references for `" + project.getName() + "'",e); + ErrorReporter.logExceptionStackTrace("While setting project references for `" + project.getName() + "'", e); return false; } @@ -492,11 +503,11 @@ public class TpdImporter { * Load the information describing folders. * * @param foldersNode - * the node to load from. + * the node to load from. * @param project - * the project to set this information on. + * the project to set this information on. * @param projectFileFolderURI - * the location of the project file's folder. + * the location of the project file's folder. * * @return true if the import was successful, false otherwise. * */ @@ -515,10 +526,8 @@ public class TpdImporter { } Node projectRelativePathNode = attributeMap.getNamedItem(ProjectFormatConstants.FOLDER_ECLIPSE_LOCATION_NODE); if (projectRelativePathNode == null) { - displayError("Import failed", - "Error while importing project " + project.getName() - + " the project relative path attribute of the " + i - + " th folder is missing"); + displayError("Import failed", "Error while importing project " + project.getName() + + " the project relative path attribute of the " + i + " th folder is missing"); return false; } @@ -528,36 +537,59 @@ public class TpdImporter { Node rawURINode = attributeMap.getNamedItem(ProjectFormatConstants.FOLDER_RAW_LOCATION); IFolder folder = project.getFolder(projectRelativePath); - try { - if (relativeURINode != null) { - String relativeLocation = relativeURINode.getTextContent(); - - URI locationuri; - try { - locationuri = org.eclipse.core.runtime.URIUtil.fromString(relativeLocation); - } catch (URISyntaxException e) { - continue; - } - URI absoluteURI = org.eclipse.core.runtime.URIUtil.makeAbsolute(locationuri, projectFileFolderURI); - - if (TitanURIUtil.isPrefix(projectLocationURI, absoluteURI)) { - folder.create(false, true, null); + if (!folder.exists()) { + try { + if (relativeURINode != null) { + String relativeLocation = relativeURINode.getTextContent(); + URI absoluteURI = TITANPathUtilities.convertToAbsoluteURI(relativeLocation, projectFileFolderURI); + if (absoluteURI == null) { + // The URI cannot be resolved - for example it + // contains not existing environment variables + continue; + } + if (TitanURIUtil.isPrefix(projectLocationURI, absoluteURI)) { + folder.create(false, true, null); + } else { + File tmpFolder = new File(absoluteURI); + if (tmpFolder.exists()) { + folder.createLink(absoluteURI, IResource.ALLOW_MISSING_LOCAL, null); + } else { + ErrorReporter.logError("Error while importing folders into project `" + project.getName() + "'. Folder `" + + absoluteURI + "' does not exist"); + continue; + } + } + } else if (rawURINode != null) { + String rawLocation = rawURINode.getTextContent(); + URI absoluteURI = TITANPathUtilities.convertToAbsoluteURI(rawLocation, projectFileFolderURI); + if (TitanURIUtil.isPrefix(projectLocationURI, absoluteURI)) { + folder.create(false, true, null); + } else { + File tmpFolder = new File(absoluteURI); + if (tmpFolder.exists()) { + folder.createLink(absoluteURI, IResource.ALLOW_MISSING_LOCAL, null); + } else { + ErrorReporter.logError("Error while importing folders into project `" + project.getName() + "'. Folder `" + + absoluteURI + "' does not exist"); + continue; + } + } } else { - folder.createLink(absoluteURI, IResource.ALLOW_MISSING_LOCAL, null); + TITANDebugConsole + .getConsole() + .newMessageStream() + .println( + "Cannot create the resource " + folder.getFullPath().toString() + + " the location information is missing or corrupted"); } - } else if (rawURINode != null) { - String rawURI = rawURINode.getTextContent(); - folder.createLink(URI.create(rawURI), IResource.ALLOW_MISSING_LOCAL, null); - } else { - TITANDebugConsole.getConsole().newMessageStream() - .println("Can not create the resource " + folder.getFullPath().toString() - + " the location information is missing or corrupted"); + } catch (CoreException e) { + ErrorReporter.logExceptionStackTrace("While creating folder `" + folder.getName() + "'", e); } - } catch (CoreException e) { - ErrorReporter.logExceptionStackTrace("While creating folder `" + folder.getName() + "'",e); + } else { + ErrorReporter.logWarning("Folder to be imported `" + folder.getName() + "' already exists in project `" + project.getName() + + "'"); } } - return true; } @@ -565,11 +597,11 @@ public class TpdImporter { * Load the information describing files. * * @param filesNode - * the node to load from. + * the node to load from. * @param project - * the project to set this information on. + * the project to set this information on. * @param projectFileFolderURI - * the location of the project file's folder. + * the location of the project file's folder. * * @return true if the import was successful, false otherwise. * */ @@ -587,10 +619,9 @@ public class TpdImporter { } Node projectRelativePathNode = attributeMap.getNamedItem(ProjectFormatConstants.FILE_ECLIPSE_LOCATION_NODE); if (projectRelativePathNode == null) { - displayError("Import failed", - "Error while importing project " + project.getName() + " some attributes of the " - + i + " th file are missing"); - return false; + displayError("Import failed", "Error while importing project " + project.getName() + " some attributes of the " + i + + " th file are missing"); + continue; } String projectRelativePath = projectRelativePathNode.getTextContent(); @@ -603,26 +634,44 @@ public class TpdImporter { try { if (relativeURINode != null) { String relativeLocation = relativeURINode.getTextContent(); - - URI locationuri; - try { - locationuri = org.eclipse.core.runtime.URIUtil.fromString(relativeLocation); - } catch (URISyntaxException e) { + URI absoluteURI = TITANPathUtilities.convertToAbsoluteURI(relativeLocation, projectFileFolderURI); + if (absoluteURI == null) { + continue; + } + File file = new File(absoluteURI); + if (file.exists()) { + targetFile.createLink(absoluteURI, IResource.ALLOW_MISSING_LOCAL, null); + } else { + ErrorReporter.logError("Error while importing files into project `" + project.getName() + "'. File `" + + absoluteURI + "' does not exist"); continue; } - URI absoluteURI = org.eclipse.core.runtime.URIUtil.makeAbsolute(locationuri, projectFileFolderURI); - - targetFile.createLink(absoluteURI, IResource.ALLOW_MISSING_LOCAL, null); } else if (rawURINode != null) { String rawURI = rawURINode.getTextContent(); - targetFile.createLink(URI.create(rawURI), IResource.ALLOW_MISSING_LOCAL, null); + URI absoluteURI = TITANPathUtilities.convertToAbsoluteURI(rawURI, projectFileFolderURI); + if (absoluteURI == null) { + continue; + } + File file = new File(absoluteURI); + if (file.exists()) { + targetFile.createLink(absoluteURI, IResource.ALLOW_MISSING_LOCAL, null); + } else { + ErrorReporter.logError("Error while importing files into project `" + project.getName() + "'. File `" + + absoluteURI + "' does not exist"); + continue; + } } else { - TITANDebugConsole.getConsole().newMessageStream() - .println("Can not create the resource " + targetFile.getFullPath().toString() - + " the location information is missing or corrupted"); + TITANDebugConsole + .getConsole() + .newMessageStream() + .println( + "Can not create the resource " + targetFile.getFullPath().toString() + + " the location information is missing or corrupted"); + continue; } } catch (CoreException e) { - ErrorReporter.logExceptionStackTrace("While creating link for `" + targetFile + "'",e); + ErrorReporter.logExceptionStackTrace("While creating link for `" + targetFile + "'", e); + return false; } } } @@ -634,10 +683,9 @@ public class TpdImporter { * Load the information on path variables. * * @param rootNode - * the node to load from. + * the node to load from. * @param projectName - * the name of the project to be used on the user - * interface. + * the name of the project to be used on the user interface. * * @return true if the import was successful, false otherwise. * */ @@ -659,9 +707,8 @@ public class TpdImporter { Node valueNode = attributeMap.getNamedItem("value"); if (nameNode == null || valueNode == null) { - displayError("Import failed", - "Error while importing project " + projectName - + " some attributes of a path variable are missing"); + displayError("Import failed", "Error while importing project " + projectName + + " some attributes of a path variable are missing"); return false; } @@ -672,7 +719,7 @@ public class TpdImporter { try { pathVariableManager.setValue(variableName, new Path(variableValue)); } catch (CoreException e) { - ErrorReporter.logExceptionStackTrace("While setting path variable `" + variableName + "' in headless mode",e); + ErrorReporter.logExceptionStackTrace("While setting path variable `" + variableName + "' in headless mode", e); } } else { Display.getDefault().syncExec(new Runnable() { @@ -682,8 +729,8 @@ public class TpdImporter { if (pathVariableManager.isDefined(variableName)) { IPath path = pathVariableManager.getValue(variableName); if (!variableValue.equals(path.toString())) { - EditPathVariableDialog dialog = new EditPathVariableDialog(shell, - variableName, path, new Path(variableValue)); + EditPathVariableDialog dialog = new EditPathVariableDialog(shell, variableName, path, new Path( + variableValue)); if (Window.OK == dialog.open()) { IPath actualValue = dialog.getActualValue(); pathVariableManager.setValue(variableName, actualValue); @@ -692,8 +739,7 @@ public class TpdImporter { } else { // check whether we have non null shell if (shell != null) { - NewPathVariableDialog dialog = new NewPathVariableDialog(shell, variableName, - new Path(variableValue)); + NewPathVariableDialog dialog = new NewPathVariableDialog(shell, variableName, new Path(variableValue)); if (Window.OK == dialog.open()) { IPath actualValue = dialog.getActualValue(); pathVariableManager.setValue(variableName, actualValue); @@ -701,7 +747,7 @@ public class TpdImporter { } } } catch (CoreException e) { - ErrorReporter.logExceptionStackTrace("While setting path variable `" + variableName + "' in GUI mode",e); + ErrorReporter.logExceptionStackTrace("While setting path variable `" + variableName + "' in GUI mode", e); } } }); @@ -710,18 +756,15 @@ public class TpdImporter { return true; } - - /** * Loads the configuration related options onto the project from the * document being loaded. * * @param project - * the project to load onto. + * the project to load onto. * @param mainNodes - * the mainNodes to check for the configuration related - * options. + * the mainNodes to check for the configuration related options. * * @return true if the import was successful, false otherwise. * */ @@ -742,7 +785,7 @@ public class TpdImporter { "While setting `" + activeConfiguration + "' as configuration for project `" + project.getName() + "'", e); } - // Remove possible target configuration nodes in existance + // Remove possible target configuration nodes in existence removeConfigurationNodes(targetDocument.getDocumentElement()); Node configurationsNode = ProjectFileHandler.getNodebyName(mainNodes, ProjectFormatConstants.CONFIGURATIONS_NODE); @@ -766,9 +809,8 @@ public class TpdImporter { } Node nameNode = attributeMap.getNamedItem(ProjectFormatConstants.CONFIGURATION_NAME_ATTRIBUTE); if (nameNode == null) { - displayError("Import failed", - "Error while importing project " + project.getName() - + " the name attribute of a referenced project is missing"); + displayError("Import failed", "Error while importing project " + project.getName() + + " the name attribute of a referenced project is missing"); return false; } @@ -786,7 +828,7 @@ public class TpdImporter { } ProjectDocumentHandlingUtility.saveDocument(project); - ProjectBuildPropertyData.setProjectAlreadyExported(project,false); + ProjectBuildPropertyData.setProjectAlreadyExported(project, false); ProjectFileHandler handler = new ProjectFileHandler(project); handler.loadProjectSettingsFromDocument(targetDocument); @@ -798,7 +840,7 @@ public class TpdImporter { * handling configuration data. * * @param rootNode - * the node to use. + * the node to use. * */ private void removeConfigurationNodes(final Node rootNode) { NodeList rootNodeList = rootNode.getChildNodes(); @@ -826,14 +868,13 @@ public class TpdImporter { } /** - * Copies the configuration related data from the source node, to the - * target node. + * Copies the configuration related data from the source node, to the target + * node. * * @param targetRoot - * the node where the configuration data should be moved - * to. + * the node where the configuration data should be moved to. * @param sourceRoot - * the node from where the configuration data is moved. + * the node from where the configuration data is moved. * */ private void copyConfigurationData(final Element targetRoot, final Node sourceRoot) { final Document document = targetRoot.getOwnerDocument(); @@ -842,8 +883,7 @@ public class TpdImporter { for (int i = 0, size = rootList.getLength(); i < size; i++) { Node tempNode = rootList.item(i); String nodeName = tempNode.getNodeName(); - if (ProjectFileHandler.PROJECTPROPERTIESXMLNODE.equals(nodeName) - || ProjectFileHandler.FOLDERPROPERTIESXMLNODE.equals(nodeName) + if (ProjectFileHandler.PROJECTPROPERTIESXMLNODE.equals(nodeName) || ProjectFileHandler.FOLDERPROPERTIESXMLNODE.equals(nodeName) || ProjectFileHandler.FILEPROPERTIESXMLNODE.equals(nodeName)) { targetNode = document.importNode(tempNode, true); ProjectFileHandler.clearNode(targetNode); @@ -903,15 +943,25 @@ public class TpdImporter { } String originalProjectName = projectNameNode.getFirstChild().getTextContent(); String projectName = originalProjectName; - finalProjectNames.put(originalProjectName, projectName); IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName); if (project.exists()) { + if (!treatExistingProjectAsError || headless) { - ErrorReporter.logWarning("A project with the name " + projectName + " already exists, skipping it !"); + + if(!project.isOpen()) { + try { + project.open(null); + } catch(CoreException e) { + ErrorReporter.logError("An existing project with the name " + projectName + " cannot be opened!"); + } + } + ErrorReporter.logWarning("A project with the name " + projectName + " already exists, skipping it!"); + //It will be skipped => return null; } - + //Error dialog: + //gets a new project name instead of the existing one: ProjectSelector temp = new ProjectSelector(projectName); Display.getDefault().syncExec(temp); if (temp.cancelled) { @@ -933,7 +983,7 @@ public class TpdImporter { try { TITANNature.addTITANBuilderToProject(project); } catch (CoreException e) { - ErrorReporter.logExceptionStackTrace("While adding builder to `" + project.getName() + "'",e); + ErrorReporter.logExceptionStackTrace("While adding builder to `" + project.getName() + "'", e); } return project; @@ -941,16 +991,15 @@ public class TpdImporter { /** * Load the project information document from the provided file and - * recursively for all project files mentioned in the referenced - * projects section. + * recursively for all project files mentioned in the referenced projects + * section. * * @param file - * the file to load the data from. + * the file to load the data from. * @param source - * the source file referencing the target, or null if - * none. + * the source file referencing the target, or null if none - NOT USED, TO BE REMOVED * @param validator - * the xml validator. can be null + * the xml validator. can be null * * @return true if there were no errors, false otherwise. * */ @@ -981,7 +1030,8 @@ public class TpdImporter { try { validator.validate(new StreamSource(new File(file))); } catch (final Exception e) { - ErrorReporter.logExceptionStackTrace("Error while importing from file " + file + ": " + System.getProperty("line.separator"), e); + ErrorReporter.logExceptionStackTrace( + "Error while importing from file " + file + ": " + System.getProperty("line.separator"), e); return false; } } @@ -997,6 +1047,7 @@ public class TpdImporter { return true; } + // === Get referenced projects === final IPath projectFileFolderPath = new Path(file.getPath()).removeLastSegments(1); NodeList referencedProjectsList = referencedProjectsNode.getChildNodes(); boolean result = true; @@ -1011,9 +1062,8 @@ public class TpdImporter { } Node nameNode = attributeMap.getNamedItem(ProjectFormatConstants.REFERENCED_PROJECT_NAME_ATTRIBUTE); if (nameNode == null) { - displayError("Import failed", - "Error while importing from file " + file - + " the name attribute of a referenced project is missing"); + displayError("Import failed", "Error while importing from file " + file + + " the name attribute of a referenced project is missing"); return false; } @@ -1021,25 +1071,18 @@ public class TpdImporter { Node locationNode = attributeMap.getNamedItem(ProjectFormatConstants.REFERENCED_PROJECT_LOCATION_ATTRIBUTE); if (locationNode == null) { displayError("Import failed", "Error while importing from file " + file - + " the location attribute of the referenced project " + projectName - + " is not given."); + + " the location attribute of the referenced project " + projectName + " is not given."); return false; } - String relativeLocation = locationNode.getTextContent(); + String unresolvedProjectLocationURI = locationNode.getTextContent(); - URI locationuri = null; - try { - locationuri = org.eclipse.core.runtime.URIUtil.fromString(relativeLocation); - } catch (URISyntaxException e) { - ErrorReporter.logExceptionStackTrace("While converting relative location from `" + relativeLocation + "'",e); - return false; - } - URI absoluteURI = org.eclipse.core.runtime.URIUtil.makeAbsolute(locationuri, URIUtil.toURI(projectFileFolderPath)); - if (!"file".equals(absoluteURI.getScheme())) { + URI absoluteURI = TITANPathUtilities.convertToAbsoluteURI(unresolvedProjectLocationURI, URIUtil.toURI(projectFileFolderPath)); + + if (absoluteURI!=null && !"file".equals(absoluteURI.getScheme())) { final StringBuilder builder = new StringBuilder( - "Loading of project information is only supported for local files right now. " - + absoluteURI.toString() + " could not be loaded\n"); + "Loading of project information is only supported for local files right now. " + absoluteURI.toString() + + " could not be loaded\n"); for (int j = importChain.size() - 1; j >= 0; --j) { builder.append("imported by: '"); builder.append(importChain.get(j).toString()); @@ -1050,7 +1093,10 @@ public class TpdImporter { } importChain.add(file); - result &= loadURIDocuments(absoluteURI, file, validator); +// if( !projectsWithUnresolvedName.containsKey(absoluteURI) ) { +// projectsWithUnresolvedName.put(absoluteURI, unresolvedProjectLocationURI); +// } + result &= loadURIDocuments(absoluteURI, null, validator); importChain.remove(importChain.size() - 1); } @@ -1068,7 +1114,7 @@ public class TpdImporter { * Extracts an XML document from the provided file. * * @param file - * the file to read from. + * the file to read from. * @return the extracted XML document, or null if there were some error. * */ public Document getDocumentFromFile(final String file) { @@ -1080,7 +1126,7 @@ public class TpdImporter { document = parser.parse(lsInput); istream.close(); } catch (Exception e) { - ErrorReporter.logExceptionStackTrace("While getting the document from `" + file + "'",e); + ErrorReporter.logExceptionStackTrace("While getting the document from `" + file + "'", e); } return document; @@ -1098,9 +1144,9 @@ public class TpdImporter { final IProjectDescription description = workspace.newProjectDescription(name); /* - * A new project description in normal conditions does not - * contain any natures but as internal behavior tends to change - * without notification we can not rely on it. + * A new project description in normal conditions does not contain any + * natures but as internal behavior tends to change without notification + * we can not rely on it. */ List newIds = new ArrayList(); newIds.addAll(Arrays.asList(description.getNatureIds())); @@ -1150,18 +1196,16 @@ public class TpdImporter { * Creating a new project. * * @param description - * - IProjectDescription that belongs to the newly - * created project. + * - IProjectDescription that belongs to the newly created + * project. * @param projectHandle - * - a project handle that is used to create the new - * project. + * - a project handle that is used to create the new project. * @param monitor - * - reference to the monitor object + * - reference to the monitor object * @exception CoreException - * thrown if access to the resources throws a - * CoreException. + * thrown if access to the resources throws a CoreException. * @exception OperationCanceledException - * if the operation was canceled by the user. + * if the operation was canceled by the user. */ protected void createProject(final IProjectDescription description, final IProject projectHandle, final IProgressMonitor monitor) throws CoreException { diff --git a/org.eclipse.titan.executor/META-INF/MANIFEST.MF b/org.eclipse.titan.executor/META-INF/MANIFEST.MF index a9d4146b2..767f645e7 100755 --- a/org.eclipse.titan.executor/META-INF/MANIFEST.MF +++ b/org.eclipse.titan.executor/META-INF/MANIFEST.MF @@ -4,7 +4,7 @@ Created-By: 23.6-b04 (Oracle Corporation) Bundle-ManifestVersion: 2 Bundle-Name: TITAN_Executor Plug-in Bundle-SymbolicName: org.eclipse.titan.executor;singleton:=true -Bundle-Version: 5.4.0.CRL_113_200_5_R4A_20151030-1100 +Bundle-Version: 5.4.2.CRL_113_200_5_R4C_20160105-1100 Bundle-Activator: org.eclipse.titan.executor.Activator Require-Bundle: org.eclipse.ui, org.eclipse.core.runtime, @@ -14,7 +14,7 @@ Require-Bundle: org.eclipse.ui, org.eclipse.core.variables, org.eclipse.debug.ui, org.eclipse.core.expressions, - org.eclipse.titan.common;bundle-version="5.4.0" + org.eclipse.titan.common;bundle-version="5.4.1" Bundle-ActivationPolicy: lazy Eclipse-LazyStart: true Bundle-Vendor: Eclipse Titan Project diff --git a/org.eclipse.titan.executor/src/org/eclipse/titan/executor/executors/BaseExecutor.java b/org.eclipse.titan.executor/src/org/eclipse/titan/executor/executors/BaseExecutor.java index dd3d4fae1..50b84d09e 100644 --- a/org.eclipse.titan.executor/src/org/eclipse/titan/executor/executors/BaseExecutor.java +++ b/org.eclipse.titan.executor/src/org/eclipse/titan/executor/executors/BaseExecutor.java @@ -139,6 +139,7 @@ public abstract class BaseExecutor { protected boolean verdictExtraction; protected boolean keepTemporarilyGeneratedConfigFiles; protected boolean logFileNameDefined = false; + protected String mLogFileName = null; protected boolean logFilesMerged = false; protected String mcPort; @@ -451,10 +452,7 @@ public abstract class BaseExecutor { return; } - if (!logFileNameDefined) { - mergeLogFiles(); - return; // resources are refreshed during the merge - } + mergeLogFiles(); if (project == null) { return; @@ -600,26 +598,53 @@ public abstract class BaseExecutor { protected abstract String getDefaultLogFileName(); /** - * Creates the content of the configuration file - * @return the generated cfg string + * @return the relative directory path of the default log file from the preferences */ - protected String generateCfgString() { - StringBuilder builder = new StringBuilder(); + private String getDefaultLogFileDir() { + //TODO + /* final IPreferenceStore preferenceStore = Activator.getDefault().getPreferenceStore(); String logFolder = getOverlayedPreferenceValue(preferenceStore, project, PreferenceConstants.EXECUTOR_PREFERENCE_PAGE_ID, PreferenceConstants.SET_LOG_FOLDER); if (!logFileNameDefined && Boolean.parseBoolean(logFolder)) { - String workingDirRelative = getOverlayedPreferenceValue(preferenceStore, project, + return getOverlayedPreferenceValue(preferenceStore, project, PreferenceConstants.EXECUTOR_PREFERENCE_PAGE_ID, PreferenceConstants.LOG_FOLDER_PATH_NAME); - - if (workingDirRelative != null && workingDirRelative.length() != 0) { - builder.append("\n//This part was added by the TITAN Executor.\n"); - builder.append("[LOGGING]\n"); - builder.append("LogFile := "); - builder.append("\"" + "." + IPath.SEPARATOR + workingDirRelative + IPath.SEPARATOR); - builder.append(getDefaultLogFileName()); - builder.append("\"\n\n"); - } + } + return null; + */ + // log files are created in the bin (actual) directory + // until temporary cfg file creation is fixed: + // - ../log/MyExample-%n.log file is set as LogFile if it's not provided by the input cfg file + return "."; + } + + /** + * @return the relative path of the log dir (from the cfg file, or the default from the preferences) + */ + private String getLogDir() { + if ( this.logFileNameDefined && mLogFileName != null ) { + File file = new File(mLogFileName); + String parent = file.getParent(); + return parent != null ? parent : ""; + } + + return this.getDefaultLogFileDir(); + } + + /** + * Creates the content of the configuration file + * @return the generated cfg string + */ + protected String generateCfgString() { + StringBuilder builder = new StringBuilder(); + String workingDirRelative = getDefaultLogFileDir(); + if (workingDirRelative != null && workingDirRelative.length() != 0) { + builder.append("\n//This part was added by the TITAN Executor.\n"); + builder.append("[LOGGING]\n"); + builder.append("LogFile := "); + builder.append("\"" + "." + IPath.SEPARATOR + workingDirRelative + IPath.SEPARATOR); + builder.append(getDefaultLogFileName()); + builder.append("\"\n\n"); } return builder.toString(); } @@ -649,7 +674,7 @@ public abstract class BaseExecutor { configHandler.setEnvMap(env); configHandler.processASTs(); logFileNameDefined = configHandler.isLogFileNameDefined(); - + mLogFileName = configHandler.getLogFileName(); return configHandler; } @@ -658,14 +683,14 @@ public abstract class BaseExecutor { */ protected void deleteLogFiles() { final IPreferenceStore preferenceStore = Activator.getDefault().getPreferenceStore(); - if (logFileNameDefined - ||!isLogFolderSet(preferenceStore) - || !isDeleteLogFilesSet(preferenceStore)) { + if ( !isDeleteLogFilesSet( preferenceStore ) ) { return; } - String workingDirRelative = getOverlayedPreferenceValue( - preferenceStore, project, PreferenceConstants.EXECUTOR_PREFERENCE_PAGE_ID, PreferenceConstants.LOG_FOLDER_PATH_NAME); + String workingDirRelative = getLogDir(); + if ( workingDirRelative == null ) { + return; + } String logFileFolder = workingdirectoryPath + File.separator + workingDirRelative + File.separator; Path path = new Path(logFileFolder); @@ -716,20 +741,20 @@ public abstract class BaseExecutor { * Merges the generated log files together. */ protected void mergeLogFiles() { - if (logFilesMerged) { + if (logFilesMerged) { return; } else { logFilesMerged = true; } final IPreferenceStore preferenceStore = Activator.getDefault().getPreferenceStore(); - if (!isLogFolderSet(preferenceStore) - || !isAutomaticMergeEnabled(preferenceStore)) { + if ( !isAutomaticMergeEnabled( preferenceStore ) ) { return; } - String workingDirRelative = getOverlayedPreferenceValue( - preferenceStore, project, PreferenceConstants.EXECUTOR_PREFERENCE_PAGE_ID, PreferenceConstants.LOG_FOLDER_PATH_NAME); - //old: preferenceStore.getString(PreferenceConstants.LOG_FOLDER_PATH_NAME); + String workingDirRelative = getLogDir(); + if ( workingDirRelative == null ) { + return; + } String logFileFolder = workingdirectoryPath + File.separator + workingDirRelative + File.separator; Path path = new Path(logFileFolder); diff --git a/org.eclipse.titan.executor/src/org/eclipse/titan/executor/executors/TitanLaunchConfigurationDelegate.java b/org.eclipse.titan.executor/src/org/eclipse/titan/executor/executors/TitanLaunchConfigurationDelegate.java index e713a4d84..5f292d144 100644 --- a/org.eclipse.titan.executor/src/org/eclipse/titan/executor/executors/TitanLaunchConfigurationDelegate.java +++ b/org.eclipse.titan.executor/src/org/eclipse/titan/executor/executors/TitanLaunchConfigurationDelegate.java @@ -37,6 +37,7 @@ public abstract class TitanLaunchConfigurationDelegate extends LaunchConfigurati protected IProject[] getBuildOrder(final ILaunchConfiguration configuration, final String mode) throws CoreException { IResource[] resources = configuration.getMappedResources(); + if( resources == null) { return null; } final List result = new ArrayList(); for (final IResource resource : resources) { if (resource instanceof IProject) { diff --git a/org.eclipse.titan.executor/src/org/eclipse/titan/executor/executors/jni/LaunchConfigurationDelegate.java b/org.eclipse.titan.executor/src/org/eclipse/titan/executor/executors/jni/LaunchConfigurationDelegate.java index d0ece5845..00c6554ea 100644 --- a/org.eclipse.titan.executor/src/org/eclipse/titan/executor/executors/jni/LaunchConfigurationDelegate.java +++ b/org.eclipse.titan.executor/src/org/eclipse/titan/executor/executors/jni/LaunchConfigurationDelegate.java @@ -24,8 +24,8 @@ import org.eclipse.titan.executor.jni.JNIMiddleWare; public final class LaunchConfigurationDelegate extends TitanLaunchConfigurationDelegate { /** { ttcn3_major, ttcn3_minor, ttcn3_patchlevel, ttcn3_buildnumber } */ - private final ProductIdentity versionLow = ProductIdentity.getProductIdentity(ProductIdentity.TITAN_PRODUCT_NUMBER, 5, 4, 0, 0); - private final ProductIdentity versionHigh = ProductIdentity.getProductIdentity(ProductIdentity.TITAN_PRODUCT_NUMBER, 5, 4, 0, 0); + private final ProductIdentity versionLow = ProductIdentity.getProductIdentity(ProductIdentity.TITAN_PRODUCT_NUMBER, 5, 4, 2, 0); + private final ProductIdentity versionHigh = ProductIdentity.getProductIdentity(ProductIdentity.TITAN_PRODUCT_NUMBER, 5, 4, 2, 0); @Override public void launch(final ILaunchConfiguration arg0, final String arg1, final ILaunch arg2, final IProgressMonitor arg3) throws CoreException { diff --git a/org.eclipse.titan.executor/src/org/eclipse/titan/executor/preferences/PreferenceInitializer.java b/org.eclipse.titan.executor/src/org/eclipse/titan/executor/preferences/PreferenceInitializer.java index 853f5dd07..d15b5a70b 100644 --- a/org.eclipse.titan.executor/src/org/eclipse/titan/executor/preferences/PreferenceInitializer.java +++ b/org.eclipse.titan.executor/src/org/eclipse/titan/executor/preferences/PreferenceInitializer.java @@ -9,7 +9,6 @@ package org.eclipse.titan.executor.preferences; import java.io.File; -import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.titan.executor.Activator; diff --git a/org.eclipse.titan.help/META-INF/MANIFEST.MF b/org.eclipse.titan.help/META-INF/MANIFEST.MF index c8125b4d0..c7d6157a6 100755 --- a/org.eclipse.titan.help/META-INF/MANIFEST.MF +++ b/org.eclipse.titan.help/META-INF/MANIFEST.MF @@ -4,6 +4,6 @@ Created-By: 23.6-b04 (Oracle Corporation) Bundle-ManifestVersion: 2 Bundle-Name: TITAN_Help Plug-in Bundle-SymbolicName: org.eclipse.titan.help;singleton:=true -Bundle-Version: 5.4.0.CRL_113_200_5_R4A_20151030-1100 +Bundle-Version: 5.4.2.CRL_113_200_5_R4C_20160105-1100 Bundle-Vendor: Eclipse Titan Project diff --git a/org.eclipse.titan.log.viewer/META-INF/MANIFEST.MF b/org.eclipse.titan.log.viewer/META-INF/MANIFEST.MF index 85e63748d..9ab2f59d2 100755 --- a/org.eclipse.titan.log.viewer/META-INF/MANIFEST.MF +++ b/org.eclipse.titan.log.viewer/META-INF/MANIFEST.MF @@ -4,7 +4,7 @@ Created-By: 23.6-b04 (Oracle Corporation) Bundle-ManifestVersion: 2 Bundle-Name: TITAN Log Viewer Bundle-SymbolicName: org.eclipse.titan.log.viewer;singleton:=true -Bundle-Version: 5.4.0.CRL_113_200_5_R4A_20151030-1100 +Bundle-Version: 5.4.2.CRL_113_200_5_R4C_20160105-1100 Bundle-Activator: org.eclipse.titan.log.viewer.Activator Bundle-Vendor: Eclipse Titan Project Require-Bundle: org.eclipse.core.resources, @@ -17,7 +17,7 @@ Require-Bundle: org.eclipse.core.resources, org.eclipse.jface.text, org.eclipse.ui.editors, org.eclipse.ui.workbench.texteditor, - org.eclipse.titan.common;bundle-version="5.4.0" + org.eclipse.titan.common;bundle-version="5.4.2" Bundle-ActivationPolicy: lazy Eclipse-LazyStart: true Bundle-ClassPath: . diff --git a/org.eclipse.titan.regressiontests/META-INF/MANIFEST.MF b/org.eclipse.titan.regressiontests/META-INF/MANIFEST.MF index f30dbf7b8..32cf471b2 100644 --- a/org.eclipse.titan.regressiontests/META-INF/MANIFEST.MF +++ b/org.eclipse.titan.regressiontests/META-INF/MANIFEST.MF @@ -2,8 +2,8 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Test_fragment Fragment Bundle-SymbolicName: org.eclipse.titan.regressiontests;singleton:=true -Bundle-Version: 5.4.0.CRL_113_200_5_R4A_20151030-1100 -Fragment-Host: org.eclipse.titan.designer;bundle-version="5.4.0.CRL_113_200_5_R4A_20151030-1100" +Bundle-Version: 5.4.1.CRL_113_200_5_R4B_20151202-1100 +Fragment-Host: org.eclipse.titan.designer;bundle-version="5.4.1.CRL_113_200_5_R4B_20151202-1100" Require-Bundle: org.eclipse.ui, org.eclipse.core.resources, org.junit diff --git a/org.eclipse.titan.regressiontests/src/org/eclipse/titan/regressiontests/common/cfg/ConfigFileTest.java b/org.eclipse.titan.regressiontests/src/org/eclipse/titan/regressiontests/common/cfg/ConfigFileTest.java index 732494f36..8bda261f5 100644 --- a/org.eclipse.titan.regressiontests/src/org/eclipse/titan/regressiontests/common/cfg/ConfigFileTest.java +++ b/org.eclipse.titan.regressiontests/src/org/eclipse/titan/regressiontests/common/cfg/ConfigFileTest.java @@ -18,7 +18,7 @@ public class ConfigFileTest { @Test public void configFileParserTest() { - Designer_plugin_tests.checkSyntaxMarkersOnFile(config_cfg_initializer(), "bin/config.cfg"); + Designer_plugin_tests.checkSyntaxMarkersOnFile(config_cfg_initializer(), "cfg/config.cfg"); } private ArrayList config_cfg_initializer() { diff --git a/org.eclipse.titanium/META-INF/MANIFEST.MF b/org.eclipse.titanium/META-INF/MANIFEST.MF index 0b8cca21f..18d02f7e7 100644 --- a/org.eclipse.titanium/META-INF/MANIFEST.MF +++ b/org.eclipse.titanium/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Titanium Bundle-SymbolicName: org.eclipse.titanium;singleton:=true -Bundle-Version: 5.4.0.CRL_113_200_5_R4A_20151030-1100 +Bundle-Version: 5.4.2.CRL_113_200_5_R4C_20160105-1100 Bundle-Activator: org.eclipse.titanium.Activator Bundle-Vendor: Eclipse Titan Project Require-Bundle: org.eclipse.ui, @@ -14,8 +14,8 @@ Require-Bundle: org.eclipse.ui, org.eclipse.core.runtime, org.eclipse.ltk.core.refactoring, org.eclipse.ui.forms, - org.eclipse.titan.common;bundle-version="5.4.0", - org.eclipse.titan.designer;bundle-version="5.4.0", + org.eclipse.titan.common;bundle-version="5.4.2", + org.eclipse.titan.designer;bundle-version="5.4.2", org.eclipse.core.filesystem;bundle-version="1.3.200", org.eclipse.core.resources, org.apache.poi;bundle-version="3.9.0" diff --git a/org.eclipse.titanium/docs/referenceguide.docx b/org.eclipse.titanium/docs/referenceguide.docx index 54b43e48c3915de919ba7e5c2152b816c12b80a2..9facb42ab70148465e12039ff537a65c274944d0 100644 GIT binary patch delta 148741 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

JeWT-&vkAc%3mLbx*xna4!&!B^*_l{{3 zEijTC&?#Rz(YtqTqQ7Hk@J%w}VV3%NO#0x_`Hm%L%`d!7=grZW{K?1L9==f?-EP-^ zh$eETvM9Qj?UpE{yaAW16wks#yYiRlXZ)K7q}pdHRZgDuVnc~evO2s;A^7>0w8 z9LjrO4E~ldAZ79a8&RI2*{JpLdG{DDVw)TFO%^#!Tv^YyR^>~mqqr%5(5bC1no^A! zo-MBUWQ|Qd7ew%8eYE!e(&@{KQkNu5@)Ftefh^d)QYM%lcVjZ50kMWo{|J0OA_uTg zA4I+eZ4aBWvV3CIP8;*RLk}4?(%Fl2lnA4q?)4?e)tB{PU$vbzxIOut_nGq$(~FWr zL9EkqiEiEfPG$EdLex95a_xJno?ns|(pFoqynCisU1my(Jf^L)cB$196m<_b?_J56 z?Yz4Mtvq9&XpgK|jW(!Otl=q$`+f}^fBT6AxIknxztDqXn0R2=0|Y1}KK5ls@iBha zi&5J1Qq7-=wBhzNqT-i3jt$~$*97ei2e>FaC49eZ8;a|GO#7|rA!E6euDk)XWwS1k z>Mww&IzO*oJfna$_>pXUxxs7Fv~Kj<FPP+-EiMLZ)_-XF^~+bbBIvQ(@;R&J^FNI5|pZWhXh@dSo9TI?ysUAyF{U!!Li9 zv3f&Tq+zwTLNGvqUeC-MP`%iUy^>@rrsSWIAuuLRhl}-q4!_SiqE9ZW^FsL7FY?U- zK|0Z_Vax71Nc5LQ-_)?H$6YdKQ~yfAIm%U^b9-$_0LmCZXc!R%U?Sj;>PhgEjvoCQ z`_0D}lri%yc6h0unLtoTCiYwko zP9Nj|6J~0DbGJHA0+#^JXW$C{VATBdFZqS7@{`c)?H;r@!_fETPv9XW118gH^M!tt zRDN=&F%;YXOMlIf!Z{QHDhv2%Eh2S`7!=<^UCM~}16{|rLHu2yn2M%?u^&F3Vp8Rr zC}0v*Fa2gGT%+DqX!&Z*rJSQQ=7%_<#j?%^(-yDJVPHgrf+G^jinfDDskP8`lM^Ty zESidoa>T4O|E$e%kV$ZxkUW&u{r+jC^PO2@4)uMcUex-&ACt&Uh>5bVeV6Dsb!r*| z_!Y@nplWv-j_L%n5QEWAFZGIa7dsNfo@us%=~=ucI>g7|Lv~-Ld4=%iyAS zCNALosj`Ogc<_F>#k`Fl^|B>c=t)Jb46X{luFIyU4&ftZ^aQ;uLX2`=CMl`tR9SU=-TL^ciw?`%U>n4_vz-| z**j?%JW>6Q4ItwIPAOEa<%=`u0a`Q?;?@ri4q{|Cp1AsjOJ85=3tzf|U`_73a>OiY zo8lfk?j4psabL>=-~y#EM++(o?#iU0lK-r*039m*oPAj#THGDj_A&b{)-=J;^!!}3 z)yx;kUGk3SMlJg1y2D%JQ>h1{?sA>P@s7_Vz!gKV)%Tc!S0zRV@o1S3BTg4oB=uyb zKBM5anoLek@+yA{M|S#^qeiihqr6Z3EI+9HR(`kx{SW1bDdiGzNOdwt`}ovx3!2C` zRuy{JWrS1<_^h#DGil6}i?H|VviP{@JO6v#(S7QYgN)T^$@b!@=o*HZ6REmh9dAdT zbX@s;K!!$gfO^u6OgCtl z@Cu(2>Jr1M;<12p!Ax;j>BTRRl;V?m-JR6{*tGHViEh?JVSw-*+j8n>QCtZ!GJ-iw zRX$8We#$Y3H7j=JBnbcdyDcYxC}#Z<4V34x{&WcE{XKA_@))$ATPr6W?GAt;S5HE( zNd#W7?IhrIKx%$Zj|y9{BHi zv4m&7;=jOu>-Lqyykz8~>!jq0mzuEucFun;hn&gZ-pa&|d2Ls{+dE(8yQkjVr{(-m z>}z}t@6fZ0Vt(h%9TPJdE<-8(S8TJsRpG!&z+FQ3Jd`io+KJDRcC=HtHrxE-u@K$n ziICP_`gvKN-0(aScmRU!=(9wz5lm;}zS@k9B&=O?BgN2os?51D;sr>BThExXjw zcOxS1QWYcCtPqRX2U~N5Z^8Zy;d69^ZND+XZ;^koD0(aS^acLR2~N}p z{^gj1n)%^$)|X#9>Pwk6TKMvH=}RC@O%$31y>dkrlGh+M$ep~AV7`82cq*)veP_QG zG#I>D_bc)-?cH&hA?H5KuP`;NVHIXda(Y)%I1TVz15K9$8;|lBErgybrK@j`zS%<& z!Az8B$EORQWF-SslhvR1%y2B1re!`;={5^e@D|Ox95_4)IVN`u@K2BrrIG2!)%Fkl za?=9r*x=cwmN!=&9+}sBC#sdVd>LKRmX6CAY-wnJG-@s_wee1zi_K11OKZLQ@mSZu zBw<6dUejFBK=w{()p;Y~p%-@RGu*zvURE%@_xF*Zi+LWF_g~Xli<2LLTHc?zQzaSJ zmYJ7XZpKhzX{SRm*=GDPc~@Ke{%Lch&UFpbtx>umKmBfEZQIL3LI zsS^AfFHC1lu03R5lGPjesOH<@_;EhVNjFO3j_t$OmiG9|A1jnzls9MIX)uUaL_DSi zHc5LEqlLbZaibS4k0J-^lJ9YGm@E#4-(Z&}p2^-JS1QEeTkxdF(AG#&gOH0?ap;^` zkzsgq_xcrOy27GjAB_QnXN1Hr&JUH7O3#Q|xNT36@?J|YSUz&ML z?*$mQoV$W5DLTI0akmf#!vaMWhD+Ol(ej`b0_ADp^)|$Z$4)v@oW1shT+1k|)K^6# zZ*;k>gs8p2S}u1W%ZuH(u={#Yt72{pCTY`U#^h|Dr1J@O&c*Jn-|c+fCb5aag5d*R zzda(WLkbVQkYo{OX9-Z`r(Y*UTzk5lNqY-!(?VJ{!H{>BVXU)JSYj}II3yRsc8IhA zl9LWa(i;YdI_e^Z{-GwsR%OAG?-;i>4Cd+wIx$2*)fFUX=p#~P>`#$j5V_};JU6d2 zCE&Sq<wfmJW)7)ys9yCvmDS9K+1R6z402m z3DsUv;{&!drV#p|M>80_Xq;v5G_*JJZ0q`cof{P6cS+?r7Q)N^nwgY@_vxyjLeYHn zn|HR~I#Q$$GIh}?)C4|sTu?N~X+gy_i0j1KK`N<@VVGEq`x~Gh< zN8?7ai5-Ovs}~?|3f!Y2O@Mr{Q8zi;5Z_)4&YXY;xGp>H*c04ROt4$NBQKyJWDk9L zDf;w^&073I1(}TVlv(b;!*a9 zJ2w@?PyCrDQ9nsg&?~w8t4FU+8ZlAa5a&oHp^Vskb|!uQfZ56ZyV9__i=8Z#;_=={ zP^>4$k^Wo}M|ITqQF=F(68)u;SZ3-txUz+dxR*|3c0Q<(vCUmIe6x{TL?82l$y1?U zg*qqhzEqdvi*|+$vz)9G{MQs5pmn`ZT6odb{I#)f=^oZTVs(mAXCx~qQr^+BA%&GE zf)Y?YnQt@}>L%rvRev6fA6OPj;lE;8{xg(CDn8I`{!H)et|7^L`;#~44En}XJ+s}8 z!3-fapd>I}GICh`8L!lEBeXX41ZoTsWaeMqU&um3LKb?S+(9>sK(7d1E)tHfoIiO> zDMTQ3sue(-P224%)#L74DKAH`FP&lWSZH}HniFe1`r2?dbF^88a6ceH@S7ZY40x8k zpCNW`^L zOa9@rc^pm&Sr%D+?XQlaGHL8GTZk!i94KMs0E%&AAKM03%NJ-t6(Z2ZoYlyGR?LB{ z(bb$TLn)_(OzW)P_8Oe?OBWokRgB9<2akmvLB8b##=rr|=oTL6S{(I3IZTnR_qQuu zAU4TXslnTlEDx3#v43o7=X376km#SlC4XQ`dfVhp(u*H1yfG*1hM8V=AGJ84PAWh@n|sU926 zs=2->+CK|0RCs@Gg6ILo=i0jxlIxSKzK;eclX-17_F03F14sT`p8%%hzW_M;BgvRz zkK^MW9PZq2R=Phup&^2Fu28e)z0z}?^SBh0K@*9BPZZz^9HelGzbJ=9`Ji@JS0chuth|^kz34MFE8MFEZSJY~zx?T-}S|zuDl! zG$sPc=-i<1-A!)3uS6><<74{vAOVnH6WK2eDEO_2%Mg?F!y1bOQ5(gH?a>_Z^Y>NV9{bR{_o1?voQhYaFA12k;NS*dmo! zzRSP*YVQNe7s=Jr>hJoT{o7;YY&kVfy~(es51I!u*OOtYsn~Kfgzn=soPpaf;TqT! zx*^E$9M2A1z}%O^4&8wOpA_pY6q)+UeS(`_Y-g$6$g+8sk#5}-iU`P7>enad+%7D+ zW5G1afy0v_u1xe{6*DC~RH;zU(*vuV_?P0^@6X_$|N5uR7tniw{%i9^exo2y42gO5 z|EBda>cg~54nyJs!0wldcZ`&1JsrZ5->|khGP5;b@nA@7I2n9tTyN&Rj^N=@1ago!^JPym8Bd=sX|Y>9dgqCpg;+_tR5KbU8pHllUjKr{ zTgHp7k;e7>8uD&Jb1@VhDFiJ~N?DeKffz)m>2yN9htuVm)N0FaxvH)56KEx}MxzQ+ ztJUgry${+towNcuqXRUk;NjByXV4g2g((R!YvPuGqv9q@BNx_B zI~K^ZKGbpzz zdF91o0~;ZM|rzHwn)k* zS8>|DnZBzm>dn0QH4R{!u^K2fXg%-ufU+x*P`e11YHaxBf&z!qyrNcOcqCD!Xs>#d z3iO7OGpmNttU@i54_sq6A8O;K4lLE7km7Q-J;(VQKohf6=QgHHE9# z&lBQM=$27Is5jwTBQlsP2)Q@EK80nYz`j85(e%;!&Xks@fIbk(%kb7;s+Uxx5P&87s?v)_A0yt|%LS-$;BSr&AAs^F{Z{sI2WX9K$U%L&*$T0Os;l!GL z2TEsosn{a0x-fn{gg0PX9H?n~JvJkeQ4fNu3(1d$z`;ueFPsM973pxmzV`nCYXGQ* z1*Q8WZvj(>krFu!f=b=kfp#TYLiK0#BS?op^b4ByDIpw+96ySiaNFTTc3qORG!Oed zI*>~lqQRRRxCbmB#9zW+hR1r(QPu7GBW&Cchb^pVzlufUxPnvufwS4NdhqIL>=#8BY1m5f!1c%dy5~Lp2NAuVXpMq*0CLu>5?g?Y`OXI zn_kONoO*lTgHU%curEFzw^l#t<{MSHeSRVm>p1x`>C>n@E7ddo@g{bqvroOIKAb}= zq6tfYYz*8rY=#INZVK2slNekROG4jd-b!T5vnrPS;W23OJ ze@xy!UjdPuxJ9$vOSs{C<~x4CD97F-th!*Z_0DKomZ@a=n=nj=DqLL)R)A5qFrq#{ zFTIf@hx37szc^re5%EWSP_6!ix*Babgp(}-X&cR3ijlut_ZF$i6|2i-nEEScEx+8#BazodDOdHaq1zXDaTcsQlB z#+d13cz%vLc1b8|EVwDU*~l)Ouvg#aW2<@c<8>47C+!2 zr*FoF`m1w*y0UG=e8@BA@m*?Xk&9ZWr0t%7pRVGcd*P_(L}TA$e$60CB2`)9ZO~YE zgNrKQ#~tY&(7b6}flzv`&P^Rnlt!oP<5}(I3>;UIBb}~qkDQR|e6+%t z_05sg28iyAdyj7tTUKROVtHlZ#Ce!bIwR#{NltHcs{*`+?kL2XMAbjr%pdOM|7ybK zZ>XT%xFQ-&5WbUz+tfj?I)AdE!{FxEZb8W0ZGP^|Ag-{Zrt&*=n9j4mW0O2!rV?Y$ z{41NppXWbp_-{JM1MBLwvBo6{-|#q&_xIk6F6vhL2lp!WcGy*OWj{+J&o%LX4%j3R z)zqo^7$W1F>{^ZI$HLyToymRz$R-Of<~ntb==_9fqEVXqj2Ox>bMwEZ92btU*VJwQ zurS;9&UYs4jSD-)8*QQk-RGumMP=(MzDm30-`8tEh*FLg=bgVALHj;d%wD_{JPMc$ z3FKi56mVEXL`N~~rZ=1%jzJ}X;E2Qp>nHL@5d#3vsK7Gh4aoKY3xW2=hFPE)BnK(P zPXY8p6ex(|0RMMba{rqT4|cN$V21h&cuY9h2X%koZzU{_&qR5MBB(>hP<#~Z2RRoV ztAEOwW8$V9qD~r9!1k86_$@ptK+x)On{S8tz|XJ!v57vohQCOS{&Ic)XP-fsX=-Bu zdfkA3fHq-5oW`mrDA;$6G0=WuWPey+9m3LPmaL zAcmIp6k5^8J1E8H<6bY}%+9A3s{xSF02rV?nsVyIc0f5TFezj(n@cuEG!Q+cqCW;J zya<8KYtQvfh7l4t(O*!5(iO;AZ9$%TmLssf*1v?#f3b7D^dEPw(BExcwANVy{4>Ie}z|_sp~1=0bDkn>o)HW!LAeTPa6(ON>@@wC&a1pU$)@B8fJkS95KiD9b1B;c@Ee6WROPjjw~#CuPh7IcB>U<(WV z<2|gQA6zSN;$h!uZs&%`GKZTg46B8uxjioB~d2?xLVd_QszS*o%@eda(1oN#a?sar8yfvYP#isv?A4Kohm?^J3 zgFhL1^d4QTsv70s=Jh$`mz&+@d;b*Cl)to-uB zX4al;GG%OBsE?WMvRPTYQQyn1=LWYLh$xn$W^(mMG*xJlUWvlasQ(A-zuZ5?{?~iv zq-(Q5Tw+N%l=^n;3%QReU2LcxgL81vDPf?3XO#XzU|jqQf$=}{7jZYq@v84eyVj}R zh)5ZH>>r(N@|67Q3zu^HtSk_L&O`{~z}`Za{|5YD5Cy>h*?$55bKCz1@PFr+*5hGk zW#?lx0){a)WOGDY7P}#l9ilqXsj=iP@6o&7=L6U8@7(arH=;$S{s)V*Er=?R-`r_T zSke0T;QzWYg{w2AYFE^5IL$3qpP zE95-fPgtOLx8X_|t}yQw=$BCP6fHN^2P(indeT}Tl+;oGh(BO?LR(Ax6muTh{>Nne z&%J!iH-GD{{!Mcg9TI+QzIX*Cpt1j>&DT2VE6`xL{NI8|2i{$~wO}FG04eS<-2KU; zIKE)^3V}{CkP0vrgFyDM^ZNfr{gcI`C+C^F<^djY*6IiD8$0 zz9cg{-#pc?BVjxK%_g7Ej-Co~&+h*4O`y**H*5+oTa~VwpZ{yCNO)H^fxE5G)25@ZT;&+o|L$>uuJqC?5vgA6weoo4mPV_(_6Covj1uGLUrx8IV~d17c<~@YgQlAPX#_spT~aB6n*ZSB zWHmejBnM~j^g=!=C7R39u%kbnT(LsUmAwDBWXc2Ecdmy%PkBx)COXVSX6~{;SwRGq z!PqeElPfwBhTk7SX^|}jJYr6ZLjAhJ;ZwmJ&m`AR3?JTj!CiS;*SIx((Sgg- zsy5*3C#!c+eDt;;1o0rWyzJN=QR+DyFN+*|(`xEfSE;g~-m0&?>u`tTp=w@sTW#I% z_oS%Y+ShlwC9lvHc%-+^3+E#?xv-fLxBy)huie%AS)+=xhHx!+dc7c z0?a86ZdT#my(86GW8B!eP{Dm{>{C3r0a{!)280xldajNkpG;or9mB#tiGz#m!wD#} z5F|CS{n$5$|g3*2jH~3Rh zNXoH>keFY-TaG2qUY&1r*NMyyH=wfH2+juZ4{zZOJY#w*@14#HUc{UhW(&V(YG(k4 z$In)0UmM3UAjBM5C1fm?D#-BV$BDsD*D^2v^3@?C^jEj9IrA^!U=Ax3jQQ$Fz-{bX zXCIRD>G;&aU^McFqpi+A-6NOoUq_;w5R&2uJ*zOsoglAZ9rFd_!HgGH_okWpY8hzk zi_)ABmb)&IA1N%3IGJb46u?e`dEhIhR)nXn-FSGrhzti8hKz47CH+c)p4>{d75b@b zoJ=OUIQIaH+Csq2&j25cj>PHgdrr*EIMPfIH8)-|I2eCn8)PwrUv`3$zl&q$8Yj=e zcA4~Nz9Ct9(*H$XNkR6Ghv@jH0jX}F(w@CLlOPr(iD11xq>jV47H z+z5|1M)1(XcM`jCwWF~UXQEMsgc9a$F5Gh=bGiDw?|QK1 z;B1`pRmrz=U?g=z>I3%t73|01EBEcmz|^^#EzM*&4^G`A;gU|Pv2?o7=AMm%*N46r41;^$95!C9+qZ#gfp=Y} z3s!xUUTIySo~mpZlZP+ zX26DUPO2+pCFejGRo-4nPWC#jO6c%v2em&_`z={jU+dd!LsmiUUNxn@`|4=UE6@Fc zt9OL@z#vH}t1lw;$U;s~(tCaNhbljRO1`_-*nbte`*8xYJTA2{B2rMZT998Wm9tpC z!SO@}`q*RJAMZqA|ML0^Fyg$oL+yk=uabna|&v!*QVq2SvjA{ zRoRafvkb?mi{9PX)fO51G|qlR_61Hr{t3$124Tk^RmnN;b17`C1czsY9{ym|HKdu&frpatyqY`qbQ z3x4sv`Ht%W5J!l={qZb+^v2u1hk4vLzh!#mr7cf6@@yi)jZ(JWfQ8OB=?CoUEZapW zu>Ug^nmMCjwmToE4ETF^#a#$S-5h?)%;P++ zDg*H0p_{@U!5bB`wK3^&FOH+`I{nX5n@E0#j`1Sk~RoT20yyEh-@;N%( zbNO4;zm33RG6IJG8UEC! zObZ^{qrX~jo-b1?2=dpejxLsv$w_B`Tr6%9fsLrrkm0(u#g|%8>_*2~P=2Y@C zO@i<5-pw)^>xhAz&-Y9;%~@?aN}=cdbiF+&OT35^)Ob%S!qi{I6={nT5b)ouT7Rs> ziyr!3R6GP&k@hT$?;7iXo-Or>35`h`6RzU#!FJ;JuDW8JuBp+(w}OL9>SDe#69y4E z+zQL-KBDA}%jI&acX+aK(D%7p8u@$}TA9LsyDnV6^t!iD=)xKY`k7*SVg7#7Q;{>_ z-6@wUh^<3D!0WvpH0gWv$4rm)pH+NkzI~wu30S>&Gj@^eZUNk9(KPrd)V0^Mv2@lm zvTvyf?!0Se^*SD&x6!d~)SHdudu&BHD!S}U3cg=_+bM4tr{6{-fo9q-Aw!RWD*U#> z^Q{fB_=}@>2(ehid~yAChuphszBVEwg3=#8yIGVc^!*MM^!0tK@mS^s7iVs{8@K}U zuP3VcHMShD;s9SKCtoXXuXTumG|v5y5`w-b+Xn0P7ZEo0Yp-LMpx@tBTP}VJ8{Jtv zgy`c}Z&qnNV?mY)yCAN7F(^3x8#d`z#EM2rAN9XE-CNts;xt!c+`NN|_DuT!+(%4E;VG_{K=5G)p7R=cnIz3*9tUuRH|G+`uR6M^#a~wiH`v6!?u-Ck7a4xc>K{}|l z%=WN{kJ{f=8;f(9PAa_VeAeDn;|1qf39zEtw}SmZwUGQB5C>M+$5GV&ILY-A!!o8& z%npP-mIUx+aPX&yl@>r(x8#o(1@w9?VKt4NAJ0_3h5 zTbN( znP+7%7HEQ(uahQqj18+VyPK(--cYb5mT(#hXSbOBer*-v)*Wxw%V<3t)nF=4@s2LK zJs3{9+a8-M?j|o~h{g5qB)sLD7pEE1?FMuT`9xmhw-Y+e9SwQ&ahT2w8ko$O(Jl^% z&43Ao%$F=8VS1yVV>eG-UnVWIBEtBur)nZz4aDG~WyWO=6K!dt-Kq;px6s0WgU_IY z^Sx}#4P=%tyYmaGkJ-|1UpeWXNkPXrR2QCHVLqQb8U3`PA%6^fNv(o$8ECx4scn0F zgt<%LpI*_BhG)%7r3T{%Jhmbr3L>4RumPA3(-!E`O^{11U`$BH6o`Dqq#8r`0@u;* zuoB8u@O$FT#jIJW=*@La)>*1a5xty~7$%QHayHCeWo2u9gl{6xxivLLaD-hCohdS^Bhgw1>Ex!&ET3aDH3SPmB9-aHA5H{BIAiMf)ll75nz95 zYoB@`WufMJWJ|SznWc3`l{zoO^ycO?(7Y(-aJZ(5o2BI@23w;Dk-~}&KwF|jDpZbo zrjIm7@s{RjK$BsOmcp{JN;c8do&d-dC^bW0dO;|Wx$=r#HDrOYm^r2Uh zjpK=iE0f3=VWz58kLg(SG^rrVDF?4M-MZPrV5h5@bmLZ+Qor|uYQ2|t?#}Tx7Z-prFh(LBdu5z5Wfx^PZk97(-PraU6-ryE1#}~!^2i}; z3ONa3*=jI-2%lrG-@LY-q*@H20ZHoeh8vUGBoXfg)ry$CGWU;UoR6BRZ0MV%DYShp zrMPQFUlTq#$7G!yHGT=xx+@z?mI{wF-3VV|8Qf_^Ofv)tSuC3yEgGOD&G7=Rh%3c8 zd~0Pie1In=TN->2SMLX3btPAElGG1a7JK;S-UcX(-3t#22|`gP`RqJY(8qWoC#Hhf z`klOz`%_|rxER}?zPqM_LYd*IK zxog~FnHblV`RJi>$UlH_otW{oR80j2IPsdhUGJ#cB*$w0X!(9{y;q{R0~`s;gp5mt zw2^B#W6FGpFdN>86L@SLBv@?dQp$W6U~>kkO3XCMCg$!D%5?YECyF-3XZZxrYQBY} zxgz1-VU+rYzn25c}Ns9-3Ur@WZr!5bhLO!+9f_l^m^m)eKBO<^d~b-#=Tc{m+0c zsu*qTOy=wmO<)U9foN-#8S|z{ZO)20#z;)JpHp}c-Rzdhx-$NLrbmiXNDrx5`U8SR z-#XM&%fvdEhB{y>G9OJD)- zeuVafG+e1hD@%y%HSG>gz0gB;--oeJai8F->}~(aP63b{!+gp=e$9QOwu+}RF1^_yy{g=?2EjJFpiab z*o`q67DT8KMQe{{*BZJB@?isU66VDGpX(6%k%#IH_28vR7Z(o#jZd4$it11&l}oF7 zZg)ifZ+F`DA3lk`pJ8zxJ;2}I8PTA*dDD`-k$`}TQ-!;L`Kk4(l*!AuPHK9F_Ckm- ze?mz&&$n@~Cd-1z?DRFj8hQwST+c7N@jRoXmUID=Aw-SuDhPhw5eo8Ur7pIlu66-a z0diY1F_pTvg4OCJ=Zaq4(W1p0@{v?r6B4&K$(7!D;+oI6Dr!HKkV}Y|r^nRlsf!!K z80H9WjoYYisTgFA?|J^-E*T|KGw+*_SZ0fg=^uJ5${bH1JIo@Zf-jDczBkK<1-ZF? zUJ8syIVOO3BJS_+#{Jx2iPInP*yX5_20U8aw^p+Hl_RcxBS1GCQg#kE@TeeEOkV>*ec`BJ2<jrWuCiAzzwDT!iW^F3%3a+3_XI(nB!xCvoZH|Sn zk!zD(x9s88p-$lAr*X8dZJN3VQb0~#D|1q*;f~Az{)PpRT49J*D(S%%oBTw=*!4rU zSGU8FZ?Ay>0M`5OH>wGDoQvmOZyACX{jd?Eohe!^ugD~#5g*5yxw7Ho{Tz98NIJr& zC`K6ylI-f$pIDULsTrEoI3U9Y&AH`uGb%)PvJBC8m30a~3S5G7KMEf7gcRSz&N>t= zwQ}n45NL+LMP(wDk!gn3{gsdz-po{0Y5H}P%Ag#?Qq%i@$v|ACQXTq$ZDiffa!3Qce4Tt?+km7n>W0hhgE{w*+=X%67I_25>%8g;;H2k~g^InjgfCbY=1 zB_O;y5u+!n69mmD^M;*;gXfyVj&>~a^5(|wwaHw#Qiz>ZgPv$YTlhPWNW$2nzYmZ- z0YIk6B3lIUug|KUhl$a^WzC8utf8_(0-K^3b5>2az^nJ ztKk5Y=$?ZO7@5tm>nh5U$ZE$Y$?^2-8H*Vtl1`43{lxlGFt3b^_brzSDNDruXdNZv z9(ur41Pwpe!LB5JiPzsmb!y+(xXLCp=h;p&+tu70?s@}{^ZBAE+@@$e&)j{%f{4;F zO9}9D<>*T7HPH)VF=W#gY(~)SYJ2fE#%&|M$tq_1s!N!j#hPlnJ8Mr5+v(K=dG zZITQjG)w3n*hI~$5m6cVFc_~P20)=@jaa?PXfi3tB|88)$tWEv?0Afj^0~~TfL9dL z7_6URrrpHt$$clZ!6O#l zc2YCqi0Bxo*WtdKLNu42$g;fEV z`&--Te}~;+m_FzS20`1hhP+tr)(23yaAo1LaY{oN*Up1()EAIG06bBkOsbSX)snFd z=$v`>6@?{=_}a&n#k}`Z{t`y=^#sK}h@Hd8mt!NDKn~|%*ZDoG?)N|XDff)Dp52Mk ztfd$hIA{hJ;$H}D`)ArT4SYES4Yo4&IbbdOU%p*UoN}ezXya`i1q^bC9q1uju%(d? zoVy)QWvYn|Pc=KQ09Ir`4Fj6PLYPf@YmArOdeSq_Z(=w5%z(nzmL)Q)F*-NLo=?R? zC0zJoqP5S3EK@_VUa&0!)$FYL?UDh}M(mIb{B+{WeYcXX>r~)>Yo(`8NdEF?ZrqzRDt5Zm=2V zl?d&OZPPvt05(=YH`c>=f#clhC{niCZaAI8!Y-g1`a`a-xp zQw*n7Q7RYULDcy(AHZPDA&`CX#xK&V#aUKb1#Qin@p1as%zeiU@5bg7p)!86`1)p+ z;k$8nLvpN0+-3Rpni09+&vK*Rk%%!>vqK*fFJ%8x1SD8KE0;)0DO9)1sM$`S{)D1+ zt>Fi-q5++i5m~E^aIBuYF%82PdUMJQ>9ZK)2;f8Wr&UI|d7p+LHbxW>kYZ41utGsN zxEf&Lx$m*Z7f530Jo?l0Uk=NmGN=#OG>|{gfs&py%^34_i7%Ih47^ixYC_?ziLTXZ zDMbe}0@w|T0Y5e`rk35&HtXaCo475~OV~-=5>Hwcl2{t9Cd&04Nm-e5h^ye9zRN>@=`2 zA+g_y7l$(gUM3*feOmAw#A9qr(16@cRu(xswnM9_bBuJdziwG|_>UX4%zOx*i6!R* zzV2Gwys{&9x|Ie+hL+!Pad=l|vWNS4>;P;Mwk-Ts6x9&Gf(9gSWCfG@0ws?{2=(rj z1-QSP2v~0VryrHIx}jW`<4?wa_*q|OGtxZlSuH6vux7bvRwusMA%EFx zKhL797~>-41F_PnQVO$Abj(z8LaYN#LNExOuKb_POEg$qCjN#sD$A zSA~xf*+qel1?Twq-Oj&w5$T^jsGr%8a%s&pQC%YUM0#H_eo+1tmZNF(fy}%~c{S}h zp%5!1QQN}LBRZ{6i|`=GTel4qBL=8mCcrOPeXkVxV10QypJ_~YUor`{eB?fhcVrRd z|11AY*5MP}-p(9ikWM&fT{Av7*=K9;RO}nM=r-!m_+#DujAY5q?&>EW-w+1g_K6eC zw9_tSuI;|FbDk42#K?}a|D{tM9w%}c8YJK0AveQ2SAw0cJR%!IzrDb6t0n;P^Eg&2 zt}r+U>kgHhBYGMkxQ^-XbcjY$ILm2tYa4++(b#$539kWz?-C34vux^u=&dYndQ1fey#ahh~IDK zCe`B+69?g%KSr0Waes5Z;}Za$CB4rz89Vef%lZ0np z-Nfw1Hb-;gs2A1~YJ1RpvA5YgecYW9{V}TAWs`g!AmW{2dj^!n#p=r*ch@VJ;!XJgZCMwP&&jjBs^faMwoG4>=2ekuSZ^{t|V-@%Vk@22if0;>VKL}oUdl0qAQ zagl4O9J|@pR-92q5H|;1{EDsf$Q_X1bfUbGlH86P+t*VVh0oSla+KtRLt&e9AA`f& z+MY5+j6m#nHLi!?#)2I=eJMMC&qo!0HpJHlIVIyztxQD?t9jSOTyM0KO0jcE>*Z)utuHsL@T zfslcKaQcCOP`(in4+m#cMte6qV>4$fdkY3nJKJ-;b?38YbiXUvuf9U;he?jBq75$W z$X{#o+@q!$NhcyDi1niDS;ri|Y>y6@1?LrxE&gJ*1IMEY{Unl15^xUW6CD9_(A>b) zT;cS6n4Hdh7;;I(pWA$NH`T`m6h@hLY*fu%3|t(KDBO)3x;k+&G*=9Hx5(K`lioRX9d+xY+9L30S>lx<&MD6cdr}FDM zV5}-Ayvek_`8&y8&AEBM!##0y?s0Ui&#E+cjT#)+`x3j3!h7Yvm$Z`XdlP#yw6Sc_ z=W>ibhUa=_liPTPZ9ZP7T`FuIdvhM|ncPTE*UR%cEDd=v`poazO zWpk1qN~Yh6xF8Aj3JVV^_sx44*33WI?)i9$=+7(`;`t^c5U~yFwKktmP_X6=zlj9Rvi0kOi z@2K$|Z~Y32w}bP%*55F~Tn#-Kp|%4jcMTwMoe!rE#zxZ-DTLL-K9t=1`Zy4LKrrr&ovz-5(w%Rc0`m zemq9-w_{WXx%PBT5<8qU;|a{2Oy9Xqx4MTH=kDaJ9nf{4^1LoKr-*_~wXKiluT#pH zA*1yEF}exmozLSjBmvkDPK9E`o?fps8J)ELu@Y>+#3uA@sEI7xKvv!nUSBlOQji7K zpjsQp6M1=3g4-fwf2_&`&5vLu)+k3Oo}6GHIM1q6XAp(Ia8UEhKd+}Z&Fkpj#uWK< zf`wBA_zutVe1FrmL-Y)d6fK*ioS=8nOcf2man2K^2|Klef#G^!pAjX1nQS40nOA8i zgGdAegx0~!(0}oxfc(s`0y;-wga(pF|GBH$cL54^ta_s*MznLdMAV80B~lhh*`L=$ z!_`a<3jEz6RT)T{P1K2{q}sI@RHGU==9VJM-yL%tAab?q3Lv-=7-2@D=icqXE7}EsJUs&}}U{l$0w+|v3^;mD+ ztR7uS)L{DAlu-%%nLhTE_0y4f=viQERPg4e>9ha)lf zLG*!acepX^ck>fh?rcjF4s8C@6LHT2Scja5CIjKW2OnpXU(%}y2OB)qwG~AtYIIWp z#DQzJ6u&aaWRX7(myDuAhH7h@ezF{(N7Zfw&L7{|OHIMCNVRZ|Z}L|yOWEs{uNb?N z_oGBn&f9HUtzK;SV_)RdvyC!z%jjS8L~AnBN~9uLDRM6)&ND$H zx*Ot)Fm};IU2h;m35tb_#;*7D+Q%3JcoER7&+E!RG#J$R=1Cv7bAVqBbbjKo9z)C^ z=5l)QuCd7DTSCJ73)q1Qz{a>xAj!^)IhRMW#Sc3j_Os4%E!*%4Ar?7xQs3~gO*QZ$ z{QVV(oL+#?IL|fp#}fnR2p50klyi=2ipGlq=jaVT%+Xzdlx2v(2BjheLk1-rAbO`h zpCczbKe_p;=T$*CO>e@IszVphG6e^!Yhw`H0@7q2#7-*;7LV2{p+(5t`RTX?#7@XO zAXOz5#!x4V>}Ex^-d!+~dYNdKW}9kF_wa0z97US4j!YahjF97dVk|WY7kvDFfrDb&DVe$cVsX7lg!ICfcZnLXhX1oJ<=2C^2U=X-9R%#?X{z zDV-_P>N#fc(l^soMBzzcgrjziY^H0M>DI%>u@0{O3#VXgk&eBUI~ARtI&vRn;py8* z;W`QPV?5)vzfI4MqU3_9^UNu-icQ_lbi8N@3t&R0a|1SW;ykh<{SlH^=FVYMe`O-p6}ZD+<^0LfA_UNu{s^Xf?y8lfvPYjXmYZ4`w?Rb=R#F3AiB8S=@n zOXgSoP?SYU?bySo?LfI(lULGqE-k#+U1GhB*yBR5g@PEWnD#&qQ9bqn(ZE*&f>^+X z@Q@uS#=wJ9Z)-a6mW?FAXaHtRk?A0MV<|#cp3M~#;?TX`s$@VW0C-Q(m}4w8^sv)K zxtonAJ8+RE>0*UW1zgG)vxr%ESY9xl+5r(MTFCAPf)ojs+!g(F+Ujpc_MOq=E>y7; z6JdL<=+#O!F?Pg|y7cS!PhLFjG)BSJI4uG7y)ZkXO#llqX*7O`dz-FS$(o9Z@W@-J2INhsMQ8UFHlGldpz;3e9;74!1bg0_SF(v2P zBc<3@vZRnBYmB6jIL6FRebx-G0~SX*t;aR9oy?U#y4A8Dc>&GMs#(I$ zIX(fyPkr243df9~aqkDlAq7Y)`4hEEZ5OufRgkFA~?!*lG*qI(reg4 zcefP0_?w5@7rtp4TPl)}o_jegB+D31qr^Ww9)dK2bZ2LfWaCL=To4JsC%>Xr(aDfX zI40u$U=O_iW*tF{?i`C*sa?-Xw;gdAxi@bsMh3%cA0^Ms^7xal$*i?}fnD^(B3enD zrMN-95ed>Wt*zEMo=cVOD(+EK(am{=t*c%a4v~*}X410`FGcl; zaN9(ncGc5uSv2JQUMPAkLC|_W%XTW38ULwT-F4PXT`K!e&%8x5Zcdx(`(4(-2<=Pe zp_F_PIlC8s?l!2Ye<^AB)Odw*?r}xqQ_=v+>MTQZMduw6;?7XAhSq&0c}_Bu383Lt zGcdXl#vO5G;u>{3lw?hey;9KIO$+P^wLir}M2V<%>kEP;+aet*CzwWbH7e`SI3vvS zO$Ldlc(0IxLWHrp>6Ej1hWv0I|d-iuiZ5Dw-DZhnj6KU6N1Q`H4 zAsI+Oeq5LWed~^&^Yxk};AmeFKVUJWZVb!wh5;Eu@f{I%3mZ6Kk<40;-%%K|i}R$= z(XdrOp^)Y%lfX7)gA`de>jrc7H0P;cexs^Fw*%A^_ch^xgn;tkfHq`7^NL{5Xrnr{ z(8A_xNr7S-0&!?~y|CO-Cdon(5cSaT9L}=oaydZm&xOK1 zRidXjPRX5|@Dh(@))Z$Kz7#D58}`GN&^{G|xA=EOoJw%FIa~V^+=I-FcYl&t zI|Y8yXoC@3{1G^M#>92DrsYIxL_PR_{`Z!5r3|vmuf9kVpEXxr^i3^?ZbnR|;1T08 zjB8C=kGM+t&_~QDVKfnk0OThN!~yvffutBbu}N^0uGWvt?J{x;q8sF6Yhv9qhBw%e zOANnd20ZDBnK45KnTKhYZ+$&J$EXFa_j?5}(019lbVY7Gf{Jh7( zy39aSd6sl2He$cqF&Rt!5d2PSc}uoffQ7Iu$H9`eS^I8`^SsG)dKmu5rSx*S1u{9> z=2MsY&BEp&$vgR>=;eTQf_f$XWKc-Fda^mYB}2LwdHk{TSL)9Xb_Gc5y@T6U)(ST- z6o%t`IW=NE*CK5|gDxh%Z~`P!X+S~KA7$NVBRdGps z5lbfv@e)^-a;XIe;Xjga&)2C9oh!C z{Wk6f5@o0m5el~Cf+R%A)y&wau z)YeGJ)>g4DGS?bEVCaTxzUQwnHDo%u3!sPm`!P&*%^g|M_w;ee5V&2lp(U__amm=6 z>w4o7?O8LjO9M}Ac`G1!vi9gf6hI{70A1}N4@w?UXY~r3`aPHN2f99m4^IA4|F|qR zm8l@ajT?*Vt#eC1Y!ttm*ygy+F?0>BWaTwaM5WLiMS|mQ2#OW4PT#Vxprt4Xt*^>) z*FgkJM1r4pshr}MC^Z*KJ~ihHQXnaErg1Lwt{Y0-uHbOkVoQ{nXY|sjG4fj@qd0Za z>8xI2@p@Rz7vsOoPN}WvAP6m}7r>h!V3Zt+J1zHDz!boMKKpehxGuyML8$KY1uCie zB3LwZk@l)EJ9>;3eixQ(s3dY><-p$tf@Ai|CF@oK32|UA_s?|IIXDCESOxCxO3@Gl zf%$6HbM9SKm*b2Uso+u2w&25Bx@bPpL&?5h@*Chs%w#bMvrxF0LloqKM||b*97vF= z&8lU3mPASboTZJ$CUwt?g=XQ*XHTvyXJ2Vc+RCYSC&O8}tgE>%gsQBu_dSueCsEBv z6kG?Q{P%>DG~vI>q|eCc#WIG{n|WCiP=e-r2uoOhpLMSpP~sR=mE;*LMEW{3={S*u z$WfGHEgDWluL(#5yc`+>MM1`|w81g;vRCYA!N*YnU{@_ri54N&xUOq5YqJVNoOU`K zqSR0b(Dr5(Jp% zn4%MV^pW^r@Ei%@ZB;UBE6-_xbZ#tcnbvw+p&!lum6VC4DvaPIG1%u^io3t`I*7NH z?wjuci1md6t0^K9O@$&HL|z%8v3CKHyr672!i`mdo5Ts+~yrO9_>e+jC2FM z+3QGhjl@E^WPQO0;Wug0I#W6=mNoIcKN(EXBm`Umop^E(BCp!81WeAeHyXbH{}}NQ z1@EWkV7`rbDK6iJJRqRdJPZ)rRI58+%71Y+)V%*2t|n^8_&;1tYg}sE9WWWj(BJD4 z!mpP&LV~IBQyrXCP^9?eBgE9ZJ75w3qE{UsjQBpX|2mo%S}Hl89fA3i5jWc2lB#xh z1gqzgoqpv&xobB6MCB@JI=73#7b`(UHBD}HMlvmJT zSfx_DK32}SP4`sc1TquB!s|=}a}nXC)dCH+rX< z+7aD%M&kQ3zZ4wB34$r5bB^aPSM5!eL=(LepR=2IG!$z7+DtL@q{UcD8`trXJJ|xEmI%~*2ra0yvM2`ZpjG<1Cdv|Vk#HVv4T7d_(o=$$;!I2Uxpf6<) zriHIVGEMF95Fisn?3|fE(!Os3aovOCXE64wPbYf&Nh^cN)NJLf%}3d<%IF zI4C0kn}7d5Q9d01rF`OXd9-w^qJF5V-#y<`q**HZsdTHnX8tb=1PK2(3`BU__dpRnvu*8O z-;wT_yHQmRJkc{j&{CHXgO_#0zD-F^ygy;~>eZAR1%}sXUT6`pZ`Ct6ZrYIoUwq1) z=~^Sp=H}kn!E#o*TQ?uee!^M4)8AC>t9dX%8>5&Y<$#GgcB&gGf~Zt4=d=)%B}(8`j@mywLVKf6&Wz zuu0I1gbh#m)yq)apuZ~CigvEzn_F88S||@-jm-F9rt9w@+33w^vr4Ae?CRTYX5w!- zgFLQw%{bUH+u2OL>7}v=l=q?JHukMGi0wPE{i$*uG{1_nD(1=|<&KxxW=fx9r9!RHu|rlA~ge%w(_q? zMe41`s7S|E#=_LlXJC4WVutkGg1OW`eZbPN1wEx6)7#|NlSyiTUDwW+)|*7{I4Cd zN@Zx6g2^c--!)pP%0-X=NuNhK4(2@bu6~~2@I1zOuZeJ#1}6NA4msR3(O3jm{x9q+=-c+&(5?$FYni)ar8$L0U9MgIRYTT~AVW5wV-3?l>C z_e+pUv+whK$gxmjlQ=Wv?~@P$aq~~|w$7j;v;^&bng(6e(x_FAJ(fpFpzv*CL?`O; zXmN|w!k1_C?T5fDVu~V5GiW^w=xJT#6M*2m!!NZ@YI1Pp?2H!y!9q*=OvsLw!d%VJ z2iYC|;YOS;2RCmx4$`1(8u!2uq}0CJ{Tfav}@4tJU9}STYS%da3pi;e{dwx{{=_7 zQi-6#fJ`vXdiQGYCH_Fcq$7rHB1Q6B#ERBPqt$jw0*^nr4i->PDhbJ`{LLh3z5!Mm_Z^p~0MWkQ7?sn^vp9VPvZ*ZD&KTZM zTu$gUtyD@+*|q|mtFy}ZPkBo@BUTss#CUw~L36_`0GZzRh+Mlw)Hek%rG>!ESva?L z74$L@*_O7TopzQJ6Wi*aZPq+04nxYDS<@e=@Z1zdJsz$mmrWL+XW#DVIeICr7fUfe zOWPsQw-NQkROiHYHk&k0l2yL*FBWM_*yMc$+;$W|y80}JAc1|2lg;}d80pRP&QYlg zh!Zh)Fsbt|I$GxS|DHzr2S&2^pJ623&H=^a14gO*9k|r$CTK%UN6`+Ye{iJKvLRr4 zKxhni1B$3DK^XC$Rf9yLd6kX-az@Yp;fx%q`k{Oof8(YcM{{))%~5JOh9F6y;gl+a z(uF=N8Hj-idc4r&*{8UH(oMe1g2-e#toT`ITKyDz2AYS+aeMq-E=IFQ6?KnaokK8~ zPebsf?GOJVlDESrKX1U*U`X_!5>HGYo798XE_hdOZwG4L(9L?U0{JFak^hY?CTH0!#$x zqziN)Yo;c-iu4l?(qfs=54-Ht5TautOgn=U`-S-O0Fg3u%~5&` zE1c&v|1%&5Bp|0p<1(x*D9rt7a0~tQ0i`Q$mQv87NUP*6m?dTFhCRgiSrXFZU zjQ&uL1P(fNG}2v}Ne%2=MURfVrmm<{~V6q0F2;EBC)iv6sQ+m&IFZ5Gv@{uh~|e3 z$fK8L$sNF^#I?Kt#u6HK%d48L`XoiplNXn7+EhqXxCGJ4`x6jjFR9Qj9LNwv=f+QT zy!R;dk0__hrk-LG45xD6@s9@9yfu&Wc5CMwCR%FgoC-%|5ImJ& z3}v_Cujnpm;LN z#Wl+d%Nz!=-GRWhmqYYrx$QPirHEWDfv_+Go=JAz#I6=O~#D?>^Q$$Lfh8GhFJh1 zbjlq8)5LJpQ<(vXUu-lcs^9XT8WaWgdxNfld!-o_yh0EzPx0WZL?iN7-#Phi)@EU~wLpj+wJ zYQzVGC7pBE<1y0Yp#}bF?r4ui*zd{41_DyihH0%Z(fF4WYL9-()lJd`_Gs$8vG;iO zbw*T9$OgZG)LZJM8SId2P;Pw!p9I>Oo(k<#j%UNrrx~ zW!nB;<27sAm_c2~ucGdlN%x7}#<%M^fLo=h!V=qauj{7mgd2B4Iv%nN)r+>>zAZ~HZ^UR`uHOv4eXzwR2ywPl*wVX_HTTH6 zxtFUbLZ6ahA|HjImI~fglwoBYy_+AJrIzwF{A~^sO*Ja*$&wAgBZ%%OKwT_^0_OD# zq#MS}NHs?}xz-DSxvxFpFSa)3w{@RXz^UFCpXSaOa>4uUQyNFI#qU0}8jGcX<5J@6Eh<)73TIRn@V$otDBG);#&j1J(MAKHlxty`p{Di-zyE>=V30C8?qWk#pzxU@XP7$#Kye z9&bjk_?##x*RnZWy_su2$W|@gE!$5HPRYjPwqK)P9DeAsQB9<8!um|ck2kU#d?>v; zHB58T>a$5G*f@FWDnetoq%aS+GBQQ0&Uv+h)#crqa7$f81d;b1={OCw1N)UD3&dh3 z;x@L-Dt4=_p}+fm#NdJ!Zv%_?vDZ5{e+y?a?)CSCxy|K~TXo>;iRG((z5Tv@>Ba+- zQ3>8Z zJV-2C(C+7XUcRZS_J<2*uWL7p+K;&FY297`u zJFfpxAdbI6m>{2~6?5TNmg^hK@haK$Y1>`FgqWqOdSA6Utr<;l*)DW}@6B`;?uN~g z7QG&lmvmQOfE4H4TqN2%pTsh1@w#ZG0LWo7J?)Ebl?XS=U;0yjgGx`Qx+A*l+L`oc zvwnQ3B9#x-?%-51IxBxE3bgTyE3o;14=X)Vypn^BiZra8A0tiqH6k2!^K;LD&r?Ep zXA{Q+K>EnI43#<5)LaDZZ1=^CkU(=SXKm%GataOTJZPC%`h|+yHT#Q=x2kq~^0&~u z4Fqwq#LGOw^0)J%;BA^^0{6AA#$Xd40iC3m33zG)6}lUW=QGEWO|dbbEX-NL*0zAM zP2}@+uaId+5qhN*sPnUx7c%_*7nK?j1{22frqOSZs+Vg+0^Yg5&_Iu#!A!K!2!AN1 z^F=+Wv!iAn4w>1F{CN{awGnB_b#_{)5m3(#8vk;y(Q0aSRlRxl%Nv_ecLo(-9mVMT z1zp#mA55~%&a~0<1vw#ngPPnbDVb`y`N#4-XSALjt#4eHHGI_M(2&mb#GIk*%&9Y~ zYtjw9rryJgLO%XD5#-{J_15HppLQ;*1tQ9H3FB4@HVv3w zFd4}m>vrzY4Gj%>|9bnn9DJk27THC$GpKfhspx|3(ME;rfI4bzP4wowY%86bZuPv0 zvTd51BLXcQD~cMIrTh?d5|F_gP3`Teq{KyXcwz-dzexGAHGha4d;3FW87ZDqF^)#V z(#8@gR1+so#LK)-!SveEMWb_up0>_$$Ho!iqK1km9o4GJ3f1?li*(p>q~i)@9rdeI zq63e@!h)0aD28anwfEG4G+LPzwn?E^sf)jX{{}mitA6h_gMjRtSi7xNah^;!7L#C zkgzsoppzOi*jgwhQDqr%I>OdMq!d@Z^|(jYFO0x+yV3A`dV)ooxi`O7V=Eg+WiWNU zUKhf7-NNgsCzF0zT6$K3aZQ(#%?;WF@HCA3rhmGh=uY9Lb?vsjW?zkJuipe(F!IyfN?WW1mWXgOYmrfkj%6 z<4s(#TAu{3-<{NWgAE<@B~(^b>DyNmE|GuQ-dqrE%9s*77bNO(m1cpiuQvxFU^Q2z zGnyD`Y3?stPiA?QD#_M$i-!H!r%iHjQL~PdZ+3KfX)gEDtr-{B2@U>oIXh7ebVG!4!Rw$k)8&r^b^p_)hJ2k10m-5W&bQ!@}FwEbsF=vIT zFQF+X_$u?Qn@jFRTt#oEYtr1t3uhMdYL#$SGReX}(k5MpNg`WV>>@>lD=wI^zW6xx zh%+R%h&I?mnU~7YS|mD&kUO*bbBvSfSsFX-=`V{dP;X7+qP)+Rmm`_bQ9q4fn9}D- zIRYiPU8x^FE##x;@nGE6ZrY~j`U(93`q=D|2reNeIk>r2-}-~cGq(o)?9zKYzC>I> zdy$gJq+cBbU94gZf3b;ksu+GO_fxwA7oFh_$EA-IaOd+^U*}ZLDoB-5OKl=M`{u-x zRUONGcD215UVT#fWb_ygF(SYOdU;M0*JIVmvMSvPSmh-!lJUaleIZq8x?Cjr_ zAqa*9g~VZlz1jJcInqN#NizOjH2`4fU|)l3?cCjch!nRL5(%O)zB+Sb1^*R(nH~m( zBS9?Yf1`ZF2!kH~e~=r@FzE9h$mmNm1{gg6d{R2xvC9Y;6vGN)sbYUpRDiH3kR2Yw z4TF?Xpa9k2q?9?7xA!WL7Y02f$y5pVnV2){#t7llC@ zte_;d*&iKauOK`MWMelM`;IDZ6vFIlW6)7FD9&Xs`K`{CXzPfVadgGo6Xm5n-0Y!A zR!|(=l7aNmAm$jQFZ%@xB;bt1b)Eyj-o^GW;v1GwC`AQh-$Q%^%3}qE(GlQRcKA3D zU5PUL_v8CKfhdQ^AeauC=aWDv0S$^s92_SD9AbV_<2Pj9-&D$dL}LH!ZT0{FmIH*8 zC+&{E8~6mc5WT<3!hVc7rP7Qd51ju3Um6A>BQ{VBb2v)-07`rmgi_f+Re1RV2o1A= zXWuz)2%iY6U2JhkVwI7GPNC)2l=2yWzpOOUT zuu6RZBL={s1$Iyvb6AZ#0GWlsA#n~+5cAIug`(~Kdp2F8hC@yq6am~@bf5$diU5|< X!l4olke8Vs;0IP|0D#0uX$JfSo!4Z} delta 83658 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 z

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 Y2(K#gFtC5wk%B*!aNx?IgL6atU$aLIR{#J2 diff --git a/org.eclipse.titanium/src/org/eclipse/titanium/markers/spotters/implementation/InfiniteLoop.java b/org.eclipse.titanium/src/org/eclipse/titanium/markers/spotters/implementation/InfiniteLoop.java index 8222a9e73..1182d143d 100644 --- a/org.eclipse.titanium/src/org/eclipse/titanium/markers/spotters/implementation/InfiniteLoop.java +++ b/org.eclipse.titanium/src/org/eclipse/titanium/markers/spotters/implementation/InfiniteLoop.java @@ -75,6 +75,9 @@ public class InfiniteLoop { } Value finalExpression = s.getFinalExpression(); + if (finalExpression == null) { + return; + } CompilationTimeStamp timestamp = CompilationTimeStamp.getBaseTimestamp(); finalExpression.setLoweridToReference(timestamp); IValue lastValue = finalExpression.getValueRefdLast(timestamp, Expected_Value_type.EXPECTED_DYNAMIC_VALUE, null); diff --git a/org.eclipse.titanium/src/org/eclipse/titanium/markers/spotters/implementation/IterateOnWrongArray.java b/org.eclipse.titanium/src/org/eclipse/titanium/markers/spotters/implementation/IterateOnWrongArray.java index 664cc2d8f..84d40f18f 100644 --- a/org.eclipse.titanium/src/org/eclipse/titanium/markers/spotters/implementation/IterateOnWrongArray.java +++ b/org.eclipse.titanium/src/org/eclipse/titanium/markers/spotters/implementation/IterateOnWrongArray.java @@ -69,6 +69,9 @@ public class IterateOnWrongArray extends BaseModuleCodeSmellSpotter { //find the array over which the loop iterates Value finalExpr = fs.getFinalExpression(); FinalExprVisitor exprVisitor = new FinalExprVisitor(); + if (finalExpr == null) { + return; + } finalExpr.accept(exprVisitor); List arraysIterated = exprVisitor.getArraysIterated(); if (arraysIterated.isEmpty()) { diff --git a/org.eclipse.titanium/src/org/eclipse/titanium/markers/spotters/implementation/Lazy.java b/org.eclipse.titanium/src/org/eclipse/titanium/markers/spotters/implementation/Lazy.java index 10e33bf83..5fec4d66d 100644 --- a/org.eclipse.titanium/src/org/eclipse/titanium/markers/spotters/implementation/Lazy.java +++ b/org.eclipse.titanium/src/org/eclipse/titanium/markers/spotters/implementation/Lazy.java @@ -43,7 +43,7 @@ import org.eclipse.titanium.markers.types.CodeSmellType; * Also ... if an "in" parameter is not used on every possible execution path, * the code might become faster if it is set as @lazy. * - * @author Péter Oláh + * @author Peter Olah */ public class Lazy extends BaseModuleCodeSmellSpotter { private static final String ERROR_MESSAGE = "The {0} parameter should {1}be @lazy"; @@ -109,7 +109,7 @@ public class Lazy extends BaseModuleCodeSmellSpotter { * Def_Altstep or Def_Function or Def_Testcase as root because it is the * StartNode. * - * @author Péter Oláh + * @author Peter Olah */ public class RelevantNodeBuilder extends ASTVisitor { @@ -226,7 +226,7 @@ public class Lazy extends BaseModuleCodeSmellSpotter { /** * This class collects default and in FormalParameters. * - * @author Péter Oláh + * @author Peter Olah */ public class RelevantFormalParameterCollector extends ASTVisitor { private List items; diff --git a/org.eclipse.titanium/src/org/eclipse/titanium/markers/spotters/implementation/PrivateViaPublic.java b/org.eclipse.titanium/src/org/eclipse/titanium/markers/spotters/implementation/PrivateViaPublic.java index f1b740a0c..5d2acd4c0 100644 --- a/org.eclipse.titanium/src/org/eclipse/titanium/markers/spotters/implementation/PrivateViaPublic.java +++ b/org.eclipse.titanium/src/org/eclipse/titanium/markers/spotters/implementation/PrivateViaPublic.java @@ -40,7 +40,7 @@ import org.eclipse.titanium.markers.types.CodeSmellType; * parts. PrivateViaPublic.Field class marks references and explicit field * assignments. PrivateViaPublic.Value class marks value of private field assignments. * - * @author Péter Oláh + * @author Peter Olah */ public class PrivateViaPublic { diff --git a/org.eclipse.titanium/src/org/eclipse/titanium/markers/types/CodeSmellType.java b/org.eclipse.titanium/src/org/eclipse/titanium/markers/types/CodeSmellType.java index bf1b9407d..8d2f28e00 100644 --- a/org.eclipse.titanium/src/org/eclipse/titanium/markers/types/CodeSmellType.java +++ b/org.eclipse.titanium/src/org/eclipse/titanium/markers/types/CodeSmellType.java @@ -36,11 +36,11 @@ public enum CodeSmellType implements ProblemType{ MISSING_FRIEND("Missing friend module", 0.0, 0.5, 3.5), MISSING_IMPORT("Missing import", 0.0, 0.5, 3.5), MODULENAME_IN_DEFINITION("Module name in definition", 0.0, 1.0, 3.5), - LAZY("Lazy formalparameter", 0.0, 2.0, 5.0), + LAZY("Lazy formalparameter", 0.5, 0.5, 1.0), LOGIC_INVERSION("Logic inversion", 0.0, 0.5, 3.5), NONPRIVATE_PRIVATE("Definition should be private", 0.0, 0.5, 4.5), - PRIVATE_FIELD_VIA_PUBLIC("Private field wrapped into public definition", 0.0, 0.0, 0.0), - PRIVATE_VALUE_VIA_PUBLIC("Private field wrapped into public definition", 0.0, 0.0, 0.0), + PRIVATE_FIELD_VIA_PUBLIC("Private field wrapped into public definition", 1.0, 2.0, 6.5), + PRIVATE_VALUE_VIA_PUBLIC("Private field wrapped into public definition", 1.0, 2.0, 6.5), READING_OUT_PAR_BEFORE_WRITTEN("Reading out parameter before written", 0.0, 0.5, 2.0), READONLY_LOC_VARIABLE("Readonly local variable", 0.0, 2.0, 5.0), READONLY_OUT_PARAM("Readonly out formal parameter", 0.0, 2.0, 5.0), -- GitLab