Index: murachi/src/main/java/ve/gob/cenditel/murachi/MurachiRESTWS.java
===================================================================
--- murachi/src/main/java/ve/gob/cenditel/murachi/MurachiRESTWS.java	(revision c4dd8d19d76ca2cf45efe4212cb8892cdc456437)
+++ murachi/src/main/java/ve/gob/cenditel/murachi/MurachiRESTWS.java	(revision 713ce719af5358c363197bd77ab1f8999c40860c)
@@ -719,4 +719,5 @@
 	 * 
 	 */
+	/*
 	@GET
 	@Path("/{idFile}")
@@ -769,7 +770,74 @@
 		String result = jsonObject.toString();
 		logger.info("/{"+idFile+"}: "+ result);
-		return Response.status(200).entity(result).build();
-				
+		return Response.status(200).entity(result).build();	
 	}
+	*/	
+	@GET
+	@Path("/{idFile}")
+	@Produces("application/json")
+	public Response verifyAFile(@PathParam("idFile") String idFile) throws MurachiException {
+		
+		JSONObject jsonObject = new JSONObject();
+		String result = "";
+		String path = "";
+		
+		// verificar si existe como contenedor BDOC serializado
+		if (checkFileExists(SERVER_UPLOAD_LOCATION_FOLDER + idFile + "-serialized.bin")) {
+		    
+			path = SERVER_UPLOAD_LOCATION_FOLDER + idFile + "-serialized.bin";
+			
+			logger.debug("	verificar contenedor BDOC serializado: " + SERVER_UPLOAD_LOCATION_FOLDER + idFile + "-serialized.bin");
+		    jsonObject = verifySignaturesInBdoc(path, true);
+			result = jsonObject.toString();
+			logger.info("/{"+idFile+"}: "+ result);
+		    	
+		    return Response.status(200).entity(result).build();
+		} 
+		// verificar si existe el archivo
+		else if (checkFileExists(SERVER_UPLOAD_LOCATION_FOLDER + idFile)) {
+			// archivo si existe y es BDOC no serializado
+			path = SERVER_UPLOAD_LOCATION_FOLDER + idFile;
+					
+			String mime = getMimeType(path);
+			System.out.println("mimetype : " + mime);
+			
+			
+			if (mime.equals("application/zip")) {
+				jsonObject = verifySignaturesInBdoc(path, false);
+				result = jsonObject.toString();
+				logger.info("/{"+idFile+"}: "+ result);
+				
+				return Response.status(200).entity(result).build();
+			}
+			// archivo si existe y es un pdf
+			else if (mime.equals("application/pdf")) {
+				path = SERVER_UPLOAD_LOCATION_FOLDER + idFile;
+				
+				jsonObject = verifySignaturesInPdf(path);
+				result = jsonObject.toString();
+				logger.info("/{"+idFile+"}: "+ result);
+				
+				return Response.status(200).entity(result).build();				
+			}
+			// el archivo existe pero es una extension no reconocida
+			else 
+			{
+				jsonObject.put("fileExist", "true");
+				jsonObject.put("error", "extension not supported");
+				return Response.status(200).entity(jsonObject.toString()).build();
+			}			
+		}	
+		// definitivamente el archivo no existe en el sistema de archivos
+		else
+		{
+			jsonObject.put("fileExist", "false");
+			logger.error("fileExist: false");
+			
+			return Response.status(404).entity(jsonObject.toString()).build();
+			 
+		}
+				
+	}
+	
 	
 	/**
@@ -781,4 +849,5 @@
 	 * @throws MurachiException 
 	 */
+	/*
 	public JSONObject verifyALocalFile(String idFile) throws MurachiException {
 		
@@ -819,5 +888,5 @@
 				//jsonObject.put("resultado", "NO IMPLEMENTADO");
 				
-				jsonObject = verifySignaturesInBdoc(file);
+				jsonObject = verifySignaturesInBdoc(file, false);
 			}else{
 				System.out.println("extension no reconocida");
@@ -829,4 +898,70 @@
 		return jsonObject;
 	}
+	*/
+	public JSONObject verifyALocalFile(String idFile) throws MurachiException {
+		
+		JSONObject jsonObject = new JSONObject();
+		String result = "";
+		String path = "";
+		
+		// verificar si existe como contenedor BDOC serializado
+		if (checkFileExists(SERVER_UPLOAD_LOCATION_FOLDER + idFile + "-serialized.bin")) {
+		    
+			path = SERVER_UPLOAD_LOCATION_FOLDER + idFile + "-serialized.bin";
+			
+			logger.debug("	verificar contenedor BDOC serializado: " + SERVER_UPLOAD_LOCATION_FOLDER + idFile + "-serialized.bin");
+		    jsonObject = verifySignaturesInBdoc(path, true);
+			result = jsonObject.toString();
+			logger.info("/{"+idFile+"}: "+ result);
+		    	
+		    return jsonObject;
+		} 
+		// verificar si existe el archivo
+		else if (checkFileExists(SERVER_UPLOAD_LOCATION_FOLDER + idFile)) {
+			// archivo si existe y es BDOC no serializado
+			path = SERVER_UPLOAD_LOCATION_FOLDER + idFile;
+					
+			String mime = getMimeType(path);
+			System.out.println("mimetype : " + mime);
+			
+			
+			if (mime.equals("application/zip")) {
+				jsonObject = verifySignaturesInBdoc(path, false);
+				result = jsonObject.toString();
+				logger.info("/{"+idFile+"}: "+ result);
+				
+				return jsonObject;
+			}
+			// archivo si existe y es un pdf
+			else if (mime.equals("application/pdf")) {
+				path = SERVER_UPLOAD_LOCATION_FOLDER + idFile;
+				
+				jsonObject = verifySignaturesInPdf(path);
+				result = jsonObject.toString();
+				logger.info("/{"+idFile+"}: "+ result);
+				
+				return jsonObject;				
+			}
+			// el archivo existe pero es una extension no reconocida
+			else 
+			{
+				jsonObject.put("fileExist", "true");
+				jsonObject.put("error", "extension not supported");
+				return jsonObject;
+			}			
+		}	
+		// definitivamente el archivo no existe en el sistema de archivos
+		else
+		{
+			jsonObject.put("fileExist", "false");
+			logger.error("fileExist: false");
+			
+			return jsonObject;
+			 
+		}
+	}
+	
+	
+	
 	
 	
@@ -1756,7 +1891,8 @@
 	 * Retorna un JSON con informacion de las firmas del documento BDOC
 	 * @param bdocFile archivo BDOC a verificar
+	 * @param serialized verdadero si el contenedor a verificar esta serializado
 	 * @return JSON con informacion de las firmas del documento BDOC
 	 */
-	private JSONObject verifySignaturesInBdoc(String bdocFile) {
+	private JSONObject verifySignaturesInBdoc(String bdocFile, Boolean serialized) {
 	
 		logger.debug("verifySignaturesInBdoc("+bdocFile+")");
@@ -1771,6 +1907,4 @@
 		String idFile = path.getFileName().toString();
 		
-		
-		Security.addProvider(new BouncyCastleProvider());
 		Container container = null;
 		
@@ -1782,9 +1916,25 @@
 		try
 		{
-			container = Container.open(bdocFile, configuration);
-			logger.debug("Container.open("+bdocFile+", DIGIDOC4J_CONFIGURATION)");
+			Security.addProvider(new BouncyCastleProvider());
+			if (!serialized) 
+			{
+				container = Container.open(bdocFile, configuration);
+				logger.debug("Container.open("+bdocFile+", DIGIDOC4J_CONFIGURATION)");	
+			}
+			else
+			{
+				container = deserialize(bdocFile);
+				logger.debug("container deserialized: " + bdocFile);
+			}
+						
 		} catch(DigiDoc4JException e) 
 		{
 			jsonSignatures.put("error", "File is not a valid BDOC container");
+			return jsonSignatures;
+		} catch (ClassNotFoundException e) {
+			jsonSignatures.put("error", "error al deserializar el contendor");
+			return jsonSignatures;
+		} catch (IOException e) {
+			jsonSignatures.put("error", "error al deserializar el contendor");
 			return jsonSignatures;
 		}
@@ -1798,6 +1948,12 @@
 			jsonSignatures.put("fileExist", "true");
 			System.out.println("fileExist: true");
-			
-			jsonSignatures.put("fileId", idFile);
+						
+			if (serialized){
+				jsonSignatures.put("fileId", idFile.split("-serialized.bin")[0]);
+			}
+			else {
+				jsonSignatures.put("fileId", idFile);
+			}
+			
 			jsonSignatures.put("mimeType", "application/vnd.etsi.asic-e+zip");
 			
