All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.dubboclub.restful.util.ServicesUtil Maven / Gradle / Ivy

package net.dubboclub.restful.util;

import net.dubboclub.restful.export.mapping.MethodHandler;
import net.dubboclub.restful.export.mapping.ServiceHandler;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils;

import java.io.IOException;
import java.io.OutputStream;
import java.nio.charset.Charset;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * @date: 2016/3/4.
 * @author:bieber.
 * @project:dubbo-side.
 * @package:net.dubboclub.restful.util.
 * @version:1.0.0
 * @fix:
 * @description: 描述功能
 */
public class ServicesUtil {

    private static final byte[] TD="td".getBytes();

    private static final byte[] SLASH="/".getBytes();

    private static final byte[] TR="tr".getBytes();

    private static final byte[] GREAT_THAN=">".getBytes();

    private static final byte[] LESS_THAN="<".getBytes();


    private static final byte[] QUOT="\"".getBytes();

    private static final byte[] ROWSPAN="rowspan".getBytes();

    private static final byte[] SPACE=" ".getBytes();

    private static final byte[] EQUALITY="=".getBytes();

    private static final String STYPE="";

    private static final String HEADER="  \n" +
            "        Restful service list\n" +
            "        \n" +
            "    ";


    public static void writeServicesHtml(OutputStream outputStream,ConcurrentHashMap serviceHandlerConcurrentHashMap) throws IOException {
        writeHtmlStart(outputStream);
        writeHeader(outputStream);
        writeStyle(outputStream);
        writeBodyStart(outputStream);
        writeHead(outputStream);
        writeTableStart(outputStream);
        writeServiceHead(outputStream);
        for(Map.Entry entry:serviceHandlerConcurrentHashMap.entrySet()){
            writeService(outputStream,entry.getKey(),entry.getValue());
        }
        writeTableEnd(outputStream);
        writeBodyEnd(outputStream);
        writeHtmlEnd(outputStream);
    }

    private static void writeHtmlStart(OutputStream outputStream) throws IOException {
        outputStream.write(encodeBytes(""));
    }

    private static void writeHeader(OutputStream outputStream) throws IOException {
        outputStream.write(encodeBytes(HEADER));
    }

    private static void writeHtmlEnd(OutputStream outputStream) throws IOException {
        outputStream.write(encodeBytes(""));
    }

    private static void writeTableStart(OutputStream outputStream) throws IOException {
        outputStream.write(encodeBytes(""));
    }

    private static void writeStyle(OutputStream outputStream) throws IOException {
        outputStream.write(encodeBytes(STYPE));
    }

    private static void writeBodyStart(OutputStream outputStream) throws IOException {
        outputStream.write(encodeBytes(""));
    }

    private static void writeBodyEnd(OutputStream outputStream) throws IOException {
        outputStream.write(encodeBytes(""));
    }

    private static void writeTableEnd(OutputStream outputStream) throws IOException {
        outputStream.write(encodeBytes("
")); } private static void writeHead(OutputStream outputStream) throws IOException { outputStream.write(encodeBytes("

Dubbo Restful Services Info

")); } private static void writeServiceHead(OutputStream outputStream) throws IOException { outputStream.write(encodeBytes("Service TypeMethodsService PathGroupVersion")); } private static void writeMethodHead(OutputStream outputStream) throws IOException { outputStream.write(encodeBytes("MethodNameArgs")); } private static void writeService(OutputStream outputStream,String path,ServiceHandler serviceHandler) throws IOException { startTR(outputStream); int size= serviceHandler.getMethodHandlerList().size()+1; writeTD(outputStream,serviceHandler.getServiceType().getName(),size,"serviceType"); writeMethodHead(outputStream); writeTD(outputStream,path,size,"path"); writeTD(outputStream, StringUtils.isEmpty(serviceHandler.getGroup())?"*":serviceHandler.getGroup(),size,"group"); writeTD(outputStream, StringUtils.isEmpty(serviceHandler.getVersion())?"*":serviceHandler.getVersion(),size,"version"); endTR(outputStream); for(int i=0;i").append(methodName).append(""); return stringBuffer.toString(); } private static void startTR(OutputStream outputStream) throws IOException { outputStream.write(LESS_THAN); outputStream.write(TR); outputStream.write(GREAT_THAN); } private static void endTR(OutputStream outputStream) throws IOException { outputStream.write(LESS_THAN); outputStream.write(SLASH); outputStream.write(TR); outputStream.write(GREAT_THAN); } private static void writeTD(OutputStream outputStream,String message,int rowspan,String customTag) throws IOException { outputStream.write(LESS_THAN); outputStream.write(TD); if(rowspan>0){ outputStream.write(SPACE); outputStream.write(ROWSPAN); outputStream.write(EQUALITY); outputStream.write(QUOT); outputStream.write(encodeBytes(rowspan+"")); outputStream.write(QUOT); } outputStream.write(GREAT_THAN); if(!StringUtils.isEmpty(customTag)){ outputStream.write(LESS_THAN); outputStream.write(encodeBytes(customTag)); outputStream.write(GREAT_THAN); } outputStream.write(encodeBytes(message)); if(!StringUtils.isEmpty(customTag)){ outputStream.write(LESS_THAN); outputStream.write(SLASH); outputStream.write(encodeBytes(customTag)); outputStream.write(GREAT_THAN); } outputStream.write(LESS_THAN); outputStream.write(SLASH); outputStream.write(TD); outputStream.write(GREAT_THAN); } private static byte[] encodeBytes(String message){ return message.getBytes(); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy