.idea
.project
+ecomp-sdk/*/.settings
/bin/
ecomp-sdk/*/logs/
ecomp-sdk/*/debug-logs/
--- /dev/null
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.onap.portal.sdk</groupId>
+ <artifactId>epsdk-project</artifactId>
+ <version>2.4.0-SNAPSHOT</version>
+ </parent>
+
+ <groupId>org.onap.portal.sdk</groupId>
+ <artifactId>epsdk-aaf</artifactId>
+ <version>2.4.0-SNAPSHOT</version>
+ <packaging>jar</packaging>
+
+ <name>ONAP Portal SDK AAF Authorization</name>
+
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <springframework.version>4.2.0.RELEASE</springframework.version>
+ </properties>
+ <dependencies>
+ <!-- internal -->
+ <dependency>
+ <groupId>org.onap.portal.sdk</groupId>
+ <artifactId>epsdk-fw</artifactId>
+ <version>${project.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <!-- internal -->
+ <dependency>
+ <groupId>org.onap.portal.sdk</groupId>
+ <artifactId>epsdk-core</artifactId>
+ <version>${project.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.att.eelf</groupId>
+ <artifactId>eelf-core</artifactId>
+ <version>1.0.0</version>
+ </dependency>
+ <!-- Spring -->
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-core</artifactId>
+ <version>${springframework.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-web</artifactId>
+ <version>${springframework.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-webmvc</artifactId>
+ <version>${springframework.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context-support</artifactId>
+ <version>${springframework.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-test</artifactId>
+ <version>${springframework.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-aop</artifactId>
+ <version>${springframework.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter</artifactId>
+ <version>1.3.0.RELEASE</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>log4j-over-slf4j</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>ch.qos.logback</groupId>
+ <artifactId>logback-classic</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <!-- Mapper -->
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-annotations</artifactId>
+ <version>2.6.3</version>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-core</artifactId>
+ <version>2.6.3</version>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-databind</artifactId>
+ <version>2.6.3</version>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>3.8.1</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+ <profiles>
+ <!-- disable doclint, a new feature in Java 8, when generating javadoc -->
+ <profile>
+ <id>doclint-java8-disable</id>
+ <activation>
+ <jdk>[1.8,)</jdk>
+ </activation>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <version>2.10.4</version>
+ <configuration>
+ <additionalparam>-Xdoclint:none</additionalparam>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+ <build>
+ <!-- The war file name carries no version number -->
+ <finalName>epsdk-aaf</finalName>
+
+ <plugins>
+ <!-- Compile to Java 1.8 class output format -->
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>3.1</version>
+ <configuration>
+ <source>1.8</source>
+ <target>1.8</target>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
--- /dev/null
+/*-
+ * ============LICENSE_START==========================================
+ * ONAP Portal SDK
+ * ===================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software 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.
+ *
+ * ============LICENSE_END============================================
+ *
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+package org.onap.portalsdk.external.authorization.domain;
+
+import java.io.Serializable;
+
+public class ExternalAccessPerms implements Serializable, Comparable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -200964838466882602L;
+ private String type;
+ private String instance;
+ private String action;
+ private String description;
+
+ public ExternalAccessPerms() {
+ super();
+ }
+
+ public ExternalAccessPerms(String type, String instance, String action, String description) {
+ super();
+ this.type = type;
+ this.instance = instance;
+ this.action = action;
+ this.description = description;
+ }
+
+ public ExternalAccessPerms(String type, String instance, String action) {
+ super();
+ this.type = type;
+ this.instance = instance;
+ this.action = action;
+ }
+
+ /**
+ * @return the type
+ */
+ public String getType() {
+ return type;
+ }
+
+ /**
+ * @param type
+ * the type to set
+ */
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ /**
+ * @return the instance
+ */
+ public String getInstance() {
+ return instance;
+ }
+
+ /**
+ * @param instance
+ * the instance to set
+ */
+ public void setInstance(String instance) {
+ this.instance = instance;
+ }
+
+ /**
+ * @return the action
+ */
+ public String getAction() {
+ return action;
+ }
+
+ /**
+ * @param action
+ * the action to set
+ */
+ public void setAction(String action) {
+ this.action = action;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public int compareTo(Object obj) {
+ ExternalAccessPerms other = (ExternalAccessPerms) obj;
+
+ String c1 = getInstance();
+ String c2 = other.getInstance();
+
+ return (c1 == null || c2 == null) ? 1 : c1.compareTo(c2);
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((action == null) ? 0 : action.hashCode());
+ result = prime * result + ((description == null) ? 0 : description.hashCode());
+ result = prime * result + ((instance == null) ? 0 : instance.hashCode());
+ result = prime * result + ((type == null) ? 0 : type.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ ExternalAccessPerms other = (ExternalAccessPerms) obj;
+ if (action == null) {
+ if (other.action != null)
+ return false;
+ } else if (!action.equals(other.action))
+ return false;
+ if (description == null) {
+ if (other.description != null)
+ return false;
+ } else if (!description.equals(other.description))
+ return false;
+ if (instance == null) {
+ if (other.instance != null)
+ return false;
+ } else if (!instance.equals(other.instance))
+ return false;
+ if (type == null) {
+ if (other.type != null)
+ return false;
+ } else if (!type.equals(other.type))
+ return false;
+ return true;
+ }
+
+}
--- /dev/null
+/*-
+ * ============LICENSE_START==========================================
+ * ONAP Portal SDK
+ * ===================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software 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.
+ *
+ * ============LICENSE_END============================================
+ *
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+package org.onap.portalsdk.external.authorization.domain;
+
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonRootName;
+
+@JsonIgnoreProperties(ignoreUnknown = true)
+@JsonRootName(value="perm")
+public class ExternalAccessPermsDetail {
+
+ private String type;
+ private String instance;
+ private String action;
+ private List<String> roles;
+ private String description;
+
+
+
+ public ExternalAccessPermsDetail() {
+ super();
+ }
+
+ /**
+ * @param type
+ * @param instance
+ * @param action
+ * @param roles
+ * @param description
+ */
+ public ExternalAccessPermsDetail(String type, String instance, String action, List<String> roles,
+ String description) {
+ super();
+ this.type = type;
+ this.instance = instance;
+ this.action = action;
+ this.roles = roles;
+ this.description = description;
+ }
+
+ /**
+ * @param type
+ * @param instance
+ * @param action
+ * @param description
+ */
+ public ExternalAccessPermsDetail(String type, String instance, String action,
+ String description) {
+ super();
+ this.type = type;
+ this.instance = instance;
+ this.action = action;
+ this.description = description;
+ }
+
+ 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 String getAction() {
+ return action;
+ }
+ public void setAction(String action) {
+ this.action = action;
+ }
+ public List<String> getRoles() {
+ return roles;
+ }
+
+ public void setRoles(List<String> roles) {
+ this.roles = roles;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+
+}
--- /dev/null
+/*-
+ * ============LICENSE_START==========================================
+ * ONAP Portal SDK
+ * ===================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software 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.
+ *
+ * ============LICENSE_END============================================
+ *
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+package org.onap.portalsdk.external.authorization.domain;
+
+import java.io.Serializable;
+
+public class ExternalAccessRole implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 3439986826362436339L;
+ public String name;
+ public String description;
+
+ public ExternalAccessRole() {
+
+ }
+
+ public ExternalAccessRole(String name, String description) {
+ super();
+ this.name = name;
+ this.description = description;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+}
--- /dev/null
+/*-
+ * ============LICENSE_START==========================================
+ * ONAP Portal SDK
+ * ===================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software 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.
+ *
+ * ============LICENSE_END============================================
+ *
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+package org.onap.portalsdk.external.authorization.domain;
+
+public class ExternalAccessRolePerms {
+
+ private ExternalAccessPerms perm;
+ private String role;
+
+
+ public ExternalAccessRolePerms(ExternalAccessPerms perm, String role) {
+ super();
+ this.perm = perm;
+ this.role = role;
+ }
+
+ public ExternalAccessPerms getPerm() {
+ return perm;
+ }
+ public void setPerm(ExternalAccessPerms perm) {
+ this.perm = perm;
+ }
+ public String getRole() {
+ return role;
+ }
+ public void setRole(String role) {
+ this.role = role;
+ }
+
+
+}
--- /dev/null
+/*-
+ * ============LICENSE_START==========================================
+ * ONAP Portal SDK
+ * ===================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software 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.
+ *
+ * ============LICENSE_END============================================
+ *
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+package org.onap.portalsdk.external.authorization.domain;
+
+public class ExternalAccessUser {
+
+ private String user;
+ private String role;
+
+ public ExternalAccessUser(String user, String role) {
+ super();
+ this.user = user;
+ this.role = role;
+ }
+
+ public String getUser() {
+ return user;
+ }
+ public void setUser(String user) {
+ this.user = user;
+ }
+ public String getRole() {
+ return role;
+ }
+ public void setRole(String role) {
+ this.role = role;
+ }
+
+
+}
--- /dev/null
+/*-
+ * ============LICENSE_START==========================================
+ * ONAP Portal SDK
+ * ===================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software 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.
+ *
+ * ============LICENSE_END============================================
+ *
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+package org.onap.portalsdk.external.authorization.domain;
+
+public class ExternalAccessUserRoleDetail {
+
+ private String name;
+ private ExternalRoleDescription description;
+
+
+ /**
+ *
+ */
+ public ExternalAccessUserRoleDetail() {
+ super();
+ }
+
+ public ExternalAccessUserRoleDetail(String name, ExternalRoleDescription description) {
+ super();
+ this.name = name;
+ this.description = description;
+ }
+
+ public String getName() {
+ return name;
+ }
+ public void setName(String name) {
+ this.name = name;
+ }
+ public ExternalRoleDescription getDescription() {
+ return description;
+ }
+ public void setDescription(ExternalRoleDescription description) {
+ this.description = description;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((description == null) ? 0 : description.hashCode());
+ result = prime * result + ((name == null) ? 0 : name.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ ExternalAccessUserRoleDetail other = (ExternalAccessUserRoleDetail) obj;
+ if (description == null) {
+ if (other.description != null)
+ return false;
+ } else if (!description.equals(other.description))
+ return false;
+ if (name == null) {
+ if (other.name != null)
+ return false;
+ } else if (!name.equals(other.name))
+ return false;
+ return true;
+ }
+
+
+}
--- /dev/null
+/*-
+ * ============LICENSE_START==========================================
+ * ONAP Portal SDK
+ * ===================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software 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.
+ *
+ * ============LICENSE_END============================================
+ *
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+package org.onap.portalsdk.external.authorization.domain;
+
+import java.io.Serializable;
+
+public class ExternalAuthUserRole implements Serializable{
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 5066251837431287376L;
+
+ private String role;
+ private String user;
+ private String expiryDate;
+
+ public String getRole() {
+ return role;
+ }
+ public void setRole(String role) {
+ this.role = role;
+ }
+ public String getUser() {
+ return user;
+ }
+ public void setUser(String user) {
+ this.user = user;
+ }
+ public String getExpiryDate() {
+ return expiryDate;
+ }
+ public void setExpiryDate(String expiryDate) {
+ this.expiryDate = expiryDate;
+ }
+
+
+
+}
--- /dev/null
+/*-
+ * ============LICENSE_START==========================================
+ * ONAP Portal SDK
+ * ===================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software 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.
+ *
+ * ============LICENSE_END============================================
+ *
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+package org.onap.portalsdk.external.authorization.domain;
+
+import java.util.List;
+
+public class ExternalRoleDescription {
+
+ private String id;
+ private String name;
+ private String active;
+ private String priority;
+ private String appId;
+ private String appRoleId;
+ private List<ExternalAccessPerms> permissions;
+
+ public String getId() {
+ return id;
+ }
+ public void setId(String id) {
+ this.id = id;
+ }
+ public String getName() {
+ return name;
+ }
+ public void setName(String name) {
+ this.name = name;
+ }
+ public String getActive() {
+ return active;
+ }
+ public void setActive(String active) {
+ this.active = active;
+ }
+ public String getPriority() {
+ return priority;
+ }
+ public void setPriority(String priority) {
+ this.priority = priority;
+ }
+ public String getAppId() {
+ return appId;
+ }
+ public void setAppId(String appId) {
+ this.appId = appId;
+ }
+ public String getAppRoleId() {
+ return appRoleId;
+ }
+ public void setAppRoleId(String appRoleId) {
+ this.appRoleId = appRoleId;
+ }
+
+ public List<ExternalAccessPerms> getPermissions() {
+ return permissions;
+ }
+ public void setPermissions(List<ExternalAccessPerms> permissions) {
+ this.permissions = permissions;
+ }
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((active == null) ? 0 : active.hashCode());
+ result = prime * result + ((appId == null) ? 0 : appId.hashCode());
+ result = prime * result + ((appRoleId == null) ? 0 : appRoleId.hashCode());
+ result = prime * result + ((id == null) ? 0 : id.hashCode());
+ result = prime * result + ((name == null) ? 0 : name.hashCode());
+ result = prime * result + ((priority == null) ? 0 : priority.hashCode());
+ return result;
+ }
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ ExternalRoleDescription other = (ExternalRoleDescription) obj;
+ if (active == null) {
+ if (other.active != null)
+ return false;
+ } else if (!active.equals(other.active))
+ return false;
+ if (appId == null) {
+ if (other.appId != null)
+ return false;
+ } else if (!appId.equals(other.appId))
+ return false;
+ if (appRoleId == null) {
+ if (other.appRoleId != null)
+ return false;
+ } else if (!appRoleId.equals(other.appRoleId))
+ return false;
+ if (id == null) {
+ if (other.id != null)
+ return false;
+ } else if (!id.equals(other.id))
+ return false;
+ if (name == null) {
+ if (other.name != null)
+ return false;
+ } else if (!name.equals(other.name))
+ return false;
+ if (priority == null) {
+ if (other.priority != null)
+ return false;
+ } else if (!priority.equals(other.priority))
+ return false;
+ return true;
+ }
+
+
+}
--- /dev/null
+/*-
+ * ============LICENSE_START==========================================
+ * ONAP Portal SDK
+ * ===================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software 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.
+ *
+ * ============LICENSE_END============================================
+ *
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+package org.onap.portalsdk.external.authorization.exception;
+
+public class UserNotFoundException extends Exception {
+
+ private static final long serialVersionUID = 1616470595106815228L;
+
+ public UserNotFoundException(String msg) {
+ super(msg);
+ }
+}
--- /dev/null
+/*-
+ * ============LICENSE_START==========================================
+ * ONAP Portal SDK
+ * ===================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software 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.
+ *
+ * ============LICENSE_END============================================
+ *
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+package org.onap.portalsdk.external.authorization.service;
+
+import java.io.IOException;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.onap.portalsdk.core.command.LoginBean;
+import org.onap.portalsdk.core.domain.User;
+
+public interface LoginExternalAuthService {
+
+ /**
+ * validate user exists in the system
+ * @param bean
+ * @param menuPropertiesFilename
+ * @param additionalParams
+ * @return returns login user bean
+ * @throws IOException
+ */
+ @SuppressWarnings("rawtypes")
+ LoginBean findUser(LoginBean bean, String menuPropertiesFilename, Map additionalParams, HttpServletRequest request) throws Exception;
+
+ /**
+ *
+ * @param bean
+ * @param menuPropertiesFilename
+ * @param additionalParams
+ * @param matchPassword
+ * @return returns login user bean
+ * @throws IOException
+ */
+ @SuppressWarnings("rawtypes")
+ LoginBean findUser(LoginBean bean, String menuPropertiesFilename, Map additionalParams, boolean matchPassword, HttpServletRequest request)
+ throws Exception;
+
+ /**
+ *
+ * @param orgUserId
+ * @return
+ */
+ User findUserWithoutPwd(String orgUserId);
+}
--- /dev/null
+/*-
+ * ============LICENSE_START==========================================
+ * ONAP Portal SDK
+ * ===================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software 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.
+ *
+ * ============LICENSE_END============================================
+ *
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+package org.onap.portalsdk.external.authorization.service;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.onap.portalsdk.core.command.LoginBean;
+import org.onap.portalsdk.core.domain.Role;
+import org.onap.portalsdk.core.domain.User;
+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.onap.portalsdk.core.menu.MenuBuilder;
+import org.onap.portalsdk.core.service.DataAccessService;
+import org.onap.portalsdk.core.service.LoginServiceCentralizedImpl;
+import org.onap.portalsdk.core.util.SystemProperties;
+import org.onap.portalsdk.core.web.support.AppUtils;
+import org.onap.portalsdk.core.web.support.UserUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service("loginExternalAuthService")
+public class LoginExternalAuthServiceImpl implements LoginExternalAuthService {
+
+ private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(LoginServiceCentralizedImpl.class);
+
+ @Autowired
+ private DataAccessService dataAccessService;
+
+ @Autowired
+ private UserApiService userApiService;
+
+ @Override
+ public LoginBean findUser(LoginBean bean, String menuPropertiesFilename,
+ @SuppressWarnings("rawtypes") Map additionalParams, HttpServletRequest request) throws Exception {
+ return findUser(bean, menuPropertiesFilename, additionalParams, true, request);
+ }
+
+ @Override
+ @SuppressWarnings("rawtypes")
+ public LoginBean findUser(LoginBean bean, String menuPropertiesFilename, Map additionalParams,
+ boolean matchPassword, HttpServletRequest request) throws Exception {
+
+ User user;
+ if (bean.getUserid() != null) {
+ user = findUser(bean, request);
+ } else {
+ if (matchPassword)
+ user = findUser(bean.getLoginId(), bean.getLoginPwd());
+ else
+ user = findUserWithoutPwd(bean.getLoginId());
+ }
+
+ if (user != null) {
+ if (AppUtils.isApplicationLocked()
+ && !UserUtils.hasRole(user, SystemProperties.getProperty(SystemProperties.SYS_ADMIN_ROLE_ID))) {
+ bean.setLoginErrorMessage(SystemProperties.MESSAGE_KEY_LOGIN_ERROR_APPLICATION_LOCKED);
+ }
+
+ // raise an error if the user is inactive
+ if (!user.getActive()) {
+ bean.setLoginErrorMessage(SystemProperties.MESSAGE_KEY_LOGIN_ERROR_USER_INACTIVE);
+ }
+
+ if (!userHasActiveRoles(user)) {
+ bean.setLoginErrorMessage(SystemProperties.MESSAGE_KEY_LOGIN_ERROR_USER_INACTIVE);
+ }
+ // only login the user if no errors have occurred
+ if (bean.getLoginErrorMessage() == null) {
+
+ // this will be a snapshot of the user's information as
+ // retrieved from the database
+ User userCopy = null;
+ try {
+ userCopy = (User) user.clone();
+ } catch (CloneNotSupportedException ex) {
+ // Never happens
+ logger.error(EELFLoggerDelegate.errorLogger, "findUser failed", ex);
+ }
+
+ User appuser = findUserWithoutPwd(user.getLoginId());
+
+ if (appuser == null && userHasRoleFunctions(user)) {
+ createUserIfNecessary(user);
+ } else {
+ appuser.setLastLoginDate(new Date());
+
+ // update the last logged in date for the user
+ dataAccessService.saveDomainObject(appuser, additionalParams);
+ }
+ // update the audit log of the user
+ // Check for the client device type and set log attributes
+ // appropriately
+
+ // save the above changes to the User and their audit trail
+
+ // create the application menu based on the user's privileges
+
+ Set appMenu = getMenuBuilder().getMenu(
+ SystemProperties.getProperty(SystemProperties.APPLICATION_MENU_SET_NAME), dataAccessService);
+ bean.setMenu(appMenu != null ? appMenu : new HashSet());
+ Set businessDirectMenu = getMenuBuilder().getMenu(
+ SystemProperties.getProperty(SystemProperties.BUSINESS_DIRECT_MENU_SET_NAME),
+ dataAccessService);
+ bean.setBusinessDirectMenu(businessDirectMenu != null ? businessDirectMenu : new HashSet());
+
+ bean.setUser(userCopy);
+ }
+ }
+
+ return bean;
+ }
+
+ private void createUserIfNecessary(User user) {
+ logger.debug(EELFLoggerDelegate.debugLogger, "createUser: " + user.getOrgUserId());
+ User user1 = new User();
+ user1.setEmail(user.getEmail());
+ user1.setEmail(user.getEmail());
+ user1.setFirstName(user.getFirstName());
+ user1.setHrid(user.getHrid());
+ user1.setJobTitle(user.getJobTitle());
+ user1.setLastName(user.getLastName());
+ user1.setLoginId(user.getLoginId());
+ user1.setOrgManagerUserId(user.getOrgManagerUserId());
+ user1.setMiddleInitial(user.getMiddleInitial());
+ user1.setOrgCode(user.getOrgCode());
+ user1.setOrgId(user.getOrgId());
+ user1.setPhone(user.getPhone());
+ user1.setOrgUserId(user.getOrgUserId());
+ user1.setActive(user.getActive());
+ user1.setLastLoginDate(new Date());
+
+ try {
+ dataAccessService.saveDomainObject(user1, null);
+ logger.debug(EELFLoggerDelegate.debugLogger, "createdUser Successfully: " + user.getOrgUserId());
+ } catch (Exception ex) {
+ logger.error(EELFLoggerDelegate.errorLogger, "createUserIfNecessary failed", ex);
+ }
+
+ }
+
+ private boolean userHasActiveRoles(User user) {
+ boolean hasActiveRole = false;
+ @SuppressWarnings("rawtypes")
+ Iterator roles = user.getRoles().iterator();
+ while (roles.hasNext()) {
+ Role role = (Role) roles.next();
+ if (role.getActive()) {
+ hasActiveRole = true;
+ break;
+ }
+ }
+ return hasActiveRole;
+ }
+
+ private boolean userHasRoleFunctions(User user) {
+ boolean hasRoleFunctions = false;
+ @SuppressWarnings("rawtypes")
+ Iterator roles = user.getRoles().iterator();
+ while (roles.hasNext()) {
+ Role role = (Role) roles.next();
+ if (role.getActive() && role.getRoleFunctions() != null && !role.getRoleFunctions().isEmpty()) {
+ hasRoleFunctions = true;
+ break;
+ }
+ }
+ return hasRoleFunctions;
+ }
+
+ private User findUser(LoginBean bean, HttpServletRequest request) throws Exception {
+ User user = userApiService.getUser(bean.getUserid(), request);
+ user.setId(getUserIdByOrgUserId(user.getOrgUserId()));
+ user.setLoginId(bean.getUserid());
+ logger.debug(EELFLoggerDelegate.debugLogger, "findUser: Returning final user roles and permissions", user.toString());
+ return user;
+ }
+
+ private Long getUserIdByOrgUserId(String orgUserId) {
+ Map<String, String> params = new HashMap<>();
+ params.put("orgUserId", orgUserId);
+ @SuppressWarnings("rawtypes")
+ List list = dataAccessService.executeNamedQuery("getUserIdByorgUserId", params, null);
+ Long userId = null;
+ if (list != null && !list.isEmpty())
+ userId = (Long) list.get(0);
+ return userId;
+ }
+
+ @SuppressWarnings("rawtypes")
+ private User findUser(String loginId, String password) {
+ Map<String, String> params = new HashMap<>();
+ params.put("login_id", loginId);
+ params.put("login_pwd", password);
+ List list = dataAccessService.executeNamedQuery("getUserByLoginIdLoginPwd", params, new HashMap());
+ return (list == null || list.isEmpty()) ? null : (User) list.get(0);
+ }
+
+ @SuppressWarnings("rawtypes")
+ @Override
+ public User findUserWithoutPwd(String loginId) {
+ Map<String, String> params = new HashMap<>();
+ params.put("org_user_id", loginId);
+ List list = dataAccessService.executeNamedQuery("getUserByOrgUserId", params, new HashMap());
+ return (list == null || list.isEmpty()) ? null : (User) list.get(0);
+ }
+
+ private MenuBuilder getMenuBuilder() {
+ return new MenuBuilder();
+ }
+
+}
--- /dev/null
+/*-
+ * ============LICENSE_START==========================================
+ * ONAP Portal SDK
+ * ===================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software 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.
+ *
+ * ============LICENSE_END============================================
+ *
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+package org.onap.portalsdk.external.authorization.service;
+
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.onap.portalsdk.core.domain.RoleFunction;
+import org.onap.portalsdk.core.domain.User;
+import org.onap.portalsdk.external.authorization.exception.UserNotFoundException;
+
+public interface UserApiService {
+
+ /**
+ * Gets list of all roles associated to user from external system
+ *
+ * @param orgUserId
+ * @return
+ * @throws Exception
+ */
+ User getUser(String orgUserId, HttpServletRequest request) throws UserNotFoundException;
+
+ /**
+ *
+ * @param OrgUserId
+ * @return
+ */
+ List<RoleFunction> getRoleFunctions(String orgUserId) throws Exception;
+
+}
--- /dev/null
+/*-
+ * ============LICENSE_START==========================================
+ * ONAP Portal SDK
+ * ===================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software 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.
+ *
+ * ============LICENSE_END============================================
+ *
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+package org.onap.portalsdk.external.authorization.service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+import java.util.TreeSet;
+
+import javax.naming.NamingException;
+import javax.servlet.http.HttpServletRequest;
+
+import org.json.JSONArray;
+import org.json.JSONObject;
+import org.onap.portalsdk.core.command.PostSearchBean;
+import org.onap.portalsdk.core.command.support.SearchResult;
+import org.onap.portalsdk.core.domain.App;
+import org.onap.portalsdk.core.domain.Role;
+import org.onap.portalsdk.core.domain.RoleFunction;
+import org.onap.portalsdk.core.domain.User;
+import org.onap.portalsdk.core.domain.UserApp;
+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.onap.portalsdk.core.service.AppService;
+import org.onap.portalsdk.core.service.DataAccessService;
+import org.onap.portalsdk.core.service.LdapService;
+import org.onap.portalsdk.core.service.PostSearchService;
+import org.onap.portalsdk.external.authorization.domain.ExternalAccessPerms;
+import org.onap.portalsdk.external.authorization.domain.ExternalAccessUserRoleDetail;
+import org.onap.portalsdk.external.authorization.domain.ExternalRoleDescription;
+import org.onap.portalsdk.external.authorization.exception.UserNotFoundException;
+import org.onap.portalsdk.external.authorization.util.EcompExternalAuthProperties;
+import org.onap.portalsdk.external.authorization.util.EcompExternalAuthUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.type.TypeFactory;
+
+@Service("userApiService")
+public class UserApiServiceImpl implements UserApiService {
+
+ private static final String AAF_GET_USER_ROLES_ENDPOINT = "roles/user/";
+
+ private static final String AAF_GET_USER_PERMS_ENDPOINT = "perms/user/";
+
+ private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(UserApiServiceImpl.class);
+
+ @Autowired
+ private LoginExternalAuthService loginAAFService;
+
+ @Autowired
+ private LdapService ldapService;
+
+ @Autowired
+ private PostSearchService postSearchService;
+
+ @Autowired
+ private DataAccessService dataAccessService;
+
+ RestTemplate template = new RestTemplate();
+
+ @Autowired
+ private AppService appService;
+
+ @Override
+ public User getUser(String orgUserId, HttpServletRequest request)
+ throws UserNotFoundException {
+ User user = null;
+ try {
+ String namespace = EcompExternalAuthProperties.getProperty(EcompExternalAuthProperties.EXTERNAL_AUTH_NAMESPACE);
+ HttpHeaders headers = EcompExternalAuthUtils.base64encodeKeyForAAFBasicAuth();
+ HttpEntity<String> entity = new HttpEntity<>(headers);
+ logger.debug(EELFLoggerDelegate.debugLogger, "getUserRoles: Connecting to external system for user {}",
+ orgUserId);
+ String endPoint = AAF_GET_USER_ROLES_ENDPOINT + orgUserId
+ + EcompExternalAuthProperties.getProperty(EcompExternalAuthProperties.EXTERNAL_AUTH_USER_DOMAIN);
+ ResponseEntity<String> getResponse = template.exchange(
+ EcompExternalAuthProperties.getProperty(EcompExternalAuthProperties.EXTERNAL_AUTH_URL) + endPoint, HttpMethod.GET, entity,
+ String.class);
+ if (getResponse.getStatusCode().value() == 200) {
+ logger.debug(EELFLoggerDelegate.debugLogger,
+ "getUserRoles: Finished GET unp ser roles from external system and body: {}",
+ getResponse.getBody());
+ }
+ String userRoles = getResponse.getBody();
+ JSONObject userJsonObj = null;
+ JSONArray userJsonArray = null;
+ ObjectMapper mapper = new ObjectMapper();
+ List<ExternalAccessUserRoleDetail> userRoleDetailList = new ArrayList<>();
+ if (!userRoles.equals(EcompExternalAuthUtils.EXT_EMPTY_JSON_STRING)) {
+ userJsonObj = new JSONObject(userRoles);
+ userJsonArray = userJsonObj.getJSONArray(EcompExternalAuthUtils.EXT_ROLE_FIELD);
+ ExternalAccessUserRoleDetail userRoleDetail = null;
+ for (int i = 0; i < userJsonArray.length(); i++) {
+ JSONObject role = userJsonArray.getJSONObject(i);
+ if (!role.getString(EcompExternalAuthUtils.EXT_ROLE_FIELD_NAME).endsWith(EcompExternalAuthUtils.EXT_ROLE_FIELD_ADMIN)
+ && !role.getString(EcompExternalAuthUtils.EXT_ROLE_FIELD_NAME)
+ .endsWith(EcompExternalAuthUtils.EXT_ROLE_FIELD_OWNER)
+ && EcompExternalAuthUtils.checkNameSpaceMatching(role.getString(EcompExternalAuthUtils.EXT_ROLE_FIELD_NAME),
+ namespace)) {
+ ExternalRoleDescription desc = new ExternalRoleDescription();
+ if(role.has(EcompExternalAuthUtils.EXT_FIELD_DESCRIPTION)
+ && EcompExternalAuthUtils
+ .isJSONValid(role.getString(EcompExternalAuthUtils.EXT_FIELD_DESCRIPTION))) {
+ desc = mapper.readValue(role.getString(EcompExternalAuthUtils.EXT_FIELD_DESCRIPTION),
+ ExternalRoleDescription.class);
+ }
+ if(role.has(EcompExternalAuthUtils.EXT_FIELD_PERMS)) {
+ JSONArray perms = role.getJSONArray(EcompExternalAuthUtils.EXT_FIELD_PERMS);
+ List<ExternalAccessPerms> permsList = mapper.readValue(perms.toString(), TypeFactory
+ .defaultInstance().constructCollectionType(List.class, ExternalAccessPerms.class));
+ desc.setPermissions(permsList);
+ }
+ userRoleDetail = new ExternalAccessUserRoleDetail(
+ role.getString(EcompExternalAuthUtils.EXT_ROLE_FIELD_NAME), desc);
+ userRoleDetailList.add(userRoleDetail);
+ }
+ }
+ } else {
+ throw new UserNotFoundException("User roles not found!");
+ }
+
+ if (userRoleDetailList.isEmpty()) {
+ throw new UserNotFoundException("User roles not found!");
+ } else {
+ user = convertAAFUserRolesToEcompSDKUser(userRoleDetailList, orgUserId, namespace, request);
+ }
+ } catch (Exception e) {
+ logger.error(EELFLoggerDelegate.errorLogger, "getUser: Failed! ", e);
+ }
+ return user;
+
+ }
+
+ @SuppressWarnings({ "rawtypes", "unchecked" })
+ private User convertAAFUserRolesToEcompSDKUser(List<ExternalAccessUserRoleDetail> userRoleDetailList,
+ String orgUserId, String namespace, HttpServletRequest request)
+ throws Exception {
+ User user = loginAAFService.findUserWithoutPwd(orgUserId);
+ PostSearchBean postSearchBean = new PostSearchBean();
+ if (user == null) {
+ postSearchBean.setOrgUserId(orgUserId);
+ postSearchService.process(request, postSearchBean);
+ postSearchBean.setSearchResult(loadSearchResultData(postSearchBean));
+ user = (User) postSearchBean.getSearchResult().get(0);
+ user.setActive(true);
+ user.setLoginId(orgUserId);
+ dataAccessService.saveDomainObject(user, null);
+ }
+ App app = appService.getApp(1l);
+ try {
+ Set userApps = new TreeSet();
+ for (ExternalAccessUserRoleDetail userRoleDetail : userRoleDetailList) {
+ ExternalRoleDescription roleDesc = userRoleDetail.getDescription();
+ UserApp userApp = new UserApp();
+ Role role = new Role();
+ Set roleFunctions = new TreeSet<>();
+ if (roleDesc != null) {
+ if (roleDesc.getName() == null) {
+ role.setActive(true);
+ role.setName(userRoleDetail.getName().substring(namespace.length() + 1));
+ } else {
+ role.setActive(Boolean.valueOf(roleDesc.getActive()));
+ role.setId(Long.valueOf(roleDesc.getAppRoleId()));
+ role.setName(roleDesc.getName());
+ if (!roleDesc.getPriority().equals(EcompExternalAuthUtils.EXT_NULL_VALUE)) {
+ role.setPriority(Integer.valueOf(roleDesc.getPriority()));
+ }
+ }
+ for (ExternalAccessPerms extPerm : roleDesc.getPermissions()) {
+ RoleFunction roleFunction = new RoleFunction();
+ roleFunction.setCode(extPerm.getInstance());
+ roleFunction.setAction(extPerm.getAction());
+ if (extPerm.getDescription() != null
+ && EcompExternalAuthUtils.checkNameSpaceMatching(extPerm.getType(), namespace)) {
+ roleFunction.setName(extPerm.getDescription());
+ } else if (extPerm.getDescription() == null
+ && EcompExternalAuthUtils.checkNameSpaceMatching(extPerm.getType(), namespace)) {
+ roleFunction.setName(extPerm.getType().substring(namespace.length() + 1) + "|"
+ + extPerm.getInstance() + "|" + extPerm.getAction());
+ } else if (extPerm.getDescription() == null
+ && !EcompExternalAuthUtils.checkNameSpaceMatching(extPerm.getType(), namespace)) {
+ roleFunction.setName(
+ extPerm.getType() + "|" + extPerm.getInstance() + "|" + extPerm.getAction());
+ }
+ if (EcompExternalAuthUtils.checkNameSpaceMatching(extPerm.getType(), namespace)) {
+ roleFunction.setType(extPerm.getType().substring(namespace.length() + 1));
+ } else {
+ roleFunction.setType(extPerm.getType());
+ }
+ roleFunctions.add(roleFunction);
+ }
+ }
+ role.setRoleFunctions(roleFunctions);
+ userApp.setApp(app);
+ userApp.setRole(role);
+ userApp.setUserId(user.getId());
+ userApps.add(userApp);
+ }
+ user.setUserApps(userApps);
+ } catch (Exception e) {
+ logger.error(EELFLoggerDelegate.errorLogger, "createEPUser: createEPUser failed", e);
+ throw e;
+ }
+
+ return user;
+ }
+
+ @Override
+ public List<RoleFunction> getRoleFunctions(String orgUserId) throws Exception {
+ ObjectMapper mapper = new ObjectMapper();
+ HttpHeaders headers = EcompExternalAuthUtils.base64encodeKeyForAAFBasicAuth();
+ HttpEntity<String> entity = new HttpEntity<>(headers);
+ logger.debug(EELFLoggerDelegate.debugLogger, "getRoleFunctions: Connecting to external system for user {}",
+ orgUserId);
+ String endPoint = AAF_GET_USER_PERMS_ENDPOINT + orgUserId
+ + EcompExternalAuthProperties.getProperty(EcompExternalAuthProperties.EXTERNAL_AUTH_USER_DOMAIN);
+ ResponseEntity<String> getResponse = template.exchange(
+ EcompExternalAuthProperties.getProperty(EcompExternalAuthProperties.EXTERNAL_AUTH_URL) + endPoint, HttpMethod.GET, entity,
+ String.class);
+ if (getResponse.getStatusCode().value() == 200) {
+ logger.debug(EELFLoggerDelegate.debugLogger,
+ "getRoleFunctions: Finished GET user perms from external system and body: {}",
+ getResponse.getBody());
+ }
+ String userPerms = getResponse.getBody();
+ JSONObject userPermsJsonObj = null;
+ JSONArray userPermsJsonArray = null;
+ List<ExternalAccessPerms> extPermsList = new ArrayList<>();
+ if (!userPerms.equals(EcompExternalAuthUtils.EXT_EMPTY_JSON_STRING)) {
+ userPermsJsonObj = new JSONObject(userPerms);
+ userPermsJsonArray = userPermsJsonObj.getJSONArray(EcompExternalAuthUtils.EXT_PERM_FIELD);
+ for (int i = 0; i < userPermsJsonArray.length(); i++) {
+ JSONObject permJsonObj = userPermsJsonArray.getJSONObject(i);
+ if (!permJsonObj.getString(EcompExternalAuthUtils.EXT_PERM_FIELD_TYPE).endsWith(EcompExternalAuthUtils.EXT_PERM_ACCESS)) {
+ ExternalAccessPerms perm = mapper.readValue(permJsonObj.toString(), ExternalAccessPerms.class);
+ extPermsList.add(perm);
+ }
+ }
+ }
+ return convertToRoleFunctionList(extPermsList);
+ }
+
+ private List<RoleFunction> convertToRoleFunctionList(List<ExternalAccessPerms> extPermsList) {
+ List<RoleFunction> roleFunctions = new ArrayList<>();
+ String namespace = EcompExternalAuthProperties.getProperty(EcompExternalAuthProperties.EXTERNAL_AUTH_NAMESPACE);
+ for (ExternalAccessPerms extPerm : extPermsList) {
+ RoleFunction roleFunction = new RoleFunction();
+ roleFunction.setCode(extPerm.getInstance());
+ roleFunction.setAction(extPerm.getAction());
+ if (extPerm.getDescription() != null
+ && EcompExternalAuthUtils.checkNameSpaceMatching(extPerm.getType(), namespace)) {
+ roleFunction.setName(extPerm.getDescription());
+ } else if (extPerm.getDescription() == null
+ && EcompExternalAuthUtils.checkNameSpaceMatching(extPerm.getType(), namespace)) {
+ roleFunction.setName(extPerm.getType().substring(namespace.length() + 1) + "|" + extPerm.getInstance()
+ + "|" + extPerm.getAction());
+ } else if (extPerm.getDescription() == null
+ && !EcompExternalAuthUtils.checkNameSpaceMatching(extPerm.getType(), namespace)) {
+ roleFunction.setName(extPerm.getType() + "|" + extPerm.getInstance() + "|" + extPerm.getAction());
+ }
+ if (EcompExternalAuthUtils.checkNameSpaceMatching(extPerm.getType(), namespace)) {
+ roleFunction.setType(extPerm.getType().substring(namespace.length() + 1));
+ } else {
+ roleFunction.setType(extPerm.getType());
+ }
+ roleFunctions.add(roleFunction);
+ }
+ return roleFunctions;
+ }
+
+ private SearchResult loadSearchResultData(PostSearchBean searchCriteria)
+ throws NamingException {
+ return ldapService.searchPost(searchCriteria.getUser(), searchCriteria.getSortBy1(),
+ searchCriteria.getSortBy2(), searchCriteria.getSortBy3(), searchCriteria.getPageNo(),
+ searchCriteria.getNewDataSize(), 1);
+ }
+
+}
--- /dev/null
+/*-
+ * ============LICENSE_START==========================================
+ * ONAP Portal SDK
+ * ===================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software 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.
+ *
+ * ============LICENSE_END============================================
+ *
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+package org.onap.portalsdk.external.authorization.util;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Properties;
+
+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+
+
+public class EcompExternalAuthProperties {
+
+ public static final String EXTERNAL_AUTH_USER_NAME = "extern_auth_user_name";
+
+ public static final String EXTERNAL_AUTH_PASSWORD = "extern_auth_password";
+
+ public static final String EXTERNAL_AUTH_URL = "extern_auth_url";
+
+ public static final String EXTERNAL_AUTH_USER_DOMAIN = "extern_auth_user_domain";
+
+ public static final String EXTERNAL_AUTH_NAMESPACE = "extern_auth_namespace";
+
+ private EcompExternalAuthProperties(){}
+
+ private static Properties properties;
+
+ private static String propertyFileName = "external-auth.properties";
+
+ private static final Object lockObject = new Object();
+
+ private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(EcompExternalAuthProperties.class);
+
+ /**
+ * Gets the property value for the specified key. If a value is found, leading
+ * and trailing space is trimmed.
+ *
+ * @param property
+ * Property key
+ * @return Value for the named property; null if the property file was not
+ * loaded or the key was not found.
+ */
+ public static String getProperty(String property) {
+ if (properties == null) {
+ synchronized (lockObject) {
+ try {
+ if (!initialize()) {
+ logger.error(EELFLoggerDelegate.errorLogger,"Failed to read property file " + propertyFileName);
+ return null;
+ }
+ } catch (IOException e) {
+ logger.error(EELFLoggerDelegate.errorLogger,"Failed to read property file " + propertyFileName ,e);
+ return null;
+ }
+ }
+ }
+ String value = properties.getProperty(property);
+ if (value != null)
+ value = value.trim();
+ return value;
+ }
+
+ /**
+ * Reads properties from a portal.properties file on the classpath.
+ *
+ * Clients do NOT need to call this method. Clients MAY call this method to test
+ * whether the properties file can be loaded successfully.
+ *
+ * @return True if properties were successfully loaded, else false.
+ * @throws IOException
+ * On failure
+ */
+ private static boolean initialize() throws IOException {
+ if (properties != null)
+ return true;
+ InputStream in = EcompExternalAuthProperties.class.getClassLoader().getResourceAsStream(propertyFileName);
+ if (in == null)
+ return false;
+ properties = new Properties();
+ try {
+ properties.load(in);
+ } finally {
+ in.close();
+ }
+ return true;
+ }
+
+}
--- /dev/null
+/*-
+ * ============LICENSE_START==========================================
+ * ONAP Portal SDK
+ * ===================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software 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.
+ *
+ * ============LICENSE_END============================================
+ *
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+package org.onap.portalsdk.external.authorization.util;
+
+import java.io.IOException;
+
+import javax.xml.bind.DatatypeConverter;
+
+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.onap.portalsdk.core.onboarding.util.CipherUtil;
+import org.onap.portalsdk.core.util.SystemProperties;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+public class EcompExternalAuthUtils {
+
+ private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(EcompExternalAuthUtils.class);
+
+ @Autowired
+ CipherUtil cipherUtil;
+
+ public static final String EXT_EMPTY_JSON_STRING = "{}";
+ public static final String EXT_ROLE_FIELD = "role";
+ public static final String EXT_PERM_FIELD = "perm";
+ public static final String EXT_PERM_FIELD_TYPE = "type";
+ public static final String EXT_PERM_ACCESS = ".access";
+ public static final String EXT_ROLE_FIELD_NAME = "name";
+ public static final String EXT_NULL_VALUE = "null";
+ public static final String EXT_FIELD_DESCRIPTION = "description";
+ public static final String EXT_FIELD_PERMS = "perms";
+ public static final String EXT_ROLE_FIELD_OWNER = ".owner";
+ public static final String EXT_ROLE_FIELD_ADMIN = ".admin";
+
+ public static HttpHeaders base64encodeKeyForAAFBasicAuth() throws Exception {
+ String userName = EcompExternalAuthProperties.getProperty(EcompExternalAuthProperties.EXTERNAL_AUTH_USER_NAME);
+ String encryptedPass = EcompExternalAuthProperties.getProperty(EcompExternalAuthProperties.EXTERNAL_AUTH_PASSWORD);
+ String decryptedPass = decryptPass(encryptedPass);
+ String usernamePass = userName + ":" + decryptedPass;
+ String encToBase64 = String.valueOf((DatatypeConverter.printBase64Binary(usernamePass.getBytes())));
+ HttpHeaders headers = new HttpHeaders();
+ headers.add("Authorization", "Basic " + encToBase64);
+ headers.setContentType(MediaType.APPLICATION_JSON);
+ return headers;
+ }
+
+ private static String decryptPass(String encrypted) throws Exception {
+ String result = "";
+ if (encrypted != null && encrypted.length() > 0) {
+ try {
+ result = CipherUtil.decryptPKC(encrypted,
+ SystemProperties.getProperty(SystemProperties.Decryption_Key));
+ } catch (Exception e) {
+ logger.error(EELFLoggerDelegate.errorLogger,"decryptedPassword failed", e);
+ throw e;
+ }
+ }
+ return result;
+ }
+
+ /**
+ *
+ * It checks whether the namespace is matching or not
+ *
+ * @param permTypeVal
+ * @param appNamespaceVal
+ * @return true or false
+ */
+ public static boolean checkNameSpaceMatching(String permTypeVal, String appNamespaceVal) {
+ String[] typeNamespace = permTypeVal.split("\\.");
+ String[] appNamespace = appNamespaceVal.split("\\.");
+ boolean isNamespaceMatching = true;
+ if (appNamespace.length <= typeNamespace.length) {
+ for (int k = 0; k < appNamespace.length; k++) {
+ if (!appNamespace[k].equals(typeNamespace[k]))
+ isNamespaceMatching = false;
+ }
+
+ } else {
+ isNamespaceMatching = false;
+ }
+ return isNamespaceMatching;
+ }
+
+ /**
+ *
+ * It validates whether given string is JSON or not
+ *
+ * @param jsonInString
+ * @return true or false
+ */
+ public static boolean isJSONValid(String jsonInString ) {
+ try {
+ final ObjectMapper mapper = new ObjectMapper();
+ mapper.readTree(jsonInString);
+ return true;
+ } catch (IOException e) {
+ logger.error(EELFLoggerDelegate.errorLogger, "Failed to parse Json!", e);
+ return false;
+ }
+ }
+}
<parent>
<groupId>org.onap.portal.sdk</groupId>
<artifactId>epsdk-project</artifactId>
- <version>2.2.0-SNAPSHOT</version>
+ <version>2.4.0-SNAPSHOT</version>
</parent>
<!-- GroupId is inherited from parent -->
import java.util.List;
import java.util.TimeZone;
-import org.onap.portalsdk.core.FusionObject;
+import org.onap.portalsdk.core.domain.FusionObject;
import org.onap.portalsdk.core.domain.User;
import org.onap.portalsdk.core.service.DataAccessService;
import org.onap.portalsdk.core.util.SystemProperties;
import javax.servlet.ServletContext;
-import org.onap.portalsdk.analytics.model.runtime.FormField;
-import org.onap.portalsdk.core.FusionObject;
+import org.onap.portalsdk.core.domain.FusionObject;
import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
import org.springframework.beans.factory.annotation.Autowired;
package org.onap.portalsdk.analytics.controller;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertNotNull;
+
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.ArrayList;
import java.util.List;
+
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
-import org.onap.portalsdk.analytics.system.fusion.AppUtils;
import org.junit.Before;
import org.junit.Test;
import org.onap.portalsdk.analytics.system.DbUtils;
import org.onap.portalsdk.analytics.system.Globals;
import org.onap.portalsdk.analytics.system.IAppUtils;
+import org.onap.portalsdk.analytics.system.fusion.AppUtils;
import org.onap.portalsdk.analytics.util.AppConstants;
import org.onap.portalsdk.analytics.util.DataSet;
import org.onap.portalsdk.analytics.xmlobj.ChartAdditionalOptions;
import javax.servlet.http.HttpServletResponse;
import org.junit.Before;
-import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.onap.portalsdk.analytics.model.definition.ReportDefinition;
import org.onap.portalsdk.analytics.model.definition.wizard.ColumnJSON;
import org.onap.portalsdk.analytics.model.definition.wizard.DefinitionJSON;
-import org.onap.portalsdk.analytics.model.definition.wizard.ImportJSON;
-import org.onap.portalsdk.analytics.model.definition.wizard.MessageJSON;
-import org.onap.portalsdk.analytics.model.definition.wizard.QueryJSON;
import org.onap.portalsdk.analytics.system.AppUtils;
import org.onap.portalsdk.analytics.system.ConnectionUtils;
import org.onap.portalsdk.analytics.system.DbUtils;
import org.onap.portalsdk.analytics.util.Utils;
import org.onap.portalsdk.analytics.util.XSSFilter;
import org.onap.portalsdk.analytics.view.ReportData;
-import org.onap.portalsdk.analytics.xmlobj.ChartAdditionalOptions;
import org.onap.portalsdk.analytics.xmlobj.CustomReportType;
-import org.onap.portalsdk.analytics.xmlobj.DataColumnList;
import org.onap.portalsdk.analytics.xmlobj.DataColumnType;
import org.onap.portalsdk.analytics.xmlobj.DataSourceList;
-import org.onap.portalsdk.analytics.xmlobj.DataSourceType;
import org.onap.portalsdk.analytics.xmlobj.FormFieldList;
import org.onap.portalsdk.analytics.xmlobj.FormFieldType;
import org.onap.portalsdk.analytics.xmlobj.MockRunTimeReport;
import org.onap.portalsdk.core.util.SecurityCodecUtil;
import org.onap.portalsdk.core.web.support.UserUtils;
import org.owasp.esapi.ESAPI;
-import org.owasp.esapi.Encoder;
import org.owasp.esapi.codecs.Codec;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
*/
package org.onap.portalsdk.analytics.xmlobj;
-import static org.junit.Assert.*;
-import javax.xml.namespace.QName;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
-import java.io.IOException;
import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.Reader;
import java.io.StringReader;
-import java.io.Writer;
-import java.sql.Clob;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
-import java.sql.SQLException;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Enumeration;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBElement;
-import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
+import javax.xml.namespace.QName;
-import org.hibernate.Session;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.onap.portalsdk.analytics.model.ReportLoader;
import org.onap.portalsdk.analytics.model.base.ReportWrapper;
import org.onap.portalsdk.analytics.model.runtime.ChartJSONHelper;
-import org.onap.portalsdk.analytics.model.runtime.FormField;
-import org.onap.portalsdk.analytics.model.runtime.ReportFormFields;
import org.onap.portalsdk.analytics.model.runtime.ReportRuntime;
import org.onap.portalsdk.analytics.system.AppUtils;
import org.onap.portalsdk.analytics.system.DbUtils;
import org.onap.portalsdk.analytics.system.Globals;
import org.onap.portalsdk.analytics.util.AppConstants;
import org.onap.portalsdk.analytics.util.DataSet;
-import org.onap.portalsdk.analytics.xmlobj.CustomReportType;
import org.onap.portalsdk.core.domain.User;
import org.onap.portalsdk.core.restful.domain.EcompRole;
import org.onap.portalsdk.core.web.support.UserUtils;
<parent>
<groupId>org.onap.portal.sdk</groupId>
<artifactId>epsdk-project</artifactId>
- <version>2.2.0-SNAPSHOT</version>
+ <version>2.4.0-SNAPSHOT</version>
</parent>
<!-- GroupId is inherited from parent -->
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
</exclusion>
- <exclusion>
- <groupId>xerces</groupId>
- <artifactId>xercesImpl</artifactId>
- </exclusion>
- <exclusion>
- <groupId>commons-collections</groupId>
- <artifactId>commons-collections</artifactId>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>commons-collections</groupId>
+ <artifactId>commons-collections</artifactId>
</exclusion>
<exclusion>
<groupId>org.beanshell</groupId>
<artifactId>xstream</artifactId>
<version>1.4.10</version>
</dependency>
- <dependency>
- <groupId>org.apache.wicket</groupId>
- <artifactId>wicket-core</artifactId>
- <version>1.5.16</version>
- </dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.3</version>
</dependency>
-
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>2.7.2</version>
</dependency>
<dependency>
-
- <groupId>xerces</groupId>
- <artifactId>xercesImpl</artifactId>
- <version>2.11.0.SP5</version>
- </dependency>
- <dependency>
- <groupId>commons-collections</groupId>
- <artifactId>commons-collections</artifactId>
- <version>3.2.2</version>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ <version>2.11.0.SP5</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-collections</groupId>
+ <artifactId>commons-collections</artifactId>
+ <version>3.2.2</version>
</dependency>
</dependencies>
</project>
import org.onap.portalsdk.core.domain.App;
import org.onap.portalsdk.core.domain.User;
import org.onap.portalsdk.core.logging.aspect.AuditLog;
-import org.onap.portalsdk.core.logging.format.AlarmSeverityEnum;
import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
import org.onap.portalsdk.core.onboarding.rest.FavoritesClient;
import org.onap.portalsdk.core.onboarding.util.CipherUtil;
import org.onap.portalsdk.core.domain.App;
import org.onap.portalsdk.core.domain.User;
import org.onap.portalsdk.core.logging.aspect.AuditLog;
-import org.onap.portalsdk.core.logging.format.AlarmSeverityEnum;
import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
import org.onap.portalsdk.core.onboarding.rest.FunctionalMenuClient;
import org.onap.portalsdk.core.onboarding.ueb.UebException;
import org.onap.portalsdk.core.controller.UnRestrictedBaseController;
import org.onap.portalsdk.core.domain.User;
+import org.onap.portalsdk.core.logging.aspect.MetricsLog;
import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
import org.onap.portalsdk.core.onboarding.util.PortalApiConstants;
import org.onap.portalsdk.core.onboarding.util.PortalApiProperties;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.servlet.ModelAndView;
-import org.onap.portalsdk.core.logging.aspect.MetricsLog;
@Controller
@RequestMapping("/")
import javax.servlet.http.HttpServletResponse;
import org.json.JSONObject;
-import org.onap.portalapp.util.SecurityXssValidator;
import org.onap.portalsdk.core.controller.RestrictedBaseController;
import org.onap.portalsdk.core.domain.BroadcastMessage;
import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
*/
package org.onap.portalapp.service;
-import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import org.onap.portalsdk.core.restful.domain.EcompRole;
import org.onap.portalsdk.core.restful.domain.EcompUser;
import org.onap.portalsdk.core.service.AppService;
-import org.onap.portalsdk.core.service.AppServiceImpl;
import org.onap.portalsdk.core.service.RestApiRequestBuilder;
import org.onap.portalsdk.core.service.RoleService;
import org.onap.portalsdk.core.service.UserProfileService;
*/
package org.onap.portalapp.controller.core;
-import static org.junit.Assert.*;
-
-import java.util.HashMap;
-import java.util.Map;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
-import org.onap.portalapp.controller.core.AngularAdminController;
import org.onap.portalapp.framework.MockitoTestSuite;
import org.onap.portalsdk.core.domain.User;
import org.onap.portalsdk.core.web.support.UserUtils;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
-import org.springframework.mock.web.MockHttpServletRequest;
import com.fasterxml.jackson.databind.ObjectMapper;
package org.onap.portalapp.controller.core;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
import java.io.IOException;
import java.io.PrintWriter;
*/
package org.onap.portalapp.controller.core;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import org.drools.core.command.assertion.AssertEquals;
import org.junit.Before;
import org.junit.Test;
import org.mockito.InjectMocks;
*/
package org.onap.portalapp.controller.core;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
import java.io.BufferedReader;
import java.io.IOException;
*/
package org.onap.portalapp.controller.core;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
import java.io.IOException;
import java.io.PrintWriter;
package org.onap.portalapp.controller.core;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
import java.io.BufferedReader;
import java.io.IOException;
import org.onap.portalsdk.core.web.support.UserUtils;
import org.springframework.web.bind.ServletRequestUtils;
import org.springframework.web.servlet.ModelAndView;
-import org.onap.portalapp.controller.core.RoleListController;
import com.fasterxml.jackson.databind.ObjectMapper;
*/
package org.onap.portalapp.controller.core;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
import java.io.IOException;
import java.util.ArrayList;
https://www.eclipse.org/m2e-wtp/
## Release Notes
+Version 2.3.0
+- PORTAL 254 ECOMP AAF jar
+
Version 2.2.0
- PORTAL 136 Junits for SDK
- PORTAL 87 hibernate mapping in epsdk-overlay forces use of analytics dependency jar
- PORTAL 155 Review security issues: portal
-- PORTAL 202 Remove files that have GPL or other license issues
-- PORTAL 210 Music library update
+- PORTAL-202 Remove files that have GPL or other license issues
+
Version 2.1.0
- PORTAL 161 Refer epsdk-app-common
- PORTAL 160 Refer epsdk-app-common
<parent>
<groupId>org.onap.portal.sdk</groupId>
<artifactId>epsdk-project</artifactId>
- <version>2.2.0-SNAPSHOT</version>
+ <version>2.4.0-SNAPSHOT</version>
</parent>
<!-- GroupId is inherited from parent -->
-music.endpoint = http://vm-ep-dev4.research.att.com/MUSIC/rest/
-music.version = v2
-music.keyspace = keyspaces
music.session.keyspace = test_session
music.session.attr.tables = spring_session_attributes
music.session.meta.tables = spring_session
-music.x.minor.version = 3
-music.x.patch.version = 0
-music.ns = com.att.ecomp.portal.demeter
-music.user.id = m00468@portal.ecomp.att.com
-music.password = friedG33nS-
-music.consistency.info = type
-music.consistency.info.value = eventual
-music.cache = false
+#music.cache = false
music.serialize.compress = true
music.session.max.inactive.interval.seconds = 1800
+music.exclude.api = /portalApi/healthCheck,/portalApi/healthCheckSuspend,/portalApi/healthCheckResume
#By default it's eventual
music.atomic.get = false
music.atomic.put = false
-
+#how often the session clean up would happen (hour)
+music.cleanup.frequency = 6
+#how old of session need to be cleaned up (hour)
+music.cleanup.threshold = 10
cassandra.host=135.197.226.103
zookeeper.host=135.197.226.103, 135.197.226.108, 135.197.226.119
cassandra.user=cassandra
-cassandra.password=cassandra
\ No newline at end of file
+cassandra.password=cassandra
+
+#Music API
+#music.endpoint = http://vm-ep-dev4.research.att.com/MUSIC/rest/
+#music.version = v2
+#music.keyspace = keyspaces
+#music.x.minor.version = 3
+#music.x.patch.version = 0
+#music.ns = com.att.ecomp.portal.demeter
+#music.user.id = m00468@portal.ecomp.att.com
+#music.password = friedG33nS-
+#music.consistency.info = type
+#music.consistency.info.value = eventual
\ No newline at end of file
</filter-mapping>
<filter>
<filter-name>springSessionRepositoryFilter</filter-name>
- <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
+ <filter-class>org.onap.portalapp.music.filter.MusicSessionRepositoryFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>springSessionRepositoryFilter</filter-name>
<parent>
<groupId>org.onap.portal.sdk</groupId>
<artifactId>epsdk-project</artifactId>
- <version>2.2.0-SNAPSHOT</version>
+ <version>2.4.0-SNAPSHOT</version>
</parent>
<!-- GroupId is inherited from parent -->
<put-attribute name="viewName" value="elastic_search"></put-attribute>
</definition>
- <definition name="error" template="/WEB-INF/jsp/error.jsp"></definition>
-
+ <definition name="error" template="/WEB-INF/jsp/error.jsp">
+
+ </definition>
<!-- <definition name="notebook"
template="app/fusion/notebook-integration/scripts/view-models/notebook.htm" /> -->
<?xml version="1.0"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
-
+
<parent>
<groupId>org.onap.portal.sdk</groupId>
<artifactId>epsdk-project</artifactId>
- <version>2.2.0-SNAPSHOT</version>
+ <version>2.4.0-SNAPSHOT</version>
</parent>
<!-- GroupId is inherited from parent -->
<properties>
<drools.version>6.4.0.Final</drools.version>
</properties>
-
+
<!-- repositories are inherited from parent -->
<build>
</systemPropertyVariables>
</configuration>
</plugin>
-
+
</plugins>
</build>
<dependencies>
- <!-- internal -->
+ <!-- internal -->
<dependency>
<groupId>org.onap.portal.sdk</groupId>
<artifactId>epsdk-fw</artifactId>
</exclusions>
</dependency>
+ <!-- internal -->
+ <dependency>
+ <groupId>org.onap.portal.sdk</groupId>
+ <artifactId>epsdk-domain</artifactId>
+ <version>${project.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
<!-- Drools -->
<dependency>
<groupId>org.drools</groupId>
<version>${springframework.version}</version>
</dependency>
<dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-aop</artifactId>
- <version>${springframework.version}</version>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-aop</artifactId>
+ <version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
</exclusion>
</exclusions>
</dependency>
-
+
<dependency>
- <groupId>org.aspectj</groupId>
- <artifactId>aspectjrt</artifactId>
- <version>1.8.9</version>
+ <groupId>org.aspectj</groupId>
+ <artifactId>aspectjrt</artifactId>
+ <version>1.8.9</version>
</dependency>
-
+
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.9</version>
</dependency>
-
+
<!-- Hibernate -->
<dependency>
<version>2.3.1</version>
</dependency>
<dependency>
- <groupId>org.apache.taglibs</groupId>
- <artifactId>taglibs-standard-spec</artifactId>
- <version>1.2.5</version>
+ <groupId>org.apache.taglibs</groupId>
+ <artifactId>taglibs-standard-spec</artifactId>
+ <version>1.2.5</version>
</dependency>
<dependency>
- <groupId>org.apache.taglibs</groupId>
- <artifactId>taglibs-standard-impl</artifactId>
- <version>1.2.5</version>
+ <groupId>org.apache.taglibs</groupId>
+ <artifactId>taglibs-standard-impl</artifactId>
+ <version>1.2.5</version>
</dependency>
<dependency>
- <groupId>org.apache.taglibs</groupId>
- <artifactId>taglibs-standard-spec</artifactId>
- <version>1.2.5</version>
+ <groupId>org.apache.taglibs</groupId>
+ <artifactId>taglibs-standard-spec</artifactId>
+ <version>1.2.5</version>
</dependency>
<dependency>
- <groupId>org.apache.taglibs</groupId>
- <artifactId>taglibs-standard-impl</artifactId>
- <version>1.2.5</version>
+ <groupId>org.apache.taglibs</groupId>
+ <artifactId>taglibs-standard-impl</artifactId>
+ <version>1.2.5</version>
</dependency>
<dependency>
- <groupId>org.apache.taglibs</groupId>
- <artifactId>taglibs-standard-jstlel</artifactId>
- <version>1.2.5</version>
+ <groupId>org.apache.taglibs</groupId>
+ <artifactId>taglibs-standard-jstlel</artifactId>
+ <version>1.2.5</version>
</dependency>
<!-- bridge to implement commons-logging using slf4j -->
<dependency>
</exclusion>
</exclusions>
</dependency>
-
+
<dependency>
- <groupId>com.att.eelf</groupId>
- <artifactId>eelf-core</artifactId>
- <version>1.0.0</version>
+ <groupId>com.att.eelf</groupId>
+ <artifactId>eelf-core</artifactId>
+ <version>1.0.0</version>
</dependency>
<dependency>
<groupId>org.owasp.esapi</groupId>
<artifactId>esapi</artifactId>
<version>2.1.0.1</version>
- <exclusions>
- <exclusion>
- <groupId>commons-beanutils</groupId>
- <artifactId>commons-beanutils-core</artifactId>
- </exclusion>
- <exclusion>
- <groupId>commons-httpclient</groupId>
- <artifactId>commons-httpclient</artifactId>
- </exclusion>
- <exclusion>
- <groupId>xerces</groupId>
- <artifactId>xercesImpl</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>commons-beanutils</groupId>
+ <artifactId>commons-beanutils-core</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>commons-httpclient</groupId>
+ <artifactId>commons-httpclient</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
</exclusion>
- <exclusion>
- <groupId>org.beanshell</groupId>
- <artifactId>bsh-core</artifactId>
- </exclusion>
- </exclusions>
+ <exclusion>
+ <groupId>org.beanshell</groupId>
+ <artifactId>bsh-core</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
+
<!-- UEB was originally named Cambria -->
<dependency>
<groupId>com.att.nsa</groupId>
<classifier>runtime</classifier>
</dependency>
<dependency>
- <groupId>com.thoughtworks.xstream</groupId>
- <artifactId>xstream</artifactId>
- <version>1.4.10</version>
+ <groupId>org.apache.lucene</groupId>
+ <artifactId>lucene-queryparser</artifactId>
+ <version>7.2.1</version>
</dependency>
<dependency>
- <groupId>org.apache.wicket</groupId>
- <artifactId>wicket-core</artifactId>
- <version>1.5.16</version>
+ <groupId>com.thoughtworks.xstream</groupId>
+ <artifactId>xstream</artifactId>
+ <version>1.4.10</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.wicket</groupId>
+ <artifactId>wicket-core</artifactId>
+ <version>1.5.16</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<version>1.3.3</version>
</dependency>
<dependency>
- <groupId>commons-beanutils</groupId>
- <artifactId>commons-beanutils</artifactId>
- <version>1.9.3</version>
+ <groupId>commons-beanutils</groupId>
+ <artifactId>commons-beanutils</artifactId>
+ <version>1.9.2</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.poi</groupId>
+ <artifactId>poi</artifactId>
+ <version>3.17</version>
+ <exclusions>
+ <exclusion>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.poi</groupId>
+ <artifactId>poi-ooxml</artifactId>
+ <version>3.17</version>
+ <exclusions>
+ <exclusion>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.poi</groupId>
+ <artifactId>poi-scratchpad</artifactId>
+ <version>3.17</version>
+ <exclusions>
+ <exclusion>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.poi</groupId>
+ <artifactId>poi-contrib</artifactId>
+ <version>3.5-FINAL</version>
+ <exclusions>
+ <exclusion>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<version>4.5.3</version>
</dependency>
<dependency>
- <groupId>xalan</groupId>
- <artifactId>xalan</artifactId>
- <version>2.7.2</version>
+ <groupId>xalan</groupId>
+ <artifactId>xalan</artifactId>
+ <version>2.7.2</version>
</dependency>
- <dependency>
- <groupId>xerces</groupId>
- <artifactId>xercesImpl</artifactId>
- <version>2.11.0.SP5</version>
- </dependency>
</dependencies>
-
+
</project>
this.userid = userid;
}
+ @Override
+ public String toString() {
+ return "LoginBean [loginId=" + loginId + ", loginPwd=" + loginPwd + ", hrid=" + hrid + ", userid=" + userid
+ + ", siteAccess=" + siteAccess + ", loginErrorMessage=" + loginErrorMessage + ", user=" + user
+ + ", menu=" + menu + ", businessDirectMenu=" + businessDirectMenu + "]";
+ }
+
+
+
}
import org.onap.portalsdk.core.command.support.SearchBase;
import org.onap.portalsdk.core.domain.User;
+import org.onap.portalsdk.core.domain.FusionObject.Utilities;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
package org.onap.portalsdk.core.dao.support;
import org.hibernate.SessionFactory;
-import org.onap.portalsdk.core.FusionObject;
+import org.onap.portalsdk.core.domain.FusionObject;
public class FusionDao implements FusionObject {
private SessionFactory sessionFactory;
*/
package org.onap.portalsdk.core.exception.support;
-import org.onap.portalsdk.core.FusionObject;
+import org.onap.portalsdk.core.domain.FusionObject;
public interface FusionException extends FusionObject {
}
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
import org.onap.portalsdk.core.controller.FusionBaseController;
import org.onap.portalsdk.core.domain.App;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
-import org.onap.portalsdk.core.util.SystemProperties.SecurityEventTypeEnum;
import org.springframework.beans.factory.annotation.Autowired;
import org.onap.portalsdk.core.logging.aspect.MetricsLog;
+import org.onap.portalsdk.core.util.SystemProperties.SecurityEventTypeEnum;
@Aspect
@org.springframework.context.annotation.Configuration
import javax.servlet.http.HttpServletRequest;
-import org.onap.portalsdk.core.FusionObject;
+import org.onap.portalsdk.core.domain.FusionObject;
import org.onap.portalsdk.core.domain.MenuData;
import org.onap.portalsdk.core.service.DataAccessService;
import org.onap.portalsdk.core.util.SystemProperties;
import java.io.IOException;
-import org.onap.portalsdk.core.FusionObject;
+import org.onap.portalsdk.core.domain.FusionObject;
public interface FusionCacheManager extends FusionObject {
import java.util.Map;
import org.onap.portalsdk.core.domain.AuditLog;
+import org.onap.portalsdk.core.logging.aspect.MetricsLog;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import org.onap.portalsdk.core.logging.aspect.MetricsLog;
@Service("auditService")
@Transactional
/**
* Provides implementations of methods in {@link DataAccessService}.
*/
+@SuppressWarnings("deprecation")
@Transactional
public class DataAccessServiceImpl extends FusionService implements DataAccessService {
import org.onap.portalsdk.core.command.support.SearchResult;
import org.onap.portalsdk.core.domain.User;
import org.onap.portalsdk.core.domain.support.DomainVo;
+import org.onap.portalsdk.core.logging.aspect.MetricsLog;
import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
import org.onap.portalsdk.core.service.support.FusionService;
import org.onap.portalsdk.core.service.support.ServiceLocator;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import org.onap.portalsdk.core.logging.aspect.MetricsLog;
@Service("ldapService")
@Transactional
@Autowired
private UserService userService;
-
+
private static String portalApiVersion = "/v1";
@Override
logger.debug(EELFLoggerDelegate.debugLogger, "createUser: " + user.getOrgUserId());
User user1 = new User();
user1.setEmail(user.getEmail());
- user1.setEmail(user.getEmail());
user1.setFirstName(user.getFirstName());
user1.setHrid(user.getHrid());
user1.setJobTitle(user.getJobTitle());
}
private User findUser(LoginBean bean) throws IOException {
- String repsonse = restApiRequestBuilder.getViaREST(portalApiVersion+"/user/" + bean.getUserid(), true, bean.getUserid());
+ String repsonse = restApiRequestBuilder.getViaREST(portalApiVersion + "/user/" + bean.getUserid(), true,
+ bean.getUserid());
User user = userService.userMapper(repsonse);
user.setId(getUserIdByOrgUserId(user.getOrgUserId()));
return user;
import org.onap.portalsdk.core.command.LoginBean;
import org.onap.portalsdk.core.domain.Role;
import org.onap.portalsdk.core.domain.User;
+import org.onap.portalsdk.core.logging.aspect.MetricsLog;
import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
import org.onap.portalsdk.core.menu.MenuBuilder;
import org.onap.portalsdk.core.service.support.FusionService;
import org.onap.portalsdk.core.web.support.UserUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
-import org.onap.portalsdk.core.logging.aspect.MetricsLog;
@Transactional
@MetricsLog
import javax.servlet.http.HttpServletRequest;
-import org.onap.portalsdk.core.FusionObject.Parameters;
import org.onap.portalsdk.core.command.PostSearchBean;
import org.onap.portalsdk.core.domain.Lookup;
import org.onap.portalsdk.core.domain.Role;
import org.onap.portalsdk.core.domain.User;
+import org.onap.portalsdk.core.domain.FusionObject.Parameters;
import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
import org.onap.portalsdk.core.util.SystemProperties;
import org.springframework.beans.factory.annotation.Autowired;
import org.onap.portalsdk.core.dao.ProfileDao;
import org.onap.portalsdk.core.domain.Profile;
import org.onap.portalsdk.core.domain.User;
+import org.onap.portalsdk.core.logging.aspect.MetricsLog;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
-import org.onap.portalsdk.core.logging.aspect.MetricsLog;
@Transactional
@MetricsLog
import org.onap.portalsdk.core.domain.Role;
import org.onap.portalsdk.core.domain.RoleFunction;
+import org.onap.portalsdk.core.logging.aspect.MetricsLog;
import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
-import org.onap.portalsdk.core.logging.aspect.MetricsLog;
@Transactional
@MetricsLog
import org.onap.portalsdk.core.domain.RoleFunction;
import org.onap.portalsdk.core.domain.User;
import org.onap.portalsdk.core.domain.UserApp;
-import org.onap.portalsdk.core.web.support.UserUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
*/
package org.onap.portalsdk.core.service.support;
-import org.onap.portalsdk.core.FusionObject;
+import org.onap.portalsdk.core.domain.FusionObject;
public class FusionService implements FusionObject {
/** Logger for this class and subclasses */
public static final String LEFT_MENU_PARENT = "parentList";
public static final String LEFT_MENU_CHILDREND = "childItemList";
public static final String COOKIE_DOMAIN = "cookie_domain";
+
+ // eCOMP Portal host name
+ public static final String ECOMP_PORTAL_HOST_NAME = "ecomp_portal_host_name";
+ public static final String ECOMP_PORTAL_SERVER_PORT = "ecomp_portal_server_port";
public enum RESULT_ENUM {
import javax.sql.DataSource;
import org.hibernate.Session;
+import org.onap.portalsdk.core.domain.Lookup;
import org.onap.portalsdk.core.exception.SessionExpiredException;
import org.onap.portalsdk.core.objectcache.AbstractCacheManager;
import org.onap.portalsdk.core.service.DataAccessService;
return "";
}
- List<org.onap.portalsdk.core.domain.Lookup> lstResult = getLookupListNoCache(dbTable, dbValueCol, dbLabelCol,
+ List<Lookup> lstResult = getLookupListNoCache(dbTable, dbValueCol, dbLabelCol,
dbLabelCol + "='" + label.replaceAll("'", "''") + "'", "");
if (lstResult == null) {
return "";
}
if (!lstResult.isEmpty()) {
- return ((org.onap.portalsdk.core.domain.Lookup) lstResult.toArray()[0]).getValue();
+ return ((Lookup) lstResult.toArray()[0]).getValue();
} else {
return "";
}
Iterator i = lookupList.iterator();
while (i.hasNext()) {
- org.onap.portalsdk.core.domain.Lookup lookup = (org.onap.portalsdk.core.domain.Lookup) i.next();
+ Lookup lookup = (Lookup) i.next();
if (lookup.getLabel().equals(label)) {
return lookup.getValue();
}
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
-import org.hibernate.criterion.Restrictions;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
*/
package org.onap.portalsdk.core.domain.sessionmgt;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
import org.junit.Test;
-import org.onap.portalsdk.core.domain.support.DomainVo;
public class TimeoutVOTest {
import org.onap.portalsdk.core.onboarding.util.CipherUtil;
import org.onap.portalsdk.core.onboarding.util.PortalApiConstants;
import org.onap.portalsdk.core.onboarding.util.PortalApiProperties;
-import org.onap.portalsdk.core.restful.client.PortalRestClientBase;
import org.onap.portalsdk.core.service.AppService;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.onap.portalsdk.core.onboarding.util.PortalApiConstants;
import org.onap.portalsdk.core.onboarding.util.PortalApiProperties;
import org.onap.portalsdk.core.restful.domain.SharedContext;
-import org.onap.portalsdk.core.scheduler.CoreRegister;
import org.onap.portalsdk.core.service.AppService;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
-import org.onap.portalsdk.core.FusionObject.Parameters;
+import org.onap.portalsdk.core.domain.FusionObject.Parameters;
import org.onap.portalsdk.core.domain.support.DomainVo;
import org.onap.portalsdk.core.util.SystemProperties;
import org.powermock.api.mockito.PowerMockito;
import java.util.ArrayList;
import java.util.List;
-import org.hibernate.criterion.Criterion;
-import org.hibernate.criterion.Restrictions;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
*/
package org.onap.portalsdk.core.service;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
-import org.mockito.Mockito;
import org.onap.portalsdk.core.domain.User;
-import org.onap.portalsdk.core.domain.support.CollaborateList;
import org.powermock.modules.junit4.PowerMockRunner;
import java.util.Map;
import org.junit.Assert;
-import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
--- /dev/null
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.onap.portal.sdk</groupId>
+ <artifactId>epsdk-project</artifactId>
+ <version>2.4.0-SNAPSHOT</version>
+ </parent>
+
+ <groupId>org.onap.portal.sdk</groupId>
+ <artifactId>epsdk-domain</artifactId>
+ <version>2.4.0-SNAPSHOT</version>
+ <packaging>jar</packaging>
+ <name>ONAP Portal SDK Domain</name>
+
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.onap.portal.sdk</groupId>
+ <artifactId>epsdk-fw</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <!-- Mapper -->
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-annotations</artifactId>
+ <version>2.8.10</version>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-core</artifactId>
+ <version>2.8.10</version>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-databind</artifactId>
+ <version>2.8.10</version>
+ </dependency>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-core</artifactId>
+ <version>1.10.19</version>
+ <scope>test</scope>
+ </dependency>
+ <!-- Jacoco for offline instrumentation -->
+ <dependency>
+ <groupId>org.jacoco</groupId>
+ <artifactId>org.jacoco.agent</artifactId>
+ <version>${jacoco.version}</version>
+ <classifier>runtime</classifier>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.12</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+ <build>
+ <plugins>
+
+ <!-- some plugins inherited from parent -->
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-jar-plugin</artifactId>
+ <version>2.6</version>
+ <configuration>
+ <archive>
+ <manifestEntries>
+ <archive-version>${project.version}</archive-version>
+ <internal-version>${sdk-internal.version}</internal-version>
+ </manifestEntries>
+ </archive>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>3.7.0</version>
+ <configuration>
+ <source>1.8</source>
+ <target>1.8</target>
+ </configuration>
+ </plugin>
+
+ </plugins>
+
+ </build>
+</project>
*/
package org.onap.portalsdk.core.domain;
-import org.onap.portalsdk.core.domain.support.DomainVo;
-
/**
* <p>
* RoleFunction.java
*
*
*/
-package org.onap.portalsdk.core;
+package org.onap.portalsdk.core.domain;
/**
* <p>
*/
package org.onap.portalsdk.core.domain;
-import org.onap.portalsdk.core.FusionObject;
-
public class FusionVo implements FusionObject {
public FusionVo() {
// No-argument constructor
*/
package org.onap.portalsdk.core.domain;
-import org.onap.portalsdk.core.domain.support.DomainVo;
-
public class Profile extends DomainVo {
private static final long serialVersionUID = 3409056457412656883L;
import org.onap.portalsdk.core.domain.support.DomainVo;
import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonInclude;
/**
* <p>
return (c1 == null || c2 == null) ? 1 : c1.compareTo(c2);
}
+ @Override
+ public String toString() {
+ return "RoleFunction [code=" + code + ", name=" + name + ", type=" + type + ", action=" + action + "]";
+ }
+
+
}
return c1.compareTo(c2);
}
+ @Override
+ public String toString() {
+ return "User [orgUserId=" + orgUserId + ", userApps=" + userApps + ", pseudoRoles=" + pseudoRoles + "]";
+ }
+
+
+
}
import java.util.List;
import java.util.Map;
-import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
-
public class Container {
- private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(Container.class);
-
String id;
String name;
}
public Size computeSize() {
- logger.debug("computeSize: name is {}", getName());
Size size = new Size();
double width = 0;
double height = 0;
import java.util.Set;
import org.onap.portalsdk.core.domain.FusionVo;
-import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
/* Super class from which all data objects descend */
+@SuppressWarnings("rawtypes")
public class DomainVo extends FusionVo implements Serializable, Cloneable, Comparable {
- private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(DomainVo.class);
+// TODO: Remove after the EELFLoggerImpl
+// private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(DomainVo.class);
private static final long serialVersionUID = 1L;
protected Long id;
}
} catch (Exception e) {
- logger.error(EELFLoggerDelegate.errorLogger, "copy failed", e);
+
+// TODO: Remove after the EELFLoggerImpl logger.error(EELFLoggerDelegate.errorLogger, "copy failed", e);
+ e.printStackTrace();
}
return newVo;
*/
package org.onap.portalsdk.core.domain.support;
-import org.onap.portalsdk.core.FusionObject;
+import org.onap.portalsdk.core.domain.FusionObject;
public class FusionCommand implements FusionObject {
*/
package org.onap.portalsdk.core.domain;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
import org.junit.Test;
+import org.onap.portalsdk.core.domain.App;
public class AppTest {
import static org.junit.Assert.*;
import org.junit.Test;
+import org.onap.portalsdk.core.domain.AuditLog;
public class AuditLogTest {
import static org.junit.Assert.*;
import org.junit.Test;
+import org.onap.portalsdk.core.domain.BroadcastMessage;
public class BroadcastMessageTest {
import static org.junit.Assert.*;
import org.junit.Test;
+import org.onap.portalsdk.core.domain.FnMenu;
public class FnMenuTest {
import static org.junit.Assert.*;
import org.junit.Test;
+import org.onap.portalsdk.core.domain.LoginBean;
public class LoginBeanTest {
*/
package org.onap.portalsdk.core.domain;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
import org.junit.Test;
+import org.onap.portalsdk.core.domain.Lookup;
import org.onap.portalsdk.core.domain.support.NameValueId;
public class LookupTest {
import static org.junit.Assert.assertEquals;
import org.junit.Test;
+import org.onap.portalsdk.core.domain.LuCountry;
public class LuCountryTest {
import static org.junit.Assert.*;
import org.junit.Test;
+import org.onap.portalsdk.core.domain.LuState;
public class LuStateTest {
import static org.junit.Assert.assertTrue;
import org.junit.Test;
+import org.onap.portalsdk.core.domain.LuTimeZone;
public class LuTimeZoneTest {
import static org.junit.Assert.*;
import org.junit.Test;
+import org.onap.portalsdk.core.domain.MenuData;
public class MenuDataTest {
import static org.junit.Assert.*;
import org.junit.Test;
+import org.onap.portalsdk.core.domain.Menu;
public class MenuTest {
import static org.junit.Assert.*;
import org.junit.Test;
+import org.onap.portalsdk.core.domain.Profile;
public class ProfileTest {
import static org.junit.Assert.*;
import org.junit.Test;
+import org.onap.portalsdk.core.domain.RoleFunction;
public class RoleFunctionTest {
import java.util.TreeSet;
import org.junit.Test;
+import org.onap.portalsdk.core.domain.Role;
+import org.onap.portalsdk.core.domain.RoleFunction;
public class RoleTest {
import static org.junit.Assert.*;
import org.junit.Test;
+import org.onap.portalsdk.core.domain.UrlsAccessibleKey;
+import org.onap.portalsdk.core.domain.User;
public class UrlsAccessibleKeyTest {
import static org.junit.Assert.*;
import org.junit.Test;
+import org.onap.portalsdk.core.domain.UrlsAccessible;
+import org.onap.portalsdk.core.domain.UrlsAccessibleKey;
+import org.onap.portalsdk.core.domain.User;
public class UrlsAccessibleTest {
import static org.junit.Assert.*;
import org.junit.Test;
+import org.onap.portalsdk.core.domain.App;
+import org.onap.portalsdk.core.domain.Role;
+import org.onap.portalsdk.core.domain.User;
+import org.onap.portalsdk.core.domain.UserAppId;
public class UserAppIdTest {
import static org.junit.Assert.*;
import org.junit.Test;
+import org.onap.portalsdk.core.domain.App;
+import org.onap.portalsdk.core.domain.Role;
+import org.onap.portalsdk.core.domain.User;
+import org.onap.portalsdk.core.domain.UserApp;
public class UserAppTest {
import java.util.TreeSet;
import org.junit.Test;
+import org.onap.portalsdk.core.domain.App;
+import org.onap.portalsdk.core.domain.Role;
+import org.onap.portalsdk.core.domain.User;
+import org.onap.portalsdk.core.domain.UserApp;
public class UserTest {
*
*
*/
-package org.onap.portalsdk.domain.support;
+package org.onap.portalsdk.core.domain.support;
import static org.junit.Assert.assertEquals;
*
*
*/
-package org.onap.portalsdk.domain.support;
+package org.onap.portalsdk.core.domain.support;
import static org.junit.Assert.assertEquals;
*
*
*/
-package org.onap.portalsdk.domain.support;
+package org.onap.portalsdk.core.domain.support;
import static org.junit.Assert.assertEquals;
import org.junit.Before;
import org.junit.Test;
import org.mockito.InjectMocks;
-import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.onap.portalsdk.core.domain.User;
import org.onap.portalsdk.core.domain.support.Container;
import org.onap.portalsdk.core.domain.support.Element;
import org.onap.portalsdk.core.domain.support.Position;
import org.onap.portalsdk.core.domain.support.Size;
-import org.onap.portalsdk.core.restful.client.SharedContextRestClient;
-import org.onap.portalsdk.core.web.support.UserUtils;
public class ContainerTest {
@InjectMocks
Container container = new Container();
- @Mock
- private SharedContextRestClient sharedContextRestClient;
@Before
public void setup() {
User user = new User();
- @Mock
- UserUtils userUtils = new UserUtils();
-
private static final double DELTA = 1e-15;
public Container mockContainer(){
*
*
*/
-package org.onap.portalsdk.domain.support;
+package org.onap.portalsdk.core.domain.support;
import static org.junit.Assert.assertEquals;
*
*
*/
-package org.onap.portalsdk.domain.support;
+package org.onap.portalsdk.core.domain.support;
import static org.junit.Assert.assertEquals;
*
*
*/
-package org.onap.portalsdk.domain.support;
+package org.onap.portalsdk.core.domain.support;
import static org.junit.Assert.assertEquals;
*
*
*/
-package org.onap.portalsdk.domain.support;
+package org.onap.portalsdk.core.domain.support;
import static org.junit.Assert.assertEquals;
*
*
*/
-package org.onap.portalsdk.domain.support;
+package org.onap.portalsdk.core.domain.support;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
import org.junit.Test;
import org.onap.portalsdk.core.domain.support.FusionCommand;
*
*
*/
-package org.onap.portalsdk.domain.support;
+package org.onap.portalsdk.core.domain.support;
import static org.junit.Assert.assertEquals;
*
*
*/
-package org.onap.portalsdk.domain.support;
+package org.onap.portalsdk.core.domain.support;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import org.junit.Test;
-import org.onap.portalsdk.core.domain.support.DomainVo;
import org.onap.portalsdk.core.domain.support.NameValueId;
public class NameValueIdTest {
*
*
*/
-package org.onap.portalsdk.domain.support;
+package org.onap.portalsdk.core.domain.support;
import static org.junit.Assert.assertEquals;
*
*
*/
-package org.onap.portalsdk.domain.support;
+package org.onap.portalsdk.core.domain.support;
import static org.junit.Assert.assertEquals;
<parent>
<groupId>org.onap.portal.sdk</groupId>
<artifactId>epsdk-project</artifactId>
- <version>2.2.0-SNAPSHOT</version>
+ <version>2.4.0-SNAPSHOT</version>
</parent>
<!-- GroupId is inherited from parent -->
<artifactId>log4j</artifactId>
</exclusion>
<exclusion>
- <groupId>xerces</groupId>
- <artifactId>xercesImpl</artifactId>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
</exclusion>
<exclusion>
- <groupId>xalan</groupId>
- <artifactId>xalan</artifactId>
+ <groupId>xalan</groupId>
+ <artifactId>xalan</artifactId>
</exclusion>
<exclusion>
- <groupId>commons-beanutils</groupId>
- <artifactId>commons-beanutils-core</artifactId>
+ <groupId>commons-beanutils</groupId>
+ <artifactId>commons-beanutils-core</artifactId>
</exclusion>
<exclusion>
- <groupId>commons-httpclient</groupId>
- <artifactId>commons-httpclient</artifactId>
+ <groupId>commons-httpclient</groupId>
+ <artifactId>commons-httpclient</artifactId>
</exclusion>
<exclusion>
<groupId>org.beanshell</groupId>
<parent>
<groupId>org.onap.portal.sdk</groupId>
<artifactId>epsdk-project</artifactId>
- <version>2.2.0-SNAPSHOT</version>
+ <version>2.4.0-SNAPSHOT</version>
</parent>
-
+
<groupId>org.onap.portal.sdk</groupId>
<artifactId>epsdk-music</artifactId>
- <version>2.2.0-SNAPSHOT</version>
+ <version>2.4.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>ONAP Portal SDK Music</name>
</exclusions>
</dependency>
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>javax.servlet-api</artifactId>
+ <version>3.0.1</version>
+ <scope>provided</scope>
+ </dependency>
+
<!-- Music -->
<dependency>
<groupId>org.onap.music</groupId>
<artifactId>MUSIC</artifactId>
<version>2.5.3</version>
- </dependency>
-
+ </dependency>
+
<!-- Mapper -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
sessions.put(id, musicSession);
try {
MusicService.setMetaAttribute(musicSession);
+ MusicService.cleanUpMusic();
} catch (Exception e) {
logger.error(EELFLoggerDelegate.errorLogger, "setMetaAttribute failed with id " + id, e);
}
--- /dev/null
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal SDK
+ * ===================================================================
+ * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software 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.
+ *
+ * ============LICENSE_END============================================
+ *
+ *.
+ */
+
+package org.onap.portalapp.music.filter;
+
+import java.io.IOException;
+
+import javax.servlet.FilterChain;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+
+import org.onap.music.eelf.logging.EELFLoggerDelegate;
+import org.onap.portalapp.music.util.MusicUtil;
+import org.springframework.web.filter.DelegatingFilterProxy;
+
+public class MusicSessionRepositoryFilter extends DelegatingFilterProxy{
+ private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(MusicUtil.class);
+
+ @Override
+ public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)
+ throws ServletException, IOException {
+ try{
+ if (request instanceof HttpServletRequest) {
+ String path = ((HttpServletRequest)request).getRequestURI().substring(((HttpServletRequest) request).getContextPath().length());
+ if(MusicUtil.isExcludedApi(path))
+ request.setAttribute("org.springframework.session.web.http.SessionRepositoryFilter.FILTERED", Boolean.TRUE);
+ }
+ }catch(Exception e){
+ logger.error(EELFLoggerDelegate.errorLogger, "Failed to check the exclude apis ", e);
+ }
+ super.doFilter(request, response, filterChain);
+ }
+}
package org.onap.portalapp.music.service;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import org.onap.music.datastore.PreparedQueryObject;
import org.springframework.web.client.RestTemplate;
import com.datastax.driver.core.ResultSet;
+import com.datastax.driver.core.Row;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
path.append("/");
return path.toString();
}
+
+ /**
+ * Get a list of sessions that need to be cleaned up
+ *
+ * @return List<String>
+ */
+ private static List<String> getSessionToBeDeleted(){
+ logger.debug(EELFLoggerDelegate.debugLogger, "initial getSessionToBeDeleted ...");
+
+ PreparedQueryObject queryObject = new PreparedQueryObject();
+ ResultSet result = null;
+ List<String> sessionIDList = new ArrayList<>();
+ DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
+ StringBuilder querySB = new StringBuilder();
+ String cleanUpThreshold = MusicProperties.getProperty(MusicProperties.MUSIC_CLEAN_UP_THRESHOLD); //Clean up sessions that's cleanUpThreshold hours ago
+ Date dateForCleanup = new Date(System.currentTimeMillis() - 3600 * 1000 * Integer.valueOf(cleanUpThreshold)); // Get the threshold date that needs to be clean up
+ String dateForCleanupCondition = dateFormat.format(dateForCleanup);
+ querySB.append("SELECT ").append(MusicProperties.PRIMARY_ID).append(" FROM ").append(musicKeySpace)
+ .append(".").append(getTableName(true)).append(" WHERE ").append(MusicProperties.LAST_ACCESS_TIME)
+ .append("< ? ").append(" ALLOW FILTERING");
+ queryObject.appendQueryString(querySB.toString());
+ queryObject.addValue(dateForCleanupCondition);
+
+ try{
+ if (isAtomicGet)
+ result = MusicCore.atomicGet(musicKeySpace, musicMetaTable, null, queryObject);
+ else
+ result = MusicCore.get(queryObject);
+ Row row = result.one();
+ while(row!=null){
+ sessionIDList.add(row.get(MusicProperties.PRIMARY_ID, String.class));
+ row = result.one();
+ }
+ }catch(Exception e){
+ logger.error(EELFLoggerDelegate.errorLogger, "Error while cleaning up music tables" , e);
+ }
+ return sessionIDList;
+ }
+
+ /**
+ * Remove session data in music base on the defined frequency
+ *
+ * @return List<String>
+ */
+ public static void cleanUpMusic() {
+ boolean timeToCleanUp = MusicUtil.cleanUp(); // Decide whether to clean up or not
+ ReturnType result = null;
+ if(timeToCleanUp){
+ /**Getting a list of sessions that need to be cleaned up*/
+ List<String> sessionIDList = getSessionToBeDeleted();
+ if(sessionIDList!=null || sessionIDList.size()!=0){
+ StringBuilder sessionIDListCondition = new StringBuilder();
+ sessionIDListCondition.append("('");
+ for(String s : sessionIDList){
+ sessionIDListCondition.append(s);
+ sessionIDListCondition.append("','");
+ }
+ sessionIDListCondition.deleteCharAt(sessionIDListCondition.length()-1);
+ sessionIDListCondition.deleteCharAt(sessionIDListCondition.length()-1);
+ sessionIDListCondition.append(")");
+ StringBuilder querySB = new StringBuilder();
+ PreparedQueryObject queryObject = new PreparedQueryObject();
+ /**Deleting attributes table**/
+ querySB = new StringBuilder();
+ queryObject = new PreparedQueryObject();
+ querySB.append("DELETE FROM ").append(musicKeySpace)
+ .append(".").append(getTableName(false)).append(" WHERE ").append(MusicProperties.PRIMARY_ID)
+ .append(" in ").append(sessionIDListCondition);
+ queryObject.appendQueryString(querySB.toString());
+ try{
+ if (isAtomicPut)
+ result = MusicCore.atomicPut(musicKeySpace, null, null, queryObject, null);
+ else
+ result = MusicCore.eventualPut(queryObject);
+ }catch(Exception e){
+ logger.error(EELFLoggerDelegate.errorLogger, "Error while cleaning up music attributes tables" , e);
+ }
+ logger.debug(EELFLoggerDelegate.debugLogger, "Music sessions have been cleaned up !");
+
+ /**Deleting meta table**/
+ logger.debug(EELFLoggerDelegate.debugLogger, "Cleaning up meta table ...");
+ querySB = new StringBuilder();
+ queryObject = new PreparedQueryObject();
+ querySB.append("DELETE FROM ").append(musicKeySpace)
+ .append(".").append(getTableName(true)).append(" WHERE ").append(MusicProperties.PRIMARY_ID)
+ .append(" in ").append(sessionIDListCondition);
+ queryObject.appendQueryString(querySB.toString());
+ try{
+ if (isAtomicPut)
+ result = MusicCore.atomicPut(musicKeySpace, null, null, queryObject, null);
+ else
+ result = MusicCore.eventualPut(queryObject);
+ }catch(Exception e){
+ logger.error(EELFLoggerDelegate.errorLogger, "Error while cleaning up music meta tables" , e);
+ }
+
+ logger.debug(EELFLoggerDelegate.debugLogger, "Cleaned up attributes table ... ");
+ }else{
+ logger.debug(EELFLoggerDelegate.debugLogger, "No Session needs to be cleaned up");
+ }
+
+ }
+ }
}
--- /dev/null
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal SDK
+ * ===================================================================
+ * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software 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.
+ *
+ * ============LICENSE_END============================================
+ *
+ *.
+ */
+
+package org.onap.portalapp.music.util;
+
+import java.util.Date;
+
+public class MusicCleanUp {
+ private static volatile MusicCleanUp musicCleanUp = new MusicCleanUp();
+ // private constructor restricted to this class itself
+ private MusicCleanUp(){
+ }
+
+ private Date lastCleanUpTime = new Date();
+
+ public static MusicCleanUp getInstance(){
+ return musicCleanUp;
+ }
+
+ public Date getLastCleanUpTime(){
+ return lastCleanUpTime;
+ }
+
+ public synchronized void updateLastCleanUpTimeToCurrent() {
+ lastCleanUpTime = new Date();
+ }
+}
public static final String MUSIC_ATOMIC_POST = "music.atomic.post";
+ public static final String MUSIC_EXCLUDE_API = "music.exclude.api";
+
+ public static final String MUSIC_CLEAN_UP_FREQUENCY = "music.cleanup.frequency";
+
+ public static final String MUSIC_CLEAN_UP_THRESHOLD = "music.cleanup.threshold";
+
public static final String SESSION_MAX_INACTIVE_INTERVAL_SECONDS = "music.session.max.inactive.interval.seconds";
public static final String ATTRIBUTE_NAME = "ATTRIBUTE_NAME";
import java.time.Duration;
import java.time.Instant;
import java.util.Arrays;
+import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import java.util.zip.GZIPInputStream;
private static String atomicPut = MusicProperties.getProperty(MusicProperties.MUSIC_ATOMIC_PUT);
private static String atomicGet = MusicProperties.getProperty(MusicProperties.MUSIC_ATOMIC_GET);
private static String cached = MusicProperties.getProperty(MusicProperties.MUSIC_CACHE);
+ private static String cleanUpFreq = MusicProperties.getProperty(MusicProperties.MUSIC_CLEAN_UP_FREQUENCY);
private static String musicSerializeCompress = MusicProperties.getProperty(MusicProperties.MUSIC_SERIALIZE_COMPRESS);
public static boolean isSessionMetaAttr(String key){
return sessionAttrNameSet.contains(key);
musicSession.setMaxInactiveInterval(Duration.parse(row.getString("max_inactive_interval")));
return musicSession;
}
+
+ public static Set<String> getMusicExcludedAPI(){
+ Set<String> excludedApiSet = new HashSet<>();
+ String musicExcludedApi = MusicProperties.getProperty(MusicProperties.MUSIC_EXCLUDE_API);
+ String[] musicExcludedApiArray = musicExcludedApi.split(",");
+ if(musicExcludedApiArray.length>0){
+ for(String str : musicExcludedApiArray){
+ excludedApiSet.add(str.trim());
+ }
+ }
+ return excludedApiSet;
+ }
+
+ public static boolean isExcludedApi(String api){
+ Set<String> excludedApiSet = getMusicExcludedAPI();
+ return excludedApiSet.contains(api);
+ }
public static boolean isMusicSerializeCompress(){
if(musicSerializeCompress==null){
}
return cached.trim().equalsIgnoreCase("true");
}
+
+ public static int convertHoursToMillSec(int hour){
+ return hour*3600000;
+ }
+
+ public static boolean cleanUp(){
+ Date lastCleanUpDate = MusicCleanUp.getInstance().getLastCleanUpTime();
+ if(lastCleanUpDate==null)
+ return false;
+ else{
+ int cleanUpDurationMili = convertHoursToMillSec(Integer.valueOf(cleanUpFreq));
+ Date currentTime = new Date();
+ long diffInMillies = Math.abs(currentTime.getTime() - lastCleanUpDate.getTime());
+ if(diffInMillies > cleanUpDurationMili){
+ MusicCleanUp.getInstance().updateLastCleanUpTimeToCurrent();
+ return true;
+ }
+ else
+ return false;
+ }
+ }
}
<parent>
<groupId>org.onap.portal.sdk</groupId>
<artifactId>epsdk-project</artifactId>
- <version>2.2.0-SNAPSHOT</version>
+ <version>2.4.0-SNAPSHOT</version>
</parent>
<!-- GroupId is inherited from parent -->
*/
package org.onap.portalsdk.workflow.models;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
import org.junit.Test;
-import org.onap.portalsdk.core.domain.support.NameValueId;
public class WorkflowTest {
<!-- Portal SDK Maven parent project -->
<groupId>org.onap.portal.sdk</groupId>
<artifactId>epsdk-project</artifactId>
- <version>2.2.0-SNAPSHOT</version>
+ <version>2.4.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>portal-sdk</name>
<url>https://wiki.onap.org/display/DW/Portal</url>
<module>epsdk-fw</module>
<module>epsdk-core</module>
<module>epsdk-analytics</module>
+ <module>epsdk-domain</module>
+ <module>epsdk-aaf</module>
<module>epsdk-music</module>
<module>epsdk-workflow</module>
<module>epsdk-app-common</module>