Browse Source

Add some things!

master
Chris Smith 11 years ago
parent
commit
2fb515f9a9

+ 1
- 5
nbproject/project.xml View File

@@ -74,13 +74,9 @@
74 74
         <java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/3">
75 75
             <compilation-unit>
76 76
                 <package-root>src</package-root>
77
-                <classpath mode="compile">lib/asm-3.1.jar:lib/gmbal-api-only-3.0.0-b023.jar:lib/grizzly-framework-2.1.2.jar:lib/grizzly-http-2.1.2.jar:lib/grizzly-http-server-2.1.2.jar:lib/grizzly-rcm-2.1.2.jar:lib/hamcrest-core-1.1.jar:lib/ivy-2.2.0.jar:lib/jackson-core-asl-1.9.2.jar:lib/jackson-jaxrs-1.9.2.jar:lib/jackson-mapper-asl-1.9.2.jar:lib/jackson-xc-1.9.2.jar:lib/javax.ws.rs-api-2.0-m01.jar:lib/jersey-grizzly2-1.11.jar:lib/jersey-json-1.11.jar:lib/jersey-server-1.11.jar:lib/jettison-1.1.jar:lib/jgit-describe-0.1.jar:lib/jsch-0.1.44-1.jar:lib/junit-4.10.jar:lib/logback-classic-1.0.0.jar:lib/logback-core-1.0.0.jar:lib/lombok-pg-0.10.8-SNAPSHOT.jar:lib/management-api-3.0.0-b012.jar:lib/mockito-all-1.9.0.jar:lib/org.eclipse.jgit-1.2.0.201112221803-r.jar:lib/parser-common-working@dmdirc-parser-common.jar:lib/parser-irc-working@dmdirc-parser-irc.jar:lib/slf4j-api-1.6.4.jar:lib/stax-api-1.0.1.jar:lib/util-working@dmdirc-util.jar</classpath>
77
+                <classpath mode="compile">lib/aopalliance-1.0.jar:lib/asm-3.1.jar:lib/cglib-2.2.1-v20090111.jar:lib/gmbal-api-only-3.0.0-b023.jar:lib/grizzly-framework-2.1.2.jar:lib/grizzly-framework-2.2.1.jar:lib/grizzly-http-2.1.2.jar:lib/grizzly-http-2.2.1.jar:lib/grizzly-http-server-2.1.2.jar:lib/grizzly-http-server-2.2.1.jar:lib/grizzly-rcm-2.1.2.jar:lib/grizzly-rcm-2.2.1.jar:lib/guice-3.0.jar:lib/hamcrest-core-1.1.jar:lib/ivy-2.2.0.jar:lib/jackson-core-asl-1.9.2.jar:lib/jackson-jaxrs-1.9.2.jar:lib/jackson-mapper-asl-1.9.2.jar:lib/jackson-xc-1.9.2.jar:lib/javax.inject-1.jar:lib/javax.ws.rs-api-2.0-m01.jar:lib/javax.ws.rs-api-2.0-m04.jar:lib/jersey-core-1.11.jar:lib/jersey-core-1.13-b01.jar:lib/jersey-grizzly2-1.11.jar:lib/jersey-grizzly2-1.13-b01.jar:lib/jersey-json-1.11.jar:lib/jersey-json-1.13-b01.jar:lib/jersey-server-1.11.jar:lib/jersey-server-1.13-b01.jar:lib/jettison-1.1.jar:lib/jgit-describe-0.1.jar:lib/jsch-0.1.44-1.jar:lib/junit-4.10.jar:lib/logback-classic-1.0.0.jar:lib/logback-classic-1.0.2.jar:lib/logback-core-1.0.0.jar:lib/logback-core-1.0.2.jar:lib/lombok-pg-0.10.8-SNAPSHOT.jar:lib/management-api-3.0.0-b012.jar:lib/mockito-all-1.9.0.jar:lib/org.eclipse.jgit-1.2.0.201112221803-r.jar:lib/org.eclipse.jgit-1.3.0.201202151440-r.jar:lib/parser-common-working@dmdirc-parser-common.jar:lib/parser-irc-working@dmdirc-parser-irc.jar:lib/slf4j-api-1.6.4.jar:lib/stax-api-1.0.1.jar:lib/util-working@dmdirc-util.jar</classpath>
78 78
                 <built-to>build</built-to>
79 79
                 <source-level>1.6</source-level>
80
-                <annotation-processing>
81
-                   <scan-trigger/>
82
-                   <editor-trigger/>
83
-                </annotation-processing>
84 80
             </compilation-unit>
85 81
             <compilation-unit>
86 82
                 <package-root>test</package-root>

+ 3
- 0
src/name/smith/chris/restirc/RestIrc.java View File

@@ -8,9 +8,12 @@ import java.net.URI;
8 8
 
9 9
 import javax.ws.rs.core.UriBuilder;
10 10
 
11
+import lombok.extern.slf4j.Slf4j;
12
+
11 13
 /**
12 14
  * Main program entry point. Handles initialisation logic.
13 15
  */
16
+@Slf4j
14 17
 public class RestIrc {
15 18
 
16 19
     private static URI getBaseURI() {

+ 70
- 0
src/name/smith/chris/restirc/model/Server.java View File

@@ -0,0 +1,70 @@
1
+package name.smith.chris.restirc.model;
2
+
3
+import com.dmdirc.parser.common.CallbackManager;
4
+import com.dmdirc.parser.interfaces.Parser;
5
+import com.dmdirc.parser.interfaces.callbacks.CallbackInterface;
6
+import com.dmdirc.parser.interfaces.callbacks.DebugInfoListener;
7
+import com.dmdirc.parser.interfaces.callbacks.ServerReadyListener;
8
+import com.dmdirc.parser.irc.IRCParser;
9
+
10
+import java.net.URI;
11
+import java.util.Date;
12
+import java.util.List;
13
+import java.util.concurrent.CopyOnWriteArrayList;
14
+
15
+import lombok.extern.slf4j.Slf4j;
16
+
17
+/**
18
+ * Represents a server.
19
+ */
20
+@Slf4j
21
+public class Server {
22
+
23
+    private Parser parser;
24
+
25
+    private final List<URI> addresses = new CopyOnWriteArrayList<URI>();
26
+    private final List<String> channels = new CopyOnWriteArrayList<String>();
27
+
28
+    private int nextAddress = 0;
29
+
30
+    public void connect() {
31
+        log.info("Connecting...");
32
+
33
+        this.parser = new IRCParser(addresses.get(nextAddress));
34
+        final CallbackManager callback = this.parser.getCallbackManager();
35
+        final Listener listener = new Listener();
36
+
37
+        for (Class<?> clazz : Listener.class.getInterfaces()) {
38
+            callback.addCallback((Class<CallbackInterface>) clazz, listener);
39
+        }
40
+
41
+        this.parser.connect();
42
+    }
43
+
44
+    public void addAddress(final URI address) {
45
+        log.info("Adding address: {}", address);
46
+        this.addresses.add(address);
47
+    }
48
+
49
+    public void addChannel(final String channel) {
50
+        log.info("Adding channel: {}", channel);
51
+        this.channels.add(channel);
52
+    }
53
+
54
+    private class Listener implements ServerReadyListener, DebugInfoListener {
55
+
56
+        @Override
57
+        public void onServerReady(Parser parser, Date date) {
58
+            for (String channel : channels) {
59
+                parser.joinChannel(channel);
60
+            }
61
+        }
62
+
63
+        @Override
64
+        public void onDebugInfo(Parser parser, Date date, int i, String string) {
65
+            log.debug(string);
66
+        }
67
+
68
+    }
69
+
70
+}

+ 33
- 0
src/name/smith/chris/restirc/model/ServerManager.java View File

@@ -0,0 +1,33 @@
1
+package name.smith.chris.restirc.model;
2
+
3
+import java.util.Collection;
4
+import java.util.Collections;
5
+import java.util.HashMap;
6
+import java.util.Map;
7
+
8
+/**
9
+ * Manages a collection of servers.
10
+ */
11
+public class ServerManager {
12
+
13
+    private final Map<String, Server> servers
14
+            = Collections.synchronizedMap(new HashMap<String, Server>());
15
+
16
+    public boolean hasServer(String id) {
17
+        return servers.containsKey(id);
18
+    }
19
+
20
+    public Server getServer(String id) {
21
+        return servers.get(id);
22
+    }
23
+
24
+    public void addServer(String id, Server server) {
25
+        servers.put(id, server);
26
+        server.connect();
27
+    }
28
+
29
+    public Collection<String> getAllIds() {
30
+        return Collections.unmodifiableCollection(servers.keySet());
31
+    }
32
+
33
+}

+ 83
- 0
src/name/smith/chris/restirc/resources/ServersResource.java View File

@@ -0,0 +1,83 @@
1
+package name.smith.chris.restirc.resources;
2
+
3
+import com.sun.jersey.api.NotFoundException;
4
+import com.sun.jersey.spi.resource.Singleton;
5
+
6
+import java.net.URI;
7
+import java.net.URISyntaxException;
8
+
9
+import javax.ws.rs.GET;
10
+import javax.ws.rs.PUT;
11
+import javax.ws.rs.Path;
12
+import javax.ws.rs.PathParam;
13
+import javax.ws.rs.Produces;
14
+
15
+import name.smith.chris.restirc.model.Server;
16
+import name.smith.chris.restirc.model.ServerManager;
17
+
18
+import lombok.AllArgsConstructor;
19
+
20
+/**
21
+ * Top-level resource for servers.
22
+ */
23
+@Singleton
24
+@Path("/servers")
25
+public class ServersResource {
26
+
27
+    private final ServerManager manager = new ServerManager() {{
28
+        addServer("test", new Server() {{
29
+            try {
30
+                addAddress(new URI("irc://irc.quakenet.org:6667/"));
31
+                addChannel("#mdbot");
32
+            } catch (URISyntaxException ex) {
33
+                // Fail
34
+            }
35
+        }});
36
+    }};
37
+
38
+    @GET
39
+    @Produces("application/json")
40
+    public String getList() {
41
+        return "Meh";
42
+    }
43
+
44
+    @Path("/{id}")
45
+    public ServerResource getSubResource(@PathParam("id") String id) {
46
+        if (manager.hasServer(id)) {
47
+            return new ServerResource(id);
48
+        } else {
49
+            throw new NotFoundException();
50
+        }
51
+    }
52
+
53
+    @Path("/{id}")
54
+    @GET
55
+    public String getServer(@PathParam("id") String id) {
56
+        if (manager.hasServer(id)) {
57
+            return "Boo!";
58
+        } else {
59
+            throw new NotFoundException();
60
+        }
61
+    }
62
+
63
+    @Path("/{id}")
64
+    @PUT
65
+    public String getTestyList() {
66
+        throw new UnsupportedOperationException("TODO");
67
+    }
68
+
69
+    @AllArgsConstructor
70
+    public static class ServerResource {
71
+
72
+        private final String id;
73
+
74
+        @GET
75
+        @Produces("text/plain")
76
+        @Path("/test")
77
+        public String test() {
78
+            return "Test! My ID is " + id;
79
+        }
80
+
81
+    }
82
+
83
+}

Loading…
Cancel
Save