<schema.version.app.root.start>v11</schema.version.app.root.start>
<schema.version.namespace.change.start>v12</schema.version.namespace.change.start>
<schema.version.edge.label.start>v12</schema.version.edge.label.start>
- <schema.version.api.default>v19</schema.version.api.default>
- <schema.version.list>v10,v11,v12,v13,v14,v15,v16,v17,v18,v19</schema.version.list>
+ <schema.version.api.default>v20</schema.version.api.default>
+ <schema.version.list>v10,v11,v12,v13,v14,v15,v16,v17,v18,v19,v20</schema.version.list>
<schema.uri.base.path>/aai</schema.uri.base.path>
<!-- <schema.translator.list>config</schema.translator.list> -->
<schema.ingest.file>${project.basedir}/src/main/resources/application.properties</schema.ingest.file>
<includes>
<include>**/*</include>
</includes>
+ <fileMode>755</fileMode>
</fileSet>
<fileSet>
<directory>${project.basedir}/src/main/scripts</directory>
<includes>
<include>**/*</include>
</includes>
+ <fileMode>777</fileMode>
</fileSet>
<fileSet>
<directory>${project.build.directory}</directory>
<includes>
<include>${project.artifactId}-${project.version}.jar</include>
</includes>
+ <fileMode>755</fileMode>
</fileSet>
</fileSets>
</assembly>
throw new AAIException("AAI_6111", String.format("input payload does not follow %s interface", module));
}
}
-
- Gson gson = new Gson();
+ Gson gson = new GsonBuilder().serializeNulls().create();
String bodyStr = gson.toJson(bodyObj);
bulkOperation.setRawReq(bodyStr);
SchemaVersion version = new SchemaVersion(versionParam);
final HttpEntry traversalUriHttpEntry = SpringContextAware.getBean("traversalUriHttpEntry", HttpEntry.class);
- traversalUriHttpEntry.setHttpEntryProperties(version);
+ String serverBase = req.getRequestURL().toString().replaceAll("/(v[0-9]+|latest)/.*", "/");
+ traversalUriHttpEntry.setHttpEntryProperties(version, serverBase);
dbEngine = traversalUriHttpEntry.getDbEngine();
loader = traversalUriHttpEntry.getLoader();
MultivaluedMap<String, String> params = info.getQueryParameters();
@Path("/{uri: .+}/relationship-list")
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
- public Response getRelationshipList (@DefaultValue("-1") @QueryParam("resultIndex") String resultIndex, @DefaultValue("-1") @QueryParam("resultSize") String resultSize, @PathParam("version")String versionParam, @PathParam("uri") @Encoded String uri, @DefaultValue("false") @QueryParam("cleanup") String cleanUp, @Context HttpHeaders headers, @Context UriInfo info) {
+ public Response getRelationshipList (@DefaultValue("-1") @QueryParam("resultIndex") String resultIndex, @DefaultValue("-1") @QueryParam("resultSize") String resultSize, @PathParam("version")String versionParam, @PathParam("uri") @Encoded String uri, @DefaultValue("false") @QueryParam("cleanup") String cleanUp, @Context HttpHeaders headers, @Context HttpServletRequest req,@Context UriInfo info) {
return runner(AAIConstants.AAI_CRUD_TIMEOUT_ENABLED,
AAIConstants.AAI_CRUD_TIMEOUT_APP,
AAIConstants.AAI_CRUD_TIMEOUT_LIMIT,
new AaiCallable<Response>() {
@Override
public Response process() {
- return getRelationshipList(versionParam, uri, cleanUp, headers, info, resultIndex, resultSize);
+ return getRelationshipList(versionParam, req, uri, cleanUp, headers, info, resultIndex, resultSize);
}
}
);
* @param info
* @return
*/
- public Response getRelationshipList(String versionParam, String uri, String cleanUp, HttpHeaders headers, UriInfo info, String resultIndex, String resultSize) {
+ public Response getRelationshipList(String versionParam, HttpServletRequest req, String uri, String cleanUp, HttpHeaders headers, UriInfo info, String resultIndex, String resultSize) {
String sourceOfTruth = headers.getRequestHeaders().getFirst("X-FromAppId");
String transId = headers.getRequestHeaders().getFirst("X-TransactionId");
Response response = null;
SchemaVersion version = new SchemaVersion(versionParam);
final HttpEntry traversalUriHttpEntry = SpringContextAware.getBean("traversalUriHttpEntry", HttpEntry.class);
- traversalUriHttpEntry.setHttpEntryProperties(version);
+ String serverBase = req.getRequestURL().toString().replaceAll("/(v[0-9]+|latest)/.*", "/");
+ traversalUriHttpEntry.setHttpEntryProperties(version, serverBase);
dbEngine = traversalUriHttpEntry.getDbEngine();
loader = traversalUriHttpEntry.getLoader();
MultivaluedMap<String, String> params = info.getQueryParameters();
TransactionalGraphEngine dbEngine = null;
try {
HttpEntry resourceHttpEntry = SpringContextAware.getBean("traversalUriHttpEntry", HttpEntry.class);
- resourceHttpEntry.setHttpEntryProperties(version);
+ String serverBase = req.getRequestURL().toString().replaceAll("/(v[0-9]+|latest)/.*", "/");
+ resourceHttpEntry.setHttpEntryProperties(version, serverBase);
dbEngine = resourceHttpEntry.getDbEngine();
DBSerializer serializer = new DBSerializer(version, dbEngine, introspectorFactoryType, sourceOfTruth);
result.append(uri.getRawPath());
result.insert(0, version);
- result.insert(0, AAIConfig.get("aai.server.url.base"));
+ result.insert(0, serverBase);
response = Response.ok().entity(result.toString()).status(Status.OK).type(MediaType.TEXT_PLAIN).build();
} catch (AAIException e) {
//TODO check that the details here are sensible
server.ssl.client-auth=want
server.ssl.key-store-type=JKS
+null.db.serialization.enabled=true
+
# JMS bind address host port
jms.bind.address=tcp://localhost:61647
dmaap.ribbon.listOfServers=localhost:3904
+
# Schema related attributes for the oxm and edges
# Any additional schema related attributes should start with prefix schema
schema.configuration.location=N/A
aai.tools.password=AAI
aai.server.url.base=https://localhost:8443/aai/
-aai.server.url=https://localhost:8443/aai/v19/
+aai.server.url=https://localhost:8443/aai/v20/
aai.global.callback.url=https://localhost:8443/aai/
aai.truststore.filename=aai_keystore
aai.keystore.filename=aai-client-cert.p12
aai.keystore.passwd.x=
-aai.notification.current.version=v19
+aai.notification.current.version=v20
aai.notificationEvent.default.status=UNPROCESSED
aai.notificationEvent.default.eventType=AAI-EVENT
aai.notificationEvent.default.domain=devINT1
aai.notificationEvent.default.sourceName=aai
aai.notificationEvent.default.sequenceNumber=0
aai.notificationEvent.default.severity=NORMAL
-aai.notificationEvent.default.version=v19
+aai.notificationEvent.default.version=v20
# This one lets us enable/disable resource-version checking on updates/deletes
aai.resourceversion.enableflag=true
aai.logging.maxStackTraceEntries=10
-aai.default.api.version=v19
+aai.default.api.version=v20
# Used by Model-processing code
aai.model.delete.sleep.per.vtx.msec=500
#################################################################################
aai.implied.delete.whitelist.sdnc='vce'
aai.implied.delete.whitelist.ro='vserver'
+
+property.null.validation.enabled=true
\ No newline at end of file
AAI_6147=5:4:ERROR:6147:400:3000:Payload Limit Reached, reduce payload:300
AAI_6148=5:4:ERROR:6148:400:3000:More than one node found %1:300
AAI_6149=5:4:ERROR:6149:404:3000:No relationship was found:300
+AAI_6150=5:4:ERROR:6150:200:3000:DB object with required field serialized with empty or null value
#--- aaicsvp: 7101-7199
AAI_7101=5:4:ERROR:7101:500:3002:Unexpected error in CSV file processing:900
inputFolder=$1
if [ -z "$1" ]; then
echo "Input folder string is empty."
- exit 1
+ exit 1
fi
-if [ ! -d "/opt/bulkprocess_load/$1" ]; then
- echo "Input folder could not be found."
- exit 1
+if [ ! -d "$inputFolder" ]; then
+ if [ ! -d "/opt/bulkprocess_load/$1" ]; then
+ echo "Input folder could not be found."
+ exit 1
+ else
+ inputFolder="/opt/bulkprocess_load/$1"
+ fi
fi
XFROMAPPID=$2
XTRANSID=$3
-for input_file in $(ls -v /opt/bulkprocess_load/${inputFolder}/*);
+for input_file in $(ls -v ${inputFolder}/*);
do
output_file=$(basename $input_file | sed 's/.json//g');
/opt/app/aai-resources/scripts/putTool.sh /bulkprocess ${input_file} -display $XFROMAPPID $XTRANSID > /tmp/${output_file}.$(date +"%Y%m%d%H%M%S").results.json;
# Sources the profile and sets the project home
source_profile(){
- . /etc/profile.d/aai.sh
PROJECT_HOME=/opt/app/aai-resources
}
exit 1
fi
-. /etc/profile.d/aai.sh
+
PROJECT_HOME=/opt/app/aai-resources
prop_file=$PROJECT_HOME/resources/etc/appprops/aaiconfig.properties
log_dir=$PROJECT_HOME/logs/misc
exit 1
fi
-. /etc/profile.d/aai.sh
+
PROJECT_HOME=/opt/app/aai-resources
prop_file=$PROJECT_HOME/resources/etc/appprops/aaiconfig.properties
log_dir=$PROJECT_HOME/logs/misc
fi
}
-. /etc/profile.d/aai.sh
PROJECT_HOME=/opt/app/aai-resources
PROGNAME=$(basename $0)
exit 1
fi
-. /etc/profile.d/aai.sh
+
PROJECT_HOME=/opt/app/aai-resources
prop_file=$PROJECT_HOME/resources/etc/appprops/aaiconfig.properties
log_dir=$PROJECT_HOME/logs/misc
exit 1
fi
-. /etc/profile.d/aai.sh
+
PROJECT_HOME=/opt/app/aai-resources
prop_file=$PROJECT_HOME/resources/etc/appprops/aaiconfig.properties
log_dir=$PROJECT_HOME/logs/misc
exit 1
fi
-. /etc/profile.d/aai.sh
+
PROJECT_HOME=/opt/app/aai-resources
prop_file=$PROJECT_HOME/resources/etc/appprops/aaiconfig.properties
log_dir=$PROJECT_HOME/logs/misc
COMMON_ENV_PATH=$( cd "$(dirname "$0")" ; pwd -P )
. ${COMMON_ENV_PATH}/common_functions.sh
-. /etc/profile.d/aai.sh
+
PROJECT_HOME=/opt/app/aai-resources
PROGNAME=$(basename $0)
###
#
-# vmUpdateExport.sh -- This tool updates the files generated in A&AI to
-# match what is expected in narad
+# vmUpdateExport.sh -- This tool updates the files generated in A&AI
# The script takes no arguments
addTemplates() {
COMMON_ENV_PATH=$( cd "$(dirname "$0")" ; pwd -P )
. ${COMMON_ENV_PATH}/common_functions.sh
-. /etc/profile.d/aai.sh
+
PROJECT_HOME=/opt/app/aai-resources
PROGNAME=$(basename $0)
}
-. /etc/profile.d/aai.sh
+
PROJECT_HOME=/opt/app/aai-resources
PROGNAME=$(basename $0)
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.test.annotation.DirtiesContext;
+import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.core.*;
import java.io.IOException;
import java.util.*;
import static org.junit.Assert.*;
import static org.mockito.Matchers.anyObject;
+import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
+// TODO: Change the following test to use spring boot
public class LegacyMoxyConsumerTest extends AAISetup {
protected static final MediaType APPLICATION_JSON = MediaType.valueOf("application/json");
when(uriInfo.getPath()).thenReturn(uri);
when(uriInfo.getPath(false)).thenReturn(uri);
- MockHttpServletRequest mockReqGet = new MockHttpServletRequest("GET", uri);
+ HttpServletRequest mockRequest = Mockito.mock(HttpServletRequest.class);
+ when(mockRequest.getRequestURL()).thenReturn(new StringBuffer("https://localhost:8447/aai/v15/" + uri));
+
Response response = legacyMoxyConsumer.getLegacy(
"",
null,
"false",
httpHeaders,
uriInfo,
- mockReqGet
+ mockRequest
);
assertNotNull("Response from the legacy moxy consumer returned null", response);
assertEquals("Expected to not have the data already in memory",
Response.Status.NOT_FOUND.getStatusCode(), response.getStatus());
- MockHttpServletRequest mockReq = new MockHttpServletRequest("PUT", uri);
response = legacyMoxyConsumer.update(
payload,
schemaVersions.getDefaultVersion().toString(),
uri,
httpHeaders,
uriInfo,
- mockReq
+ mockRequest
);
assertNotNull("Response from the legacy moxy consumer returned null", response);
"false",
httpHeaders,
uriInfo,
- mockReqGet
+ mockRequest
);
assertNotNull("Response from the legacy moxy consumer returned null", response);
"cloud-infrastructure/pservers/pserver/%s/relationship-list", hostname);
String getRelationshipUri = String.format(
"cloud-infrastructure/pservers/pserver/%s", hostname);
+ HttpServletRequest mockRequest = Mockito.mock(HttpServletRequest.class);
+ when(mockRequest.getRequestURL()).thenReturn(new StringBuffer("https://localhost:8447/aai/v15/" + getRelationshipUri));
response = legacyMoxyConsumer.getRelationshipList(
"1",
"1",
getRelationshipUri,
"false",
httpHeaders,
+ mockRequest,
uriInfo
);
String getRelationshipUri = String.format(
"cloud-infrastructure/pservers/pserver/%s", hostname);
queryParameters.add("format", "resource");
+ HttpServletRequest mockRequest = Mockito.mock(HttpServletRequest.class);
+ when(mockRequest.getRequestURL()).thenReturn(new StringBuffer("https://localhost:8447/aai/v15/" + getRelationshipUri));
response = legacyMoxyConsumer.getRelationshipList(
"1",
"1",
getRelationshipUri,
"false",
httpHeaders,
+ mockRequest,
uriInfo
);
queryParameters.remove("format");
String getRelationshipUri = String.format(
"cloud-infrastructure/pservers/pserver/%s", hostname);
MockHttpServletRequest mockReq = new MockHttpServletRequest("GET_RELATIONSHIP", getRelationshipMockRequestUri);
+ HttpServletRequest mockRequest = Mockito.mock(HttpServletRequest.class);
+ when(mockRequest.getRequestURL()).thenReturn(new StringBuffer("https://localhost:8447/aai/v15/" + getRelationshipUri));
Response response = legacyMoxyConsumer.getRelationshipList(
"1",
"1",
getRelationshipUri,
"false",
httpHeaders,
+ mockRequest,
uriInfo
);
aai.run.migrations=false
aai.jms.enable=false
+
+property.null.validation.enabled=true
<staging.path>/content/repositories/staging/</staging.path>
<!-- GMaven plugin uses this property to figure out the name of the docker tag -->
<aai.project.version>${project.version}</aai.project.version>
- <aai.common.version>1.6.10</aai.common.version>
+ <aai.common.version>1.7.0-SNAPSHOT</aai.common.version>
<aai.schema.service.version>1.6.6</aai.schema.service.version>
</properties>
<build>