{"id":15196845,"url":"https://github.com/bigraph-toolkit-suite/spring-data-cdo","last_synced_at":"2026-02-24T17:05:11.677Z","repository":{"id":204541176,"uuid":"711936406","full_name":"bigraph-toolkit-suite/spring-data-cdo","owner":"bigraph-toolkit-suite","description":"Spring repository support for Connected Data Objects (CDO) - a distributed shared model of Eclipse EMF.","archived":false,"fork":false,"pushed_at":"2025-08-23T12:13:43.000Z","size":527,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-26T20:03:34.166Z","etag":null,"topics":["cdo","eclipse","eclipse-cdo","spring-data","spring-data-cdo","spring-framework"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bigraph-toolkit-suite.png","metadata":{"files":{"readme":"README.adoc","changelog":null,"contributing":"CONTRIBUTING.adoc","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.adoc","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-10-30T13:26:06.000Z","updated_at":"2025-08-23T12:13:46.000Z","dependencies_parsed_at":null,"dependency_job_id":"fdd345ec-acba-48ef-990c-2786691891bb","html_url":"https://github.com/bigraph-toolkit-suite/spring-data-cdo","commit_stats":{"total_commits":93,"total_committers":1,"mean_commits":93.0,"dds":0.0,"last_synced_commit":"0022cf2938cc1775793d6dea398630dd4f7d238e"},"previous_names":["bigraph-toolkit-suite/spring-data-cdo"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/bigraph-toolkit-suite/spring-data-cdo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bigraph-toolkit-suite%2Fspring-data-cdo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bigraph-toolkit-suite%2Fspring-data-cdo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bigraph-toolkit-suite%2Fspring-data-cdo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bigraph-toolkit-suite%2Fspring-data-cdo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bigraph-toolkit-suite","download_url":"https://codeload.github.com/bigraph-toolkit-suite/spring-data-cdo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bigraph-toolkit-suite%2Fspring-data-cdo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29786981,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-24T10:45:18.109Z","status":"ssl_error","status_checked_at":"2026-02-24T10:45:09.911Z","response_time":75,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cdo","eclipse","eclipse-cdo","spring-data","spring-data-cdo","spring-framework"],"created_at":"2024-09-28T00:04:52.480Z","updated_at":"2026-02-24T17:05:11.671Z","avatar_url":"https://github.com/bigraph-toolkit-suite.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"image:https://img.shields.io/badge/License-Apache--2.0-blue.svg[License: Apache 2.0,link=https://opensource.org/licenses/Apache-2.0]\nimage:https://img.shields.io/maven-central/v/org.bigraphs.springframework.data/spring-data-cdo[Maven Central,link=https://central.sonatype.com/artifact/org.bigraphs.springframework.data/spring-data-cdo]\n\nimage::./src/main/asciidoc/images/spring-cdo-logo-white-background.png[width=50%,scalewidth=6cm]\n\n'''\n\n= Spring Data CDO\n\nThe primary goal of the https://projects.spring.io/spring-data[Spring Data] project is to make it easier to build Spring-powered applications that use new data access technologies such as non-relational databases, map-reduce frameworks, and cloud based data services.\n\nThis module provides infrastructure components to build repository abstractions for stores dealing with the\nhttps://www.eclipse.org/cdo/[*Connected Data Objects (CDO) model repository*] of Eclipse.\n\n*Version Compatability*\n\n|===\n|*Spring Data CDO* | *Eclipse Modeling Tools* | *CDO Protocol Version*\n|0.8.0 (latest)\n|https://www.eclipse.org/downloads/packages/release/2025-12/r/eclipse-modeling-tools[2025-12 (4.38.0)]\n|54\n\n|0.7.5\n|https://www.eclipse.org/downloads/packages/release/2022-12/r/eclipse-modeling-tools[2022-12 (4.26.0)]\n|48\n\n|0.7.2\n|https://www.eclipse.org/downloads/packages/release/2022-12/r/eclipse-modeling-tools[2022-12 (4.26.0)]\n|48\n\n|0.6.0-SNAPSHOT\n|https://www.eclipse.org/downloads/packages/release/2022-12/r/eclipse-modeling-tools[2022-12 (4.26.0)]\n|48\n|===\n\n== Getting Started\n\nThe standard use case of this framework is to store and read native `CDOObject` and standard `EObject`.\nTo be clear, the framework does not perform a transformation of standard Java POJOs to their Ecore representatives.\nOnly Java objects of class type `CDOObject` or `EObject` (and in legacy mode) are supported.\nLegacy mode: Models that are not converted for CDO support.\nSee also https://wiki.eclipse.org/CDO/Preparing_EMF_Models[Preparing EMF Models]\n\nYour domain models should be defined using the Eclipse EMF Ecore metamodel as usual, or dynamically at runtime.\nEclipse EMF also supports the generation of an API from Ecore models.\nThey can also be used afterwards with *Spring Data CDO*.\n\n=== Dependency Configuration (Maven)\n\nJust add the following Maven dependency to your project's `pom.xml`:\n\n[source,xml]\n----\n\u003cdependency\u003e\n  \u003cgroupId\u003eorg.bigraphs.springframework.data\u003c/groupId\u003e\n  \u003cartifactId\u003espring-data-cdo\u003c/artifactId\u003e\n  \u003cversion\u003e0.8.0\u003c/version\u003e\n\u003c/dependency\u003e\n----\n\nThese dependencies are required when you want to start the standalone CDO server that is shipped with this framework:\n\n[source,xml]\n----\n\u003cdependency\u003e\n  \u003cgroupId\u003eorg.eclipse.platform\u003c/groupId\u003e\n  \u003cartifactId\u003eorg.eclipse.core.runtime\u003c/artifactId\u003e\n  \u003cversion\u003e3.34.0\u003c/version\u003e\n\u003c/dependency\u003e\n----\n\n\n=== Usage Examples\n\nThe following examples show some possible configuration and usage scenarios.\n\n==== Domain classes\n\nThe framework can handle native EMF models:\n\n[source,java]\n----\n// any auto-generated object of an EMF model or native CDO model\ninterface Person extends EObject {}\n\ninterface Person extends CDOObject {}\n----\n\nNon-native EMF domain classes (i.e., classes that don't extend `EObject` or the `CDOObject` interface) should be annotated in the following way to provide necessary details:\n\n[source,java]\n----\n@CDO(path = \"your/repository/resource/path\",    // CDO resource path\n        nsUri = \"http://www.example.org/personDomainModel\", // namespace of the Ecore model\n        ePackage = PersonDomainModelPackage.class,  // the EPackage of the model\n        ePackageBaseClass = \"org.example.ecore.personDomainModel.PersonDomainModelPackage\"\n)\nclass PersonWrapper {\n    // ID is mandatory\n    @Id\n    CDOID id;\n\n    // Provide here the actual EObject model that the framework can access\n    // because PersonWrapper does not extend EObject\n    @EObjectModel(classFor=Person.class)\n    public Person model; // Person extends from EMF's EObject class\n}\n----\n\nThey effectively work like a wrapper for internal members, which are of class `EObject` or `CDOObject`.\nAdditionally, an ID must be specified of type `CDOID` using the `@Id` annotation feature of Spring.\n\n==== Spring Configuration\n\nEnable the Spring repository support for CDO repositories:\n\n[source,java]\n----\n// Spring Configuration Class\n@Configuration\n@EnableCdoRepositories(basePackageClasses = PersonRepository.class)\n//@EnableCdoRepositories(basePackages = \"org.example.repository\") // Java package to repository interfaces\npublic class CDOServerConfig {\n    // ...\n}\n----\n\n==== Repository Definition\n\n[source,java]\n----\npackage org.example.repository;\n\n@Repository\npublic interface PersonRepository extends CdoRepository\u003cPersonWrapper, CDOID\u003e {\n    // ...\n}\n----\n\n==== Ecore Package Initialization: Local and Remote\n\nWith regard to EMF-related programming, the respective `EPackage` must be registered in the global package registry first (see https://download.eclipse.org/modeling/emf/emf/javadoc/2.9.0/[EPackage.Registry]).\nThe registry provides a mapping from namespace URIs to `EPackage` instances.\n\n\u003e Though, this framework has some internal mechanism to initialize the EPackage in the registry automatically, it may not always find it.\n\nWe advise to initialize the corresponding `EPackage` that is going to be used with this framework by using standard mechanisms of EMF:\n\n[source,java]\n----\n    @BeforeClass\n    public static void beforeClass() throws Exception {\n        PersonDomainModelPackageImpl.init();\n        // Or: EPackage.Registry.INSTANCE.put(\"http://www.example.org/personDomainModel\", PersonDomainModelPackage.eINSTANCE);\n\n        // This statement should not fail:\n        EPackage ePackage = EPackage.Registry.INSTANCE.getEPackage(\"http://www.example.org/personDomainModel\");\n        Assert.notNull(ePackage, \"Model Package couldn't be found in the EPackage Registry.\");\n    }\n----\n\nEspecially when working with CDO the package should be registered locally and remotely:\n\n[source,java]\n----\nCdoTemplate template = new CdoTemplate(factory);\nCDOPackageRegistry.INSTANCE.put(BookstoreDomainModelPackage.eNS_URI, BookstoreDomainModelPackage.eINSTANCE);\nCDOPackageRegistry remoteRegistry = template.getCDOPackageRegistry(); //acquire the remote CDO package registry\nEPackage ePackage = remoteRegistry.getEPackage(BookstoreDomainModelPackage.eNS_URI);\nif (ePackage == null) {\n    remoteRegistry.put(BookstoreDomainModelPackage.eNS_URI, BookstoreDomainModelPackage.eINSTANCE);\n}\n----\n\n=== Events\n\nWhen required, one can listen to specific events emitted by some repository actions for adding extended behavior.\nEvents are implemented for Delete, Save and Insert operations, including \"after\" and \"before\" notions for fine-grained control.\n\n=== Standalone CDO Server\n\nFor testing purposes you can start a standalone CDO server like this:\n\n[source,java]\n----\nCDOStandaloneServer server = new CDOStandaloneServer(\"repo1\");\nCDOStandaloneServer.start(server);\n----\n\n=== Working with Eclipse IDEs\n\nThis framework includes functionality to launch a standalone CDO server.\nUse the Eclipse CDO Explorer, which allows you to easily view and interact with Ecore models hosted on the CDO server.\n\n* Download CDO Explorer or Server via the link:https://www.eclipse.org/downloads/packages/installer[Eclipse Installer].\nSee table above to see which version of Eclipse to use.\n\n== Development\n\nFor information about setting up the development environment, building the project,\nand contribution guidelines, please refer to link:DEVELOPMENT.adoc[DEVELOPMENT.adoc].\n\n== License\n\nThis library is Open Source software released under the Apache 2.0 license.\n\n```text\n   Copyright 2023-present Bigraph Toolkit Developers\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbigraph-toolkit-suite%2Fspring-data-cdo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbigraph-toolkit-suite%2Fspring-data-cdo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbigraph-toolkit-suite%2Fspring-data-cdo/lists"}