http://git-wip-us.apache.org/repos/asf/atlas/blob/b0ecc36a/omas-assetconsumer/src/main/java/org/apache/atlas/omas/assetconsumer/server/AssetConsumerRESTServices.java ---------------------------------------------------------------------- diff --git a/omas-assetconsumer/src/main/java/org/apache/atlas/omas/assetconsumer/server/AssetConsumerRESTServices.java b/omas-assetconsumer/src/main/java/org/apache/atlas/omas/assetconsumer/server/AssetConsumerRESTServices.java deleted file mode 100644 index 967be5a..0000000 --- a/omas-assetconsumer/src/main/java/org/apache/atlas/omas/assetconsumer/server/AssetConsumerRESTServices.java +++ /dev/null @@ -1,1057 +0,0 @@ -/* - * 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 - * <p/> - * http://www.apache.org/licenses/LICENSE-2.0 - * <p/> - * 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.atlas.omas.assetconsumer.server; - - -import org.apache.atlas.ocf.properties.CommentType; -import org.apache.atlas.omag.admin.server.OMAGAccessServiceRegistration; -import org.apache.atlas.omag.configuration.registration.AccessServiceDescription; -import org.apache.atlas.omag.configuration.registration.AccessServiceOperationalStatus; -import org.apache.atlas.omag.configuration.registration.AccessServiceRegistration; -import org.apache.atlas.omas.assetconsumer.admin.AssetConsumerAdmin; -import org.apache.atlas.omas.assetconsumer.ffdc.AssetConsumerErrorCode; -import org.apache.atlas.omas.assetconsumer.ffdc.exceptions.*; -import org.apache.atlas.omas.assetconsumer.server.properties.AssetConsumerOMASAPIResponse; -import org.apache.atlas.omas.assetconsumer.server.properties.ConnectionResponse; -import org.apache.atlas.omas.assetconsumer.server.properties.GUIDResponse; -import org.apache.atlas.omas.assetconsumer.server.properties.VoidResponse; -import org.apache.atlas.ocf.properties.StarRating; -import org.apache.atlas.omrs.metadatacollection.repositoryconnector.OMRSRepositoryConnector; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.web.bind.annotation.*; - - -/** - * The AssetConsumerRESTServices provides the server-side implementation of the AssetConsumer Open Metadata - * Assess Service (OMAS). This interface provides connections to assets and APIs for adding feedback - * on the asset. - */ -@RestController -@RequestMapping("/omag/omas/asset-consumer") -public class AssetConsumerRESTServices -{ - static private String accessServiceName = null; - static private OMRSRepositoryConnector repositoryConnector = null; - - private static final Logger log = LoggerFactory.getLogger(AssetConsumerRESTServices.class); - - /** - * Provide a connector to the REST Services. - * - * @param accessServiceName - name of this access service - * @param repositoryConnector - OMRS Repository Connector to the property server. - */ - static public void setRepositoryConnector(String accessServiceName, - OMRSRepositoryConnector repositoryConnector) - { - AssetConsumerRESTServices.accessServiceName = accessServiceName; - AssetConsumerRESTServices.repositoryConnector = repositoryConnector; - } - - /** - * Default constructor - */ - public AssetConsumerRESTServices() - { - AccessServiceDescription myDescription = AccessServiceDescription.ASSET_CONSUMER_OMAS; - AccessServiceRegistration myRegistration = new AccessServiceRegistration(myDescription.getAccessServiceCode(), - myDescription.getAccessServiceName(), - myDescription.getAccessServiceDescription(), - myDescription.getAccessServiceWiki(), - AccessServiceOperationalStatus.ENABLED, - AssetConsumerAdmin.class.getName()); - OMAGAccessServiceRegistration.registerAccessService(myRegistration); - } - - - - /** - * Returns the connection object corresponding to the supplied connection name. - * - * @param userId - String - userId of user making request. - * @param name - this may be the qualifiedName or displayName of the connection. - * - * @return ConnectionResponse or - * InvalidParameterException - one of the parameters is null or invalid. - * UnrecognizedConnectionNameException - there is no connection defined for this name. - * AmbiguousConnectionNameException - there is more than one connection defined for this name. - * PropertyServerException - there is a problem retrieving information from the property (metadata) server. - * UserNotAuthorizedException - the requesting user is not authorized to issue this request. - */ - @RequestMapping(method = RequestMethod.GET, path = "/{userId}/connections/by-name/{name}") - - ConnectionResponse getConnectionByName(@PathVariable String userId, - @PathVariable String name) - { - final String methodName = "getConnectionByName"; - - if (log.isDebugEnabled()) - { - log.debug("Calling method: " + methodName); - } - - ConnectionResponse response = new ConnectionResponse(); - - try - { - this.validateInitialization(methodName); - - ConnectionHandler connectionHandler = new ConnectionHandler(accessServiceName, - repositoryConnector); - - response.setConnection(connectionHandler.getConnectionByName(userId, name)); - } - catch (InvalidParameterException error) - { - captureInvalidParameterException(response, error); - } - catch (PropertyServerException error) - { - capturePropertyServerException(response, error); - } - catch (UnrecognizedConnectionNameException error) - { - captureUnrecognizedConnectionNameException(response, error); - } - catch (AmbiguousConnectionNameException error) - { - captureAmbiguousConnectionNameException(response, error); - } - catch (UserNotAuthorizedException error) - { - captureUserNotAuthorizedException(response, error); - } - - if (log.isDebugEnabled()) - { - log.debug("Returning from method: " + methodName + " with response: " + response.toString()); - } - - return response; - } - - - /** - * Returns the connection object corresponding to the supplied connection GUID. - * - * @param userId - String - userId of user making request. - * @param guid - the unique id for the connection within the property server. - * - * @return ConnectionResponse or - * InvalidParameterException - one of the parameters is null or invalid. - * UnrecognizedConnectionGUIDException - the supplied GUID is not recognized by the metadata repository. - * PropertyServerException - there is a problem retrieving information from the property (metadata) server. - * UserNotAuthorizedException - the requesting user is not authorized to issue this request. - */ - @RequestMapping(method = RequestMethod.GET, path = "/{userId}/connections/{guid}") - - public ConnectionResponse getConnectionByGUID(@PathVariable String userId, - @PathVariable String guid) - { - final String methodName = "getConnectionByGUID"; - - if (log.isDebugEnabled()) - { - log.debug("Calling method: " + methodName); - } - - ConnectionResponse response = new ConnectionResponse(); - - try - { - this.validateInitialization(methodName); - - ConnectionHandler connectionHandler = new ConnectionHandler(accessServiceName, - repositoryConnector); - - response.setConnection(connectionHandler.getConnectionByGUID(userId, guid)); - } - catch (InvalidParameterException error) - { - captureInvalidParameterException(response, error); - } - catch (PropertyServerException error) - { - capturePropertyServerException(response, error); - } - catch (UnrecognizedConnectionGUIDException error) - { - captureUnrecognizedConnectionGUIDException(response, error); - } - catch (UserNotAuthorizedException error) - { - captureUserNotAuthorizedException(response, error); - } - - if (log.isDebugEnabled()) - { - log.debug("Returning from method: " + methodName + " with response: " + response.toString()); - } - - return response; - } - - - /** - * Creates an Audit log record for the asset. This log record is stored in the Asset's Audit Log. - * - * @param userId - String - userId of user making request. - * @param guid - String - unique id for the asset. - * @param connectorInstanceId - String - (optional) id of connector in use (if any). - * @param connectionName - String - (optional) name of the connection (extracted from the connector). - * @param connectorType - String - (optional) type of connector in use (if any). - * @param contextId - String - (optional) function name, or processId of the activity that the caller is performing. - * @param message - log record content. - * - * @return VoidResponse or - * InvalidParameterException - one of the parameters is null or invalid. - * PropertyServerException - There is a problem adding the asset properties to - * the metadata repository. - * UserNotAuthorizedException - the requesting user is not authorized to issue this request. - */ - @RequestMapping(method = RequestMethod.POST, path = "/{userId}/assets/{guid}/log-record") - - public VoidResponse addLogMessageToAsset(@PathVariable String userId, - @PathVariable String guid, - @RequestParam(required = false) String connectorInstanceId, - @RequestParam(required = false) String connectionName, - @RequestParam(required = false) String connectorType, - @RequestParam(required = false) String contextId, - @RequestParam(required = false) String message) - { - final String methodName = "addLogMessageToAsset"; - - if (log.isDebugEnabled()) - { - log.debug("Calling method: " + methodName); - } - - VoidResponse response = new VoidResponse(); - - try - { - this.validateInitialization(methodName); - - AuditLogHandler auditLogHandler = new AuditLogHandler(accessServiceName, - repositoryConnector); - - auditLogHandler.addLogMessageToAsset(userId, - guid, - connectorInstanceId, - connectionName, - connectorType, - contextId, - message); - } - catch (InvalidParameterException error) - { - captureInvalidParameterException(response, error); - } - catch (PropertyServerException error) - { - capturePropertyServerException(response, error); - } - catch (UserNotAuthorizedException error) - { - captureUserNotAuthorizedException(response, error); - } - - if (log.isDebugEnabled()) - { - log.debug("Returning from method: " + methodName + " with response: " + response.toString()); - } - - return response; - } - - - /** - * Adds a new public tag to the asset's properties. - * - * @param userId - String - userId of user making request. - * @param guid - String - unique id for the asset. - * @param tagName - String - name of the tag. - * @param tagDescription - String - (optional) description of the tag. Setting a description, particularly in - * a public tag makes the tag more valuable to other users and can act as an embryonic - * glossary term. - * - * @return GUIDResponse or - * InvalidParameterException - one of the parameters is null or invalid. - * PropertyServerException - There is a problem adding the asset properties to - * the metadata repository. - * UserNotAuthorizedException - the requesting user is not authorized to issue this request. - */ - @RequestMapping(method = RequestMethod.POST, path = "/{userId}/assets/{guid}/tags") - - public GUIDResponse addTagToAsset(@PathVariable String userId, - @PathVariable String guid, - @RequestParam String tagName, - @RequestParam(required = false) String tagDescription) - { - final String methodName = "addTagToAsset"; - - if (log.isDebugEnabled()) - { - log.debug("Calling method: " + methodName); - } - - GUIDResponse response = new GUIDResponse(); - - try - { - this.validateInitialization(methodName); - - FeedbackHandler feedbackHandler = new FeedbackHandler(accessServiceName, - repositoryConnector); - - feedbackHandler.addTagToAsset(userId, guid, tagName, tagDescription); - } - catch (InvalidParameterException error) - { - captureInvalidParameterException(response, error); - } - catch (PropertyServerException error) - { - capturePropertyServerException(response, error); - } - catch (UserNotAuthorizedException error) - { - captureUserNotAuthorizedException(response, error); - } - - if (log.isDebugEnabled()) - { - log.debug("Returning from method: " + methodName + " with response: " + response.toString()); - } - - return response; - } - - - /** - * Adds a new private tag to the asset's properties. - * - * @param userId - String - userId of user making request. - * @param guid - String - unique id for the asset. - * @param tagName - String - name of the tag. - * @param tagDescription - String - (optional) description of the tag. Setting a description, particularly in - * a public tag makes the tag more valuable to other users and can act as an embryonic - * glossary term. - * - * @return GUIDResponse or - * InvalidParameterException - one of the parameters is null or invalid. - * PropertyServerException - There is a problem adding the asset properties to - * the metadata repository. - * UserNotAuthorizedException - the requesting user is not authorized to issue this request. - */ - @RequestMapping(method = RequestMethod.POST, path = "/{userId}/assets/{guid}/tags/private") - - public GUIDResponse addPrivateTagToAsset(@PathVariable String userId, - @PathVariable String guid, - @RequestParam String tagName, - @RequestParam(required = false) String tagDescription) - { - final String methodName = "addPrivateTagToAsset"; - - if (log.isDebugEnabled()) - { - log.debug("Calling method: " + methodName); - } - - GUIDResponse response = new GUIDResponse(); - - try - { - this.validateInitialization(methodName); - - FeedbackHandler feedbackHandler = new FeedbackHandler(accessServiceName, - repositoryConnector); - - feedbackHandler.addPrivateTagToAsset(userId, guid, tagName, tagDescription); - } - catch (InvalidParameterException error) - { - captureInvalidParameterException(response, error); - } - catch (PropertyServerException error) - { - capturePropertyServerException(response, error); - } - catch (UserNotAuthorizedException error) - { - captureUserNotAuthorizedException(response, error); - } - - if (log.isDebugEnabled()) - { - log.debug("Returning from method: " + methodName + " with response: " + response.toString()); - } - - return response; - } - - - /** - * Adds a rating to the asset. - * - * @param userId - String - userId of user making request. - * @param guid - String - unique id for the asset. - * @param starRating - StarRating - enumeration for none, one to five stars. - * @param review - String - user review of asset. - * - * @return GUIDResponse or - * InvalidParameterException - one of the parameters is null or invalid. - * PropertyServerException - There is a problem adding the asset properties to - * the metadata repository. - * UserNotAuthorizedException - the requesting user is not authorized to issue this request. - */ - @RequestMapping(method = RequestMethod.POST, path = "/{userId}/assets/{guid}/ratings/") - - public GUIDResponse addRatingToAsset(@PathVariable String userId, - @PathVariable String guid, - @RequestParam StarRating starRating, - @RequestParam String review) - { - final String methodName = "addRatingToAsset"; - - if (log.isDebugEnabled()) - { - log.debug("Calling method: " + methodName); - } - - GUIDResponse response = new GUIDResponse(); - - try - { - this.validateInitialization(methodName); - - FeedbackHandler feedbackHandler = new FeedbackHandler(accessServiceName, - repositoryConnector); - - feedbackHandler.addRatingToAsset(userId, guid, starRating, review); - } - catch (InvalidParameterException error) - { - captureInvalidParameterException(response, error); - } - catch (PropertyServerException error) - { - capturePropertyServerException(response, error); - } - catch (UserNotAuthorizedException error) - { - captureUserNotAuthorizedException(response, error); - } - - if (log.isDebugEnabled()) - { - log.debug("Returning from method: " + methodName + " with response: " + response.toString()); - } - - return response; - } - - - /** - * Adds a "Like" to the asset. - * - * @param userId - String - userId of user making request. - * @param guid - String - unique id for the asset - * - * @return GUIDResponse or - * InvalidParameterException - one of the parameters is null or invalid. - * PropertyServerException - There is a problem adding the asset properties to - * the metadata repository. - * UserNotAuthorizedException - the requesting user is not authorized to issue this request. - */ - @RequestMapping(method = RequestMethod.POST, path = "/{userId}/assets/{guid}/likes/") - - public GUIDResponse addLikeToAsset(@PathVariable String userId, - @PathVariable String guid) - { - final String methodName = "addLikeToAsset"; - - if (log.isDebugEnabled()) - { - log.debug("Calling method: " + methodName); - } - - GUIDResponse response = new GUIDResponse(); - - try - { - this.validateInitialization(methodName); - - FeedbackHandler feedbackHandler = new FeedbackHandler(accessServiceName, - repositoryConnector); - - feedbackHandler.addLikeToAsset(userId, guid); - } - catch (InvalidParameterException error) - { - captureInvalidParameterException(response, error); - } - catch (PropertyServerException error) - { - capturePropertyServerException(response, error); - } - catch (UserNotAuthorizedException error) - { - captureUserNotAuthorizedException(response, error); - } - - if (log.isDebugEnabled()) - { - log.debug("Returning from method: " + methodName + " with response: " + response.toString()); - } - - return response; - } - - - /** - * Adds a comment to the asset. - * - * @param userId - String - userId of user making request. - * @param guid - String - unique id for the asset. - * @param commentType - type of comment enum. - * @param commentText - String - the text of the comment. - * - * @return GUIDResponse or - * InvalidParameterException - one of the parameters is null or invalid. - * PropertyServerException - There is a problem adding the asset properties to - * the metadata repository. - * UserNotAuthorizedException - the requesting user is not authorized to issue this request. - */ - @RequestMapping(method = RequestMethod.POST, path = "/{userId}/assets/{guid}/comments/") - - public GUIDResponse addCommentToAsset(@PathVariable String userId, - @PathVariable String guid, - @RequestParam CommentType commentType, - @RequestParam String commentText) - { - final String methodName = "addCommentToAsset"; - - if (log.isDebugEnabled()) - { - log.debug("Calling method: " + methodName); - } - - GUIDResponse response = new GUIDResponse(); - - try - { - this.validateInitialization(methodName); - - FeedbackHandler feedbackHandler = new FeedbackHandler(accessServiceName, - repositoryConnector); - - feedbackHandler.addCommentToAsset(userId, guid, commentType, commentText); - } - catch (InvalidParameterException error) - { - captureInvalidParameterException(response, error); - } - catch (PropertyServerException error) - { - capturePropertyServerException(response, error); - } - catch (UserNotAuthorizedException error) - { - captureUserNotAuthorizedException(response, error); - } - - if (log.isDebugEnabled()) - { - log.debug("Returning from method: " + methodName + " with response: " + response.toString()); - } - - return response; - } - - - /** - * Adds a comment to the asset. - * - * @param userId - String - userId of user making request. - * @param commentGUID - String - unique id for an existing comment. Used to add a reply to a comment. - * @param commentType - type of comment enum. - * @param commentText - String - the text of the comment. - * - * @return GUIDResponse or - * InvalidParameterException - one of the parameters is null or invalid. - * PropertyServerException - There is a problem adding the asset properties to - * the metadata repository. - * UserNotAuthorizedException - the requesting user is not authorized to issue this request. - */ - @RequestMapping(method = RequestMethod.POST, path = "/{userId}/comments/{commentGUID}/reply") - - public GUIDResponse addCommentReply(@PathVariable String userId, - @PathVariable String commentGUID, - @RequestParam CommentType commentType, - @RequestParam String commentText) - { - final String methodName = "addCommentReply"; - - if (log.isDebugEnabled()) - { - log.debug("Calling method: " + methodName); - } - - GUIDResponse response = new GUIDResponse(); - - try - { - this.validateInitialization(methodName); - - FeedbackHandler feedbackHandler = new FeedbackHandler(accessServiceName, - repositoryConnector); - - feedbackHandler.addCommentReply(userId, commentGUID, commentType, commentText); - } - catch (InvalidParameterException error) - { - captureInvalidParameterException(response, error); - } - catch (PropertyServerException error) - { - capturePropertyServerException(response, error); - } - catch (UserNotAuthorizedException error) - { - captureUserNotAuthorizedException(response, error); - } - - if (log.isDebugEnabled()) - { - log.debug("Returning from method: " + methodName + " with response: " + response.toString()); - } - - return response; - } - - - /** - * Removes a tag from the asset that was added by this user. - * - * @param userId - String - userId of user making request. - * @param guid - String - unique id for the tag. - * - * @return VoidResponse or - * InvalidParameterException - one of the parameters is null or invalid. - * PropertyServerException - There is a problem updating the asset properties in - * the metadata repository. - * UserNotAuthorizedException - the requesting user is not authorized to issue this request. - */ - @RequestMapping(method = RequestMethod.PATCH, path = "/{userId}/tags/{guid}/delete") - - public VoidResponse removeTag(@PathVariable String userId, - @PathVariable String guid) - { - final String methodName = "removeTag"; - - if (log.isDebugEnabled()) - { - log.debug("Calling method: " + methodName); - } - - VoidResponse response = new VoidResponse(); - - try - { - this.validateInitialization(methodName); - - FeedbackHandler feedbackHandler = new FeedbackHandler(accessServiceName, - repositoryConnector); - - feedbackHandler.removeTagFromAsset(userId, guid); - } - catch (InvalidParameterException error) - { - captureInvalidParameterException(response, error); - } - catch (PropertyServerException error) - { - capturePropertyServerException(response, error); - } - catch (UserNotAuthorizedException error) - { - captureUserNotAuthorizedException(response, error); - } - - if (log.isDebugEnabled()) - { - log.debug("Returning from method: " + methodName + " with response: " + response.toString()); - } - - return response; - } - - - /** - * Removes a tag from the asset that was added by this user. - * - * @param userId - String - userId of user making request. - * @param guid - String - unique id for the tag. - * - * @return VoidResponse or - * InvalidParameterException - one of the parameters is null or invalid. - * PropertyServerException - There is a problem updating the asset properties in - * the metadata repository. - * UserNotAuthorizedException - the requesting user is not authorized to issue this request. - */ - @RequestMapping(method = RequestMethod.PATCH, path = "/{userId}/tags/private/{guid}/delete") - - public VoidResponse removePrivateTag(@PathVariable String userId, - @PathVariable String guid) - { - final String methodName = "removePrivateTag"; - - if (log.isDebugEnabled()) - { - log.debug("Calling method: " + methodName); - } - - VoidResponse response = new VoidResponse(); - - try - { - this.validateInitialization(methodName); - - FeedbackHandler feedbackHandler = new FeedbackHandler(accessServiceName, - repositoryConnector); - - feedbackHandler.removePrivateTagFromAsset(userId, guid); - } - catch (InvalidParameterException error) - { - captureInvalidParameterException(response, error); - } - catch (PropertyServerException error) - { - capturePropertyServerException(response, error); - } - catch (UserNotAuthorizedException error) - { - captureUserNotAuthorizedException(response, error); - } - - if (log.isDebugEnabled()) - { - log.debug("Returning from method: " + methodName + " with response: " + response.toString()); - } - - return response; - } - - - /** - * Removes of a star rating that was added to the asset by this user. - * - * @param userId - String - userId of user making request. - * @param guid - String - unique id for the rating object - * - * @return VoidResponse or - * InvalidParameterException - one of the parameters is null or invalid. - * PropertyServerException - There is a problem updating the asset properties in - * the metadata repository. - * UserNotAuthorizedException - the requesting user is not authorized to issue this request. - */ - @RequestMapping(method = RequestMethod.PATCH, path = "/{userId}/ratings/{guid}/delete") - - public VoidResponse removeRating(@PathVariable String userId, - @PathVariable String guid) - { - final String methodName = "removeRating"; - - if (log.isDebugEnabled()) - { - log.debug("Calling method: " + methodName); - } - - VoidResponse response = new VoidResponse(); - - try - { - this.validateInitialization(methodName); - - FeedbackHandler feedbackHandler = new FeedbackHandler(accessServiceName, - repositoryConnector); - - feedbackHandler.removeRatingFromAsset(userId, guid); - } - catch (InvalidParameterException error) - { - captureInvalidParameterException(response, error); - } - catch (PropertyServerException error) - { - capturePropertyServerException(response, error); - } - catch (UserNotAuthorizedException error) - { - captureUserNotAuthorizedException(response, error); - } - - if (log.isDebugEnabled()) - { - log.debug("Returning from method: " + methodName + " with response: " + response.toString()); - } - - return response; - } - - - /** - * Removes a "Like" added to the asset by this user. - * - * @param userId - String - userId of user making request. - * @param guid - String - unique id for the like object - * @return VoidResponse or - * InvalidParameterException - one of the parameters is null or invalid. - * PropertyServerException - There is a problem updating the asset properties in - * the metadata repository. - * UserNotAuthorizedException - the requesting user is not authorized to issue this request. - */ - @RequestMapping(method = RequestMethod.PATCH, path = "/{userId}/likes/{guid}/delete") - - public VoidResponse removeLike(@PathVariable String userId, - @PathVariable String guid) - { - final String methodName = "removeLike"; - - if (log.isDebugEnabled()) - { - log.debug("Calling method: " + methodName); - } - - VoidResponse response = new VoidResponse(); - - try - { - this.validateInitialization(methodName); - - FeedbackHandler feedbackHandler = new FeedbackHandler(accessServiceName, - repositoryConnector); - - feedbackHandler.removeLikeFromAsset(userId, guid); - } - catch (InvalidParameterException error) - { - captureInvalidParameterException(response, error); - } - catch (PropertyServerException error) - { - capturePropertyServerException(response, error); - } - catch (UserNotAuthorizedException error) - { - captureUserNotAuthorizedException(response, error); - } - - if (log.isDebugEnabled()) - { - log.debug("Returning from method: " + methodName + " with response: " + response.toString()); - } - - return response; - } - - - /** - * Removes a comment added to the asset by this user. - * - * @param userId - String - userId of user making request. - * @param guid - String - unique id for the comment object - * @return VoidResponse or - * InvalidParameterException - one of the parameters is null or invalid. - * PropertyServerException - There is a problem updating the asset properties in - * the metadata repository. - * UserNotAuthorizedException - the user does not have permission to perform this request. - */ - @RequestMapping(method = RequestMethod.PATCH, path = "/{userId}/comments/{guid}/delete") - - public VoidResponse removeComment(@PathVariable String userId, - @PathVariable String guid) - { - final String methodName = "removeComment"; - - if (log.isDebugEnabled()) - { - log.debug("Calling method: " + methodName); - } - - VoidResponse response = new VoidResponse(); - - try - { - this.validateInitialization(methodName); - - FeedbackHandler feedbackHandler = new FeedbackHandler(accessServiceName, - repositoryConnector); - - feedbackHandler.removeCommentFromAsset(userId, guid); - } - catch (InvalidParameterException error) - { - captureInvalidParameterException(response, error); - } - catch (PropertyServerException error) - { - capturePropertyServerException(response, error); - } - catch (UserNotAuthorizedException error) - { - captureUserNotAuthorizedException(response, error); - } - - if (log.isDebugEnabled()) - { - log.debug("Returning from method: " + methodName + " with response: " + response.toString()); - } - - return response; - } - - /* ========================== - * Support methods - * ========================== - */ - - - /** - * Set the exception information into the response. - * - * @param response - REST Response - * @param error returned response. - * @param exceptionClassName - class name of the exception to recreate - */ - private void captureCheckedException(AssetConsumerOMASAPIResponse response, - AssetConsumerCheckedExceptionBase error, - String exceptionClassName) - { - response.setRelatedHTTPCode(error.getReportedHTTPCode()); - response.setExceptionClassName(exceptionClassName); - response.setExceptionErrorMessage(error.getErrorMessage()); - response.setExceptionSystemAction(error.getReportedSystemAction()); - response.setExceptionUserAction(error.getReportedUserAction()); - } - - - /** - * Set the exception information into the response. - * - * @param response - REST Response - * @param error returned response. - */ - private void captureAmbiguousConnectionNameException(AssetConsumerOMASAPIResponse response, - AmbiguousConnectionNameException error) - { - captureCheckedException(response, error, error.getClass().getName()); - } - - - /** - * Set the exception information into the response. - * - * @param response - REST Response - * @param error returned response. - */ - private void captureInvalidParameterException(AssetConsumerOMASAPIResponse response, - InvalidParameterException error) - { - captureCheckedException(response, error, error.getClass().getName()); - } - - - /** - * Set the exception information into the response. - * - * @param response - REST Response - * @param error returned response. - */ - private void capturePropertyServerException(AssetConsumerOMASAPIResponse response, - PropertyServerException error) - { - captureCheckedException(response, error, error.getClass().getName()); - } - - - /** - * Set the exception information into the response. - * - * @param response - REST Response - * @param error returned response. - */ - private void captureUnrecognizedConnectionGUIDException(AssetConsumerOMASAPIResponse response, - UnrecognizedConnectionGUIDException error) - { - captureCheckedException(response, error, error.getClass().getName()); - } - - - /** - * Set the exception information into the response. - * - * @param response - REST Response - * @param error returned response. - */ - private void captureUnrecognizedConnectionNameException(AssetConsumerOMASAPIResponse response, - UnrecognizedConnectionNameException error) - { - captureCheckedException(response, error, error.getClass().getName()); - } - - - /** - * Set the exception information into the response. - * - * @param response - REST Response - * @param error returned response. - */ - private void captureUserNotAuthorizedException(AssetConsumerOMASAPIResponse response, - UserNotAuthorizedException error) - { - captureCheckedException(response, error, error.getClass().getName()); - } - - - /** - * Validate that this access service has been initialized before attempting to process a request. - * - * @param methodName - name of method called. - * @throws PropertyServerException - not initialized - */ - private void validateInitialization(String methodName) throws PropertyServerException - { - if (repositoryConnector == null) - { - AssetConsumerErrorCode errorCode = AssetConsumerErrorCode.SERVICE_NOT_INITIALIZED; - String errorMessage = errorCode.getErrorMessageId() - + errorCode.getFormattedErrorMessage(methodName); - - throw new PropertyServerException(errorCode.getHTTPErrorCode(), - this.getClass().getName(), - methodName, - errorMessage, - errorCode.getSystemAction(), - errorCode.getUserAction()); - } - } -}
http://git-wip-us.apache.org/repos/asf/atlas/blob/b0ecc36a/omas-assetconsumer/src/main/java/org/apache/atlas/omas/assetconsumer/server/AuditLogHandler.java ---------------------------------------------------------------------- diff --git a/omas-assetconsumer/src/main/java/org/apache/atlas/omas/assetconsumer/server/AuditLogHandler.java b/omas-assetconsumer/src/main/java/org/apache/atlas/omas/assetconsumer/server/AuditLogHandler.java deleted file mode 100644 index 8f44e75..0000000 --- a/omas-assetconsumer/src/main/java/org/apache/atlas/omas/assetconsumer/server/AuditLogHandler.java +++ /dev/null @@ -1,137 +0,0 @@ -/* - * 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 - * <p/> - * http://www.apache.org/licenses/LICENSE-2.0 - * <p/> - * 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.atlas.omas.assetconsumer.server; - -import org.apache.atlas.omas.assetconsumer.ffdc.AssetConsumerErrorCode; -import org.apache.atlas.omas.assetconsumer.ffdc.exceptions.InvalidParameterException; -import org.apache.atlas.omas.assetconsumer.ffdc.exceptions.PropertyServerException; -import org.apache.atlas.omas.assetconsumer.ffdc.exceptions.UserNotAuthorizedException; -import org.apache.atlas.omrs.metadatacollection.OMRSMetadataCollection; -import org.apache.atlas.omrs.metadatacollection.repositoryconnector.OMRSRepositoryConnector; - -/** - * AuditLogHandler manages the logging of audit records for the asset. - */ -public class AuditLogHandler -{ - private String serviceName; - private OMRSRepositoryConnector repositoryConnector; - - - - /** - * Construct the audit log handler with a link to the property server's connector and this access service's - * official name. - * - * @param serviceName - name of this service - * @param repositoryConnector - connector to the property server. - */ - public AuditLogHandler(String serviceName, - OMRSRepositoryConnector repositoryConnector) - { - this.serviceName = serviceName; - this.repositoryConnector = repositoryConnector; - } - - - /** - * Creates an Audit log record for the asset. This log record is stored in the Asset's Audit Log. - * - * @param userId - String - userId of user making request. - * @param assetGUID - String - unique id for the asset. - * @param connectorInstanceId - String - (optional) id of connector in use (if any). - * @param connectionName - String - (optional) name of the connection (extracted from the connector). - * @param connectorType - String - (optional) type of connector in use (if any). - * @param contextId - String - (optional) function name, or processId of the activity that the caller is performing. - * @param message - log record content. - * - * @throws InvalidParameterException - one of the parameters is null or invalid. - * @throws PropertyServerException - There is a problem adding the asset properties to - * the property server. - * @throws UserNotAuthorizedException - the requesting user is not authorized to issue this request. - */ - public void addLogMessageToAsset(String userId, - String assetGUID, - String connectorInstanceId, - String connectionName, - String connectorType, - String contextId, - String message) throws InvalidParameterException, - PropertyServerException, - UserNotAuthorizedException - { - // todo - } - - - /** - * Check that there is a repository connector. - * - * @param methodName - name of the method being called - * @return metadata collection that provides access to the properties in the property server - * @throws PropertyServerException - exception thrown if the repository connector - */ - private OMRSMetadataCollection validateRepositoryConnector(String methodName) throws PropertyServerException - { - if (this.repositoryConnector == null) - { - AssetConsumerErrorCode errorCode = AssetConsumerErrorCode.OMRS_NOT_INITIALIZED; - String errorMessage = errorCode.getErrorMessageId() - + errorCode.getFormattedErrorMessage(methodName); - - throw new PropertyServerException(errorCode.getHTTPErrorCode(), - this.getClass().getName(), - methodName, - errorMessage, - errorCode.getSystemAction(), - errorCode.getUserAction()); - - } - - if (! this.repositoryConnector.isActive()) - { - AssetConsumerErrorCode errorCode = AssetConsumerErrorCode.OMRS_NOT_AVAILABLE; - String errorMessage = errorCode.getErrorMessageId() - + errorCode.getFormattedErrorMessage(methodName); - - throw new PropertyServerException(errorCode.getHTTPErrorCode(), - this.getClass().getName(), - methodName, - errorMessage, - errorCode.getSystemAction(), - errorCode.getUserAction()); - } - - try - { - return repositoryConnector.getMetadataCollection(); - } - catch (Throwable error) - { - AssetConsumerErrorCode errorCode = AssetConsumerErrorCode.NO_METADATA_COLLECTION; - String errorMessage = errorCode.getErrorMessageId() + errorCode.getFormattedErrorMessage(methodName); - - throw new PropertyServerException(errorCode.getHTTPErrorCode(), - this.getClass().getName(), - methodName, - errorMessage, - errorCode.getSystemAction(), - errorCode.getUserAction()); - } - } -} http://git-wip-us.apache.org/repos/asf/atlas/blob/b0ecc36a/omas-assetconsumer/src/main/java/org/apache/atlas/omas/assetconsumer/server/ConnectionHandler.java ---------------------------------------------------------------------- diff --git a/omas-assetconsumer/src/main/java/org/apache/atlas/omas/assetconsumer/server/ConnectionHandler.java b/omas-assetconsumer/src/main/java/org/apache/atlas/omas/assetconsumer/server/ConnectionHandler.java deleted file mode 100644 index 3454416..0000000 --- a/omas-assetconsumer/src/main/java/org/apache/atlas/omas/assetconsumer/server/ConnectionHandler.java +++ /dev/null @@ -1,645 +0,0 @@ -/* - * 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 - * <p/> - * http://www.apache.org/licenses/LICENSE-2.0 - * <p/> - * 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.atlas.omas.assetconsumer.server; - - -import org.apache.atlas.ocf.properties.ElementOrigin; -import org.apache.atlas.ocf.properties.beans.*; -import org.apache.atlas.omas.assetconsumer.ffdc.AssetConsumerErrorCode; -import org.apache.atlas.omas.assetconsumer.ffdc.exceptions.*; -import org.apache.atlas.omrs.localrepository.repositorycontentmanager.OMRSRepositoryHelper; -import org.apache.atlas.omrs.metadatacollection.OMRSMetadataCollection; -import org.apache.atlas.omrs.metadatacollection.properties.MatchCriteria; -import org.apache.atlas.omrs.metadatacollection.properties.instances.*; -import org.apache.atlas.omrs.metadatacollection.properties.typedefs.PrimitiveDefCategory; -import org.apache.atlas.omrs.metadatacollection.repositoryconnector.OMRSRepositoryConnector; - -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -/** - * ConnectionHandler retrieves Connection objects from the property server. It runs server-side in the AssetConsumer - * OMAS and retrieves Connections through the OMRSRepositoryConnector. - */ -public class ConnectionHandler -{ - private static final String connectionTypeGUID = "114e9f8f-5ff3-4c32-bd37-a7eb42712253"; - private static final String connectionConnectorTypeRelationshipGUID = "e542cfc1-0b4b-42b9-9921-f0a5a88aaf96"; - private static final String connectionEndpointRelationshipGUID = "887a7132-d6bc-4b92-a483-e80b60c86fb2"; - private static final String qualifiedNamePropertyName = "qualifiedName"; - private static final String displayNamePropertyName = "displayName"; - private static final String additionalPropertiesName = "additionalProperties"; - private static final String securePropertiesName = "securedProperties"; - private static final String descriptionPropertyName = "description"; - private static final String connectorProviderPropertyName = "connectorProviderClassName"; - private static final String endpointPropertyName = "name"; - private static final String endpointAddressPropertyName = "networkAddress"; - private static final String endpointProtocolPropertyName = "protocol"; - private static final String endpointEncryptionPropertyName = "encryptionMethod"; - - private String serviceName; - private OMRSRepositoryHelper repositoryHelper = null; - private String serverName = null; - private ErrorHandler errorHandler = null; - - /** - * Construct the connection handler with a link to the property server's connector and this access service's - * official name. - * - * @param serviceName - name of this service - * @param repositoryConnector - connector to the property server. - */ - public ConnectionHandler(String serviceName, - OMRSRepositoryConnector repositoryConnector) - { - this.serviceName = serviceName; - if (repositoryConnector != null) - { - this.repositoryHelper = repositoryConnector.getRepositoryHelper(); - this.serverName = repositoryConnector.getServerName(); - errorHandler = new ErrorHandler(repositoryConnector); - } - } - - - /** - * Returns the connection object corresponding to the supplied connection name. - * - * @param userId - String - userId of user making request. - * @param name - this may be the qualifiedName or displayName of the connection. - * - * @return Connection retrieved from property server - * @throws InvalidParameterException - one of the parameters is null or invalid. - * @throws UnrecognizedConnectionNameException - there is no connection defined for this name. - * @throws AmbiguousConnectionNameException - there is more than one connection defined for this name. - * @throws PropertyServerException - there is a problem retrieving information from the property (metadata) server. - * @throws UserNotAuthorizedException - the requesting user is not authorized to issue this request. - */ - Connection getConnectionByName(String userId, - String name) throws InvalidParameterException, - UnrecognizedConnectionNameException, - AmbiguousConnectionNameException, - PropertyServerException, - UserNotAuthorizedException - { - final String methodName = "getConnectionByName"; - final String nameParameter = "name"; - - errorHandler.validateUserId(userId, methodName); - errorHandler.validateName(name, nameParameter, methodName); - - OMRSMetadataCollection metadataCollection = errorHandler.validateRepositoryConnector(methodName); - - try - { - InstanceProperties properties = null; - - properties = repositoryHelper.addStringPropertyToInstance(serviceName, - properties, - qualifiedNamePropertyName, - name, - methodName); - - properties = repositoryHelper.addStringPropertyToInstance(serviceName, - properties, - displayNamePropertyName, - name, - methodName); - - List<EntityDetail> connections = metadataCollection.findEntitiesByProperty(userId, - connectionTypeGUID, - properties, - MatchCriteria.ANY, - 0, - null, - null, - null, - null, - null, - 2); - - if (connections == null) - { - AssetConsumerErrorCode errorCode = AssetConsumerErrorCode.CONNECTION_NOT_FOUND; - String errorMessage = errorCode.getErrorMessageId() - + errorCode.getFormattedErrorMessage(name, serverName, null); - - throw new UnrecognizedConnectionNameException(errorCode.getHTTPErrorCode(), - this.getClass().getName(), - methodName, - errorMessage, - errorCode.getSystemAction(), - errorCode.getUserAction()); - } - else if (connections.isEmpty()) - { - AssetConsumerErrorCode errorCode = AssetConsumerErrorCode.CONNECTION_NOT_FOUND; - String errorMessage = errorCode.getErrorMessageId() + errorCode.getFormattedErrorMessage(name, - serverName, - null); - - throw new UnrecognizedConnectionNameException(errorCode.getHTTPErrorCode(), - this.getClass().getName(), - methodName, - errorMessage, - errorCode.getSystemAction(), - errorCode.getUserAction()); - } - else if (connections.size() > 1) - { - AssetConsumerErrorCode errorCode = AssetConsumerErrorCode.TOO_MANY_CONNECTIONS; - String errorMessage = errorCode.getErrorMessageId() + errorCode.getFormattedErrorMessage(name, - serverName, - Integer.toString(connections.size())); - - throw new AmbiguousConnectionNameException(errorCode.getHTTPErrorCode(), - this.getClass().getName(), - methodName, - errorMessage, - errorCode.getSystemAction(), - errorCode.getUserAction()); - } - else - { - return this.getConnectionFromRepository(userId, metadataCollection, connections.get(0)); - } - } - catch (org.apache.atlas.omrs.ffdc.exception.UserNotAuthorizedException error) - { - errorHandler.handleUnauthorizedUser(userId, - methodName, - serverName, - serviceName); - } - catch (AmbiguousConnectionNameException error) - { - throw error; - } - catch (UnrecognizedConnectionNameException error) - { - throw error; - } - catch (Throwable error) - { - errorHandler.handleRepositoryError(error, - methodName, - serverName, - serviceName); - } - - return null; - } - - - /** - * Returns the connection object corresponding to the supplied connection GUID. - * - * @param userId - String - userId of user making request. - * @param guid - the unique id for the connection within the property server. - * - * @return Connection retrieved from the property server - * @throws InvalidParameterException - one of the parameters is null or invalid. - * @throws UnrecognizedConnectionGUIDException - the supplied GUID is not recognized by the metadata repository. - * @throws PropertyServerException - there is a problem retrieving information from the property (metadata) server. - * @throws UserNotAuthorizedException - the requesting user is not authorized to issue this request. - */ - public Connection getConnectionByGUID(String userId, - String guid) throws InvalidParameterException, - UnrecognizedConnectionGUIDException, - PropertyServerException, - UserNotAuthorizedException - { - final String methodName = "getConnectionByGUID"; - final String guidParameter = "guid"; - - errorHandler.validateUserId(userId, methodName); - errorHandler.validateGUID(guid, guidParameter, methodName); - - OMRSMetadataCollection metadataCollection = errorHandler.validateRepositoryConnector(methodName); - EntityDetail connectionEntity = null; - - try - { - connectionEntity = metadataCollection.getEntityDetail(userId, guid); - } - catch (org.apache.atlas.omrs.ffdc.exception.EntityNotKnownException error) - { - AssetConsumerErrorCode errorCode = AssetConsumerErrorCode.CONNECTION_NOT_FOUND; - String errorMessage = errorCode.getErrorMessageId() + errorCode.getFormattedErrorMessage(guid, - serverName, - error.getErrorMessage()); - - throw new UnrecognizedConnectionGUIDException(errorCode.getHTTPErrorCode(), - this.getClass().getName(), - methodName, - errorMessage, - errorCode.getSystemAction(), - errorCode.getUserAction()); - } - catch (org.apache.atlas.omrs.ffdc.exception.EntityProxyOnlyException error) - { - AssetConsumerErrorCode errorCode = AssetConsumerErrorCode.PROXY_CONNECTION_FOUND; - String errorMessage = errorCode.getErrorMessageId() + errorCode.getFormattedErrorMessage(guid, - serverName, - error.getErrorMessage()); - - throw new UnrecognizedConnectionGUIDException(errorCode.getHTTPErrorCode(), - this.getClass().getName(), - methodName, - errorMessage, - errorCode.getSystemAction(), - errorCode.getUserAction()); - } - catch (org.apache.atlas.omrs.ffdc.exception.UserNotAuthorizedException error) - { - errorHandler.handleUnauthorizedUser(userId, - methodName, - serverName, - serviceName); } - catch (Throwable error) - { - errorHandler.handleRepositoryError(error, - methodName, - serverName, - serviceName); - } - - if (connectionEntity != null) - { - return this.getConnectionFromRepository(userId, metadataCollection, connectionEntity); - } - - return null; - } - - - - - /** - * Return a Connection bean filled with values retrieved from the property server. - * - * @param userId - name of user - * @param metadataCollection - accessor object for the property server - * @param connectionEntity - root entity object - * @return Connection bean - * @throws PropertyServerException - a problem communicating with the property server - */ - private Connection getConnectionFromRepository(String userId, - OMRSMetadataCollection metadataCollection, - EntityDetail connectionEntity) throws PropertyServerException - { - final String methodName = "getConnectionFromRepository"; - - ConnectorType connectorType = getConnectorTypeFromRepository(userId, metadataCollection, connectionEntity); - Endpoint endpoint = getEndpointFromRepository(userId, metadataCollection, connectionEntity); - - Connection connection = new Connection(); - - connection.setGUID(connectionEntity.getGUID()); - connection.setURL(connectionEntity.getInstanceURL()); - connection.setType(this.getElementType(connectionEntity)); - connection.setQualifiedName(repositoryHelper.getStringProperty(serviceName, - qualifiedNamePropertyName, - connectionEntity.getProperties(), - methodName)); - connection.setDisplayName(repositoryHelper.getStringProperty(serviceName, - displayNamePropertyName, - connectionEntity.getProperties(), - methodName)); - - connection.setDescription(repositoryHelper.getStringProperty(serviceName, - descriptionPropertyName, - connectionEntity.getProperties(), - methodName)); - - connection.setConnectorType(connectorType); - connection.setEndpoint(endpoint); - - - connection.setAdditionalProperties(this.getAdditionalPropertiesFromEntity(additionalPropertiesName, - connectionEntity.getProperties(), - methodName)); - - connection.setSecuredProperties(this.getAdditionalPropertiesFromEntity(securePropertiesName, - connectionEntity.getProperties(), - methodName)); - - return connection; - } - - - /** - * Return a ConnectorType bean filled with values retrieved from the property server for the connector type - * associated with the supplied connection. - * - * @param userId - name of user - * @param metadataCollection - accessor object for the property server - * @param connectionEntity - root entity object - * @return ConnectorType bean - * @throws PropertyServerException - a problem communicating with the property server - */ - private ConnectorType getConnectorTypeFromRepository(String userId, - OMRSMetadataCollection metadataCollection, - EntityDetail connectionEntity) throws PropertyServerException - { - final String methodName = "getConnectorTypeFromRepository"; - - ConnectorType connectorType = null; - - EntityDetail endpointEntity = this.getEntityForRelationshipType(userId, - connectionEntity, - connectionConnectorTypeRelationshipGUID, - metadataCollection, - methodName); - - if (endpointEntity != null) - { - connectorType = new ConnectorType(); - - connectorType.setGUID(connectionEntity.getGUID()); - connectorType.setURL(connectionEntity.getInstanceURL()); - connectorType.setType(this.getElementType(connectionEntity)); - connectorType.setQualifiedName(repositoryHelper.getStringProperty(serviceName, - qualifiedNamePropertyName, - connectionEntity.getProperties(), - methodName)); - connectorType.setDisplayName(repositoryHelper.getStringProperty(serviceName, - displayNamePropertyName, - connectionEntity.getProperties(), - methodName)); - connectorType.setDescription(repositoryHelper.getStringProperty(serviceName, - descriptionPropertyName, - connectionEntity.getProperties(), - methodName)); - connectorType.setConnectorProviderClassName(repositoryHelper.getStringProperty(serviceName, - connectorProviderPropertyName, - connectionEntity.getProperties(), - methodName)); - - connectorType.setAdditionalProperties(this.getAdditionalPropertiesFromEntity(additionalPropertiesName, - connectionEntity.getProperties(), - methodName)); - - } - - - - - return connectorType; - } - - - /** - * Return an Endpoint bean filled with values retrieved from the property server for the endpoint - * associated with the supplied connection. - * - * @param userId - name of user - * @param metadataCollection - accessor object for the property server - * @param connectionEntity - root entity object - * @return Endpoint bean - * @throws PropertyServerException - a problem communicating with the property server - */ - private Endpoint getEndpointFromRepository(String userId, - OMRSMetadataCollection metadataCollection, - EntityDetail connectionEntity) throws PropertyServerException - { - final String methodName = "getEndpointFromRepository"; - - Endpoint endpoint = null; - - EntityDetail endpointEntity = this.getEntityForRelationshipType(userId, - connectionEntity, - connectionEndpointRelationshipGUID, - metadataCollection, - methodName); - - if (endpointEntity != null) - { - endpoint = new Endpoint(); - - endpoint.setGUID(connectionEntity.getGUID()); - endpoint.setURL(connectionEntity.getInstanceURL()); - endpoint.setType(this.getElementType(connectionEntity)); - endpoint.setQualifiedName(repositoryHelper.getStringProperty(serviceName, - qualifiedNamePropertyName, - connectionEntity.getProperties(), - methodName)); - endpoint.setDisplayName(repositoryHelper.getStringProperty(serviceName, - endpointPropertyName, - connectionEntity.getProperties(), - methodName)); - endpoint.setDescription(repositoryHelper.getStringProperty(serviceName, - descriptionPropertyName, - connectionEntity.getProperties(), - methodName)); - endpoint.setAddress(repositoryHelper.getStringProperty(serviceName, - endpointAddressPropertyName, - connectionEntity.getProperties(), - methodName)); - endpoint.setProtocol(repositoryHelper.getStringProperty(serviceName, - endpointProtocolPropertyName, - connectionEntity.getProperties(), - methodName)); - endpoint.setEncryptionMethod(repositoryHelper.getStringProperty(serviceName, - endpointEncryptionPropertyName, - connectionEntity.getProperties(), - methodName)); - endpoint.setAdditionalProperties(this.getAdditionalPropertiesFromEntity(additionalPropertiesName, - connectionEntity.getProperties(), - methodName)); - } - - return endpoint; - } - - - /** - * Create an ElementType by extracting relevant information from the supplied instance. - * - * @param instance - instance to extract properties from - * @return resulting elementType - */ - private ElementType getElementType(InstanceHeader instance) - { - ElementType elementType = null; - InstanceType instanceType = instance.getType(); - - if (instanceType != null) - { - elementType = new ElementType(); - - elementType.setElementTypeId(instanceType.getTypeDefGUID()); - elementType.setElementTypeName(instanceType.getTypeDefName()); - elementType.setElementTypeDescription(instanceType.getTypeDefDescription()); - elementType.setElementTypeVersion(instanceType.getTypeDefVersion()); - elementType.setElementAccessServiceURL(serverName); - elementType.setElementHomeMetadataCollectionId(instance.getMetadataCollectionId()); - - switch (instance.getInstanceProvenanceType()) - { - case UNKNOWN: - elementType.setElementOrigin(null); - break; - - case CONTENT_PACK: - elementType.setElementOrigin(ElementOrigin.CONTENT_PACK); - break; - - case LOCAL_COHORT: - elementType.setElementOrigin(ElementOrigin.LOCAL_COHORT); - break; - - case EXPORT_ARCHIVE: - elementType.setElementOrigin(ElementOrigin.EXPORT_ARCHIVE); - break; - - case DEREGISTERED_REPOSITORY: - elementType.setElementOrigin(ElementOrigin.DEREGISTERED_REPOSITORY); - break; - } - } - - return elementType; - } - - - /** - * Extract an additional properties object from the instance properties within a map property value. - * - * @param propertyName - name of the property that is a map - * @param properties - instance properties containing the map property - * @param methodName - calling method - * @return an AdditionalProperties object or null - */ - private AdditionalProperties getAdditionalPropertiesFromEntity(String propertyName, - InstanceProperties properties, - String methodName) - { - /* - * Extract the map property - */ - InstanceProperties mapProperty = repositoryHelper.getMapProperty(serviceName, - propertyName, - properties, - methodName); - - if (mapProperty != null) - { - /* - * The contents should be primitives. Need to step through all of the property names - * and add each primitive value to a map. This map is then used to set up the additional properties - * object for return - */ - Iterator<String> additionalPropertyNames = mapProperty.getPropertyNames(); - - if (additionalPropertyNames != null) - { - Map<String,Object> additionalPropertiesMap = new HashMap<>(); - - while (additionalPropertyNames.hasNext()) - { - String additionalPropertyName = additionalPropertyNames.next(); - InstancePropertyValue additionalPropertyValue = mapProperty.getPropertyValue(additionalPropertyName); - - if (additionalPropertyValue != null) - { - /* - * If the property is not primitive it is ignored. - */ - if (additionalPropertyValue.getInstancePropertyCategory() == InstancePropertyCategory.PRIMITIVE) - { - PrimitivePropertyValue primitivePropertyValue = (PrimitivePropertyValue) additionalPropertyValue; - - additionalPropertiesMap.put(additionalPropertyName, primitivePropertyValue.getPrimitiveValue()); - } - } - } - - if (! additionalPropertiesMap.isEmpty()) - { - AdditionalProperties additionalProperties = new AdditionalProperties(); - - additionalProperties.setAdditionalProperties(additionalPropertiesMap); - return additionalProperties; - } - } - } - - return null; - } - - /** - * Return the entity a the other end of the requested relationship type. The assumption is that this is a 0..1 - * relationship so one entity (or null) is returned. If lots of relationships are found then the - * PropertyServerException is thrown. - * - * @param userId - user making the request. - * @param anchorEntity - starting entity. - * @param relationshipTypeGUID - identifier for the relationship to follow - * @param metadataCollection - metadata collection to retrieve instances from - * @param methodName - name of calling method - * @return retrieved entity or null - * @throws PropertyServerException - problem access the property server - */ - private EntityDetail getEntityForRelationshipType(String userId, - EntityDetail anchorEntity, - String relationshipTypeGUID, - OMRSMetadataCollection metadataCollection, - String methodName) throws PropertyServerException - { - try - { - List<Relationship> relationships = metadataCollection.getRelationshipsForEntity(userId, - anchorEntity.getGUID(), - relationshipTypeGUID, - 0, - null, - null, - null, - null, - 100); - - if (relationships != null) - { - if (relationships.size() == 1) - { - Relationship relationship = relationships.get(0); - - EntityProxy requiredEnd = relationship.getEntityOneProxy(); - if (anchorEntity.getGUID().equals(requiredEnd.getGUID())) - { - requiredEnd = relationship.getEntityTwoProxy(); - } - - return metadataCollection.getEntityDetail(userId, requiredEnd.getGUID()); - } - } - } - catch (Throwable error) - { - errorHandler.handleRepositoryError(error, - methodName, - serverName, - serviceName); - } - - return null; - } -}