Как создать новый основной объект с помощью Jackrabbit / JCR - PullRequest
0 голосов
/ 08 ноября 2018

Я новый разработчик, пытающийся заняться библиотекой Jackrabbit / JCR. Моя команда и я уже несколько месяцев используем EveryonePrincipal, но мы хотели реализовать больше возможностей для каждой роли / принципала пользователя, чтобы мы могли предоставить им необходимый доступ для чтения / записи для каждого узла. Тем не менее, у нас возникают некоторые трудности с выяснением того, как создать новый объект Principal.

Я использовал:

PrincipalImpl newPrincipal = new PrincipalImpl("MyPrincipal");

Затем создайте новый класс RolePrincipal, соответствующий EveryonePrincipal, за исключением того, что имя будет «MyPrincipal» внутри класса RolePrincipal. Этот метод не работает, к сожалению. Есть ли что-то еще, что мы упускаем из этого? И как сохраняется принцип «все»?

EveryonePrincipal.java

public final class EveryonePrincipal implements JackrabbitPrincipal, java.security.acl.Group {

public static final String NAME = "everyone";

private static final EveryonePrincipal INSTANCE = new EveryonePrincipal();

private EveryonePrincipal() { }

public static EveryonePrincipal getInstance() {
    return INSTANCE;
}

//----------------------------------------------------------< Principal >---
@Override
public String getName() {
    return NAME;
}

//--------------------------------------------------------------< Group >---
@Override
public boolean addMember(Principal user) {
    return false;
}

@Override
public boolean removeMember(Principal user) {
    throw new UnsupportedOperationException("Cannot remove a member from the everyone group.");
}

@Override
public boolean isMember(Principal member) {
    return !member.equals(this);
}

@Override
public Enumeration<? extends Principal> members() {
    throw new UnsupportedOperationException("Not implemented.");
}

//-------------------------------------------------------------< Object >---

@Override
public int hashCode() {
    return NAME.hashCode();
}

@Override
public boolean equals(Object obj) {
    if (obj == this) {
        return true;
    } else if (obj instanceof JackrabbitPrincipal && obj instanceof Group) {
        JackrabbitPrincipal other = (JackrabbitPrincipal) obj;
        return NAME.equals(other.getName());
    }
    return false;
}

@Override
public String toString() {
    return NAME + " principal";
} 
}
...