This is an automated email from the ASF dual-hosted git repository. machristie pushed a commit to branch registry-refactoring in repository https://gitbox.apache.org/repos/asf/airavata.git
commit 9599a91052e0a61f884c990a318bb86454f5b334 Author: Abhiit Karanjkar <[email protected]> AuthorDate: Fri Nov 18 20:15:59 2016 -0500 User Profile CPI Server Merge conflicts: discarded all changes to airavata-api/airavata-model-utils/pom.xml --- .../airavata/common/utils/ApplicationSettings.java | 8 ++ .../org/apache/airavata/common/utils/IServer.java | 26 ++-- .../airavata/common/utils/ServerSettings.java | 6 + .../src/main/resources/airavata-server.properties | 8 ++ .../core/repositories/AbstractRepository.java | 32 ++++- .../workspacecatalog/UserProfileRepository.java | 88 +++++++++++++ .../registry/core/utils/QueryConstants.java | 22 ++++ modules/user-profile/.project | 17 +++ .../.settings/org.eclipse.core.resources.prefs | 2 + .../.settings/org.eclipse.m2e.core.prefs | 4 + modules/user-profile/pom.xml | 2 + modules/user-profile/user-profile-core/.classpath | 26 ++++ modules/user-profile/user-profile-core/.project | 23 ++++ .../.settings/org.eclipse.core.resources.prefs | 4 + .../.settings/org.eclipse.jdt.core.prefs | 5 + .../.settings/org.eclipse.m2e.core.prefs | 4 + .../user-profile/user-profile-service/.classpath | 26 ++++ modules/user-profile/user-profile-service/.project | 23 ++++ .../.settings/org.eclipse.core.resources.prefs | 3 + .../.settings/org.eclipse.jdt.core.prefs | 5 + .../.settings/org.eclipse.m2e.core.prefs | 4 + modules/user-profile/user-profile-service/pom.xml | 27 ++++ .../server/UserProfileHandler.java | 83 ++++++++++++ .../server/UserProfileServer.java | 141 +++++++++++++++++++++ modules/user-profile/user-profile-stubs/pom.xml | 5 + .../airavata/userprofile/crude/cpi/Test.java | 14 ++ .../component-cpis/user-profile-crud-cpi.thrift | 2 +- 27 files changed, 590 insertions(+), 20 deletions(-) diff --git a/modules/commons/src/main/java/org/apache/airavata/common/utils/ApplicationSettings.java b/modules/commons/src/main/java/org/apache/airavata/common/utils/ApplicationSettings.java index bbf5102..c3382e8 100644 --- a/modules/commons/src/main/java/org/apache/airavata/common/utils/ApplicationSettings.java +++ b/modules/commons/src/main/java/org/apache/airavata/common/utils/ApplicationSettings.java @@ -360,9 +360,17 @@ public class ApplicationSettings { return getSetting("credential.store.server.host"); } + public static String getUserProfileServerHost() throws ApplicationSettingsException { + return getSetting(ServerSettings.USER_PROFILE_SERVER_HOST); + } + public static String getCredentialStoreServerPort() throws ApplicationSettingsException { return getSetting("credential.store.server.port"); } + + public static String getUserProfileServerPort() throws ApplicationSettingsException { + return getSetting(ServerSettings.USER_PROFILE_SERVER_PORT); + } public static String getCredentialStoreNotifierEnabled() throws ApplicationSettingsException { return getSetting("notifier.enabled"); } diff --git a/modules/commons/src/main/java/org/apache/airavata/common/utils/IServer.java b/modules/commons/src/main/java/org/apache/airavata/common/utils/IServer.java index ad5a70f..f1807fc 100644 --- a/modules/commons/src/main/java/org/apache/airavata/common/utils/IServer.java +++ b/modules/commons/src/main/java/org/apache/airavata/common/utils/IServer.java @@ -23,20 +23,20 @@ import java.util.Calendar; import java.util.Date; public interface IServer { - public enum ServerStatus{ - STOPING, - STOPPED, - STARTING, - STARTED, - FAILED; - public void updateTime(){ - now=Calendar.getInstance().getTime(); + public enum ServerStatus{ + STOPING, + STOPPED, + STARTING, + STARTED, + FAILED; + public void updateTime(){ + now=Calendar.getInstance().getTime(); + } + private Date now; + public Date getTime(){ + return now; + } } - private Date now; - public Date getTime(){ - return now; - } - } public String getName(); public String getVersion(); public void start() throws Exception; diff --git a/modules/commons/src/main/java/org/apache/airavata/common/utils/ServerSettings.java b/modules/commons/src/main/java/org/apache/airavata/common/utils/ServerSettings.java index f5a44d7..03da208 100644 --- a/modules/commons/src/main/java/org/apache/airavata/common/utils/ServerSettings.java +++ b/modules/commons/src/main/java/org/apache/airavata/common/utils/ServerSettings.java @@ -57,6 +57,12 @@ public class ServerSettings extends ApplicationSettings { // Credential Store constants public static final String CREDENTIAL_SERVER_HOST = "credential.store.server.host"; public static final String CREDENTIAL_SERVER_PORT = "credential.store.server.port"; + + //User Profile onstants + + public static final String USER_PROFILE_SERVER_HOST = "user.profile.server.host"; + public static final String USER_PROFILE_SERVER_PORT = "user.profile.server.port"; + // Zookeeper + curator constants public static final String EMBEDDED_ZK = "embedded.zk"; public static final String ZOOKEEPER_SERVER_CONNECTION = "zookeeper.server.connection"; diff --git a/modules/configuration/server/src/main/resources/airavata-server.properties b/modules/configuration/server/src/main/resources/airavata-server.properties index 9db7893..e6b494f 100644 --- a/modules/configuration/server/src/main/resources/airavata-server.properties +++ b/modules/configuration/server/src/main/resources/airavata-server.properties @@ -221,6 +221,14 @@ credential.store.server.host=localhost credential.store.server.port=8960 credentialstore=org.apache.airavata.credential.store.server.CredentialStoreServer + +########################################################################### +# User Profile module Configuration +########################################################################### +user.profile.server.host=localhost +user.profile.server.port=8961 +user_profile=com.apache.airavata.user.profile.server.UserProfileServer + # these properties used by credential store email notifications email.server=smtp.googlemail.com email.server.port=465 diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/AbstractRepository.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/AbstractRepository.java index bc3a9da..a83928d 100644 --- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/AbstractRepository.java +++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/AbstractRepository.java @@ -26,8 +26,10 @@ import org.dozer.Mapper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import javax.persistence.Query; import java.util.ArrayList; import java.util.List; +import java.util.Map; public abstract class AbstractRepository<T, E, Id> { private final static Logger logger = LoggerFactory.getLogger(AbstractRepository.class); @@ -35,23 +37,23 @@ public abstract class AbstractRepository<T, E, Id> { private Class<T> thriftGenericClass; private Class<E> dbEntityGenericClass; - public AbstractRepository(Class<T> thriftGenericClass, Class<E> dbEntityGenericClass){ + public AbstractRepository(Class<T> thriftGenericClass, Class<E> dbEntityGenericClass) { this.thriftGenericClass = thriftGenericClass; this.dbEntityGenericClass = dbEntityGenericClass; } - public T create(T t){ + public T create(T t) { return update(t); } - public T update(T t){ + public T update(T t) { Mapper mapper = ObjectMapperSingleton.getInstance(); E entity = mapper.map(t, dbEntityGenericClass); E persistedCopy = JPAUtils.execute(entityManager -> entityManager.merge(entity)); return mapper.map(persistedCopy, thriftGenericClass); } - public boolean delete(Id id){ + public boolean delete(Id id) { JPAUtils.execute(entityManager -> { E entity = entityManager.find(dbEntityGenericClass, id); entityManager.remove(entity); @@ -60,14 +62,14 @@ public abstract class AbstractRepository<T, E, Id> { return true; } - public T get(Id id){ + public T get(Id id) { E entity = JPAUtils.execute(entityManager -> entityManager .find(dbEntityGenericClass, id)); Mapper mapper = ObjectMapperSingleton.getInstance(); return mapper.map(entity, thriftGenericClass); } - public List<T> select(String query, int limit, int offset){ + public List<T> select(String query, int limit, int offset) { List resultSet = (List) JPAUtils.execute(entityManager -> entityManager.createQuery(query).setFirstResult(offset) .setMaxResults(offset).getResultList()); Mapper mapper = ObjectMapperSingleton.getInstance(); @@ -75,4 +77,22 @@ public abstract class AbstractRepository<T, E, Id> { resultSet.stream().forEach(rs -> gatewayList.add(mapper.map(rs, thriftGenericClass))); return gatewayList; } + + public List<T> select(String query, int limit, int offset, Map<String, Object> queryParams) { + List resultSet = (List) JPAUtils.execute(entityManager -> { + Query jpaQuery = entityManager.createQuery(query); + + for (Map.Entry<String, Object> entry : queryParams.entrySet()) { + + jpaQuery.setParameter(entry.getKey(), entry.getValue()); + } + + return jpaQuery.setFirstResult(offset).setMaxResults(limit).getResultList(); + + }); + Mapper mapper = ObjectMapperSingleton.getInstance(); + List<T> gatewayList = new ArrayList<>(); + resultSet.stream().forEach(rs -> gatewayList.add(mapper.map(rs, thriftGenericClass))); + return gatewayList; + } } \ No newline at end of file diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/UserProfileRepository.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/UserProfileRepository.java new file mode 100644 index 0000000..7c5bd4b --- /dev/null +++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/UserProfileRepository.java @@ -0,0 +1,88 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * +*/ +package org.apache.airavata.registry.core.repositories.workspacecatalog; + +import org.apache.airavata.model.user.UserProfile; +import org.apache.airavata.registry.core.entities.workspacecatalog.UserProfileEntity; +import org.apache.airavata.registry.core.repositories.AbstractRepository; +import org.apache.airavata.registry.core.utils.QueryConstants; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class UserProfileRepository extends AbstractRepository<UserProfile, UserProfileEntity, String> { + private final static Logger logger = LoggerFactory.getLogger(UserProfileRepository.class); + + public UserProfileRepository(Class<UserProfile> thriftGenericClass, Class<UserProfileEntity> dbEntityGenericClass) { + super(thriftGenericClass, dbEntityGenericClass); + } + + @Override + public List<UserProfile> select(String query, int offset, int limit) { + throw new UnsupportedOperationException("Due to performance overheads this method is not supported. Instead use" + + " UserProfileSummaryRepository"); + } + + public UserProfile getUserProfileByIdAndGateWay(String userId, String gatewayId) { + + UserProfile userProfile = null; + + Map<String, Object> queryParam = new HashMap<String, Object>(); + queryParam.put(UserProfile._Fields.USER_ID.getFieldName(), userId); + queryParam.put(UserProfile._Fields.GATEWAY_ID.getFieldName(), gatewayId); + List<UserProfile> resultList = select(QueryConstants.FIND_USER_PROFILE_BY_USER_ID, 0, 1, queryParam); + + if (resultList != null && resultList.size() > 0) + userProfile = resultList.get(0); + + + return userProfile; + } + + public List<UserProfile> getAllUserProfilesInGateway(String gatewayId) { + + Map<String, Object> queryParam = new HashMap<String, Object>(); + queryParam.put(UserProfile._Fields.GATEWAY_ID.getFieldName(), gatewayId); + + List<UserProfile> resultList = select(QueryConstants.FIND_ALL_USER_PROFILES_BY_GATEWAY_ID, 0, 1, queryParam); + + return resultList; + } + + public UserProfile getUserProfileByNameAndGateWay(String name, String gatewayId) { + + UserProfile userProfile = null; + + Map<String, Object> queryParam = new HashMap<String, Object>(); + queryParam.put(UserProfile._Fields.USER_NAME.getFieldName(), name); + queryParam.put(UserProfile._Fields.GATEWAY_ID.getFieldName(), gatewayId); + List<UserProfile> resultList = select(QueryConstants.FIND_USER_PROFILE_BY_USER_NAME, 0, 1, queryParam); + + if (resultList != null && resultList.size() > 0) + userProfile = resultList.get(0); + + + return userProfile; + } +} \ No newline at end of file diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/utils/QueryConstants.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/utils/QueryConstants.java new file mode 100644 index 0000000..171317e --- /dev/null +++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/utils/QueryConstants.java @@ -0,0 +1,22 @@ +package org.apache.airavata.registry.core.utils; + +import org.apache.airavata.model.user.UserProfile; + +/** + * Created by abhij on 11/11/2016. + */ +public interface QueryConstants { + + + + String FIND_USER_PROFILE_BY_USER_ID = "SELECT u FROM UserProfileEntity u " + + "where u.userId LIKE :" + UserProfile._Fields.USER_ID.getFieldName() + " " + + "AND u.gatewayId LIKE :"+ UserProfile._Fields.GATEWAY_ID.getFieldName() + ""; + + String FIND_ALL_USER_PROFILES_BY_GATEWAY_ID = "SELECT u FROM UserProfileEntity u " + + "where u.gatewayId LIKE :"+ UserProfile._Fields.GATEWAY_ID.getFieldName() + ""; + + String FIND_USER_PROFILE_BY_USER_NAME = "SELECT u FROM UserProfileEntity u " + + "where u.userId LIKE :" + UserProfile._Fields.USER_NAME.getFieldName() + " " + + "AND u.gatewayId LIKE :"+ UserProfile._Fields.GATEWAY_ID.getFieldName() + ""; +} diff --git a/modules/user-profile/.project b/modules/user-profile/.project new file mode 100644 index 0000000..788ce56 --- /dev/null +++ b/modules/user-profile/.project @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>user-profile</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.m2e.core.maven2Builder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.m2e.core.maven2Nature</nature> + </natures> +</projectDescription> diff --git a/modules/user-profile/.settings/org.eclipse.core.resources.prefs b/modules/user-profile/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..99f26c0 --- /dev/null +++ b/modules/user-profile/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/<project>=UTF-8 diff --git a/modules/user-profile/.settings/org.eclipse.m2e.core.prefs b/modules/user-profile/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..f897a7f --- /dev/null +++ b/modules/user-profile/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/modules/user-profile/pom.xml b/modules/user-profile/pom.xml index 7f60f9c..37efc57 100644 --- a/modules/user-profile/pom.xml +++ b/modules/user-profile/pom.xml @@ -22,6 +22,8 @@ <packaging>pom</packaging> <modules> <module>user-profile-stubs</module> + <module>user-profile-service</module> + </modules> diff --git a/modules/user-profile/user-profile-core/.classpath b/modules/user-profile/user-profile-core/.classpath new file mode 100644 index 0000000..af1430b --- /dev/null +++ b/modules/user-profile/user-profile-core/.classpath @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" output="target/classes" path="src/main/java"> + <attributes> + <attribute name="optional" value="true"/> + <attribute name="maven.pomderived" value="true"/> + </attributes> + </classpathentry> + <classpathentry kind="src" output="target/test-classes" path="src/test/java"> + <attributes> + <attribute name="optional" value="true"/> + <attribute name="maven.pomderived" value="true"/> + </attributes> + </classpathentry> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"> + <attributes> + <attribute name="maven.pomderived" value="true"/> + </attributes> + </classpathentry> + <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"> + <attributes> + <attribute name="maven.pomderived" value="true"/> + </attributes> + </classpathentry> + <classpathentry kind="output" path="target/classes"/> +</classpath> diff --git a/modules/user-profile/user-profile-core/.project b/modules/user-profile/user-profile-core/.project new file mode 100644 index 0000000..e2dfe96 --- /dev/null +++ b/modules/user-profile/user-profile-core/.project @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>user-profile-core</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.m2e.core.maven2Builder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + <nature>org.eclipse.m2e.core.maven2Nature</nature> + </natures> +</projectDescription> diff --git a/modules/user-profile/user-profile-core/.settings/org.eclipse.core.resources.prefs b/modules/user-profile/user-profile-core/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..f9fe345 --- /dev/null +++ b/modules/user-profile/user-profile-core/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,4 @@ +eclipse.preferences.version=1 +encoding//src/main/java=UTF-8 +encoding//src/test/java=UTF-8 +encoding/<project>=UTF-8 diff --git a/modules/user-profile/user-profile-core/.settings/org.eclipse.jdt.core.prefs b/modules/user-profile/user-profile-core/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..714351a --- /dev/null +++ b/modules/user-profile/user-profile-core/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,5 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/modules/user-profile/user-profile-core/.settings/org.eclipse.m2e.core.prefs b/modules/user-profile/user-profile-core/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..f897a7f --- /dev/null +++ b/modules/user-profile/user-profile-core/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/modules/user-profile/user-profile-service/.classpath b/modules/user-profile/user-profile-service/.classpath new file mode 100644 index 0000000..af1430b --- /dev/null +++ b/modules/user-profile/user-profile-service/.classpath @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" output="target/classes" path="src/main/java"> + <attributes> + <attribute name="optional" value="true"/> + <attribute name="maven.pomderived" value="true"/> + </attributes> + </classpathentry> + <classpathentry kind="src" output="target/test-classes" path="src/test/java"> + <attributes> + <attribute name="optional" value="true"/> + <attribute name="maven.pomderived" value="true"/> + </attributes> + </classpathentry> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"> + <attributes> + <attribute name="maven.pomderived" value="true"/> + </attributes> + </classpathentry> + <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"> + <attributes> + <attribute name="maven.pomderived" value="true"/> + </attributes> + </classpathentry> + <classpathentry kind="output" path="target/classes"/> +</classpath> diff --git a/modules/user-profile/user-profile-service/.project b/modules/user-profile/user-profile-service/.project new file mode 100644 index 0000000..15b1016 --- /dev/null +++ b/modules/user-profile/user-profile-service/.project @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>user-profile-cpi</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.m2e.core.maven2Builder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + <nature>org.eclipse.m2e.core.maven2Nature</nature> + </natures> +</projectDescription> diff --git a/modules/user-profile/user-profile-service/.settings/org.eclipse.core.resources.prefs b/modules/user-profile/user-profile-service/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..e9441bb --- /dev/null +++ b/modules/user-profile/user-profile-service/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,3 @@ +eclipse.preferences.version=1 +encoding//src/main/java=UTF-8 +encoding/<project>=UTF-8 diff --git a/modules/user-profile/user-profile-service/.settings/org.eclipse.jdt.core.prefs b/modules/user-profile/user-profile-service/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..714351a --- /dev/null +++ b/modules/user-profile/user-profile-service/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,5 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/modules/user-profile/user-profile-service/.settings/org.eclipse.m2e.core.prefs b/modules/user-profile/user-profile-service/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..f897a7f --- /dev/null +++ b/modules/user-profile/user-profile-service/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/modules/user-profile/user-profile-service/pom.xml b/modules/user-profile/user-profile-service/pom.xml new file mode 100644 index 0000000..3e35699 --- /dev/null +++ b/modules/user-profile/user-profile-service/pom.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<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> + + <groupId>org.apache.airavata</groupId> + <artifactId>user-profile-service</artifactId> + <version>0.17-SNAPSHOT</version> + + <dependencies> + + <dependency> + <groupId>org.apache.airavata</groupId> + <artifactId>airavata-commons</artifactId> + <version>${project.version}</version> + </dependency> + + <dependency> + <groupId>org.apache.airavata</groupId> + <artifactId>user-profile-stubs</artifactId> + <version>${project.version}</version> + </dependency> + + </dependencies> + +</project> \ No newline at end of file diff --git a/modules/user-profile/user-profile-service/src/main/java/com.apache.airavata.user.profile/server/UserProfileHandler.java b/modules/user-profile/user-profile-service/src/main/java/com.apache.airavata.user.profile/server/UserProfileHandler.java new file mode 100644 index 0000000..8f04204 --- /dev/null +++ b/modules/user-profile/user-profile-service/src/main/java/com.apache.airavata.user.profile/server/UserProfileHandler.java @@ -0,0 +1,83 @@ +package com.apache.airavata.user.profile.server; + +import org.apache.airavata.model.user.UserProfile; +import org.apache.airavata.registry.api.exception.RegistryServiceException; +import org.apache.airavata.registry.core.entities.workspacecatalog.UserProfileEntity; +import org.apache.airavata.registry.core.repositories.workspacecatalog.UserProfileRepository; +import org.apache.airavata.userprofile.crude.cpi.UserProfileCrudeService; +import org.apache.thrift.TException; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Created by Airavata on 11/11/2016. + */ +public class UserProfileHandler implements UserProfileCrudeService.Iface { + + private UserProfileRepository userProfileRepository; + + public UserProfileHandler() { + + userProfileRepository = new UserProfileRepository(UserProfile.class, UserProfileEntity.class); + } + + public String addUserProfile(UserProfile userProfile) throws RegistryServiceException, TException { + + userProfileRepository.create(userProfile); + + if (null != userProfile) + return userProfile.getUserId(); + + return null; + } + + public boolean updateUserProfile(UserProfile userProfile) throws RegistryServiceException, TException { + + try { + userProfileRepository.update(userProfile); + } catch (Exception e) { + + return false; + } + + return true; + } + + public UserProfile getUserProfileById(String userId, String gatewayId) throws RegistryServiceException, TException { + + + UserProfile userProfile = userProfileRepository.getUserProfileByIdAndGateWay(userId, gatewayId); + + return userProfile; + } + + public boolean deleteUserProfile(String userId) throws RegistryServiceException, TException { + + boolean deleteResult = userProfileRepository.delete(userId); + + return deleteResult; + } + + public List<UserProfile> getAllUserProfilesInGateway(String gatewayId) throws RegistryServiceException, TException { + + List<UserProfile> usersInGateway = userProfileRepository.getAllUserProfilesInGateway(gatewayId); + return usersInGateway; + } + + public UserProfile getUserProfileByName(String userName, String gatewayId) throws RegistryServiceException, TException { + + UserProfile userProfile = userProfileRepository.getUserProfileByNameAndGateWay(userName, gatewayId); + return userProfile; + } + + public boolean doesUserExist(String userName, String gatewayId) throws RegistryServiceException, TException { + + UserProfile userProfile = userProfileRepository.getUserProfileByNameAndGateWay(userName, gatewayId); + + if(null != userProfile) + return true; + return false; + } +} diff --git a/modules/user-profile/user-profile-service/src/main/java/com.apache.airavata.user.profile/server/UserProfileServer.java b/modules/user-profile/user-profile-service/src/main/java/com.apache.airavata.user.profile/server/UserProfileServer.java new file mode 100644 index 0000000..5fb2ac2 --- /dev/null +++ b/modules/user-profile/user-profile-service/src/main/java/com.apache.airavata.user.profile/server/UserProfileServer.java @@ -0,0 +1,141 @@ +package com.apache.airavata.user.profile.server; + +import org.apache.airavata.common.utils.IServer; +import org.apache.airavata.common.utils.ServerSettings; +import org.apache.airavata.userprofile.crude.cpi.UserProfileCrudeService; +import org.apache.thrift.server.TServer; +import org.apache.thrift.server.TThreadPoolServer; +import org.apache.thrift.transport.TServerSocket; +import org.apache.thrift.transport.TServerTransport; +import org.apache.thrift.transport.TTransportException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.net.InetSocketAddress; +import java.util.Date; + +/** + * Created by abhij on 11/11/2016. + */ +public class UserProfileServer implements IServer { + + private final static Logger logger = LoggerFactory.getLogger(UserProfileServer.class); + + private static final String SERVER_NAME = "User Profile Server"; + private static final String SERVER_VERSION = "1.0"; + + private IServer.ServerStatus status; + private TServer server; + + public UserProfileServer() { + setStatus(IServer.ServerStatus.STOPPED); + } + + public void updateTime() { + + } + + public Date getTime() { + return null; + } + + public String getName() { + return SERVER_NAME; + } + + public String getVersion() { + return SERVER_VERSION; + } + + public void start() throws Exception { + + + try { + setStatus(ServerStatus.STARTING); + final int serverPort = Integer.parseInt(ServerSettings.getUserProfileServerPort()); + final String serverHost = ServerSettings.getUserProfileServerHost(); + UserProfileCrudeService.Processor processor = new UserProfileCrudeService.Processor(new UserProfileHandler()); + + TServerTransport serverTransport; + + if (serverHost == null) { + serverTransport = new TServerSocket(serverPort); + } else { + InetSocketAddress inetSocketAddress = new InetSocketAddress(serverHost, serverPort); + serverTransport = new TServerSocket(inetSocketAddress); + } + TThreadPoolServer.Args options = new TThreadPoolServer.Args(serverTransport); + options.minWorkerThreads = 30; + server = new TThreadPoolServer(options.processor(processor)); + + new Thread() { + public void run() { + server.serve(); + setStatus(ServerStatus.STOPPED); + logger.info("Credential store Server Stopped."); + } + }.start(); + new Thread() { + public void run() { + while (!server.isServing()) { + try { + Thread.sleep(500); + } catch (InterruptedException e) { + break; + } + } + if (server.isServing()) { + setStatus(ServerStatus.STARTED); + logger.info("Starting Credential store Server on Port " + serverPort); + logger.info("Listening to Credential store clients ...."); + } + } + }.start(); + } catch (TTransportException e) { + setStatus(ServerStatus.FAILED); + throw new Exception("Error while starting the credential store service", e); + } + } + + public void stop() throws Exception { + + if (server!=null && server.isServing()){ + setStatus(ServerStatus.STOPING); + server.stop(); + } + } + + public void restart() throws Exception { + + stop(); + start(); + } + + public void configure() throws Exception { + + } + + public ServerStatus getStatus() throws Exception { + return status; } + + private void setStatus(IServer.ServerStatus stat){ + status=stat; + status.updateTime(); + } + + public TServer getServer() { + return server; + } + + public void setServer(TServer server) { + this.server = server; + } + + public static void main(String[] args) { + try { + new UserProfileServer().start(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + } +} diff --git a/modules/user-profile/user-profile-stubs/pom.xml b/modules/user-profile/user-profile-stubs/pom.xml index 80ac86f..3f9bce8 100644 --- a/modules/user-profile/user-profile-stubs/pom.xml +++ b/modules/user-profile/user-profile-stubs/pom.xml @@ -26,5 +26,10 @@ <artifactId>airavata-data-models</artifactId> <version>${project.version}</version> </dependency> + <dependency> + <groupId>org.apache.airavata</groupId> + <artifactId>registry-refactoring</artifactId> + <version>${project.version}</version> + </dependency> </dependencies> </project> \ No newline at end of file diff --git a/modules/user-profile/user-profile-stubs/src/main/java/org/apache/airavata/userprofile/crude/cpi/Test.java b/modules/user-profile/user-profile-stubs/src/main/java/org/apache/airavata/userprofile/crude/cpi/Test.java new file mode 100644 index 0000000..9914906 --- /dev/null +++ b/modules/user-profile/user-profile-stubs/src/main/java/org/apache/airavata/userprofile/crude/cpi/Test.java @@ -0,0 +1,14 @@ +package org.apache.airavata.userprofile.crude.cpi; + +import org.apache.airavata.model.user.UserProfile; + +/** + * Created by abhij on 11/17/2016. + */ +public class Test { + + public static void main(String args[]) { + + System.out.println(); + } +} diff --git a/thrift-interface-descriptions/component-cpis/user-profile-crud-cpi.thrift b/thrift-interface-descriptions/component-cpis/user-profile-crud-cpi.thrift index b3951d2..bea5ca7 100644 --- a/thrift-interface-descriptions/component-cpis/user-profile-crud-cpi.thrift +++ b/thrift-interface-descriptions/component-cpis/user-profile-crud-cpi.thrift @@ -45,7 +45,7 @@ service UserProfileCrudeService { bool deleteUserProfile(1: required string userId) throws (1:registry_api_errors.RegistryServiceException registryException); - list<user_profile_model.UserProfile> getAllUserProfilesInGateway (1: required string gatewayId) + list<user_profile_model.UserProfile> getAllUserProfilesInGateway (1: required string gatewayId, 2: required i32 offset, 3: required i32 limit) throws (1:registry_api_errors.RegistryServiceException registryException); user_profile_model.UserProfile getUserProfileByName(1: required string userName, 2: required string gatewayId) -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
