test_class.declarator: ID_ATTR = "sAMAccountName"
test_class.modifier: private final
test_class.original_string: private final String ID_ATTR = "sAMAccountName";
test_class.type: String
test_class.var_name: ID_ATTR
test_class.declarator: ldapTemplateMock
test_class.modifier: @Mock
      private
test_class.original_string: @Mock
      private LdapTemplate ldapTemplateMock;
test_class.type: LdapTemplate
test_class.var_name: ldapTemplateMock
test_class.declarator: ldapPropertiesMock
test_class.modifier: @Mock
      private
test_class.original_string: @Mock
      private LdapConfigurationProperties ldapPropertiesMock;
test_class.type: LdapConfigurationProperties
test_class.var_name: ldapPropertiesMock
test_class.declarator: clock
test_class.modifier: private
test_class.original_string: private Clock clock;
test_class.type: Clock
test_class.var_name: clock
test_class.declarator: ldapAdapter
test_class.modifier: private
test_class.original_string: private LdapAdapter ldapAdapter;
test_class.type: LdapAdapter
test_class.var_name: ldapAdapter
test_class.file: backend/project-board/src/test/java/de/adesso/projectboard/ad/service/LdapAdapterTest.java
test_class.identifier: LdapAdapterTest
test_case.body: @Test
      public void getThumbnailPhotos() {
          // given
  
  
          // when
  
          // then
      }
test_case.class_method_signature: LdapAdapterTest.getThumbnailPhotos()
test_case.full_signature: @Test public void getThumbnailPhotos()
test_case.identifier: getThumbnailPhotos
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void getThumbnailPhotos()
focal_class.declarator: USER_NODE_ATTRIBUTES = new String[] {"name", "givenName", "mail", "manager", "sn", "department", "division", "directReports", "distinguishedName"}
focal_class.modifier: private static final
focal_class.original_string: private static final String[] USER_NODE_ATTRIBUTES = new String[] {"name", "givenName", "mail", "manager", "sn", "department", "division", "directReports", "distinguishedName"};
focal_class.type: String[]
focal_class.var_name: USER_NODE_ATTRIBUTES
focal_class.declarator: EPOCH_OFFSET = 116_444_736_000_000_000L
focal_class.modifier: private static final
focal_class.original_string: private static final long EPOCH_OFFSET = 116_444_736_000_000_000L;
focal_class.type: long
focal_class.var_name: EPOCH_OFFSET
focal_class.declarator: ldapTemplate
focal_class.modifier: private final
focal_class.original_string: private final LdapTemplate ldapTemplate;
focal_class.type: LdapTemplate
focal_class.var_name: ldapTemplate
focal_class.declarator: clock
focal_class.modifier: private final
focal_class.original_string: private final Clock clock;
focal_class.type: Clock
focal_class.var_name: clock
focal_class.declarator: base
focal_class.modifier: private final
focal_class.original_string: private final String base;
focal_class.type: String
focal_class.var_name: base
focal_class.declarator: idAttribute
focal_class.modifier: private final
focal_class.original_string: private final String idAttribute;
focal_class.type: String
focal_class.var_name: idAttribute
focal_class.file: backend/project-board/src/main/java/de/adesso/projectboard/ad/service/LdapAdapter.java
focal_class.identifier: LdapAdapter
focal_class.class_method_signature: LdapAdapter.LdapAdapter(LdapTemplate ldapTemplate, LdapConfigurationProperties properties, Clock clock)
focal_class.full_signature: @Autowired public  LdapAdapter(LdapTemplate ldapTemplate, LdapConfigurationProperties properties, Clock clock)
focal_class.identifier: LdapAdapter
focal_class.modifiers: @Autowired public
focal_class.parameters: (LdapTemplate ldapTemplate, LdapConfigurationProperties properties, Clock clock)
focal_class.signature:  LdapAdapter(LdapTemplate ldapTemplate, LdapConfigurationProperties properties, Clock clock)
focal_class.class_method_signature: LdapAdapter.getAllUserNodes()
focal_class.full_signature: public Collection<LdapUserNode> getAllUserNodes()
focal_class.identifier: getAllUserNodes
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: Collection<LdapUserNode>
focal_class.signature: Collection<LdapUserNode> getAllUserNodes()
focal_class.class_method_signature: LdapAdapter.getThumbnailPhotos(@NonNull Collection<String> userIds)
focal_class.full_signature: public Map<String, byte[]> getThumbnailPhotos(@NonNull Collection<String> userIds)
focal_class.identifier: getThumbnailPhotos
focal_class.modifiers: public
focal_class.parameters: (@NonNull Collection<String> userIds)
focal_class.return: Map<String, byte[]>
focal_class.signature: Map<String, byte[]> getThumbnailPhotos(@NonNull Collection<String> userIds)
focal_class.class_method_signature: LdapAdapter.buildIdCriteria(@NotNull Collection<String> userIds)
focal_class.full_signature:  ContainerCriteria buildIdCriteria(@NotNull Collection<String> userIds)
focal_class.identifier: buildIdCriteria
focal_class.parameters: (@NotNull Collection<String> userIds)
focal_class.return: ContainerCriteria
focal_class.signature: ContainerCriteria buildIdCriteria(@NotNull Collection<String> userIds)
focal_class.class_method_signature: LdapAdapter.getActiveDirectoryTimestamp(@NonNull LocalDateTime dateTime)
focal_class.full_signature:  String getActiveDirectoryTimestamp(@NonNull LocalDateTime dateTime)
focal_class.identifier: getActiveDirectoryTimestamp
focal_class.parameters: (@NonNull LocalDateTime dateTime)
focal_class.return: String
focal_class.signature: String getActiveDirectoryTimestamp(@NonNull LocalDateTime dateTime)
focal_method.body: public Map<String, byte[]> getThumbnailPhotos(@NonNull Collection<String> userIds) {
          if(userIds.isEmpty()) {
              return new HashMap<>();
          }
  
          var query = query()
                  .base(base)
                  .attributes(idAttribute, "thumbnailPhoto")
                  .countLimit(userIds.size())
                  .where(idAttribute).isPresent()
                  .and("thumbnailPhoto").isPresent()
                  .and(buildIdCriteria(userIds));
  
          var mapEntries = ldapTemplate.search(query, new ThumbnailPhotoMapper(idAttribute));
  
          return mapEntries.stream()
                  .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
      }
focal_method.class_method_signature: LdapAdapter.getThumbnailPhotos(@NonNull Collection<String> userIds)
focal_method.full_signature: public Map<String, byte[]> getThumbnailPhotos(@NonNull Collection<String> userIds)
focal_method.identifier: getThumbnailPhotos
focal_method.invocations: isEmpty and isPresent and isPresent where countLimit attributes base query size buildIdCriteria search collect stream toMap
focal_method.modifiers: public
focal_method.parameters: (@NonNull Collection<String> userIds)
focal_method.return: Map<String, byte[]>
focal_method.signature: Map<String, byte[]> getThumbnailPhotos(@NonNull Collection<String> userIds)