* ============LICENSE_START=======================================================
* org.onap.aai
* ================================================================================
- * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
- * Copyright © 2017-2018 European Software Marketing Ltd.
+ * Copyright (c) 2017-2019 AT&T Intellectual Property. All rights reserved.
+ * Copyright (c) 2017-2019 European Software Marketing Ltd.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* limitations under the License.
* ============LICENSE_END=========================================================
*/
+
package org.onap.aai.babel.service;
-import com.att.aft.dme2.internal.gson.Gson;
-import com.att.aft.dme2.internal.gson.GsonBuilder;
-import com.att.aft.dme2.internal.gson.JsonSyntaxException;
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonSyntaxException;
import java.util.Base64;
import java.util.List;
import java.util.UUID;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.PathSegment;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import javax.ws.rs.core.UriInfo;
-import org.apache.commons.lang.time.StopWatch;
+import org.apache.commons.lang3.time.StopWatch;
+import org.onap.aai.auth.AAIAuthException;
import org.onap.aai.auth.AAIMicroServiceAuth;
import org.onap.aai.auth.AAIMicroServiceAuthCore;
import org.onap.aai.babel.csar.CsarConverterException;
import org.onap.aai.babel.service.data.BabelRequest;
import org.onap.aai.babel.util.RequestValidationException;
import org.onap.aai.babel.util.RequestValidator;
+import org.springframework.stereotype.Service;
-/** Generate SDC Artifacts by passing in a CSAR payload, Artifact Name and Artifact version */
+/**
+ * Generate SDC Artifacts by passing in a CSAR payload, Artifact Name and Artifact version.
+ *
+ */
+@Service
public class GenerateArtifactsServiceImpl implements GenerateArtifactsService {
private static final LogHelper applicationLogger = LogHelper.INSTANCE;
/**
* @param authorization
+ * the auth module
*/
@Inject
public GenerateArtifactsServiceImpl(final AAIMicroServiceAuth authorization) {
Response response;
try {
+ // Get last URI path segment to use for authentication
+ List<PathSegment> pathSegments = uriInfo.getPathSegments();
+ String lastPathSegment = pathSegments.isEmpty() ? "" : pathSegments.get(pathSegments.size() - 1).getPath();
+
boolean authorized = aaiMicroServiceAuth.validateRequest(headers, servletRequest,
- AAIMicroServiceAuthCore.HTTP_METHODS.POST, uriInfo.getPath(false));
+ AAIMicroServiceAuthCore.HTTP_METHODS.POST, lastPathSegment);
response = authorized ? generateArtifacts(requestBody)
: buildResponse(Status.UNAUTHORIZED, "User not authorized to perform the operation.");
- } catch (Exception e) {
+ } catch (AAIAuthException e) {
applicationLogger.error(ApplicationMsgs.PROCESS_REQUEST_ERROR, e);
applicationLogger.logAuditError(e);
return buildResponse(Status.INTERNAL_SERVER_ERROR,
- "Error while processing request. Please check the babel service logs for more details.\n");
+ "Error while processing request. Please check the Babel service logs for more details.\n");
}
StatusCode statusDescription;
/**
* Generate XML model artifacts from request body.
*
- * @param requestBody the request body in JSON format
+ * @param requestBody
+ * the request body in JSON format
* @return response object containing the generated XML models
*/
protected Response generateArtifacts(String requestBody) {
Gson gson = new GsonBuilder().disableHtmlEscaping().create();
BabelRequest babelRequest = gson.fromJson(requestBody, BabelRequest.class);
- RequestValidator.validateRequest(babelRequest);
+ new RequestValidator().validateRequest(babelRequest);
byte[] csarFile = Base64.getDecoder().decode(babelRequest.getCsar());
List<BabelArtifact> babelArtifacts = new CsarToXmlConverter().generateXmlFromCsar(csarFile,
response = processError(ApplicationMsgs.PROCESSING_VNF_CATALOG_ERROR, Status.INTERNAL_SERVER_ERROR, e,
"Error converting CSAR artifact to VNF catalog.");
} catch (RequestValidationException e) {
- response =
- processError(ApplicationMsgs.PROCESS_REQUEST_ERROR, Status.BAD_REQUEST, e, e.getLocalizedMessage());
- } catch (Exception e) {
- response = processError(ApplicationMsgs.PROCESS_REQUEST_ERROR, Status.INTERNAL_SERVER_ERROR, e,
- "Error while processing request. Please check the babel service logs for more details.\n");
+ response = processError(ApplicationMsgs.PROCESS_REQUEST_ERROR, Status.BAD_REQUEST, //
+ e, e.getLocalizedMessage());
} finally {
applicationLogger.logMetrics(stopwatch, LogHelper.getCallerMethodName(0));
}
/**
* Helper method to create a REST response object.
*
- * @param status response status code
- * @param entity response payload
+ * @param status
+ * response status code
+ * @param entity
+ * response payload
* @return
*/
private Response buildResponse(Status status, String entity) {
- // @formatter:off
- return Response.status(status).entity(entity).type(MediaType.TEXT_PLAIN).build();
- // @formatter:on
+ return Response.status(status).entity(entity).type(MediaType.TEXT_PLAIN).build();
}
}