{"id":25000584,"url":"https://github.com/gluster/glusterfs-java-filesystem","last_synced_at":"2025-10-19T18:30:27.520Z","repository":{"id":57726931,"uuid":"11074539","full_name":"gluster/glusterfs-java-filesystem","owner":"gluster","description":"GlusterFS for Java","archived":false,"fork":false,"pushed_at":"2017-02-12T07:59:34.000Z","size":396,"stargazers_count":57,"open_issues_count":7,"forks_count":44,"subscribers_count":14,"default_branch":"master","last_synced_at":"2023-12-18T16:33:29.435Z","etag":null,"topics":["filesystem","glusterfs","java","nio","storage","storage-provider"],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gluster.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-06-30T17:35:25.000Z","updated_at":"2023-11-15T09:14:37.000Z","dependencies_parsed_at":"2022-09-11T17:13:31.993Z","dependency_job_id":null,"html_url":"https://github.com/gluster/glusterfs-java-filesystem","commit_stats":null,"previous_names":["semiosis/glusterfs-java-filesystem"],"tags_count":5,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gluster%2Fglusterfs-java-filesystem","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gluster%2Fglusterfs-java-filesystem/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gluster%2Fglusterfs-java-filesystem/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gluster%2Fglusterfs-java-filesystem/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gluster","download_url":"https://codeload.github.com/gluster/glusterfs-java-filesystem/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":237182359,"owners_count":19268198,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["filesystem","glusterfs","java","nio","storage","storage-provider"],"created_at":"2025-02-04T19:36:02.154Z","updated_at":"2025-10-19T18:30:22.231Z","avatar_url":"https://github.com/gluster.png","language":"Java","readme":"# glusterfs-java-filesystem\n\nThis project aims to be a complete implementation of a Java7/NIO.2 File System Provider backed by\n[GlusterFS](http://www.gluster.org/) via [libgfapi-jni](https://github.com/semiosis/libgfapi-jni)\n\n[![Build Status](https://travis-ci.org/semiosis/glusterfs-java-filesystem.png?branch=master)](https://travis-ci.org/semiosis/glusterfs-java-filesystem)\n\n[![Test coverage](http://sonar.peircean.com:8008/sonar-status-image/?resource=com.peircean.glusterfs:glusterfs-java-filesystem)](http://sonar.peircean.com/dashboard/index/com.peircean.glusterfs:glusterfs-java-filesystem)\n\n[Test Coverage \u0026 Code Quality](http://sonar.peircean.com/dashboard/index/com.peircean.glusterfs:glusterfs-java-filesystem)\n\nPlease let me know if you use this project, even if you're just checking it out, I'd like to hear from you.\n\nI prefer to be contacted on IRC, Twitter, or a Github issue.  You can find me, semiosis, in #gluster on Freenode IRC.  My twitter handle is @pragmaticism.\n\nThanks!\n\n# Use\n\n## Adding to your maven project\n\n    \u003cdependencies\u003e\n        \u003cdependency\u003e\n            \u003cgroupId\u003ecom.peircean.glusterfs\u003c/groupId\u003e\n            \u003cartifactId\u003eglusterfs-java-filesystem\u003c/artifactId\u003e\n            \u003cversion\u003e1.0.4\u003c/version\u003e\n        \u003c/dependency\u003e\n    \u003c/dependencies\u003e\n\n## Adding to your non-maven project\n\nThe maven shade plugin can build a unified (shaded) JAR suitable for dropping in to the classpath of any JVM application.\n\nYou can build a \"shaded\" JAR by cloning the project and running the following command in the glusterfs-java-filesystem subdirectory:\n\n    cd glusterfs-java-filesystem\n    mvn package shade:shade\n\nMaven will report the path of this shaded JAR.  You can run `export CLASSPATH=\u003cpath-to-shaded.jar\u003e` in a terminal before running your other application.\n\nContact me (on IRC, Twitter, or in a Github issue) if you need help obtaining a JAR, if you can't, or don't want to, build it with maven yourself.\n\n## Access GlusterFS volumes with the NIO.2 API\n\nOnce this library is in your classpath all you need to do in your code is access a GlusterFS URI, for example\n\n    gluster://server:volume/path\n\n## Example usage\n\nA Vagrantfile in the root of this repository sets up a VM with a volume called *foo* at IP address *172.31.31.31* on a \nprivate network.\n\nThe [Example.java](glusterfs-java-filesystem-example/src/main/java/com/peircean/glusterfs/example/Example.java) file in \nthe glusterfs-java-filesystem-example project provides a demonstration of the capabilities of this project from a high \nlevel consumer's point of view, it connects to the volume on the vagrant VM.\n\nTo run:\n\n    cd glusterfs-java-filesystem-example\n    vagrant up\n    mvn exec:exec\n\n# Roadmap\n\n### TODO:\n\n- Replace Example program with formal integration test suite\n- Align project versions with glusterfs (this project \u0026 libgfapi-jni)\n- Update watch service to use [libgfchangelog](https://github.com/gluster/glusterfs/blob/master/xlators/features/changelog/lib/examples/c/get-changes.c) (instead of polling)\n- Finish attribute support   \n    Owner/group names \u0026 ability to change   \n    More ways to set permissions\n- Finish integration testing for advanced synchronous file IO (reading/writing portion of file)\n- Asychronous file I/O\n- Better error reporting \u0026 handling (utilize UtilJNI.strerror() as part of IOException throws)\n- Finish readSymbolicLink unit tests\n- Publish test coverage report to Coveralls.io   \n    [Blocked](https://github.com/trautonen/coveralls-maven-plugin/issues/36) due to use of Atlassian Clover\n- Create hard links\n\n### Completed:\n\n- Connect to a GlusterFS volume using the NIO.2 API\n- Basic synchronous file I/O   \n    Read the contents of a file all at once   \n    Write a chunk of bytes to a file all at once\n- File attributes   \n    See owner/group id, size, permissions, and last modified timestamp on files and directories   \n    Set permissions\n- Filesystem/volume stats   \n    See the total, free, and usable bytes in a volume\n- Directory listing (with filtering)\n- Move/rename files\n- Watch files for changes   \n    Complete except for GlusterWatchKeyTest, in progress\n- Create \u0026 Read symlinks (read tests incomplete)\n- Publish test coverage \u0026 code quality reports to [SonarQube](http://sonar.peircean.com/dashboard/index/com.peircean.glusterfs:glusterfs-java-filesystem)\n- Delete files\n- Copy files\n- Advanced synchronous file IO\n\n# Contributing/Development\n\nI'd appreciate your help with this project.  If you have any feedback at all please get in touch.  I'm interested in everything from gripes to pull requests.\n\n# Project License\n\nUntil further notice (made here and in LICENSE.txt) this project is licensed under the terms of the\n3-clause BSD license, as written in LICENSE.txt.\n\nThe licensing is likely to change in the near future as the project matures.\n\n# Acknowledgements\n\n- May G. \u0026 Ian H. for their hard work \u0026 dedication to improving this project.\n- Atlassian for providing a free license for their most excellent Java code quality analyzer, [Clover](https://www.atlassian.com/software/clover/overview).\n- All the open source projects we depend on: [GlusterFS](http://gluster.org/), [HawtJNI](https://github.com/fusesource/hawtjni), [Lombok](http://projectlombok.org/), [JUnit](http://junit.org/), [Mockito](https://code.google.com/p/mockito/), [PowerMock](https://code.google.com/p/powermock/), [TestNG](http://testng.org/doc/index.html), [sonarqube](http://www.sonarqube.org/), [Hadoop](http://hadoop.apache.org/) (whose Glob to Regex converter we borrowed), [Maven](http://maven.apache.org/) and all the Maven plugins, and of course [Java](https://www.java.com/).\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgluster%2Fglusterfs-java-filesystem","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgluster%2Fglusterfs-java-filesystem","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgluster%2Fglusterfs-java-filesystem/lists"}