diff --git a/oba/Dockerfile b/oba/Dockerfile
index c61247b..af5a734 100644
--- a/oba/Dockerfile
+++ b/oba/Dockerfile
@@ -3,6 +3,22 @@ FROM alpine:latest as builder
ARG TEST_API_KEY
ENV TEST_API_KEY=${TEST_API_KEY}
+# GTFS Realtime URLs
+ARG TRIP_UPDATES_URL
+ENV TRIP_UPDATES_URL=${TRIP_UPDATES_URL}
+
+ARG VEHICLE_POSITIONS_URL
+ENV VEHICLE_POSITIONS_URL=${VEHICLE_POSITIONS_URL}
+
+ARG ALERTS_URL
+ENV ALERTS_URL=${ALERTS_URL}
+
+ARG REFRESH_INTERVAL
+ENV REFRESH_INTERVAL=${REFRESH_INTERVAL}
+
+ARG AGENCY_ID
+ENV AGENCY_ID=${AGENCY_ID}
+
WORKDIR /oba
COPY bootstrap.sh .
COPY ./config ./config
@@ -50,7 +66,7 @@ WORKDIR /oba/webapps/onebusaway-transit-data-federation-webapp
RUN cp /oba/libs/onebusaway-transit-data-federation-webapp-${OBA_VERSION}.war .
RUN jar xvf onebusaway-transit-data-federation-webapp-${OBA_VERSION}.war
RUN rm onebusaway-transit-data-federation-webapp-${OBA_VERSION}.war
-COPY ./config/onebusaway-transit-data-federation-webapp-data-sources.xml ./WEB-INF/classes/data-sources.xml
+COPY --from=builder /oba/config/onebusaway-transit-data-federation-webapp-data-sources.xml ./WEB-INF/classes/data-sources.xml
RUN cp $CATALINA_HOME/lib/mysql-connector-j-8.3.0.jar ./WEB-INF/lib
RUN mv /oba/webapps/onebusaway-transit-data-federation-webapp $CATALINA_HOME/webapps
diff --git a/oba/bootstrap.sh b/oba/bootstrap.sh
index 0dbf634..2679e74 100644
--- a/oba/bootstrap.sh
+++ b/oba/bootstrap.sh
@@ -1,6 +1,6 @@
#!/bin/bash
-XML_FILE="./config/onebusaway-api-webapp-data-sources.xml"
+WEBAPP_API_XML_FILE="./config/onebusaway-api-webapp-data-sources.xml"
NAMESPACE_PREFIX="x"
NAMESPACE_URI="http://www.springframework.org/schema/beans"
BEAN_ID="testAPIKey"
@@ -13,11 +13,65 @@ if [ -n "$TEST_API_KEY" ]; then
-s "//${NAMESPACE_PREFIX}:bean[@id='${BEAN_ID}']" -t elem -n "property" -v "" \
-i "//${NAMESPACE_PREFIX}:bean[@id='${BEAN_ID}']/property[not(@name)]" -t attr -n "name" -v "key" \
-i "//${NAMESPACE_PREFIX}:bean[@id='${BEAN_ID}']/property[@name='key']" -t attr -n "value" -v "${TEST_API_KEY}" \
- ${XML_FILE}
+ ${WEBAPP_API_XML_FILE}
else
# If it is not set, then remove the element from the data-sources.xml file
echo "TEST_API_KEY environment variable is not set. Removing element from data-sources.xml"
xmlstarlet ed -L -N ${NAMESPACE_PREFIX}=${NAMESPACE_URI} \
-d "//${NAMESPACE_PREFIX}:bean[@id='${BEAN_ID}']" \
- ${XML_FILE}
+ ${WEBAPP_API_XML_FILE}
fi
+
+DATA_FEDERATION_XML_FILE="./config/onebusaway-transit-data-federation-webapp-data-sources.xml"
+BEAN_ID="gtfsRT"
+# Check if GTFS-Rt related environment variables are set
+if [ -z "$TRIP_UPDATES_URL" ] && [ -z "$VEHICLE_POSITIONS_URL" ] && [ -z "$ALERTS_URL" ]; then
+ echo "No GTFS-RT related environment variables are set. Removing element from data-sources.xml"
+ xmlstarlet ed -L -N ${NAMESPACE_PREFIX}=${NAMESPACE_URI} \
+ -d "//${NAMESPACE_PREFIX}:bean[@class=${DATA_SOURCE_CLASS}]" \
+ ${DATA_FEDERATION_XML_FILE}
+ exit 0
+fi
+
+if [ -n "$TRIP_UPDATES_URL" ]; then
+ echo "TRIP_UPDATES_URL set to $TRIP_UPDATES_URL, setting trip updates URL in data-sources.xml"
+ xmlstarlet ed -L -N ${NAMESPACE_PREFIX}=${NAMESPACE_URI} \
+ -s "//${NAMESPACE_PREFIX}:bean[@id='${BEAN_ID}']" -t elem -n "property" -v "" \
+ -i "//${NAMESPACE_PREFIX}:bean[@id='${BEAN_ID}']/property[not(@name)]" -t attr -n "name" -v "tripUpdatesUrl" \
+ -i "//${NAMESPACE_PREFIX}:bean[@id='${BEAN_ID}']/property[@name='tripUpdatesUrl']" -t attr -n "value" -v "${TRIP_UPDATES_URL}" \
+ ${DATA_FEDERATION_XML_FILE}
+fi
+if [ -n "$VEHICLE_POSITIONS_URL" ]; then
+ echo "VEHICLE_POSITIONS_URL set to $VEHICLE_POSITIONS_URL, setting vehicle positions URL in data-sources.xml"
+ xmlstarlet ed -L -N ${NAMESPACE_PREFIX}=${NAMESPACE_URI} \
+ -s "//${NAMESPACE_PREFIX}:bean[@id='${BEAN_ID}']" -t elem -n "property" -v "" \
+ -i "//${NAMESPACE_PREFIX}:bean[@id='${BEAN_ID}']/property[not(@name)]" -t attr -n "name" -v "vehiclePositionsUrl" \
+ -i "//${NAMESPACE_PREFIX}:bean[@id='${BEAN_ID}']/property[@name='vehiclePositionsUrl']" -t attr -n "value" -v "${VEHICLE_POSITIONS_URL}" \
+ ${DATA_FEDERATION_XML_FILE}
+fi
+if [ -n "$ALERTS_URL" ]; then
+ echo "ALERTS_URL set to $ALERTS_URL, setting alerts URL in data-sources.xml"
+ xmlstarlet ed -L -N ${NAMESPACE_PREFIX}=${NAMESPACE_URI} \
+ -s "//${NAMESPACE_PREFIX}:bean[@id='${BEAN_ID}']" -t elem -n "property" -v "" \
+ -i "//${NAMESPACE_PREFIX}:bean[@id='${BEAN_ID}']/property[not(@name)]" -t attr -n "name" -v "alertsUrl" \
+ -i "//${NAMESPACE_PREFIX}:bean[@id='${BEAN_ID}']/property[@name='alertsUrl']" -t attr -n "value" -v "${ALERTS_URL}" \
+ ${DATA_FEDERATION_XML_FILE}
+fi
+if [ -n "$REFRESH_INTERVAL" ]; then
+ echo "REFRESH_INTERVAL set to $REFRESH_INTERVAL, setting refresh interval in data-sources.xml"
+ xmlstarlet ed -L -N ${NAMESPACE_PREFIX}=${NAMESPACE_URI} \
+ -s "//${NAMESPACE_PREFIX}:bean[@id='${BEAN_ID}']" -t elem -n "property" -v "" \
+ -i "//${NAMESPACE_PREFIX}:bean[@id='${BEAN_ID}']/property[not(@name)]" -t attr -n "name" -v "refreshInterval" \
+ -i "//${NAMESPACE_PREFIX}:bean[@id='${BEAN_ID}']/property[@name='refreshInterval']" -t attr -n "value" -v "${REFRESH_INTERVAL}" \
+ ${DATA_FEDERATION_XML_FILE}
+fi
+if [ -n "$AGENCY_ID" ]; then
+ echo "AGENCY_ID set to $AGENCY_ID, setting agency ID in data-sources.xml"
+ xmlstarlet ed -L -N ${NAMESPACE_PREFIX}=${NAMESPACE_URI} \
+ -s "//${NAMESPACE_PREFIX}:bean[@id='${BEAN_ID}']" -t elem -n "property" -v "" \
+ -i "//${NAMESPACE_PREFIX}:bean[@id='${BEAN_ID}']/property[not(@name)]" -t attr -n "name" -v "agencyId" \
+ -i "//${NAMESPACE_PREFIX}:bean[@id='${BEAN_ID}']/property[@name='agencyId']" -t attr -n "value" -v "${AGENCY_ID}" \
+ ${DATA_FEDERATION_XML_FILE}
+fi
+
+
diff --git a/oba/config/onebusaway-transit-data-federation-webapp-data-sources.xml b/oba/config/onebusaway-transit-data-federation-webapp-data-sources.xml
index 8bbac82..7ff7967 100644
--- a/oba/config/onebusaway-transit-data-federation-webapp-data-sources.xml
+++ b/oba/config/onebusaway-transit-data-federation-webapp-data-sources.xml
@@ -31,6 +31,10 @@
+
+
+
+