Hi,
I've noticed a few people who want a REST method to trigger an external user directory sync. The primary use case, and the one for my company, is we sometime know when a change has been made that we want JIRA or Confluence to pickup and don't want to set a very quick auto-sync interval and don't want to wait for a really long one.
I wrote a rest service for Confluence that performed the task, and I'm trying to port it to JIRA. Here's the java portion I use for Confluence.
package com.keysight.confluence.support.rest;
import java.util.Map;
import java.util.List;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import com.atlassian.plugins.rest.common.security.AnonymousAllowed;
import com.atlassian.crowd.manager.directory.DirectoryManager;
import com.atlassian.crowd.embedded.api.Directory;
import com.atlassian.crowd.manager.directory.SynchronisationMode;
@Path("/directory")
public class ADRestService
{
private final DirectoryManager directoryManager;
public ADRestService( DirectoryManager directoryManager)
{
this.directoryManager = directoryManager;
}
@GET
@AnonymousAllowed
@Path("sync")
public Response syncAllDirectories( ){
String response = "<p>Syncing</p>";
List directories = directoryManager.findAllDirectories();
for( Directory directory : directoryManager.findAllDirectories() ){
try{
if( directoryManager.isSynchronisable( directory.getId() )
&& !directoryManager.isSynchronising( directory.getId() )){
directoryManager.synchroniseCache( directory.getId(), SynchronisationMode.INCREMENTAL );
}
} catch( Exception e ){
// com.atlassian.crowd.exception.DirectoryInstantiationException
// com.atlassian.crowd.exception.OperationFailedException
}
}
return Response.ok( new RestResponse( response ) ).build();
}
}In porting this to JIRA, I've discovered that I need to enable the jira-core artifact in the pom.xml otherwise it can't find the DirectoryManager. The comment in the pom created by Atlassian indicates that I should be doing this using methods in the jira-api. Does anybody know what those may be?
<!-- Add dependency on jira-core if you want access to JIRA implementation classes as well as the sanctioned API. -->
<!-- This is not normally recommended, but may be required eg when migrating a plugin originally developed against JIRA 4.x -->
<!--
<dependency>
<groupId>com.atlassian.jira</groupId>
<artifactId>jira-core</artifactId>
<version>${jira.version}</version>
<scope>provided</scope>
</dependency>
-->
please let me know about this java api to sync external directories.
Thanks
Hi Scott!
This kind of questions will get a better and faster answer if you post them in our Developer Community. There you'll find developers, product experts and vendors that will be able to help you with your question :)
Cheers,
Ana
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.