Giter Club home page Giter Club logo

ecco's People

Contributors

arcanefoam avatar baergump avatar chuber50 avatar dorkat0 avatar eilmsteiner avatar gabrielamichelon avatar gruenbac avatar llinsbauer avatar matthiaspreuner avatar meik99 avatar mjahn12 avatar mjahn2 avatar mt1996 avatar oohenryoo avatar reisi007 avatar renovate[bot] avatar rudolfha avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

ecco's Issues

Remove buffer field in PerstArtifact

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.

Add "label" representation for tree nodes

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).

Remove hardcoded filepaths from integration tests

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.

Extend RESTService Unit Tests

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.

Remove the requirment forArtifacts to use a path

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".

Rewrite and extend CLI

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.,

  • Initializing
  • Commit
  • Checkout
  • Handling Remotes
  • Push
  • Pull
  • Listing Metadata:
    • Features
    • Loaded Adapters

ecco.properties should not be loaded from the class path

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:

  1. Read from the repository folder, so the user can put it there. The issue with this is that the Ecco service is initiated once, and if the repository is changed then the different settings wont be changed
  2. Read from an argument in the command line. This makes it possible to provide a properties file anywhere in the system. However, it suffers from the same issue that the service is initiated once.
  3. If the above fail, then fall back to the class loader mechanism, effectively starting the service with a set of default options, i.e. all plugins loaded.. should this be the default?

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.

Project organization

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.

Checkout directory state check delegated to plugins

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.

Improve ArtifactXXX hierarchy

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.

Dependency Dashboard

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


Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Detected dependencies

github-actions
.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
gitlabci
.gitlab-ci.yml
gradle
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/gradle-wrapper.properties
  • gradle 8.6

  • Check this box to trigger a request for Renovate to run again on this repository

Artifact composition created multiple nodes per Artifact

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.

The ArtifactXXX interfaces belong to the base project

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.