X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;ds=sidebyside;f=security%2Fruntime%2Forg.argeo.security.core%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fsecurity%2FUserNature.java;h=52d1cd1fa61ab6d7b559d4f1dd08195aeb1f0f77;hb=490d9907457c43acfa965e7979ce5974bc1ba6ca;hp=f0bff97e8bf9547274f8fbe5254a24a69ddf26a5;hpb=3b33f903d9aa7955d3832dd343111e364078317a;p=lgpl%2Fargeo-commons.git diff --git a/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/UserNature.java b/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/UserNature.java index f0bff97e8..52d1cd1fa 100644 --- a/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/UserNature.java +++ b/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/UserNature.java @@ -1,25 +1,31 @@ +/* + * Copyright (C) 2010 Mathieu Baudier + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.argeo.security; -import java.util.UUID; +import java.io.Serializable; +import java.util.List; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; +import org.argeo.ArgeoException; -//@JsonAutoDetect(value = { JsonMethod.GETTER, JsonMethod.SETTER }) -public class UserNature { - private final static Log log = LogFactory.getLog(UserNature.class); +public class UserNature implements Serializable { + private static final long serialVersionUID = 1L; - private String uuid = UUID.randomUUID().toString(); private String type; - public String getUuid() { - return uuid; - } - - public void setUuid(String uuid) { - this.uuid = uuid; - } - public String getType() { if (type != null) return type; @@ -31,10 +37,26 @@ public class UserNature { this.type = type; } -// @JsonAnySetter -// public void anySetter(String key, Object obj) { -// if (obj != null) -// log.info("anySetter: " + key + "=" + obj + " (" + obj.getClass() -// + "), natureType=" + type); -// } + public final static void updateUserNaturesWithCheck( + List userNatures, List userNaturesData) { + if (userNatures.size() != userNaturesData.size()) + throw new ArgeoException( + "It is forbidden to add or remove user natures via this method"); + for (int i = 0; i < userNatures.size(); i++) { + String type = userNatures.get(i).getType(); + boolean found = false; + for (int j = 0; j < userNatures.size(); j++) { + String newType = userNaturesData.get(j).getType(); + if (type.equals(newType)) + found = true; + } + if (!found) + throw new ArgeoException( + "Could not find a user nature of type " + type); + } + + for (int i = 0; i < userNatures.size(); i++) { + userNatures.set(i, userNaturesData.get(i)); + } + } }