The idea behind this project is to enable developers to interact easily with Alfresco One Public REST API V1. To achieve this goal this project provide a single JAR file that can be used in Java or Android applications.
Please note this project is currently under development and is available only on Early Access Mode
Alfresco REST API v1 is currently on Early Access Mode and it's only available with the latest version of Alfresco Community 201606 and onward. Before using this library you have to install this platform available here
For more information about Alfresco REST API
- "The Future of REST APIs” Tech Talk Live session
- "Alfresco REST API of the future" BeeCon slides
- Alfresco Core REST API
<dependency>
<groupId>org.alfresco.client</groupId>
<artifactId>alfresco-java-client</artifactId>
<version>1.0.0-beta1</version>
</dependency>
compile 'org.alfresco.client:alfresco-java-client:1.0.0-beta1'
Basic Auth
AlfrescoClient client = new AlfrescoClient.Builder().connect(endpoint, username, password).build();
Ticket based (like SAML or Alfresco Ticket)
AlfrescoClient client = new AlfrescoClient.Builder().connectWithTicket(baseUrl, ticketValue).build();
Token based (like oAuth)
AlfrescoClient client = new AlfrescoClient.Builder().connectWithToken(baseUrl, tokenValue).build();
//Retrieve user activities and site activities
ActivityStreamAPI activityAPI = client.getActivityStreamAPI();
//Retrieve and manage comments
CommentAPI commentAPI = client.getCommentsAPI();
//Retrieve Favorites information,
FavoritesAPI favoritesAPI = client.getFavoritesAPI();
//Retrieve and manage file/folder (bound to 5.1 File/Folder API)
NodesAPI nodesAPI = client.getNodesAPI();
//Retrieve user information,
PeopleAPI peopleAPI = client.getPeopleAPI();
//Retrieve and manage ratings
RatingsAPI ratingAPI = client.getRatingsAPI();
//Retrieve and manage sites informations
SitesAPI siteAPI = client.getSitesAPI();
//Retrieve and manage tags
TagAPI tagAPI = client.getTagsAPI();
//Retrieve and manage tags
RenditionsAPI renditionAPI = client.getRenditionsAPI();
//Retrieve and manage Shared Links
SharedLinksAPI sharedLinkAPI = client.getSharedLinksAPI();
//Retrieve and manage Trashcan
TrashcanAPI trashcanAPI = client.getTrashcanAPI();
Synchronuously
Response<NodeRepresentation> response = client.getNodesAPI().getNodeCall(NodeAPI.FOLDER_ROOT).execute();
Asynchronuously
client.getNodesAPI().getNodeCall(NodesAPI.FOLDER_ROOT).enqueue(new Callback<NodeRepresentation>() {
@Override
public void onResponse(Call<NodeRepresentation> call, Response<NodeRepresentation> response)
//TODO When response is correct
}
@Override
public void onFailure(Call<NodeRepresentation> call, Throwable t)
//TODO When request has failed
}
});
RxJava
nodesAPI.getNodeObservable(NodeAPI.FOLDER_ROOT).subscribe(root -> Assert.assertEquals(root.getName(), "Company Home"));
// Retrieve NODE API
NodesAPI nodeService = client.getNodesAPI();
// Retrieve Company Home
Response<NodeRepresentation> response = nodeService.getNode(ApiNode.FOLDER_ROOT).execute();
NodeRepresentation rootNode = response.body();
//Create a Folder
CreateNodeRequest request = new CreateNodeRequest("Test", "cm:folder");
Response<NodeRepresentation> testNodeResponse = nodeService.createNode(rootNode.getId(), request).execute();
NodeRepresentation testNode = testNodeResponse.body();
//Rename Folder
EditNodeRequest renameRequest = new EditNodeRequest("TestV2");
Response<NodeRepresentation> updatedResponse = nodeService.editNode(testNode.getIdentifier(), renameRequest).execute();
//Delete Node
Response<Void> deleteResponse = nodeService.removeNode(testNode.getIdentifier()).execute();
Assert.assertEquals(deleteResponse.isSuccess(), true);
//Print the number of sites
nodesAPI.getNodeObservable(NodesAPI.FOLDER_ROOT)
.flatMap(node -> nodesAPI.getChildrenObservable(node.getIdentifier()))
.flatMap(nodes -> Observable.from(nodes.getList()))
.filter(node -> node.isFolder() && "Sites".equals(node.getName()))
.flatMap(siteNode -> nodesAPI.getChildrenObservable(siteNode.getIdentifier()))
.subscribe(sites -> System.out.println(sites.getPagination().getTotalItems()));
You can retrieve other usage of the lib in unit tests defined here
Tests can be executed only with the latest version of Alfresco One i.e Alfresco One Enterprise 5.2 or Alfresco Community 201609 and onwards.
Tests can be executed with a fresh Alfresco install on localhost:8080 with user admin/admin
Want to manage other tests ? Replace all TEST_X in Client API: AlfrescoAPITestCase