package com.antfortune.freeline.router; import com.antfortune.freeline.server.EmbedHttpServer; import java.io.InputStream; import java.util.HashMap; import java.util.Map; public class Router { private static Router sInstance; private Map<String, ISchemaAction> mSchemaMap = new HashMap<>(); private Router() { } public static Router getInstance() { synchronized (Router.class) { if (sInstance == null) { sInstance = new Router(); } return sInstance; } } public void registerSchema(ISchemaAction schemaAction) { if (schemaAction != null) { mSchemaMap.put(schemaAction.getDescription(), schemaAction); } } public boolean dispatch( String method, String path, HashMap<String, String> headers, Map<String, String> queries, InputStream input, EmbedHttpServer.ResponseOutputStream response) throws Exception { if (queries == null || queries.size() == 0) { return false; } String description = queries.get(ISchemaAction.DESCRIPTION); for (String name : mSchemaMap.keySet()) { if (name.equals(description)) { mSchemaMap.get(name).handle(method, path, headers, queries, input, response); return true; } } return false; } }