Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

keycloak-user-storage-properties KO in 20.0 #364

Open
Flalal opened this issue Nov 3, 2022 · 2 comments
Open

keycloak-user-storage-properties KO in 20.0 #364

Flalal opened this issue Nov 3, 2022 · 2 comments

Comments

@Flalal
Copy link

Flalal commented Nov 3, 2022

Describe the bug

When i want to compile and generate a jar from project keycloak-user-storage-properties i have errors like :
[ERROR] /home/florian/Documents/perso/keycloak-quickstarts/user-storage-simple/src/main/java/org/keycloak/quickstart/writeable/PropertyFileUserStorageProvider.java:[53,8]

Here we must implements methods from :
UserStorageProvider,
UserLookupProvider,
CredentialInputValidator,
CredentialInputUpdater,
UserRegistrationProvider,
UserQueryProvider

Version

20.0

Expected behavior

A build success

Actual behavior

A build failure

How to Reproduce?

Checkout the 20.0 and try to clean install in java 11.0

Anything else?

I have already fork the project, and fix on my fork.
Btw it's my first open source contribution so if somethings is missing tell me.

@10101010101010001
Copy link

Probably not worth a second issue but I'm seeing the same problem with 20.0.1 user-storage-jpa. Thanks in advance.

[ERROR] user-storage-jpa/src/main/java/org/keycloak/quickstart/storage/user/MyUserStorageProvider.java:[54,8] org.keycloak.quickstart.storage.user.MyUserStorageProvider is not abstract and does not override abstract method getUserByEmail(org.keycloak.models.RealmModel,java.lang.String) in org.keycloak.storage.user.UserLookupProvider [ERROR] user-storage-jpa/src/main/java/org/keycloak/quickstart/storage/user/MyUserStorageProvider.java:[95,5] method does not override or implement a method from a supertype [ERROR] user-storage-jpa/src/main/java/org/keycloak/quickstart/storage/user/MyUserStorageProvider.java:[107,5] method does not override or implement a method from a supertype [ERROR] user-storage-jpa/src/main/java/org/keycloak/quickstart/storage/user/MyUserStorageProvider.java:[121,5] method does not override or implement a method from a supertype [ERROR] user-storage-jpa/src/main/java/org/keycloak/quickstart/storage/user/MyUserStorageProvider.java:[190,5] method does not override or implement a method from a supertype [ERROR] user-storage-jpa/src/main/java/org/keycloak/quickstart/storage/user/MyUserStorageProvider.java:[231,5] method does not override or implement a method from a supertype [ERROR] user-storage-jpa/src/main/java/org/keycloak/quickstart/storage/user/MyUserStorageProvider.java:[236,5] method does not override or implement a method from a supertype [ERROR] user-storage-jpa/src/main/java/org/keycloak/quickstart/storage/user/MyUserStorageProvider.java:[252,5] method does not override or implement a method from a supertype [ERROR] user-storage-jpa/src/main/java/org/keycloak/quickstart/storage/user/MyUserStorageProvider.java:[257,5] method does not override or implement a method from a supertype [ERROR] user-storage-jpa/src/main/java/org/keycloak/quickstart/storage/user/MyUserStorageProvider.java:[273,5] method does not override or implement a method from a supertype [ERROR] user-storage-jpa/src/main/java/org/keycloak/quickstart/storage/user/MyUserStorageProvider.java:[278,5] method does not override or implement a method from a supertype [ERROR] user-storage-jpa/src/main/java/org/keycloak/quickstart/storage/user/MyUserStorageProvider.java:[283,5] method does not override or implement a method from a supertype [ERROR] user-storage-jpa/src/main/java/org/keycloak/quickstart/storage/user/MyUserStorageProvider.java:[288,5] method does not override or implement a method from a supertype [ERROR] user-storage-jpa/src/main/java/org/keycloak/quickstart/storage/user/MyUserStorageProvider.java:[293,5] method does not override or implement a method from a supertype

@10101010101010001
Copy link

I was able to figure it out thanks to dasniko's keycloak-extensions-demo user-storage

How I solved it:
I commented out invalid overrides mentioned in my post above and added

`

@Override
public Stream<UserModel> getGroupMembersStream(RealmModel realm, GroupModel group, Integer firstResult, Integer maxResults){
    return Stream.empty();
}

@Override
public Stream<UserModel> searchForUserByUserAttributeStream(RealmModel realm, String attrName, String attrValue){
    return Stream.empty();
}

@Override
public Stream<String> getDisableableCredentialTypesStream(RealmModel realm, UserModel user){
    return Stream.empty();
}

private Stream<UserModel> toUserModelStream(List<UserEntity> users, RealmModel realm) {
	logger.debugf("Received {} users from provider", users.size());
	return users.stream().map(user -> new MembersAdapter(session, realm, model, user));
}


@Override
public Stream<UserModel> searchForUserStream(RealmModel realm, String search, Integer firstResult, Integer maxResults){
    logger.debugf("searchForUserStream, search={}, first={}, max={}", search, firstResult, maxResults);
    //return Stream.empty();
    TypedQuery<UserEntity> query = em.createNamedQuery("searchForUser", UserEntity.class);
    query.setParameter("search", "%" + search.toLowerCase() + "%");
    if (firstResult != -1) {
        query.setFirstResult(firstResult);
    }
    if (maxResults != -1) {
        query.setMaxResults(maxResults);
    }
    List<UserEntity> users = query.getResultList();
    return toUserModelStream(users, realm);
}

@Override
public Stream<UserModel> searchForUserStream(RealmModel realm, Map<String, String> params, Integer firstResult, Integer maxResults){
    //return Stream.empty();
	logger.debugf("searchForUserStream, params={}, first={}, max={}", params, firstResult, maxResults);
    TypedQuery<UserEntity> query = em.createNamedQuery("searchForUser", UserEntity.class);
    query.setParameter("search", "%" );
    if (firstResult != -1) {
        query.setFirstResult(firstResult);
    }
    if (maxResults != -1) {
        query.setMaxResults(maxResults);
    }
    List<UserEntity> users = query.getResultList();
    return toUserModelStream(users, realm);
}`

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants