author | Jaroslav Tulach <jtulach@netbeans.org> |
Tue, 11 Aug 2009 14:26:49 +0200 | |
changeset 41 | c94f68ddef59 |
parent 38 | 373f537e0153 |
child 48 | 69e897fe8140 |
permissions | -rw-r--r-- |
jtulach@35 | 1 |
/* |
jtulach@35 | 2 |
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. |
jtulach@35 | 3 |
* |
jtulach@35 | 4 |
* The contents of this file are subject to the terms of either the GNU |
jtulach@35 | 5 |
* General Public License Version 2 only ("GPL") or the Common |
jtulach@35 | 6 |
* Development and Distribution License("CDDL") (collectively, the |
jtulach@35 | 7 |
* "License"). You may not use this file except in compliance with the |
jtulach@35 | 8 |
* License. You can obtain a copy of the License at |
jtulach@35 | 9 |
* http://www.netbeans.org/cddl-gplv2.html |
jtulach@35 | 10 |
* or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the |
jtulach@35 | 11 |
* specific language governing permissions and limitations under the |
jtulach@35 | 12 |
* License. When distributing the software, include this License Header |
jtulach@35 | 13 |
* Notice in each file and include the License file at |
jtulach@35 | 14 |
* nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this |
jtulach@35 | 15 |
* particular file as subject to the "Classpath" exception as provided |
jtulach@35 | 16 |
* by Sun in the GPL Version 2 section of the License file that |
jtulach@35 | 17 |
* accompanied this code. If applicable, add the following below the |
jtulach@35 | 18 |
* License Header, with the fields enclosed by brackets [] replaced by |
jtulach@35 | 19 |
* your own identifying information: |
jtulach@35 | 20 |
* "Portions Copyrighted [year] [name of copyright owner]" |
jtulach@35 | 21 |
* |
jtulach@35 | 22 |
* Contributor(s): |
jtulach@35 | 23 |
* |
jtulach@35 | 24 |
* Portions Copyrighted 2009 Jaroslav Tulach |
jtulach@35 | 25 |
*/ |
jtulach@35 | 26 |
|
jtulach@35 | 27 |
package cz.xelfi.quoridor.webidor.resources; |
jtulach@35 | 28 |
|
jtulach@35 | 29 |
import com.sun.jersey.api.container.httpserver.HttpServerFactory; |
jtulach@35 | 30 |
import com.sun.jersey.api.core.PackagesResourceConfig; |
jtulach@35 | 31 |
import com.sun.jersey.api.core.ResourceConfig; |
jtulach@35 | 32 |
import com.sun.jersey.spi.resource.Singleton; |
jtulach@35 | 33 |
import com.sun.net.httpserver.HttpServer; |
jtulach@37 | 34 |
import java.io.File; |
jtulach@35 | 35 |
import java.io.IOException; |
jtulach@35 | 36 |
import java.util.HashMap; |
jtulach@35 | 37 |
import java.util.Map; |
jtulach@35 | 38 |
import javax.ws.rs.Path; |
jtulach@35 | 39 |
|
jtulach@35 | 40 |
/** |
jtulach@35 | 41 |
* |
jtulach@35 | 42 |
* @author Jaroslav Tulach <jtulach@netbeans.org> |
jtulach@35 | 43 |
*/ |
jtulach@41 | 44 |
@Path("/api") |
jtulach@35 | 45 |
@Singleton |
jtulach@35 | 46 |
public final class Quoridor { |
jtulach@37 | 47 |
private final File path; |
jtulach@37 | 48 |
private Games games; |
jtulach@37 | 49 |
|
jtulach@37 | 50 |
public Quoridor() { |
jtulach@37 | 51 |
final String prop = System.getProperty("quoridor.dir"); // NOI18N |
jtulach@37 | 52 |
if (prop == null) { |
jtulach@37 | 53 |
throw new IllegalStateException("quoridor.dir property must be specified"); // NOI18N |
jtulach@37 | 54 |
} |
jtulach@37 | 55 |
path = new File(prop); |
jtulach@37 | 56 |
path.mkdirs(); |
jtulach@37 | 57 |
} |
jtulach@35 | 58 |
|
jtulach@35 | 59 |
@Path("games") |
jtulach@36 | 60 |
public Games getGames() { |
jtulach@37 | 61 |
if (games == null) { |
jtulach@37 | 62 |
games = new Games(new File(path, "games")); |
jtulach@37 | 63 |
} |
jtulach@35 | 64 |
return games; |
jtulach@35 | 65 |
} |
jtulach@35 | 66 |
|
jtulach@35 | 67 |
// |
jtulach@35 | 68 |
// start the server |
jtulach@35 | 69 |
// |
jtulach@35 | 70 |
|
jtulach@35 | 71 |
public static void main(String[] args) throws IOException { |
jtulach@41 | 72 |
HttpServer s = start(9998); |
jtulach@41 | 73 |
System.out.println( |
jtulach@41 | 74 |
"Quoridor started at port 9998\n" + "Hit enter to stop it..." |
jtulach@41 | 75 |
); |
jtulach@41 | 76 |
System.in.read(); |
jtulach@41 | 77 |
s.stop(0); |
jtulach@41 | 78 |
System.exit(0); |
jtulach@41 | 79 |
} |
jtulach@35 | 80 |
|
jtulach@41 | 81 |
public static HttpServer start(int port) throws IOException { |
jtulach@41 | 82 |
final String baseUri = "http://localhost:" + port + "/"; |
jtulach@35 | 83 |
|
jtulach@38 | 84 |
File home = new File(System.getProperty("user.home")); |
jtulach@38 | 85 |
File quoridor = new File(home, ".quoridor"); |
jtulach@38 | 86 |
|
jtulach@38 | 87 |
System.setProperty("quoridor.dir", quoridor.getPath()); |
jtulach@38 | 88 |
|
jtulach@35 | 89 |
ResourceConfig rc = new PackagesResourceConfig("cz.xelfi.quoridor.webidor"); |
jtulach@41 | 90 |
HttpServer server = HttpServerFactory.create(baseUri, rc); |
jtulach@41 | 91 |
server.start(); |
jtulach@41 | 92 |
return server; |
jtulach@35 | 93 |
} |
jtulach@35 | 94 |
|
jtulach@35 | 95 |
} |