@@ -0,0 +1,2720 @@
+/*%0A * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.%0A *%0A * WSO2 Inc. licenses this file to you under the Apache License,%0A * Version 2.0 (the %22License%22); you may not use this file except%0A * in compliance with the License.%0A * You may obtain a copy of the License at%0A *%0A *   http://www.apache.org/licenses/LICENSE-2.0%0A *%0A * Unless required by applicable law or agreed to in writing,%0A * software distributed under the License is distributed on an%0A * %22AS IS%22 BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY%0A * KIND, either express or implied.  See the License for the%0A * specific language governing permissions and limitations%0A * under the License.%0A */%0A%0Apackage org.wso2.carbon.uis.api.deployment;%0A%0Aimport org.apache.commons.lang3.tuple.Pair;%0Aimport org.slf4j.Logger;%0Aimport org.slf4j.LoggerFactory;%0Aimport org.wso2.carbon.uis.api.http.HttpConnector;%0Aimport org.wso2.carbon.uis.api.http.HttpRequest;%0Aimport org.wso2.carbon.uis.api.http.HttpResponse;%0Aimport org.wso2.carbon.uis.internal.RequestDispatcher;%0Aimport org.wso2.carbon.uis.internal.deployment.AppFinder;%0Aimport org.wso2.carbon.uis.internal.deployment.AppRegistry;%0Aimport org.wso2.carbon.uis.internal.io.ArtifactAppFinder;%0A%0Aimport java.nio.file.Path;%0Aimport java.util.List;%0Aimport java.util.function.Function;%0A%0A/**%0A * Created by sajith on 8/22/17.%0A */%0Apublic class Server %7B%0A%0A    private static final Logger LOGGER = LoggerFactory.getLogger(Server.class);%0A%0A    private final AppFinder appFinder;%0A    private final AppRegistry appRegistry;%0A    private final HttpConnector httpConnector;%0A    private final Function%3CHttpRequest, HttpResponse%3E httpListener;%0A%0A    public Server(Path appsRepository, HttpConnector httpConnector) %7B%0A        this(new ArtifactAppFinder(appsRepository), httpConnector);%0A    %7D%0A%0A    public Server(AppFinder appFinder, HttpConnector httpConnector) %7B%0A        this(appFinder, new AppRegistry(appFinder), httpConnector);%0A    %7D%0A%0A    Server(AppFinder appFinder, AppRegistry appRegistry, HttpConnector httpConnector) %7B%0A        this.appFinder = appFinder;%0A        this.appRegistry = appRegistry;%0A        this.httpConnector = httpConnector;%0A        RequestDispatcher requestDispatcher = new RequestDispatcher();%0A        this.httpListener = httpRequest -%3E requestDispatcher.serve(httpRequest, appRegistry);%0A    %7D%0A%0A    public void start() %7B%0A        List%3CPair%3CString, String%3E%3E availableApps = appFinder.getAvailableApps();%0A        LOGGER.debug(%22'%22 + availableApps.size() + %22' web app(s) found.%22);%0A        for (Pair%3CString, String%3E appNameContextPath : availableApps) %7B%0A            httpConnector.registerApp(appNameContextPath.getLeft(), appNameContextPath.getRight(), httpListener);%0A        %7D%0A    %7D%0A%0A    public void stop() %7B%0A%0A    %7D%0A%7D%0A

add Server class