You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

LdapSyncService.java 1.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. /*
  2. * Copyright 2014 gitblit.com.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. package com.gitblit.service;
  17. import java.util.concurrent.atomic.AtomicBoolean;
  18. import org.slf4j.Logger;
  19. import org.slf4j.LoggerFactory;
  20. import com.gitblit.IStoredSettings;
  21. import com.gitblit.Keys;
  22. import com.gitblit.auth.LdapAuthProvider;
  23. /**
  24. * @author Alfred Schmid
  25. *
  26. */
  27. public final class LdapSyncService implements Runnable {
  28. private final Logger logger = LoggerFactory.getLogger(LdapSyncService.class);
  29. private final IStoredSettings settings;
  30. private final LdapAuthProvider ldapAuthProvider;
  31. private final AtomicBoolean running = new AtomicBoolean(false);
  32. public LdapSyncService(IStoredSettings settings, LdapAuthProvider ldapAuthProvider) {
  33. this.settings = settings;
  34. this.ldapAuthProvider = ldapAuthProvider;
  35. }
  36. /**
  37. *
  38. * @see java.lang.Runnable#run()
  39. */
  40. @Override
  41. public void run() {
  42. logger.info("Starting user and group sync with ldap service");
  43. if (!running.getAndSet(true)) {
  44. try {
  45. ldapAuthProvider.sync();
  46. } catch (Exception e) {
  47. logger.error("Failed to synchronize with ldap", e);
  48. } finally {
  49. running.getAndSet(false);
  50. }
  51. }
  52. logger.info("Finished user and group sync with ldap service");
  53. }
  54. public boolean isReady() {
  55. return settings.getBoolean(Keys.realm.ldap.synchronize, false);
  56. }
  57. }