From 326c93ec9c645bf0ba49e151138ec1a8df2137b7 Mon Sep 17 00:00:00 2001 From: Jerry Flood Date: Mon, 25 Mar 2019 12:17:28 -0400 Subject: Commit 2 for Create Optimized Sched API Multiple commits required due to commit size limitation. Change-Id: Id9195cbcdf8816a73d51a98eca56fc8b51111880 Issue-ID: OPTFRA-458 Signed-off-by: Jerry Flood --- .../onap/optf/cmso/aaf/AafAuthorizationFilter.java | 101 ++++---- .../java/org/onap/optf/cmso/aaf/AafFilter.java | 52 ++-- .../main/java/org/onap/optf/cmso/aaf/AafPerm.java | 193 +++++++++----- .../org/onap/optf/cmso/aaf/AafSecurityConfig.java | 27 +- .../java/org/onap/optf/cmso/aaf/AafUserRole.java | 286 ++++++++++++--------- .../onap/optf/cmso/aaf/AafUserRoleProperties.java | 191 +++++++------- .../org/onap/optf/cmso/aaf/FilterPriority.java | 41 +-- .../org/onap/optf/cmso/aaf/ResponseFormatter.java | 37 +-- .../onap/optf/cmso/common/ApprovalStatusEnum.java | 60 +++-- .../onap/optf/cmso/common/ApprovalTypesEnum.java | 52 ++-- .../org/onap/optf/cmso/common/CMSStatusEnum.java | 137 +++++----- 11 files changed, 662 insertions(+), 515 deletions(-) (limited to 'cmso-service') diff --git a/cmso-service/src/main/java/org/onap/optf/cmso/aaf/AafAuthorizationFilter.java b/cmso-service/src/main/java/org/onap/optf/cmso/aaf/AafAuthorizationFilter.java index 25a1e77..f3b36f5 100644 --- a/cmso-service/src/main/java/org/onap/optf/cmso/aaf/AafAuthorizationFilter.java +++ b/cmso-service/src/main/java/org/onap/optf/cmso/aaf/AafAuthorizationFilter.java @@ -1,32 +1,40 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.optf.cmso - * ================================================================================ - * Copyright © 2019 AT&T Intellectual Property. All rights reserved. - * ================================================================================ +/******************************************************************************* + * Copyright © 2019 AT&T Intellectual Property. + * * 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 - * + * + * 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. - * ============LICENSE_END========================================================= - */ + * + * + * Unless otherwise specified, all documentation contained herein is licensed + * under the Creative Commons License, Attribution 4.0 Intl. (the "License"); + * you may not use this documentation except in compliance with the License. + * You may obtain a copy of the License at + * + * https://creativecommons.org/licenses/by/4.0/ + * + * Unless required by applicable law or agreed to in writing, documentation + * 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.onap.optf.cmso.aaf; import java.io.IOException; import java.util.List; - import javax.servlet.FilterChain; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; - import org.onap.aaf.cadi.CadiWrap; import org.onap.aaf.cadi.Permission; import org.onap.observations.Observation; @@ -39,53 +47,46 @@ import org.springframework.context.annotation.Profile; import org.springframework.stereotype.Component; /** - * AAF authorization filter + * AAF authorization filter. */ @Component @Profile(SpringProfiles.AAF_AUTHENTICATION) -public class AafAuthorizationFilter extends OrderedRequestContextFilter { +public class AafAuthorizationFilter extends OrderedRequestContextFilter { - @Autowired - AafUserRoleProperties userRoleProperties; - + @Autowired + AafUserRoleProperties userRoleProperties; + + /** + * Instantiates a new aaf authorization filter. + */ public AafAuthorizationFilter() { this.setOrder(FilterPriority.AAF_AUTHORIZATION.getPriority()); - + } @Override - protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws IOException, ServletException { - try - { - if (request instanceof CadiWrap) - { - CadiWrap cw = (CadiWrap)request; - List perms = cw.getPermissions(cw.getUserPrincipal()); - if (userRoleProperties.processPermissions(request, perms)) - { - filterChain.doFilter(request,response); - } - else - { - Observation.report(LogMessages.UNAUTHORIZED); - ResponseFormatter.errorResponse(request, response, - new CMSException(LogMessages.UNAUTHORIZED.getStatus(), - LogMessages.UNAUTHORIZED, "")); - } - } - else - { - throw new Exception(); - } - } - catch (Exception e) - { - Observation.report(LogMessages.UNEXPECTED_EXCEPTION, e, e.getMessage()); - ResponseFormatter.errorResponse(request, response, - new CMSException(LogMessages.UNAUTHORIZED.getStatus(), - LogMessages.UNAUTHORIZED, "")); - } + protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) + throws IOException, ServletException { + try { + if (request instanceof CadiWrap) { + CadiWrap cw = (CadiWrap) request; + List perms = cw.getPermissions(cw.getUserPrincipal()); + if (userRoleProperties.processPermissions(request, perms)) { + filterChain.doFilter(request, response); + } else { + Observation.report(LogMessages.UNAUTHORIZED); + ResponseFormatter.errorResponse(request, response, new CMSException( + LogMessages.UNAUTHORIZED.getStatus(), LogMessages.UNAUTHORIZED, "")); + } + } else { + throw new Exception(); + } + } catch (Exception e) { + Observation.report(LogMessages.UNEXPECTED_EXCEPTION, e, e.getMessage()); + ResponseFormatter.errorResponse(request, response, + new CMSException(LogMessages.UNAUTHORIZED.getStatus(), LogMessages.UNAUTHORIZED, "")); + } } } diff --git a/cmso-service/src/main/java/org/onap/optf/cmso/aaf/AafFilter.java b/cmso-service/src/main/java/org/onap/optf/cmso/aaf/AafFilter.java index 1bdebdd..586822f 100644 --- a/cmso-service/src/main/java/org/onap/optf/cmso/aaf/AafFilter.java +++ b/cmso-service/src/main/java/org/onap/optf/cmso/aaf/AafFilter.java @@ -1,33 +1,41 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.optf.cmso - * ================================================================================ - * Copyright © 2019 AT&T Intellectual Property. All rights reserved. - * ================================================================================ +/******************************************************************************* + * Copyright © 2019 AT&T Intellectual Property. + * * 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 + * 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. - * ============LICENSE_END========================================================= - */ -package org.onap.optf.cmso.aaf; + * + * + * Unless otherwise specified, all documentation contained herein is licensed + * under the Creative Commons License, Attribution 4.0 Intl. (the "License"); + * you may not use this documentation except in compliance with the License. + * You may obtain a copy of the License at + * + * https://creativecommons.org/licenses/by/4.0/ + * + * Unless required by applicable law or agreed to in writing, documentation + * 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.onap.optf.cmso.aaf; import java.io.IOException; import java.util.Properties; - import javax.servlet.FilterChain; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; - import org.onap.aaf.cadi.PropAccess; import org.onap.aaf.cadi.filter.CadiFilter; import org.onap.observations.Observation; @@ -40,7 +48,7 @@ import org.springframework.context.annotation.Profile; import org.springframework.stereotype.Component; /** - * AAF authentication filter + * AAF authentication filter. */ @Component @@ -49,6 +57,12 @@ public class AafFilter extends OrderedRequestContextFilter { private final CadiFilter cadiFilter; + /** + * Instantiates a new aaf filter. + * + * @throws IOException Signals that an I/O exception has occurred. + * @throws ServletException the servlet exception + */ public AafFilter() throws IOException, ServletException { Properties cadiProperties = new Properties(); cadiProperties.load(Application.class.getClassLoader().getResourceAsStream("cadi.properties")); @@ -57,13 +71,13 @@ public class AafFilter extends OrderedRequestContextFilter { } @Override - protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws IOException, ServletException { + protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) + throws IOException, ServletException { cadiFilter.doFilter(request, response, filterChain); - if(response.getStatus() ==401){ - Observation.report(LogMessages.UNAUTHENTICATED); - ResponseFormatter.errorResponse(request, response, - new CMSException(LogMessages.UNAUTHENTICATED.getStatus(), - LogMessages.UNAUTHENTICATED, "")); + if (response.getStatus() == 401) { + Observation.report(LogMessages.UNAUTHENTICATED); + ResponseFormatter.errorResponse(request, response, + new CMSException(LogMessages.UNAUTHENTICATED.getStatus(), LogMessages.UNAUTHENTICATED, "")); } } diff --git a/cmso-service/src/main/java/org/onap/optf/cmso/aaf/AafPerm.java b/cmso-service/src/main/java/org/onap/optf/cmso/aaf/AafPerm.java index ea9d324..db58156 100644 --- a/cmso-service/src/main/java/org/onap/optf/cmso/aaf/AafPerm.java +++ b/cmso-service/src/main/java/org/onap/optf/cmso/aaf/AafPerm.java @@ -1,78 +1,137 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.optf.cmso - * ================================================================================ - * Copyright © 2019 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * 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 +/******************************************************************************* + * Copyright © 2019 AT&T Intellectual Property. + * + * 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. + * * - * http://www.apache.org/licenses/LICENSE-2.0 + * Unless otherwise specified, all documentation contained herein is licensed under the Creative + * Commons License, Attribution 4.0 Intl. (the "License"); you may not use this documentation except + * in compliance with the License. You may obtain a copy of the License at * - * 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 + * https://creativecommons.org/licenses/by/4.0/ + * + * Unless required by applicable law or agreed to in writing, documentation 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. - * ============LICENSE_END========================================================= - */ + ******************************************************************************/ + package org.onap.optf.cmso.aaf; import java.util.HashSet; import java.util.Set; - import org.onap.aaf.cadi.aaf.AAFPermission; -public class AafPerm -{ - private String type; - private String instance; - private String action; - private Set actions = new HashSet<>(); - - public String getAction() { - return action; - } - public void setAction(String action) { - this.action = action; - String list[] = action.split(","); - for (String a : list) - actions.add(a); - } - public String getType() { - return type; - } - public void setType(String type) { - this.type = type; - } - public String getInstance() { - return instance; - } - public void setInstance(String instance) { - this.instance = instance; - } - - public Set getActions() { - return actions; - } - public void setActions(Set actions) { - this.actions = actions; - } - public boolean matches(AAFPermission userPerm) - { - if (type.equals(userPerm.getType())) - { - if (userPerm.getInstance().equals("*") || instance.equals("*") || userPerm.getInstance().equals(instance)) - { - for (String userAction : userPerm.getAction().split(",")) - { - if (userAction.equals("*") || actions.contains("*") || actions.contains(userAction)) - return true; - } - } - } - return false; - } +/** + * The Class AafPerm. + */ +public class AafPerm { + private String type; + private String instance; + private String action; + private Set actions = new HashSet<>(); + + /** + * Gets the action. + * + * @return the action + */ + public String getAction() { + return action; + } + + /** + * Sets the action. + * + * @param action the new action + */ + public void setAction(String action) { + this.action = action; + String[] list = action.split(","); + for (String a : list) { + actions.add(a); + } + } + + /** + * Gets the type. + * + * @return the type + */ + public String getType() { + return type; + } + + /** + * Sets the type. + * + * @param type the new type + */ + public void setType(String type) { + this.type = type; + } + + /** + * Gets the single instance of AafPerm. + * + * @return single instance of AafPerm + */ + public String getInstance() { + return instance; + } + + /** + * Sets the instance. + * + * @param instance the new instance + */ + public void setInstance(String instance) { + this.instance = instance; + } + + /** + * Gets the actions. + * + * @return the actions + */ + public Set getActions() { + return actions; + } + + /** + * Sets the actions. + * + * @param actions the new actions + */ + public void setActions(Set actions) { + this.actions = actions; + } + + /** + * Matches. + * + * @param userPerm the user perm + * @return true, if successful + */ + public boolean matches(AAFPermission userPerm) { + if (type.equals(userPerm.getType())) { + if (userPerm.getInstance().equals("*") || instance.equals("*") || userPerm.getInstance().equals(instance)) { + for (String userAction : userPerm.getAction().split(",")) { + if (userAction.equals("*") || actions.contains("*") || actions.contains(userAction)) { + return true; + } + } + } + } + return false; + } } diff --git a/cmso-service/src/main/java/org/onap/optf/cmso/aaf/AafSecurityConfig.java b/cmso-service/src/main/java/org/onap/optf/cmso/aaf/AafSecurityConfig.java index cb00a90..068e6c3 100644 --- a/cmso-service/src/main/java/org/onap/optf/cmso/aaf/AafSecurityConfig.java +++ b/cmso-service/src/main/java/org/onap/optf/cmso/aaf/AafSecurityConfig.java @@ -1,32 +1,33 @@ /* * Copyright © 2019 AT&T Intellectual Property. - * + * * 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. - * - * + * + * * Unless otherwise specified, all documentation contained herein is licensed * under the Creative Commons License, Attribution 4.0 Intl. (the "License"); * you may not use this documentation except in compliance with the License. * You may obtain a copy of the License at - * + * * https://creativecommons.org/licenses/by/4.0/ - * + * * Unless required by applicable law or agreed to in writing, documentation * 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.onap.optf.cmso.aaf; import org.onap.optf.cmso.SpringProfiles; @@ -43,17 +44,17 @@ import org.springframework.security.config.annotation.web.configuration.WebSecur @ComponentScan("org.onap.optf") @Profile(SpringProfiles.AAF_AUTHENTICATION) public class AafSecurityConfig extends WebSecurityConfigurerAdapter { - - + + @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { - + } - + @Override protected void configure(HttpSecurity http) throws Exception { - + http.csrf().disable(); - + } } \ No newline at end of file diff --git a/cmso-service/src/main/java/org/onap/optf/cmso/aaf/AafUserRole.java b/cmso-service/src/main/java/org/onap/optf/cmso/aaf/AafUserRole.java index 762cf3c..f9351b2 100644 --- a/cmso-service/src/main/java/org/onap/optf/cmso/aaf/AafUserRole.java +++ b/cmso-service/src/main/java/org/onap/optf/cmso/aaf/AafUserRole.java @@ -1,127 +1,177 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.optf.cmso - * ================================================================================ - * Copyright © 2019 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * 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 +/******************************************************************************* + * Copyright © 2019 AT&T Intellectual Property. + * + * 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. + * + * + * Unless otherwise specified, all documentation contained herein is licensed under the Creative + * Commons License, Attribution 4.0 Intl. (the "License"); you may not use this documentation except + * in compliance with the License. You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * https://creativecommons.org/licenses/by/4.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 + * Unless required by applicable law or agreed to in writing, documentation 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. - * ============LICENSE_END========================================================= - */ + ******************************************************************************/ + package org.onap.optf.cmso.aaf; import java.util.ArrayList; import java.util.List; -public class AafUserRole -{ - private String url = ""; - private String pathParts[] = {}; - private String perm = ""; - private String method = ""; - private List aafPerms = new ArrayList<>(); - - public AafUserRole(String url, String perm) - { - this.setUrl(url); - this.setPerm(perm); - pathParts = url.split("\\/"); - - String[] perms = perm.split(","); - for (String p : perms) - { - String parts[] = p.split(" "); - if (parts.length == 2) - method = parts[1]; - else - method = "ALL"; - - String[] list = parts[0].split("\\|"); - if (list.length == 3) - { - AafPerm aafPerm = new AafPerm(); - aafPerm.setAction(list[2]); - aafPerm.setInstance(list[1]); - aafPerm.setType(list[0]); - aafPerms.add(aafPerm); - } - } - } - public String getUrl() { - return url; - } - public void setUrl(String url) { - this.url = url; - } - public String getPerm() { - return perm; - } - public void setPerm(String perm) { - this.perm = perm; - } - public List getAafPerms() { - return aafPerms; - } - public void setAafPerms(List aafPerms) { - this.aafPerms = aafPerms; - } - - public boolean matches(String path, String matchMethod) - { - if (!this.method.equalsIgnoreCase("ALL") - && !this.method.equals("*") - && !this.method.equals(matchMethod)) - return false; - List inNodes = new ArrayList<>(); - List matchNodes = new ArrayList<>(); - String[] pathList = path.split("\\/"); - for (String n : pathList) - { - inNodes.add(n); - } - for (String n : pathParts) - { - matchNodes.add(n); - } - - while (!inNodes.isEmpty() && !matchNodes.isEmpty()) - { - String inNode = inNodes.remove(0); - String matchNode = matchNodes.get(0); - if (matchNode.equals(inNode) || matchNode.equals("*")) - { - matchNodes.remove(0); - } - else - { - if (!matchNode.equals("**")) - { - return false; - } - } - } - - // - if (inNodes.isEmpty() && matchNodes.isEmpty()) - return true; - - // We have incoming nodes remaining, see if we can wildcard them - if (matchNodes.size() == 1) - { - if (matchNodes.get(0).equals("**")) - return true; - if (inNodes.size() == 1 && matchNodes.get(0).equals("*")) - return true; - } - return false; - } +/** + * The Class AafUserRole. + */ +public class AafUserRole { + private String url = ""; + private String pathParts[] = {}; + private String perm = ""; + private String method = ""; + private List aafPerms = new ArrayList<>(); + + /** + * Instantiates a new aaf user role. + * + * @param url the url + * @param perm the perm + */ + public AafUserRole(String url, String perm) { + this.setUrl(url); + this.setPerm(perm); + pathParts = url.split("\\/"); + + String[] perms = perm.split(","); + for (String p : perms) { + String[] parts = p.split(" "); + if (parts.length == 2) { + method = parts[1]; + } + else { + method = "ALL"; + } + + String[] list = parts[0].split("\\|"); + if (list.length == 3) { + AafPerm aafPerm = new AafPerm(); + aafPerm.setAction(list[2]); + aafPerm.setInstance(list[1]); + aafPerm.setType(list[0]); + aafPerms.add(aafPerm); + } + } + } + + /** + * Gets the url. + * + * @return the url + */ + public String getUrl() { + return url; + } + + /** + * Sets the url. + * + * @param url the new url + */ + public void setUrl(String url) { + this.url = url; + } + + /** + * Gets the perm. + * + * @return the perm + */ + public String getPerm() { + return perm; + } + + /** + * Sets the perm. + * + * @param perm the new perm + */ + public void setPerm(String perm) { + this.perm = perm; + } + + /** + * Gets the aaf perms. + * + * @return the aaf perms + */ + public List getAafPerms() { + return aafPerms; + } + + /** + * Sets the aaf perms. + * + * @param aafPerms the new aaf perms + */ + public void setAafPerms(List aafPerms) { + this.aafPerms = aafPerms; + } + + /** + * Matches. + * + * @param path the path + * @param matchMethod the match method + * @return true, if successful + */ + public boolean matches(String path, String matchMethod) { + if (!this.method.equalsIgnoreCase("ALL") && !this.method.equals("*") && !this.method.equals(matchMethod)) { + return false; + } + List inNodes = new ArrayList<>(); + List matchNodes = new ArrayList<>(); + String[] pathList = path.split("\\/"); + for (String n : pathList) { + inNodes.add(n); + } + for (String n : pathParts) { + matchNodes.add(n); + } + + while (!inNodes.isEmpty() && !matchNodes.isEmpty()) { + String inNode = inNodes.remove(0); + String matchNode = matchNodes.get(0); + if (matchNode.equals(inNode) || matchNode.equals("*")) { + matchNodes.remove(0); + } else { + if (!matchNode.equals("**")) { + return false; + } + } + } + + // + if (inNodes.isEmpty() && matchNodes.isEmpty()) { + return true; + } + + // We have incoming nodes remaining, see if we can wildcard them + if (matchNodes.size() == 1) { + if (matchNodes.get(0).equals("**")) { + return true; + } + if (inNodes.size() == 1 && matchNodes.get(0).equals("*")) { + return true; + } + } + return false; + } } diff --git a/cmso-service/src/main/java/org/onap/optf/cmso/aaf/AafUserRoleProperties.java b/cmso-service/src/main/java/org/onap/optf/cmso/aaf/AafUserRoleProperties.java index 7a7598d..d9a419d 100644 --- a/cmso-service/src/main/java/org/onap/optf/cmso/aaf/AafUserRoleProperties.java +++ b/cmso-service/src/main/java/org/onap/optf/cmso/aaf/AafUserRoleProperties.java @@ -1,33 +1,43 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.optf.cmso - * ================================================================================ - * Copyright © 2019 AT&T Intellectual Property. All rights reserved. - * ================================================================================ +/******************************************************************************* + * Copyright © 2019 AT&T Intellectual Property. + * * 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 + * 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. - * ============LICENSE_END========================================================= - */ + * + * + * Unless otherwise specified, all documentation contained herein is licensed + * under the Creative Commons License, Attribution 4.0 Intl. (the "License"); + * you may not use this documentation except in compliance with the License. + * You may obtain a copy of the License at + * + * https://creativecommons.org/licenses/by/4.0/ + * + * Unless required by applicable law or agreed to in writing, documentation + * 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.onap.optf.cmso.aaf; +import com.fasterxml.jackson.databind.ObjectMapper; import java.io.File; import java.io.FileInputStream; import java.util.ArrayList; import java.util.List; import java.util.Properties; - import javax.annotation.PostConstruct; import javax.servlet.http.HttpServletRequest; - import org.onap.aaf.cadi.Permission; import org.onap.aaf.cadi.aaf.AAFPermission; import org.onap.observations.Observation; @@ -38,91 +48,92 @@ import org.springframework.context.annotation.Profile; import org.springframework.core.env.Environment; import org.springframework.stereotype.Component; -import com.fasterxml.jackson.databind.ObjectMapper; /** - * - * This class uses a properties file to map URL patterns/method to AAF Permissions (AafPerm) + * This class uses a properties file to map URL patterns/method to AAF Permissions (AafPerm). + * * @author jf9860 * */ @Component @Profile(SpringProfiles.AAF_AUTHENTICATION) -public class AafUserRoleProperties -{ - @Autowired - Environment env; - - private List list = new ArrayList<>(); - - @PostConstruct - public void initializePermissions() - { - String userRolePropertiesName = env.getProperty("aaf.user.roles", "src/main/resources/aaf/AAFUserRoles.properties"); - Properties props = new Properties(); - try - { - props.load(new FileInputStream(new File(userRolePropertiesName))); - } - catch (Exception e) - { - Observation.report(LogMessages.UNEXPECTED_EXCEPTION, e, e.getMessage()); - } - for (Object url : props.keySet()) - { - Object value = props.get(url); - list.add(new AafUserRole((String)url, (String)value)); - } - } +public class AafUserRoleProperties { + @Autowired + Environment env; + + private List list = new ArrayList<>(); + + /** + * Initialize permissions. + */ + @PostConstruct + public void initializePermissions() { + String userRolePropertiesName = + env.getProperty("aaf.user.roles", "src/main/resources/aaf/AAFUserRoles.properties"); + Properties props = new Properties(); + try { + props.load(new FileInputStream(new File(userRolePropertiesName))); + } catch (Exception e) { + Observation.report(LogMessages.UNEXPECTED_EXCEPTION, e, e.getMessage()); + } + for (Object url : props.keySet()) { + Object value = props.get(url); + list.add(new AafUserRole((String) url, (String) value)); + } + } + + /** + * Gets the for url method. + * + * @param url the url + * @param method the method + * @return the for url method + */ + public List getForUrlMethod(String url, String method) { + List userRoleList = new ArrayList<>(); + for (AafUserRole aur : list) { + if (aur.matches(url, method)) { + userRoleList.add(aur); + } + } + return userRoleList; + } - public List getForUrlMethod(String url, String method) - { - List userRoleList = new ArrayList<>(); - for (AafUserRole aur : list) - { - if (aur.matches(url, method)) - { - userRoleList.add(aur); - } - } - return userRoleList; - } + /** + * Process permissions. + * + * @param request the request + * @param userPerms the user perms + * @return true, if successful + */ + public boolean processPermissions(HttpServletRequest request, List userPerms) { + try { + // Get list of perms that match incoming URL. May be more than 1... + // Users perms must match all that match URL + List perms = getForUrlMethod(request.getRequestURI(), request.getMethod()); + int tested = 0; + int passed = 0; + for (AafUserRole perm : perms) { + for (AafPerm test : perm.getAafPerms()) { + tested++; + for (Permission userPerm : userPerms) { - public boolean processPermissions(HttpServletRequest request, List userPerms) - { - try - { - // Get list of perms that match incoming URL. May be more than 1... - // Users perms must match all that match URL - List perms = getForUrlMethod(request.getRequestURI(), request.getMethod()); - ObjectMapper om = new ObjectMapper(); - int tested = 0; - int passed = 0; - for (AafUserRole perm : perms) - { - for (AafPerm test : perm.getAafPerms()) - { - tested++; - for (Permission userPerm: userPerms) - { - - if (test.matches((AAFPermission)userPerm)) - { - passed++; - break; - } - } - } - } - // All permissions must be OK - if (tested > 0 && tested == passed) - return true; - else - return false; - } - catch (Exception e) - { - Observation.report(LogMessages.UNEXPECTED_EXCEPTION, e, e.getMessage()); - } - return false; - } + if (test.matches((AAFPermission) userPerm)) { + passed++; + break; + } + } + } + } + // All permissions must be OK + if (tested > 0 && tested == passed) { + return true; + } + else { + return false; + } + } catch (Exception e) { + Observation.report(LogMessages.UNEXPECTED_EXCEPTION, e, e.getMessage()); + } + return false; + } } diff --git a/cmso-service/src/main/java/org/onap/optf/cmso/aaf/FilterPriority.java b/cmso-service/src/main/java/org/onap/optf/cmso/aaf/FilterPriority.java index 39981c7..e973a4f 100644 --- a/cmso-service/src/main/java/org/onap/optf/cmso/aaf/FilterPriority.java +++ b/cmso-service/src/main/java/org/onap/optf/cmso/aaf/FilterPriority.java @@ -1,35 +1,46 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.optf.cmso - * ================================================================================ - * Copyright © 2019 AT&T Intellectual Property. All rights reserved. - * ================================================================================ +/******************************************************************************* + * Copyright © 2019 AT&T Intellectual Property. + * * 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 + * 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. - * ============LICENSE_END========================================================= - */ + * + * + * Unless otherwise specified, all documentation contained herein is licensed + * under the Creative Commons License, Attribution 4.0 Intl. (the "License"); + * you may not use this documentation except in compliance with the License. + * You may obtain a copy of the License at + * + * https://creativecommons.org/licenses/by/4.0/ + * + * Unless required by applicable law or agreed to in writing, documentation + * 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.onap.optf.cmso.aaf; import org.springframework.core.Ordered; public enum FilterPriority { - AAF_AUTHENTICATION(Ordered.HIGHEST_PRECEDENCE), - AAF_AUTHORIZATION(Ordered.HIGHEST_PRECEDENCE + 1); //higher number = lower priority - + AAF_AUTHENTICATION(Ordered.HIGHEST_PRECEDENCE), AAF_AUTHORIZATION(Ordered.HIGHEST_PRECEDENCE + 1); private final int priority; - FilterPriority(final int p) { - priority = p; + FilterPriority(final int ppri) { + priority = ppri; } - public int getPriority() { return priority; } + public int getPriority() { + return priority; + } } diff --git a/cmso-service/src/main/java/org/onap/optf/cmso/aaf/ResponseFormatter.java b/cmso-service/src/main/java/org/onap/optf/cmso/aaf/ResponseFormatter.java index 769262b..e7ddcdf 100644 --- a/cmso-service/src/main/java/org/onap/optf/cmso/aaf/ResponseFormatter.java +++ b/cmso-service/src/main/java/org/onap/optf/cmso/aaf/ResponseFormatter.java @@ -1,38 +1,45 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.optf.cmso - * ================================================================================ - * Copyright © 2019 AT&T Intellectual Property. All rights reserved. - * ================================================================================ +/******************************************************************************* + * Copyright © 2019 AT&T Intellectual Property. + * * 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 + * 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. - * ============LICENSE_END========================================================= - */ + * + * + * Unless otherwise specified, all documentation contained herein is licensed + * under the Creative Commons License, Attribution 4.0 Intl. (the "License"); + * you may not use this documentation except in compliance with the License. + * You may obtain a copy of the License at + * + * https://creativecommons.org/licenses/by/4.0/ + * + * Unless required by applicable law or agreed to in writing, documentation + * 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.onap.optf.cmso.aaf; import java.io.IOException; - import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import javax.ws.rs.core.MediaType; - import org.onap.optf.cmso.common.exceptions.CMSException; class ResponseFormatter { - private static final String ACCEPT_HEADER = "accept"; - static void errorResponse(HttpServletRequest request, HttpServletResponse response, CMSException error) throws IOException { - String accept = request.getHeader(ACCEPT_HEADER) == null ? MediaType.APPLICATION_JSON : request.getHeader(ACCEPT_HEADER); + static void errorResponse(HttpServletRequest request, HttpServletResponse response, CMSException error) + throws IOException { response.setStatus(error.getStatus().getStatusCode()); response.getWriter().write(error.getRequestError().toString()); response.getWriter().flush(); diff --git a/cmso-service/src/main/java/org/onap/optf/cmso/common/ApprovalStatusEnum.java b/cmso-service/src/main/java/org/onap/optf/cmso/common/ApprovalStatusEnum.java index 0069f26..db48437 100644 --- a/cmso-service/src/main/java/org/onap/optf/cmso/common/ApprovalStatusEnum.java +++ b/cmso-service/src/main/java/org/onap/optf/cmso/common/ApprovalStatusEnum.java @@ -1,36 +1,34 @@ /* - * Copyright © 2017-2018 AT&T Intellectual Property. - * Modifications Copyright © 2018 IBM. - * - * 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 + * Copyright � 2017-2018 AT&T Intellectual Property. Modifications Copyright � 2018 IBM. + * + * 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. + * + * + * Unless otherwise specified, all documentation contained herein is licensed under the Creative + * Commons License, Attribution 4.0 Intl. (the "License"); you may not use this documentation except + * in compliance with the License. You may obtain a copy of the License at + * + * https://creativecommons.org/licenses/by/4.0/ + * + * Unless required by applicable law or agreed to in writing, documentation 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. - * - * - * Unless otherwise specified, all documentation contained herein is licensed - * under the Creative Commons License, Attribution 4.0 Intl. (the "License"); - * you may not use this documentation except in compliance with the License. - * You may obtain a copy of the License at - * - * https://creativecommons.org/licenses/by/4.0/ - * - * Unless required by applicable law or agreed to in writing, documentation - * 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.onap.optf.cmso.common; +/** + * The Enum ApprovalStatusEnum. + */ public enum ApprovalStatusEnum { Accepted("Accepted"), Rejected("Rejected"),; @@ -40,6 +38,12 @@ public enum ApprovalStatusEnum { this.text = text; } + /** + * To string. + * + * @return the string + */ + @Override public String toString() { return text; } diff --git a/cmso-service/src/main/java/org/onap/optf/cmso/common/ApprovalTypesEnum.java b/cmso-service/src/main/java/org/onap/optf/cmso/common/ApprovalTypesEnum.java index 927dbf1..97e33d5 100644 --- a/cmso-service/src/main/java/org/onap/optf/cmso/common/ApprovalTypesEnum.java +++ b/cmso-service/src/main/java/org/onap/optf/cmso/common/ApprovalTypesEnum.java @@ -1,33 +1,28 @@ /* - * Copyright © 2017-2018 AT&T Intellectual Property. - * Modifications Copyright © 2018 IBM. - * - * 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 + * Copyright � 2017-2018 AT&T Intellectual Property. Modifications Copyright � 2018 IBM. + * + * 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. + * + * + * Unless otherwise specified, all documentation contained herein is licensed under the Creative + * Commons License, Attribution 4.0 Intl. (the "License"); you may not use this documentation except + * in compliance with the License. You may obtain a copy of the License at + * + * https://creativecommons.org/licenses/by/4.0/ + * + * Unless required by applicable law or agreed to in writing, documentation 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. - * - * - * Unless otherwise specified, all documentation contained herein is licensed - * under the Creative Commons License, Attribution 4.0 Intl. (the "License"); - * you may not use this documentation except in compliance with the License. - * You may obtain a copy of the License at - * - * https://creativecommons.org/licenses/by/4.0/ - * - * Unless required by applicable law or agreed to in writing, documentation - * 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.onap.optf.cmso.common; @@ -40,6 +35,7 @@ public enum ApprovalTypesEnum { this.text = text; } + @Override public String toString() { return text; } diff --git a/cmso-service/src/main/java/org/onap/optf/cmso/common/CMSStatusEnum.java b/cmso-service/src/main/java/org/onap/optf/cmso/common/CMSStatusEnum.java index de1e701..5b0a539 100644 --- a/cmso-service/src/main/java/org/onap/optf/cmso/common/CMSStatusEnum.java +++ b/cmso-service/src/main/java/org/onap/optf/cmso/common/CMSStatusEnum.java @@ -1,102 +1,95 @@ /* - * Copyright © 2017-2018 AT&T Intellectual Property. - * Modifications Copyright © 2018 IBM. - * + * Copyright © 2017-2018 AT&T Intellectual Property. + * Modifications Copyright © 2018 IBM. + * * 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. - * - * + * + * * Unless otherwise specified, all documentation contained herein is licensed * under the Creative Commons License, Attribution 4.0 Intl. (the "License"); * you may not use this documentation except in compliance with the License. * You may obtain a copy of the License at - * + * * https://creativecommons.org/licenses/by/4.0/ - * + * * Unless required by applicable law or agreed to in writing, documentation * 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.onap.optf.cmso.common; public enum CMSStatusEnum { - PendingSchedule("Pending Schedule", - "Schedule request as been accepted. Pending determination of recommended schedule."), SchedulingFailed( - "Scheduling Failed", "Failed to determine recommended schedule."), ScheduleFailed("Schedule Failed", - "Determination of recommended schedule failed."), OptimizationInProgress( - "Optimization In Progress", - "Determination of recommended schedule is in progress."), PendingApproval( - "Pending Approval", - "Pending approval of the recommended schedule."), OptimizationFailed( - "Optimization Failed", - "Unable to determine recommended schedule."), Accepted("Accepted", - "Recommended schedule has been accepted."), Scheduled( - "Scheduled", - "All approvals received. Recommended schedule is pending execution."), ScheduledImmediate( - "Scheduled Immediate", - "All approvals received. Event is scheduled for immediate execution."), Triggered( - "Triggered", - "Scheduled event has been triggered."), ApprovalRejected( - "Approval Rejected", - "Recommended schedule has been rejected."), PastDue( - "Past due", - "Scheduled event time has passed. Queued event was not dispatched."), Error( - "Error", - "Attempt to displatch event failed."), Failed( - "Failed", - "Triggered event reported a failure."), Rejected( - "Rejected", - "Recommended schedule has been rejected."), NotificationsInitiated( - "Notifications Initiated", - "Notifications of scheduled events has been initiated."), Completed( - "Completed", - "Notification of all scheduled events have been sent."), CompletedWithError( - "Completed with error(s)", - "All scheduled events have completed, some with errors."), Deleted( - "Deleted", - "Schedule deleted prior to acceptance or after execution."), Cancelled( - "Cancelled", - "Scheduled event cancelled before execution."),; + PendingSchedule( + "Pending Schedule", + "Schedule request as been accepted. Pending determination of recommended schedule."), + SchedulingFailed("Scheduling Failed", "Failed to determine recommended schedule."), + ScheduleFailed("Schedule Failed", "Determination of recommended schedule failed."), + OptimizationInProgress( + "Optimization In Progress", "Determination of recommended schedule is in progress."), + PendingApproval("Pending Approval", "Pending approval of the recommended schedule."), + OptimizationFailed("Optimization Failed", "Unable to determine recommended schedule."), + Accepted("Accepted", "Recommended schedule has been accepted."), + Scheduled("Scheduled", "All approvals received. Recommended schedule is pending execution."), + ScheduledImmediate( + "Scheduled Immediate", "All approvals received. Event is scheduled for immediate execution."), + Triggered("Triggered", "Scheduled event has been triggered."), + ApprovalRejected("Approval Rejected", "Recommended schedule has been rejected."), + PastDue("Past due", "Scheduled event time has passed. Queued event was not dispatched."), + Error("Error", "Attempt to displatch event failed."), + Failed("Failed", "Triggered event reported a failure."), + Rejected("Rejected", "Recommended schedule has been rejected."), + NotificationsInitiated( + "Notifications Initiated", "Notifications of scheduled events has been initiated."), + Completed("Completed", "Notification of all scheduled events have been sent."), + CompletedWithError( + "Completed with error(s)", "All scheduled events have completed, some with errors."), + Deleted("Deleted", "Schedule deleted prior to acceptance or after execution."), + Cancelled("Cancelled", "Scheduled event cancelled before execution."), + NotScheduled("Not scheduled by optimizer", "Element not included in the schedule by optimizer."), + ; - private final String text; - private final String description; + private final String text; + private final String description; - private CMSStatusEnum(String text, String description) { - this.text = text; - this.description = description; - } + private CMSStatusEnum(String text, String description) { + this.text = text; + this.description = description; + } - public String toString() { - return text; - } + @Override + public String toString() { + return text; + } - public CMSStatusEnum fromString(String text) { - for (CMSStatusEnum e : CMSStatusEnum.values()) - if (e.text.equals(text)) - return e; - return null; - } - - // To include in the AID. - public static void main(String argv[]) { - StringBuilder sb = new StringBuilder(); - sb.append("\n"); - for (CMSStatusEnum v : CMSStatusEnum.values()) - sb.append("\n"); - sb.append("
").append(v.text).append("").append(v.description).append("
\n"); - System.out.println(sb.toString()); - } + public CMSStatusEnum fromString(String text) { + for (CMSStatusEnum e : CMSStatusEnum.values()) if (e.text.equals(text)) return e; + return null; + } + // To include in the AID. + public static void main(String argv[]) { + StringBuilder sb = new StringBuilder(); + sb.append("\n"); + for (CMSStatusEnum v : CMSStatusEnum.values()) + sb.append("\n"); + sb.append("
") + .append(v.text) + .append("") + .append(v.description) + .append("
\n"); + System.out.println(sb.toString()); + } } -- cgit 1.2.3-korg