diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..459016f
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+target/
+.settings/
+.classpath
+*.versionsBackup
diff --git a/model/META-INF/MANIFEST.MF b/model/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..bdea6ef
--- /dev/null
+++ b/model/META-INF/MANIFEST.MF
@@ -0,0 +1,16 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.nasdanika.models.java.module;singleton:=true
+Automatic-Module-Name: org.nasdanika.models.java.module
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: .
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-17
+Export-Package: org.nasdanika.models.java.module,
+ org.nasdanika.models.java.module.impl,
+ org.nasdanika.models.java.module.util
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.emf.ecore;visibility:=reexport
+Bundle-ActivationPolicy: lazy
diff --git a/model/model/java-module.ecore b/model/model/java-module.ecore
new file mode 100644
index 0000000..ab455ae
--- /dev/null
+++ b/model/model/java-module.ecore
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/model/model/java-module.genmodel b/model/model/java-module.genmodel
new file mode 100644
index 0000000..5204fbc
--- /dev/null
+++ b/model/model/java-module.genmodel
@@ -0,0 +1,40 @@
+
+
+ java-module.ecore
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/model/pom.xml b/model/pom.xml
new file mode 100644
index 0000000..de85ad7
--- /dev/null
+++ b/model/pom.xml
@@ -0,0 +1,67 @@
+
+
+ 4.0.0
+
+ org.nasdanika.models.java.module
+ 2026.3.0
+ parent
+ ..
+
+ model
+ jar
+ Ecore Java Module Model
+
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+ 3.5.0
+
+
+ package
+
+ jar
+
+
+ model
+
+ model/**
+
+ ${project.basedir}
+
+
+
+
+
+ org.jacoco
+ jacoco-maven-plugin
+ ${jacoco.version}
+
+
+ default-prepare-agent
+
+ prepare-agent
+
+
+
+ report
+ verify
+
+ report
+
+
+
+
+
+
+
+
+
+ org.eclipse.emf
+ org.eclipse.emf.ecore
+ 2.41.0
+
+
+
diff --git a/model/src/main/java/org/nasdanika/models/java/module/Exports.java b/model/src/main/java/org/nasdanika/models/java/module/Exports.java
new file mode 100644
index 0000000..bb95a23
--- /dev/null
+++ b/model/src/main/java/org/nasdanika/models/java/module/Exports.java
@@ -0,0 +1,57 @@
+/**
+ */
+package org.nasdanika.models.java.module;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ *
+ * A representation of the model object 'Exports '.
+ *
+ *
+ *
+ * An exports directive making a package accessible to other modules.
+ *
+ *
+ *
+ * The following features are supported:
+ *
+ *
+ * {@link org.nasdanika.models.java.module.Exports#getName Name }
+ * {@link org.nasdanika.models.java.module.Exports#getModules Modules }
+ *
+ *
+ * @see org.nasdanika.models.java.module.JavaModulePackage#getExports()
+ * @model
+ * @generated
+ */
+public interface Exports extends EObject {
+ /**
+ * Returns the value of the 'Name ' attribute.
+ * @return the value of the 'Name ' attribute.
+ * @see #setName(String)
+ * @see org.nasdanika.models.java.module.JavaModulePackage#getExports_Name()
+ * @model
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.nasdanika.models.java.module.Exports#getName Name }' attribute.
+ * @param value the new value of the 'Name ' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+ /**
+ * Returns the value of the 'Modules ' attribute list.
+ * @return the value of the 'Modules ' attribute list.
+ * @see org.nasdanika.models.java.module.JavaModulePackage#getExports_Modules()
+ * @model
+ * @generated
+ */
+ EList getModules();
+
+} // Exports
diff --git a/model/src/main/java/org/nasdanika/models/java/module/JavaModuleFactory.java b/model/src/main/java/org/nasdanika/models/java/module/JavaModuleFactory.java
new file mode 100644
index 0000000..a4abf8d
--- /dev/null
+++ b/model/src/main/java/org/nasdanika/models/java/module/JavaModuleFactory.java
@@ -0,0 +1,73 @@
+/**
+ */
+package org.nasdanika.models.java.module;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ *
+ * The Factory for the model.
+ * It provides a create method for each non-abstract class of the model.
+ *
+ * @see org.nasdanika.models.java.module.JavaModulePackage
+ * @generated
+ */
+public interface JavaModuleFactory extends EFactory {
+ /**
+ * The singleton instance of the factory.
+ *
+ *
+ * @generated
+ */
+ JavaModuleFactory eINSTANCE = org.nasdanika.models.java.module.impl.JavaModuleFactoryImpl.init();
+
+ /**
+ * Returns a new object of class 'Module '.
+ * @return a new object of class 'Module '.
+ * @generated
+ */
+ Module createModule();
+
+ /**
+ * Returns a new object of class 'Requires '.
+ * @return a new object of class 'Requires '.
+ * @generated
+ */
+ Requires createRequires();
+
+ /**
+ * Returns a new object of class 'Exports '.
+ * @return a new object of class 'Exports '.
+ * @generated
+ */
+ Exports createExports();
+
+ /**
+ * Returns a new object of class 'Opens '.
+ * @return a new object of class 'Opens '.
+ * @generated
+ */
+ Opens createOpens();
+
+ /**
+ * Returns a new object of class 'Provides '.
+ * @return a new object of class 'Provides '.
+ * @generated
+ */
+ Provides createProvides();
+
+ /**
+ * Returns a new object of class 'Uses '.
+ * @return a new object of class 'Uses '.
+ * @generated
+ */
+ Uses createUses();
+
+ /**
+ * Returns the package supported by this factory.
+ * @return the package supported by this factory.
+ * @generated
+ */
+ JavaModulePackage getJavaModulePackage();
+
+} //JavaModuleFactory
diff --git a/model/src/main/java/org/nasdanika/models/java/module/JavaModulePackage.java b/model/src/main/java/org/nasdanika/models/java/module/JavaModulePackage.java
new file mode 100644
index 0000000..012c8ca
--- /dev/null
+++ b/model/src/main/java/org/nasdanika/models/java/module/JavaModulePackage.java
@@ -0,0 +1,228 @@
+/**
+ */
+package org.nasdanika.models.java.module;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ *
+ * The Package for the model.
+ * It contains accessors for the meta objects to represent
+ *
+ * each class,
+ * each feature of each class,
+ * each operation of each class,
+ * each enum,
+ * and each data type
+ *
+ *
+ *
+ * Ecore model of Java module system concepts - module, requires (transitive), exports, opens, provides, uses.
+ *
+ * @see org.nasdanika.models.java.module.JavaModuleFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface JavaModulePackage extends EPackage {
+ /**
+ * The package name.
+ *
+ *
+ * @generated
+ */
+ String eNAME = "java.module";
+
+ /**
+ * The package namespace URI.
+ *
+ *
+ * @generated
+ */
+ String eNS_URI = "ecore://nasdanika.org/models/java/module";
+
+ /**
+ * The package namespace name.
+ *
+ *
+ * @generated
+ */
+ String eNS_PREFIX = "org.nasdanika.models.java.module";
+
+ /**
+ * The singleton instance of the package.
+ *
+ *
+ * @generated
+ */
+ JavaModulePackage eINSTANCE = org.nasdanika.models.java.module.impl.JavaModulePackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.nasdanika.models.java.module.impl.ModuleImpl Module }' class.
+ * @see org.nasdanika.models.java.module.impl.ModuleImpl
+ * @see org.nasdanika.models.java.module.impl.JavaModulePackageImpl#getModule()
+ * @generated
+ */
+ int MODULE = 0;
+
+ int MODULE__NAME = 0;
+ int MODULE__REQUIRES = 1;
+ int MODULE__EXPORTS = 2;
+ int MODULE__OPENS = 3;
+ int MODULE__PROVIDES = 4;
+ int MODULE__USES = 5;
+ int MODULE_FEATURE_COUNT = 6;
+ int MODULE_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.nasdanika.models.java.module.impl.RequiresImpl Requires }' class.
+ * @see org.nasdanika.models.java.module.impl.RequiresImpl
+ * @see org.nasdanika.models.java.module.impl.JavaModulePackageImpl#getRequires()
+ * @generated
+ */
+ int REQUIRES = 1;
+
+ int REQUIRES__NAME = 0;
+ int REQUIRES__TRANSITIVE = 1;
+ int REQUIRES__STATIC = 2;
+ int REQUIRES_FEATURE_COUNT = 3;
+ int REQUIRES_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.nasdanika.models.java.module.impl.ExportsImpl Exports }' class.
+ * @see org.nasdanika.models.java.module.impl.ExportsImpl
+ * @see org.nasdanika.models.java.module.impl.JavaModulePackageImpl#getExports()
+ * @generated
+ */
+ int EXPORTS = 2;
+
+ int EXPORTS__NAME = 0;
+ int EXPORTS__MODULES = 1;
+ int EXPORTS_FEATURE_COUNT = 2;
+ int EXPORTS_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.nasdanika.models.java.module.impl.OpensImpl Opens }' class.
+ * @see org.nasdanika.models.java.module.impl.OpensImpl
+ * @see org.nasdanika.models.java.module.impl.JavaModulePackageImpl#getOpens()
+ * @generated
+ */
+ int OPENS = 3;
+
+ int OPENS__NAME = 0;
+ int OPENS__MODULES = 1;
+ int OPENS_FEATURE_COUNT = 2;
+ int OPENS_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.nasdanika.models.java.module.impl.ProvidesImpl Provides }' class.
+ * @see org.nasdanika.models.java.module.impl.ProvidesImpl
+ * @see org.nasdanika.models.java.module.impl.JavaModulePackageImpl#getProvides()
+ * @generated
+ */
+ int PROVIDES = 4;
+
+ int PROVIDES__SERVICE = 0;
+ int PROVIDES__IMPLEMENTATIONS = 1;
+ int PROVIDES_FEATURE_COUNT = 2;
+ int PROVIDES_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.nasdanika.models.java.module.impl.UsesImpl Uses }' class.
+ * @see org.nasdanika.models.java.module.impl.UsesImpl
+ * @see org.nasdanika.models.java.module.impl.JavaModulePackageImpl#getUses()
+ * @generated
+ */
+ int USES = 5;
+
+ int USES__SERVICE = 0;
+ int USES_FEATURE_COUNT = 1;
+ int USES_OPERATION_COUNT = 0;
+
+ /**
+ * Returns the meta object for class Module.
+ * @return the meta object for class Module.
+ * @see org.nasdanika.models.java.module.Module
+ * @generated
+ */
+ EClass getModule();
+ EAttribute getModule_Name();
+ EReference getModule_Requires();
+ EReference getModule_Exports();
+ EReference getModule_Opens();
+ EReference getModule_Provides();
+ EReference getModule_Uses();
+
+ EClass getRequires();
+ EAttribute getRequires_Name();
+ EAttribute getRequires_Transitive();
+ EAttribute getRequires_Static();
+
+ EClass getExports();
+ EAttribute getExports_Name();
+ EAttribute getExports_Modules();
+
+ EClass getOpens();
+ EAttribute getOpens_Name();
+ EAttribute getOpens_Modules();
+
+ EClass getProvides();
+ EAttribute getProvides_Service();
+ EAttribute getProvides_Implementations();
+
+ EClass getUses();
+ EAttribute getUses_Service();
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ JavaModuleFactory getJavaModuleFactory();
+
+ /**
+ *
+ * Defines literals for the meta objects that represent
+ *
+ * each class,
+ * each feature of each class,
+ * each operation of each class,
+ * each enum,
+ * and each data type
+ *
+ *
+ * @generated
+ */
+ interface Literals {
+ EClass MODULE = eINSTANCE.getModule();
+ EAttribute MODULE__NAME = eINSTANCE.getModule_Name();
+ EReference MODULE__REQUIRES = eINSTANCE.getModule_Requires();
+ EReference MODULE__EXPORTS = eINSTANCE.getModule_Exports();
+ EReference MODULE__OPENS = eINSTANCE.getModule_Opens();
+ EReference MODULE__PROVIDES = eINSTANCE.getModule_Provides();
+ EReference MODULE__USES = eINSTANCE.getModule_Uses();
+
+ EClass REQUIRES = eINSTANCE.getRequires();
+ EAttribute REQUIRES__NAME = eINSTANCE.getRequires_Name();
+ EAttribute REQUIRES__TRANSITIVE = eINSTANCE.getRequires_Transitive();
+ EAttribute REQUIRES__STATIC = eINSTANCE.getRequires_Static();
+
+ EClass EXPORTS = eINSTANCE.getExports();
+ EAttribute EXPORTS__NAME = eINSTANCE.getExports_Name();
+ EAttribute EXPORTS__MODULES = eINSTANCE.getExports_Modules();
+
+ EClass OPENS = eINSTANCE.getOpens();
+ EAttribute OPENS__NAME = eINSTANCE.getOpens_Name();
+ EAttribute OPENS__MODULES = eINSTANCE.getOpens_Modules();
+
+ EClass PROVIDES = eINSTANCE.getProvides();
+ EAttribute PROVIDES__SERVICE = eINSTANCE.getProvides_Service();
+ EAttribute PROVIDES__IMPLEMENTATIONS = eINSTANCE.getProvides_Implementations();
+
+ EClass USES = eINSTANCE.getUses();
+ EAttribute USES__SERVICE = eINSTANCE.getUses_Service();
+ }
+
+} //JavaModulePackage
diff --git a/model/src/main/java/org/nasdanika/models/java/module/Module.java b/model/src/main/java/org/nasdanika/models/java/module/Module.java
new file mode 100644
index 0000000..15921d5
--- /dev/null
+++ b/model/src/main/java/org/nasdanika/models/java/module/Module.java
@@ -0,0 +1,102 @@
+/**
+ */
+package org.nasdanika.models.java.module;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ *
+ * A representation of the model object 'Module '.
+ *
+ *
+ *
+ * A Java module declaration as defined in module-info.java.
+ *
+ *
+ *
+ * The following features are supported:
+ *
+ *
+ * {@link org.nasdanika.models.java.module.Module#getName Name }
+ * {@link org.nasdanika.models.java.module.Module#getRequires Requires }
+ * {@link org.nasdanika.models.java.module.Module#getExports Exports }
+ * {@link org.nasdanika.models.java.module.Module#getOpens Opens }
+ * {@link org.nasdanika.models.java.module.Module#getProvides Provides }
+ * {@link org.nasdanika.models.java.module.Module#getUses Uses }
+ *
+ *
+ * @see org.nasdanika.models.java.module.JavaModulePackage#getModule()
+ * @model
+ * @generated
+ */
+public interface Module extends EObject {
+ /**
+ * Returns the value of the 'Name ' attribute.
+ *
+ *
+ *
+ * The module name.
+ *
+ * @return the value of the 'Name ' attribute.
+ * @see #setName(String)
+ * @see org.nasdanika.models.java.module.JavaModulePackage#getModule_Name()
+ * @model
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.nasdanika.models.java.module.Module#getName Name }' attribute.
+ * @param value the new value of the 'Name ' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+ /**
+ * Returns the value of the 'Requires ' containment reference list.
+ * @return the value of the 'Requires ' containment reference list.
+ * @see org.nasdanika.models.java.module.JavaModulePackage#getModule_Requires()
+ * @model containment="true"
+ * @generated
+ */
+ EList getRequires();
+
+ /**
+ * Returns the value of the 'Exports ' containment reference list.
+ * @return the value of the 'Exports ' containment reference list.
+ * @see org.nasdanika.models.java.module.JavaModulePackage#getModule_Exports()
+ * @model containment="true"
+ * @generated
+ */
+ EList getExports();
+
+ /**
+ * Returns the value of the 'Opens ' containment reference list.
+ * @return the value of the 'Opens ' containment reference list.
+ * @see org.nasdanika.models.java.module.JavaModulePackage#getModule_Opens()
+ * @model containment="true"
+ * @generated
+ */
+ EList getOpens();
+
+ /**
+ * Returns the value of the 'Provides ' containment reference list.
+ * @return the value of the 'Provides ' containment reference list.
+ * @see org.nasdanika.models.java.module.JavaModulePackage#getModule_Provides()
+ * @model containment="true"
+ * @generated
+ */
+ EList getProvides();
+
+ /**
+ * Returns the value of the 'Uses ' containment reference list.
+ * @return the value of the 'Uses ' containment reference list.
+ * @see org.nasdanika.models.java.module.JavaModulePackage#getModule_Uses()
+ * @model containment="true"
+ * @generated
+ */
+ EList getUses();
+
+} // Module
diff --git a/model/src/main/java/org/nasdanika/models/java/module/Opens.java b/model/src/main/java/org/nasdanika/models/java/module/Opens.java
new file mode 100644
index 0000000..2145d59
--- /dev/null
+++ b/model/src/main/java/org/nasdanika/models/java/module/Opens.java
@@ -0,0 +1,57 @@
+/**
+ */
+package org.nasdanika.models.java.module;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ *
+ * A representation of the model object 'Opens '.
+ *
+ *
+ *
+ * An opens directive making a package open for deep reflection at runtime.
+ *
+ *
+ *
+ * The following features are supported:
+ *
+ *
+ * {@link org.nasdanika.models.java.module.Opens#getName Name }
+ * {@link org.nasdanika.models.java.module.Opens#getModules Modules }
+ *
+ *
+ * @see org.nasdanika.models.java.module.JavaModulePackage#getOpens()
+ * @model
+ * @generated
+ */
+public interface Opens extends EObject {
+ /**
+ * Returns the value of the 'Name ' attribute.
+ * @return the value of the 'Name ' attribute.
+ * @see #setName(String)
+ * @see org.nasdanika.models.java.module.JavaModulePackage#getOpens_Name()
+ * @model
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.nasdanika.models.java.module.Opens#getName Name }' attribute.
+ * @param value the new value of the 'Name ' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+ /**
+ * Returns the value of the 'Modules ' attribute list.
+ * @return the value of the 'Modules ' attribute list.
+ * @see org.nasdanika.models.java.module.JavaModulePackage#getOpens_Modules()
+ * @model
+ * @generated
+ */
+ EList getModules();
+
+} // Opens
diff --git a/model/src/main/java/org/nasdanika/models/java/module/Provides.java b/model/src/main/java/org/nasdanika/models/java/module/Provides.java
new file mode 100644
index 0000000..78d4162
--- /dev/null
+++ b/model/src/main/java/org/nasdanika/models/java/module/Provides.java
@@ -0,0 +1,57 @@
+/**
+ */
+package org.nasdanika.models.java.module;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ *
+ * A representation of the model object 'Provides '.
+ *
+ *
+ *
+ * A provides directive declaring that this module provides an implementation of a service interface.
+ *
+ *
+ *
+ * The following features are supported:
+ *
+ *
+ * {@link org.nasdanika.models.java.module.Provides#getService Service }
+ * {@link org.nasdanika.models.java.module.Provides#getImplementations Implementations }
+ *
+ *
+ * @see org.nasdanika.models.java.module.JavaModulePackage#getProvides()
+ * @model
+ * @generated
+ */
+public interface Provides extends EObject {
+ /**
+ * Returns the value of the 'Service ' attribute.
+ * @return the value of the 'Service ' attribute.
+ * @see #setService(String)
+ * @see org.nasdanika.models.java.module.JavaModulePackage#getProvides_Service()
+ * @model
+ * @generated
+ */
+ String getService();
+
+ /**
+ * Sets the value of the '{@link org.nasdanika.models.java.module.Provides#getService Service }' attribute.
+ * @param value the new value of the 'Service ' attribute.
+ * @see #getService()
+ * @generated
+ */
+ void setService(String value);
+
+ /**
+ * Returns the value of the 'Implementations ' attribute list.
+ * @return the value of the 'Implementations ' attribute list.
+ * @see org.nasdanika.models.java.module.JavaModulePackage#getProvides_Implementations()
+ * @model
+ * @generated
+ */
+ EList getImplementations();
+
+} // Provides
diff --git a/model/src/main/java/org/nasdanika/models/java/module/Requires.java b/model/src/main/java/org/nasdanika/models/java/module/Requires.java
new file mode 100644
index 0000000..b7fa19f
--- /dev/null
+++ b/model/src/main/java/org/nasdanika/models/java/module/Requires.java
@@ -0,0 +1,84 @@
+/**
+ */
+package org.nasdanika.models.java.module;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ *
+ * A representation of the model object 'Requires '.
+ *
+ *
+ *
+ * A requires directive declaring a dependency on another module.
+ *
+ *
+ *
+ * The following features are supported:
+ *
+ *
+ * {@link org.nasdanika.models.java.module.Requires#getName Name }
+ * {@link org.nasdanika.models.java.module.Requires#isTransitive Transitive }
+ * {@link org.nasdanika.models.java.module.Requires#isStatic Static }
+ *
+ *
+ * @see org.nasdanika.models.java.module.JavaModulePackage#getRequires()
+ * @model
+ * @generated
+ */
+public interface Requires extends EObject {
+ /**
+ * Returns the value of the 'Name ' attribute.
+ * @return the value of the 'Name ' attribute.
+ * @see #setName(String)
+ * @see org.nasdanika.models.java.module.JavaModulePackage#getRequires_Name()
+ * @model
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.nasdanika.models.java.module.Requires#getName Name }' attribute.
+ * @param value the new value of the 'Name ' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+ /**
+ * Returns the value of the 'Transitive ' attribute.
+ * @return the value of the 'Transitive ' attribute.
+ * @see #setTransitive(boolean)
+ * @see org.nasdanika.models.java.module.JavaModulePackage#getRequires_Transitive()
+ * @model
+ * @generated
+ */
+ boolean isTransitive();
+
+ /**
+ * Sets the value of the '{@link org.nasdanika.models.java.module.Requires#isTransitive Transitive }' attribute.
+ * @param value the new value of the 'Transitive ' attribute.
+ * @see #isTransitive()
+ * @generated
+ */
+ void setTransitive(boolean value);
+
+ /**
+ * Returns the value of the 'Static ' attribute.
+ * @return the value of the 'Static ' attribute.
+ * @see #setStatic(boolean)
+ * @see org.nasdanika.models.java.module.JavaModulePackage#getRequires_Static()
+ * @model
+ * @generated
+ */
+ boolean isStatic();
+
+ /**
+ * Sets the value of the '{@link org.nasdanika.models.java.module.Requires#isStatic Static }' attribute.
+ * @param value the new value of the 'Static ' attribute.
+ * @see #isStatic()
+ * @generated
+ */
+ void setStatic(boolean value);
+
+} // Requires
diff --git a/model/src/main/java/org/nasdanika/models/java/module/Uses.java b/model/src/main/java/org/nasdanika/models/java/module/Uses.java
new file mode 100644
index 0000000..e9174df
--- /dev/null
+++ b/model/src/main/java/org/nasdanika/models/java/module/Uses.java
@@ -0,0 +1,46 @@
+/**
+ */
+package org.nasdanika.models.java.module;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ *
+ * A representation of the model object 'Uses '.
+ *
+ *
+ *
+ * A uses directive declaring that this module uses a service defined by a service interface.
+ *
+ *
+ *
+ * The following features are supported:
+ *
+ *
+ * {@link org.nasdanika.models.java.module.Uses#getService Service }
+ *
+ *
+ * @see org.nasdanika.models.java.module.JavaModulePackage#getUses()
+ * @model
+ * @generated
+ */
+public interface Uses extends EObject {
+ /**
+ * Returns the value of the 'Service ' attribute.
+ * @return the value of the 'Service ' attribute.
+ * @see #setService(String)
+ * @see org.nasdanika.models.java.module.JavaModulePackage#getUses_Service()
+ * @model
+ * @generated
+ */
+ String getService();
+
+ /**
+ * Sets the value of the '{@link org.nasdanika.models.java.module.Uses#getService Service }' attribute.
+ * @param value the new value of the 'Service ' attribute.
+ * @see #getService()
+ * @generated
+ */
+ void setService(String value);
+
+} // Uses
diff --git a/model/src/main/java/org/nasdanika/models/java/module/impl/ExportsImpl.java b/model/src/main/java/org/nasdanika/models/java/module/impl/ExportsImpl.java
new file mode 100644
index 0000000..a1a95c6
--- /dev/null
+++ b/model/src/main/java/org/nasdanika/models/java/module/impl/ExportsImpl.java
@@ -0,0 +1,98 @@
+/**
+ */
+package org.nasdanika.models.java.module.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.nasdanika.models.java.module.Exports;
+import org.nasdanika.models.java.module.JavaModulePackage;
+
+/**
+ *
+ * An implementation of the model object 'Exports '.
+ *
+ * @generated
+ */
+public class ExportsImpl extends MinimalEObjectImpl.Container implements Exports {
+
+ protected static final String NAME_EDEFAULT = null;
+
+ protected ExportsImpl() {
+ super();
+ }
+
+ @Override
+ protected EClass eStaticClass() {
+ return JavaModulePackage.Literals.EXPORTS;
+ }
+
+ @Override
+ public String getName() {
+ return (String) eDynamicGet(JavaModulePackage.EXPORTS__NAME, JavaModulePackage.Literals.EXPORTS__NAME, true, true);
+ }
+
+ @Override
+ public void setName(String newName) {
+ eDynamicSet(JavaModulePackage.EXPORTS__NAME, JavaModulePackage.Literals.EXPORTS__NAME, newName);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public EList getModules() {
+ return (EList) eDynamicGet(JavaModulePackage.EXPORTS__MODULES, JavaModulePackage.Literals.EXPORTS__MODULES, true, true);
+ }
+
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case JavaModulePackage.EXPORTS__NAME:
+ return getName();
+ case JavaModulePackage.EXPORTS__MODULES:
+ return getModules();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case JavaModulePackage.EXPORTS__NAME:
+ setName((String) newValue);
+ return;
+ case JavaModulePackage.EXPORTS__MODULES:
+ getModules().clear();
+ getModules().addAll((Collection extends String>) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case JavaModulePackage.EXPORTS__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case JavaModulePackage.EXPORTS__MODULES:
+ getModules().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JavaModulePackage.EXPORTS__NAME:
+ return NAME_EDEFAULT == null ? getName() != null : !NAME_EDEFAULT.equals(getName());
+ case JavaModulePackage.EXPORTS__MODULES:
+ return !getModules().isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //ExportsImpl
diff --git a/model/src/main/java/org/nasdanika/models/java/module/impl/JavaModuleFactoryImpl.java b/model/src/main/java/org/nasdanika/models/java/module/impl/JavaModuleFactoryImpl.java
new file mode 100644
index 0000000..b1e1b5e
--- /dev/null
+++ b/model/src/main/java/org/nasdanika/models/java/module/impl/JavaModuleFactoryImpl.java
@@ -0,0 +1,103 @@
+/**
+ */
+package org.nasdanika.models.java.module.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.nasdanika.models.java.module.Exports;
+import org.nasdanika.models.java.module.JavaModuleFactory;
+import org.nasdanika.models.java.module.JavaModulePackage;
+import org.nasdanika.models.java.module.Module;
+import org.nasdanika.models.java.module.Opens;
+import org.nasdanika.models.java.module.Provides;
+import org.nasdanika.models.java.module.Requires;
+import org.nasdanika.models.java.module.Uses;
+
+/**
+ *
+ * An implementation of the model Factory .
+ *
+ * @generated
+ */
+public class JavaModuleFactoryImpl extends EFactoryImpl implements JavaModuleFactory {
+
+ public static JavaModuleFactory init() {
+ try {
+ JavaModuleFactory theJavaModuleFactory = (JavaModuleFactory) EPackage.Registry.INSTANCE.getEFactory(JavaModulePackage.eNS_URI);
+ if (theJavaModuleFactory != null) {
+ return theJavaModuleFactory;
+ }
+ } catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new JavaModuleFactoryImpl();
+ }
+
+ public JavaModuleFactoryImpl() {
+ super();
+ }
+
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case JavaModulePackage.MODULE: return createModule();
+ case JavaModulePackage.REQUIRES: return createRequires();
+ case JavaModulePackage.EXPORTS: return createExports();
+ case JavaModulePackage.OPENS: return createOpens();
+ case JavaModulePackage.PROVIDES: return createProvides();
+ case JavaModulePackage.USES: return createUses();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ @Override
+ public Module createModule() {
+ ModuleImpl module = new ModuleImpl();
+ return module;
+ }
+
+ @Override
+ public Requires createRequires() {
+ RequiresImpl requires = new RequiresImpl();
+ return requires;
+ }
+
+ @Override
+ public Exports createExports() {
+ ExportsImpl exports = new ExportsImpl();
+ return exports;
+ }
+
+ @Override
+ public Opens createOpens() {
+ OpensImpl opens = new OpensImpl();
+ return opens;
+ }
+
+ @Override
+ public Provides createProvides() {
+ ProvidesImpl provides = new ProvidesImpl();
+ return provides;
+ }
+
+ @Override
+ public Uses createUses() {
+ UsesImpl uses = new UsesImpl();
+ return uses;
+ }
+
+ @Override
+ public JavaModulePackage getJavaModulePackage() {
+ return (JavaModulePackage) getEPackage();
+ }
+
+ @Deprecated
+ public static JavaModulePackage getPackage() {
+ return JavaModulePackage.eINSTANCE;
+ }
+
+} //JavaModuleFactoryImpl
diff --git a/model/src/main/java/org/nasdanika/models/java/module/impl/JavaModulePackageImpl.java b/model/src/main/java/org/nasdanika/models/java/module/impl/JavaModulePackageImpl.java
new file mode 100644
index 0000000..5d5a7f4
--- /dev/null
+++ b/model/src/main/java/org/nasdanika/models/java/module/impl/JavaModulePackageImpl.java
@@ -0,0 +1,206 @@
+/**
+ */
+package org.nasdanika.models.java.module.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.nasdanika.models.java.module.Exports;
+import org.nasdanika.models.java.module.JavaModuleFactory;
+import org.nasdanika.models.java.module.JavaModulePackage;
+import org.nasdanika.models.java.module.Module;
+import org.nasdanika.models.java.module.Opens;
+import org.nasdanika.models.java.module.Provides;
+import org.nasdanika.models.java.module.Requires;
+import org.nasdanika.models.java.module.Uses;
+
+/**
+ *
+ * An implementation of the model Package .
+ *
+ * @generated
+ */
+public class JavaModulePackageImpl extends EPackageImpl implements JavaModulePackage {
+
+ private EClass moduleEClass = null;
+ private EClass requiresEClass = null;
+ private EClass exportsEClass = null;
+ private EClass opensEClass = null;
+ private EClass providesEClass = null;
+ private EClass usesEClass = null;
+
+ private JavaModulePackageImpl() {
+ super(eNS_URI, JavaModuleFactory.eINSTANCE);
+ }
+
+ private static boolean isInited = false;
+
+ public static JavaModulePackage init() {
+ if (isInited) return (JavaModulePackage) EPackage.Registry.INSTANCE.getEPackage(JavaModulePackage.eNS_URI);
+
+ JavaModulePackageImpl theJavaModulePackage = new JavaModulePackageImpl();
+ isInited = true;
+
+ theJavaModulePackage.createPackageContents();
+ theJavaModulePackage.initializePackageContents();
+
+ theJavaModulePackage.freeze();
+ EPackage.Registry.INSTANCE.put(JavaModulePackage.eNS_URI, theJavaModulePackage);
+
+ return theJavaModulePackage;
+ }
+
+ @Override
+ public EClass getModule() { return moduleEClass; }
+
+ @Override
+ public EAttribute getModule_Name() { return (EAttribute) moduleEClass.getEStructuralFeatures().get(0); }
+
+ @Override
+ public EReference getModule_Requires() { return (EReference) moduleEClass.getEStructuralFeatures().get(1); }
+
+ @Override
+ public EReference getModule_Exports() { return (EReference) moduleEClass.getEStructuralFeatures().get(2); }
+
+ @Override
+ public EReference getModule_Opens() { return (EReference) moduleEClass.getEStructuralFeatures().get(3); }
+
+ @Override
+ public EReference getModule_Provides() { return (EReference) moduleEClass.getEStructuralFeatures().get(4); }
+
+ @Override
+ public EReference getModule_Uses() { return (EReference) moduleEClass.getEStructuralFeatures().get(5); }
+
+ @Override
+ public EClass getRequires() { return requiresEClass; }
+
+ @Override
+ public EAttribute getRequires_Name() { return (EAttribute) requiresEClass.getEStructuralFeatures().get(0); }
+
+ @Override
+ public EAttribute getRequires_Transitive() { return (EAttribute) requiresEClass.getEStructuralFeatures().get(1); }
+
+ @Override
+ public EAttribute getRequires_Static() { return (EAttribute) requiresEClass.getEStructuralFeatures().get(2); }
+
+ @Override
+ public EClass getExports() { return exportsEClass; }
+
+ @Override
+ public EAttribute getExports_Name() { return (EAttribute) exportsEClass.getEStructuralFeatures().get(0); }
+
+ @Override
+ public EAttribute getExports_Modules() { return (EAttribute) exportsEClass.getEStructuralFeatures().get(1); }
+
+ @Override
+ public EClass getOpens() { return opensEClass; }
+
+ @Override
+ public EAttribute getOpens_Name() { return (EAttribute) opensEClass.getEStructuralFeatures().get(0); }
+
+ @Override
+ public EAttribute getOpens_Modules() { return (EAttribute) opensEClass.getEStructuralFeatures().get(1); }
+
+ @Override
+ public EClass getProvides() { return providesEClass; }
+
+ @Override
+ public EAttribute getProvides_Service() { return (EAttribute) providesEClass.getEStructuralFeatures().get(0); }
+
+ @Override
+ public EAttribute getProvides_Implementations() { return (EAttribute) providesEClass.getEStructuralFeatures().get(1); }
+
+ @Override
+ public EClass getUses() { return usesEClass; }
+
+ @Override
+ public EAttribute getUses_Service() { return (EAttribute) usesEClass.getEStructuralFeatures().get(0); }
+
+ @Override
+ public JavaModuleFactory getJavaModuleFactory() { return (JavaModuleFactory) getEFactoryInstance(); }
+
+ private boolean isCreated = false;
+
+ public void createPackageContents() {
+ if (isCreated) return;
+ isCreated = true;
+
+ moduleEClass = createEClass(MODULE);
+ createEAttribute(moduleEClass, MODULE__NAME);
+ createEReference(moduleEClass, MODULE__REQUIRES);
+ createEReference(moduleEClass, MODULE__EXPORTS);
+ createEReference(moduleEClass, MODULE__OPENS);
+ createEReference(moduleEClass, MODULE__PROVIDES);
+ createEReference(moduleEClass, MODULE__USES);
+
+ requiresEClass = createEClass(REQUIRES);
+ createEAttribute(requiresEClass, REQUIRES__NAME);
+ createEAttribute(requiresEClass, REQUIRES__TRANSITIVE);
+ createEAttribute(requiresEClass, REQUIRES__STATIC);
+
+ exportsEClass = createEClass(EXPORTS);
+ createEAttribute(exportsEClass, EXPORTS__NAME);
+ createEAttribute(exportsEClass, EXPORTS__MODULES);
+
+ opensEClass = createEClass(OPENS);
+ createEAttribute(opensEClass, OPENS__NAME);
+ createEAttribute(opensEClass, OPENS__MODULES);
+
+ providesEClass = createEClass(PROVIDES);
+ createEAttribute(providesEClass, PROVIDES__SERVICE);
+ createEAttribute(providesEClass, PROVIDES__IMPLEMENTATIONS);
+
+ usesEClass = createEClass(USES);
+ createEAttribute(usesEClass, USES__SERVICE);
+ }
+
+ private boolean isInitialized = false;
+
+ public void initializePackageContents() {
+ if (isInitialized) return;
+ isInitialized = true;
+
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Module
+ initEClass(moduleEClass, Module.class, "Module", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getModule_Name(), ecorePackage.getEString(), "name", null, 0, 1, Module.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getModule_Requires(), getRequires(), null, "requires", null, 0, -1, Module.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getModule_Exports(), getExports(), null, "exports", null, 0, -1, Module.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getModule_Opens(), getOpens(), null, "opens", null, 0, -1, Module.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getModule_Provides(), getProvides(), null, "provides", null, 0, -1, Module.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getModule_Uses(), getUses(), null, "uses", null, 0, -1, Module.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ // Requires
+ initEClass(requiresEClass, Requires.class, "Requires", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getRequires_Name(), ecorePackage.getEString(), "name", null, 0, 1, Requires.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getRequires_Transitive(), ecorePackage.getEBoolean(), "transitive", null, 0, 1, Requires.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getRequires_Static(), ecorePackage.getEBoolean(), "static", null, 0, 1, Requires.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ // Exports
+ initEClass(exportsEClass, Exports.class, "Exports", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getExports_Name(), ecorePackage.getEString(), "name", null, 0, 1, Exports.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getExports_Modules(), ecorePackage.getEString(), "modules", null, 0, -1, Exports.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ // Opens
+ initEClass(opensEClass, Opens.class, "Opens", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getOpens_Name(), ecorePackage.getEString(), "name", null, 0, 1, Opens.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getOpens_Modules(), ecorePackage.getEString(), "modules", null, 0, -1, Opens.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ // Provides
+ initEClass(providesEClass, Provides.class, "Provides", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getProvides_Service(), ecorePackage.getEString(), "service", null, 0, 1, Provides.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getProvides_Implementations(), ecorePackage.getEString(), "implementations", null, 0, -1, Provides.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ // Uses
+ initEClass(usesEClass, Uses.class, "Uses", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getUses_Service(), ecorePackage.getEString(), "service", null, 0, 1, Uses.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ createResource(eNS_URI);
+ }
+
+} //JavaModulePackageImpl
diff --git a/model/src/main/java/org/nasdanika/models/java/module/impl/ModuleImpl.java b/model/src/main/java/org/nasdanika/models/java/module/impl/ModuleImpl.java
new file mode 100644
index 0000000..77150dc
--- /dev/null
+++ b/model/src/main/java/org/nasdanika/models/java/module/impl/ModuleImpl.java
@@ -0,0 +1,191 @@
+/**
+ */
+package org.nasdanika.models.java.module.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.nasdanika.models.java.module.Exports;
+import org.nasdanika.models.java.module.JavaModulePackage;
+import org.nasdanika.models.java.module.Module;
+import org.nasdanika.models.java.module.Opens;
+import org.nasdanika.models.java.module.Provides;
+import org.nasdanika.models.java.module.Requires;
+import org.nasdanika.models.java.module.Uses;
+
+/**
+ *
+ * An implementation of the model object 'Module '.
+ *
+ * @generated
+ */
+public class ModuleImpl extends MinimalEObjectImpl.Container implements Module {
+
+ protected static final String NAME_EDEFAULT = null;
+
+ protected ModuleImpl() {
+ super();
+ }
+
+ @Override
+ protected EClass eStaticClass() {
+ return JavaModulePackage.Literals.MODULE;
+ }
+
+ @Override
+ public String getName() {
+ return (String) eDynamicGet(JavaModulePackage.MODULE__NAME, JavaModulePackage.Literals.MODULE__NAME, true, true);
+ }
+
+ @Override
+ public void setName(String newName) {
+ eDynamicSet(JavaModulePackage.MODULE__NAME, JavaModulePackage.Literals.MODULE__NAME, newName);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public EList getRequires() {
+ return (EList) eDynamicGet(JavaModulePackage.MODULE__REQUIRES, JavaModulePackage.Literals.MODULE__REQUIRES, true, true);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public EList getExports() {
+ return (EList) eDynamicGet(JavaModulePackage.MODULE__EXPORTS, JavaModulePackage.Literals.MODULE__EXPORTS, true, true);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public EList getOpens() {
+ return (EList) eDynamicGet(JavaModulePackage.MODULE__OPENS, JavaModulePackage.Literals.MODULE__OPENS, true, true);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public EList getProvides() {
+ return (EList) eDynamicGet(JavaModulePackage.MODULE__PROVIDES, JavaModulePackage.Literals.MODULE__PROVIDES, true, true);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public EList getUses() {
+ return (EList) eDynamicGet(JavaModulePackage.MODULE__USES, JavaModulePackage.Literals.MODULE__USES, true, true);
+ }
+
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case JavaModulePackage.MODULE__REQUIRES:
+ return ((InternalEList>) getRequires()).basicRemove(otherEnd, msgs);
+ case JavaModulePackage.MODULE__EXPORTS:
+ return ((InternalEList>) getExports()).basicRemove(otherEnd, msgs);
+ case JavaModulePackage.MODULE__OPENS:
+ return ((InternalEList>) getOpens()).basicRemove(otherEnd, msgs);
+ case JavaModulePackage.MODULE__PROVIDES:
+ return ((InternalEList>) getProvides()).basicRemove(otherEnd, msgs);
+ case JavaModulePackage.MODULE__USES:
+ return ((InternalEList>) getUses()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case JavaModulePackage.MODULE__NAME:
+ return getName();
+ case JavaModulePackage.MODULE__REQUIRES:
+ return getRequires();
+ case JavaModulePackage.MODULE__EXPORTS:
+ return getExports();
+ case JavaModulePackage.MODULE__OPENS:
+ return getOpens();
+ case JavaModulePackage.MODULE__PROVIDES:
+ return getProvides();
+ case JavaModulePackage.MODULE__USES:
+ return getUses();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case JavaModulePackage.MODULE__NAME:
+ setName((String) newValue);
+ return;
+ case JavaModulePackage.MODULE__REQUIRES:
+ getRequires().clear();
+ getRequires().addAll((Collection extends Requires>) newValue);
+ return;
+ case JavaModulePackage.MODULE__EXPORTS:
+ getExports().clear();
+ getExports().addAll((Collection extends Exports>) newValue);
+ return;
+ case JavaModulePackage.MODULE__OPENS:
+ getOpens().clear();
+ getOpens().addAll((Collection extends Opens>) newValue);
+ return;
+ case JavaModulePackage.MODULE__PROVIDES:
+ getProvides().clear();
+ getProvides().addAll((Collection extends Provides>) newValue);
+ return;
+ case JavaModulePackage.MODULE__USES:
+ getUses().clear();
+ getUses().addAll((Collection extends Uses>) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case JavaModulePackage.MODULE__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case JavaModulePackage.MODULE__REQUIRES:
+ getRequires().clear();
+ return;
+ case JavaModulePackage.MODULE__EXPORTS:
+ getExports().clear();
+ return;
+ case JavaModulePackage.MODULE__OPENS:
+ getOpens().clear();
+ return;
+ case JavaModulePackage.MODULE__PROVIDES:
+ getProvides().clear();
+ return;
+ case JavaModulePackage.MODULE__USES:
+ getUses().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JavaModulePackage.MODULE__NAME:
+ return NAME_EDEFAULT == null ? getName() != null : !NAME_EDEFAULT.equals(getName());
+ case JavaModulePackage.MODULE__REQUIRES:
+ return !getRequires().isEmpty();
+ case JavaModulePackage.MODULE__EXPORTS:
+ return !getExports().isEmpty();
+ case JavaModulePackage.MODULE__OPENS:
+ return !getOpens().isEmpty();
+ case JavaModulePackage.MODULE__PROVIDES:
+ return !getProvides().isEmpty();
+ case JavaModulePackage.MODULE__USES:
+ return !getUses().isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //ModuleImpl
diff --git a/model/src/main/java/org/nasdanika/models/java/module/impl/OpensImpl.java b/model/src/main/java/org/nasdanika/models/java/module/impl/OpensImpl.java
new file mode 100644
index 0000000..68d8297
--- /dev/null
+++ b/model/src/main/java/org/nasdanika/models/java/module/impl/OpensImpl.java
@@ -0,0 +1,98 @@
+/**
+ */
+package org.nasdanika.models.java.module.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.nasdanika.models.java.module.JavaModulePackage;
+import org.nasdanika.models.java.module.Opens;
+
+/**
+ *
+ * An implementation of the model object 'Opens '.
+ *
+ * @generated
+ */
+public class OpensImpl extends MinimalEObjectImpl.Container implements Opens {
+
+ protected static final String NAME_EDEFAULT = null;
+
+ protected OpensImpl() {
+ super();
+ }
+
+ @Override
+ protected EClass eStaticClass() {
+ return JavaModulePackage.Literals.OPENS;
+ }
+
+ @Override
+ public String getName() {
+ return (String) eDynamicGet(JavaModulePackage.OPENS__NAME, JavaModulePackage.Literals.OPENS__NAME, true, true);
+ }
+
+ @Override
+ public void setName(String newName) {
+ eDynamicSet(JavaModulePackage.OPENS__NAME, JavaModulePackage.Literals.OPENS__NAME, newName);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public EList getModules() {
+ return (EList) eDynamicGet(JavaModulePackage.OPENS__MODULES, JavaModulePackage.Literals.OPENS__MODULES, true, true);
+ }
+
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case JavaModulePackage.OPENS__NAME:
+ return getName();
+ case JavaModulePackage.OPENS__MODULES:
+ return getModules();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case JavaModulePackage.OPENS__NAME:
+ setName((String) newValue);
+ return;
+ case JavaModulePackage.OPENS__MODULES:
+ getModules().clear();
+ getModules().addAll((Collection extends String>) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case JavaModulePackage.OPENS__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case JavaModulePackage.OPENS__MODULES:
+ getModules().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JavaModulePackage.OPENS__NAME:
+ return NAME_EDEFAULT == null ? getName() != null : !NAME_EDEFAULT.equals(getName());
+ case JavaModulePackage.OPENS__MODULES:
+ return !getModules().isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //OpensImpl
diff --git a/model/src/main/java/org/nasdanika/models/java/module/impl/ProvidesImpl.java b/model/src/main/java/org/nasdanika/models/java/module/impl/ProvidesImpl.java
new file mode 100644
index 0000000..344f5d8
--- /dev/null
+++ b/model/src/main/java/org/nasdanika/models/java/module/impl/ProvidesImpl.java
@@ -0,0 +1,98 @@
+/**
+ */
+package org.nasdanika.models.java.module.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.nasdanika.models.java.module.JavaModulePackage;
+import org.nasdanika.models.java.module.Provides;
+
+/**
+ *
+ * An implementation of the model object 'Provides '.
+ *
+ * @generated
+ */
+public class ProvidesImpl extends MinimalEObjectImpl.Container implements Provides {
+
+ protected static final String SERVICE_EDEFAULT = null;
+
+ protected ProvidesImpl() {
+ super();
+ }
+
+ @Override
+ protected EClass eStaticClass() {
+ return JavaModulePackage.Literals.PROVIDES;
+ }
+
+ @Override
+ public String getService() {
+ return (String) eDynamicGet(JavaModulePackage.PROVIDES__SERVICE, JavaModulePackage.Literals.PROVIDES__SERVICE, true, true);
+ }
+
+ @Override
+ public void setService(String newService) {
+ eDynamicSet(JavaModulePackage.PROVIDES__SERVICE, JavaModulePackage.Literals.PROVIDES__SERVICE, newService);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public EList getImplementations() {
+ return (EList) eDynamicGet(JavaModulePackage.PROVIDES__IMPLEMENTATIONS, JavaModulePackage.Literals.PROVIDES__IMPLEMENTATIONS, true, true);
+ }
+
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case JavaModulePackage.PROVIDES__SERVICE:
+ return getService();
+ case JavaModulePackage.PROVIDES__IMPLEMENTATIONS:
+ return getImplementations();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case JavaModulePackage.PROVIDES__SERVICE:
+ setService((String) newValue);
+ return;
+ case JavaModulePackage.PROVIDES__IMPLEMENTATIONS:
+ getImplementations().clear();
+ getImplementations().addAll((Collection extends String>) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case JavaModulePackage.PROVIDES__SERVICE:
+ setService(SERVICE_EDEFAULT);
+ return;
+ case JavaModulePackage.PROVIDES__IMPLEMENTATIONS:
+ getImplementations().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JavaModulePackage.PROVIDES__SERVICE:
+ return SERVICE_EDEFAULT == null ? getService() != null : !SERVICE_EDEFAULT.equals(getService());
+ case JavaModulePackage.PROVIDES__IMPLEMENTATIONS:
+ return !getImplementations().isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //ProvidesImpl
diff --git a/model/src/main/java/org/nasdanika/models/java/module/impl/RequiresImpl.java b/model/src/main/java/org/nasdanika/models/java/module/impl/RequiresImpl.java
new file mode 100644
index 0000000..229553e
--- /dev/null
+++ b/model/src/main/java/org/nasdanika/models/java/module/impl/RequiresImpl.java
@@ -0,0 +1,119 @@
+/**
+ */
+package org.nasdanika.models.java.module.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.nasdanika.models.java.module.JavaModulePackage;
+import org.nasdanika.models.java.module.Requires;
+
+/**
+ *
+ * An implementation of the model object 'Requires '.
+ *
+ * @generated
+ */
+public class RequiresImpl extends MinimalEObjectImpl.Container implements Requires {
+
+ protected static final String NAME_EDEFAULT = null;
+ protected static final boolean TRANSITIVE_EDEFAULT = false;
+ protected static final boolean STATIC_EDEFAULT = false;
+
+ protected RequiresImpl() {
+ super();
+ }
+
+ @Override
+ protected EClass eStaticClass() {
+ return JavaModulePackage.Literals.REQUIRES;
+ }
+
+ @Override
+ public String getName() {
+ return (String) eDynamicGet(JavaModulePackage.REQUIRES__NAME, JavaModulePackage.Literals.REQUIRES__NAME, true, true);
+ }
+
+ @Override
+ public void setName(String newName) {
+ eDynamicSet(JavaModulePackage.REQUIRES__NAME, JavaModulePackage.Literals.REQUIRES__NAME, newName);
+ }
+
+ @Override
+ public boolean isTransitive() {
+ return (Boolean) eDynamicGet(JavaModulePackage.REQUIRES__TRANSITIVE, JavaModulePackage.Literals.REQUIRES__TRANSITIVE, true, true);
+ }
+
+ @Override
+ public void setTransitive(boolean newTransitive) {
+ eDynamicSet(JavaModulePackage.REQUIRES__TRANSITIVE, JavaModulePackage.Literals.REQUIRES__TRANSITIVE, newTransitive);
+ }
+
+ @Override
+ public boolean isStatic() {
+ return (Boolean) eDynamicGet(JavaModulePackage.REQUIRES__STATIC, JavaModulePackage.Literals.REQUIRES__STATIC, true, true);
+ }
+
+ @Override
+ public void setStatic(boolean newStatic) {
+ eDynamicSet(JavaModulePackage.REQUIRES__STATIC, JavaModulePackage.Literals.REQUIRES__STATIC, newStatic);
+ }
+
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case JavaModulePackage.REQUIRES__NAME:
+ return getName();
+ case JavaModulePackage.REQUIRES__TRANSITIVE:
+ return isTransitive();
+ case JavaModulePackage.REQUIRES__STATIC:
+ return isStatic();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case JavaModulePackage.REQUIRES__NAME:
+ setName((String) newValue);
+ return;
+ case JavaModulePackage.REQUIRES__TRANSITIVE:
+ setTransitive((Boolean) newValue);
+ return;
+ case JavaModulePackage.REQUIRES__STATIC:
+ setStatic((Boolean) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case JavaModulePackage.REQUIRES__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case JavaModulePackage.REQUIRES__TRANSITIVE:
+ setTransitive(TRANSITIVE_EDEFAULT);
+ return;
+ case JavaModulePackage.REQUIRES__STATIC:
+ setStatic(STATIC_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JavaModulePackage.REQUIRES__NAME:
+ return NAME_EDEFAULT == null ? getName() != null : !NAME_EDEFAULT.equals(getName());
+ case JavaModulePackage.REQUIRES__TRANSITIVE:
+ return isTransitive() != TRANSITIVE_EDEFAULT;
+ case JavaModulePackage.REQUIRES__STATIC:
+ return isStatic() != STATIC_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //RequiresImpl
diff --git a/model/src/main/java/org/nasdanika/models/java/module/impl/UsesImpl.java b/model/src/main/java/org/nasdanika/models/java/module/impl/UsesImpl.java
new file mode 100644
index 0000000..284ac1d
--- /dev/null
+++ b/model/src/main/java/org/nasdanika/models/java/module/impl/UsesImpl.java
@@ -0,0 +1,77 @@
+/**
+ */
+package org.nasdanika.models.java.module.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.nasdanika.models.java.module.JavaModulePackage;
+import org.nasdanika.models.java.module.Uses;
+
+/**
+ *
+ * An implementation of the model object 'Uses '.
+ *
+ * @generated
+ */
+public class UsesImpl extends MinimalEObjectImpl.Container implements Uses {
+
+ protected static final String SERVICE_EDEFAULT = null;
+
+ protected UsesImpl() {
+ super();
+ }
+
+ @Override
+ protected EClass eStaticClass() {
+ return JavaModulePackage.Literals.USES;
+ }
+
+ @Override
+ public String getService() {
+ return (String) eDynamicGet(JavaModulePackage.USES__SERVICE, JavaModulePackage.Literals.USES__SERVICE, true, true);
+ }
+
+ @Override
+ public void setService(String newService) {
+ eDynamicSet(JavaModulePackage.USES__SERVICE, JavaModulePackage.Literals.USES__SERVICE, newService);
+ }
+
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case JavaModulePackage.USES__SERVICE:
+ return getService();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case JavaModulePackage.USES__SERVICE:
+ setService((String) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case JavaModulePackage.USES__SERVICE:
+ setService(SERVICE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JavaModulePackage.USES__SERVICE:
+ return SERVICE_EDEFAULT == null ? getService() != null : !SERVICE_EDEFAULT.equals(getService());
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //UsesImpl
diff --git a/model/src/main/java/org/nasdanika/models/java/module/util/JavaModuleAdapterFactory.java b/model/src/main/java/org/nasdanika/models/java/module/util/JavaModuleAdapterFactory.java
new file mode 100644
index 0000000..3419ba4
--- /dev/null
+++ b/model/src/main/java/org/nasdanika/models/java/module/util/JavaModuleAdapterFactory.java
@@ -0,0 +1,72 @@
+/**
+ */
+package org.nasdanika.models.java.module.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+import org.eclipse.emf.ecore.EObject;
+import org.nasdanika.models.java.module.Exports;
+import org.nasdanika.models.java.module.JavaModulePackage;
+import org.nasdanika.models.java.module.Module;
+import org.nasdanika.models.java.module.Opens;
+import org.nasdanika.models.java.module.Provides;
+import org.nasdanika.models.java.module.Requires;
+import org.nasdanika.models.java.module.Uses;
+
+/**
+ * The Adapter Factory for the model.
+ * @generated
+ */
+public class JavaModuleAdapterFactory extends AdapterFactoryImpl {
+
+ protected static JavaModulePackage modelPackage;
+
+ public JavaModuleAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = JavaModulePackage.eINSTANCE;
+ }
+ }
+
+ @Override
+ public boolean isFactoryForType(Object object) {
+ if (object == modelPackage) {
+ return true;
+ }
+ if (object instanceof EObject) {
+ return ((EObject) object).eClass().getEPackage() == modelPackage;
+ }
+ return false;
+ }
+
+ protected JavaModuleSwitch modelSwitch = new JavaModuleSwitch() {
+ @Override
+ public Adapter caseModule(Module object) { return createModuleAdapter(); }
+ @Override
+ public Adapter caseRequires(Requires object) { return createRequiresAdapter(); }
+ @Override
+ public Adapter caseExports(Exports object) { return createExportsAdapter(); }
+ @Override
+ public Adapter caseOpens(Opens object) { return createOpensAdapter(); }
+ @Override
+ public Adapter caseProvides(Provides object) { return createProvidesAdapter(); }
+ @Override
+ public Adapter caseUses(Uses object) { return createUsesAdapter(); }
+ @Override
+ public Adapter defaultCase(EObject object) { return createEObjectAdapter(); }
+ };
+
+ @Override
+ public Adapter createAdapter(Notifier target) {
+ return modelSwitch.doSwitch((EObject) target);
+ }
+
+ public Adapter createModuleAdapter() { return null; }
+ public Adapter createRequiresAdapter() { return null; }
+ public Adapter createExportsAdapter() { return null; }
+ public Adapter createOpensAdapter() { return null; }
+ public Adapter createProvidesAdapter() { return null; }
+ public Adapter createUsesAdapter() { return null; }
+ public Adapter createEObjectAdapter() { return null; }
+
+} //JavaModuleAdapterFactory
diff --git a/model/src/main/java/org/nasdanika/models/java/module/util/JavaModuleSwitch.java b/model/src/main/java/org/nasdanika/models/java/module/util/JavaModuleSwitch.java
new file mode 100644
index 0000000..dd3c893
--- /dev/null
+++ b/model/src/main/java/org/nasdanika/models/java/module/util/JavaModuleSwitch.java
@@ -0,0 +1,89 @@
+/**
+ */
+package org.nasdanika.models.java.module.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.util.Switch;
+import org.nasdanika.models.java.module.Exports;
+import org.nasdanika.models.java.module.JavaModulePackage;
+import org.nasdanika.models.java.module.Module;
+import org.nasdanika.models.java.module.Opens;
+import org.nasdanika.models.java.module.Provides;
+import org.nasdanika.models.java.module.Requires;
+import org.nasdanika.models.java.module.Uses;
+
+/**
+ * The Switch for the model's inheritance hierarchy.
+ * @generated
+ */
+public class JavaModuleSwitch extends Switch {
+
+ protected static JavaModulePackage modelPackage;
+
+ public JavaModuleSwitch() {
+ if (modelPackage == null) {
+ modelPackage = JavaModulePackage.eINSTANCE;
+ }
+ }
+
+ @Override
+ protected boolean isSwitchFor(EPackage ePackage) {
+ return ePackage == modelPackage;
+ }
+
+ @Override
+ protected T doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case JavaModulePackage.MODULE: {
+ Module module = (Module) theEObject;
+ T result = caseModule(module);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case JavaModulePackage.REQUIRES: {
+ Requires requires = (Requires) theEObject;
+ T result = caseRequires(requires);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case JavaModulePackage.EXPORTS: {
+ Exports exports = (Exports) theEObject;
+ T result = caseExports(exports);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case JavaModulePackage.OPENS: {
+ Opens opens = (Opens) theEObject;
+ T result = caseOpens(opens);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case JavaModulePackage.PROVIDES: {
+ Provides provides = (Provides) theEObject;
+ T result = caseProvides(provides);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case JavaModulePackage.USES: {
+ Uses uses = (Uses) theEObject;
+ T result = caseUses(uses);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ default:
+ return defaultCase(theEObject);
+ }
+ }
+
+ public T caseModule(Module object) { return null; }
+ public T caseRequires(Requires object) { return null; }
+ public T caseExports(Exports object) { return null; }
+ public T caseOpens(Opens object) { return null; }
+ public T caseProvides(Provides object) { return null; }
+ public T caseUses(Uses object) { return null; }
+
+ @Override
+ public T defaultCase(EObject object) { return null; }
+
+} //JavaModuleSwitch
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..c9894e5
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,125 @@
+
+
+ 4.0.0
+ org.nasdanika.models.java.module
+ parent
+ 2026.3.0
+ pom
+ Java Module model
+ https://github.com/Nasdanika-Models/java-module
+
+
+
+ Eclipse Public License 2.0
+ https://nasdanika.org/builds/master/eclipse-public-license-2.0.html
+ repo
+
+
+
+
+ https://github.com/Nasdanika-Models/java-module
+
+
+
+ 2025.12.0
+ 0.8.14
+ UTF-8
+ false
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.14.1
+
+ 17
+
+
+
+ org.apache.maven.plugins
+ maven-site-plugin
+ 3.21.0
+
+
+ org.apache.maven.plugins
+ maven-source-plugin
+ 3.4.0
+
+
+ attach-sources
+
+ jar-no-fork
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+ 3.5.4
+
+
+ org.apache.maven.plugins
+ maven-javadoc-plugin
+ 3.12.0
+
+
+ attach-javadocs
+
+ jar
+
+
+ false
+ -Xdoclint:none
+ true
+ true
+
+ https://download.eclipse.org/modeling/emf/emf/javadoc/2.11/
+
+
+
+
+
+
+
+
+
+ Nasdanika
+ https://nasdanika.org
+
+
+
+
+ pvlasov
+ Pavel Vlasov
+ Pavel.Vlasov@nasdanika.org
+
+ Lead Developer
+
+ -5
+
+
+
+
+
+ org.junit.jupiter
+ junit-jupiter-api
+ 5.12.1
+ test
+
+
+ org.junit.jupiter
+ junit-jupiter-engine
+ 5.12.1
+ test
+
+
+
+
+ model
+
+
+