Commit af7db825 authored by toezen1's avatar toezen1
Browse files

adding of flag variables to control symboltable creation

parent 26872ba5
<!--
******************************************************************************
MontiCAR Modeling Family, www.se-rwth.de
Copyright (c) 2017, Software Engineering Group at RWTH Aachen,
All rights reserved.
This project is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
......@@ -11,9 +14,11 @@
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this project. If not, see <http://www.gnu.org/licenses/>.
*******************************************************************************
-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
......@@ -25,7 +30,7 @@
<groupId>de.monticore.lang.monticar</groupId>
<artifactId>embedded-montiarc</artifactId>
<version>0.0.3</version>
<version>0.0.3.3</version>
<!-- == PROJECT DEPENDENCIES ============================================= -->
......@@ -41,9 +46,9 @@
<monticore.version>4.5.2.1</monticore.version>
<se-commons.version>1.7.7</se-commons.version>
<mc.grammars.assembly.version>0.0.6-SNAPSHOT</mc.grammars.assembly.version>
<languages.version>4.0.1-SNAPSHOT</languages.version>
<SIUnit.version>0.0.6-SNAPSHOT</SIUnit.version>
<struct.version>0.0.3-SNAPSHOT</struct.version>
<languages.version>4.0.1-SNAPSHOT</languages.version>
<SIUnit.version>0.0.6</SIUnit.version>
<struct.version>0.0.12-20180605.175543-7</struct.version>
<Common-MontiCar.version>0.0.3-SNAPSHOT</Common-MontiCar.version>
......@@ -51,7 +56,7 @@
<guava.version>18.0</guava.version>
<junit.version>4.12</junit.version>
<logback.version>1.1.2</logback.version>
<jscience.version>4.3.1</jscience.version>
<jscience.version>4.3.1</jscience.version>
<antlr.version>4.5.1</antlr.version>
<jsr305.version>3.0.0</jsr305.version>
<!-- .. Plugins ....................................................... -->
......@@ -223,7 +228,7 @@
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
</dependency>
<dependency>
<groupId>org.jscience</groupId>
<artifactId>jscience</artifactId>
......@@ -255,12 +260,12 @@
<build>
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-webdav-jackrabbit</artifactId>
<version>${wagon.provider.version}</version>
</extension>
</extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-webdav-jackrabbit</artifactId>
<version>${wagon.provider.version}</version>
</extension>
</extensions>
<plugins>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
......@@ -403,7 +408,7 @@
</execution>
</executions>
</plugin>
<!-- to add copyright information automatically-->
<!-- to add copyright information automatically-->
<plugin>
<groupId>com.mycila</groupId>
<artifactId>license-maven-plugin</artifactId>
......@@ -430,40 +435,40 @@
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
</configuration>
</plugin>
<plugin>
<groupId>org.eluder.coveralls</groupId>
<artifactId>coveralls-maven-plugin</artifactId>
<version>4.3.0</version>
<configuration>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.7</version>
<configuration>
<format>xml</format>
<maxmem>256m</maxmem>
<aggregate>true</aggregate>
<instrumentation>
<excludes>
<exclude>de/monticore/lang/embeddedmontiarc/embeddedmontiarc/_parser/*.class</exclude>
<exclude>de/monticore/lang/embeddedmontiarc/embeddedmontiarc/_visitor/*.class</exclude>
<exclude>de/monticore/lang/embeddedmontiarc/embeddedmontiarc/_od/*.class</exclude>
<exclude>de/monticore/lang/embeddedmontiarc/embeddedmontiarc/_cocos/*.class</exclude>
<exclude>de/monticore/lang/embeddedmontiarc/embeddedmontiarc/_ast/*.class</exclude>
</excludes>
</instrumentation>
</configuration>
</plugin>
</plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
</configuration>
</plugin>
<plugin>
<groupId>org.eluder.coveralls</groupId>
<artifactId>coveralls-maven-plugin</artifactId>
<version>4.3.0</version>
<configuration>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.7</version>
<configuration>
<format>xml</format>
<maxmem>256m</maxmem>
<aggregate>true</aggregate>
<instrumentation>
<excludes>
<exclude>de/monticore/lang/embeddedmontiarc/embeddedmontiarc/_parser/*.class</exclude>
<exclude>de/monticore/lang/embeddedmontiarc/embeddedmontiarc/_visitor/*.class</exclude>
<exclude>de/monticore/lang/embeddedmontiarc/embeddedmontiarc/_od/*.class</exclude>
<exclude>de/monticore/lang/embeddedmontiarc/embeddedmontiarc/_cocos/*.class</exclude>
<exclude>de/monticore/lang/embeddedmontiarc/embeddedmontiarc/_ast/*.class</exclude>
</excludes>
</instrumentation>
</configuration>
</plugin>
</plugins>
</build>
<distributionManagement>
......@@ -477,13 +482,13 @@
<url>file://${project.build.directory}/external-dependencies</url>
</snapshotRepository>
</distributionManagement>
<reporting>
<reporting>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.7</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.7</version>
</plugin>
</plugins>
</reporting>
</reporting>
</project>
\ No newline at end of file
......@@ -21,267 +21,44 @@
*******************************************************************************
-->
<!--
| This is the configuration file for Maven. It can be specified at two levels:
|
| 1. User Level. This settings.xml file provides configuration for a single user,
| and is normally provided in ${user.home}/.m2/settings.xml.
|
| NOTE: This location can be overridden with the CLI option:
|
| -s /path/to/user/settings.xml
|
| 2. Global Level. This settings.xml file provides configuration for all Maven
| users on a machine (assuming they're all using the same Maven
| installation). It's normally provided in
| ${maven.conf}/settings.xml.
|
| NOTE: This location can be overridden with the CLI option:
|
| -gs /path/to/global/settings.xml
|
| The sections in this sample file are intended to give you a running start at
| getting the most out of your Maven installation. Where appropriate, the default
| values (values used when the setting is not specified) are provided.
|
|-->
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
<!-- interactiveMode
| This will determine whether maven prompts you when it needs input. If set to false,
| maven will use a sensible default value, perhaps based on some other setting, for
| the parameter in question.
|
| Default: true
<interactiveMode>true</interactiveMode>
-->
<!-- offline
| Determines whether maven should attempt to connect to the network when executing a build.
| This will have an effect on artifact downloads, artifact deployment, and others.
|
| Default: false
<offline>false</offline>
-->
<!-- pluginGroups
| This is a list of additional group identifiers that will be searched when resolving plugins by their prefix, i.e.
| when invoking a command line like "mvn prefix:goal". Maven will automatically add the group identifiers
| "org.apache.maven.plugins" and "org.codehaus.mojo" if these are not already contained in the list.
|-->
<pluginGroups>
<!-- pluginGroup
| Specifies a further group identifier to use for plugin lookup.
<pluginGroup>com.your.plugins</pluginGroup>
-->
<pluginGroup>org.mortbay.jetty</pluginGroup>
<pluginGroup>de.topobyte</pluginGroup>
<pluginGroup>org.mortbay.jetty</pluginGroup>
<pluginGroup>de.topobyte</pluginGroup>
</pluginGroups>
<!-- proxies
| This is a list of proxies which can be used on this machine to connect to the network.
| Unless otherwise specified (by system property or command-line switch), the first proxy
| specification in this list marked as active will be used.
|-->
<proxies>
<!-- proxy
| Specification for one proxy, to be used in connecting to the network.
|
<proxy>
<id>optional</id>
<active>true</active>
<protocol>http</protocol>
<username>proxyuser</username>
<password>proxypass</password>
<host>proxy.host.net</host>
<port>80</port>
<nonProxyHosts>local.net|some.host.com</nonProxyHosts>
</proxy>
-->
</proxies>
<!-- servers
| This is a list of authentication profiles, keyed by the server-id used within the system.
| Authentication profiles can be used whenever maven must make a connection to a remote server.
|-->
<servers>
<!-- server
| Specifies the authentication information to use when connecting to a particular server, identified by
| a unique name within the system (referred to by the 'id' attribute below).
|
| NOTE: You should either specify username/password OR privateKey/passphrase, since these pairings are
| used together.
|
<server>
<id>deploymentRepo</id>
<username>repouser</username>
<password>repopwd</password>
<id>se-nexus</id>
<username>cibuild</username>
<password>${env.cibuild}</password>
</server>
-->
<server>
<server>
<id>github</id>
<username>travisbuilduser</username>
<password>${env.travisbuilduserpassword}</password>
</server>
<!-- Another sample, using keys to authenticate.
<server>
<id>siteServer</id>
<privateKey>/path/to/private/key</privateKey>
<passphrase>optional; leave empty if not used.</passphrase>
</server>
-->
</servers>
<!-- mirrors
| This is a list of mirrors to be used in downloading artifacts from remote repositories.
|
| It works like this: a POM may declare a repository to use in resolving certain artifacts.
| However, this repository may have problems with heavy traffic at times, so people have mirrored
| it to several places.
|
| That repository definition will have a unique id, so we can create a mirror reference for that
| repository, to be used as an alternate download site. The mirror site will be the preferred
| server for that repository.
|-->
<mirrors>
<!-- mirror
| Specifies a repository mirror site to use instead of a given repository. The repository that
| this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
| for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
|
<mirror>
<id>mirrorId</id>
<mirrorOf>repositoryId</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://my.repository.com/repo/path</url>
</mirror>
-->
<mirror>
<id>github</id>
<mirrorOf>*</mirrorOf>
<url>https://raw.githubusercontent.com/EmbeddedMontiArc/external-dependencies/master/</url>
</mirror>
<mirror>
<id>maven-central</id>
<mirrorOf>central</mirrorOf>
<url>http://central.maven.org/maven2/</url>
</mirror>
<mirror>
<id>eclipse</id>
<mirrorOf>eclipse</mirrorOf>
<url>https://repo.eclipse.org/content/groups/releases/</url>
</mirror>
<!--
<mirror>
<id>topobyte</id>
<id>se-nexus</id>
<mirrorOf>external:*</mirrorOf>
<url>http://http://mvn.topobyte.de/</url>
<url>https://nexus.se.rwth-aachen.de/content/groups/public</url>
</mirror>
-->
</mirrors>
<!-- profiles
| This is a list of profiles which can be activated in a variety of ways, and which can modify
| the build process. Profiles provided in the settings.xml are intended to provide local machine-
| specific paths and repository locations which allow the build to work in the local environment.
|
| For example, if you have an integration testing plugin - like cactus - that needs to know where
| your Tomcat instance is installed, you can provide a variable here such that the variable is
| dereferenced during the build process to configure the cactus plugin.
|
| As noted above, profiles can be activated in a variety of ways. One way - the activeProfiles
| section of this document (settings.xml) - will be discussed later. Another way essentially
| relies on the detection of a system property, either matching a particular value for the property,
| or merely testing its existence. Profiles can also be activated by JDK version prefix, where a
| value of '1.4' might activate a profile when the build is executed on a JDK version of '1.4.2_07'.
| Finally, the list of active profiles can be specified directly from the command line.
|
| NOTE: For profiles defined in the settings.xml, you are restricted to specifying only artifact
| repositories, plugin repositories, and free-form properties to be used as configuration
| variables for plugins in the POM.
|
|-->
<profiles>
<!-- profile
| Specifies a set of introductions to the build process, to be activated using one or more of the
| mechanisms described above. For inheritance purposes, and to activate profiles via <activatedProfiles/>
| or the command line, profiles have to have an ID that is unique.
|
| An encouraged best practice for profile identification is to use a consistent naming convention
| for profiles, such as 'env-dev', 'env-test', 'env-production', 'user-jdcasey', 'user-brett', etc.
| This will make it more intuitive to understand what the set of introduced profiles is attempting
| to accomplish, particularly when you only have a list of profile id's for debug.
|
| This profile example uses the JDK version to trigger activation, and provides a JDK-specific repo.
<profile>
<id>jdk-1.4</id>
<activation>
<jdk>1.4</jdk>
</activation>
<repositories>
<repository>
<id>jdk14</id>
<name>Repository for JDK 1.4 builds</name>
<url>http://www.myhost.com/maven/jdk14</url>
<layout>default</layout>
<snapshotPolicy>always</snapshotPolicy>
</repository>
</repositories>
</profile>
-->
<!--
| Here is another profile, activated by the system property 'target-env' with a value of 'dev',
| which provides a specific path to the Tomcat instance. To use this, your plugin configuration
| might hypothetically look like:
|
| ...
| <plugin>
| <groupId>org.myco.myplugins</groupId>
| <artifactId>myplugin</artifactId>
|
| <configuration>
| <tomcatLocation>${tomcatPath}</tomcatLocation>
| </configuration>
| </plugin>
| ...
|
| NOTE: If you just wanted to inject this configuration whenever someone set 'target-env' to
| anything, you could just leave off the <value/> inside the activation-property.
|
<profile>
<id>env-dev</id>
<activation>
<property>
<name>target-env</name>
<value>dev</value>
</property>
</activation>
<properties>
<tomcatPath>/path/to/tomcat/instance</tomcatPath>
</properties>
</profile>
-->
<profile>
<id>github</id>
<!-- enable snapshots for the built in central repo to direct -->
<!-- all requests to nexus via the mirror -->
<id>se-nexus</id>
<repositories>
<repository>
<id>central</id>
......@@ -289,59 +66,19 @@
<releases><enabled /></releases>
<snapshots><enabled /></snapshots>
</repository>
<repository>
<id>eclipse</id>
<url>https://repo.eclipse.org/content/groups/releases/</url>
<releases><enabled /></releases>
<snapshots><enabled /></snapshots>
</repository>
<repository>
<id>topobyte</id>
<url>http://mvn.topobyte.de/</url>
<releases><enabled /></releases>
<snapshots><enabled /></snapshots>
</repository>
<repository>
<id>maven-central</id>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
<url>http://central.maven.org/maven2/</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>maven-central</id>
<url>http://central.maven.org/maven2/</url>
<releases><enabled /></releases>
<snapshots><enabled /></snapshots>
</pluginRepository>
<pluginRepository>
<id>eclipse</id>
<url>https://repo.eclipse.org/content/groups/releases/</url>
<id>central</id>
<url>http://central</url>
<releases><enabled /></releases>
<snapshots><enabled /></snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
</profiles>
<!-- activeProfiles
| List of profiles that are active for all builds.
|
<activeProfiles>
<activeProfile>alwaysActiveProfile</activeProfile>
<activeProfile>anotherAlwaysActiveProfile</activeProfile>
</activeProfiles>
-->
<activeProfiles>
<activeProfile>github</activeProfile>
<activeProfile>se-nexus</activeProfile>
</activeProfiles>
</settings>
\ No newline at end of file
......@@ -39,6 +39,7 @@ import java.util.Set;
*/
public class EmbeddedMontiArcExpandedComponentInstanceSymbolCreator {
public static boolean createInstances = true;
protected LinkedHashSet<ComponentSymbol> topComponents = new LinkedHashSet<>();
public EmbeddedMontiArcExpandedComponentInstanceSymbolCreator() {
......@@ -109,20 +110,21 @@ public class EmbeddedMontiArcExpandedComponentInstanceSymbolCreator {
for (ConnectorSymbol connectorSymbol : cmp.getConnectors())
Log.info(connectorSymbol.toString(), "Building Connector:");
// add sub components
for (ComponentInstanceSymbol inst : cmp.getSubComponents()) {
// System.err.println("would create now: " + inst.getName() + "[" + inst.getComponentType().getFullName() + "]");
Log.info(inst.getComponentType().getReferencedSymbol().howManyResolutionDeclarationSymbol() + "", "Important:");
Log.debug(inst.toString(), "ComponentInstance CreateInstance PreSub");
builder.addSubComponent(
createInstance(inst.getComponentType(), filters, inst.getComponentType().getReferencedSymbol().getResolutionDeclarationSymbols())
.setName(inst.getName())
.addActualTypeArguments(inst.getComponentType().getFormalTypeParameters(),
inst.getComponentType().getActualTypeArguments()).addResolvingFilters(filters).addResolutionDeclarationSymbols(inst.getComponentType().getReferencedSymbol().getResolutionDeclarationSymbols()).addParameters(inst.getComponentType().getReferencedSymbol().getParameters()).addArguments(inst.getComponentType().getReferencedSymbol().getArguments()).build());
Log.debug(inst.getInstanceInformation().get().getInstanceNumberForArgumentIndex(0) + "", "InstanceInformation:");
Log.debug(inst.toString(), "ComponentInstance CreateInstance PostSub");
if (createInstances) {
for (ComponentInstanceSymbol inst : cmp.getSubComponents()) {
// System.err.println("would create now: " + inst.getName() + "[" + inst.getComponentType().getFullName() + "]");
Log.info(inst.getComponentType().getReferencedSymbol().howManyResolutionDeclarationSymbol() + "", "Important:");
Log.debug(inst.toString(), "ComponentInstance CreateInstance PreSub");
builder.addSubComponent(
createInstance(inst.getComponentType(), filters, inst.getComponentType().getReferencedSymbol().getResolutionDeclarationSymbols())
.setName(inst.getName())
.addActualTypeArguments(inst.getComponentType().getFormalTypeParameters(),
inst.getComponentType().getActualTypeArguments()).addResolvingFilters(filters).addResolutionDeclarationSymbols(inst.getComponentType().getReferencedSymbol().getResolutionDeclarationSymbols()).addParameters(inst.getComponentType().getReferencedSymbol().getParameters()).addArguments(inst.getComponentType().getReferencedSymbol().getArguments()).build());
Log.debug(inst.getInstanceInformation().get().getInstanceNumberForArgumentIndex(0) + "", "InstanceInformation:");
Log.debug(inst.toString(), "ComponentInstance CreateInstance PostSub");
}
}
// add inherited ports and sub components
for (ComponentSymbol superCmp = cmp;
superCmp.getSuperComponent().isPresent();
......
......@@ -49,6 +49,7 @@ import static de.monticore.lang.embeddedmontiarc.embeddedmontiarc._symboltable.E
*/
public class EmbeddedMontiArcModelLoader extends EmbeddedMontiArcModelLoaderTOP {
public static boolean enableTags = true;
public EmbeddedMontiArcModelLoader(EmbeddedMontiArcLanguage language) {
super(language);
}
......@@ -72,10 +73,12 @@ public class EmbeddedMontiArcModelLoader extends EmbeddedMontiArcModelLoaderTOP
for (ASTEMACompilationUnit ast : asts) {
createSymbolTableFromAST(ast, qualifiedModelName, enclosingScope, ResolvingConfiguration);
// load tags of ast
for (ASTTaggingUnit unit : loadTags(ast.getPackage(), modelPath)) {
this.getModelingLanguage().getTagSymbolCreators().stream()
.forEachOrdered(tc -> tc.create(unit, enclosingScope));
if(enableTags) {
// load tags of ast
for (ASTTaggingUnit unit : loadTags(ast.getPackage(), modelPath)) {
this.getModelingLanguage().getTagSymbolCreators().stream()
.forEachOrdered(tc -> tc.create(unit, enclosingScope));
}
}
}
......
......@@ -74,6 +74,7 @@ import static de.monticore.lang.embeddedmontiarc.embeddedmontiarc._symboltable.E
*/
public class EmbeddedMontiArcSymbolTableCreator extends EmbeddedMontiArcSymbolTableCreatorTOP {
public static boolean createInstances = true;
private String compilationUnitPackage = "";
private EmbeddedMontiArcExpandedComponentInstanceSymbolCreator instanceSymbolCreator
= new EmbeddedMontiArcExpandedComponentInstanceSymbolCreator();
......@@ -136,9 +137,11 @@ public class EmbeddedMontiArcSymbolTableCreator extends EmbeddedMontiArcSymbolTa
// creates all instances which are created through the top level component
System.out.println("endVisit of " + node.getComponent().getSymbol().get().getFullName()); //,"MontiArcSymbolTableCreator");
// new Error().printStackTrace();
instanceSymbolCreator.createInstances(
(ComponentSymbol) (Log.errorIfNull(node.getComponent().getSymbol().orElse(null)))
);
if(createInstances) {
instanceSymbolCreator.createInstances(
(ComponentSymbol) (Log.errorIfNull(node.getComponent().getSymbol().orElse(null)))
);
}
}
/**
......
/**
*
* ******************************************************************************
* MontiCAR Modeling Family, www.se-rwth.de
* Copyright (c) 2017, Software Engineering Group at RWTH Aachen,
* All rights reserved.
*
* This project is free software; you can redistribute it and/or