Skip to content
Snippets Groups Projects
Select Git revision
  • 3bb96c8fd076dc84a9ae3fa9e405c86b1e38b4bc
  • master default protected
  • ia2
  • adql2.1-ia2
  • private_rows
5 results

DefaultTAPLog.java

Blame
  • VlkbServletFile.java 4.29 KiB
    //
    // return content of xml 
    // (used for VOSI capabilityVOSI and availability.xml)
    //
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.io.File;
    import java.io.OutputStream;
    import java.util.Enumeration;
    import java.util.*; // ArrayList<String>
    
    import javax.servlet.ServletConfig;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.ServletOutputStream; // for SOOA
    
    // from vlkb_mergefiles.java - dir & file handling
    import java.io.*;
    
    import java.nio.file.*;
    import static java.nio.file.StandardCopyOption.*;
    
    
    // serve VOSI resources from xml files (for now implemented as strings, not files FIXME)
    
    public class VlkbServletFile
        extends javax.servlet.http.HttpServlet
    {
        // for logs and debug
        String className = this.getClass().getSimpleName();
    
    // VOSI
    // String accessURL = null; // FIXME now read from MERGEURL later introduce own param
    // String funcName = "vlkb_cutout"; // FIXME read from config file
    
    	private static final String availStr = 
    		  "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
    		+ "<vosi:availability  "
    		+ " xmlns:vosi=\"http://www.ivoa.net/xml/VOSIAvailability/v1.0\">"
    		+ " <vosi:available>true</vosi:available>"
    		+ " <vosi:note> VLKB-SODA " + Version.asString + " is accepting queries </vosi:note>"
    		+ "</vosi:availability>";
    
    	private String capsStr = null;
    
    
    	protected void SetCapsStr(String URL, String funcName)
    	{
    		if(URL != null)
    		{
    		
                String accessURL = stripTrailingSlash(URL);
    
        capsStr =
    		  "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
    
    		+ "<vosi:capabilities "
    		+    "xmlns:vosi=\"http://www.ivoa.net/xml/VOSICapabilities/v1.0\" "
    		+    "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" "
    		+    "xmlns:vod=\"http://www.ivoa.net/xml/VODataService/v1.1\">"
    
    		+ " <capability standardID=\"ivo://ivoa.net/std/VOSI#capabilities\">"
    		+ "   <interface xsi:type=\"vod:ParamHTTP\" version=\"1.0\">"
    		+ "     <accessURL use=\"full\">"
    		+          accessURL + "/capabilities"
    		+ "     </accessURL>"
    		+ "   </interface>"
    		+ " </capability>"
    
    		+ " <capability standardID=\"ivo://ivoa.net/std/VOSI#availability\">"
    		+ "   <interface xsi:type=\"vod:ParamHTTP\" version=\"1.0\">"
    		+ "     <accessURL use=\"full\">"
    		+          accessURL + "/availability"
    		+ "     </accessURL>"
    		+ "   </interface>"
    		+ " </capability>"
    
    		+ " <capability standardID=\"ivo://ivoa.net/std/SODA#sync-1.0\">"
    		+ "   <interface xsi:type=\"vod:ParamHTTP\" role=\"std\" version=\"1.0\">"
    		+ "     <accessURL use=\"full\">"
    		+          accessURL + "/" + funcName
    		+ "     </accessURL>"
    		+ "   </interface>"
    		+ " </capability>"
    
    		+ " <capability standardID=\"ivo://ivoa.net/std/SODA#async-1.0\">"
    		+ "   <interface xsi:type=\"vod:ParamHTTP\" role=\"std\" version=\"1.0\">"
    		+ "     <accessURL use=\"full\">"
    		+          accessURL + "/" + funcName + "_uws/soda_cuts"
    		+ "     </accessURL>"
    		+ "   </interface>"
    		+ " </capability>"
    
    	+ "</vosi:capabilities>";
    		}
    	}
    
    
    	String stripTrailingSlash(String path)
    	{
           		if (path.endsWith("/"))
               		return path.substring(0,path.length()-1);
           		else
               		return path;
        	}
    
    
        protected void doGet(HttpServletRequest request,
                             HttpServletResponse response)
            throws ServletException, IOException {
    
                doPost(request, response);
            }
    
    
    
        protected void doPost(HttpServletRequest request,
                              HttpServletResponse response)
            throws ServletException, IOException
    	{
    		StringBuffer requestURL = request.getRequestURL();
    	
       	System.out.println(className + " vlkb req from: " + request.getRemoteAddr()
                                   + " doGet: " + requestURL.toString());
    
    		PrintWriter writer = response.getWriter();
    		response.setContentType("text/xml");
    	
    		if(-1 != requestURL.lastIndexOf("/capabilities"))
    		{
                String fullURL = request.getRequestURL().toString();
                String baseURL = fullURL.substring(0,requestURL.lastIndexOf("/"));
    
                SetCapsStr(baseURL, "soda");
    			writer.println(capsStr);	
    
    		}
    		else if(-1 != requestURL.lastIndexOf("/availability"))
    		{
    			writer.println(availStr);	
    		}
    		// error FIXME what to do if none of above given ? e.g. misconfigured web.xml
    		
    		writer.close();
    		return;
            }
    }