jku-isse / ecco Goto Github PK
View Code? Open in Web Editor NEWFeature-Oriented and Distributed Version Control System
Home Page: https://jku-isse.github.io/ecco/
Feature-Oriented and Distributed Version Control System
Home Page: https://jku-isse.github.io/ecco/
The buffer field is private with no access methods, thus it is only used internally. However, AFAICT it is only accessed in the setData and getData methods. In the setData, it is used under the assumption that the ArtifactData is serializabe. There might be cases in which the data being loaded into ECCO is not, e.g. EMF EObjects are not (by default).
In the getData, it is used to recreate the data from the buffer in case the data is null., but since the buffer can not be filled/set elsewhere there is no way this is actually helpfull.
In the ArtifactTree, using the Java ID of the nodes does not provide usefull information about the node. The Node Interface could define a mehthod "getTreeLabel", which by deafault (abstract base class) returns the Java ID, but the plugin could override. Probably the method just actually go in the ArtifactData so the plugins can provide custom implementations (plugins dont extend nodes).
Some integration tests use hard-coded file paths to files that naturally don't exist in the repository. Those tests should either be deleted or modified, such that they use a relative path from the resources
folder instead.
In order to modify and keep certain tests, it might be necessary to create new test data in the mentioned resources
folders.
The ECCO REST project is currently only tested manually and should be automated.
Therefore, the subproject must be extended and covered with a reasonable amount of unit tests that cover the most important features.
Currently Artifacts need to use Path instances to point to the files in the local file system that constitute the product "code" base. This makes sense for some specific cases, for example for the ECCO service that provides a "repository" like functionality where the files that constitute a product are kept in a local folder.
In the general sense, ECCO should support files located "anywhere" (e.g. web servers, ftp servers, network drives, etc.). For this I think the best approach is to change the Path to a URI.
If this is defeninetly not the case and things must be kept local, then the generic parameter from Artifacts should be removed and the Path interface "hard codeded".
The CLI does not currently cover many features of Ecco, additionally, it is written with an outdated command library.
First, the CLI should be rewritten with a more modern approach.
Preferably using Kotlin as a language, which would then allow usage of the Clikt library.
Secondly, the CLI should cover most features of ECCO that can be reasonably expected.
I.e.,
Currently, when the Ecco Service is initiated the properties files is read form the class path. This means that if you want to provide a different configuration you need to change the ecco.properties file in the service project.
This file should be either:
Since you try to emulate a CVS repository, the above fit into the git approach: specific properties per repository (in the .ecco folder), global properties in the .git (.ecco) folder in the user home, default settings loaded from the service class.
As far as I can tell there are two or three major categories: core, dt (developer tools, i.e. cli/ui) and plugins (read/write from a domain). It might be usefull to group subprojects in each category by either adding a submodule/folder structure or adding a .core, .dt, .plugin fragment in the name/package structure.
Currently, the Ecco service (via DispatchWriter) checks that the output directory is empty before delegating to the plugin writter. I understand that this is wanted as currently Ecco does not provide a merge/conflict resolution mechanism.
I think this check and the actions taken should be delegated to the plugins. For example, in the EMF plugin I don't want to commit the metamodel (.ecore) but I need it to be there so I can open the model. This will also imply that I can have other files that I need, for example the folder micht contain IntelliJ or Eclipse files that indicate that the folder is a project.
The plugin can then decide if it will have a strong policy: the directory must be empty, or if it does something else: e.g. ask the user if files shuold be replaced, open the files with no append so the contents are overwritten, etc.
For backwards compatibility, it is easy to make the existing projects provide the strong policy.
The ArtifactPlugin, ArtifacterReader, etc.., share some of the itnerface methods. For example all the intefaces define the public abstract String getPluginId();
Perhaps a common super interface could be provided: ArtifactHelper
to contain the common functionality. That way, for example, it would be easier to document that the getPluginId();
needs to return the class name of the ArtifactPlugin implementation.
As @arcanefoam in #10 (comment)_ mentioned, the ArtifactGraphView
is missing a legend. Furthermore, afaik it is currently not possible to move around in the graph when zoomed in.
If there is no such possibility, it should be added, if there is a shortcut to move around, it should be mentioned in the legend.
This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.
Warning
Renovate failed to look up the following dependencies: Failed to look up maven package at.jku.isse.designspace.sdk:main
.
Files affected: adapter/designspace/build.gradle
These updates have all been created already. Click a checkbox below to force a retry/rebase of any.
.github/workflows/build.yml
actions/checkout v4.1.1@b4ffde65f46336ab88eb53be808477a3936bae11
actions/checkout v4.1.1@b4ffde65f46336ab88eb53be808477a3936bae11
actions/setup-java v4.0.0@387ac29b308b003ca37ba93a6cab5eb57c8f5f93
actions/cache v4
gradle/gradle-build-action v3.0.0@3b1b3b9a2104c2b47fbae53f3938079c00c9bb87
.gitlab-ci.yml
gradle.properties
settings.gradle
build.gradle
com.netflix.nebula.ospackage 11.8.0
org.junit.jupiter:junit-jupiter 5.10.2
adapter/challenge/build.gradle
com.github.javaparser:javaparser-symbol-solver-core 3.25.8
adapter/cpp/build.gradle
com.opencsv:opencsv 5.9
io.github.java-diff-utils:java-diff-utils 4.12
adapter/designspace/build.gradle
at.jku.isse.designspace.sdk:main 4.0
org.junit:junit-bom 5.10.2
org.mockito:mockito-core 5.10.0
adapter/file/build.gradle
org.openjfx.javafxplugin 0.1.0
adapter/golang/build.gradle
org.antlr:antlr4 4.13.1
org.junit:junit-bom 5.10.2
org.mockito:mockito-core 5.10.0
adapter/image/build.gradle
org.openjfx.javafxplugin 0.1.0
adapter/java/build.gradle
com.github.javaparser:javaparser-symbol-solver-core 3.25.8
adapter/java6/build.gradle
adapter/java8/build.gradle
org.eclipse.jdt:org.eclipse.jdt.core 3.36.0
adapter/lilypond/gradle.properties
adapter/lilypond/build.gradle
org.openjfx.javafxplugin 0.1.0
net.sf.py4j:py4j 0.10.9.7
org.graalvm.sdk:polyglot-tck 23.1.2
adapter/runtime/build.gradle
com.github.javaparser:javaparser-symbol-solver-core 3.25.8
adapter/text/build.gradle
org.openjfx.javafxplugin 0.1.0
base/build.gradle
org.openjfx.javafxplugin 0.1.0
org.eclipse.collections:eclipse-collections-api 11.1.0
org.eclipse.collections:eclipse-collections 11.1.0
com.google.guava:guava 33.0.0-jre
com.github.javaparser:javaparser-core 3.25.8
org.graphstream:gs-core 2.0
org.graphstream:gs-algo 2.0
org.graphstream:gs-ui-javafx 2.0
cli/build.gradle
net.sourceforge.argparse4j:argparse4j 0.9.0
org.junit:junit-bom 5.10.2
org.mockito:mockito-core 5.10.0
extras/cpp/build.gradle
extras/emf/build.gradle
org.eclipse.emf:org.eclipse.emf.ecore 2.35.0
org.eclipse.emf:org.eclipse.emf.common 2.29.0
org.eclipse.emf:org.eclipse.emf.ecore.xmi 2.36.0
extras/generic/build.gradle
org.antlr:antlr4 4.13.1
org.apache.commons:commons-lang3 3.14.0
org.apache.commons:commons-collections4 4.4
com.google.code.gson:gson 2.10.1
extras/jackson/build.gradle
org.eclipse.collections:eclipse-collections-api 11.1.0
org.eclipse.collections:eclipse-collections 11.1.0
com.fasterxml.jackson.core:jackson-databind 2.16.1
com.fasterxml.jackson.dataformat:jackson-dataformat-smile 2.16.1
com.fasterxml.jackson.module:jackson-module-afterburner 2.16.1
extras/jpa/build.gradle
org.hibernate:hibernate-core 6.4.4.Final
org.hibernate:hibernate-entitymanager 5.6.15.Final
org.apache.derby:derby 10.17.1.0
extras/perst/build.gradle
extras/php/build.gradle
extras/runtime/build.gradle
extras/uml/build.gradle
extras/xml/build.gradle
com.thoughtworks.xstream:xstream 1.4.20
gui/build.gradle
org.openjfx.javafxplugin 0.1.0
org.graphstream:gs-core 2.0
org.graphstream:gs-algo 2.0
org.graphstream:gs-ui-javafx 2.0
preprocessor/build.gradle
commons-io:commons-io 2.15.1
com.bpodgursky:jbool_expressions 1.24
rest/build.gradle
com.github.johnrengelman.shadow 8.1.1
io.micronaut.minimal.application 4.3.2
io.micronaut.openapi:micronaut-openapi 6.5.1
org.junit.jupiter:junit-jupiter 5.10.2
io.reactivex.rxjava2:rxjava 2.2.21
micronaut 4.3.0
service/build.gradle
org.eclipse.collections:eclipse-collections-api 11.1.0
org.eclipse.collections:eclipse-collections 11.1.0
io.github.java-diff-utils:java-diff-utils 4.12
com.opencsv:opencsv 5.9
com.google.guava:guava 33.0.0-jre
com.google.inject:guice 7.0.0
com.google.inject.extensions:guice-multibindings 4.2.3
org.projectlombok:lombok 1.18.30
storage/neo4j/build.gradle
org.neo4j:neo4j 5.16.0
org.neo4j:neo4j-ogm-core 4.0.9
org.neo4j:neo4j-ogm-embedded-driver 3.3.3
org.neo4j:neo4j-bolt 5.16.0
ch.qos.logback:logback-classic 1.4.14
ch.qos.logback:logback-core 1.4.14
org.slf4j:slf4j-api 2.0.12
uk.co.jemos.podam:podam 8.0.1.RELEASE
org.scala-lang:scala-library 2.13.12
web/build.gradle
org.slf4j:slf4j-simple 2.0.12
org.slf4j:slf4j-api 2.0.12
org.glassfish.jersey.inject:jersey-hk2 3.1.5
org.glassfish.jersey.containers:jersey-container-grizzly2-http 3.1.5
org.glassfish.jersey.media:jersey-media-json-jackson 3.1.5
org.glassfish.jersey.media:jersey-media-multipart 3.1.5
javax.xml.bind:jaxb-api 2.3.1
gradle/wrapper/gradle-wrapper.properties
gradle 8.6
In the EMF plugin an Artifact can be referenced by many artifacts and hence can appear multiple times in the tree.
I think the problem is that the LazyCompositionNode always creates a new node for the origNodes. So probably need a cache of Artifact:Node so they are not created more than once and instead reused.
I think that the ArtifactXXX interfaces belong to he base project, not the server. The main reason is that this interfaces are part of the base API of Ecco. That is, if you don't use the server, you will still nead te plugin, reader, writer, etc.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.