@GET
	@Produces({ MediaType.TEXT_XML, MediaType.APPLICATION_XML,
			MediaType.APPLICATION_JSON })
	public Response getComposition(@PathParam("client_id") String client_id) {
		File compositionXmlFile = new File(baseFilePath + File.separator
				+ client_id + File.separator + "Composition" + File.separator
				+ "Composition.xml");
		Response res = null;

		// System.out.println("Does the file exist? " +
		// compositionXmlFile.exists());
		if (compositionXmlFile.exists()) {
			ComputedComposition cc = null;
			// Read the composition file and send it to the client
			synchronized (compositionXmlFile) {
				try {
					JAXBContext jaxbContext = JAXBContext
							.newInstance(ComputedComposition.class);
					Unmarshaller jaxbUnmarshaller = jaxbContext
							.createUnmarshaller();
					cc = (ComputedComposition) jaxbUnmarshaller
							.unmarshal(compositionXmlFile);
				} catch (JAXBException e) {
					e.printStackTrace();
					// throw new
					// RuntimeException("Problem with GET request: Behavior with name "
					// + name + " not found.");
				}
			}
			System.out.println("Did we have a composition? " + !(cc == null));

			CompositionResponse cr = new CompositionResponse(cc);
			res = Response.ok().entity(cr).build();
		} else {
			// Return the number in the queue
			String queueNumber = null;

			Object[] queue = Queue.instance.getModel().toArray();
			int queueSize = queue.length;

			for (int i = 0; i < queueSize; i++) {
				String currentRequest = (String) queue[i];
				System.out.println("Is " + currentRequest + " equal to "
						+ client_id + " ?");
				if (currentRequest.equals(client_id)) {
					queueNumber = "" + (i + 1);
					break;
				}
			}

			CompositionResponse cr = new CompositionResponse(queueNumber);
			res = Response.ok().entity(cr).build();
		}

		return res;
	}