Projects
Mega:24.03:SP1:Everything
gradle
_service:tar_scm:0010-Port-from-Simple-4-to-Jet...
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:tar_scm:0010-Port-from-Simple-4-to-Jetty-9.patch of Package gradle
From 9b5c1c859a60229beb20aa9bd4480f82786ff717 Mon Sep 17 00:00:00 2001 From: Mikolaj Izdebski <mizdebsk@redhat.com> Date: Fri, 30 Jan 2015 13:16:40 +0100 Subject: [PATCH 10/17] Port from Simple 4 to Jetty 9 --- gradle/dependencies.gradle | 6 +- subprojects/javascript/javascript.gradle | 2 +- .../simple/SimpleHttpFileServerFactory.java | 38 ++++----- .../internal/SimpleFileServerContainer.java | 82 ------------------- 4 files changed, 23 insertions(+), 105 deletions(-) delete mode 100644 subprojects/javascript/src/main/java/org/gradle/plugins/javascript/envjs/http/simple/internal/SimpleFileServerContainer.java diff --git a/gradle/dependencies.gradle b/gradle/dependencies.gradle index 54dc27d7fbe..96ff6f58fee 100755 --- a/gradle/dependencies.gradle +++ b/gradle/dependencies.gradle @@ -68,12 +68,12 @@ libraries.logback_classic = dependencies.module('ch.qos.logback:logback-classic: } // Jetty -libraries.servlet_api = "org.mortbay.jetty:servlet-api:2.5-20081211@jar" -libraries.jetty_util = dependencies.module("org.mortbay.jetty:jetty-util:6.1.26") { +libraries.servlet_api = "javax.servlet:javax.servlet-api" +libraries.jetty_util = dependencies.module("org.eclipse.jetty:jetty-util") { dependency libraries.slf4j_api dependency libraries.servlet_api } -libraries.jetty = dependencies.module("org.mortbay.jetty:jetty:6.1.26") { +libraries.jetty = dependencies.module("org.eclipse.jetty:jetty-server") { dependency libraries.jetty_util dependency libraries.servlet_api } diff --git a/subprojects/javascript/javascript.gradle b/subprojects/javascript/javascript.gradle index 1e94bd8de68..18970197521 100644 --- a/subprojects/javascript/javascript.gradle +++ b/subprojects/javascript/javascript.gradle @@ -19,7 +19,7 @@ dependencies { compile "org.mozilla:rhino:1.7R3" compile libraries.gson // used by JsHint - compile "org.simpleframework:simple:4.1.21" // used by http package in envjs + compile libraries.jetty // used by http package in envjs compile project(':core'), project(":plugins"), project(':workers') compile libraries.inject diff --git a/subprojects/javascript/src/main/java/org/gradle/plugins/javascript/envjs/http/simple/SimpleHttpFileServerFactory.java b/subprojects/javascript/src/main/java/org/gradle/plugins/javascript/envjs/http/simple/SimpleHttpFileServerFactory.java index 8a4f692cf4e..6983db21cb4 100644 --- a/subprojects/javascript/src/main/java/org/gradle/plugins/javascript/envjs/http/simple/SimpleHttpFileServerFactory.java +++ b/subprojects/javascript/src/main/java/org/gradle/plugins/javascript/envjs/http/simple/SimpleHttpFileServerFactory.java @@ -16,43 +16,43 @@ package org.gradle.plugins.javascript.envjs.http.simple; +import org.eclipse.jetty.server.Handler; +import org.eclipse.jetty.server.Server; +import org.eclipse.jetty.server.handler.DefaultHandler; +import org.eclipse.jetty.server.handler.HandlerList; +import org.eclipse.jetty.server.handler.ResourceHandler; import org.gradle.api.UncheckedIOException; import org.gradle.internal.concurrent.Stoppable; import org.gradle.plugins.javascript.envjs.http.HttpFileServer; import org.gradle.plugins.javascript.envjs.http.HttpFileServerFactory; -import org.gradle.plugins.javascript.envjs.http.simple.internal.SimpleFileServerContainer; -import org.simpleframework.http.core.Container; -import org.simpleframework.http.core.ContainerServer; -import org.simpleframework.http.resource.FileContext; -import org.simpleframework.transport.Server; -import org.simpleframework.transport.connect.Connection; -import org.simpleframework.transport.connect.SocketConnection; import java.io.File; -import java.io.IOException; -import java.net.InetSocketAddress; public class SimpleHttpFileServerFactory implements HttpFileServerFactory { public HttpFileServer start(File contentRoot, int port) { - Container container = new SimpleFileServerContainer(new FileContext(contentRoot)); - try { - final Server server = new ContainerServer(container); - Connection connection = new SocketConnection(server); - InetSocketAddress address = new InetSocketAddress(port); - InetSocketAddress usedAddress = (InetSocketAddress)connection.connect(address); + final Server server = new Server(8080); + + ResourceHandler handler = new ResourceHandler(); + handler.setResourceBase(contentRoot.getPath()); + + HandlerList handlers = new HandlerList(); + handlers.setHandlers(new Handler[] { handler, new DefaultHandler() }); + server.setHandler(handlers); + + server.start(); - return new SimpleHttpFileServer(contentRoot, usedAddress.getPort(), new Stoppable() { + return new SimpleHttpFileServer(contentRoot, port, new Stoppable() { public void stop() { try { - server.stop(); - } catch (IOException e) { + server.join(); + } catch (InterruptedException e) { throw new UncheckedIOException(e); } } }); - } catch (IOException e) { + } catch (Exception e) { throw new UncheckedIOException(e); } } diff --git a/subprojects/javascript/src/main/java/org/gradle/plugins/javascript/envjs/http/simple/internal/SimpleFileServerContainer.java b/subprojects/javascript/src/main/java/org/gradle/plugins/javascript/envjs/http/simple/internal/SimpleFileServerContainer.java deleted file mode 100644 index 5d67baeeae1..00000000000 --- a/subprojects/javascript/src/main/java/org/gradle/plugins/javascript/envjs/http/simple/internal/SimpleFileServerContainer.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright 2012 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.gradle.plugins.javascript.envjs.http.simple.internal; - -import org.apache.commons.io.IOUtils; -import org.gradle.api.UncheckedIOException; -import org.simpleframework.http.Request; -import org.simpleframework.http.Response; -import org.simpleframework.http.core.Container; -import org.simpleframework.http.resource.Context; -import org.simpleframework.http.resource.Index; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.io.Reader; -import java.nio.charset.Charset; - -public class SimpleFileServerContainer implements Container { - - private final Context context; - - public SimpleFileServerContainer(Context context) { - this.context = context; - } - - public void handle(Request req, Response resp) { - Index requestIndex = context.getIndex(req.getTarget()); - File targetFile = requestIndex.getFile(); - - if (!targetFile.exists()) { - resp.setCode(404); - resp.setText("Not Found"); - try { - resp.getPrintStream().println(String.format("File '%s' does not exist", targetFile.getAbsolutePath())); - resp.commit(); - } catch (IOException e) { - throw new UncheckedIOException(e); - } - } - - String contentType = requestIndex.getContentType(); - resp.set("Content-Type", contentType); - - OutputStream output = null; - try { - output = resp.getOutputStream(); - - if (contentType.startsWith("text/")) { - resp.set("Content-Encoding", Charset.defaultCharset().name()); - Reader input = new FileReader(requestIndex.getFile()); - IOUtils.copy(input, output); - IOUtils.closeQuietly(input); - } else { - InputStream input = new FileInputStream(requestIndex.getFile()); - IOUtils.copy(input, output); - IOUtils.closeQuietly(input); - } - } catch (IOException e) { - throw new UncheckedIOException(e); - } finally { - IOUtils.closeQuietly(output); - } - } -} -- 2.17.2
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.
浙ICP备2022010568号-2