Skip to content

Conversation

Copy link

Copilot AI commented Dec 13, 2025

Remove the dependency on external Eclipse Communication Framework (ECF) bundles by forking their code directly into a new self-contained transport bundle.

Changes

  • Created org.eclipse.equinox.p2.transport.native bundle by copying org.eclipse.equinox.p2.transport.ecf

    • Updated bundle symbolic name and service component from ecf to native
    • Removed Require-Bundle dependencies on org.eclipse.ecf, org.eclipse.ecf.filetransfer, and org.eclipse.ecf.provider.filetransfer
  • Inlined 207 Java files from ECF repository maintaining original org.eclipse.ecf.* package structure:

    • org.eclipse.ecf core (77 files) - identity, events, security, containers
    • org.eclipse.ecf.identity (28 files) - ID system and namespaces
    • org.eclipse.ecf.filetransfer (65 files) - file transfer interfaces and service APIs
    • org.eclipse.ecf.provider.filetransfer (37 files) - URLConnection-based HTTP/HTTPS implementation
  • Updated MANIFEST.MF exports to expose inlined ECF packages with their original versions

  • Removed P2SSLContextFactory which depended on external org.eclipse.ecf.core.security.SSLContextFactory interface

Architecture

The bundle now contains the full ECF file transfer stack:

FileReader (p2) 
  → IRetrieveFileTransferFactory (service lookup)
    → MultiProtocolRetrieveAdapter
      → UrlConnectionRetrieveFileTransfer (java.net.URLConnection)

Next Steps

  • Simplify Activator to directly instantiate adapters instead of OSGi ServiceTracker lookups
  • Remove unused ECF classes (containers, events) not required for file transfer
  • Remove extension point mechanisms, replace with direct instantiation

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • repo.eclipse.org
    • Triggering command: /usr/lib/jvm/temurin-21-jdk-amd64/bin/java /usr/lib/jvm/temurin-21-jdk-amd64/bin/java --enable-native-access=ALL-UNNAMED -XX:+PrintFlagsFinal -Xmx2g -classpath /usr/share/apache-maven-3.9.11/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.11/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.11 -Dlibrary.jansi.path=/usr/share/apache-maven-3.9.11/lib/jansi-native -Dmaven.multiModuleProjectDirectory=/home/REDACTED/work/p2/p2 org.codehaus.plexus.classworlds.launcher.Launcher clean compile -DskipTests (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

Original prompt

Currently we have the bundle org.eclipse.equinox.p2.transport.ecf that depends on https://github.com/eclipse-ecf/ecf/

We want to get rid of this dependency by:

  1. Make a copy of the org.eclipse.equinox.p2.transport.ecf bundle and name it org.eclipse.equinox.p2.transport.native and change its bundle symbolid name accordingly
  2. remove all imports of ECF from the manifest in that copy
  3. copy all code of the ECF repository from the different bundles and copy them into our own bundle that where previously a direct or transitive dependency, but keeping the namespace for now
  4. delete all unused classes or interfaces removing any indirections (e.g. through extension points or services) with direct intatiation and calls

✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

Copilot AI changed the title [WIP] Remove ECF dependency from transport bundle Fork ECF code into org.eclipse.equinox.p2.transport.native to eliminate external dependencies Dec 13, 2025
Copilot AI requested a review from laeubi December 13, 2025 16:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants