├── .gitignore
├── LICENSE
├── Readme.md
├── backend-v1
├── Readme.md
├── build-docker.sh
├── pom.xml
├── push-docker.sh
└── src
│ ├── main
│ ├── assembly
│ │ └── assembly.xml
│ ├── fabric8
│ │ └── deployment.yml
│ ├── java
│ │ └── org
│ │ │ └── jboss
│ │ │ └── examples
│ │ │ └── ticketmonster
│ │ │ ├── model
│ │ │ ├── Address.java
│ │ │ ├── Booking.java
│ │ │ ├── Event.java
│ │ │ ├── EventCategory.java
│ │ │ ├── MediaItem.java
│ │ │ ├── MediaType.java
│ │ │ ├── Performance.java
│ │ │ ├── Seat.java
│ │ │ ├── SeatAllocationException.java
│ │ │ ├── Section.java
│ │ │ ├── SectionAllocation.java
│ │ │ ├── Show.java
│ │ │ ├── Ticket.java
│ │ │ ├── TicketCategory.java
│ │ │ ├── TicketPrice.java
│ │ │ └── Venue.java
│ │ │ ├── rest
│ │ │ ├── BaseEntityService.java
│ │ │ ├── BookingEndpoint.java
│ │ │ ├── BookingRequest.java
│ │ │ ├── BookingService.java
│ │ │ ├── BotState.java
│ │ │ ├── BotStatusService.java
│ │ │ ├── EventCategoryEndpoint.java
│ │ │ ├── EventEndpoint.java
│ │ │ ├── EventService.java
│ │ │ ├── JaxRsActivator.java
│ │ │ ├── MediaItemEndpoint.java
│ │ │ ├── MediaService.java
│ │ │ ├── MetricsService.java
│ │ │ ├── PerformanceEndpoint.java
│ │ │ ├── PerformanceMetric.java
│ │ │ ├── PingService.java
│ │ │ ├── ReaderExceptionMapper.java
│ │ │ ├── RestServiceException.java
│ │ │ ├── SectionAllocationEndpoint.java
│ │ │ ├── SectionComparator.java
│ │ │ ├── SectionEndpoint.java
│ │ │ ├── ShowEndpoint.java
│ │ │ ├── ShowMetric.java
│ │ │ ├── ShowService.java
│ │ │ ├── TicketCategoryEndpoint.java
│ │ │ ├── TicketEndpoint.java
│ │ │ ├── TicketPriceEndpoint.java
│ │ │ ├── TicketRequest.java
│ │ │ ├── VenueEndpoint.java
│ │ │ ├── VenueService.java
│ │ │ └── dto
│ │ │ │ ├── AddressDTO.java
│ │ │ │ ├── BookingDTO.java
│ │ │ │ ├── EventCategoryDTO.java
│ │ │ │ ├── EventDTO.java
│ │ │ │ ├── MediaItemDTO.java
│ │ │ │ ├── NestedEventCategoryDTO.java
│ │ │ │ ├── NestedEventDTO.java
│ │ │ │ ├── NestedMediaItemDTO.java
│ │ │ │ ├── NestedPerformanceDTO.java
│ │ │ │ ├── NestedSectionDTO.java
│ │ │ │ ├── NestedShowDTO.java
│ │ │ │ ├── NestedTicketCategoryDTO.java
│ │ │ │ ├── NestedTicketDTO.java
│ │ │ │ ├── NestedTicketPriceDTO.java
│ │ │ │ ├── NestedVenueDTO.java
│ │ │ │ ├── PerformanceDTO.java
│ │ │ │ ├── SeatDTO.java
│ │ │ │ ├── SectionAllocationDTO.java
│ │ │ │ ├── SectionDTO.java
│ │ │ │ ├── ShowDTO.java
│ │ │ │ ├── TicketCategoryDTO.java
│ │ │ │ ├── TicketDTO.java
│ │ │ │ ├── TicketPriceDTO.java
│ │ │ │ └── VenueDTO.java
│ │ │ ├── service
│ │ │ ├── AllocatedSeats.java
│ │ │ ├── Bot.java
│ │ │ ├── BotService.java
│ │ │ ├── MediaManager.java
│ │ │ ├── MediaPath.java
│ │ │ └── SeatAllocationService.java
│ │ │ └── util
│ │ │ ├── Base64.java
│ │ │ ├── CircularBuffer.java
│ │ │ ├── ForwardingMap.java
│ │ │ ├── Reflections.java
│ │ │ ├── Resources.java
│ │ │ └── qualifier
│ │ │ ├── BotMessage.java
│ │ │ ├── Cancelled.java
│ │ │ └── Created.java
│ ├── resources-mysql
│ │ └── META-INF
│ │ │ └── persistence.xml
│ ├── resources-postgresql
│ │ └── META-INF
│ │ │ └── persistence.xml
│ ├── resources
│ │ ├── META-INF
│ │ │ └── persistence.xml
│ │ ├── import.sql
│ │ ├── log4j.properties
│ │ └── not_available.jpg
│ ├── webapp
│ │ └── WEB-INF
│ │ │ ├── beans.xml
│ │ │ ├── jboss-deployment-structure.xml
│ │ │ ├── ticket-monster-ds.xml
│ │ │ └── web.xml
│ └── wf-standalone
│ │ ├── module
│ │ ├── module.xml
│ │ └── mysql-connector-java-5.1.38.jar
│ │ └── standalone.xml
│ └── test
│ ├── java
│ └── org
│ │ └── jboss
│ │ └── examples
│ │ └── ticketmonster
│ │ └── test
│ │ ├── TicketMonsterDeployment.java
│ │ └── rest
│ │ ├── BookingServiceTest.java
│ │ ├── EventServiceTest.java
│ │ ├── RESTDeployment.java
│ │ ├── ShowServiceTest.java
│ │ └── VenueServiceTest.java
│ └── resources
│ ├── META-INF
│ └── test-persistence.xml
│ ├── arquillian.xml
│ └── test-ds.xml
├── backend-v2
├── Readme.md
├── build-docker.sh
├── pom.xml
├── push-docker.sh
└── src
│ ├── main
│ ├── assembly
│ │ └── assembly.xml
│ ├── fabric8
│ │ └── deployment.yml
│ ├── java
│ │ └── org
│ │ │ └── jboss
│ │ │ └── examples
│ │ │ └── ticketmonster
│ │ │ ├── model
│ │ │ ├── Address.java
│ │ │ ├── Booking.java
│ │ │ ├── Event.java
│ │ │ ├── EventCategory.java
│ │ │ ├── MediaItem.java
│ │ │ ├── MediaType.java
│ │ │ ├── Performance.java
│ │ │ ├── Seat.java
│ │ │ ├── SeatAllocationException.java
│ │ │ ├── Section.java
│ │ │ ├── SectionAllocation.java
│ │ │ ├── Show.java
│ │ │ ├── Ticket.java
│ │ │ ├── TicketCategory.java
│ │ │ ├── TicketPrice.java
│ │ │ └── Venue.java
│ │ │ ├── orders
│ │ │ └── OrdersRequestDTO.java
│ │ │ ├── rest
│ │ │ ├── BaseEntityService.java
│ │ │ ├── BookingEndpoint.java
│ │ │ ├── BookingRequest.java
│ │ │ ├── BookingService.java
│ │ │ ├── BotState.java
│ │ │ ├── BotStatusService.java
│ │ │ ├── EventCategoryEndpoint.java
│ │ │ ├── EventEndpoint.java
│ │ │ ├── EventService.java
│ │ │ ├── JaxRsActivator.java
│ │ │ ├── MediaItemEndpoint.java
│ │ │ ├── MediaService.java
│ │ │ ├── MetricsService.java
│ │ │ ├── PerformanceEndpoint.java
│ │ │ ├── PerformanceMetric.java
│ │ │ ├── PingService.java
│ │ │ ├── ReaderExceptionMapper.java
│ │ │ ├── RestServiceException.java
│ │ │ ├── SectionAllocationEndpoint.java
│ │ │ ├── SectionComparator.java
│ │ │ ├── SectionEndpoint.java
│ │ │ ├── ShowEndpoint.java
│ │ │ ├── ShowMetric.java
│ │ │ ├── ShowService.java
│ │ │ ├── TicketCategoryEndpoint.java
│ │ │ ├── TicketEndpoint.java
│ │ │ ├── TicketPriceEndpoint.java
│ │ │ ├── TicketRequest.java
│ │ │ ├── VenueEndpoint.java
│ │ │ ├── VenueService.java
│ │ │ └── dto
│ │ │ │ ├── AddressDTO.java
│ │ │ │ ├── BookingDTO.java
│ │ │ │ ├── EventCategoryDTO.java
│ │ │ │ ├── EventDTO.java
│ │ │ │ ├── MediaItemDTO.java
│ │ │ │ ├── NestedEventCategoryDTO.java
│ │ │ │ ├── NestedEventDTO.java
│ │ │ │ ├── NestedMediaItemDTO.java
│ │ │ │ ├── NestedPerformanceDTO.java
│ │ │ │ ├── NestedSectionDTO.java
│ │ │ │ ├── NestedShowDTO.java
│ │ │ │ ├── NestedTicketCategoryDTO.java
│ │ │ │ ├── NestedTicketDTO.java
│ │ │ │ ├── NestedTicketPriceDTO.java
│ │ │ │ ├── NestedVenueDTO.java
│ │ │ │ ├── PerformanceDTO.java
│ │ │ │ ├── SeatDTO.java
│ │ │ │ ├── SectionAllocationDTO.java
│ │ │ │ ├── SectionDTO.java
│ │ │ │ ├── ShowDTO.java
│ │ │ │ ├── TicketCategoryDTO.java
│ │ │ │ ├── TicketDTO.java
│ │ │ │ ├── TicketPriceDTO.java
│ │ │ │ └── VenueDTO.java
│ │ │ ├── service
│ │ │ ├── AllocatedSeats.java
│ │ │ ├── Bot.java
│ │ │ ├── BotService.java
│ │ │ ├── MediaManager.java
│ │ │ ├── MediaPath.java
│ │ │ └── SeatAllocationService.java
│ │ │ ├── servlet
│ │ │ └── FF4jConsoleServlet.java
│ │ │ └── util
│ │ │ ├── Base64.java
│ │ │ ├── CircularBuffer.java
│ │ │ ├── FF4jFactory.java
│ │ │ ├── ForwardingMap.java
│ │ │ ├── Reflections.java
│ │ │ ├── Resources.java
│ │ │ └── qualifier
│ │ │ ├── BotMessage.java
│ │ │ ├── Cancelled.java
│ │ │ └── Created.java
│ ├── resources-mysql
│ │ └── META-INF
│ │ │ └── persistence.xml
│ ├── resources-postgresql
│ │ └── META-INF
│ │ │ └── persistence.xml
│ ├── resources
│ │ ├── META-INF
│ │ │ └── persistence.xml
│ │ ├── ff4j.xml
│ │ ├── import.sql
│ │ ├── log4j.properties
│ │ └── not_available.jpg
│ ├── webapp
│ │ └── WEB-INF
│ │ │ ├── beans.xml
│ │ │ ├── jboss-deployment-structure.xml
│ │ │ ├── ticket-monster-ds.xml
│ │ │ └── web.xml
│ └── wf-standalone
│ │ ├── module
│ │ ├── module.xml
│ │ └── mysql-connector-java-5.1.38.jar
│ │ └── standalone.xml
│ └── test
│ ├── java
│ └── org
│ │ └── jboss
│ │ └── examples
│ │ └── ticketmonster
│ │ └── test
│ │ ├── TicketMonsterDeployment.java
│ │ ├── rest
│ │ ├── BookingServiceTest.java
│ │ ├── EventServiceTest.java
│ │ ├── ExternalBookingContractTest.java
│ │ ├── ExternalBookingOrdersServiceTest.java
│ │ ├── RESTDeployment.java
│ │ ├── ShowServiceTest.java
│ │ └── VenueServiceTest.java
│ │ └── utils
│ │ └── BookingUtils.java
│ └── resources
│ ├── META-INF
│ └── test-persistence.xml
│ ├── arquillian.xml
│ ├── hoverfly
│ └── simulation.json
│ └── test-ds.xml
├── deployment
└── kubernetes
│ ├── core
│ ├── backend
│ │ ├── backend-svc.yml
│ │ ├── v1
│ │ │ ├── backend-v1-deployment.yml
│ │ │ └── backend-v1-svc.yml
│ │ └── v2
│ │ │ ├── backend-v2-deployment.yml
│ │ │ └── backend-v2-svc.yml
│ ├── frontend
│ │ ├── talk-to-backend
│ │ │ └── tm-ui-deployment.yml
│ │ ├── talk-to-monolith
│ │ │ └── tm-ui-deployment.yml
│ │ ├── ticket-monster-ingress.yml
│ │ └── tm-ui-svc.yml
│ ├── monolith
│ │ ├── mysql-deployment.yml
│ │ ├── mysql-svc.yml
│ │ ├── ticket-monster-deployment.yml
│ │ ├── ticket-monster-ingress.yml
│ │ ├── ticket-monster-svc.yml
│ │ └── tm-ui-svc.yml
│ └── orders
│ │ ├── mysql-deployment.yml
│ │ ├── mysql-svc.yml
│ │ ├── orders-mysql-configmap.yml
│ │ ├── orders-service-deployment.yml
│ │ └── orders-service-svc.yml
│ ├── demo
│ ├── cleanup.sh
│ ├── demo.sh
│ └── util.sh
│ ├── fabric8
│ ├── expose-controller.md
│ └── fabric8-expose-controller.yml
│ └── istio
│ ├── README.md
│ ├── get-urls.sh
│ ├── install.sh
│ └── route-rules
│ ├── route-tm-1pct-v2.yaml
│ ├── route-tm-v1.yaml
│ ├── route-tm-v2-dark-launch.yaml
│ └── route-tm-v2.yaml
├── monolith
├── README.md
├── build-docker.sh
├── pom.xml
├── push-docker.sh
└── src
│ ├── main
│ ├── assembly
│ │ └── assembly.xml
│ ├── java
│ │ └── org
│ │ │ └── jboss
│ │ │ └── examples
│ │ │ └── ticketmonster
│ │ │ ├── model
│ │ │ ├── Address.java
│ │ │ ├── Booking.java
│ │ │ ├── Event.java
│ │ │ ├── EventCategory.java
│ │ │ ├── MediaItem.java
│ │ │ ├── MediaType.java
│ │ │ ├── Performance.java
│ │ │ ├── Seat.java
│ │ │ ├── SeatAllocationException.java
│ │ │ ├── Section.java
│ │ │ ├── SectionAllocation.java
│ │ │ ├── Show.java
│ │ │ ├── Ticket.java
│ │ │ ├── TicketCategory.java
│ │ │ ├── TicketPrice.java
│ │ │ └── Venue.java
│ │ │ ├── rest
│ │ │ ├── BaseEntityService.java
│ │ │ ├── BookingEndpoint.java
│ │ │ ├── BookingRequest.java
│ │ │ ├── BookingService.java
│ │ │ ├── BotState.java
│ │ │ ├── BotStatusService.java
│ │ │ ├── EventCategoryEndpoint.java
│ │ │ ├── EventEndpoint.java
│ │ │ ├── EventService.java
│ │ │ ├── JaxRsActivator.java
│ │ │ ├── MediaItemEndpoint.java
│ │ │ ├── MediaService.java
│ │ │ ├── MetricsService.java
│ │ │ ├── PerformanceEndpoint.java
│ │ │ ├── PerformanceMetric.java
│ │ │ ├── ReaderExceptionMapper.java
│ │ │ ├── RestServiceException.java
│ │ │ ├── SectionAllocationEndpoint.java
│ │ │ ├── SectionComparator.java
│ │ │ ├── SectionEndpoint.java
│ │ │ ├── ShowEndpoint.java
│ │ │ ├── ShowMetric.java
│ │ │ ├── ShowService.java
│ │ │ ├── TicketCategoryEndpoint.java
│ │ │ ├── TicketEndpoint.java
│ │ │ ├── TicketPriceEndpoint.java
│ │ │ ├── TicketRequest.java
│ │ │ ├── VenueEndpoint.java
│ │ │ ├── VenueService.java
│ │ │ └── dto
│ │ │ │ ├── AddressDTO.java
│ │ │ │ ├── BookingDTO.java
│ │ │ │ ├── EventCategoryDTO.java
│ │ │ │ ├── EventDTO.java
│ │ │ │ ├── MediaItemDTO.java
│ │ │ │ ├── NestedEventCategoryDTO.java
│ │ │ │ ├── NestedEventDTO.java
│ │ │ │ ├── NestedMediaItemDTO.java
│ │ │ │ ├── NestedPerformanceDTO.java
│ │ │ │ ├── NestedSectionDTO.java
│ │ │ │ ├── NestedShowDTO.java
│ │ │ │ ├── NestedTicketCategoryDTO.java
│ │ │ │ ├── NestedTicketDTO.java
│ │ │ │ ├── NestedTicketPriceDTO.java
│ │ │ │ ├── NestedVenueDTO.java
│ │ │ │ ├── PerformanceDTO.java
│ │ │ │ ├── SeatDTO.java
│ │ │ │ ├── SectionAllocationDTO.java
│ │ │ │ ├── SectionDTO.java
│ │ │ │ ├── ShowDTO.java
│ │ │ │ ├── TicketCategoryDTO.java
│ │ │ │ ├── TicketDTO.java
│ │ │ │ ├── TicketPriceDTO.java
│ │ │ │ └── VenueDTO.java
│ │ │ ├── service
│ │ │ ├── AllocatedSeats.java
│ │ │ ├── Bot.java
│ │ │ ├── BotService.java
│ │ │ ├── MediaManager.java
│ │ │ ├── MediaPath.java
│ │ │ └── SeatAllocationService.java
│ │ │ └── util
│ │ │ ├── Base64.java
│ │ │ ├── CircularBuffer.java
│ │ │ ├── ForwardingMap.java
│ │ │ ├── Reflections.java
│ │ │ ├── Resources.java
│ │ │ └── qualifier
│ │ │ ├── BotMessage.java
│ │ │ ├── Cancelled.java
│ │ │ └── Created.java
│ ├── resources-mysql
│ │ └── META-INF
│ │ │ └── persistence.xml
│ ├── resources-postgresql
│ │ └── META-INF
│ │ │ └── persistence.xml
│ ├── resources
│ │ ├── META-INF
│ │ │ └── persistence.xml
│ │ ├── import.sql
│ │ ├── log4j.properties
│ │ └── not_available.jpg
│ ├── webapp
│ │ ├── WEB-INF
│ │ │ ├── beans.xml
│ │ │ ├── jboss-deployment-structure.xml
│ │ │ ├── ticket-monster-ds.xml
│ │ │ └── web.xml
│ │ ├── admin
│ │ │ ├── app.html
│ │ │ ├── fonts
│ │ │ │ ├── glyphicons-halflings-regular.eot
│ │ │ │ ├── glyphicons-halflings-regular.svg
│ │ │ │ ├── glyphicons-halflings-regular.ttf
│ │ │ │ ├── glyphicons-halflings-regular.woff
│ │ │ │ └── glyphicons-halflings-regular.woff2
│ │ │ ├── img
│ │ │ │ └── forge-logo.png
│ │ │ ├── index.html
│ │ │ ├── scripts
│ │ │ │ ├── app.js
│ │ │ │ ├── controllers
│ │ │ │ │ ├── editBookingController.js
│ │ │ │ │ ├── editEventCategoryController.js
│ │ │ │ │ ├── editEventController.js
│ │ │ │ │ ├── editMediaItemController.js
│ │ │ │ │ ├── editPerformanceController.js
│ │ │ │ │ ├── editSectionAllocationController.js
│ │ │ │ │ ├── editSectionController.js
│ │ │ │ │ ├── editShowController.js
│ │ │ │ │ ├── editTicketCategoryController.js
│ │ │ │ │ ├── editTicketController.js
│ │ │ │ │ ├── editTicketPriceController.js
│ │ │ │ │ ├── editVenueController.js
│ │ │ │ │ ├── flashController.js
│ │ │ │ │ ├── newBookingController.js
│ │ │ │ │ ├── newEventCategoryController.js
│ │ │ │ │ ├── newEventController.js
│ │ │ │ │ ├── newMediaItemController.js
│ │ │ │ │ ├── newPerformanceController.js
│ │ │ │ │ ├── newSectionAllocationController.js
│ │ │ │ │ ├── newSectionController.js
│ │ │ │ │ ├── newShowController.js
│ │ │ │ │ ├── newTicketCategoryController.js
│ │ │ │ │ ├── newTicketController.js
│ │ │ │ │ ├── newTicketPriceController.js
│ │ │ │ │ ├── newVenueController.js
│ │ │ │ │ ├── searchBookingController.js
│ │ │ │ │ ├── searchEventCategoryController.js
│ │ │ │ │ ├── searchEventController.js
│ │ │ │ │ ├── searchMediaItemController.js
│ │ │ │ │ ├── searchPerformanceController.js
│ │ │ │ │ ├── searchSectionAllocationController.js
│ │ │ │ │ ├── searchSectionController.js
│ │ │ │ │ ├── searchShowController.js
│ │ │ │ │ ├── searchTicketCategoryController.js
│ │ │ │ │ ├── searchTicketController.js
│ │ │ │ │ ├── searchTicketPriceController.js
│ │ │ │ │ └── searchVenueController.js
│ │ │ │ ├── directives
│ │ │ │ │ ├── datepicker.js
│ │ │ │ │ ├── datetimepicker.js
│ │ │ │ │ └── timepicker.js
│ │ │ │ ├── filters
│ │ │ │ │ ├── genericSearchFilter.js
│ │ │ │ │ └── startFromFilter.js
│ │ │ │ ├── offcanvas.js
│ │ │ │ ├── services
│ │ │ │ │ ├── BookingFactory.js
│ │ │ │ │ ├── EventCategoryFactory.js
│ │ │ │ │ ├── EventFactory.js
│ │ │ │ │ ├── MediaItemFactory.js
│ │ │ │ │ ├── PerformanceFactory.js
│ │ │ │ │ ├── SectionAllocationFactory.js
│ │ │ │ │ ├── SectionFactory.js
│ │ │ │ │ ├── ShowFactory.js
│ │ │ │ │ ├── TicketCategoryFactory.js
│ │ │ │ │ ├── TicketFactory.js
│ │ │ │ │ ├── TicketPriceFactory.js
│ │ │ │ │ ├── VenueFactory.js
│ │ │ │ │ ├── flash.js
│ │ │ │ │ └── locationParser.js
│ │ │ │ └── vendor
│ │ │ │ │ ├── angular-resource.js
│ │ │ │ │ ├── angular-route.js
│ │ │ │ │ ├── angular.js
│ │ │ │ │ ├── bootstrap.js
│ │ │ │ │ ├── jquery-2.1.1.js
│ │ │ │ │ └── modernizr-2.8.3.min.js
│ │ │ ├── styles
│ │ │ │ ├── bootstrap-theme.css
│ │ │ │ ├── bootstrap.css
│ │ │ │ ├── custom-forge.css
│ │ │ │ └── main.css
│ │ │ └── views
│ │ │ │ ├── Booking
│ │ │ │ ├── detail.html
│ │ │ │ └── search.html
│ │ │ │ ├── Event
│ │ │ │ ├── detail.html
│ │ │ │ └── search.html
│ │ │ │ ├── EventCategory
│ │ │ │ ├── detail.html
│ │ │ │ └── search.html
│ │ │ │ ├── MediaItem
│ │ │ │ ├── detail.html
│ │ │ │ └── search.html
│ │ │ │ ├── Performance
│ │ │ │ ├── detail.html
│ │ │ │ └── search.html
│ │ │ │ ├── Section
│ │ │ │ ├── detail.html
│ │ │ │ └── search.html
│ │ │ │ ├── SectionAllocation
│ │ │ │ ├── detail.html
│ │ │ │ └── search.html
│ │ │ │ ├── Show
│ │ │ │ ├── detail.html
│ │ │ │ └── search.html
│ │ │ │ ├── Ticket
│ │ │ │ ├── detail.html
│ │ │ │ └── search.html
│ │ │ │ ├── TicketCategory
│ │ │ │ ├── detail.html
│ │ │ │ └── search.html
│ │ │ │ ├── TicketPrice
│ │ │ │ ├── detail.html
│ │ │ │ └── search.html
│ │ │ │ ├── Venue
│ │ │ │ ├── detail.html
│ │ │ │ └── search.html
│ │ │ │ └── landing.html
│ │ ├── config.xml
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ ├── mobileapp.html
│ │ ├── res
│ │ │ ├── icon
│ │ │ │ ├── cordova_128.png
│ │ │ │ ├── cordova_16.png
│ │ │ │ ├── cordova_24.png
│ │ │ │ ├── cordova_256.png
│ │ │ │ ├── cordova_32.png
│ │ │ │ ├── cordova_48.png
│ │ │ │ ├── cordova_512.png
│ │ │ │ ├── cordova_64.png
│ │ │ │ ├── cordova_android_36.png
│ │ │ │ ├── cordova_android_48.png
│ │ │ │ ├── cordova_android_72.png
│ │ │ │ ├── cordova_android_96.png
│ │ │ │ ├── cordova_bb_80.png
│ │ │ │ ├── cordova_ios_114.png
│ │ │ │ ├── cordova_ios_144.png
│ │ │ │ ├── cordova_ios_57.png
│ │ │ │ └── cordova_ios_72.png
│ │ │ └── screen
│ │ │ │ ├── android_hdpi_landscape.png
│ │ │ │ ├── android_hdpi_portrait.png
│ │ │ │ ├── android_ldpi_landscape.png
│ │ │ │ ├── android_ldpi_portrait.png
│ │ │ │ ├── android_mdpi_landscape.png
│ │ │ │ ├── android_mdpi_portrait.png
│ │ │ │ ├── android_xhdpi_landscape.png
│ │ │ │ ├── android_xhdpi_portrait.png
│ │ │ │ ├── blackberry_transparent_300.png
│ │ │ │ ├── blackberry_transparent_400.png
│ │ │ │ ├── ipad_landscape.png
│ │ │ │ ├── ipad_portrait.png
│ │ │ │ ├── ipad_retina_landscape.png
│ │ │ │ ├── ipad_retina_portrait.png
│ │ │ │ ├── iphone_landscape.png
│ │ │ │ ├── iphone_portrait.png
│ │ │ │ ├── iphone_retina_landscape.png
│ │ │ │ ├── iphone_retina_portrait.png
│ │ │ │ └── windows_phone_portrait.jpg
│ │ └── resources
│ │ │ ├── css
│ │ │ ├── bootstrap-theme.css
│ │ │ ├── bootstrap.css
│ │ │ ├── m.screen.css
│ │ │ └── screen.css
│ │ │ ├── fonts
│ │ │ ├── glyphicons-halflings-regular.eot
│ │ │ ├── glyphicons-halflings-regular.svg
│ │ │ ├── glyphicons-halflings-regular.ttf
│ │ │ ├── glyphicons-halflings-regular.woff
│ │ │ └── glyphicons-halflings-regular.woff2
│ │ │ ├── img
│ │ │ ├── GitHub_Logo.png
│ │ │ ├── banner.png
│ │ │ ├── bg-dark.png
│ │ │ ├── bg-red.png
│ │ │ ├── bg.png
│ │ │ ├── btn-grey-hvr.png
│ │ │ ├── btn-grey.png
│ │ │ ├── btn-pink-hvr.png
│ │ │ ├── btn-pink.png
│ │ │ ├── glyphicons-halflings-white.png
│ │ │ ├── glyphicons-halflings.png
│ │ │ ├── glyphicons_019_cogwheel.png
│ │ │ ├── glyphicons_163_iphone.png
│ │ │ ├── glyphicons_232_cloud.png
│ │ │ ├── glyphicons_351_book_open.png
│ │ │ ├── jdf_logo_450px.png
│ │ │ ├── jdf_mark_100px.png
│ │ │ ├── jdf_mark_50px.png
│ │ │ ├── jdf_mark_75px.png
│ │ │ ├── logo.png
│ │ │ ├── nav-bg-dark.png
│ │ │ ├── nav-bg.png
│ │ │ ├── rhjb_eap_logo.png
│ │ │ └── splash-ticketmonster.png
│ │ │ └── js
│ │ │ ├── app
│ │ │ ├── aggregator
│ │ │ │ ├── desktop.js
│ │ │ │ ├── main.html
│ │ │ │ └── mobile.js
│ │ │ ├── api
│ │ │ │ └── services.js
│ │ │ ├── booking
│ │ │ │ ├── add-tickets.html
│ │ │ │ ├── booking-detail.html
│ │ │ │ ├── booking-list.html
│ │ │ │ ├── booking.html
│ │ │ │ ├── checkout-booking.html
│ │ │ │ └── view.js
│ │ │ ├── components
│ │ │ │ └── components.js
│ │ │ ├── eventDetail
│ │ │ │ ├── eventDetail.html
│ │ │ │ └── eventDetailView.js
│ │ │ ├── events
│ │ │ │ ├── events.html
│ │ │ │ └── eventsView.js
│ │ │ ├── home
│ │ │ │ ├── home.html
│ │ │ │ └── view.js
│ │ │ ├── monitor
│ │ │ │ ├── monitor.html
│ │ │ │ └── monitor.js
│ │ │ ├── venueDetail
│ │ │ │ ├── venueDetail.html
│ │ │ │ └── venueDetailView.js
│ │ │ └── venues
│ │ │ │ ├── venues.html
│ │ │ │ └── venuesView.js
│ │ │ ├── configurations
│ │ │ ├── desktop.js
│ │ │ ├── hybrid.js
│ │ │ ├── loader.js
│ │ │ └── mobile.js
│ │ │ └── libs
│ │ │ ├── angular-resource.js
│ │ │ ├── angular-route.js
│ │ │ ├── angular-touch.js
│ │ │ ├── angular.js
│ │ │ ├── bootstrap.js
│ │ │ ├── jquery-2.1.1.js
│ │ │ ├── modernizr-2.8.3.min.js
│ │ │ ├── require.js
│ │ │ ├── text.js
│ │ │ └── underscore.js
│ └── wf-standalone
│ │ ├── module
│ │ ├── module.xml
│ │ └── mysql-connector-java-5.1.38.jar
│ │ └── standalone.xml
│ └── test
│ ├── java
│ └── org
│ │ └── jboss
│ │ └── examples
│ │ └── ticketmonster
│ │ └── test
│ │ ├── TicketMonsterDeployment.java
│ │ └── rest
│ │ ├── BookingServiceTest.java
│ │ ├── EventServiceTest.java
│ │ ├── RESTDeployment.java
│ │ ├── ShowServiceTest.java
│ │ └── VenueServiceTest.java
│ └── resources
│ ├── META-INF
│ └── test-persistence.xml
│ ├── arquillian.xml
│ └── test-ds.xml
├── orders-service
├── Readme.md
├── build-docker.sh
├── docs
│ ├── hoverfly-capture.md
│ ├── json-schema.md
│ └── mysql.md
├── pom.xml
├── push-docker.sh
├── scripts
│ ├── grants.sql
│ ├── orders.sql
│ ├── ticketmonster00.sql
│ └── ticketmonster01.sql
└── src
│ ├── main
│ ├── fabric8
│ │ └── deployment.yml
│ ├── java
│ │ └── org
│ │ │ └── ticketmonster
│ │ │ └── orders
│ │ │ ├── Application.java
│ │ │ ├── booking
│ │ │ ├── AllocatedSeats.java
│ │ │ ├── BookingRequested.java
│ │ │ ├── BookingServiceController.java
│ │ │ ├── BookingStatus.java
│ │ │ ├── RestServiceException.java
│ │ │ ├── SeatAllocationService.java
│ │ │ ├── SectionComparator.java
│ │ │ └── TicketRequest.java
│ │ │ ├── config
│ │ │ └── TeiidDataSources.java
│ │ │ └── domain
│ │ │ ├── Booking.java
│ │ │ ├── EventId.java
│ │ │ ├── IdGenerator.java
│ │ │ ├── PerformanceId.java
│ │ │ ├── Seat.java
│ │ │ ├── SeatAllocationException.java
│ │ │ ├── Section.java
│ │ │ ├── SectionAllocation.java
│ │ │ ├── Show.java
│ │ │ ├── SyntheticBooking.java
│ │ │ ├── Ticket.java
│ │ │ ├── TicketCategory.java
│ │ │ ├── TicketPriceGuide.java
│ │ │ └── VenueId.java
│ └── resources
│ │ ├── application-kube.properties
│ │ ├── application-mysql.properties
│ │ ├── application.properties
│ │ └── h2
│ │ └── scripts
│ │ ├── legacydb-data.sql
│ │ ├── legacydb-schema.sql
│ │ ├── ordersdb-data.sql
│ │ └── ordersdb-schema.sql
│ └── test
│ ├── java
│ └── org
│ │ └── ticketmonster
│ │ └── orders
│ │ ├── BookingRequestedTest.java
│ │ ├── BookingServiceIT.java
│ │ ├── ConsumerContractTest.java
│ │ ├── HoverflyTest.java
│ │ ├── SimpleTest.java
│ │ ├── TeiidVdbQueryIT.java
│ │ └── config
│ │ └── TeiidTestDataSources.java
│ └── resources
│ ├── application.properties
│ ├── hoverfly
│ └── simulation.json
│ ├── json-schema
│ ├── rest-events.json
│ ├── rest-shows.json
│ ├── rest-single-booking.json
│ ├── rest-single-event.json
│ └── rest-single-show.json
│ └── pact
│ └── test_synthetic_order-orders_service.json
├── pom.xml
├── tm-ui-v1
├── Dockerfile
├── README.md
├── build-docker.sh
├── httpd.conf
├── public-html
│ ├── admin
│ │ ├── app.html
│ │ ├── fonts
│ │ │ ├── glyphicons-halflings-regular.eot
│ │ │ ├── glyphicons-halflings-regular.svg
│ │ │ ├── glyphicons-halflings-regular.ttf
│ │ │ ├── glyphicons-halflings-regular.woff
│ │ │ └── glyphicons-halflings-regular.woff2
│ │ ├── img
│ │ │ └── forge-logo.png
│ │ ├── index.html
│ │ ├── scripts
│ │ │ ├── app.js
│ │ │ ├── controllers
│ │ │ │ ├── editBookingController.js
│ │ │ │ ├── editEventCategoryController.js
│ │ │ │ ├── editEventController.js
│ │ │ │ ├── editMediaItemController.js
│ │ │ │ ├── editPerformanceController.js
│ │ │ │ ├── editSectionAllocationController.js
│ │ │ │ ├── editSectionController.js
│ │ │ │ ├── editShowController.js
│ │ │ │ ├── editTicketCategoryController.js
│ │ │ │ ├── editTicketController.js
│ │ │ │ ├── editTicketPriceController.js
│ │ │ │ ├── editVenueController.js
│ │ │ │ ├── flashController.js
│ │ │ │ ├── newBookingController.js
│ │ │ │ ├── newEventCategoryController.js
│ │ │ │ ├── newEventController.js
│ │ │ │ ├── newMediaItemController.js
│ │ │ │ ├── newPerformanceController.js
│ │ │ │ ├── newSectionAllocationController.js
│ │ │ │ ├── newSectionController.js
│ │ │ │ ├── newShowController.js
│ │ │ │ ├── newTicketCategoryController.js
│ │ │ │ ├── newTicketController.js
│ │ │ │ ├── newTicketPriceController.js
│ │ │ │ ├── newVenueController.js
│ │ │ │ ├── searchBookingController.js
│ │ │ │ ├── searchEventCategoryController.js
│ │ │ │ ├── searchEventController.js
│ │ │ │ ├── searchMediaItemController.js
│ │ │ │ ├── searchPerformanceController.js
│ │ │ │ ├── searchSectionAllocationController.js
│ │ │ │ ├── searchSectionController.js
│ │ │ │ ├── searchShowController.js
│ │ │ │ ├── searchTicketCategoryController.js
│ │ │ │ ├── searchTicketController.js
│ │ │ │ ├── searchTicketPriceController.js
│ │ │ │ └── searchVenueController.js
│ │ │ ├── directives
│ │ │ │ ├── datepicker.js
│ │ │ │ ├── datetimepicker.js
│ │ │ │ └── timepicker.js
│ │ │ ├── filters
│ │ │ │ ├── genericSearchFilter.js
│ │ │ │ └── startFromFilter.js
│ │ │ ├── offcanvas.js
│ │ │ ├── services
│ │ │ │ ├── BookingFactory.js
│ │ │ │ ├── EventCategoryFactory.js
│ │ │ │ ├── EventFactory.js
│ │ │ │ ├── MediaItemFactory.js
│ │ │ │ ├── PerformanceFactory.js
│ │ │ │ ├── SectionAllocationFactory.js
│ │ │ │ ├── SectionFactory.js
│ │ │ │ ├── ShowFactory.js
│ │ │ │ ├── TicketCategoryFactory.js
│ │ │ │ ├── TicketFactory.js
│ │ │ │ ├── TicketPriceFactory.js
│ │ │ │ ├── VenueFactory.js
│ │ │ │ ├── flash.js
│ │ │ │ └── locationParser.js
│ │ │ └── vendor
│ │ │ │ ├── angular-resource.js
│ │ │ │ ├── angular-route.js
│ │ │ │ ├── angular.js
│ │ │ │ ├── bootstrap.js
│ │ │ │ ├── jquery-2.1.1.js
│ │ │ │ └── modernizr-2.8.3.min.js
│ │ ├── styles
│ │ │ ├── bootstrap-theme.css
│ │ │ ├── bootstrap.css
│ │ │ ├── custom-forge.css
│ │ │ └── main.css
│ │ └── views
│ │ │ ├── Booking
│ │ │ ├── detail.html
│ │ │ └── search.html
│ │ │ ├── Event
│ │ │ ├── detail.html
│ │ │ └── search.html
│ │ │ ├── EventCategory
│ │ │ ├── detail.html
│ │ │ └── search.html
│ │ │ ├── MediaItem
│ │ │ ├── detail.html
│ │ │ └── search.html
│ │ │ ├── Performance
│ │ │ ├── detail.html
│ │ │ └── search.html
│ │ │ ├── Section
│ │ │ ├── detail.html
│ │ │ └── search.html
│ │ │ ├── SectionAllocation
│ │ │ ├── detail.html
│ │ │ └── search.html
│ │ │ ├── Show
│ │ │ ├── detail.html
│ │ │ └── search.html
│ │ │ ├── Ticket
│ │ │ ├── detail.html
│ │ │ └── search.html
│ │ │ ├── TicketCategory
│ │ │ ├── detail.html
│ │ │ └── search.html
│ │ │ ├── TicketPrice
│ │ │ ├── detail.html
│ │ │ └── search.html
│ │ │ ├── Venue
│ │ │ ├── detail.html
│ │ │ └── search.html
│ │ │ └── landing.html
│ ├── config.xml
│ ├── favicon.ico
│ ├── index.html
│ ├── mobileapp.html
│ ├── res
│ │ ├── icon
│ │ │ ├── cordova_128.png
│ │ │ ├── cordova_16.png
│ │ │ ├── cordova_24.png
│ │ │ ├── cordova_256.png
│ │ │ ├── cordova_32.png
│ │ │ ├── cordova_48.png
│ │ │ ├── cordova_512.png
│ │ │ ├── cordova_64.png
│ │ │ ├── cordova_android_36.png
│ │ │ ├── cordova_android_48.png
│ │ │ ├── cordova_android_72.png
│ │ │ ├── cordova_android_96.png
│ │ │ ├── cordova_bb_80.png
│ │ │ ├── cordova_ios_114.png
│ │ │ ├── cordova_ios_144.png
│ │ │ ├── cordova_ios_57.png
│ │ │ └── cordova_ios_72.png
│ │ └── screen
│ │ │ ├── android_hdpi_landscape.png
│ │ │ ├── android_hdpi_portrait.png
│ │ │ ├── android_ldpi_landscape.png
│ │ │ ├── android_ldpi_portrait.png
│ │ │ ├── android_mdpi_landscape.png
│ │ │ ├── android_mdpi_portrait.png
│ │ │ ├── android_xhdpi_landscape.png
│ │ │ ├── android_xhdpi_portrait.png
│ │ │ ├── blackberry_transparent_300.png
│ │ │ ├── blackberry_transparent_400.png
│ │ │ ├── ipad_landscape.png
│ │ │ ├── ipad_portrait.png
│ │ │ ├── ipad_retina_landscape.png
│ │ │ ├── ipad_retina_portrait.png
│ │ │ ├── iphone_landscape.png
│ │ │ ├── iphone_portrait.png
│ │ │ ├── iphone_retina_landscape.png
│ │ │ ├── iphone_retina_portrait.png
│ │ │ └── windows_phone_portrait.jpg
│ └── resources
│ │ ├── css
│ │ ├── bootstrap-theme.css
│ │ ├── bootstrap.css
│ │ ├── m.screen.css
│ │ └── screen.css
│ │ ├── fonts
│ │ ├── glyphicons-halflings-regular.eot
│ │ ├── glyphicons-halflings-regular.svg
│ │ ├── glyphicons-halflings-regular.ttf
│ │ ├── glyphicons-halflings-regular.woff
│ │ └── glyphicons-halflings-regular.woff2
│ │ ├── img
│ │ ├── GitHub_Logo.png
│ │ ├── banner.png
│ │ ├── bg-dark.png
│ │ ├── bg-red.png
│ │ ├── bg.png
│ │ ├── btn-grey-hvr.png
│ │ ├── btn-grey.png
│ │ ├── btn-pink-hvr.png
│ │ ├── btn-pink.png
│ │ ├── glyphicons-halflings-white.png
│ │ ├── glyphicons-halflings.png
│ │ ├── glyphicons_019_cogwheel.png
│ │ ├── glyphicons_163_iphone.png
│ │ ├── glyphicons_232_cloud.png
│ │ ├── glyphicons_351_book_open.png
│ │ ├── jdf_logo_450px.png
│ │ ├── jdf_mark_100px.png
│ │ ├── jdf_mark_50px.png
│ │ ├── jdf_mark_75px.png
│ │ ├── logo.png
│ │ ├── nav-bg-dark.png
│ │ ├── nav-bg.png
│ │ ├── rhjb_eap_logo.png
│ │ └── splash-ticketmonster.png
│ │ └── js
│ │ ├── app
│ │ ├── aggregator
│ │ │ ├── desktop.js
│ │ │ ├── main.html
│ │ │ └── mobile.js
│ │ ├── api
│ │ │ └── services.js
│ │ ├── booking
│ │ │ ├── add-tickets.html
│ │ │ ├── booking-detail.html
│ │ │ ├── booking-list.html
│ │ │ ├── booking.html
│ │ │ ├── checkout-booking.html
│ │ │ └── view.js
│ │ ├── components
│ │ │ └── components.js
│ │ ├── eventDetail
│ │ │ ├── eventDetail.html
│ │ │ └── eventDetailView.js
│ │ ├── events
│ │ │ ├── events.html
│ │ │ └── eventsView.js
│ │ ├── home
│ │ │ ├── home.html
│ │ │ └── view.js
│ │ ├── monitor
│ │ │ ├── monitor.html
│ │ │ └── monitor.js
│ │ ├── venueDetail
│ │ │ ├── venueDetail.html
│ │ │ └── venueDetailView.js
│ │ └── venues
│ │ │ ├── venues.html
│ │ │ └── venuesView.js
│ │ ├── configurations
│ │ ├── desktop.js
│ │ ├── hybrid.js
│ │ ├── loader.js
│ │ └── mobile.js
│ │ └── libs
│ │ ├── angular-resource.js
│ │ ├── angular-route.js
│ │ ├── angular-touch.js
│ │ ├── angular.js
│ │ ├── bootstrap.js
│ │ ├── jquery-2.1.1.js
│ │ ├── modernizr-2.8.3.min.js
│ │ ├── require.js
│ │ ├── text.js
│ │ └── underscore.js
└── push-docker.sh
└── tm-ui-v2
├── Dockerfile
├── README.md
├── build-docker.sh
├── httpd.conf
├── public-html
├── admin
│ ├── app.html
│ ├── fonts
│ │ ├── glyphicons-halflings-regular.eot
│ │ ├── glyphicons-halflings-regular.svg
│ │ ├── glyphicons-halflings-regular.ttf
│ │ ├── glyphicons-halflings-regular.woff
│ │ └── glyphicons-halflings-regular.woff2
│ ├── img
│ │ └── forge-logo.png
│ ├── index.html
│ ├── scripts
│ │ ├── app.js
│ │ ├── controllers
│ │ │ ├── editBookingController.js
│ │ │ ├── editEventCategoryController.js
│ │ │ ├── editEventController.js
│ │ │ ├── editMediaItemController.js
│ │ │ ├── editPerformanceController.js
│ │ │ ├── editSectionAllocationController.js
│ │ │ ├── editSectionController.js
│ │ │ ├── editShowController.js
│ │ │ ├── editTicketCategoryController.js
│ │ │ ├── editTicketController.js
│ │ │ ├── editTicketPriceController.js
│ │ │ ├── editVenueController.js
│ │ │ ├── flashController.js
│ │ │ ├── newBookingController.js
│ │ │ ├── newEventCategoryController.js
│ │ │ ├── newEventController.js
│ │ │ ├── newMediaItemController.js
│ │ │ ├── newPerformanceController.js
│ │ │ ├── newSectionAllocationController.js
│ │ │ ├── newSectionController.js
│ │ │ ├── newShowController.js
│ │ │ ├── newTicketCategoryController.js
│ │ │ ├── newTicketController.js
│ │ │ ├── newTicketPriceController.js
│ │ │ ├── newVenueController.js
│ │ │ ├── searchBookingController.js
│ │ │ ├── searchEventCategoryController.js
│ │ │ ├── searchEventController.js
│ │ │ ├── searchMediaItemController.js
│ │ │ ├── searchPerformanceController.js
│ │ │ ├── searchSectionAllocationController.js
│ │ │ ├── searchSectionController.js
│ │ │ ├── searchShowController.js
│ │ │ ├── searchTicketCategoryController.js
│ │ │ ├── searchTicketController.js
│ │ │ ├── searchTicketPriceController.js
│ │ │ └── searchVenueController.js
│ │ ├── directives
│ │ │ ├── datepicker.js
│ │ │ ├── datetimepicker.js
│ │ │ └── timepicker.js
│ │ ├── filters
│ │ │ ├── genericSearchFilter.js
│ │ │ └── startFromFilter.js
│ │ ├── offcanvas.js
│ │ ├── services
│ │ │ ├── BookingFactory.js
│ │ │ ├── EventCategoryFactory.js
│ │ │ ├── EventFactory.js
│ │ │ ├── MediaItemFactory.js
│ │ │ ├── PerformanceFactory.js
│ │ │ ├── SectionAllocationFactory.js
│ │ │ ├── SectionFactory.js
│ │ │ ├── ShowFactory.js
│ │ │ ├── TicketCategoryFactory.js
│ │ │ ├── TicketFactory.js
│ │ │ ├── TicketPriceFactory.js
│ │ │ ├── VenueFactory.js
│ │ │ ├── flash.js
│ │ │ └── locationParser.js
│ │ └── vendor
│ │ │ ├── angular-resource.js
│ │ │ ├── angular-route.js
│ │ │ ├── angular.js
│ │ │ ├── bootstrap.js
│ │ │ ├── jquery-2.1.1.js
│ │ │ └── modernizr-2.8.3.min.js
│ ├── styles
│ │ ├── bootstrap-theme.css
│ │ ├── bootstrap.css
│ │ ├── custom-forge.css
│ │ └── main.css
│ └── views
│ │ ├── Booking
│ │ ├── detail.html
│ │ └── search.html
│ │ ├── Event
│ │ ├── detail.html
│ │ └── search.html
│ │ ├── EventCategory
│ │ ├── detail.html
│ │ └── search.html
│ │ ├── MediaItem
│ │ ├── detail.html
│ │ └── search.html
│ │ ├── Performance
│ │ ├── detail.html
│ │ └── search.html
│ │ ├── Section
│ │ ├── detail.html
│ │ └── search.html
│ │ ├── SectionAllocation
│ │ ├── detail.html
│ │ └── search.html
│ │ ├── Show
│ │ ├── detail.html
│ │ └── search.html
│ │ ├── Ticket
│ │ ├── detail.html
│ │ └── search.html
│ │ ├── TicketCategory
│ │ ├── detail.html
│ │ └── search.html
│ │ ├── TicketPrice
│ │ ├── detail.html
│ │ └── search.html
│ │ ├── Venue
│ │ ├── detail.html
│ │ └── search.html
│ │ └── landing.html
├── config.xml
├── favicon.ico
├── index.html
├── mobileapp.html
├── res
│ ├── icon
│ │ ├── cordova_128.png
│ │ ├── cordova_16.png
│ │ ├── cordova_24.png
│ │ ├── cordova_256.png
│ │ ├── cordova_32.png
│ │ ├── cordova_48.png
│ │ ├── cordova_512.png
│ │ ├── cordova_64.png
│ │ ├── cordova_android_36.png
│ │ ├── cordova_android_48.png
│ │ ├── cordova_android_72.png
│ │ ├── cordova_android_96.png
│ │ ├── cordova_bb_80.png
│ │ ├── cordova_ios_114.png
│ │ ├── cordova_ios_144.png
│ │ ├── cordova_ios_57.png
│ │ └── cordova_ios_72.png
│ └── screen
│ │ ├── android_hdpi_landscape.png
│ │ ├── android_hdpi_portrait.png
│ │ ├── android_ldpi_landscape.png
│ │ ├── android_ldpi_portrait.png
│ │ ├── android_mdpi_landscape.png
│ │ ├── android_mdpi_portrait.png
│ │ ├── android_xhdpi_landscape.png
│ │ ├── android_xhdpi_portrait.png
│ │ ├── blackberry_transparent_300.png
│ │ ├── blackberry_transparent_400.png
│ │ ├── ipad_landscape.png
│ │ ├── ipad_portrait.png
│ │ ├── ipad_retina_landscape.png
│ │ ├── ipad_retina_portrait.png
│ │ ├── iphone_landscape.png
│ │ ├── iphone_portrait.png
│ │ ├── iphone_retina_landscape.png
│ │ ├── iphone_retina_portrait.png
│ │ └── windows_phone_portrait.jpg
└── resources
│ ├── css
│ ├── bootstrap-theme.css
│ ├── bootstrap.css
│ ├── m.screen.css
│ └── screen.css
│ ├── fonts
│ ├── glyphicons-halflings-regular.eot
│ ├── glyphicons-halflings-regular.svg
│ ├── glyphicons-halflings-regular.ttf
│ ├── glyphicons-halflings-regular.woff
│ └── glyphicons-halflings-regular.woff2
│ ├── img
│ ├── GitHub_Logo.png
│ ├── banner.png
│ ├── bg-dark.png
│ ├── bg-red.png
│ ├── bg.png
│ ├── btn-grey-hvr.png
│ ├── btn-grey.png
│ ├── btn-pink-hvr.png
│ ├── btn-pink.png
│ ├── glyphicons-halflings-white.png
│ ├── glyphicons-halflings.png
│ ├── glyphicons_019_cogwheel.png
│ ├── glyphicons_163_iphone.png
│ ├── glyphicons_232_cloud.png
│ ├── glyphicons_351_book_open.png
│ ├── jdf_logo_450px.png
│ ├── jdf_mark_100px.png
│ ├── jdf_mark_50px.png
│ ├── jdf_mark_75px.png
│ ├── logo.png
│ ├── nav-bg-dark.png
│ ├── nav-bg.png
│ ├── rhjb_eap_logo.png
│ └── splash-ticketmonster.png
│ └── js
│ ├── app
│ ├── aggregator
│ │ ├── desktop.js
│ │ ├── main.html
│ │ └── mobile.js
│ ├── api
│ │ └── services.js
│ ├── booking
│ │ ├── add-tickets.html
│ │ ├── booking-detail.html
│ │ ├── booking-list.html
│ │ ├── booking.html
│ │ ├── checkout-booking.html
│ │ └── view.js
│ ├── components
│ │ └── components.js
│ ├── eventDetail
│ │ ├── eventDetail.html
│ │ └── eventDetailView.js
│ ├── events
│ │ ├── events.html
│ │ └── eventsView.js
│ ├── home
│ │ ├── home.html
│ │ └── view.js
│ ├── monitor
│ │ ├── monitor.html
│ │ └── monitor.js
│ ├── venueDetail
│ │ ├── venueDetail.html
│ │ └── venueDetailView.js
│ └── venues
│ │ ├── venues.html
│ │ └── venuesView.js
│ ├── configurations
│ ├── desktop.js
│ ├── hybrid.js
│ ├── loader.js
│ └── mobile.js
│ └── libs
│ ├── angular-resource.js
│ ├── angular-route.js
│ ├── angular-touch.js
│ ├── angular.js
│ ├── bootstrap.js
│ ├── jquery-2.1.1.js
│ ├── modernizr-2.8.3.min.js
│ ├── require.js
│ ├── text.js
│ └── underscore.js
└── push-docker.sh
/.gitignore:
--------------------------------------------------------------------------------
1 | target
2 | .idea
3 | *.iml
4 | *.log
5 | .classpath
6 | .project
7 | .settings
8 | deployments
9 | orders-service/ObjectStore/
10 | deployment/kubernetes/istio/istio-0.*
11 |
--------------------------------------------------------------------------------
/backend-v1/Readme.md:
--------------------------------------------------------------------------------
1 | This `backend` module contains the monolith Ticket Monster service **without** the UI. Use an external UI to connect pu to the REST API that this service exposes.
2 |
3 |
4 | ## How to build
5 |
6 | Build the source code to connect to a MySQL database. Note the, default url that will be used is `mysql-backend:3306`
7 |
8 | ```
9 | mvn clean install -Pmysql,kubernetes
10 | ```
11 |
12 | To build the docker image associated with this:
13 |
14 | ```
15 | mvn clean install -Pmysql,kubernetes fabric8:build
16 | ```
17 |
18 | This will create a docker image named `ceposta/backend-mysql:latest`. This image is the same image that should be on Docker Hub: [https://hub.docker.com/r/ceposta/backend-mysql/](https://hub.docker.com/r/ceposta/backend-mysql/)
19 |
20 | This is the same image used in the deployment scripts.
21 |
22 | If you want the `backend` service before we added scientist/FF impl, checkout this SHA: a07942b
--------------------------------------------------------------------------------
/backend-v1/build-docker.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | mvn clean install -Pmysql,kubernetes fabric8:build -Ddocker.image.name=ceposta/backend-mysql:v1
--------------------------------------------------------------------------------
/backend-v1/push-docker.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | docker push ceposta/backend-mysql:v1
--------------------------------------------------------------------------------
/backend-v1/src/main/fabric8/deployment.yml:
--------------------------------------------------------------------------------
1 | spec:
2 | template:
3 | metadata:
4 | labels:
5 | service: backend
6 | spec:
7 | containers:
8 | - livenessProbe:
9 | httpGet:
10 | path: /rest/ping
11 | port: 8080
12 | initialDelaySeconds: 60
13 | periodSeconds: 30
14 | readinessProbe:
15 | httpGet:
16 | path: /rest/ping
17 | port: 8080
18 | initialDelaySeconds: 60
19 | periodSeconds: 30
20 |
--------------------------------------------------------------------------------
/backend-v1/src/main/java/org/jboss/examples/ticketmonster/model/SeatAllocationException.java:
--------------------------------------------------------------------------------
1 | package org.jboss.examples.ticketmonster.model;
2 |
3 | import javax.ejb.ApplicationException;
4 |
5 | /**
6 | *
7 | * The exception thrown if an error occurs in seat allocation.
8 | *
9 | *
10 | * We mark it as {@link ApplicationException} because it is part of the application logic. Also,
11 | * we want the container to roll back automatically when it is thrown.
12 | *
13 | *
14 | * @author Marius Bogoevici
15 | */
16 | @SuppressWarnings("serial")
17 | @ApplicationException(rollback = true)
18 | public class SeatAllocationException extends RuntimeException {
19 |
20 | public SeatAllocationException() {
21 | }
22 |
23 | public SeatAllocationException(String s) {
24 | super(s);
25 | }
26 |
27 | public SeatAllocationException(String s, Throwable throwable) {
28 | super(s, throwable);
29 | }
30 |
31 | public SeatAllocationException(Throwable throwable) {
32 | super(throwable);
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/backend-v1/src/main/java/org/jboss/examples/ticketmonster/rest/BotState.java:
--------------------------------------------------------------------------------
1 | package org.jboss.examples.ticketmonster.rest;
2 |
3 | /**
4 | * An enumeration that represents the possible states for the Bot.
5 | *
6 | * @author Vineet Reynolds
7 | *
8 | */
9 | public enum BotState {
10 | RUNNING, NOT_RUNNING, RESET
11 | }
12 |
--------------------------------------------------------------------------------
/backend-v1/src/main/java/org/jboss/examples/ticketmonster/rest/JaxRsActivator.java:
--------------------------------------------------------------------------------
1 | package org.jboss.examples.ticketmonster.rest;
2 |
3 | import javax.ws.rs.ApplicationPath;
4 | import javax.ws.rs.core.Application;
5 |
6 | /**
7 | * A class extending {@link Application} and annotated with @ApplicationPath is the Java EE
8 | * "no XML" approach to activating JAX-RS.
9 | *
10 | *
11 | * Resources are served relative to the servlet path specified in the {@link ApplicationPath}
12 | * annotation.
13 | *
14 | */
15 | @ApplicationPath("/rest")
16 | public class JaxRsActivator extends Application {
17 | /* class body intentionally left blank */
18 | }
19 |
--------------------------------------------------------------------------------
/backend-v1/src/main/java/org/jboss/examples/ticketmonster/rest/PerformanceMetric.java:
--------------------------------------------------------------------------------
1 | package org.jboss.examples.ticketmonster.rest;
2 |
3 | import java.util.Date;
4 |
5 | import org.jboss.examples.ticketmonster.model.Performance;
6 |
7 | /**
8 | * Metric data for a Performance. Contains the datetime for the performance to
9 | * identify the performance, as well as the occupied count for the performance.
10 | *
11 | * @author Vineet Reynolds
12 | *
13 | */
14 | class PerformanceMetric {
15 |
16 | private Date date;
17 | private Long occupiedCount;
18 |
19 | // Constructor to populate the instance with data
20 | public PerformanceMetric(Performance performance, Long occupiedCount) {
21 | this.date = performance.getDate();
22 | this.occupiedCount = (occupiedCount == null ? 0 : occupiedCount);
23 | }
24 |
25 | // Getters for Jackson
26 | // NOTE: No setters and default constructors are defined since
27 | // deserialization is not required.
28 |
29 | public Date getDate() {
30 | return date;
31 | }
32 |
33 | public Long getOccupiedCount() {
34 | return occupiedCount;
35 | }
36 |
37 | }
--------------------------------------------------------------------------------
/backend-v1/src/main/java/org/jboss/examples/ticketmonster/rest/SectionComparator.java:
--------------------------------------------------------------------------------
1 | package org.jboss.examples.ticketmonster.rest;
2 |
3 | import java.util.Comparator;
4 |
5 | import org.jboss.examples.ticketmonster.model.Section;
6 |
7 | /**
8 | * A utility comparator for sections, sorting them by id
9 | *
10 | * @author Marius Bogoevici
11 | */
12 | public class SectionComparator implements Comparator {
13 |
14 | private static final SectionComparator INSTANCE = new SectionComparator();
15 |
16 | private SectionComparator(){
17 | }
18 |
19 | public static SectionComparator instance() {
20 | return INSTANCE;
21 | }
22 |
23 | @Override
24 | public int compare(Section section, Section otherSection) {
25 | return section.getId().compareTo(otherSection.getId());
26 | }
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/backend-v1/src/main/java/org/jboss/examples/ticketmonster/rest/TicketRequest.java:
--------------------------------------------------------------------------------
1 | package org.jboss.examples.ticketmonster.rest;
2 |
3 | import org.jboss.examples.ticketmonster.model.TicketPrice;
4 |
5 | /**
6 | *
7 | * A {@link BookingRequest} will contain multiple {@link TicketRequest}s.
8 | *
9 | *
10 | * @author Marius Bogoevici
11 | * @author Pete Muir
12 | *
13 | */
14 | public class TicketRequest {
15 |
16 | private long ticketPrice;
17 |
18 | private int quantity;
19 |
20 | public TicketRequest() {
21 | // Empty constructor
22 | }
23 |
24 | public TicketRequest(TicketPrice ticketPrice, int quantity) {
25 | this.ticketPrice = ticketPrice.getId();
26 | this.quantity = quantity;
27 | }
28 |
29 | public long getTicketPrice() {
30 | return ticketPrice;
31 | }
32 |
33 | public void setTicketPrice(long ticketPrice) {
34 | this.ticketPrice = ticketPrice;
35 | }
36 |
37 | public int getQuantity() {
38 | return quantity;
39 | }
40 |
41 | public void setQuantity(int quantity) {
42 | this.quantity = quantity;
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/backend-v1/src/main/java/org/jboss/examples/ticketmonster/rest/VenueService.java:
--------------------------------------------------------------------------------
1 | package org.jboss.examples.ticketmonster.rest;
2 |
3 | import javax.ejb.Stateless;
4 | import javax.ws.rs.Path;
5 |
6 | import org.jboss.examples.ticketmonster.model.Venue;
7 |
8 | /**
9 | *
10 | * A JAX-RS endpoint for handling {@link Venue}s. Inherits the actual
11 | * methods from {@link BaseEntityService}.
12 | *
13 | *
14 | * @author Marius Bogoevici
15 | */
16 | @Path("/venues")
17 | /**
18 | *
19 | * This is a stateless service, we declare it as an EJB for transaction demarcation
20 | *
21 | */
22 | @Stateless
23 | public class VenueService extends BaseEntityService {
24 |
25 | public VenueService() {
26 | super(Venue.class);
27 | }
28 |
29 | }
--------------------------------------------------------------------------------
/backend-v1/src/main/java/org/jboss/examples/ticketmonster/service/AllocatedSeats.java:
--------------------------------------------------------------------------------
1 | package org.jboss.examples.ticketmonster.service;
2 |
3 | import java.util.List;
4 |
5 | import org.jboss.examples.ticketmonster.model.Seat;
6 | import org.jboss.examples.ticketmonster.model.SectionAllocation;
7 |
8 | /**
9 | * A transient object which represents a collection of pre-allocated seats
10 | *
11 | * @author Marius Bogoevici
12 | */
13 | public class AllocatedSeats {
14 |
15 | private final SectionAllocation sectionAllocation;
16 |
17 | private final List seats;
18 |
19 | public AllocatedSeats(SectionAllocation sectionAllocation, List seats) {
20 | this.sectionAllocation = sectionAllocation;
21 | this.seats = seats;
22 | }
23 |
24 | public SectionAllocation getSectionAllocation() {
25 | return sectionAllocation;
26 | }
27 |
28 | public List getSeats() {
29 | return seats;
30 | }
31 |
32 | public void markOccupied() {
33 | sectionAllocation.markOccupied(seats);
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/backend-v1/src/main/java/org/jboss/examples/ticketmonster/service/MediaPath.java:
--------------------------------------------------------------------------------
1 | package org.jboss.examples.ticketmonster.service;
2 |
3 | import org.jboss.examples.ticketmonster.model.MediaType;
4 |
5 | public class MediaPath {
6 |
7 | private final String url;
8 | private final boolean cached;
9 | private final MediaType mediaType;
10 |
11 | public MediaPath(String url, boolean cached, MediaType mediaType) {
12 | this.url = url;
13 | this.cached = cached;
14 | this.mediaType = mediaType;
15 | }
16 |
17 | public String getUrl() {
18 | return url;
19 | }
20 |
21 | public boolean isCached() {
22 | return cached;
23 | }
24 |
25 | public MediaType getMediaType() {
26 | return mediaType;
27 | }
28 |
29 | }
30 |
--------------------------------------------------------------------------------
/backend-v1/src/main/java/org/jboss/examples/ticketmonster/util/Reflections.java:
--------------------------------------------------------------------------------
1 | package org.jboss.examples.ticketmonster.util;
2 |
3 | import java.net.URL;
4 |
5 | /**
6 | * Utilities relating to Java reflection
7 | *
8 | * @author pmuir
9 | *
10 | */
11 | public class Reflections {
12 |
13 | private Reflections() {
14 | }
15 |
16 | /**
17 | * Get a resource by name, first searching the thread context classloader, and then the classloader of the Reflections
18 | * class.
19 | */
20 | public static URL getResource(String name) {
21 | if (Thread.currentThread().getContextClassLoader() != null) {
22 | return Thread.currentThread().getContextClassLoader().getResource(name);
23 | } else {
24 | return Reflections.class.getClassLoader().getResource(name);
25 | }
26 | }
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/backend-v1/src/main/java/org/jboss/examples/ticketmonster/util/qualifier/BotMessage.java:
--------------------------------------------------------------------------------
1 | package org.jboss.examples.ticketmonster.util.qualifier;
2 |
3 | import java.lang.annotation.Documented;
4 | import java.lang.annotation.Retention;
5 | import java.lang.annotation.Target;
6 |
7 | import javax.inject.Qualifier;
8 |
9 | import static java.lang.annotation.ElementType.FIELD;
10 | import static java.lang.annotation.ElementType.METHOD;
11 | import static java.lang.annotation.ElementType.PARAMETER;
12 | import static java.lang.annotation.ElementType.TYPE;
13 | import static java.lang.annotation.RetentionPolicy.RUNTIME;
14 |
15 | @Qualifier
16 | @Target({ TYPE, METHOD, PARAMETER, FIELD })
17 | @Retention(RUNTIME)
18 | @Documented
19 | public @interface BotMessage {
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/backend-v1/src/main/java/org/jboss/examples/ticketmonster/util/qualifier/Cancelled.java:
--------------------------------------------------------------------------------
1 | package org.jboss.examples.ticketmonster.util.qualifier;
2 |
3 | import java.lang.annotation.ElementType;
4 | import java.lang.annotation.Retention;
5 | import java.lang.annotation.RetentionPolicy;
6 | import java.lang.annotation.Target;
7 |
8 | import javax.inject.Qualifier;
9 |
10 | /**
11 | * {@link Qualifier} to mark a Booking as cancelled.
12 | *
13 | * @author Christian Sadilek
14 | */
15 | @Qualifier
16 | @Target({ElementType.FIELD,ElementType.PARAMETER,ElementType.METHOD,ElementType.TYPE})
17 | @Retention(RetentionPolicy.RUNTIME)
18 | public @interface Cancelled {
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/backend-v1/src/main/java/org/jboss/examples/ticketmonster/util/qualifier/Created.java:
--------------------------------------------------------------------------------
1 | package org.jboss.examples.ticketmonster.util.qualifier;
2 |
3 | import java.lang.annotation.ElementType;
4 | import java.lang.annotation.Retention;
5 | import java.lang.annotation.RetentionPolicy;
6 | import java.lang.annotation.Target;
7 |
8 | import javax.inject.Qualifier;
9 |
10 | /**
11 | * {@link Qualifier} to mark a Booking as new (created).
12 | *
13 | * @author Christian Sadilek
14 | */
15 | @Qualifier
16 | @Target({ElementType.FIELD,ElementType.PARAMETER,ElementType.METHOD,ElementType.TYPE})
17 | @Retention(RetentionPolicy.RUNTIME)
18 | public @interface Created {
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/backend-v1/src/main/resources/log4j.properties:
--------------------------------------------------------------------------------
1 | log4j.rootLogger=INFO, mainlogger
2 | log4j.appender.mainlogger=org.apache.log4j.ConsoleAppender
3 | log4j.appender.mainlogger.target=System.out
4 | log4j.appender.mainlogger.layout=org.apache.log4j.PatternLayout
5 | log4j.appender.mainlogger.layout.ConversionPattern=%p [%c{1}] %m%n
--------------------------------------------------------------------------------
/backend-v1/src/main/resources/not_available.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/backend-v1/src/main/resources/not_available.jpg
--------------------------------------------------------------------------------
/backend-v1/src/main/webapp/WEB-INF/beans.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
9 |
10 |
--------------------------------------------------------------------------------
/backend-v1/src/main/webapp/WEB-INF/jboss-deployment-structure.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/backend-v1/src/main/webapp/WEB-INF/web.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | ticket-monster
4 |
5 | 30
6 |
7 |
8 | ico
9 | image/x-icon
10 |
11 |
12 | /index.html
13 |
14 |
15 |
--------------------------------------------------------------------------------
/backend-v1/src/main/wf-standalone/module/module.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/backend-v1/src/main/wf-standalone/module/mysql-connector-java-5.1.38.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/backend-v1/src/main/wf-standalone/module/mysql-connector-java-5.1.38.jar
--------------------------------------------------------------------------------
/backend-v1/src/test/java/org/jboss/examples/ticketmonster/test/TicketMonsterDeployment.java:
--------------------------------------------------------------------------------
1 | package org.jboss.examples.ticketmonster.test;
2 |
3 | import org.jboss.examples.ticketmonster.util.Resources;
4 | import org.jboss.shrinkwrap.api.ShrinkWrap;
5 | import org.jboss.shrinkwrap.api.asset.EmptyAsset;
6 | import org.jboss.shrinkwrap.api.spec.WebArchive;
7 |
8 | public class TicketMonsterDeployment {
9 |
10 | public static WebArchive deployment() {
11 | return ShrinkWrap
12 | .create(WebArchive.class, "test.war")
13 | .addPackage(Resources.class.getPackage())
14 | .addAsResource("META-INF/test-persistence.xml", "META-INF/persistence.xml")
15 | .addAsResource("import.sql")
16 | .addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml")
17 | // Deploy our test datasource
18 | .addAsWebInfResource("test-ds.xml");
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/backend-v1/src/test/java/org/jboss/examples/ticketmonster/test/rest/RESTDeployment.java:
--------------------------------------------------------------------------------
1 | package org.jboss.examples.ticketmonster.test.rest;
2 |
3 | import org.jboss.examples.ticketmonster.model.Booking;
4 | import org.jboss.examples.ticketmonster.rest.BaseEntityService;
5 | import org.jboss.examples.ticketmonster.rest.dto.VenueDTO;
6 | import org.jboss.examples.ticketmonster.service.*;
7 | import org.jboss.examples.ticketmonster.test.TicketMonsterDeployment;
8 | import org.jboss.shrinkwrap.api.spec.WebArchive;
9 |
10 | public class RESTDeployment {
11 |
12 | public static WebArchive deployment() {
13 |
14 |
15 | return TicketMonsterDeployment.deployment()
16 | .addPackage(Booking.class.getPackage())
17 | .addPackage(BaseEntityService.class.getPackage())
18 | .addPackage(VenueDTO.class.getPackage())
19 | .addPackage(SeatAllocationService.class.getPackage())
20 | .addClass(AllocatedSeats.class)
21 | .addClass(MediaPath.class)
22 | .addClass(MediaManager.class);
23 | }
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/backend-v2/Readme.md:
--------------------------------------------------------------------------------
1 | This `backend` module contains the monolith Ticket Monster service **without** the UI. Use an external UI to connect pu to the REST API that this service exposes.
2 |
3 |
4 | ## How to build
5 |
6 | Build the source code to connect to a MySQL database. Note the, default url that will be used is `mysql-backend:3306`
7 |
8 | ```
9 | mvn clean install -Pmysql,kubernetes
10 | ```
11 |
12 | To build the docker image associated with this:
13 |
14 | ```
15 | mvn clean install -Pmysql,kubernetes fabric8:build
16 | ```
17 |
18 | This will create a docker image named `ceposta/backend-mysql:latest`. This image is the same image that should be on Docker Hub: [https://hub.docker.com/r/ceposta/backend-mysql/](https://hub.docker.com/r/ceposta/backend-mysql/)
19 |
20 | This is the same image used in the deployment scripts.
21 |
22 | If you want the `backend` service before we added scientist/FF impl, checkout this SHA: a07942b
--------------------------------------------------------------------------------
/backend-v2/build-docker.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | mvn clean install -Pmysql,kubernetes fabric8:build -Ddocker.image.name=ceposta/backend-mysql:v2
--------------------------------------------------------------------------------
/backend-v2/push-docker.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | docker push ceposta/backend-mysql:v2
--------------------------------------------------------------------------------
/backend-v2/src/main/fabric8/deployment.yml:
--------------------------------------------------------------------------------
1 | spec:
2 | template:
3 | metadata:
4 | labels:
5 | service: backend
6 | spec:
7 | containers:
8 | - livenessProbe:
9 | httpGet:
10 | path: /rest/ping
11 | port: 8080
12 | initialDelaySeconds: 60
13 | periodSeconds: 30
14 | readinessProbe:
15 | httpGet:
16 | path: /rest/ping
17 | port: 8080
18 | initialDelaySeconds: 60
19 | periodSeconds: 30
20 |
--------------------------------------------------------------------------------
/backend-v2/src/main/java/org/jboss/examples/ticketmonster/model/SeatAllocationException.java:
--------------------------------------------------------------------------------
1 | package org.jboss.examples.ticketmonster.model;
2 |
3 | import javax.ejb.ApplicationException;
4 |
5 | /**
6 | *
7 | * The exception thrown if an error occurs in seat allocation.
8 | *
9 | *
10 | * We mark it as {@link ApplicationException} because it is part of the application logic. Also,
11 | * we want the container to roll back automatically when it is thrown.
12 | *
13 | *
14 | * @author Marius Bogoevici
15 | */
16 | @SuppressWarnings("serial")
17 | @ApplicationException(rollback = true)
18 | public class SeatAllocationException extends RuntimeException {
19 |
20 | public SeatAllocationException() {
21 | }
22 |
23 | public SeatAllocationException(String s) {
24 | super(s);
25 | }
26 |
27 | public SeatAllocationException(String s, Throwable throwable) {
28 | super(s, throwable);
29 | }
30 |
31 | public SeatAllocationException(Throwable throwable) {
32 | super(throwable);
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/backend-v2/src/main/java/org/jboss/examples/ticketmonster/rest/BotState.java:
--------------------------------------------------------------------------------
1 | package org.jboss.examples.ticketmonster.rest;
2 |
3 | /**
4 | * An enumeration that represents the possible states for the Bot.
5 | *
6 | * @author Vineet Reynolds
7 | *
8 | */
9 | public enum BotState {
10 | RUNNING, NOT_RUNNING, RESET
11 | }
12 |
--------------------------------------------------------------------------------
/backend-v2/src/main/java/org/jboss/examples/ticketmonster/rest/JaxRsActivator.java:
--------------------------------------------------------------------------------
1 | package org.jboss.examples.ticketmonster.rest;
2 |
3 | import javax.ws.rs.ApplicationPath;
4 | import javax.ws.rs.core.Application;
5 |
6 | /**
7 | * A class extending {@link Application} and annotated with @ApplicationPath is the Java EE
8 | * "no XML" approach to activating JAX-RS.
9 | *
10 | *
11 | * Resources are served relative to the servlet path specified in the {@link ApplicationPath}
12 | * annotation.
13 | *
14 | */
15 | @ApplicationPath("/rest")
16 | public class JaxRsActivator extends Application {
17 | /* class body intentionally left blank */
18 | }
19 |
--------------------------------------------------------------------------------
/backend-v2/src/main/java/org/jboss/examples/ticketmonster/rest/PerformanceMetric.java:
--------------------------------------------------------------------------------
1 | package org.jboss.examples.ticketmonster.rest;
2 |
3 | import java.util.Date;
4 |
5 | import org.jboss.examples.ticketmonster.model.Performance;
6 |
7 | /**
8 | * Metric data for a Performance. Contains the datetime for the performance to
9 | * identify the performance, as well as the occupied count for the performance.
10 | *
11 | * @author Vineet Reynolds
12 | *
13 | */
14 | class PerformanceMetric {
15 |
16 | private Date date;
17 | private Long occupiedCount;
18 |
19 | // Constructor to populate the instance with data
20 | public PerformanceMetric(Performance performance, Long occupiedCount) {
21 | this.date = performance.getDate();
22 | this.occupiedCount = (occupiedCount == null ? 0 : occupiedCount);
23 | }
24 |
25 | // Getters for Jackson
26 | // NOTE: No setters and default constructors are defined since
27 | // deserialization is not required.
28 |
29 | public Date getDate() {
30 | return date;
31 | }
32 |
33 | public Long getOccupiedCount() {
34 | return occupiedCount;
35 | }
36 |
37 | }
--------------------------------------------------------------------------------
/backend-v2/src/main/java/org/jboss/examples/ticketmonster/rest/SectionComparator.java:
--------------------------------------------------------------------------------
1 | package org.jboss.examples.ticketmonster.rest;
2 |
3 | import java.util.Comparator;
4 |
5 | import org.jboss.examples.ticketmonster.model.Section;
6 |
7 | /**
8 | * A utility comparator for sections, sorting them by id
9 | *
10 | * @author Marius Bogoevici
11 | */
12 | public class SectionComparator implements Comparator {
13 |
14 | private static final SectionComparator INSTANCE = new SectionComparator();
15 |
16 | private SectionComparator(){
17 | }
18 |
19 | public static SectionComparator instance() {
20 | return INSTANCE;
21 | }
22 |
23 | @Override
24 | public int compare(Section section, Section otherSection) {
25 | return section.getId().compareTo(otherSection.getId());
26 | }
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/backend-v2/src/main/java/org/jboss/examples/ticketmonster/rest/TicketRequest.java:
--------------------------------------------------------------------------------
1 | package org.jboss.examples.ticketmonster.rest;
2 |
3 | import org.jboss.examples.ticketmonster.model.TicketPrice;
4 |
5 | /**
6 | *
7 | * A {@link BookingRequest} will contain multiple {@link TicketRequest}s.
8 | *
9 | *
10 | * @author Marius Bogoevici
11 | * @author Pete Muir
12 | *
13 | */
14 | public class TicketRequest {
15 |
16 | private long ticketPrice;
17 |
18 | private int quantity;
19 |
20 | public TicketRequest() {
21 | // Empty constructor
22 | }
23 |
24 | public TicketRequest(TicketPrice ticketPrice, int quantity) {
25 | this.ticketPrice = ticketPrice.getId();
26 | this.quantity = quantity;
27 | }
28 |
29 | public long getTicketPrice() {
30 | return ticketPrice;
31 | }
32 |
33 | public void setTicketPrice(long ticketPrice) {
34 | this.ticketPrice = ticketPrice;
35 | }
36 |
37 | public int getQuantity() {
38 | return quantity;
39 | }
40 |
41 | public void setQuantity(int quantity) {
42 | this.quantity = quantity;
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/backend-v2/src/main/java/org/jboss/examples/ticketmonster/rest/VenueService.java:
--------------------------------------------------------------------------------
1 | package org.jboss.examples.ticketmonster.rest;
2 |
3 | import javax.ejb.Stateless;
4 | import javax.ws.rs.Path;
5 |
6 | import org.jboss.examples.ticketmonster.model.Venue;
7 |
8 | /**
9 | *
10 | * A JAX-RS endpoint for handling {@link Venue}s. Inherits the actual
11 | * methods from {@link BaseEntityService}.
12 | *
13 | *
14 | * @author Marius Bogoevici
15 | */
16 | @Path("/venues")
17 | /**
18 | *
19 | * This is a stateless service, we declare it as an EJB for transaction demarcation
20 | *
21 | */
22 | @Stateless
23 | public class VenueService extends BaseEntityService {
24 |
25 | public VenueService() {
26 | super(Venue.class);
27 | }
28 |
29 | }
--------------------------------------------------------------------------------
/backend-v2/src/main/java/org/jboss/examples/ticketmonster/service/AllocatedSeats.java:
--------------------------------------------------------------------------------
1 | package org.jboss.examples.ticketmonster.service;
2 |
3 | import java.util.List;
4 |
5 | import org.jboss.examples.ticketmonster.model.Seat;
6 | import org.jboss.examples.ticketmonster.model.SectionAllocation;
7 |
8 | /**
9 | * A transient object which represents a collection of pre-allocated seats
10 | *
11 | * @author Marius Bogoevici
12 | */
13 | public class AllocatedSeats {
14 |
15 | private final SectionAllocation sectionAllocation;
16 |
17 | private final List seats;
18 |
19 | public AllocatedSeats(SectionAllocation sectionAllocation, List seats) {
20 | this.sectionAllocation = sectionAllocation;
21 | this.seats = seats;
22 | }
23 |
24 | public SectionAllocation getSectionAllocation() {
25 | return sectionAllocation;
26 | }
27 |
28 | public List getSeats() {
29 | return seats;
30 | }
31 |
32 | public void markOccupied() {
33 | sectionAllocation.markOccupied(seats);
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/backend-v2/src/main/java/org/jboss/examples/ticketmonster/service/MediaPath.java:
--------------------------------------------------------------------------------
1 | package org.jboss.examples.ticketmonster.service;
2 |
3 | import org.jboss.examples.ticketmonster.model.MediaType;
4 |
5 | public class MediaPath {
6 |
7 | private final String url;
8 | private final boolean cached;
9 | private final MediaType mediaType;
10 |
11 | public MediaPath(String url, boolean cached, MediaType mediaType) {
12 | this.url = url;
13 | this.cached = cached;
14 | this.mediaType = mediaType;
15 | }
16 |
17 | public String getUrl() {
18 | return url;
19 | }
20 |
21 | public boolean isCached() {
22 | return cached;
23 | }
24 |
25 | public MediaType getMediaType() {
26 | return mediaType;
27 | }
28 |
29 | }
30 |
--------------------------------------------------------------------------------
/backend-v2/src/main/java/org/jboss/examples/ticketmonster/util/Reflections.java:
--------------------------------------------------------------------------------
1 | package org.jboss.examples.ticketmonster.util;
2 |
3 | import java.net.URL;
4 |
5 | /**
6 | * Utilities relating to Java reflection
7 | *
8 | * @author pmuir
9 | *
10 | */
11 | public class Reflections {
12 |
13 | private Reflections() {
14 | }
15 |
16 | /**
17 | * Get a resource by name, first searching the thread context classloader, and then the classloader of the Reflections
18 | * class.
19 | */
20 | public static URL getResource(String name) {
21 | if (Thread.currentThread().getContextClassLoader() != null) {
22 | return Thread.currentThread().getContextClassLoader().getResource(name);
23 | } else {
24 | return Reflections.class.getClassLoader().getResource(name);
25 | }
26 | }
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/backend-v2/src/main/java/org/jboss/examples/ticketmonster/util/qualifier/BotMessage.java:
--------------------------------------------------------------------------------
1 | package org.jboss.examples.ticketmonster.util.qualifier;
2 |
3 | import java.lang.annotation.Documented;
4 | import java.lang.annotation.Retention;
5 | import java.lang.annotation.Target;
6 |
7 | import javax.inject.Qualifier;
8 |
9 | import static java.lang.annotation.ElementType.FIELD;
10 | import static java.lang.annotation.ElementType.METHOD;
11 | import static java.lang.annotation.ElementType.PARAMETER;
12 | import static java.lang.annotation.ElementType.TYPE;
13 | import static java.lang.annotation.RetentionPolicy.RUNTIME;
14 |
15 | @Qualifier
16 | @Target({ TYPE, METHOD, PARAMETER, FIELD })
17 | @Retention(RUNTIME)
18 | @Documented
19 | public @interface BotMessage {
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/backend-v2/src/main/java/org/jboss/examples/ticketmonster/util/qualifier/Cancelled.java:
--------------------------------------------------------------------------------
1 | package org.jboss.examples.ticketmonster.util.qualifier;
2 |
3 | import java.lang.annotation.ElementType;
4 | import java.lang.annotation.Retention;
5 | import java.lang.annotation.RetentionPolicy;
6 | import java.lang.annotation.Target;
7 |
8 | import javax.inject.Qualifier;
9 |
10 | /**
11 | * {@link Qualifier} to mark a Booking as cancelled.
12 | *
13 | * @author Christian Sadilek
14 | */
15 | @Qualifier
16 | @Target({ElementType.FIELD,ElementType.PARAMETER,ElementType.METHOD,ElementType.TYPE})
17 | @Retention(RetentionPolicy.RUNTIME)
18 | public @interface Cancelled {
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/backend-v2/src/main/java/org/jboss/examples/ticketmonster/util/qualifier/Created.java:
--------------------------------------------------------------------------------
1 | package org.jboss.examples.ticketmonster.util.qualifier;
2 |
3 | import java.lang.annotation.ElementType;
4 | import java.lang.annotation.Retention;
5 | import java.lang.annotation.RetentionPolicy;
6 | import java.lang.annotation.Target;
7 |
8 | import javax.inject.Qualifier;
9 |
10 | /**
11 | * {@link Qualifier} to mark a Booking as new (created).
12 | *
13 | * @author Christian Sadilek
14 | */
15 | @Qualifier
16 | @Target({ElementType.FIELD,ElementType.PARAMETER,ElementType.METHOD,ElementType.TYPE})
17 | @Retention(RetentionPolicy.RUNTIME)
18 | public @interface Created {
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/backend-v2/src/main/resources/ff4j.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/backend-v2/src/main/resources/log4j.properties:
--------------------------------------------------------------------------------
1 | log4j.rootLogger=INFO, mainlogger
2 | log4j.appender.mainlogger=org.apache.log4j.ConsoleAppender
3 | log4j.appender.mainlogger.target=System.out
4 | log4j.appender.mainlogger.layout=org.apache.log4j.PatternLayout
5 | log4j.appender.mainlogger.layout.ConversionPattern=%p [%c{1}] %m%n
--------------------------------------------------------------------------------
/backend-v2/src/main/resources/not_available.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/backend-v2/src/main/resources/not_available.jpg
--------------------------------------------------------------------------------
/backend-v2/src/main/webapp/WEB-INF/beans.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
9 |
10 |
--------------------------------------------------------------------------------
/backend-v2/src/main/webapp/WEB-INF/jboss-deployment-structure.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/backend-v2/src/main/webapp/WEB-INF/web.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | ticket-monster
4 |
5 | 30
6 |
7 |
8 | ico
9 | image/x-icon
10 |
11 |
12 | /index.html
13 |
14 |
15 |
--------------------------------------------------------------------------------
/backend-v2/src/main/wf-standalone/module/module.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/backend-v2/src/main/wf-standalone/module/mysql-connector-java-5.1.38.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/backend-v2/src/main/wf-standalone/module/mysql-connector-java-5.1.38.jar
--------------------------------------------------------------------------------
/backend-v2/src/test/java/org/jboss/examples/ticketmonster/test/TicketMonsterDeployment.java:
--------------------------------------------------------------------------------
1 | package org.jboss.examples.ticketmonster.test;
2 |
3 | import org.jboss.examples.ticketmonster.util.Resources;
4 | import org.jboss.shrinkwrap.api.ShrinkWrap;
5 | import org.jboss.shrinkwrap.api.asset.EmptyAsset;
6 | import org.jboss.shrinkwrap.api.spec.WebArchive;
7 | import org.jboss.shrinkwrap.resolver.api.maven.Maven;
8 |
9 | import java.io.File;
10 |
11 | public class TicketMonsterDeployment {
12 |
13 | public static WebArchive deployment() {
14 |
15 | File[] ff4jDeps = Maven.resolver().resolve("org.ff4j:ff4j-core:1.6.5")
16 | .withTransitivity().asFile();
17 | return ShrinkWrap
18 | .create(WebArchive.class, "test.war")
19 | .addPackage(Resources.class.getPackage())
20 | .addAsResource("META-INF/test-persistence.xml", "META-INF/persistence.xml")
21 | .addAsResource("import.sql")
22 | .addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml")
23 | // Deploy our test datasource
24 | .addAsWebInfResource("test-ds.xml")
25 | .addAsLibraries(ff4jDeps)
26 | .addAsResource("ff4j.xml")
27 | ;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/backend-v2/src/test/java/org/jboss/examples/ticketmonster/test/rest/RESTDeployment.java:
--------------------------------------------------------------------------------
1 | package org.jboss.examples.ticketmonster.test.rest;
2 |
3 | import org.jboss.examples.ticketmonster.model.Booking;
4 | import org.jboss.examples.ticketmonster.rest.BaseEntityService;
5 | import org.jboss.examples.ticketmonster.rest.dto.VenueDTO;
6 | import org.jboss.examples.ticketmonster.service.*;
7 | import org.jboss.examples.ticketmonster.test.TicketMonsterDeployment;
8 | import org.jboss.shrinkwrap.api.spec.WebArchive;
9 |
10 | public class RESTDeployment {
11 |
12 | public static WebArchive deployment() {
13 |
14 |
15 | return TicketMonsterDeployment.deployment()
16 | .addPackage(Booking.class.getPackage())
17 | .addPackage(BaseEntityService.class.getPackage())
18 | .addPackage(VenueDTO.class.getPackage())
19 | .addPackage(SeatAllocationService.class.getPackage())
20 | .addClass(AllocatedSeats.class)
21 | .addClass(MediaPath.class)
22 | .addClass(MediaManager.class);
23 | }
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/deployment/kubernetes/core/backend/backend-svc.yml:
--------------------------------------------------------------------------------
1 | ---
2 | apiVersion: v1
3 | kind: Service
4 | metadata:
5 | labels:
6 | expose: "true"
7 | app: backend
8 | provider: fabric8
9 | group: org.jboss.examples.eap
10 | name: backend
11 | spec:
12 | ports:
13 | - name: http
14 | port: 8080
15 | protocol: TCP
16 | targetPort: 8080
17 | selector:
18 | service: backend
19 |
--------------------------------------------------------------------------------
/deployment/kubernetes/core/backend/v1/backend-v1-svc.yml:
--------------------------------------------------------------------------------
1 | ---
2 | apiVersion: v1
3 | kind: Service
4 | metadata:
5 | annotations:
6 | fabric8.io/git-commit: 3279e9bcf74f0f2ef56a583d35535624cf88a5bc
7 | fabric8.io/git-branch: migrate-workshop
8 | labels:
9 | expose: "true"
10 | app: backend-v1
11 | provider: fabric8
12 | version: "1.0"
13 | group: org.jboss.examples.eap
14 | name: backend-v1
15 | spec:
16 | ports:
17 | - name: http
18 | port: 8080
19 | protocol: TCP
20 | targetPort: 8080
21 | selector:
22 | app: backend-v1
23 | provider: fabric8
24 | group: org.jboss.examples.eap
25 |
--------------------------------------------------------------------------------
/deployment/kubernetes/core/backend/v2/backend-v2-svc.yml:
--------------------------------------------------------------------------------
1 | ---
2 | apiVersion: v1
3 | kind: Service
4 | metadata:
5 | annotations:
6 | fabric8.io/git-commit: 3279e9bcf74f0f2ef56a583d35535624cf88a5bc
7 | fabric8.io/git-branch: migrate-workshop
8 | labels:
9 | expose: "true"
10 | app: backend-v2
11 | provider: fabric8
12 | version: "2.0"
13 | group: org.jboss.examples.eap
14 | name: backend-v2
15 | spec:
16 | ports:
17 | - name: http
18 | port: 8080
19 | protocol: TCP
20 | targetPort: 8080
21 | selector:
22 | app: backend-v2
23 | provider: fabric8
24 | group: org.jboss.examples.eap
25 |
--------------------------------------------------------------------------------
/deployment/kubernetes/core/frontend/talk-to-backend/tm-ui-deployment.yml:
--------------------------------------------------------------------------------
1 | apiVersion: extensions/v1beta1
2 | kind: Deployment
3 | metadata:
4 | name: tm-ui-v2
5 | spec:
6 | replicas: 1
7 | selector:
8 | matchLabels:
9 | run: tm-ui
10 | version: v2
11 | strategy:
12 | rollingUpdate:
13 | maxSurge: 1
14 | maxUnavailable: 1
15 | type: RollingUpdate
16 | template:
17 | metadata:
18 | creationTimestamp: null
19 | labels:
20 | run: tm-ui
21 | version: v2
22 | spec:
23 | containers:
24 | - image: ceposta/tm-ui:backend
25 | imagePullPolicy: IfNotPresent
26 | name: tm-ui
27 | ports:
28 | - containerPort: 80
29 | protocol: TCP
30 | resources: {}
31 | terminationMessagePath: /dev/termination-log
32 | terminationMessagePolicy: File
33 | dnsPolicy: ClusterFirst
34 | restartPolicy: Always
35 | schedulerName: default-scheduler
36 | securityContext: {}
37 | terminationGracePeriodSeconds: 30
38 |
--------------------------------------------------------------------------------
/deployment/kubernetes/core/frontend/talk-to-monolith/tm-ui-deployment.yml:
--------------------------------------------------------------------------------
1 | apiVersion: extensions/v1beta1
2 | kind: Deployment
3 | metadata:
4 | name: tm-ui-v1
5 | spec:
6 | replicas: 1
7 | selector:
8 | matchLabels:
9 | run: tm-ui
10 | version: v1
11 | strategy:
12 | rollingUpdate:
13 | maxSurge: 1
14 | maxUnavailable: 1
15 | type: RollingUpdate
16 | template:
17 | metadata:
18 | creationTimestamp: null
19 | labels:
20 | run: tm-ui
21 | version: v1
22 | spec:
23 | containers:
24 | - image: ceposta/tm-ui:monolith
25 | imagePullPolicy: IfNotPresent
26 | name: tm-ui
27 | ports:
28 | - containerPort: 80
29 | protocol: TCP
30 | resources: {}
31 | terminationMessagePath: /dev/termination-log
32 | terminationMessagePolicy: File
33 | dnsPolicy: ClusterFirst
34 | restartPolicy: Always
35 | schedulerName: default-scheduler
36 | securityContext: {}
37 | terminationGracePeriodSeconds: 30
38 |
--------------------------------------------------------------------------------
/deployment/kubernetes/core/frontend/ticket-monster-ingress.yml:
--------------------------------------------------------------------------------
1 | apiVersion: extensions/v1beta1
2 | kind: Ingress
3 | metadata:
4 | name: tm-gateway
5 | annotations:
6 | kubernetes.io/ingress.class: "istio"
7 | spec:
8 | backend:
9 | serviceName: tm-ui
10 | servicePort: 80
11 |
--------------------------------------------------------------------------------
/deployment/kubernetes/core/frontend/tm-ui-svc.yml:
--------------------------------------------------------------------------------
1 | ---
2 | apiVersion: v1
3 | kind: Service
4 | metadata:
5 | labels:
6 | expose: "true"
7 | run: tm-ui
8 | name: tm-ui
9 | spec:
10 | ports:
11 | - name: http
12 | port: 80
13 | protocol: TCP
14 | targetPort: 80
15 | selector:
16 | run: tm-ui
17 | sessionAffinity: None
18 |
--------------------------------------------------------------------------------
/deployment/kubernetes/core/monolith/mysql-deployment.yml:
--------------------------------------------------------------------------------
1 | ---
2 | apiVersion: extensions/v1beta1
3 | kind: Deployment
4 | metadata:
5 | name: mysql-backend
6 | spec:
7 | strategy:
8 | type: Recreate
9 | template:
10 | metadata:
11 | labels:
12 | app: ticketmonster
13 | component: backend
14 | spec:
15 | containers:
16 | - image: mysql:5.6
17 | name: mysql
18 | env:
19 | # Use secret in real usage
20 | - name: MYSQL_ROOT_PASSWORD
21 | value: admin
22 | - name: MYSQL_DATABASE
23 | value: ticketmonster
24 | - name: MYSQL_USER
25 | value: ticket
26 | - name: MYSQL_PASSWORD
27 | value: monster
28 | ports:
29 | - containerPort: 3306
30 | name: mysql
31 |
32 |
--------------------------------------------------------------------------------
/deployment/kubernetes/core/monolith/mysql-svc.yml:
--------------------------------------------------------------------------------
1 | ---
2 | apiVersion: v1
3 | kind: Service
4 | metadata:
5 | name: mysql-backend
6 | spec:
7 | ports:
8 | - port: 3306
9 | selector:
10 | app: ticketmonster
11 | component: backend
--------------------------------------------------------------------------------
/deployment/kubernetes/core/monolith/ticket-monster-ingress.yml:
--------------------------------------------------------------------------------
1 | apiVersion: extensions/v1beta1
2 | kind: Ingress
3 | metadata:
4 | name: tm-gateway
5 | annotations:
6 | kubernetes.io/ingress.class: "istio"
7 | spec:
8 | backend:
9 | serviceName: ticket-monster
10 | servicePort: 8080
11 |
--------------------------------------------------------------------------------
/deployment/kubernetes/core/monolith/ticket-monster-svc.yml:
--------------------------------------------------------------------------------
1 | ---
2 | apiVersion: v1
3 | kind: Service
4 | metadata:
5 | annotations:
6 | fabric8.io/git-commit: 3279e9bcf74f0f2ef56a583d35535624cf88a5bc
7 | fabric8.io/git-branch: migrate-workshop
8 | labels:
9 | expose: "true"
10 | app: ticket-monster
11 | provider: fabric8
12 | version: 3.0.0-SNAPSHOT
13 | group: org.jboss.examples.eap
14 | name: ticket-monster
15 | spec:
16 | ports:
17 | - name: http
18 | port: 8080
19 | protocol: TCP
20 | targetPort: 8080
21 | selector:
22 | app: ticket-monster
23 | provider: fabric8
24 | group: org.jboss.examples.eap
25 |
--------------------------------------------------------------------------------
/deployment/kubernetes/core/monolith/tm-ui-svc.yml:
--------------------------------------------------------------------------------
1 | ---
2 | apiVersion: v1
3 | kind: Service
4 | metadata:
5 | labels:
6 | expose: "true"
7 | run: tm-ui
8 | name: tm-ui
9 | spec:
10 | ports:
11 | - name: http
12 | port: 80
13 | protocol: TCP
14 | targetPort: 80
15 | selector:
16 | run: tm-ui
17 | sessionAffinity: None
18 |
--------------------------------------------------------------------------------
/deployment/kubernetes/core/orders/mysql-deployment.yml:
--------------------------------------------------------------------------------
1 | ---
2 | apiVersion: extensions/v1beta1
3 | kind: Deployment
4 | metadata:
5 | name: mysql-orders
6 | spec:
7 | strategy:
8 | type: Recreate
9 | template:
10 | metadata:
11 | labels:
12 | app: ticketmonster
13 | component: orders
14 | spec:
15 | containers:
16 | - image: mysql:5.6
17 | name: mysql
18 | env:
19 | # Use secret in real usage
20 | - name: MYSQL_ROOT_PASSWORD
21 | value: admin
22 | - name: MYSQL_DATABASE
23 | value: orders
24 | - name: MYSQL_USER
25 | value: ticket
26 | - name: MYSQL_PASSWORD
27 | value: monster
28 | ports:
29 | - containerPort: 3306
30 | name: mysql
31 | volumeMounts:
32 | - name: mysql-config
33 | mountPath: /docker-entrypoint-initdb.d/
34 | volumes:
35 | - name: mysql-config
36 | configMap:
37 | name: orders-mysql-config
38 |
39 |
--------------------------------------------------------------------------------
/deployment/kubernetes/core/orders/mysql-svc.yml:
--------------------------------------------------------------------------------
1 | ---
2 | apiVersion: v1
3 | kind: Service
4 | metadata:
5 | name: mysql-orders
6 | spec:
7 | ports:
8 | - port: 3306
9 | selector:
10 | app: ticketmonster
11 | component: orders
--------------------------------------------------------------------------------
/deployment/kubernetes/core/orders/orders-service-svc.yml:
--------------------------------------------------------------------------------
1 | ---
2 | apiVersion: v1
3 | kind: Service
4 | metadata:
5 | annotations:
6 | fabric8.io/git-commit: d274512765d69ebdd100ca68c1180a7a2bc59753
7 | fabric8.io/iconUrl: img/icons/spring-boot.svg
8 | fabric8.io/git-branch: migrate-workshop
9 | prometheus.io/scrape: "true"
10 | prometheus.io/port: "9779"
11 | labels:
12 | expose: "true"
13 | app: orders-service
14 | provider: fabric8
15 | version: 1.0.0-SNAPSHOT
16 | group: org.ticketmonster.orders
17 | name: orders-service
18 | spec:
19 | ports:
20 | - name: http
21 | port: 8080
22 | protocol: TCP
23 | targetPort: 8080
24 | selector:
25 | app: orders-service
26 | provider: fabric8
27 | group: org.ticketmonster.orders
28 |
--------------------------------------------------------------------------------
/deployment/kubernetes/demo/cleanup.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | # Monolith
4 | kubectl delete svc/ticket-monster
5 | kubectl delete svc/mysql-backend
6 | kubectl delete deploy/ticket-monster
7 | kubectl delete deploy/mysql-backend
8 |
9 | # Backend
10 | kubectl delete svc/backend
11 | kubectl delete deploy/backend-v1
12 | kubectl delete deploy/backend-v2
13 |
14 | # UI
15 | kubectl delete svc/tm-ui
16 | kubectl delete deploy/tm-ui-v1
17 | kubectl delete deploy/tm-ui-v2
18 |
19 | # Orders Service
20 | kubectl delete svc/orders-service
21 | kubectl delete deploy/orders-service
22 | kubectl delete svc/mysql-orders
23 | kubectl delete deploy/mysql-orders
24 | kubectl delete cm/orders-mysql-config
25 |
26 |
27 |
28 | # Ingress
29 | kubectl delete ingress/tm-gateway
30 |
31 | # Delete istio routes
32 | istioctl delete routerules $(istioctl get routerules | awk '{print $1}')
--------------------------------------------------------------------------------
/deployment/kubernetes/demo/util.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | #!/bin/bash
3 |
4 | readonly reset=$(tput sgr0)
5 | readonly green=$(tput bold; tput setaf 2)
6 | readonly yellow=$(tput bold; tput setaf 3)
7 | readonly blue=$(tput bold; tput setaf 6)
8 |
9 | function desc() {
10 | maybe_first_prompt
11 | echo "$blue# $@$reset"
12 | prompt
13 | }
14 |
15 | function prompt() {
16 | echo -n "$yellow\$ $reset"
17 | }
18 |
19 | started=""
20 | function maybe_first_prompt() {
21 | if [ -z "$started" ]; then
22 | prompt
23 | started=true
24 | fi
25 | }
26 |
27 | function backtotop() {
28 |
29 | clear
30 | }
31 |
32 | function run() {
33 | maybe_first_prompt
34 | rate=25
35 | if [ -n "$DEMO_RUN_FAST" ]; then
36 | rate=1000
37 | fi
38 | echo "$green$1$reset" | pv -qL $rate
39 | if [ -n "$DEMO_RUN_FAST" ]; then
40 | sleep 0.5
41 | fi
42 | eval "$1"
43 | r=$?
44 | read -d '' -t 1 -n 10000 # clear stdin
45 | prompt
46 | if [ -z "$DEMO_AUTO_RUN" ]; then
47 | read -s
48 | fi
49 | return $r
50 | }
51 |
52 | function relative() {
53 | for arg; do
54 | echo "$(realpath $(dirname $(which $0)))/$arg" | sed "s|$(realpath $(pwd))|.|"
55 | done
56 | }
57 |
58 |
59 | trap "echo" EXIT
60 |
--------------------------------------------------------------------------------
/deployment/kubernetes/fabric8/expose-controller.md:
--------------------------------------------------------------------------------
1 | Usage:
2 |
3 | `kubectl label svc foo expose=true`
4 |
5 |
--------------------------------------------------------------------------------
/deployment/kubernetes/istio/README.md:
--------------------------------------------------------------------------------
1 | This folder contains the istio resoruce files that we can use to deploy
2 | istio as well as some helper scripts
3 |
4 | > ./get-urls.sh
5 |
--------------------------------------------------------------------------------
/deployment/kubernetes/istio/install.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | curl -L https://git.io/getLatestIstio | sh -
3 | ISTIO=`ls | grep istio`
4 | export PATH="$PATH:~/$ISTIO/bin"
5 | cd $ISTIO
6 | kubectl apply -f install/kubernetes/istio.yaml
7 |
8 | kubectl create -f install/kubernetes/addons/prometheus.yaml
9 | kubectl create -f install/kubernetes/addons/grafana.yaml
10 | kubectl create -f install/kubernetes/addons/servicegraph.yaml
11 | kubectl create -f install/kubernetes/addons/zipkin.yaml
--------------------------------------------------------------------------------
/deployment/kubernetes/istio/route-rules/route-tm-1pct-v2.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: config.istio.io/v1alpha2
2 | kind: RouteRule
3 | metadata:
4 | name: tm-ui-v2-1pct-canary
5 | spec:
6 | destination:
7 | name: tm-ui
8 | precedence: 20
9 | route:
10 | - labels:
11 | version: v1
12 | weight: 99
13 | - labels:
14 | version: v2
15 | weight: 1
--------------------------------------------------------------------------------
/deployment/kubernetes/istio/route-rules/route-tm-v1.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: config.istio.io/v1alpha2
2 | kind: RouteRule
3 | metadata:
4 | name: tm-ui-default
5 | spec:
6 | destination:
7 | name: tm-ui
8 | precedence: 1
9 | route:
10 | - labels:
11 | version: v1
12 |
--------------------------------------------------------------------------------
/deployment/kubernetes/istio/route-rules/route-tm-v2-dark-launch.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: config.istio.io/v1alpha2
2 | kind: RouteRule
3 | metadata:
4 | name: tm-ui-v2-dark-launch
5 | spec:
6 | destination:
7 | name: tm-ui
8 | precedence: 10
9 | match:
10 | request:
11 | headers:
12 | x-dark-launch:
13 | exact: "v2"
14 | route:
15 | - labels:
16 | version: v2
17 |
18 |
--------------------------------------------------------------------------------
/deployment/kubernetes/istio/route-rules/route-tm-v2.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: config.istio.io/v1alpha2
2 | kind: RouteRule
3 | metadata:
4 | name: tm-ui-default-v2
5 | spec:
6 | destination:
7 | name: tm-ui
8 | precedence: 20
9 | route:
10 | - labels:
11 | version: v2
--------------------------------------------------------------------------------
/monolith/build-docker.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | mvn clean install -Pmysql,kubernetes fabric8:build -Ddocker.image.name=ceposta/ticket-monster-mysql:monolith
--------------------------------------------------------------------------------
/monolith/push-docker.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | docker push ceposta/ticket-monster-mysql:monolith
--------------------------------------------------------------------------------
/monolith/src/main/java/org/jboss/examples/ticketmonster/model/SeatAllocationException.java:
--------------------------------------------------------------------------------
1 | package org.jboss.examples.ticketmonster.model;
2 |
3 | import javax.ejb.ApplicationException;
4 |
5 | /**
6 | *
7 | * The exception thrown if an error occurs in seat allocation.
8 | *
9 | *
10 | * We mark it as {@link ApplicationException} because it is part of the application logic. Also,
11 | * we want the container to roll back automatically when it is thrown.
12 | *
13 | *
14 | * @author Marius Bogoevici
15 | */
16 | @SuppressWarnings("serial")
17 | @ApplicationException(rollback = true)
18 | public class SeatAllocationException extends RuntimeException {
19 |
20 | public SeatAllocationException() {
21 | }
22 |
23 | public SeatAllocationException(String s) {
24 | super(s);
25 | }
26 |
27 | public SeatAllocationException(String s, Throwable throwable) {
28 | super(s, throwable);
29 | }
30 |
31 | public SeatAllocationException(Throwable throwable) {
32 | super(throwable);
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/monolith/src/main/java/org/jboss/examples/ticketmonster/rest/BotState.java:
--------------------------------------------------------------------------------
1 | package org.jboss.examples.ticketmonster.rest;
2 |
3 | /**
4 | * An enumeration that represents the possible states for the Bot.
5 | *
6 | * @author Vineet Reynolds
7 | *
8 | */
9 | public enum BotState {
10 | RUNNING, NOT_RUNNING, RESET
11 | }
12 |
--------------------------------------------------------------------------------
/monolith/src/main/java/org/jboss/examples/ticketmonster/rest/JaxRsActivator.java:
--------------------------------------------------------------------------------
1 | package org.jboss.examples.ticketmonster.rest;
2 |
3 | import javax.ws.rs.ApplicationPath;
4 | import javax.ws.rs.core.Application;
5 |
6 | /**
7 | * A class extending {@link Application} and annotated with @ApplicationPath is the Java EE
8 | * "no XML" approach to activating JAX-RS.
9 | *
10 | *
11 | * Resources are served relative to the servlet path specified in the {@link ApplicationPath}
12 | * annotation.
13 | *
14 | */
15 | @ApplicationPath("/rest")
16 | public class JaxRsActivator extends Application {
17 | /* class body intentionally left blank */
18 | }
19 |
--------------------------------------------------------------------------------
/monolith/src/main/java/org/jboss/examples/ticketmonster/rest/PerformanceMetric.java:
--------------------------------------------------------------------------------
1 | package org.jboss.examples.ticketmonster.rest;
2 |
3 | import java.util.Date;
4 |
5 | import org.jboss.examples.ticketmonster.model.Performance;
6 |
7 | /**
8 | * Metric data for a Performance. Contains the datetime for the performance to
9 | * identify the performance, as well as the occupied count for the performance.
10 | *
11 | * @author Vineet Reynolds
12 | *
13 | */
14 | class PerformanceMetric {
15 |
16 | private Date date;
17 | private Long occupiedCount;
18 |
19 | // Constructor to populate the instance with data
20 | public PerformanceMetric(Performance performance, Long occupiedCount) {
21 | this.date = performance.getDate();
22 | this.occupiedCount = (occupiedCount == null ? 0 : occupiedCount);
23 | }
24 |
25 | // Getters for Jackson
26 | // NOTE: No setters and default constructors are defined since
27 | // deserialization is not required.
28 |
29 | public Date getDate() {
30 | return date;
31 | }
32 |
33 | public Long getOccupiedCount() {
34 | return occupiedCount;
35 | }
36 |
37 | }
--------------------------------------------------------------------------------
/monolith/src/main/java/org/jboss/examples/ticketmonster/rest/SectionComparator.java:
--------------------------------------------------------------------------------
1 | package org.jboss.examples.ticketmonster.rest;
2 |
3 | import java.util.Comparator;
4 |
5 | import org.jboss.examples.ticketmonster.model.Section;
6 |
7 | /**
8 | * A utility comparator for sections, sorting them by id
9 | *
10 | * @author Marius Bogoevici
11 | */
12 | public class SectionComparator implements Comparator {
13 |
14 | private static final SectionComparator INSTANCE = new SectionComparator();
15 |
16 | private SectionComparator(){
17 | }
18 |
19 | public static SectionComparator instance() {
20 | return INSTANCE;
21 | }
22 |
23 | @Override
24 | public int compare(Section section, Section otherSection) {
25 | return section.getId().compareTo(otherSection.getId());
26 | }
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/monolith/src/main/java/org/jboss/examples/ticketmonster/rest/TicketRequest.java:
--------------------------------------------------------------------------------
1 | package org.jboss.examples.ticketmonster.rest;
2 |
3 | import org.jboss.examples.ticketmonster.model.TicketPrice;
4 |
5 | /**
6 | *
7 | * A {@link BookingRequest} will contain multiple {@link TicketRequest}s.
8 | *
9 | *
10 | * @author Marius Bogoevici
11 | * @author Pete Muir
12 | *
13 | */
14 | public class TicketRequest {
15 |
16 | private long ticketPrice;
17 |
18 | private int quantity;
19 |
20 | public TicketRequest() {
21 | // Empty constructor
22 | }
23 |
24 | public TicketRequest(TicketPrice ticketPrice, int quantity) {
25 | this.ticketPrice = ticketPrice.getId();
26 | this.quantity = quantity;
27 | }
28 |
29 | public long getTicketPrice() {
30 | return ticketPrice;
31 | }
32 |
33 | public void setTicketPrice(long ticketPrice) {
34 | this.ticketPrice = ticketPrice;
35 | }
36 |
37 | public int getQuantity() {
38 | return quantity;
39 | }
40 |
41 | public void setQuantity(int quantity) {
42 | this.quantity = quantity;
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/monolith/src/main/java/org/jboss/examples/ticketmonster/rest/VenueService.java:
--------------------------------------------------------------------------------
1 | package org.jboss.examples.ticketmonster.rest;
2 |
3 | import javax.ejb.Stateless;
4 | import javax.ws.rs.Path;
5 |
6 | import org.jboss.examples.ticketmonster.model.Venue;
7 |
8 | /**
9 | *
10 | * A JAX-RS endpoint for handling {@link Venue}s. Inherits the actual
11 | * methods from {@link BaseEntityService}.
12 | *
13 | *
14 | * @author Marius Bogoevici
15 | */
16 | @Path("/venues")
17 | /**
18 | *
19 | * This is a stateless service, we declare it as an EJB for transaction demarcation
20 | *
21 | */
22 | @Stateless
23 | public class VenueService extends BaseEntityService {
24 |
25 | public VenueService() {
26 | super(Venue.class);
27 | }
28 |
29 | }
--------------------------------------------------------------------------------
/monolith/src/main/java/org/jboss/examples/ticketmonster/service/AllocatedSeats.java:
--------------------------------------------------------------------------------
1 | package org.jboss.examples.ticketmonster.service;
2 |
3 | import java.util.List;
4 |
5 | import org.jboss.examples.ticketmonster.model.Seat;
6 | import org.jboss.examples.ticketmonster.model.SectionAllocation;
7 |
8 | /**
9 | * A transient object which represents a collection of pre-allocated seats
10 | *
11 | * @author Marius Bogoevici
12 | */
13 | public class AllocatedSeats {
14 |
15 | private final SectionAllocation sectionAllocation;
16 |
17 | private final List seats;
18 |
19 | public AllocatedSeats(SectionAllocation sectionAllocation, List seats) {
20 | this.sectionAllocation = sectionAllocation;
21 | this.seats = seats;
22 | }
23 |
24 | public SectionAllocation getSectionAllocation() {
25 | return sectionAllocation;
26 | }
27 |
28 | public List getSeats() {
29 | return seats;
30 | }
31 |
32 | public void markOccupied() {
33 | sectionAllocation.markOccupied(seats);
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/monolith/src/main/java/org/jboss/examples/ticketmonster/service/MediaPath.java:
--------------------------------------------------------------------------------
1 | package org.jboss.examples.ticketmonster.service;
2 |
3 | import org.jboss.examples.ticketmonster.model.MediaType;
4 |
5 | public class MediaPath {
6 |
7 | private final String url;
8 | private final boolean cached;
9 | private final MediaType mediaType;
10 |
11 | public MediaPath(String url, boolean cached, MediaType mediaType) {
12 | this.url = url;
13 | this.cached = cached;
14 | this.mediaType = mediaType;
15 | }
16 |
17 | public String getUrl() {
18 | return url;
19 | }
20 |
21 | public boolean isCached() {
22 | return cached;
23 | }
24 |
25 | public MediaType getMediaType() {
26 | return mediaType;
27 | }
28 |
29 | }
30 |
--------------------------------------------------------------------------------
/monolith/src/main/java/org/jboss/examples/ticketmonster/util/Reflections.java:
--------------------------------------------------------------------------------
1 | package org.jboss.examples.ticketmonster.util;
2 |
3 | import java.net.URL;
4 |
5 | /**
6 | * Utilities relating to Java reflection
7 | *
8 | * @author pmuir
9 | *
10 | */
11 | public class Reflections {
12 |
13 | private Reflections() {
14 | }
15 |
16 | /**
17 | * Get a resource by name, first searching the thread context classloader, and then the classloader of the Reflections
18 | * class.
19 | */
20 | public static URL getResource(String name) {
21 | if (Thread.currentThread().getContextClassLoader() != null) {
22 | return Thread.currentThread().getContextClassLoader().getResource(name);
23 | } else {
24 | return Reflections.class.getClassLoader().getResource(name);
25 | }
26 | }
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/monolith/src/main/java/org/jboss/examples/ticketmonster/util/qualifier/BotMessage.java:
--------------------------------------------------------------------------------
1 | package org.jboss.examples.ticketmonster.util.qualifier;
2 |
3 | import java.lang.annotation.Documented;
4 | import java.lang.annotation.Retention;
5 | import java.lang.annotation.Target;
6 |
7 | import javax.inject.Qualifier;
8 |
9 | import static java.lang.annotation.ElementType.FIELD;
10 | import static java.lang.annotation.ElementType.METHOD;
11 | import static java.lang.annotation.ElementType.PARAMETER;
12 | import static java.lang.annotation.ElementType.TYPE;
13 | import static java.lang.annotation.RetentionPolicy.RUNTIME;
14 |
15 | @Qualifier
16 | @Target({ TYPE, METHOD, PARAMETER, FIELD })
17 | @Retention(RUNTIME)
18 | @Documented
19 | public @interface BotMessage {
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/monolith/src/main/java/org/jboss/examples/ticketmonster/util/qualifier/Cancelled.java:
--------------------------------------------------------------------------------
1 | package org.jboss.examples.ticketmonster.util.qualifier;
2 |
3 | import java.lang.annotation.ElementType;
4 | import java.lang.annotation.Retention;
5 | import java.lang.annotation.RetentionPolicy;
6 | import java.lang.annotation.Target;
7 |
8 | import javax.inject.Qualifier;
9 |
10 | /**
11 | * {@link Qualifier} to mark a Booking as cancelled.
12 | *
13 | * @author Christian Sadilek
14 | */
15 | @Qualifier
16 | @Target({ElementType.FIELD,ElementType.PARAMETER,ElementType.METHOD,ElementType.TYPE})
17 | @Retention(RetentionPolicy.RUNTIME)
18 | public @interface Cancelled {
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/monolith/src/main/java/org/jboss/examples/ticketmonster/util/qualifier/Created.java:
--------------------------------------------------------------------------------
1 | package org.jboss.examples.ticketmonster.util.qualifier;
2 |
3 | import java.lang.annotation.ElementType;
4 | import java.lang.annotation.Retention;
5 | import java.lang.annotation.RetentionPolicy;
6 | import java.lang.annotation.Target;
7 |
8 | import javax.inject.Qualifier;
9 |
10 | /**
11 | * {@link Qualifier} to mark a Booking as new (created).
12 | *
13 | * @author Christian Sadilek
14 | */
15 | @Qualifier
16 | @Target({ElementType.FIELD,ElementType.PARAMETER,ElementType.METHOD,ElementType.TYPE})
17 | @Retention(RetentionPolicy.RUNTIME)
18 | public @interface Created {
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/monolith/src/main/resources/log4j.properties:
--------------------------------------------------------------------------------
1 | log4j.rootLogger=INFO, mainlogger
2 | log4j.appender.mainlogger=org.apache.log4j.ConsoleAppender
3 | log4j.appender.mainlogger.target=System.out
4 | log4j.appender.mainlogger.layout=org.apache.log4j.PatternLayout
5 | log4j.appender.mainlogger.layout.ConversionPattern=%p [%c{1}] %m%n
--------------------------------------------------------------------------------
/monolith/src/main/resources/not_available.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/resources/not_available.jpg
--------------------------------------------------------------------------------
/monolith/src/main/webapp/WEB-INF/beans.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
9 |
10 |
--------------------------------------------------------------------------------
/monolith/src/main/webapp/WEB-INF/jboss-deployment-structure.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/monolith/src/main/webapp/WEB-INF/web.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | ticket-monster
4 |
5 | 30
6 |
7 |
8 | ico
9 | image/x-icon
10 |
11 |
12 | /index.html
13 |
14 |
15 |
--------------------------------------------------------------------------------
/monolith/src/main/webapp/admin/fonts/glyphicons-halflings-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/admin/fonts/glyphicons-halflings-regular.eot
--------------------------------------------------------------------------------
/monolith/src/main/webapp/admin/fonts/glyphicons-halflings-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/admin/fonts/glyphicons-halflings-regular.ttf
--------------------------------------------------------------------------------
/monolith/src/main/webapp/admin/fonts/glyphicons-halflings-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/admin/fonts/glyphicons-halflings-regular.woff
--------------------------------------------------------------------------------
/monolith/src/main/webapp/admin/fonts/glyphicons-halflings-regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/admin/fonts/glyphicons-halflings-regular.woff2
--------------------------------------------------------------------------------
/monolith/src/main/webapp/admin/img/forge-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/admin/img/forge-logo.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/admin/index.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/monolith/src/main/webapp/admin/scripts/controllers/flashController.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ticketmonster').controller('FlashController', ['$scope','flash', function ($scope, flash) {
4 | $scope.flash = flash;
5 | $scope.showAlert = false;
6 |
7 | $scope.$watch('flash.getMessage()', function(newVal) {
8 | var message = newVal;
9 | if(message && message.text) {
10 | $scope.showAlert = message.text.length > 0;
11 | } else {
12 | $scope.showAlert = false;
13 | }
14 | });
15 |
16 | $scope.hideAlert = function() {
17 | $scope.showAlert = false;
18 | }
19 | }]);
20 |
--------------------------------------------------------------------------------
/monolith/src/main/webapp/admin/scripts/controllers/newEventCategoryController.js:
--------------------------------------------------------------------------------
1 |
2 | angular.module('ticketmonster').controller('NewEventCategoryController', function ($scope, $location, locationParser, flash, EventCategoryResource ) {
3 | $scope.disabled = false;
4 | $scope.$location = $location;
5 | $scope.eventCategory = $scope.eventCategory || {};
6 |
7 |
8 | $scope.save = function() {
9 | var successCallback = function(data,responseHeaders){
10 | var id = locationParser(responseHeaders);
11 | flash.setMessage({'type':'success','text':'The eventCategory was created successfully.'});
12 | $location.path('/EventCategories');
13 | };
14 | var errorCallback = function(response) {
15 | if(response && response.data && response.data.message) {
16 | flash.setMessage({'type': 'error', 'text': response.data.message}, true);
17 | } else {
18 | flash.setMessage({'type': 'error', 'text': 'Something broke. Retry, or cancel and start afresh.'}, true);
19 | }
20 | };
21 | EventCategoryResource.save($scope.eventCategory, successCallback, errorCallback);
22 | };
23 |
24 | $scope.cancel = function() {
25 | $location.path("/EventCategories");
26 | };
27 | });
--------------------------------------------------------------------------------
/monolith/src/main/webapp/admin/scripts/filters/startFromFilter.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ticketmonster').filter('startFrom', function() {
4 | return function(input, start) {
5 | start = +start; //parse to int
6 | return input.slice(start);
7 | };
8 | });
--------------------------------------------------------------------------------
/monolith/src/main/webapp/admin/scripts/offcanvas.js:
--------------------------------------------------------------------------------
1 | $(document).ready(function() {
2 | $('[data-toggle=offcanvas]').click(function() {
3 | $('.row-offcanvas').toggleClass('active');
4 | });
5 | });
--------------------------------------------------------------------------------
/monolith/src/main/webapp/admin/scripts/services/BookingFactory.js:
--------------------------------------------------------------------------------
1 | angular.module('ticketmonster').factory('BookingResource', function($resource){
2 | var resource = $resource('../rest/forge/bookings/:BookingId',{BookingId:'@id'},{'queryAll':{method:'GET',isArray:true},'query':{method:'GET',isArray:false},'update':{method:'PUT'}});
3 | return resource;
4 | });
--------------------------------------------------------------------------------
/monolith/src/main/webapp/admin/scripts/services/EventCategoryFactory.js:
--------------------------------------------------------------------------------
1 | angular.module('ticketmonster').factory('EventCategoryResource', function($resource){
2 | var resource = $resource('../rest/eventcategories/:EventCategoryId',{EventCategoryId:'@id'},{'queryAll':{method:'GET',isArray:true},'query':{method:'GET',isArray:false},'update':{method:'PUT'}});
3 | return resource;
4 | });
--------------------------------------------------------------------------------
/monolith/src/main/webapp/admin/scripts/services/EventFactory.js:
--------------------------------------------------------------------------------
1 | angular.module('ticketmonster').factory('EventResource', function($resource){
2 | var resource = $resource('../rest/forge/events/:EventId',{EventId:'@id'},{'queryAll':{method:'GET',isArray:true},'query':{method:'GET',isArray:false},'update':{method:'PUT'}});
3 | return resource;
4 | });
--------------------------------------------------------------------------------
/monolith/src/main/webapp/admin/scripts/services/MediaItemFactory.js:
--------------------------------------------------------------------------------
1 | angular.module('ticketmonster').factory('MediaItemResource', function($resource){
2 | var resource = $resource('../rest/mediaitems/:MediaItemId',{MediaItemId:'@id'},{'queryAll':{method:'GET',isArray:true},'query':{method:'GET',isArray:false},'update':{method:'PUT'}});
3 | return resource;
4 | });
--------------------------------------------------------------------------------
/monolith/src/main/webapp/admin/scripts/services/PerformanceFactory.js:
--------------------------------------------------------------------------------
1 | angular.module('ticketmonster').factory('PerformanceResource', function($resource){
2 | var resource = $resource('../rest/performances/:PerformanceId',{PerformanceId:'@id'},{'queryAll':{method:'GET',isArray:true},'query':{method:'GET',isArray:false},'update':{method:'PUT'}});
3 | return resource;
4 | });
--------------------------------------------------------------------------------
/monolith/src/main/webapp/admin/scripts/services/SectionAllocationFactory.js:
--------------------------------------------------------------------------------
1 | angular.module('ticketmonster').factory('SectionAllocationResource', function($resource){
2 | var resource = $resource('../rest/sectionallocations/:SectionAllocationId',{SectionAllocationId:'@id'},{'queryAll':{method:'GET',isArray:true},'query':{method:'GET',isArray:false},'update':{method:'PUT'}});
3 | return resource;
4 | });
--------------------------------------------------------------------------------
/monolith/src/main/webapp/admin/scripts/services/SectionFactory.js:
--------------------------------------------------------------------------------
1 | angular.module('ticketmonster').factory('SectionResource', function($resource){
2 | var resource = $resource('../rest/sections/:SectionId',{SectionId:'@id'},{'queryAll':{method:'GET',isArray:true},'query':{method:'GET',isArray:false},'update':{method:'PUT'}});
3 | return resource;
4 | });
--------------------------------------------------------------------------------
/monolith/src/main/webapp/admin/scripts/services/ShowFactory.js:
--------------------------------------------------------------------------------
1 | angular.module('ticketmonster').factory('ShowResource', function($resource){
2 | var resource = $resource('../rest/forge/shows/:ShowId',{ShowId:'@id'},{'queryAll':{method:'GET',isArray:true},'query':{method:'GET',isArray:false},'update':{method:'PUT'}});
3 | return resource;
4 | });
--------------------------------------------------------------------------------
/monolith/src/main/webapp/admin/scripts/services/TicketCategoryFactory.js:
--------------------------------------------------------------------------------
1 | angular.module('ticketmonster').factory('TicketCategoryResource', function($resource){
2 | var resource = $resource('../rest/ticketcategories/:TicketCategoryId',{TicketCategoryId:'@id'},{'queryAll':{method:'GET',isArray:true},'query':{method:'GET',isArray:false},'update':{method:'PUT'}});
3 | return resource;
4 | });
--------------------------------------------------------------------------------
/monolith/src/main/webapp/admin/scripts/services/TicketFactory.js:
--------------------------------------------------------------------------------
1 | angular.module('ticketmonster').factory('TicketResource', function($resource){
2 | var resource = $resource('../rest/tickets/:TicketId',{TicketId:'@id'},{'queryAll':{method:'GET',isArray:true},'query':{method:'GET',isArray:false},'update':{method:'PUT'}});
3 | return resource;
4 | });
--------------------------------------------------------------------------------
/monolith/src/main/webapp/admin/scripts/services/TicketPriceFactory.js:
--------------------------------------------------------------------------------
1 | angular.module('ticketmonster').factory('TicketPriceResource', function($resource){
2 | var resource = $resource('../rest/ticketprices/:TicketPriceId',{TicketPriceId:'@id'},{'queryAll':{method:'GET',isArray:true},'query':{method:'GET',isArray:false},'update':{method:'PUT'}});
3 | return resource;
4 | });
--------------------------------------------------------------------------------
/monolith/src/main/webapp/admin/scripts/services/VenueFactory.js:
--------------------------------------------------------------------------------
1 | angular.module('ticketmonster').factory('VenueResource', function($resource){
2 | var resource = $resource('../rest/forge/venues/:VenueId',{VenueId:'@id'},{'queryAll':{method:'GET',isArray:true},'query':{method:'GET',isArray:false},'update':{method:'PUT'}});
3 | return resource;
4 | });
--------------------------------------------------------------------------------
/monolith/src/main/webapp/admin/scripts/services/flash.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ticketmonster').factory('flash', ['$rootScope', function ($rootScope) {
4 | var messages = [];
5 | var currentMessage = {};
6 |
7 | $rootScope.$on('$routeChangeSuccess', function() {
8 | currentMessage = messages.shift() || {};
9 | });
10 |
11 | return {
12 | getMessage: function () {
13 | return currentMessage;
14 | },
15 | setMessage: function(message, pop) {
16 | switch(message.type) {
17 | case "error" : message.cssClass = "danger"; break;
18 | case "success" : message.cssClass = "success"; break;
19 | case "info" : message.cssClass = "info"; break;
20 | case "warning" : message.cssClass = "warning"; break;
21 | }
22 | messages.push(message);
23 | if(pop) {
24 | currentMessage = messages.shift() || {};
25 | }
26 | }
27 | };
28 | }]);
29 |
--------------------------------------------------------------------------------
/monolith/src/main/webapp/admin/scripts/services/locationParser.js:
--------------------------------------------------------------------------------
1 | angular.module('ticketmonster').value('locationParser', function(responseHeaders){
2 | // Get the Location header and parse it.
3 | var locationHeader = responseHeaders('Location');
4 | var fragments = locationHeader.split('/');
5 | var id = fragments[fragments.length -1];
6 | return id;
7 | });
--------------------------------------------------------------------------------
/monolith/src/main/webapp/admin/views/landing.html:
--------------------------------------------------------------------------------
1 |
2 | Your application is running.
3 |
4 |
5 | Documentation
7 | | Get Excited!
9 | Forge Project | User
11 | Forums | Report an issue
13 |
--------------------------------------------------------------------------------
/monolith/src/main/webapp/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/favicon.ico
--------------------------------------------------------------------------------
/monolith/src/main/webapp/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Ticket Monster
5 |
6 |
7 |
8 |
9 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/monolith/src/main/webapp/mobileapp.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Ticket Monster
5 |
6 |
7 |
8 |
9 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/monolith/src/main/webapp/res/icon/cordova_128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/res/icon/cordova_128.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/res/icon/cordova_16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/res/icon/cordova_16.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/res/icon/cordova_24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/res/icon/cordova_24.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/res/icon/cordova_256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/res/icon/cordova_256.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/res/icon/cordova_32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/res/icon/cordova_32.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/res/icon/cordova_48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/res/icon/cordova_48.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/res/icon/cordova_512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/res/icon/cordova_512.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/res/icon/cordova_64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/res/icon/cordova_64.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/res/icon/cordova_android_36.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/res/icon/cordova_android_36.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/res/icon/cordova_android_48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/res/icon/cordova_android_48.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/res/icon/cordova_android_72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/res/icon/cordova_android_72.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/res/icon/cordova_android_96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/res/icon/cordova_android_96.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/res/icon/cordova_bb_80.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/res/icon/cordova_bb_80.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/res/icon/cordova_ios_114.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/res/icon/cordova_ios_114.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/res/icon/cordova_ios_144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/res/icon/cordova_ios_144.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/res/icon/cordova_ios_57.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/res/icon/cordova_ios_57.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/res/icon/cordova_ios_72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/res/icon/cordova_ios_72.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/res/screen/android_hdpi_landscape.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/res/screen/android_hdpi_landscape.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/res/screen/android_hdpi_portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/res/screen/android_hdpi_portrait.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/res/screen/android_ldpi_landscape.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/res/screen/android_ldpi_landscape.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/res/screen/android_ldpi_portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/res/screen/android_ldpi_portrait.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/res/screen/android_mdpi_landscape.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/res/screen/android_mdpi_landscape.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/res/screen/android_mdpi_portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/res/screen/android_mdpi_portrait.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/res/screen/android_xhdpi_landscape.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/res/screen/android_xhdpi_landscape.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/res/screen/android_xhdpi_portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/res/screen/android_xhdpi_portrait.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/res/screen/blackberry_transparent_300.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/res/screen/blackberry_transparent_300.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/res/screen/blackberry_transparent_400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/res/screen/blackberry_transparent_400.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/res/screen/ipad_landscape.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/res/screen/ipad_landscape.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/res/screen/ipad_portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/res/screen/ipad_portrait.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/res/screen/ipad_retina_landscape.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/res/screen/ipad_retina_landscape.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/res/screen/ipad_retina_portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/res/screen/ipad_retina_portrait.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/res/screen/iphone_landscape.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/res/screen/iphone_landscape.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/res/screen/iphone_portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/res/screen/iphone_portrait.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/res/screen/iphone_retina_landscape.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/res/screen/iphone_retina_landscape.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/res/screen/iphone_retina_portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/res/screen/iphone_retina_portrait.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/res/screen/windows_phone_portrait.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/res/screen/windows_phone_portrait.jpg
--------------------------------------------------------------------------------
/monolith/src/main/webapp/resources/fonts/glyphicons-halflings-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/resources/fonts/glyphicons-halflings-regular.eot
--------------------------------------------------------------------------------
/monolith/src/main/webapp/resources/fonts/glyphicons-halflings-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/resources/fonts/glyphicons-halflings-regular.ttf
--------------------------------------------------------------------------------
/monolith/src/main/webapp/resources/fonts/glyphicons-halflings-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/resources/fonts/glyphicons-halflings-regular.woff
--------------------------------------------------------------------------------
/monolith/src/main/webapp/resources/fonts/glyphicons-halflings-regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/resources/fonts/glyphicons-halflings-regular.woff2
--------------------------------------------------------------------------------
/monolith/src/main/webapp/resources/img/GitHub_Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/resources/img/GitHub_Logo.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/resources/img/banner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/resources/img/banner.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/resources/img/bg-dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/resources/img/bg-dark.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/resources/img/bg-red.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/resources/img/bg-red.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/resources/img/bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/resources/img/bg.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/resources/img/btn-grey-hvr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/resources/img/btn-grey-hvr.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/resources/img/btn-grey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/resources/img/btn-grey.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/resources/img/btn-pink-hvr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/resources/img/btn-pink-hvr.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/resources/img/btn-pink.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/resources/img/btn-pink.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/resources/img/glyphicons-halflings-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/resources/img/glyphicons-halflings-white.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/resources/img/glyphicons-halflings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/resources/img/glyphicons-halflings.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/resources/img/glyphicons_019_cogwheel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/resources/img/glyphicons_019_cogwheel.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/resources/img/glyphicons_163_iphone.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/resources/img/glyphicons_163_iphone.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/resources/img/glyphicons_232_cloud.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/resources/img/glyphicons_232_cloud.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/resources/img/glyphicons_351_book_open.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/resources/img/glyphicons_351_book_open.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/resources/img/jdf_logo_450px.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/resources/img/jdf_logo_450px.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/resources/img/jdf_mark_100px.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/resources/img/jdf_mark_100px.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/resources/img/jdf_mark_50px.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/resources/img/jdf_mark_50px.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/resources/img/jdf_mark_75px.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/resources/img/jdf_mark_75px.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/resources/img/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/resources/img/logo.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/resources/img/nav-bg-dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/resources/img/nav-bg-dark.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/resources/img/nav-bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/resources/img/nav-bg.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/resources/img/rhjb_eap_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/resources/img/rhjb_eap_logo.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/resources/img/splash-ticketmonster.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/webapp/resources/img/splash-ticketmonster.png
--------------------------------------------------------------------------------
/monolith/src/main/webapp/resources/js/app/aggregator/desktop.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | /**
4 | * A module for the router of the desktop application
5 | */
6 | define("router", [
7 | 'angular',
8 | 'angularRoute',
9 | 'angularResource',
10 | 'app/home/view',
11 | 'app/events/eventsView',
12 | 'app/venues/venuesView',
13 | 'app/eventDetail/eventDetailView',
14 | 'app/venueDetail/venueDetailView',
15 | 'app/booking/view',
16 | 'app/monitor/monitor'
17 | ],function (angular) {
18 |
19 | return angular.module('ticketMonster', ['ngRoute',
20 | 'ngResource',
21 | 'ticketMonster.api',
22 | 'ticketMonster.homeView',
23 | 'ticketMonster.eventsView',
24 | 'ticketMonster.venuesView',
25 | 'ticketMonster.eventDetailView',
26 | 'ticketMonster.venueDetailView',
27 | 'ticketMonster.bookingView',
28 | 'ticketMonster.monitorView'])
29 | .config(['$routeProvider', function($routeProvider) {
30 | $routeProvider
31 | .otherwise({redirectTo: '/'});
32 | }]);
33 | });
--------------------------------------------------------------------------------
/monolith/src/main/webapp/resources/js/app/aggregator/mobile.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | /**
4 | * A module for the router of the desktop application
5 | */
6 | define("router", [
7 | 'angular',
8 | 'angularRoute',
9 | 'angularResource',
10 | 'angularTouch',
11 | 'app/home/view',
12 | 'app/events/eventsView',
13 | 'app/venues/venuesView',
14 | 'app/eventDetail/eventDetailView',
15 | 'app/venueDetail/venueDetailView',
16 | 'app/booking/view',
17 | 'app/monitor/monitor'
18 | ],function (angular) {
19 |
20 | return angular.module('ticketMonster', ['ngRoute',
21 | 'ngResource',
22 | 'ngTouch',
23 | 'ticketMonster.api',
24 | 'ticketMonster.homeView',
25 | 'ticketMonster.eventsView',
26 | 'ticketMonster.venuesView',
27 | 'ticketMonster.eventDetailView',
28 | 'ticketMonster.venueDetailView',
29 | 'ticketMonster.bookingView',
30 | 'ticketMonster.monitorView'])
31 | .config(['$routeProvider', function($routeProvider) {
32 | $routeProvider
33 | .otherwise({redirectTo: '/'});
34 | }]);
35 | });
--------------------------------------------------------------------------------
/monolith/src/main/webapp/resources/js/app/components/components.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 | define([
3 | 'angular',
4 | 'bootstrap'
5 | ], function (angular) {
6 | angular.module('ticketMonster.ui.components',[])
7 | .directive('menuPopover', function () {
8 | return {
9 | restrict: 'A',
10 | template: '',
11 | link: function (scope, el, attrs) {
12 | if (!Modernizr.touch) {
13 | $(el).popover({
14 | trigger: 'hover',
15 | container: '#content',
16 | content: attrs.content,
17 | title: attrs.originalTitle
18 | }).data('bs.popover')
19 | .tip()
20 | .addClass('visible-lg')
21 | .addClass('visible-md');
22 | }
23 | }
24 | };
25 | });
26 | });
--------------------------------------------------------------------------------
/monolith/src/main/webapp/resources/js/app/home/view.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 | define([
3 | 'angular',
4 | 'angularRoute'
5 | ], function(angular) {
6 | angular.module('ticketMonster.homeView', ['ngRoute'])
7 | .config(['$routeProvider', function($routeProvider) {
8 | $routeProvider.when('/', {
9 | templateUrl: 'resources/js/app/home/home.html',
10 | controller: 'HomeController'
11 | });
12 | }])
13 | .controller('HomeController', [function() {
14 |
15 | }]);
16 | });
--------------------------------------------------------------------------------
/monolith/src/main/webapp/resources/js/configurations/hybrid.js:
--------------------------------------------------------------------------------
1 | // override configuration for RESTful services
2 | var TicketMonster = {
3 | config:{
4 | baseRESTUrl:"http://ticketmonster-jdf.rhcloud.com/"
5 | }
6 | };
7 |
8 | require(['../../../cordova'], function() {
9 |
10 | var bootstrap = {
11 | initialize: function() {
12 | document.addEventListener('deviceready', this.onDeviceReady, false);
13 | },
14 | onDeviceReady: function() {
15 | // Detect if iOS 7 or higher and disable overlaying the status bar
16 | if(window.device && window.device.platform.toLowerCase() == "ios" &&
17 | parseFloat(window.device.version) >= 7.0) {
18 | StatusBar.overlaysWebView(false);
19 | StatusBar.styleDefault();
20 | StatusBar.backgroundColorByHexString("#ccc");
21 | }
22 | // Load the mobile module
23 | require (["mobile"]);
24 | }
25 | };
26 |
27 | bootstrap.initialize();
28 | });
--------------------------------------------------------------------------------
/monolith/src/main/webapp/resources/js/configurations/loader.js:
--------------------------------------------------------------------------------
1 | //detect the appropriate module to load
2 | define(function () {
3 |
4 | /*
5 | A simple check on the client. For touch devices or small-resolution screens)
6 | show the mobile client. By enabling the mobile client on a small-resolution screen
7 | we allow for testing outside a mobile device (like for example the Mobile Browser
8 | simulator in JBoss Tools and JBoss Developer Studio).
9 | */
10 |
11 | var environment;
12 |
13 | if (document.URL.indexOf("mobileapp.html") > -1) {
14 | environment = "hybrid";
15 | }
16 | else if (Modernizr.touch || Modernizr.mq("only all and (max-width: 768px)")) {
17 | environment = "mobile";
18 | } else {
19 | environment = "desktop";
20 | }
21 |
22 | require([environment]);
23 | });
--------------------------------------------------------------------------------
/monolith/src/main/wf-standalone/module/module.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/monolith/src/main/wf-standalone/module/mysql-connector-java-5.1.38.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/monolith/src/main/wf-standalone/module/mysql-connector-java-5.1.38.jar
--------------------------------------------------------------------------------
/monolith/src/test/java/org/jboss/examples/ticketmonster/test/TicketMonsterDeployment.java:
--------------------------------------------------------------------------------
1 | package org.jboss.examples.ticketmonster.test;
2 |
3 | import org.jboss.examples.ticketmonster.util.Resources;
4 | import org.jboss.shrinkwrap.api.ShrinkWrap;
5 | import org.jboss.shrinkwrap.api.asset.EmptyAsset;
6 | import org.jboss.shrinkwrap.api.spec.WebArchive;
7 |
8 | public class TicketMonsterDeployment {
9 |
10 | public static WebArchive deployment() {
11 | return ShrinkWrap
12 | .create(WebArchive.class, "test.war")
13 | .addPackage(Resources.class.getPackage())
14 | .addAsResource("META-INF/test-persistence.xml", "META-INF/persistence.xml")
15 | .addAsResource("import.sql")
16 | .addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml")
17 | // Deploy our test datasource
18 | .addAsWebInfResource("test-ds.xml");
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/monolith/src/test/java/org/jboss/examples/ticketmonster/test/rest/RESTDeployment.java:
--------------------------------------------------------------------------------
1 | package org.jboss.examples.ticketmonster.test.rest;
2 |
3 | import org.jboss.examples.ticketmonster.model.Booking;
4 | import org.jboss.examples.ticketmonster.rest.BaseEntityService;
5 | import org.jboss.examples.ticketmonster.rest.dto.VenueDTO;
6 | import org.jboss.examples.ticketmonster.service.*;
7 | import org.jboss.examples.ticketmonster.test.TicketMonsterDeployment;
8 | import org.jboss.shrinkwrap.api.spec.WebArchive;
9 |
10 | public class RESTDeployment {
11 |
12 | public static WebArchive deployment() {
13 |
14 |
15 | return TicketMonsterDeployment.deployment()
16 | .addPackage(Booking.class.getPackage())
17 | .addPackage(BaseEntityService.class.getPackage())
18 | .addPackage(VenueDTO.class.getPackage())
19 | .addPackage(SeatAllocationService.class.getPackage())
20 | .addClass(AllocatedSeats.class)
21 | .addClass(MediaPath.class)
22 | .addClass(MediaManager.class);
23 | }
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/orders-service/Readme.md:
--------------------------------------------------------------------------------
1 | Run mysql database by following instructiosn in [the mysql docs](./docs/mysql.md)
2 |
3 | Then build the project with mysql support:
4 |
5 | ```
6 | mvn clean install -Pmysql
7 | ```
8 |
9 | Or run with spring boot:
10 |
11 | ```
12 | mvn -Pmysql spring-boot:run -Dspring.profiles.active=mysql
13 | ```
14 |
15 |
16 | Or to build for kubernetes (and skip Integration tests)
17 |
18 | ```
19 | mvn clean install -Pmysql,kubernetes
20 | ```
21 |
22 | To build the docker image:
23 |
24 | ```
25 | mvn clean install -Pmysql,kubernetes fabric8:build
26 | ```
27 |
28 |
29 | A curl command you can use to test everything:
30 |
31 | ```
32 | curl -X POST -H "Content-Type: application/json" -d "{\"ticketRequests\":[{\"ticketPrice\":4,\"quantity\":3}],\"email\":\"foo@bar.coom\",\"performance\":1}" http://localhost:8080/rest/bookings
33 | ```
34 |
35 |
36 | To connect to mysql:
37 |
38 | Port forward the mysql pods locally (eg):
39 |
40 | ```
41 | kubectl port-forward mysql-backend-4085635837-kxfc6 3306:3306
42 | ```
43 |
44 | Login with a mysql client:
45 |
46 | ```
47 | mysql -h 127.0.0.1 --port 3306 -u ticket -pmonster
48 | ```
49 |
--------------------------------------------------------------------------------
/orders-service/build-docker.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | mvn clean install -Pmysql,kubernetes -DskipITs=true fabric8:build
--------------------------------------------------------------------------------
/orders-service/docs/hoverfly-capture.md:
--------------------------------------------------------------------------------
1 | To use hoverfly to capture the monolith's orders website traffic, first we need to deploy ticket monster (at this point, we've deployed it into Kubernetes/OpenShift with UI and backends split out. From our browser if we navigate to the UI, we can then set up a proxy (hoverlfy) to capture traffic and build tests around that.
2 |
3 | startup hoverfly in capture mode:
4 |
5 | > hoverctl start
6 | > hoverctl mode capture
7 |
8 | Let's capture only the requests made to the rest endpoints
9 |
10 | > hoverctl destination "rest"
11 |
12 | Now configure your browser to proxy to localhost:8500
13 |
14 | Note: you can follow the hoverfly logs to make sure things are getting captured:
15 |
16 | > hoverctl logs --follow
17 |
18 | Now go to your browser and start exercising all of the functions of the ordering process.
19 |
20 |
21 | > hoverctl export simulation.json
22 |
23 |
24 |
--------------------------------------------------------------------------------
/orders-service/docs/json-schema.md:
--------------------------------------------------------------------------------
1 | You can copy the JSON instance from the simulation in the hoverfly export and convert to JSON schema so you can test the structure of the output. Use jsonschema.net tools to create a json schema to be used in tests:
2 |
3 | https://jsonschema.net/#/editor
--------------------------------------------------------------------------------
/orders-service/docs/mysql.md:
--------------------------------------------------------------------------------
1 | Start up a database:
2 |
3 | ```
4 | docker run -d --name some-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=admin -e MYSQL_PASSWORD=monster -e MYSQL_USER=ticket -e MYSQL_DATABASE=ticketmonster mysql:5.7
5 | ```
6 |
7 | Connect to it via client:
8 |
9 | ```
10 | docker run -it --link some-mysql:mysql --rm mysql:5.7 sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uticket -pmonster ticketmonster'
11 | ```
12 |
13 |
14 | Login locally/natively
15 | If you port forward the mysql ports to the docker container, you can run a mysql client locally:
16 |
17 |
18 | ```
19 | mysql ticketmonster -h127.0.0.1 -uticket -pmonster
20 | ```
21 |
22 | You will need to set up the databases:
23 |
24 | ```
25 | mysql ticketmonster -h127.0.0.1 -uticket -pmonster < ./scripts/grants.sql
26 | mysql ticketmonster -h127.0.0.1 -uticket -pmonster < ./scripts/orders.sql
27 | mysql ticketmonster -h127.0.0.1 -uticket -pmonster < ./scripts/ticketmonster.sql
28 | ```
29 |
30 | An simple script to port forward minikube:
31 |
32 | ```
33 | #!/bin/sh
34 |
35 | port=${1:=3306}
36 | minikube ssh -- -vnNTL *:$port:$(minikube ip):$port
37 | ```
38 |
--------------------------------------------------------------------------------
/orders-service/push-docker.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | docker push ceposta/orders-service:latest
--------------------------------------------------------------------------------
/orders-service/scripts/grants.sql:
--------------------------------------------------------------------------------
1 | CREATE DATABASE IF NOT EXISTS orders;
2 | CREATE DATABASE IF NOT EXISTS ticketmonster;
3 |
4 | GRANT ALL PRIVILEGES ON `ticketmonster`.* TO 'ticket'@'%';
5 | GRANT ALL PRIVILEGES ON `orders`.* TO 'ticket'@'%';
--------------------------------------------------------------------------------
/orders-service/src/main/fabric8/deployment.yml:
--------------------------------------------------------------------------------
1 | spec:
2 | template:
3 | spec:
4 | containers:
5 | - env:
6 | - name: SPRING_PROFILES_ACTIVE
7 | value: "kube"
--------------------------------------------------------------------------------
/orders-service/src/main/java/org/ticketmonster/orders/booking/AllocatedSeats.java:
--------------------------------------------------------------------------------
1 | package org.ticketmonster.orders.booking;
2 |
3 |
4 | import org.ticketmonster.orders.domain.Seat;
5 | import org.ticketmonster.orders.domain.SectionAllocation;
6 |
7 | import java.util.List;
8 |
9 | /**
10 | * A transient object which represents a collection of pre-allocated seats
11 | *
12 | * @author Marius Bogoevici
13 | */
14 | public class AllocatedSeats {
15 |
16 | private final SectionAllocation sectionAllocation;
17 |
18 | private final List seats;
19 |
20 | public AllocatedSeats(SectionAllocation sectionAllocation, List seats) {
21 | this.sectionAllocation = sectionAllocation;
22 | this.seats = seats;
23 | }
24 |
25 | public SectionAllocation getSectionAllocation() {
26 | return sectionAllocation;
27 | }
28 |
29 | public List getSeats() {
30 | return seats;
31 | }
32 |
33 | public void markOccupied() {
34 | sectionAllocation.markOccupied(seats);
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/orders-service/src/main/java/org/ticketmonster/orders/booking/RestServiceException.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 | package org.ticketmonster.orders.booking;
18 |
19 | /**
20 | * Created by ceposta
21 | * docker build -t ceposta/tm-ui:monolith .
22 |
23 | Run in kubernetes
24 |
25 | > kubectl run tm-ui --image=ceposta/tm-ui:monolith --port=80
26 |
27 | Or using the resource files in the [deployment](../deployment/kubernetes/core/frontend/) folder.
28 |
--------------------------------------------------------------------------------
/tm-ui-v1/build-docker.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | docker build -t ceposta/tm-ui:monolith .
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/admin/fonts/glyphicons-halflings-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/admin/fonts/glyphicons-halflings-regular.eot
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/admin/fonts/glyphicons-halflings-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/admin/fonts/glyphicons-halflings-regular.ttf
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/admin/fonts/glyphicons-halflings-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/admin/fonts/glyphicons-halflings-regular.woff
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/admin/fonts/glyphicons-halflings-regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/admin/fonts/glyphicons-halflings-regular.woff2
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/admin/img/forge-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/admin/img/forge-logo.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/admin/index.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/admin/scripts/controllers/flashController.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ticketmonster').controller('FlashController', ['$scope','flash', function ($scope, flash) {
4 | $scope.flash = flash;
5 | $scope.showAlert = false;
6 |
7 | $scope.$watch('flash.getMessage()', function(newVal) {
8 | var message = newVal;
9 | if(message && message.text) {
10 | $scope.showAlert = message.text.length > 0;
11 | } else {
12 | $scope.showAlert = false;
13 | }
14 | });
15 |
16 | $scope.hideAlert = function() {
17 | $scope.showAlert = false;
18 | }
19 | }]);
20 |
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/admin/scripts/controllers/newEventCategoryController.js:
--------------------------------------------------------------------------------
1 |
2 | angular.module('ticketmonster').controller('NewEventCategoryController', function ($scope, $location, locationParser, flash, EventCategoryResource ) {
3 | $scope.disabled = false;
4 | $scope.$location = $location;
5 | $scope.eventCategory = $scope.eventCategory || {};
6 |
7 |
8 | $scope.save = function() {
9 | var successCallback = function(data,responseHeaders){
10 | var id = locationParser(responseHeaders);
11 | flash.setMessage({'type':'success','text':'The eventCategory was created successfully.'});
12 | $location.path('/EventCategories');
13 | };
14 | var errorCallback = function(response) {
15 | if(response && response.data && response.data.message) {
16 | flash.setMessage({'type': 'error', 'text': response.data.message}, true);
17 | } else {
18 | flash.setMessage({'type': 'error', 'text': 'Something broke. Retry, or cancel and start afresh.'}, true);
19 | }
20 | };
21 | EventCategoryResource.save($scope.eventCategory, successCallback, errorCallback);
22 | };
23 |
24 | $scope.cancel = function() {
25 | $location.path("/EventCategories");
26 | };
27 | });
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/admin/scripts/filters/startFromFilter.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ticketmonster').filter('startFrom', function() {
4 | return function(input, start) {
5 | start = +start; //parse to int
6 | return input.slice(start);
7 | };
8 | });
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/admin/scripts/offcanvas.js:
--------------------------------------------------------------------------------
1 | $(document).ready(function() {
2 | $('[data-toggle=offcanvas]').click(function() {
3 | $('.row-offcanvas').toggleClass('active');
4 | });
5 | });
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/admin/scripts/services/BookingFactory.js:
--------------------------------------------------------------------------------
1 | angular.module('ticketmonster').factory('BookingResource', function($resource){
2 | var resource = $resource('../rest/forge/bookings/:BookingId',{BookingId:'@id'},{'queryAll':{method:'GET',isArray:true},'query':{method:'GET',isArray:false},'update':{method:'PUT'}});
3 | return resource;
4 | });
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/admin/scripts/services/EventCategoryFactory.js:
--------------------------------------------------------------------------------
1 | angular.module('ticketmonster').factory('EventCategoryResource', function($resource){
2 | var resource = $resource('../rest/eventcategories/:EventCategoryId',{EventCategoryId:'@id'},{'queryAll':{method:'GET',isArray:true},'query':{method:'GET',isArray:false},'update':{method:'PUT'}});
3 | return resource;
4 | });
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/admin/scripts/services/EventFactory.js:
--------------------------------------------------------------------------------
1 | angular.module('ticketmonster').factory('EventResource', function($resource){
2 | var resource = $resource('../rest/forge/events/:EventId',{EventId:'@id'},{'queryAll':{method:'GET',isArray:true},'query':{method:'GET',isArray:false},'update':{method:'PUT'}});
3 | return resource;
4 | });
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/admin/scripts/services/MediaItemFactory.js:
--------------------------------------------------------------------------------
1 | angular.module('ticketmonster').factory('MediaItemResource', function($resource){
2 | var resource = $resource('../rest/mediaitems/:MediaItemId',{MediaItemId:'@id'},{'queryAll':{method:'GET',isArray:true},'query':{method:'GET',isArray:false},'update':{method:'PUT'}});
3 | return resource;
4 | });
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/admin/scripts/services/PerformanceFactory.js:
--------------------------------------------------------------------------------
1 | angular.module('ticketmonster').factory('PerformanceResource', function($resource){
2 | var resource = $resource('../rest/performances/:PerformanceId',{PerformanceId:'@id'},{'queryAll':{method:'GET',isArray:true},'query':{method:'GET',isArray:false},'update':{method:'PUT'}});
3 | return resource;
4 | });
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/admin/scripts/services/SectionAllocationFactory.js:
--------------------------------------------------------------------------------
1 | angular.module('ticketmonster').factory('SectionAllocationResource', function($resource){
2 | var resource = $resource('../rest/sectionallocations/:SectionAllocationId',{SectionAllocationId:'@id'},{'queryAll':{method:'GET',isArray:true},'query':{method:'GET',isArray:false},'update':{method:'PUT'}});
3 | return resource;
4 | });
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/admin/scripts/services/SectionFactory.js:
--------------------------------------------------------------------------------
1 | angular.module('ticketmonster').factory('SectionResource', function($resource){
2 | var resource = $resource('../rest/sections/:SectionId',{SectionId:'@id'},{'queryAll':{method:'GET',isArray:true},'query':{method:'GET',isArray:false},'update':{method:'PUT'}});
3 | return resource;
4 | });
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/admin/scripts/services/ShowFactory.js:
--------------------------------------------------------------------------------
1 | angular.module('ticketmonster').factory('ShowResource', function($resource){
2 | var resource = $resource('../rest/forge/shows/:ShowId',{ShowId:'@id'},{'queryAll':{method:'GET',isArray:true},'query':{method:'GET',isArray:false},'update':{method:'PUT'}});
3 | return resource;
4 | });
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/admin/scripts/services/TicketCategoryFactory.js:
--------------------------------------------------------------------------------
1 | angular.module('ticketmonster').factory('TicketCategoryResource', function($resource){
2 | var resource = $resource('../rest/ticketcategories/:TicketCategoryId',{TicketCategoryId:'@id'},{'queryAll':{method:'GET',isArray:true},'query':{method:'GET',isArray:false},'update':{method:'PUT'}});
3 | return resource;
4 | });
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/admin/scripts/services/TicketFactory.js:
--------------------------------------------------------------------------------
1 | angular.module('ticketmonster').factory('TicketResource', function($resource){
2 | var resource = $resource('../rest/tickets/:TicketId',{TicketId:'@id'},{'queryAll':{method:'GET',isArray:true},'query':{method:'GET',isArray:false},'update':{method:'PUT'}});
3 | return resource;
4 | });
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/admin/scripts/services/TicketPriceFactory.js:
--------------------------------------------------------------------------------
1 | angular.module('ticketmonster').factory('TicketPriceResource', function($resource){
2 | var resource = $resource('../rest/ticketprices/:TicketPriceId',{TicketPriceId:'@id'},{'queryAll':{method:'GET',isArray:true},'query':{method:'GET',isArray:false},'update':{method:'PUT'}});
3 | return resource;
4 | });
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/admin/scripts/services/VenueFactory.js:
--------------------------------------------------------------------------------
1 | angular.module('ticketmonster').factory('VenueResource', function($resource){
2 | var resource = $resource('../rest/forge/venues/:VenueId',{VenueId:'@id'},{'queryAll':{method:'GET',isArray:true},'query':{method:'GET',isArray:false},'update':{method:'PUT'}});
3 | return resource;
4 | });
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/admin/scripts/services/flash.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ticketmonster').factory('flash', ['$rootScope', function ($rootScope) {
4 | var messages = [];
5 | var currentMessage = {};
6 |
7 | $rootScope.$on('$routeChangeSuccess', function() {
8 | currentMessage = messages.shift() || {};
9 | });
10 |
11 | return {
12 | getMessage: function () {
13 | return currentMessage;
14 | },
15 | setMessage: function(message, pop) {
16 | switch(message.type) {
17 | case "error" : message.cssClass = "danger"; break;
18 | case "success" : message.cssClass = "success"; break;
19 | case "info" : message.cssClass = "info"; break;
20 | case "warning" : message.cssClass = "warning"; break;
21 | }
22 | messages.push(message);
23 | if(pop) {
24 | currentMessage = messages.shift() || {};
25 | }
26 | }
27 | };
28 | }]);
29 |
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/admin/scripts/services/locationParser.js:
--------------------------------------------------------------------------------
1 | angular.module('ticketmonster').value('locationParser', function(responseHeaders){
2 | // Get the Location header and parse it.
3 | var locationHeader = responseHeaders('Location');
4 | var fragments = locationHeader.split('/');
5 | var id = fragments[fragments.length -1];
6 | return id;
7 | });
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/admin/views/landing.html:
--------------------------------------------------------------------------------
1 |
2 | Your application is running.
3 |
4 |
5 | Documentation
7 | | Get Excited!
9 | Forge Project | User
11 | Forums | Report an issue
13 |
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/favicon.ico
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Ticket Monster
5 |
6 |
7 |
8 |
9 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/mobileapp.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Ticket Monster
5 |
6 |
7 |
8 |
9 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/res/icon/cordova_128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/res/icon/cordova_128.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/res/icon/cordova_16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/res/icon/cordova_16.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/res/icon/cordova_24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/res/icon/cordova_24.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/res/icon/cordova_256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/res/icon/cordova_256.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/res/icon/cordova_32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/res/icon/cordova_32.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/res/icon/cordova_48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/res/icon/cordova_48.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/res/icon/cordova_512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/res/icon/cordova_512.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/res/icon/cordova_64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/res/icon/cordova_64.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/res/icon/cordova_android_36.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/res/icon/cordova_android_36.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/res/icon/cordova_android_48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/res/icon/cordova_android_48.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/res/icon/cordova_android_72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/res/icon/cordova_android_72.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/res/icon/cordova_android_96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/res/icon/cordova_android_96.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/res/icon/cordova_bb_80.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/res/icon/cordova_bb_80.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/res/icon/cordova_ios_114.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/res/icon/cordova_ios_114.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/res/icon/cordova_ios_144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/res/icon/cordova_ios_144.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/res/icon/cordova_ios_57.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/res/icon/cordova_ios_57.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/res/icon/cordova_ios_72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/res/icon/cordova_ios_72.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/res/screen/android_hdpi_landscape.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/res/screen/android_hdpi_landscape.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/res/screen/android_hdpi_portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/res/screen/android_hdpi_portrait.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/res/screen/android_ldpi_landscape.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/res/screen/android_ldpi_landscape.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/res/screen/android_ldpi_portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/res/screen/android_ldpi_portrait.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/res/screen/android_mdpi_landscape.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/res/screen/android_mdpi_landscape.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/res/screen/android_mdpi_portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/res/screen/android_mdpi_portrait.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/res/screen/android_xhdpi_landscape.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/res/screen/android_xhdpi_landscape.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/res/screen/android_xhdpi_portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/res/screen/android_xhdpi_portrait.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/res/screen/blackberry_transparent_300.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/res/screen/blackberry_transparent_300.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/res/screen/blackberry_transparent_400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/res/screen/blackberry_transparent_400.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/res/screen/ipad_landscape.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/res/screen/ipad_landscape.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/res/screen/ipad_portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/res/screen/ipad_portrait.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/res/screen/ipad_retina_landscape.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/res/screen/ipad_retina_landscape.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/res/screen/ipad_retina_portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/res/screen/ipad_retina_portrait.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/res/screen/iphone_landscape.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/res/screen/iphone_landscape.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/res/screen/iphone_portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/res/screen/iphone_portrait.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/res/screen/iphone_retina_landscape.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/res/screen/iphone_retina_landscape.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/res/screen/iphone_retina_portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/res/screen/iphone_retina_portrait.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/res/screen/windows_phone_portrait.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/res/screen/windows_phone_portrait.jpg
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/resources/fonts/glyphicons-halflings-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/resources/fonts/glyphicons-halflings-regular.eot
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/resources/fonts/glyphicons-halflings-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/resources/fonts/glyphicons-halflings-regular.ttf
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/resources/fonts/glyphicons-halflings-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/resources/fonts/glyphicons-halflings-regular.woff
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/resources/fonts/glyphicons-halflings-regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/resources/fonts/glyphicons-halflings-regular.woff2
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/resources/img/GitHub_Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/resources/img/GitHub_Logo.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/resources/img/banner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/resources/img/banner.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/resources/img/bg-dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/resources/img/bg-dark.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/resources/img/bg-red.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/resources/img/bg-red.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/resources/img/bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/resources/img/bg.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/resources/img/btn-grey-hvr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/resources/img/btn-grey-hvr.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/resources/img/btn-grey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/resources/img/btn-grey.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/resources/img/btn-pink-hvr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/resources/img/btn-pink-hvr.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/resources/img/btn-pink.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/resources/img/btn-pink.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/resources/img/glyphicons-halflings-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/resources/img/glyphicons-halflings-white.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/resources/img/glyphicons-halflings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/resources/img/glyphicons-halflings.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/resources/img/glyphicons_019_cogwheel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/resources/img/glyphicons_019_cogwheel.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/resources/img/glyphicons_163_iphone.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/resources/img/glyphicons_163_iphone.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/resources/img/glyphicons_232_cloud.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/resources/img/glyphicons_232_cloud.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/resources/img/glyphicons_351_book_open.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/resources/img/glyphicons_351_book_open.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/resources/img/jdf_logo_450px.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/resources/img/jdf_logo_450px.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/resources/img/jdf_mark_100px.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/resources/img/jdf_mark_100px.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/resources/img/jdf_mark_50px.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/resources/img/jdf_mark_50px.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/resources/img/jdf_mark_75px.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/resources/img/jdf_mark_75px.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/resources/img/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/resources/img/logo.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/resources/img/nav-bg-dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/resources/img/nav-bg-dark.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/resources/img/nav-bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/resources/img/nav-bg.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/resources/img/rhjb_eap_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/resources/img/rhjb_eap_logo.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/resources/img/splash-ticketmonster.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v1/public-html/resources/img/splash-ticketmonster.png
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/resources/js/app/aggregator/desktop.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | /**
4 | * A module for the router of the desktop application
5 | */
6 | define("router", [
7 | 'angular',
8 | 'angularRoute',
9 | 'angularResource',
10 | 'app/home/view',
11 | 'app/events/eventsView',
12 | 'app/venues/venuesView',
13 | 'app/eventDetail/eventDetailView',
14 | 'app/venueDetail/venueDetailView',
15 | 'app/booking/view',
16 | 'app/monitor/monitor'
17 | ],function (angular) {
18 |
19 | return angular.module('ticketMonster', ['ngRoute',
20 | 'ngResource',
21 | 'ticketMonster.api',
22 | 'ticketMonster.homeView',
23 | 'ticketMonster.eventsView',
24 | 'ticketMonster.venuesView',
25 | 'ticketMonster.eventDetailView',
26 | 'ticketMonster.venueDetailView',
27 | 'ticketMonster.bookingView',
28 | 'ticketMonster.monitorView'])
29 | .config(['$routeProvider', function($routeProvider) {
30 | $routeProvider
31 | .otherwise({redirectTo: '/'});
32 | }]);
33 | });
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/resources/js/app/aggregator/mobile.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | /**
4 | * A module for the router of the desktop application
5 | */
6 | define("router", [
7 | 'angular',
8 | 'angularRoute',
9 | 'angularResource',
10 | 'angularTouch',
11 | 'app/home/view',
12 | 'app/events/eventsView',
13 | 'app/venues/venuesView',
14 | 'app/eventDetail/eventDetailView',
15 | 'app/venueDetail/venueDetailView',
16 | 'app/booking/view',
17 | 'app/monitor/monitor'
18 | ],function (angular) {
19 |
20 | return angular.module('ticketMonster', ['ngRoute',
21 | 'ngResource',
22 | 'ngTouch',
23 | 'ticketMonster.api',
24 | 'ticketMonster.homeView',
25 | 'ticketMonster.eventsView',
26 | 'ticketMonster.venuesView',
27 | 'ticketMonster.eventDetailView',
28 | 'ticketMonster.venueDetailView',
29 | 'ticketMonster.bookingView',
30 | 'ticketMonster.monitorView'])
31 | .config(['$routeProvider', function($routeProvider) {
32 | $routeProvider
33 | .otherwise({redirectTo: '/'});
34 | }]);
35 | });
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/resources/js/app/components/components.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 | define([
3 | 'angular',
4 | 'bootstrap'
5 | ], function (angular) {
6 | angular.module('ticketMonster.ui.components',[])
7 | .directive('menuPopover', function () {
8 | return {
9 | restrict: 'A',
10 | template: '',
11 | link: function (scope, el, attrs) {
12 | if (!Modernizr.touch) {
13 | $(el).popover({
14 | trigger: 'hover',
15 | container: '#content',
16 | content: attrs.content,
17 | title: attrs.originalTitle
18 | }).data('bs.popover')
19 | .tip()
20 | .addClass('visible-lg')
21 | .addClass('visible-md');
22 | }
23 | }
24 | };
25 | });
26 | });
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/resources/js/app/home/view.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 | define([
3 | 'angular',
4 | 'angularRoute'
5 | ], function(angular) {
6 | angular.module('ticketMonster.homeView', ['ngRoute'])
7 | .config(['$routeProvider', function($routeProvider) {
8 | $routeProvider.when('/', {
9 | templateUrl: 'resources/js/app/home/home.html',
10 | controller: 'HomeController'
11 | });
12 | }])
13 | .controller('HomeController', [function() {
14 |
15 | }]);
16 | });
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/resources/js/configurations/hybrid.js:
--------------------------------------------------------------------------------
1 | // override configuration for RESTful services
2 | var TicketMonster = {
3 | config:{
4 | baseRESTUrl:"http://ticketmonster-jdf.rhcloud.com/"
5 | }
6 | };
7 |
8 | require(['../../../cordova'], function() {
9 |
10 | var bootstrap = {
11 | initialize: function() {
12 | document.addEventListener('deviceready', this.onDeviceReady, false);
13 | },
14 | onDeviceReady: function() {
15 | // Detect if iOS 7 or higher and disable overlaying the status bar
16 | if(window.device && window.device.platform.toLowerCase() == "ios" &&
17 | parseFloat(window.device.version) >= 7.0) {
18 | StatusBar.overlaysWebView(false);
19 | StatusBar.styleDefault();
20 | StatusBar.backgroundColorByHexString("#ccc");
21 | }
22 | // Load the mobile module
23 | require (["mobile"]);
24 | }
25 | };
26 |
27 | bootstrap.initialize();
28 | });
--------------------------------------------------------------------------------
/tm-ui-v1/public-html/resources/js/configurations/loader.js:
--------------------------------------------------------------------------------
1 | //detect the appropriate module to load
2 | define(function () {
3 |
4 | /*
5 | A simple check on the client. For touch devices or small-resolution screens)
6 | show the mobile client. By enabling the mobile client on a small-resolution screen
7 | we allow for testing outside a mobile device (like for example the Mobile Browser
8 | simulator in JBoss Tools and JBoss Developer Studio).
9 | */
10 |
11 | var environment;
12 |
13 | if (document.URL.indexOf("mobileapp.html") > -1) {
14 | environment = "hybrid";
15 | }
16 | else if (Modernizr.touch || Modernizr.mq("only all and (max-width: 768px)")) {
17 | environment = "mobile";
18 | } else {
19 | environment = "desktop";
20 | }
21 |
22 | require([environment]);
23 | });
--------------------------------------------------------------------------------
/tm-ui-v1/push-docker.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | docker push ceposta/tm-ui:monolith
--------------------------------------------------------------------------------
/tm-ui-v2/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM httpd:2.4
2 | COPY ./public-html /usr/local/apache2/htdocs/
3 | COPY httpd.conf /usr/local/apache2/conf/httpd.conf
--------------------------------------------------------------------------------
/tm-ui-v2/README.md:
--------------------------------------------------------------------------------
1 | ## Ticket Monster UI
2 |
3 | This proxy helps us keep friendly URLs even when there are composite UIs or composite microservice REST apis
4 | It also helps us avoid tripping the browser Same Origin policy. We use a simple HTTP server (apache) to serve the static content and then use the reverse proxy plugins to proxy REST calls to the appropriate microservice:
5 |
6 | ```
7 | # proxy for the admin microserivce
8 | ProxyPass "/rest" "http://backend:8080/rest"
9 | ProxyPassReverse "/rest" "http://backend:8080/rest"
10 | ```
11 |
12 |
13 | ## Running in docker
14 |
15 | The docker image for this project is `ceposta/tm-ui:backend`
16 |
17 | ## Developers:
18 |
19 | Build the docker container:
20 |
21 | > docker build -t ceposta/tm-ui:backend .
22 |
23 | Run in kubernetes
24 |
25 | > kubectl run tm-ui --image=ceposta/tm-ui:backend --port=80
26 |
27 | Or using the resource files in the [deployment](../deployment/kubernetes/core/frontend/) folder.
28 |
29 |
--------------------------------------------------------------------------------
/tm-ui-v2/build-docker.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | docker build -t ceposta/tm-ui:backend .
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/admin/fonts/glyphicons-halflings-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/admin/fonts/glyphicons-halflings-regular.eot
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/admin/fonts/glyphicons-halflings-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/admin/fonts/glyphicons-halflings-regular.ttf
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/admin/fonts/glyphicons-halflings-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/admin/fonts/glyphicons-halflings-regular.woff
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/admin/fonts/glyphicons-halflings-regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/admin/fonts/glyphicons-halflings-regular.woff2
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/admin/img/forge-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/admin/img/forge-logo.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/admin/index.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/admin/scripts/controllers/flashController.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ticketmonster').controller('FlashController', ['$scope','flash', function ($scope, flash) {
4 | $scope.flash = flash;
5 | $scope.showAlert = false;
6 |
7 | $scope.$watch('flash.getMessage()', function(newVal) {
8 | var message = newVal;
9 | if(message && message.text) {
10 | $scope.showAlert = message.text.length > 0;
11 | } else {
12 | $scope.showAlert = false;
13 | }
14 | });
15 |
16 | $scope.hideAlert = function() {
17 | $scope.showAlert = false;
18 | }
19 | }]);
20 |
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/admin/scripts/controllers/newEventCategoryController.js:
--------------------------------------------------------------------------------
1 |
2 | angular.module('ticketmonster').controller('NewEventCategoryController', function ($scope, $location, locationParser, flash, EventCategoryResource ) {
3 | $scope.disabled = false;
4 | $scope.$location = $location;
5 | $scope.eventCategory = $scope.eventCategory || {};
6 |
7 |
8 | $scope.save = function() {
9 | var successCallback = function(data,responseHeaders){
10 | var id = locationParser(responseHeaders);
11 | flash.setMessage({'type':'success','text':'The eventCategory was created successfully.'});
12 | $location.path('/EventCategories');
13 | };
14 | var errorCallback = function(response) {
15 | if(response && response.data && response.data.message) {
16 | flash.setMessage({'type': 'error', 'text': response.data.message}, true);
17 | } else {
18 | flash.setMessage({'type': 'error', 'text': 'Something broke. Retry, or cancel and start afresh.'}, true);
19 | }
20 | };
21 | EventCategoryResource.save($scope.eventCategory, successCallback, errorCallback);
22 | };
23 |
24 | $scope.cancel = function() {
25 | $location.path("/EventCategories");
26 | };
27 | });
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/admin/scripts/filters/startFromFilter.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ticketmonster').filter('startFrom', function() {
4 | return function(input, start) {
5 | start = +start; //parse to int
6 | return input.slice(start);
7 | };
8 | });
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/admin/scripts/offcanvas.js:
--------------------------------------------------------------------------------
1 | $(document).ready(function() {
2 | $('[data-toggle=offcanvas]').click(function() {
3 | $('.row-offcanvas').toggleClass('active');
4 | });
5 | });
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/admin/scripts/services/BookingFactory.js:
--------------------------------------------------------------------------------
1 | angular.module('ticketmonster').factory('BookingResource', function($resource){
2 | var resource = $resource('../rest/forge/bookings/:BookingId',{BookingId:'@id'},{'queryAll':{method:'GET',isArray:true},'query':{method:'GET',isArray:false},'update':{method:'PUT'}});
3 | return resource;
4 | });
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/admin/scripts/services/EventCategoryFactory.js:
--------------------------------------------------------------------------------
1 | angular.module('ticketmonster').factory('EventCategoryResource', function($resource){
2 | var resource = $resource('../rest/eventcategories/:EventCategoryId',{EventCategoryId:'@id'},{'queryAll':{method:'GET',isArray:true},'query':{method:'GET',isArray:false},'update':{method:'PUT'}});
3 | return resource;
4 | });
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/admin/scripts/services/EventFactory.js:
--------------------------------------------------------------------------------
1 | angular.module('ticketmonster').factory('EventResource', function($resource){
2 | var resource = $resource('../rest/forge/events/:EventId',{EventId:'@id'},{'queryAll':{method:'GET',isArray:true},'query':{method:'GET',isArray:false},'update':{method:'PUT'}});
3 | return resource;
4 | });
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/admin/scripts/services/MediaItemFactory.js:
--------------------------------------------------------------------------------
1 | angular.module('ticketmonster').factory('MediaItemResource', function($resource){
2 | var resource = $resource('../rest/mediaitems/:MediaItemId',{MediaItemId:'@id'},{'queryAll':{method:'GET',isArray:true},'query':{method:'GET',isArray:false},'update':{method:'PUT'}});
3 | return resource;
4 | });
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/admin/scripts/services/PerformanceFactory.js:
--------------------------------------------------------------------------------
1 | angular.module('ticketmonster').factory('PerformanceResource', function($resource){
2 | var resource = $resource('../rest/performances/:PerformanceId',{PerformanceId:'@id'},{'queryAll':{method:'GET',isArray:true},'query':{method:'GET',isArray:false},'update':{method:'PUT'}});
3 | return resource;
4 | });
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/admin/scripts/services/SectionAllocationFactory.js:
--------------------------------------------------------------------------------
1 | angular.module('ticketmonster').factory('SectionAllocationResource', function($resource){
2 | var resource = $resource('../rest/sectionallocations/:SectionAllocationId',{SectionAllocationId:'@id'},{'queryAll':{method:'GET',isArray:true},'query':{method:'GET',isArray:false},'update':{method:'PUT'}});
3 | return resource;
4 | });
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/admin/scripts/services/SectionFactory.js:
--------------------------------------------------------------------------------
1 | angular.module('ticketmonster').factory('SectionResource', function($resource){
2 | var resource = $resource('../rest/sections/:SectionId',{SectionId:'@id'},{'queryAll':{method:'GET',isArray:true},'query':{method:'GET',isArray:false},'update':{method:'PUT'}});
3 | return resource;
4 | });
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/admin/scripts/services/ShowFactory.js:
--------------------------------------------------------------------------------
1 | angular.module('ticketmonster').factory('ShowResource', function($resource){
2 | var resource = $resource('../rest/forge/shows/:ShowId',{ShowId:'@id'},{'queryAll':{method:'GET',isArray:true},'query':{method:'GET',isArray:false},'update':{method:'PUT'}});
3 | return resource;
4 | });
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/admin/scripts/services/TicketCategoryFactory.js:
--------------------------------------------------------------------------------
1 | angular.module('ticketmonster').factory('TicketCategoryResource', function($resource){
2 | var resource = $resource('../rest/ticketcategories/:TicketCategoryId',{TicketCategoryId:'@id'},{'queryAll':{method:'GET',isArray:true},'query':{method:'GET',isArray:false},'update':{method:'PUT'}});
3 | return resource;
4 | });
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/admin/scripts/services/TicketFactory.js:
--------------------------------------------------------------------------------
1 | angular.module('ticketmonster').factory('TicketResource', function($resource){
2 | var resource = $resource('../rest/tickets/:TicketId',{TicketId:'@id'},{'queryAll':{method:'GET',isArray:true},'query':{method:'GET',isArray:false},'update':{method:'PUT'}});
3 | return resource;
4 | });
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/admin/scripts/services/TicketPriceFactory.js:
--------------------------------------------------------------------------------
1 | angular.module('ticketmonster').factory('TicketPriceResource', function($resource){
2 | var resource = $resource('../rest/ticketprices/:TicketPriceId',{TicketPriceId:'@id'},{'queryAll':{method:'GET',isArray:true},'query':{method:'GET',isArray:false},'update':{method:'PUT'}});
3 | return resource;
4 | });
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/admin/scripts/services/VenueFactory.js:
--------------------------------------------------------------------------------
1 | angular.module('ticketmonster').factory('VenueResource', function($resource){
2 | var resource = $resource('../rest/forge/venues/:VenueId',{VenueId:'@id'},{'queryAll':{method:'GET',isArray:true},'query':{method:'GET',isArray:false},'update':{method:'PUT'}});
3 | return resource;
4 | });
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/admin/scripts/services/flash.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('ticketmonster').factory('flash', ['$rootScope', function ($rootScope) {
4 | var messages = [];
5 | var currentMessage = {};
6 |
7 | $rootScope.$on('$routeChangeSuccess', function() {
8 | currentMessage = messages.shift() || {};
9 | });
10 |
11 | return {
12 | getMessage: function () {
13 | return currentMessage;
14 | },
15 | setMessage: function(message, pop) {
16 | switch(message.type) {
17 | case "error" : message.cssClass = "danger"; break;
18 | case "success" : message.cssClass = "success"; break;
19 | case "info" : message.cssClass = "info"; break;
20 | case "warning" : message.cssClass = "warning"; break;
21 | }
22 | messages.push(message);
23 | if(pop) {
24 | currentMessage = messages.shift() || {};
25 | }
26 | }
27 | };
28 | }]);
29 |
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/admin/scripts/services/locationParser.js:
--------------------------------------------------------------------------------
1 | angular.module('ticketmonster').value('locationParser', function(responseHeaders){
2 | // Get the Location header and parse it.
3 | var locationHeader = responseHeaders('Location');
4 | var fragments = locationHeader.split('/');
5 | var id = fragments[fragments.length -1];
6 | return id;
7 | });
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/admin/views/landing.html:
--------------------------------------------------------------------------------
1 |
2 | Your application is running.
3 |
4 |
5 | Documentation
7 | | Get Excited!
9 | Forge Project | User
11 | Forums | Report an issue
13 |
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/favicon.ico
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Ticket Monster
5 |
6 |
7 |
8 |
9 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/mobileapp.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Ticket Monster
5 |
6 |
7 |
8 |
9 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/res/icon/cordova_128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/res/icon/cordova_128.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/res/icon/cordova_16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/res/icon/cordova_16.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/res/icon/cordova_24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/res/icon/cordova_24.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/res/icon/cordova_256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/res/icon/cordova_256.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/res/icon/cordova_32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/res/icon/cordova_32.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/res/icon/cordova_48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/res/icon/cordova_48.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/res/icon/cordova_512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/res/icon/cordova_512.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/res/icon/cordova_64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/res/icon/cordova_64.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/res/icon/cordova_android_36.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/res/icon/cordova_android_36.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/res/icon/cordova_android_48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/res/icon/cordova_android_48.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/res/icon/cordova_android_72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/res/icon/cordova_android_72.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/res/icon/cordova_android_96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/res/icon/cordova_android_96.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/res/icon/cordova_bb_80.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/res/icon/cordova_bb_80.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/res/icon/cordova_ios_114.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/res/icon/cordova_ios_114.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/res/icon/cordova_ios_144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/res/icon/cordova_ios_144.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/res/icon/cordova_ios_57.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/res/icon/cordova_ios_57.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/res/icon/cordova_ios_72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/res/icon/cordova_ios_72.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/res/screen/android_hdpi_landscape.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/res/screen/android_hdpi_landscape.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/res/screen/android_hdpi_portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/res/screen/android_hdpi_portrait.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/res/screen/android_ldpi_landscape.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/res/screen/android_ldpi_landscape.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/res/screen/android_ldpi_portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/res/screen/android_ldpi_portrait.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/res/screen/android_mdpi_landscape.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/res/screen/android_mdpi_landscape.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/res/screen/android_mdpi_portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/res/screen/android_mdpi_portrait.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/res/screen/android_xhdpi_landscape.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/res/screen/android_xhdpi_landscape.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/res/screen/android_xhdpi_portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/res/screen/android_xhdpi_portrait.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/res/screen/blackberry_transparent_300.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/res/screen/blackberry_transparent_300.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/res/screen/blackberry_transparent_400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/res/screen/blackberry_transparent_400.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/res/screen/ipad_landscape.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/res/screen/ipad_landscape.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/res/screen/ipad_portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/res/screen/ipad_portrait.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/res/screen/ipad_retina_landscape.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/res/screen/ipad_retina_landscape.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/res/screen/ipad_retina_portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/res/screen/ipad_retina_portrait.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/res/screen/iphone_landscape.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/res/screen/iphone_landscape.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/res/screen/iphone_portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/res/screen/iphone_portrait.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/res/screen/iphone_retina_landscape.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/res/screen/iphone_retina_landscape.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/res/screen/iphone_retina_portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/res/screen/iphone_retina_portrait.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/res/screen/windows_phone_portrait.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/res/screen/windows_phone_portrait.jpg
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/resources/fonts/glyphicons-halflings-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/resources/fonts/glyphicons-halflings-regular.eot
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/resources/fonts/glyphicons-halflings-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/resources/fonts/glyphicons-halflings-regular.ttf
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/resources/fonts/glyphicons-halflings-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/resources/fonts/glyphicons-halflings-regular.woff
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/resources/fonts/glyphicons-halflings-regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/resources/fonts/glyphicons-halflings-regular.woff2
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/resources/img/GitHub_Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/resources/img/GitHub_Logo.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/resources/img/banner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/resources/img/banner.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/resources/img/bg-dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/resources/img/bg-dark.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/resources/img/bg-red.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/resources/img/bg-red.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/resources/img/bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/resources/img/bg.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/resources/img/btn-grey-hvr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/resources/img/btn-grey-hvr.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/resources/img/btn-grey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/resources/img/btn-grey.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/resources/img/btn-pink-hvr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/resources/img/btn-pink-hvr.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/resources/img/btn-pink.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/resources/img/btn-pink.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/resources/img/glyphicons-halflings-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/resources/img/glyphicons-halflings-white.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/resources/img/glyphicons-halflings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/resources/img/glyphicons-halflings.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/resources/img/glyphicons_019_cogwheel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/resources/img/glyphicons_019_cogwheel.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/resources/img/glyphicons_163_iphone.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/resources/img/glyphicons_163_iphone.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/resources/img/glyphicons_232_cloud.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/resources/img/glyphicons_232_cloud.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/resources/img/glyphicons_351_book_open.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/resources/img/glyphicons_351_book_open.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/resources/img/jdf_logo_450px.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/resources/img/jdf_logo_450px.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/resources/img/jdf_mark_100px.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/resources/img/jdf_mark_100px.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/resources/img/jdf_mark_50px.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/resources/img/jdf_mark_50px.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/resources/img/jdf_mark_75px.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/resources/img/jdf_mark_75px.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/resources/img/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/resources/img/logo.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/resources/img/nav-bg-dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/resources/img/nav-bg-dark.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/resources/img/nav-bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/resources/img/nav-bg.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/resources/img/rhjb_eap_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/resources/img/rhjb_eap_logo.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/resources/img/splash-ticketmonster.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ticket-monster-msa/monolith/343e998d193e09d7a9366a10d4332ea80f6c66a5/tm-ui-v2/public-html/resources/img/splash-ticketmonster.png
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/resources/js/app/aggregator/desktop.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | /**
4 | * A module for the router of the desktop application
5 | */
6 | define("router", [
7 | 'angular',
8 | 'angularRoute',
9 | 'angularResource',
10 | 'app/home/view',
11 | 'app/events/eventsView',
12 | 'app/venues/venuesView',
13 | 'app/eventDetail/eventDetailView',
14 | 'app/venueDetail/venueDetailView',
15 | 'app/booking/view',
16 | 'app/monitor/monitor'
17 | ],function (angular) {
18 |
19 | return angular.module('ticketMonster', ['ngRoute',
20 | 'ngResource',
21 | 'ticketMonster.api',
22 | 'ticketMonster.homeView',
23 | 'ticketMonster.eventsView',
24 | 'ticketMonster.venuesView',
25 | 'ticketMonster.eventDetailView',
26 | 'ticketMonster.venueDetailView',
27 | 'ticketMonster.bookingView',
28 | 'ticketMonster.monitorView'])
29 | .config(['$routeProvider', function($routeProvider) {
30 | $routeProvider
31 | .otherwise({redirectTo: '/'});
32 | }]);
33 | });
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/resources/js/app/aggregator/mobile.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | /**
4 | * A module for the router of the desktop application
5 | */
6 | define("router", [
7 | 'angular',
8 | 'angularRoute',
9 | 'angularResource',
10 | 'angularTouch',
11 | 'app/home/view',
12 | 'app/events/eventsView',
13 | 'app/venues/venuesView',
14 | 'app/eventDetail/eventDetailView',
15 | 'app/venueDetail/venueDetailView',
16 | 'app/booking/view',
17 | 'app/monitor/monitor'
18 | ],function (angular) {
19 |
20 | return angular.module('ticketMonster', ['ngRoute',
21 | 'ngResource',
22 | 'ngTouch',
23 | 'ticketMonster.api',
24 | 'ticketMonster.homeView',
25 | 'ticketMonster.eventsView',
26 | 'ticketMonster.venuesView',
27 | 'ticketMonster.eventDetailView',
28 | 'ticketMonster.venueDetailView',
29 | 'ticketMonster.bookingView',
30 | 'ticketMonster.monitorView'])
31 | .config(['$routeProvider', function($routeProvider) {
32 | $routeProvider
33 | .otherwise({redirectTo: '/'});
34 | }]);
35 | });
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/resources/js/app/components/components.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 | define([
3 | 'angular',
4 | 'bootstrap'
5 | ], function (angular) {
6 | angular.module('ticketMonster.ui.components',[])
7 | .directive('menuPopover', function () {
8 | return {
9 | restrict: 'A',
10 | template: '',
11 | link: function (scope, el, attrs) {
12 | if (!Modernizr.touch) {
13 | $(el).popover({
14 | trigger: 'hover',
15 | container: '#content',
16 | content: attrs.content,
17 | title: attrs.originalTitle
18 | }).data('bs.popover')
19 | .tip()
20 | .addClass('visible-lg')
21 | .addClass('visible-md');
22 | }
23 | }
24 | };
25 | });
26 | });
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/resources/js/app/home/view.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 | define([
3 | 'angular',
4 | 'angularRoute'
5 | ], function(angular) {
6 | angular.module('ticketMonster.homeView', ['ngRoute'])
7 | .config(['$routeProvider', function($routeProvider) {
8 | $routeProvider.when('/', {
9 | templateUrl: 'resources/js/app/home/home.html',
10 | controller: 'HomeController'
11 | });
12 | }])
13 | .controller('HomeController', [function() {
14 |
15 | }]);
16 | });
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/resources/js/configurations/hybrid.js:
--------------------------------------------------------------------------------
1 | // override configuration for RESTful services
2 | var TicketMonster = {
3 | config:{
4 | baseRESTUrl:"http://ticketmonster-jdf.rhcloud.com/"
5 | }
6 | };
7 |
8 | require(['../../../cordova'], function() {
9 |
10 | var bootstrap = {
11 | initialize: function() {
12 | document.addEventListener('deviceready', this.onDeviceReady, false);
13 | },
14 | onDeviceReady: function() {
15 | // Detect if iOS 7 or higher and disable overlaying the status bar
16 | if(window.device && window.device.platform.toLowerCase() == "ios" &&
17 | parseFloat(window.device.version) >= 7.0) {
18 | StatusBar.overlaysWebView(false);
19 | StatusBar.styleDefault();
20 | StatusBar.backgroundColorByHexString("#ccc");
21 | }
22 | // Load the mobile module
23 | require (["mobile"]);
24 | }
25 | };
26 |
27 | bootstrap.initialize();
28 | });
--------------------------------------------------------------------------------
/tm-ui-v2/public-html/resources/js/configurations/loader.js:
--------------------------------------------------------------------------------
1 | //detect the appropriate module to load
2 | define(function () {
3 |
4 | /*
5 | A simple check on the client. For touch devices or small-resolution screens)
6 | show the mobile client. By enabling the mobile client on a small-resolution screen
7 | we allow for testing outside a mobile device (like for example the Mobile Browser
8 | simulator in JBoss Tools and JBoss Developer Studio).
9 | */
10 |
11 | var environment;
12 |
13 | if (document.URL.indexOf("mobileapp.html") > -1) {
14 | environment = "hybrid";
15 | }
16 | else if (Modernizr.touch || Modernizr.mq("only all and (max-width: 768px)")) {
17 | environment = "mobile";
18 | } else {
19 | environment = "desktop";
20 | }
21 |
22 | require([environment]);
23 | });
--------------------------------------------------------------------------------
/tm-ui-v2/push-docker.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | docker push ceposta/tm-ui:backend
--------------------------------------------------------------------------------