@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		try {
			String identificador = null;
			try {
				identificador = obtemIdentificador(req);
			} catch (RecursoSemIdentificadorException e) {
				resp.sendError(400, e.getMessage());
			}
			if(identificador != null && estoque.recuperarCervejaPeloNome(identificador) != null){
				resp.sendError(409, "Ja existe uma cerveja com esse nome");
				return;
			}
			String tipoDeConteudo = req.getContentType();
			Cerveja cerveja = null;
			Unmarshaller unmarshaller = context.createUnmarshaller();
			if(tipoDeConteudo == null || tipoDeConteudo.contains("application/xml")){
				cerveja = (Cerveja) unmarshaller.unmarshal(req.getInputStream());
				cerveja.setNome(identificador);
				estoque.adicionarCerveja(cerveja);
				String requestURI = req.getRequestURI();
				resp.setHeader("Location", requestURI);
				resp.setStatus(201);
				escreveXML(req, resp);
			}else if(tipoDeConteudo.contains("application/json")){
				List<String> lines = IOUtils.readLines(req.getInputStream());
				StringBuilder builder = new StringBuilder();
				for (String line : lines) {
					builder.append(line);
				}
				MappedNamespaceConvention con = new MappedNamespaceConvention();
				JSONObject jsonObject = new JSONObject(builder.toString());
				XMLStreamReader xmlStreamReader = new MappedXMLStreamReader(jsonObject, con);
				cerveja = (Cerveja) unmarshaller.unmarshal(xmlStreamReader);
				cerveja.setNome(identificador);
				estoque.adicionarCerveja(cerveja);
				String requestURI = req.getRequestURI();
				resp.setHeader("Location", requestURI);
				resp.setStatus(201);
				escreveJSON(req, resp);
			}else{
				resp.sendError(415);
				return;
			}
		} catch (Exception e) {
			resp.sendError(500, e.getMessage());
		}
	}