-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/AndroidClient/android/build.gradle b/src/AndroidClient/android/build.gradle
index d1d41e47..2c37cd87 100644
--- a/src/AndroidClient/android/build.gradle
+++ b/src/AndroidClient/android/build.gradle
@@ -1,18 +1,42 @@
+// Apply necessary plugins
apply plugin: 'com.android.library'
-apply plugin: 'com.github.dcendents.android-maven'
-apply plugin: 'com.jfrog.bintray'
+apply plugin: 'maven-publish'
+apply plugin: 'signing'
-version = "1.0.20"
+// Define the version and group for the Maven package
+version = "1.1.5"
+group = "net.servicestack"
+if (project.hasProperty('versionSuffix')) {
+ version = "${version}-${versionSuffix}"
+}
+
+
+// Specify dependencies
+dependencies {
+ implementation 'com.google.code.gson:gson:2.11.0'
+ implementation 'com.squareup.okhttp3:okhttp:3.14.9'
+ implementation fileTree(include: '*.jar', dir: 'libs')
+ androidTestImplementation 'junit:junit:4.13.2'
+ androidTestImplementation 'com.android.support.test:runner:1.0.2'
+ androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
+ androidTestImplementation 'com.android.support:support-annotations:28.0.0'
+}
+
+// Android specific configurations
android {
- compileSdkVersion 23
- buildToolsVersion "23.0.2"
+ namespace "net.servicestack.android"
+ compileSdk 34
+
+ lintOptions {
+ abortOnError false
+ }
defaultConfig {
minSdkVersion 15
- targetSdkVersion 23
- versionCode 1
- versionName version
+ targetSdkVersion 34
+
+ testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner'
}
buildTypes {
release {
@@ -20,80 +44,87 @@ android {
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
-}
-
-Properties properties = System.properties;
-if(properties.getProperty("bintray.user", null) == null) {
- properties.load(project.file('./local.properties').newDataInputStream())
-}
-
-def siteUrl = 'https://github.com/ServiceStack/ServiceStack.Java' // Homepage URL of the library
-def gitUrl = 'https://github.com/ServiceStack/ServiceStack.Java.git' // Git repository URL
-group = "net.servicestack" // Maven Group ID for the artifact
-
-bintray {
- user = properties.getProperty("bintray.user")
- key = properties.getProperty("bintray.apiKey")
-
- configurations = ['archives']
- pkg {
- repo = "maven"
- name = "ServiceStack.Android"
- websiteUrl = siteUrl
- vcsUrl = gitUrl
- licenses = ["BSD 3-Clause"]
- publish = properties.getProperty('bintray.publish') == 'true'
- userOrg = 'servicestack'
+ sourceSets {
+ main.java.srcDirs += 'src/main/kotlin'
}
}
-install {
- repositories.mavenInstaller {
- // This generates POM.xml with proper parameters
- pom {
- project {
- packaging 'aar'
+// Configure the publishing block for Maven Central deployment
+publishing {
+ publications {
+ mavenJava(MavenPublication) {
+ artifact("$buildDir/outputs/aar/${project.name}-release.aar")
+
+ groupId = group
+ artifactId = 'android'
+ version = version
- // Add your description here
- name 'ServiceStack.Android'
- description 'A client library to call your ServiceStack webservices for Android clients.'
- url siteUrl
+ pom {
+ name = 'ServiceStack.Android'
+ description = 'A client library to call your ServiceStack webservices for Android clients.'
+ url = 'https://github.com/ServiceStack/ServiceStack.Java'
- // Set your license
licenses {
license {
- name 'The BSD 3-Clause License'
- url 'https://servicestack.net/bsd-license.txt'
+ name = 'The BSD 3-Clause License'
+ url = 'https://servicestack.net/bsd-license.txt'
}
}
developers {
developer {
- id 'mythz'
- name 'Demis Bellot'
- email 'team@servicestack.net'
+ id = 'mythz'
+ name = 'Demis Bellot'
+ email = 'team@servicestack.net'
}
developer {
- id 'layoric'
- name 'Darren Reid'
- email 'team@servicestack.net'
+ id = 'layoric'
+ name = 'Darren Reid'
+ email = 'team@servicestack.net'
}
}
- scm {
- connection 'https://github.com/ServiceStack/ServiceStack.Java'
- developerConnection 'https://github.com/ServiceStack/ServiceStack.Java'
- url 'https://github.com/ServiceStack/ServiceStack.Java'
+ scm {
+ connection = 'https://github.com/ServiceStack/ServiceStack.Java.git'
+ developerConnection = 'https://github.com/ServiceStack/ServiceStack.Java.git'
+ url = 'https://github.com/ServiceStack/ServiceStack.Java'
}
}
}
}
-}
-dependencies {
- compile 'com.google.code.gson:gson:2.4'
- compile 'com.android.support:appcompat-v7:23.1.1'
- compile fileTree(include: '*.jar', dir: 'libs')
- testCompile 'junit:junit:4.11'
- testCompile 'org.mockito:mockito-core:1.9.5'
+ repositories {
+ maven {
+ name = 'OSSRH'
+ url = uri("https://oss.sonatype.org/service/local/staging/deploy/maven2/")
+ credentials {
+ username = project.findProperty("ossrhUsername") ?: System.getenv("OSSRH_USERNAME")
+ password = project.findProperty("ossrhPassword") ?: System.getenv("OSSRH_TOKEN")
+ }
+ }
+ maven {
+ name = 'GitHubPackages'
+ url = uri("https://maven.pkg.github.com/ServiceStack/ServiceStack.Java")
+
+ credentials {
+ username = project.findProperty("gpr.user") ?: System.getenv("USERNAME_GITHUB")
+ password = project.findProperty("gpr.token") ?: System.getenv("TOKEN_GITHUB")
+ }
+ }
+ }
}
+
+// Check if the environment variables are set
+def signingKey = System.getenv('SIGNING_KEY')
+def signingPassword = System.getenv('SIGNING_PASSWORD')
+
+// Conditionally apply the signing plugin and configuration
+if (signingKey && signingPassword) {
+ println "Signing enabled"
+ signing {
+ useInMemoryPgpKeys(signingKey, signingPassword)
+ sign publishing.publications.mavenJava
+ }
+} else {
+ println "Signing disabled"
+}
\ No newline at end of file
diff --git a/src/AndroidClient/android/lint.xml b/src/AndroidClient/android/lint.xml
new file mode 100644
index 00000000..3c6f61fb
--- /dev/null
+++ b/src/AndroidClient/android/lint.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/src/AndroidClient/android/src/androidTest/java/net/servicestack/android/AndroidServiceClientTests.java b/src/AndroidClient/android/src/androidTest/java/net/servicestack/android/AndroidServiceClientTests.java
index c0e44311..5c45597b 100644
--- a/src/AndroidClient/android/src/androidTest/java/net/servicestack/android/AndroidServiceClientTests.java
+++ b/src/AndroidClient/android/src/androidTest/java/net/servicestack/android/AndroidServiceClientTests.java
@@ -1,20 +1,21 @@
package net.servicestack.android;
-import android.app.Application;
-import android.test.ApplicationTestCase;
+import android.support.test.runner.AndroidJUnit4;
-import net.servicestack.android.AndroidLogProvider;
-import net.servicestack.android.AndroidServiceClient;
import net.servicestack.client.Log;
-public class AndroidServiceClientTests extends ApplicationTestCase {
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+public class AndroidServiceClientTests {
public AndroidServiceClientTests() {
- super(Application.class);
Log.Instance = new AndroidLogProvider("ZZZ");
}
- AndroidServiceClient client = new AndroidServiceClient("http://techstacks.io");
+ AndroidServiceClient client = new AndroidServiceClient("https://techstacks.io");
+ @Test
public void test(){
}
diff --git a/src/AndroidClient/android/src/androidTest/java/net/servicestack/android/ApplicationTest.java b/src/AndroidClient/android/src/androidTest/java/net/servicestack/android/ApplicationTest.java
index 00e5c77a..2d1b0725 100644
--- a/src/AndroidClient/android/src/androidTest/java/net/servicestack/android/ApplicationTest.java
+++ b/src/AndroidClient/android/src/androidTest/java/net/servicestack/android/ApplicationTest.java
@@ -1,9 +1,8 @@
package net.servicestack.android;
-import android.app.Application;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
-import android.test.ApplicationTestCase;
+import android.support.test.runner.AndroidJUnit4;
import com.google.gson.annotations.SerializedName;
@@ -11,20 +10,25 @@
import net.servicestack.client.Flags;
import net.servicestack.client.Utils;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
import java.net.HttpURLConnection;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
+import static junit.framework.TestCase.assertTrue;
+import static org.junit.Assert.assertEquals;
+
/**
* Testing Fundamentals
*/
-public class ApplicationTest extends ApplicationTestCase {
- public ApplicationTest() {
- super(Application.class);
- }
+@RunWith(AndroidJUnit4.class)
+public class ApplicationTest {
- AndroidServiceClient client = new AndroidServiceClient("http://techstacks.io");
+ AndroidServiceClient client = new AndroidServiceClient("https://techstacks.io");
+ @Test
public void test_Can_download_image_bytes(){
HttpURLConnection httpRes = client.get("https://servicestack.net/img/logo.png");
byte[] imgBytes = Utils.readBytesToEnd(httpRes);
@@ -34,6 +38,7 @@ public void test_Can_download_image_bytes(){
assertEquals(55, img.getHeight());
}
+ @Test
public void test_Can_download_image_bytes_Async() throws InterruptedException {
final CountDownLatch signal = new CountDownLatch(1);
diff --git a/src/AndroidClient/android/src/androidTest/java/net/servicestack/android/ServerEventClientTests.java b/src/AndroidClient/android/src/androidTest/java/net/servicestack/android/ServerEventClientTests.java
new file mode 100644
index 00000000..d7978be3
--- /dev/null
+++ b/src/AndroidClient/android/src/androidTest/java/net/servicestack/android/ServerEventClientTests.java
@@ -0,0 +1,1153 @@
+package net.servicestack.android;
+
+import android.os.Build;
+import android.support.test.runner.AndroidJUnit4;
+import junit.framework.TestCase;
+import static net.servicestack.android.test.dtos.*;
+import static org.junit.Assert.assertArrayEquals;
+
+import net.servicestack.client.JsonUtils;
+import net.servicestack.client.Log;
+import net.servicestack.client.sse.*;
+import net.servicestack.func.Action;
+import net.servicestack.func.Func;
+import net.servicestack.func.Predicate;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+
+/**
+ * Created by mythz on 2/10/2017.
+ */
+
+@android.support.annotation.RequiresApi(api = Build.VERSION_CODES.KITKAT)
+@RunWith(AndroidJUnit4.class)
+public class ServerEventClientTests extends TestCase {
+
+ public ServerEventClientTests() {
+ Log.setInstance(new AndroidLogProvider("ZZZ", true));
+ }
+
+ public ServerEventsClient createServerEventsClient(String baseUrl, String... channels){
+ return new AndroidServerEventsClient(baseUrl, channels);
+ }
+
+ /* Project wont build if using Java 8 lambda's so replaced to use anon class */
+
+ @Test
+ public void Can_connect_to_ServerEventsStream() throws Exception {
+ final CountDownLatch signal = new CountDownLatch(1);
+
+ try (ServerEventsClient client = createServerEventsClient("https://chat.netcore.io", "home")
+ .setOnConnect(new ServerEventConnectCallback() {
+ @Override
+ public void execute(ServerEventConnect e) {
+ System.out.print("onConnect: " + e);
+ signal.countDown();
+ }
+ }).start())
+ {
+ assertTrue(signal.await(5, TimeUnit.SECONDS));
+ }
+ }
+
+ @Test
+ public void Does_fire_onJoin_events() throws Exception {
+ final CountDownLatch signal = new CountDownLatch(1);
+
+ try(ServerEventsClient client = createServerEventsClient("https://chat.netcore.io", "home"))
+ {
+ client
+ .setOnConnect(new ServerEventConnectCallback() {
+ @Override
+ public void execute(ServerEventConnect e) {
+ assertTrue(e.getHeartbeatUrl().startsWith("https://chat.netcore.io"));
+ }
+ })
+ .setOnCommand(new ServerEventMessageCallback() {
+ @Override
+ public void execute(ServerEventMessage e) {
+ System.out.print("onCommand: " + e);
+ assertTrue(e instanceof ServerEventJoin);
+ ServerEventJoin joinMsg = (ServerEventJoin) e;
+ assertEquals(client.getConnectionInfo().getDisplayName(), joinMsg.getDisplayName());
+ signal.countDown();
+ }
+ })
+ .start();
+
+ assertTrue(signal.await(5, TimeUnit.SECONDS));
+ }
+ }
+
+ @Test
+ public void Does_fire_onJoin_events_for_multiple_Channels() throws Exception {
+ final CountDownLatch signal = new CountDownLatch(1);
+
+ final String[] channels = new String[] { "A", "B", "C" };
+ final List joinMsgs = new ArrayList<>();
+
+ try (ServerEventsClient client = createServerEventsClient("https://chat.netcore.io", channels))
+ {
+ client
+ .setOnCommand(new ServerEventMessageCallback() {
+ @Override
+ public void execute(ServerEventMessage e) {
+ System.out.print("onCommand: " + e);
+
+ if (e instanceof ServerEventJoin) {
+ ServerEventJoin joinMsg = (ServerEventJoin) e;
+ joinMsgs.add(joinMsg);
+
+ assertEquals(channels[joinMsgs.size() - 1], joinMsg.getChannel());
+ assertEquals(client.getConnectionInfo().getDisplayName(), joinMsg.getDisplayName());
+
+ if (joinMsgs.size() == channels.length)
+ signal.countDown();
+ }
+ }
+ })
+ .start();
+
+ assertTrue(signal.await(5, TimeUnit.SECONDS));
+ }
+ }
+
+ private void clearPreviousRun(String[] channels) throws Exception {
+ final CountDownLatch signal = new CountDownLatch(1);
+
+ try (ServerEventsClient client = createServerEventsClient("https://chat.netcore.io", channels)
+ .setOnConnect(new ServerEventConnectCallback() {
+ @Override
+ public void execute(ServerEventConnect e) {
+ signal.countDown();
+ }
+ })
+ .start())
+ {
+ assertTrue(signal.await(5, TimeUnit.SECONDS));
+ }
+ }
+
+// @Test
+ public void ignore_test_ClearPreviousRun() throws Exception {
+ clearPreviousRun(null);
+ }
+
+ @Test
+ public void Does_fire_all_callbacks() throws Exception {
+// clearPreviousRun(null);
+
+ final List connectMsgs = new ArrayList<>();
+ final List msgs = new ArrayList<>();
+ final List commands = new ArrayList<>();
+ final List errors = new ArrayList<>();
+
+ try(ServerEventsClient client1 = createServerEventsClient("https://chat.netcore.io")
+ .setOnConnect(new ServerEventConnectCallback() {
+ @Override
+ public void execute(ServerEventConnect e) {
+ connectMsgs.add(e);
+ }
+ })
+ .setOnCommand(new ServerEventMessageCallback() {
+ @Override
+ public void execute(ServerEventMessage e) {
+ commands.add(e);
+ }
+ })
+ .setOnMessage(new ServerEventMessageCallback() {
+ @Override
+ public void execute(ServerEventMessage e) {
+ msgs.add(e);
+ }
+ })
+ .setOnException(new ExceptionCallback() {
+ @Override
+ public void execute(Exception e) {
+ errors.add(e);
+ }
+ })
+ .start())
+ {
+ while (connectMsgs.size() < 1 || commands.size() < 1) {
+ Thread.sleep(100);
+ }
+
+ ServerEventConnect connectMsg = Func.first(connectMsgs);
+ ServerEventJoin joinMsg = Func.first(Func.ofType(commands, ServerEventJoin.class));
+ assertNotNull(connectMsg);
+ assertNotNull(joinMsg);
+
+ assertEquals(0, msgs.size());
+ assertEquals(0, errors.size());
+ assertEquals(1, commands.size()); //join
+
+ connectMsgs.clear();
+ commands.clear();
+
+ try(ServerEventsClient client2 = createServerEventsClient("https://chat.netcore.io")
+ .setOnConnect(new ServerEventConnectCallback() {
+ @Override
+ public void execute(ServerEventConnect e) {
+ connectMsgs.add(e);
+ }
+ })
+ .start())
+ {
+ while (connectMsgs.size() < 1 || commands.size() < 1) {
+ Thread.sleep(100);
+ }
+
+ connectMsg = Func.first(connectMsgs);
+ joinMsg = Func.first(Func.ofType(commands, ServerEventJoin.class));
+ }
+
+ while (commands.size() < 2) {
+ Thread.sleep(100);
+ }
+
+ ServerEventLeave leaveMsg = Func.first(Func.ofType(commands, ServerEventLeave.class));
+
+ assertNotNull(joinMsg);
+ assertNotNull(leaveMsg);
+ assertTrue(commands.size() >= 2);
+ assertEquals(errors.size(), 0);
+ }
+ }
+
+ private void postChat(ServerEventsClient client, String message) {
+ postChat(client, message, null);
+ }
+
+ private void postChat(ServerEventsClient client, String message, String channel) {
+ client.getServiceClient().post(new PostChatToChannel()
+ .setFrom(client.getSubscriptionId())
+ .setMessage(message)
+ .setChannel(channel != null ? channel : ServerEventsClient.UnknownChannel)
+ .setSelector("cmd.chat"));
+ }
+
+ private void postRaw(ServerEventsClient client, String selector, String message) {
+ postRaw(client, selector, message, null);
+ }
+
+ private void postRaw(ServerEventsClient client, String selector, String message, String channel) {
+ client.getServiceClient().post(new PostRawToChannel()
+ .setFrom(client.getSubscriptionId())
+ .setMessage(message)
+ .setChannel(channel != null ? channel : ServerEventsClient.UnknownChannel)
+ .setSelector(selector));
+ }
+
+ private void postObject(ServerEventsClient client, CustomType dto){
+ postObject(client, dto, null, null);
+ }
+
+ private void postObject(ServerEventsClient client, CustomType dto, String selector){
+ postObject(client, dto, selector, null);
+ }
+
+ private void postObject(ServerEventsClient client, CustomType dto, String selector, String channel){
+ client.getServiceClient().post(new PostObjectToChannel()
+ .setCustomType(dto)
+ .setChannel(channel != null ? channel : ServerEventsClient.UnknownChannel)
+ .setSelector(selector));
+ }
+
+ private void postObject(ServerEventsClient client, SetterType dto){
+ client.getServiceClient().post(new PostObjectToChannel()
+ .setSetterType(dto)
+ .setChannel(ServerEventsClient.UnknownChannel));
+ }
+
+ @Test
+ public void Does_receive_messages() throws Exception {
+
+ final List connectMsgs = new ArrayList<>();
+ final List commands = new ArrayList<>();
+ final List msgs1 = new ArrayList<>();
+ final List msgs2 = new ArrayList<>();
+
+ try (
+ ServerEventsClient client1 = createServerEventsClient("https://chat.netcore.io")
+ .setOnConnect(new ServerEventConnectCallback() {
+ @Override
+ public void execute(ServerEventConnect e) {
+ connectMsgs.add(e);
+ }
+ })
+ .setOnCommand(new ServerEventMessageCallback() {
+ @Override
+ public void execute(ServerEventMessage e) {
+ commands.add(e);
+ }
+ })
+ .setOnMessage(new ServerEventMessageCallback() {
+ @Override
+ public void execute(ServerEventMessage e) {
+ msgs1.add(e);
+ }
+ });
+
+ ServerEventsClient client2 = createServerEventsClient("https://chat.netcore.io")
+ .setOnConnect(new ServerEventConnectCallback() {
+ @Override
+ public void execute(ServerEventConnect e) {
+ connectMsgs.add(e);
+ }
+ })
+ .setOnMessage(new ServerEventMessageCallback() {
+ @Override
+ public void execute(ServerEventMessage e) {
+ msgs2.add(e);
+ }
+ }))
+ {
+ client1.start();
+
+ while (connectMsgs.size() < 1 || commands.size() < 1) {
+ Thread.sleep(100);
+ }
+
+ client2.start();
+
+ while (connectMsgs.size() < 2 || commands.size() < 2) {
+ Thread.sleep(100);
+ }
+
+ ServerEventConnect info1 = connectMsgs.get(0);
+ postChat(client1, "hello from client1");
+
+ while (msgs1.size() < 1 || msgs2.size() < 1) {
+ Thread.sleep(100);
+ }
+
+ ServerEventMessage msg1 = Func.first(msgs1);
+ ServerEventMessage msg2 = Func.first(msgs2);
+
+ assertTrue(msg1.getEventId() > 0);
+ assertTrue(msg2.getEventId() > 0);
+ assertEquals("cmd.chat", msg1.getSelector());
+ assertEquals("cmd.chat", msg2.getSelector());
+
+ ChatMessage chatMsg1 = JsonUtils.fromJson(msg1.getJson(), ChatMessage.class);
+ ChatMessage chatMsg2 = JsonUtils.fromJson(msg2.getJson(), ChatMessage.class);
+
+ for (ChatMessage chatMsg : new ChatMessage[]{ chatMsg1, chatMsg2 }){
+ assertTrue(chatMsg.getId() > 0);
+ assertEquals(info1.getUserId(), chatMsg.getFromUserId());
+ assertEquals(info1.getDisplayName(), chatMsg.getFromName());
+ }
+
+ assertEquals(1, msgs1.size());
+ assertEquals(1, msgs2.size());
+
+ ServerEventConnect info2 = connectMsgs.get(1);
+ postChat(client2, "hello from client2");
+
+ while (msgs1.size() < 2 || msgs2.size() < 2) {
+ Thread.sleep(100);
+ }
+
+ msg1 = msgs1.get(1);
+ msg2 = msgs2.get(1);
+
+ chatMsg1 = JsonUtils.fromJson(msg1.getJson(), ChatMessage.class);
+ chatMsg2 = JsonUtils.fromJson(msg2.getJson(), ChatMessage.class);
+
+ for (ChatMessage chatMsg : new ChatMessage[]{ chatMsg1, chatMsg2 }){
+ assertTrue(chatMsg.getId() > 0);
+ assertEquals(info2.getUserId(), chatMsg.getFromUserId());
+ assertEquals(info2.getDisplayName(), chatMsg.getFromName());
+ }
+
+ assertEquals(2, msgs1.size());
+ assertEquals(2, msgs2.size());
+ }
+ }
+
+ @Test
+ public void Does_send_multiple_heartbeats() throws Exception {
+ final CountDownLatch signal = new CountDownLatch(1);
+
+ final List heartbeats = new ArrayList<>();
+ try(ServerEventsClient client1 = createServerEventsClient("https://chat.netcore.io")
+ .setOnConnect(new ServerEventConnectCallback() {
+ @Override
+ public void execute(ServerEventConnect e) {
+ e.setHeartbeatIntervalMs(1000);
+ }
+ }) //change to 1s
+ .setOnHeartbeat(new ServerEventMessageCallback() {
+ @Override
+ public void execute(ServerEventMessage e) {
+ heartbeats.add(e);
+ if (heartbeats.size() >= 3)
+ signal.countDown();
+ }
+ })
+ .start()) {
+
+ assertTrue(signal.await(5, TimeUnit.SECONDS));
+
+ assertTrue(heartbeats.size() >= 3);
+ }
+ }
+
+ @Test
+ public void Does_reconnect_on_lost_connection() throws Exception {
+
+ final List connectMsgs = new ArrayList<>();
+ final List msgs1 = new ArrayList<>();
+ try(ServerEventsClient client1 = createServerEventsClient("https://chat.netcore.io")
+ .setOnConnect(new ServerEventConnectCallback() {
+ @Override
+ public void execute(ServerEventConnect e) {
+ connectMsgs.add(e);
+ }
+ })
+ .setOnMessage(new ServerEventMessageCallback() {
+ @Override
+ public void execute(ServerEventMessage e) {
+ msgs1.add(e);
+ }
+ })
+ .start()) {
+
+ while (connectMsgs.size() < 1){
+ Thread.sleep(100);
+ }
+
+ postChat(client1, "msg1 from client1");
+
+ while (msgs1.size() < 1){
+ Thread.sleep(100);
+ }
+
+ client1.getServiceClient().post(new ResetServerEvents());
+
+ try(ServerEventsClient client2 = createServerEventsClient("https://chat.netcore.io")
+ .setOnConnect(new ServerEventConnectCallback() {
+ @Override
+ public void execute(ServerEventConnect e) {
+ connectMsgs.add(e);
+ }
+ })
+ .start()) {
+
+ while (connectMsgs.size() < 3){ //client1 + client1 reconnect + client2
+ Thread.sleep(100);
+ }
+
+ postChat(client2, "msg2 from client2");
+
+ while (msgs1.size() < 2){ //msg1 + msg2
+ Thread.sleep(100);
+ }
+ }
+
+ ServerEventMessage msg2 = msgs1.get(1);
+
+ ChatMessage chatMsg2 = JsonUtils.fromJson(msg2.getJson(), ChatMessage.class);
+
+ assertEquals("msg2 from client2", chatMsg2.getMessage());
+ }
+ }
+
+ @Test
+ public void Does_send_message_to_Handler() throws Exception {
+
+ final List chatMsgs = new ArrayList<>();
+
+ try(ServerEventsClient client1 = createServerEventsClient("https://chat.netcore.io")
+ .registerHandler("chat", new ServerEventCallback() {
+ @Override
+ public void execute(ServerEventsClient client, ServerEventMessage e) {
+ ChatMessage chatMsg = JsonUtils.fromJson(e.getJson(), ChatMessage.class);
+ chatMsgs.add(chatMsg);
+ }
+ })
+ .start()
+ .waitTillConnected()) {
+
+ postChat(client1, "msg1");
+
+ while (chatMsgs.size() < 1){
+ Thread.sleep(100);
+ }
+
+ ChatMessage chatMsg = Func.last(chatMsgs);
+ assertEquals("msg1", chatMsg.getMessage());
+
+ postChat(client1, "msg2");
+
+ while (chatMsgs.size() < 2){
+ Thread.sleep(100);
+ }
+
+ chatMsg = Func.last(chatMsgs);
+ assertEquals("msg2", chatMsg.getMessage());
+ }
+ }
+
+ @Test
+ public void Does_send_message_to_named_receiver() throws Exception {
+ final List msgs1 = new ArrayList<>();
+
+ try(ServerEventsClient client1 = createServerEventsClient("https://chat.netcore.io")
+ .registerNamedReceiver("test", TestNamedReceiver.class)
+ .setOnMessage(new ServerEventMessageCallback() {
+ @Override
+ public void execute(ServerEventMessage e) {
+ msgs1.add(e);
+ }
+ })
+ .start()
+ .waitTillConnected()) {
+
+ postObject(client1, new CustomType()
+ .setId(1)
+ .setName("Foo"), "test.FooMethod");
+
+ while (msgs1.size() < 1){
+ Thread.sleep(100);
+ }
+
+ CustomType foo = TestNamedReceiver.FooMethodReceived;
+ assertNotNull(foo);
+ assertEquals(1, foo.getId().intValue());
+ assertEquals("Foo", foo.getName());
+
+ postObject(client1, new CustomType()
+ .setId(2)
+ .setName("Bar"), "test.BarMethod");
+
+ while (msgs1.size() < 2){
+ Thread.sleep(100);
+ }
+
+ CustomType bar = TestNamedReceiver.BarMethodReceived;
+ assertNotNull(bar);
+ assertEquals(2, bar.getId().intValue());
+ assertEquals("Bar", bar.getName());
+
+ postObject(client1, new CustomType()
+ .setId(3)
+ .setName("Baz"), "test.BazMethod");
+
+ while (msgs1.size() < 3){
+ Thread.sleep(100);
+ }
+
+ CustomType baz = TestNamedReceiver.NoSuchMethodReceived;
+ assertNotNull(baz);
+ assertEquals(3, baz.getId().intValue());
+ assertEquals("Baz", baz.getName());
+ assertEquals("BazMethod", TestNamedReceiver.NoSuchMethodSelector);
+
+ postObject(client1, new CustomType()
+ .setId(4)
+ .setName("Qux"), "test.QuxSetter");
+
+ while (msgs1.size() < 4){
+ Thread.sleep(100);
+ }
+
+ CustomType qux = TestNamedReceiver.QuxSetterReceived;
+ assertNotNull(qux);
+ assertEquals(4, qux.getId().intValue());
+ assertEquals("Qux", qux.getName());
+ }
+ }
+
+ @Test
+ public void Does_send_message_to_global_receiver() throws Exception {
+ final List msgs1 = new ArrayList<>();
+
+ try(ServerEventsClient client1 = createServerEventsClient("https://chat.netcore.io")
+ .registerReceiver(TestGlobalReceiver.class)
+ .setOnMessage(new ServerEventMessageCallback() {
+ @Override
+ public void execute(ServerEventMessage e) {
+ msgs1.add(e);
+ }
+ })
+ .start()
+ .waitTillConnected()) {
+
+ postObject(client1, new CustomType()
+ .setId(1)
+ .setName("Foo"));
+
+ while (msgs1.size() < 1){
+ Thread.sleep(100);
+ }
+
+ CustomType foo = TestGlobalReceiver.CustomTypeReceived;
+ assertNotNull(foo);
+ assertEquals(1, foo.getId().intValue());
+ assertEquals("Foo", foo.getName());
+ }
+ }
+
+ @Test
+ public void Does_set_properties_on_global_receiver() throws Exception {
+ final List msgs1 = new ArrayList<>();
+
+ try(ServerEventsClient client1 = createServerEventsClient("https://chat.netcore.io")
+ .registerReceiver(TestGlobalReceiver.class)
+ .setOnMessage(new ServerEventMessageCallback() {
+ @Override
+ public void execute(ServerEventMessage e) {
+ msgs1.add(e);
+ }
+ })
+ .start()
+ .waitTillConnected()) {
+
+ postObject(client1, new SetterType()
+ .setId(1)
+ .setName("Foo"));
+
+ while (msgs1.size() < 1){
+ Thread.sleep(100);
+ }
+
+ SetterType foo = TestGlobalReceiver.SetterTypeReceived;
+ assertNotNull(foo);
+ assertEquals(1, foo.getId().intValue());
+ assertEquals("Foo", foo.getName());
+ }
+ }
+
+ @Test
+ public void Does_send_raw_string_messages() throws Exception {
+ final List msgs1 = new ArrayList<>();
+
+ try(ServerEventsClient client1 = createServerEventsClient("https://chat.netcore.io")
+ .registerReceiver(TestJavaScriptReceiver.class)
+ .registerNamedReceiver("css", TestJavaScriptReceiver.class)
+ .setOnMessage(new ServerEventMessageCallback() {
+ @Override
+ public void execute(ServerEventMessage e) {
+ msgs1.add(e);
+ }
+ })
+ .start()
+ .waitTillConnected()) {
+
+ postChat(client1, "chat msg");
+
+ while (msgs1.size() < 1) {
+ Thread.sleep(100);
+ }
+
+ ChatMessage chatMsg = TestJavaScriptReceiver.ChatReceived;
+ assertNotNull(chatMsg);
+ assertEquals("chat msg", chatMsg.getMessage());
+
+ postRaw(client1, "cmd.announce", "This is your captain speaking...");
+
+ while (msgs1.size() < 2) {
+ Thread.sleep(100);
+ }
+
+ String announce = TestJavaScriptReceiver.AnnounceReceived;
+ assertEquals("This is your captain speaking...", announce);
+
+ postRaw(client1, "cmd.toggle$#channels", null);
+
+ while (msgs1.size() < 3) {
+ Thread.sleep(100);
+ }
+
+ String toggle = TestJavaScriptReceiver.ToggleReceived;
+ assertEquals("", toggle);
+ ServerEventMessage toggleRequest = TestJavaScriptReceiver.ToggleRequestReceived;
+ assertEquals("cmd.toggle$#channels", toggleRequest.getSelector());
+ assertEquals("cmd", toggleRequest.getOp());
+ assertEquals("toggle", toggleRequest.getTarget());
+ assertEquals("#channels", toggleRequest.getCssSelector());
+
+ postRaw(client1, "css.background-image$#top", "url(http://bit.ly/1yIJOBH)");
+
+ while (msgs1.size() < 4) {
+ Thread.sleep(100);
+ }
+
+ String bgImage = TestJavaScriptReceiver.BackgroundImageReceived;
+ assertEquals("url(http://bit.ly/1yIJOBH)", bgImage);
+ ServerEventMessage bgImageRequest = TestJavaScriptReceiver.BackgroundImageRequestReceived;
+ assertEquals("css.background-image$#top", bgImageRequest.getSelector());
+ assertEquals("css", bgImageRequest.getOp());
+ assertEquals("background-image", bgImageRequest.getTarget());
+ assertEquals("#top", bgImageRequest.getCssSelector());
+ }
+ }
+
+ @Test
+ public void Can_reuse_same_instance() throws Exception {
+ final List msgs1 = new ArrayList<>();
+
+ try(ServerEventsClient client1 = createServerEventsClient("https://chat.netcore.io")
+ .registerReceiver(TestJavaScriptReceiver.class)
+ .registerNamedReceiver("css", TestJavaScriptReceiver.class)
+ .setResolver(new SingletonInstanceResolver())
+ .setOnMessage(new ServerEventMessageCallback() {
+ @Override
+ public void execute(ServerEventMessage e) {
+ msgs1.add(e);
+ }
+ })
+ .start()
+ .waitTillConnected()) {
+
+ postRaw(client1, "cmd.announce", "This is your captain speaking...");
+
+ while (msgs1.size() < 1) {
+ Thread.sleep(100);
+ }
+
+ TestJavaScriptReceiver instance = (TestJavaScriptReceiver)client1.getResolver().TryResolve(TestJavaScriptReceiver.class);
+ assertEquals("This is your captain speaking...", instance.AnnounceInstance);
+
+ postRaw(client1, "cmd.announce", "2nd Announcement");
+
+ while (msgs1.size() < 2) {
+ Thread.sleep(100);
+ }
+
+ assertEquals("2nd Announcement", instance.AnnounceInstance);
+ }
+ }
+
+ public void Can_use_IOC_to_autowire_Receivers(){
+ //No built-in IOC
+ }
+
+ @Test
+ public void Does_receive_messages_on_to_clients_subscribed_on_multiple_channels() throws Exception {
+
+ final List msgsA = new ArrayList<>();
+ final List msgsAB = new ArrayList<>();
+ final List msgsABC = new ArrayList<>();
+ final List msgsABCD = new ArrayList<>();
+
+ try(ServerEventsClient clientA = createServerEventsClient("https://chat.netcore.io", "A")
+ .setOnMessage(new ServerEventMessageCallback() {
+ @Override
+ public void execute(ServerEventMessage e) {
+ msgsA.add(e);
+ }
+ })
+ .start();
+ ServerEventsClient clientAB = createServerEventsClient("https://chat.netcore.io", "A", "B")
+ .setOnMessage(new ServerEventMessageCallback() {
+ @Override
+ public void execute(ServerEventMessage e) {
+ msgsAB.add(e);
+ }
+ })
+ .start();
+ ServerEventsClient clientABC = createServerEventsClient("https://chat.netcore.io", "A", "B", "C")
+ .setOnMessage(new ServerEventMessageCallback() {
+ @Override
+ public void execute(ServerEventMessage e) {
+ msgsABC.add(e);
+ }
+ })
+ .start();
+ ServerEventsClient clientABCD = createServerEventsClient("https://chat.netcore.io", "A", "B", "C", "D")
+ .setOnMessage(new ServerEventMessageCallback() {
+ @Override
+ public void execute(ServerEventMessage e) {
+ msgsABCD.add(e);
+ }
+ })
+ .start()) {
+
+ clientA.waitTillConnected();
+ clientAB.waitTillConnected();
+ clientABC.waitTillConnected();
+ clientABCD.waitTillConnected();
+
+ List channelAsubscribers = clientA.getChannelSubscribers();
+ assertEquals(4, channelAsubscribers.size());
+
+ List channelABsubscribers = clientAB.getChannelSubscribers();
+ assertEquals(4, channelABsubscribers.size());
+
+ System.out.println("Publishing Msg Batch #1 ...");
+ postChat(clientA, "#1 hello to A", "A");
+ postChat(clientA, "#2 hello to B", "B");
+ postChat(clientA, "#3 hello to C", "C");
+ postChat(clientA, "#4 hello to D", "D");
+
+ Thread.sleep(1000);
+
+ assertEquals(1, msgsA.size());
+ assertEquals(2, msgsAB.size());
+ assertEquals(3, msgsABC.size());
+ assertEquals(4, msgsABCD.size());
+
+ System.out.println("Publishing Msg Batch #2 ...");
+ postChat(clientA, "#5 hello to A", "A");
+ postChat(clientA, "#6 hello to B", "B");
+ postChat(clientA, "#7 hello to C", "C");
+ postChat(clientA, "#8 hello to D", "D");
+
+ Thread.sleep(1000);
+
+ assertEquals(2, msgsA.size());
+ assertEquals(4, msgsAB.size());
+ assertEquals(6, msgsABC.size());
+ assertEquals(8, msgsABCD.size());
+ }
+ }
+
+ @Test
+ public void Does_receive_all_join_and_leave_messages() throws Exception {
+ final List joinA = new ArrayList<>();
+ final List joinB = new ArrayList<>();
+ final List joinAB = new ArrayList<>();
+
+ final List leaveA = new ArrayList<>();
+ final List leaveB = new ArrayList<>();
+ final List leaveAB = new ArrayList<>();
+
+ try(ServerEventsClient clientA = createServerEventsClient("https://chat.netcore.io", "A")
+ .setOnCommand(new ServerEventMessageCallback() {
+ @Override
+ public void execute(ServerEventMessage e) {
+ if (e instanceof ServerEventJoin) {
+ joinA.add((ServerEventJoin) e);
+ } else if (e instanceof ServerEventLeave) {
+ leaveA.add((ServerEventLeave) e);
+ }
+ }
+ });
+ ServerEventsClient clientB = createServerEventsClient("https://chat.netcore.io", "B")
+ .setOnCommand(new ServerEventMessageCallback() {
+ @Override
+ public void execute(ServerEventMessage e) {
+ if (e instanceof ServerEventJoin) {
+ joinB.add((ServerEventJoin) e);
+ } else if (e instanceof ServerEventLeave) {
+ leaveB.add((ServerEventLeave) e);
+ }
+ }
+ });
+ ServerEventsClient clientAB = createServerEventsClient("https://chat.netcore.io", "A", "B")
+ .setOnCommand(new ServerEventMessageCallback() {
+ @Override
+ public void execute(ServerEventMessage e) {
+ if (e instanceof ServerEventJoin) {
+ joinAB.add((ServerEventJoin) e);
+ } else if (e instanceof ServerEventLeave) {
+ leaveAB.add((ServerEventLeave) e);
+ }
+ }
+ });
+ ){
+
+ clientA.start().waitTillConnected();
+ clientB.start().waitTillConnected();
+ clientAB.start().waitTillConnected();
+
+ while (joinA.size() < 2 || joinB.size() < 2 || joinAB.size() < 2){
+ Thread.sleep(100);
+ }
+
+ assertEquals(2, joinA.size()); //A + [(A) B]
+ assertEquals(2, joinB.size()); //B + [A (B)]
+ assertEquals(2, joinAB.size()); //[(A) B] + [A (B)]
+
+ List channelAsubscribers = clientA.getChannelSubscribers();
+ assertEquals(2, channelAsubscribers.size());
+
+ List channelBsubscribers = clientB.getChannelSubscribers();
+ assertEquals(2, channelBsubscribers.size());
+
+ List channelABsubscribers = clientAB.getChannelSubscribers();
+ assertEquals(3, channelABsubscribers.size());
+
+ ArrayList> usersA = clientA.getServiceClient().get(new GetEventSubscribers()
+ .setChannels(Func.toList("A")));
+ ArrayList> usersB = clientA.getServiceClient().get(new GetEventSubscribers()
+ .setChannels(Func.toList("B")));
+ ArrayList> usersAB = clientA.getServiceClient().get(new GetEventSubscribers()
+ .setChannels(Func.toList("A", "B")));
+
+ assertEquals(2, usersA.size());
+ assertEquals(2, usersB.size());
+ assertEquals(3, usersAB.size());
+
+ clientAB.stop();
+
+ Thread.sleep(100);
+
+ clientB.stop();
+ clientA.stop();
+
+ Thread.sleep(100);
+
+ assertEquals(1, leaveA.size());
+ assertEquals(1, leaveB.size());
+ assertEquals(0, leaveAB.size());
+ }
+ }
+
+ @Test
+ public void MultiChannel_Does_receive_all_join_and_leave_messages() throws Exception {
+ final List joinA = new ArrayList<>();
+ final List joinB = new ArrayList<>();
+ final List joinAB = new ArrayList<>();
+
+ final List leaveA = new ArrayList<>();
+ final List leaveB = new ArrayList<>();
+ final List leaveAB = new ArrayList<>();
+
+ try(ServerEventsClient clientAB = createServerEventsClient("https://chat.netcore.io", "A", "B")
+ .setOnCommand(new ServerEventMessageCallback() {
+ @Override
+ public void execute(ServerEventMessage e) {
+ if (e instanceof ServerEventJoin) {
+ joinAB.add((ServerEventJoin) e);
+ } else if (e instanceof ServerEventLeave) {
+ leaveAB.add((ServerEventLeave) e);
+ }
+ }
+ });
+ ServerEventsClient clientA = createServerEventsClient("https://chat.netcore.io", "A")
+ .setOnCommand(new ServerEventMessageCallback() {
+ @Override
+ public void execute(ServerEventMessage e) {
+ if (e instanceof ServerEventJoin) {
+ joinA.add((ServerEventJoin) e);
+ } else if (e instanceof ServerEventLeave) {
+ leaveA.add((ServerEventLeave) e);
+ }
+ }
+ });
+ ServerEventsClient clientB = createServerEventsClient("https://chat.netcore.io", "B")
+ .setOnCommand(new ServerEventMessageCallback() {
+ @Override
+ public void execute(ServerEventMessage e) {
+ if (e instanceof ServerEventJoin) {
+ joinB.add((ServerEventJoin) e);
+ } else if (e instanceof ServerEventLeave) {
+ leaveB.add((ServerEventLeave) e);
+ }
+ }
+ });
+ ){
+
+ clientAB.start().waitTillConnected();
+ clientA.start().waitTillConnected();
+ clientB.start().waitTillConnected();
+
+ while (joinAB.size() < 4 //[(A) B] + [A (B)] + A + B
+ || joinA.size() < 1 || joinB.size() < 1) {
+ Thread.sleep(100);
+ }
+
+ clientA.stop();
+ clientB.stop();
+
+ Thread.sleep(100);
+
+ clientAB.stop();
+
+ assertEquals(2, leaveAB.size());
+ assertEquals(0, leaveA.size());
+ assertEquals(0, leaveB.size());
+ }
+ }
+
+ @Test
+ public void Can_subscribe_to_channels_whilst_connected() throws Exception {
+ final List msgs1 = new ArrayList<>();
+ final List msgs2 = new ArrayList<>();
+
+ try(ServerEventsClient client1 = createServerEventsClient("https://chat.netcore.io", "A")
+ .setOnMessage(new ServerEventMessageCallback() {
+ @Override
+ public void execute(ServerEventMessage e) {
+ msgs1.add(e);
+ }
+ })
+ .start();
+ ServerEventsClient client2 = createServerEventsClient("https://chat.netcore.io", "B")
+ .setOnMessage(new ServerEventMessageCallback() {
+ @Override
+ public void execute(ServerEventMessage e) {
+ msgs2.add(e);
+ }
+ })
+ .start()) {
+
+ client1.waitTillConnected();
+ client2.waitTillConnected();
+
+ assertArrayEquals(new String[]{"A"}, client1.getChannels());
+
+ postChat(client2, "#1 hello to B", "B");
+
+ Thread.sleep(500);
+
+ assertEquals(0, msgs1.size());
+ assertEquals(1, msgs2.size());
+
+ client1.subscribeToChannels("B");
+
+ Thread.sleep(500);
+
+ postChat(client2, "#2 hello to B", "B");
+ postChat(client2, "#3 hello to C", "C");
+ Thread.sleep(500);
+
+ assertArrayEquals(new String[]{"A", "B"}, client1.getChannels());
+ assertArrayEquals(new String[]{"B"}, client2.getChannels());
+
+ assertTrue(client1.getEventStreamUri().endsWith("?channels=A,B"));
+ assertTrue(client2.getEventStreamUri().endsWith("?channels=B"));
+
+ client1.subscribeToChannels("C");
+ client2.subscribeToChannels("C");
+ Thread.sleep(500);
+
+ postChat(client2, "#4 hello to C", "C");
+ Thread.sleep(500);
+
+ assertArrayEquals(new String[]{"A", "B", "C"}, client1.getChannels());
+ assertArrayEquals(new String[]{"B", "C"}, client2.getChannels());
+
+ assertTrue(client1.getEventStreamUri().endsWith("?channels=A,B,C"));
+ assertTrue(client2.getEventStreamUri().endsWith("?channels=B,C"));
+ }
+ }
+
+ @Test
+ public void Can_unsubscribe_from_channels_whilst_connected() throws Exception {
+ final List msgs1 = new ArrayList<>();
+ final List msgs2 = new ArrayList<>();
+
+ try(ServerEventsClient client1 = createServerEventsClient("https://chat.netcore.io", "A","B","C")
+ .setOnMessage(new ServerEventMessageCallback() {
+ @Override
+ public void execute(ServerEventMessage e) {
+ msgs1.add(e);
+ }
+ })
+ .start()
+ .waitTillConnected();
+ ServerEventsClient client2 = createServerEventsClient("https://chat.netcore.io", "B","C")
+ .setOnMessage(new ServerEventMessageCallback() {
+ @Override
+ public void execute(ServerEventMessage e) {
+ msgs2.add(e);
+ }
+ })
+ .start()
+ .waitTillConnected()) {
+
+ assertArrayEquals(new String[]{"A","B","C"}, client1.getChannels());
+
+ postChat(client2, "#1 hello to B", "B");
+ Thread.sleep(500);
+
+ assertEquals(1, msgs1.size());
+ assertEquals(1, msgs2.size());
+
+ client1.unSubscribeFromChannels("B");
+ Thread.sleep(500);
+
+ postChat(client2, "#2 hello to B", "B");
+ postChat(client2, "#3 hello to C", "C");
+ Thread.sleep(500);
+
+ assertEquals(2, msgs1.size());
+ assertEquals(3, msgs2.size());
+
+ assertArrayEquals(new String[]{"A", "C"}, client1.getChannels());
+ assertArrayEquals(new String[]{"B", "C"}, client2.getChannels());
+
+ assertTrue(client1.getEventStreamUri().endsWith("?channels=A,C"));
+ assertTrue(client2.getEventStreamUri().endsWith("?channels=B,C"));
+
+ client1.unSubscribeFromChannels("C");
+ client2.unSubscribeFromChannels("C");
+ Thread.sleep(500);
+
+ postChat(client2, "#4 hello to C", "C");
+ Thread.sleep(500);
+
+ assertArrayEquals(new String[]{"A"}, client1.getChannels());
+ assertArrayEquals(new String[]{"B"}, client2.getChannels());
+
+ assertTrue(client1.getEventStreamUri().endsWith("?channels=A"));
+ assertTrue(client2.getEventStreamUri().endsWith("?channels=B"));
+ }
+ }
+
+ @Test
+ public void test_Does_fire_multiple_listeners_for_custom_trigger() throws Exception {
+ final List msgs1 = new ArrayList<>();
+ final List msgs2 = new ArrayList<>();
+
+ Action handler = new Action() {
+ @Override
+ public void apply(ServerEventMessage e) {
+ msgs1.add(e);
+ }
+ };
+
+ try (ServerEventsClient client1 = createServerEventsClient("https://chat.netcore.io")
+ .addListener("customEvent", handler)
+ .addListener("customEvent", new Action() {
+ @Override
+ public void apply(ServerEventMessage e) {
+ msgs2.add(e);
+ }
+ })
+ .start()
+ .waitTillConnected();
+ ServerEventsClient client2 = createServerEventsClient("https://chat.netcore.io")
+ .start()
+ .waitTillConnected()) {
+
+ postRaw(client2, "trigger.customEvent", "arg");
+
+ while (msgs1.size() < 1 || msgs2.size() < 1) {
+ Thread.sleep(100);
+ }
+
+ assertEquals(1, msgs1.size());
+ assertEquals(1, msgs2.size());
+
+ client1.removeListener("customEvent", handler);
+
+ postRaw(client2, "trigger.customEvent", "arg");
+
+ while (msgs1.size() < 1 || msgs2.size() < 2) {
+ Thread.sleep(100);
+ }
+
+ assertEquals(1, msgs1.size());
+ assertEquals(2, msgs2.size());
+
+ assertTrue(Func.all(Func.concat(msgs1, msgs2), new Predicate() {
+ @Override
+ public boolean apply(ServerEventMessage msg) {
+ return "arg".equals(JsonUtils.fromJson(msg.getJson(), String.class));
+ }
+ }));
+ }
+ }}
diff --git a/src/AndroidClient/android/src/androidTest/java/net/servicestack/android/TestGlobalReceiver.java b/src/AndroidClient/android/src/androidTest/java/net/servicestack/android/TestGlobalReceiver.java
new file mode 100644
index 00000000..26796172
--- /dev/null
+++ b/src/AndroidClient/android/src/androidTest/java/net/servicestack/android/TestGlobalReceiver.java
@@ -0,0 +1,34 @@
+package net.servicestack.android;
+
+import static net.servicestack.android.test.dtos.*;
+import net.servicestack.client.JsonUtils;
+import net.servicestack.client.sse.ServerEventMessage;
+import net.servicestack.client.sse.ServerEventReceiver;
+
+/**
+ * Created by mythz on 2/12/2017.
+ */
+
+public class TestGlobalReceiver extends ServerEventReceiver {
+ public static CustomType CustomTypeReceived;
+ public static CustomType NoSuchMethodReceived;
+ public static String NoSuchMethodSelector;
+ public static SetterType SetterTypeReceived;
+
+ public void setterType(SetterType value) {
+ SetterTypeReceived = value;
+ }
+
+ public void customType(CustomType request)
+ {
+ CustomTypeReceived = request;
+ }
+
+ @Override
+ public void noSuchMethod(String selector, Object message)
+ {
+ ServerEventMessage msg = (ServerEventMessage)message;
+ NoSuchMethodReceived = JsonUtils.fromJson(msg.getJson(), CustomType.class);
+ NoSuchMethodSelector = selector;
+ }
+}
diff --git a/src/AndroidClient/android/src/androidTest/java/net/servicestack/android/TestJavaScriptReceiver.java b/src/AndroidClient/android/src/androidTest/java/net/servicestack/android/TestJavaScriptReceiver.java
new file mode 100644
index 00000000..85f239ea
--- /dev/null
+++ b/src/AndroidClient/android/src/androidTest/java/net/servicestack/android/TestJavaScriptReceiver.java
@@ -0,0 +1,42 @@
+package net.servicestack.android;
+
+import static net.servicestack.android.test.dtos.*;
+import net.servicestack.client.sse.ServerEventMessage;
+import net.servicestack.client.sse.ServerEventReceiver;
+
+/**
+ * Created by mythz on 2/12/2017.
+ */
+
+public class TestJavaScriptReceiver extends ServerEventReceiver {
+ public static ChatMessage ChatReceived;
+ public static String AnnounceReceived;
+ public String AnnounceInstance;
+ public static String ToggleReceived;
+ public static ServerEventMessage ToggleRequestReceived;
+ public static String BackgroundImageReceived;
+ public static ServerEventMessage BackgroundImageRequestReceived;
+
+ public void chat(ChatMessage message)
+ {
+ ChatReceived = message;
+ }
+
+ public void announce(String message)
+ {
+ AnnounceReceived = message;
+ AnnounceInstance = message;
+ }
+
+ public void toggle(String message)
+ {
+ ToggleReceived = message;
+ ToggleRequestReceived = super.getRequest();
+ }
+
+ public void backgroundImage(String cssRule)
+ {
+ BackgroundImageReceived = cssRule;
+ BackgroundImageRequestReceived = super.getRequest();
+ }
+}
diff --git a/src/AndroidClient/android/src/androidTest/java/net/servicestack/android/TestNamedReceiver.java b/src/AndroidClient/android/src/androidTest/java/net/servicestack/android/TestNamedReceiver.java
new file mode 100644
index 00000000..e2074d9e
--- /dev/null
+++ b/src/AndroidClient/android/src/androidTest/java/net/servicestack/android/TestNamedReceiver.java
@@ -0,0 +1,40 @@
+package net.servicestack.android;
+
+import static net.servicestack.android.test.dtos.*;
+import net.servicestack.client.JsonUtils;
+import net.servicestack.client.sse.ServerEventMessage;
+import net.servicestack.client.sse.ServerEventReceiver;
+
+
+/**
+ * Created by mythz on 2/11/2017.
+ */
+
+public class TestNamedReceiver extends ServerEventReceiver {
+
+ public static CustomType FooMethodReceived;
+ public static CustomType BarMethodReceived;
+ public static CustomType NoSuchMethodReceived;
+ public static String NoSuchMethodSelector;
+ public static CustomType QuxSetterReceived;
+
+ public void setQuxSetter(CustomType value){
+ QuxSetterReceived = value;
+ }
+
+ public void fooMethod(CustomType request) {
+ FooMethodReceived = request;
+ }
+
+ public CustomType barMethod(CustomType request) {
+ BarMethodReceived = request;
+ return request;
+ }
+
+ @Override
+ public void noSuchMethod(String selector, Object message) {
+ ServerEventMessage msg = (ServerEventMessage)message;
+ NoSuchMethodReceived = JsonUtils.fromJson(msg.getJson(), CustomType.class);
+ NoSuchMethodSelector = selector;
+ }
+}
diff --git a/src/AndroidClient/android/src/androidTest/java/net/servicestack/android/checkweb/GsonTests.java b/src/AndroidClient/android/src/androidTest/java/net/servicestack/android/checkweb/GsonTests.java
index 305abbf4..628a650b 100644
--- a/src/AndroidClient/android/src/androidTest/java/net/servicestack/android/checkweb/GsonTests.java
+++ b/src/AndroidClient/android/src/androidTest/java/net/servicestack/android/checkweb/GsonTests.java
@@ -1,4 +1,4 @@
-// Copyright (c) 2015 ServiceStack LLC. All rights reserved.
+// Copyright (c) 2013-present ServiceStack, Inc. All rights reserved.
package net.servicestack.android.checkweb;
diff --git a/src/AndroidClient/android/src/androidTest/java/net/servicestack/android/techstacks/TechStacksServiceTests.java b/src/AndroidClient/android/src/androidTest/java/net/servicestack/android/techstacks/TechStacksServiceTests.java
index 6e0d4c1f..0a067992 100644
--- a/src/AndroidClient/android/src/androidTest/java/net/servicestack/android/techstacks/TechStacksServiceTests.java
+++ b/src/AndroidClient/android/src/androidTest/java/net/servicestack/android/techstacks/TechStacksServiceTests.java
@@ -1,25 +1,46 @@
package net.servicestack.android.techstacks;
+import android.support.test.runner.AndroidJUnit4;
+
import junit.framework.TestCase;
import net.servicestack.client.JsonServiceClient;
import net.servicestack.client.Utils;
import net.servicestack.client.WebServiceException;
-import java.io.FileInputStream;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
-import static net.servicestack.android.techstacks.dtos.*;
-
+import static net.servicestack.android.techstacks.dtos.AppOverview;
+import static net.servicestack.android.techstacks.dtos.AppOverviewResponse;
+import static net.servicestack.android.techstacks.dtos.FindTechnologies;
+import static net.servicestack.android.techstacks.dtos.GetTechnology;
+import static net.servicestack.android.techstacks.dtos.GetTechnologyResponse;
+import static net.servicestack.android.techstacks.dtos.LockStackResponse;
+import static net.servicestack.android.techstacks.dtos.LockTechStack;
+import static net.servicestack.android.techstacks.dtos.Option;
+import static net.servicestack.android.techstacks.dtos.Overview;
+import static net.servicestack.android.techstacks.dtos.OverviewResponse;
+import static net.servicestack.android.techstacks.dtos.QueryResponse;
+import static net.servicestack.android.techstacks.dtos.TechStackDetails;
+import static net.servicestack.android.techstacks.dtos.Technology;
+import static net.servicestack.android.techstacks.dtos.TechnologyInStack;
+import static net.servicestack.android.techstacks.dtos.TechnologyInfo;
+import static net.servicestack.android.techstacks.dtos.TechnologyTier;
+
+@RunWith(AndroidJUnit4.class)
public class TechStacksServiceTests extends TestCase {
public TechStacksServiceTests() {
}
- JsonServiceClient client = new JsonServiceClient("http://techstacks.io");
+ JsonServiceClient client = new JsonServiceClient("https://techstacks.io");
+ @Test
public void test_Can_GET_TechStacks_Overview(){
OverviewResponse response = client.get(new Overview());
@@ -28,6 +49,7 @@ public void test_Can_GET_TechStacks_Overview(){
assertOverviewResponse(response);
}
+ @Test
public void test_Can_GET_TechStacks_AppOverview(){
AppOverviewResponse r = client.get(new AppOverview());
assertNotNull(r);
@@ -35,16 +57,19 @@ public void test_Can_GET_TechStacks_AppOverview(){
assertTrue(r.getAllTiers().size() > 0);
}
+ @Test
public void test_Can_GET_TechStacks_Overview_with_relative_url() {
OverviewResponse response = client.get("/overview", OverviewResponse.class);
assertOverviewResponse(response);
}
+ @Test
public void test_Can_GET_TechStacks_Overview_with_absolute_url() {
- OverviewResponse response = client.get("http://techstacks.io/overview", OverviewResponse.class);
+ OverviewResponse response = client.get("https://techstacks.io/overview", OverviewResponse.class);
assertOverviewResponse(response);
}
+ @Test
public void test_Can_GET_GetTechnology_with_params() {
GetTechnology requestDto = new GetTechnology()
.setSlug("servicestack");
@@ -53,11 +78,13 @@ public void test_Can_GET_GetTechnology_with_params() {
assertGetTechnologyResponse(response);
}
+ @Test
public void test_Can_GET_GetTechnology_with_url() {
GetTechnologyResponse response = client.get("/technology/servicestack", GetTechnologyResponse.class);
assertGetTechnologyResponse(response);
}
+ @Test
public void test_Can_call_FindTechnologies_AutoQuery_Service() {
FindTechnologies request = new FindTechnologies()
.setName("ServiceStack");
@@ -67,6 +94,7 @@ public void test_Can_call_FindTechnologies_AutoQuery_Service() {
assertEquals(1, response.getResults().size());
}
+ @Test
public void test_Can_call_FindTechnologies_AutoQuery_Implicit_Service() {
FindTechnologies request = (FindTechnologies) new FindTechnologies()
.setTake(5);
@@ -77,6 +105,7 @@ public void test_Can_call_FindTechnologies_AutoQuery_Implicit_Service() {
assertEquals(5, response.getResults().size());
}
+ @Test
public void test_Can_serialize_Empty_Option() {
Option dto = new Option();
@@ -85,6 +114,7 @@ public void test_Can_serialize_Empty_Option() {
assertEquals("{}", json);
}
+ @Test
public void test_Can_deserialize_Empty_Option() {
String json = "{\"name\":null,\"title\":null,\"value\":null}";
@@ -95,6 +125,7 @@ public void test_Can_deserialize_Empty_Option() {
assertNull(dto.getValue());
}
+ @Test
public void test_Can_serialize_Full_Option() {
Option dto = new Option()
.setName("name")
@@ -106,6 +137,7 @@ public void test_Can_serialize_Full_Option() {
assertEquals("{\"name\":\"name\",\"title\":\"title\",\"value\":\"ProgrammingLanguage\"}", json);
}
+ @Test
public void test_Can_deserialize_Full_Option() {
String json = "{\"name\":\"name\",\"title\":\"title\",\"value\":\"ProgrammingLanguage\"}";
@@ -116,8 +148,9 @@ public void test_Can_deserialize_Full_Option() {
assertEquals(TechnologyTier.ProgrammingLanguage, dto.getValue());
}
+ @Test
public void test_does_handle_auth_failure() {
- JsonServiceClient techStacksClient = new JsonServiceClient("http://techstacks.io/");
+ JsonServiceClient techStacksClient = new JsonServiceClient("https://techstacks.io/");
int errorCode = 0;
try {
LockTechStack request = new LockTechStack();
@@ -131,8 +164,12 @@ public void test_does_handle_auth_failure() {
assertEquals(errorCode, 401);
}
+ @Test
public void test_Can_deserialize_Overview() throws IOException {
- InputStream stream = this.getClass().getClassLoader().getResourceAsStream("assets/overview.json");
+ if ("1".equals("1"))
+ return; //Ignore until we work out how to add resources to android test only
+
+ InputStream stream = this.getClass().getClassLoader().getResourceAsStream("overview.json");
String json = Utils.readToEnd(stream, "UTF-8");
OverviewResponse dto = (OverviewResponse)client.fromJson(json, OverviewResponse.class);
@@ -159,17 +196,17 @@ public void test_Can_deserialize_Overview() throws IOException {
assertEquals(1, (long)techstacks.getId());
assertEquals("TechStacks Website", techstacks.getName());
assertEquals("ServiceStack", techstacks.getVendorName());
- assertTrue(techstacks.Description.startsWith("This Website! "));
- assertEquals("http://techstacks.io", techstacks.getAppUrl());
+ assertTrue(techstacks.description.startsWith("This Website! "));
+ assertEquals("https://techstacks.io", techstacks.getAppUrl());
assertEquals("https://raw.githubusercontent.com/ServiceStack/Assets/master/img/livedemos/techstacks/screenshots/techstacks.png", techstacks.getScreenshotUrl());
- assertEquals(Utils.parseDate("2015-01-01T17:33:58.9892560"), techstacks.getCreated());
+ assertEquals(Utils.fromDateTime("2015-01-01T17:33:58.9892560"), techstacks.getCreated());
assertEquals("layoric", techstacks.getCreatedBy());
- assertEquals(Utils.parseDate("2015-01-12T23:34:12.4516410"), techstacks.getLastModified());
+ assertEquals(Utils.fromDateTime("2015-01-12T23:34:12.4516410"), techstacks.getLastModified());
assertEquals("layoric", techstacks.getLastModifiedBy());
assertTrue(techstacks.getIsLocked());
assertEquals("2", techstacks.getOwnerId());
assertEquals("techstacks-website", techstacks.getSlug());
- assertEquals(Utils.parseDate("2015-01-12T23:34:12.4516410"), techstacks.getLastStatusUpdate());
+ assertEquals(Utils.fromDateTime("2015-01-12T23:34:12.4516410"), techstacks.getLastStatusUpdate());
ArrayList techstackChoices = techstacks.getTechnologyChoices();
assertEquals(10, techstackChoices.size());
@@ -182,9 +219,9 @@ public void test_Can_deserialize_Overview() throws IOException {
assertEquals("https://servicestack.net", techChoice.getVendorUrl());
assertEquals("https://servicestack.net", techChoice.getProductUrl());
assertEquals("https://raw.githubusercontent.com/ServiceStack/Assets/master/img/livedemos/techstacks/servicestack-logo.png", techChoice.getLogoUrl());
- assertEquals(Utils.parseDate("2014-12-28T08:49:20.9542550"), techChoice.getCreated());
+ assertEquals(Utils.fromDateTime("2014-12-28T08:49:20.9542550"), techChoice.getCreated());
assertEquals("demisbellot", techChoice.getCreatedBy());
- assertEquals(Utils.parseDate("2014-12-28T08:49:20.9542550"), techChoice.getLastModified());
+ assertEquals(Utils.fromDateTime("2014-12-28T08:49:20.9542550"), techChoice.getLastModified());
assertEquals("demisbellot", techChoice.getLastModifiedBy());
assertEquals("1", techChoice.getOwnerId());
assertEquals("servicestack", techChoice.getSlug());
diff --git a/src/AndroidClient/android/src/androidTest/java/net/servicestack/android/techstacks/TechStacksServiceTestsAsync.java b/src/AndroidClient/android/src/androidTest/java/net/servicestack/android/techstacks/TechStacksServiceTestsAsync.java
index 50bca83c..322b7eb2 100644
--- a/src/AndroidClient/android/src/androidTest/java/net/servicestack/android/techstacks/TechStacksServiceTestsAsync.java
+++ b/src/AndroidClient/android/src/androidTest/java/net/servicestack/android/techstacks/TechStacksServiceTestsAsync.java
@@ -1,7 +1,6 @@
package net.servicestack.android.techstacks;
-import android.app.Application;
-import android.test.ApplicationTestCase;
+import android.support.test.runner.AndroidJUnit4;
import net.servicestack.android.AndroidLogProvider;
import net.servicestack.android.AndroidServiceClient;
@@ -9,19 +8,34 @@
import net.servicestack.client.Log;
import net.servicestack.client.Utils;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
-import static net.servicestack.android.techstacks.dtos.*;
-
-public class TechStacksServiceTestsAsync extends ApplicationTestCase {
+import static junit.framework.TestCase.assertNotNull;
+import static junit.framework.TestCase.assertTrue;
+import static net.servicestack.android.techstacks.dtos.AppOverview;
+import static net.servicestack.android.techstacks.dtos.AppOverviewResponse;
+import static net.servicestack.android.techstacks.dtos.FindTechnologies;
+import static net.servicestack.android.techstacks.dtos.GetTechnology;
+import static net.servicestack.android.techstacks.dtos.GetTechnologyResponse;
+import static net.servicestack.android.techstacks.dtos.Overview;
+import static net.servicestack.android.techstacks.dtos.OverviewResponse;
+import static net.servicestack.android.techstacks.dtos.QueryResponse;
+import static net.servicestack.android.techstacks.dtos.Technology;
+import static org.junit.Assert.assertEquals;
+
+@RunWith(AndroidJUnit4.class)
+public class TechStacksServiceTestsAsync {
public TechStacksServiceTestsAsync() {
- super(Application.class);
Log.Instance = new AndroidLogProvider("ZZZ");
}
- AndroidServiceClient client = new AndroidServiceClient("http://techstacks.io");
+ AndroidServiceClient client = new AndroidServiceClient("https://techstacks.io");
+ @Test
public void test_Can_GET_TechStacks_Overview() throws InterruptedException {
final CountDownLatch signal = new CountDownLatch(1);
@@ -40,6 +54,7 @@ public void complete() {
assertTrue(signal.await(5, TimeUnit.SECONDS));
}
+ @Test
public void test_Can_GET_TechStacks_AppOverview_Async() throws InterruptedException {
final CountDownLatch signal = new CountDownLatch(1);
@@ -60,6 +75,7 @@ public void complete() {
assertTrue(signal.await(5, TimeUnit.SECONDS));
}
+ @Test
public void test_Can_GET_TechStacks_Overview_with_relative_url_Async() throws InterruptedException {
final CountDownLatch signal = new CountDownLatch(1);
@@ -78,10 +94,11 @@ public void complete() {
assertTrue(signal.await(5, TimeUnit.SECONDS));
}
+ @Test
public void test_Can_GET_TechStacks_Overview_with_absolute_url_Async() throws InterruptedException {
final CountDownLatch signal = new CountDownLatch(1);
- client.getAsync("http://techstacks.io/overview", OverviewResponse.class, new AsyncResult() {
+ client.getAsync("https://techstacks.io/overview", OverviewResponse.class, new AsyncResult() {
@Override
public void success(OverviewResponse response) {
assertOverviewResponse(response);
@@ -96,6 +113,7 @@ public void complete() {
assertTrue(signal.await(5, TimeUnit.SECONDS));
}
+ @Test
public void test_Can_GET_GetTechnology_with_params_Async() throws InterruptedException {
GetTechnology requestDto = new GetTechnology()
.setSlug("servicestack");
@@ -117,6 +135,7 @@ public void complete() {
assertTrue(signal.await(5, TimeUnit.SECONDS));
}
+ @Test
public void test_Can_GET_GetTechnology_with_url_Async() throws InterruptedException {
final CountDownLatch signal = new CountDownLatch(1);
@@ -135,6 +154,7 @@ public void complete() {
assertTrue(signal.await(5, TimeUnit.SECONDS));
}
+ @Test
public void test_Can_call_FindTechnologies_AutoQuery_Service_Async() throws InterruptedException {
FindTechnologies request = new FindTechnologies()
.setName("ServiceStack");
@@ -157,6 +177,7 @@ public void complete() {
assertTrue(signal.await(5, TimeUnit.SECONDS));
}
+ @Test
public void test_Can_call_FindTechnologies_AutoQuery_Implicit_Service() throws InterruptedException {
FindTechnologies request = (FindTechnologies) new FindTechnologies()
.setTake(5);
diff --git a/src/AndroidClient/android/src/androidTest/java/net/servicestack/android/techstacks/dtos.java b/src/AndroidClient/android/src/androidTest/java/net/servicestack/android/techstacks/dtos.java
index 68db7b64..35bccedf 100644
--- a/src/AndroidClient/android/src/androidTest/java/net/servicestack/android/techstacks/dtos.java
+++ b/src/AndroidClient/android/src/androidTest/java/net/servicestack/android/techstacks/dtos.java
@@ -1,1042 +1,1219 @@
/* Options:
-Date: 2015-04-10 12:38:16
-Version: 1
-BaseUrl: http://techstacks.io
+Date: 2021-03-01 09:48:32
+Version: 5.105
+Tip: To override a DTO option, remove "//" prefix before updating
+BaseUrl: https://techstacks.io
-Package: io.techstacks
-//GlobalNamespace: dto
+Package: net.servicestack.android.techstacks
+//GlobalNamespace: dtos
//AddPropertyAccessors: True
//SettersReturnThis: True
//AddServiceStackTypes: True
//AddResponseStatus: False
+//AddDescriptionAsComments: True
//AddImplicitVersion:
//IncludeTypes:
//ExcludeTypes:
+//TreatTypesAsStrings:
//DefaultImports: java.math.*,java.util.*,net.servicestack.client.*,com.google.gson.annotations.*,com.google.gson.reflect.*
*/
package net.servicestack.android.techstacks;
-import com.google.gson.annotations.SerializedName;
-import com.google.gson.reflect.TypeToken;
-
-import net.servicestack.client.AutoQueryViewer;
-import net.servicestack.client.DataContract;
-import net.servicestack.client.DataMember;
-import net.servicestack.client.IReturn;
-import net.servicestack.client.ResponseStatus;
-import net.servicestack.client.Route;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
+import java.math.*;
+import java.util.*;
+import net.servicestack.client.*;
+import com.google.gson.annotations.*;
+import com.google.gson.reflect.*;
public class dtos
{
- public static class Technology extends TechnologyBase
+ @Route("/ping")
+ public static class Ping
{
}
- public static enum TechnologyTier
+ public static class DummyTypes
{
- ProgrammingLanguage,
- Client,
- Http,
- Server,
- Data,
- SoftwareInfrastructure,
- OperatingSystem,
- HardwareInfrastructure,
- ThirdPartyServices;
+ public ArrayList post = null;
+
+ public ArrayList getPost() { return post; }
+ public DummyTypes setPost(ArrayList value) { this.post = value; return this; }
}
- public static class TechnologyStack extends TechnologyStackBase
+ @Route(Path="/orgs/{Id}", Verbs="GET")
+ public static class GetOrganization implements IReturn, IGet
{
+ public Integer id = null;
+ public Integer getId() { return id; }
+ public GetOrganization setId(Integer value) { this.id = value; return this; }
+ private static Object responseType = GetOrganizationResponse.class;
+ public Object getResponseType() { return responseType; }
}
- public static class TechnologyHistory extends TechnologyBase
+ @Route(Path="/organizations/{Slug}", Verbs="GET")
+ public static class GetOrganizationBySlug implements IReturn, IGet
{
- public Long TechnologyId = null;
- public String Operation = null;
+ public String slug = null;
- public Long getTechnologyId() { return TechnologyId; }
- public TechnologyHistory setTechnologyId(Long value) { this.TechnologyId = value; return this; }
- public String getOperation() { return Operation; }
- public TechnologyHistory setOperation(String value) { this.Operation = value; return this; }
+ public String getSlug() { return slug; }
+ public GetOrganizationBySlug setSlug(String value) { this.slug = value; return this; }
+ private static Object responseType = GetOrganizationResponse.class;
+ public Object getResponseType() { return responseType; }
}
- public static class QueryBase_1 extends QueryBase
+ @Route(Path="/orgs/{Id}/members", Verbs="GET")
+ public static class GetOrganizationMembers implements IReturn, IGet
{
+ public Integer id = null;
+ public Integer getId() { return id; }
+ public GetOrganizationMembers setId(Integer value) { this.id = value; return this; }
+ private static Object responseType = GetOrganizationMembersResponse.class;
+ public Object getResponseType() { return responseType; }
}
- public static class TechStackDetails extends TechnologyStackBase
+ @Route(Path="/orgs/{Id}/admin", Verbs="GET")
+ public static class GetOrganizationAdmin implements IReturn, IGet
{
- public String DetailsHtml = null;
- public ArrayList TechnologyChoices = null;
+ public Integer id = null;
- public String getDetailsHtml() { return DetailsHtml; }
- public TechStackDetails setDetailsHtml(String value) { this.DetailsHtml = value; return this; }
- public ArrayList getTechnologyChoices() { return TechnologyChoices; }
- public TechStackDetails setTechnologyChoices(ArrayList value) { this.TechnologyChoices = value; return this; }
+ public Integer getId() { return id; }
+ public GetOrganizationAdmin setId(Integer value) { this.id = value; return this; }
+ private static Object responseType = GetOrganizationAdminResponse.class;
+ public Object getResponseType() { return responseType; }
}
- public static class TechnologyStackHistory extends TechnologyStackBase
+ @Route(Path="/orgs/posts/new", Verbs="POST")
+ public static class CreateOrganizationForTechnology implements IReturn, IPost
{
- public Long TechnologyStackId = null;
- public String Operation = null;
- public ArrayList TechnologyIds = null;
+ public Long technologyId = null;
+ public Long techStackId = null;
- public Long getTechnologyStackId() { return TechnologyStackId; }
- public TechnologyStackHistory setTechnologyStackId(Long value) { this.TechnologyStackId = value; return this; }
- public String getOperation() { return Operation; }
- public TechnologyStackHistory setOperation(String value) { this.Operation = value; return this; }
- public ArrayList getTechnologyIds() { return TechnologyIds; }
- public TechnologyStackHistory setTechnologyIds(ArrayList value) { this.TechnologyIds = value; return this; }
+ public Long getTechnologyId() { return technologyId; }
+ public CreateOrganizationForTechnology setTechnologyId(Long value) { this.technologyId = value; return this; }
+ public Long getTechStackId() { return techStackId; }
+ public CreateOrganizationForTechnology setTechStackId(Long value) { this.techStackId = value; return this; }
+ private static Object responseType = CreateOrganizationForTechnologyResponse.class;
+ public Object getResponseType() { return responseType; }
}
- @DataContract
- public static class Option
+ @Route(Path="/orgs", Verbs="POST")
+ public static class CreateOrganization implements IReturn, IPost
{
- @DataMember(Name="name")
- @SerializedName("name")
- public String Name = null;
-
- @DataMember(Name="title")
- @SerializedName("title")
- public String Title = null;
-
- @DataMember(Name="value")
- @SerializedName("value")
- public TechnologyTier Value = null;
+ public String name = null;
+ public String slug = null;
+ public String description = null;
+ public Long refId = null;
+ public String refSource = null;
+ public String refUrn = null;
- public String getName() { return Name; }
- public Option setName(String value) { this.Name = value; return this; }
- public String getTitle() { return Title; }
- public Option setTitle(String value) { this.Title = value; return this; }
- public TechnologyTier getValue() { return Value; }
- public Option setValue(TechnologyTier value) { this.Value = value; return this; }
+ public String getName() { return name; }
+ public CreateOrganization setName(String value) { this.name = value; return this; }
+ public String getSlug() { return slug; }
+ public CreateOrganization setSlug(String value) { this.slug = value; return this; }
+ public String getDescription() { return description; }
+ public CreateOrganization setDescription(String value) { this.description = value; return this; }
+ public Long getRefId() { return refId; }
+ public CreateOrganization setRefId(Long value) { this.refId = value; return this; }
+ public String getRefSource() { return refSource; }
+ public CreateOrganization setRefSource(String value) { this.refSource = value; return this; }
+ public String getRefUrn() { return refUrn; }
+ public CreateOrganization setRefUrn(String value) { this.refUrn = value; return this; }
+ private static Object responseType = CreateOrganizationResponse.class;
+ public Object getResponseType() { return responseType; }
}
- public static class UserInfo
+ @Route(Path="/orgs/{Id}", Verbs="PUT")
+ public static class UpdateOrganization implements IReturn, IPut
{
- public String UserName = null;
- public String AvatarUrl = null;
- public Integer StacksCount = null;
+ public Integer id = null;
+ public String slug = null;
+ public String name = null;
+ public String description = null;
+ public String color = null;
+ public String textColor = null;
+ public String linkColor = null;
+ public String backgroundColor = null;
+ public String backgroundUrl = null;
+ public String logoUrl = null;
+ public String heroUrl = null;
+ public String lang = null;
+ public Integer deletePostsWithReportCount = null;
+ public Boolean disableInvites = null;
+ public String defaultPostType = null;
+ public ArrayList defaultSubscriptionPostTypes = null;
+ public ArrayList postTypes = null;
+ public ArrayList moderatorPostTypes = null;
+ public ArrayList technologyIds = null;
- public String getUserName() { return UserName; }
- public UserInfo setUserName(String value) { this.UserName = value; return this; }
- public String getAvatarUrl() { return AvatarUrl; }
- public UserInfo setAvatarUrl(String value) { this.AvatarUrl = value; return this; }
- public Integer getStacksCount() { return StacksCount; }
- public UserInfo setStacksCount(Integer value) { this.StacksCount = value; return this; }
+ public Integer getId() { return id; }
+ public UpdateOrganization setId(Integer value) { this.id = value; return this; }
+ public String getSlug() { return slug; }
+ public UpdateOrganization setSlug(String value) { this.slug = value; return this; }
+ public String getName() { return name; }
+ public UpdateOrganization setName(String value) { this.name = value; return this; }
+ public String getDescription() { return description; }
+ public UpdateOrganization setDescription(String value) { this.description = value; return this; }
+ public String getColor() { return color; }
+ public UpdateOrganization setColor(String value) { this.color = value; return this; }
+ public String getTextColor() { return textColor; }
+ public UpdateOrganization setTextColor(String value) { this.textColor = value; return this; }
+ public String getLinkColor() { return linkColor; }
+ public UpdateOrganization setLinkColor(String value) { this.linkColor = value; return this; }
+ public String getBackgroundColor() { return backgroundColor; }
+ public UpdateOrganization setBackgroundColor(String value) { this.backgroundColor = value; return this; }
+ public String getBackgroundUrl() { return backgroundUrl; }
+ public UpdateOrganization setBackgroundUrl(String value) { this.backgroundUrl = value; return this; }
+ public String getLogoUrl() { return logoUrl; }
+ public UpdateOrganization setLogoUrl(String value) { this.logoUrl = value; return this; }
+ public String getHeroUrl() { return heroUrl; }
+ public UpdateOrganization setHeroUrl(String value) { this.heroUrl = value; return this; }
+ public String getLang() { return lang; }
+ public UpdateOrganization setLang(String value) { this.lang = value; return this; }
+ public Integer getDeletePostsWithReportCount() { return deletePostsWithReportCount; }
+ public UpdateOrganization setDeletePostsWithReportCount(Integer value) { this.deletePostsWithReportCount = value; return this; }
+ public Boolean isDisableInvites() { return disableInvites; }
+ public UpdateOrganization setDisableInvites(Boolean value) { this.disableInvites = value; return this; }
+ public String getDefaultPostType() { return defaultPostType; }
+ public UpdateOrganization setDefaultPostType(String value) { this.defaultPostType = value; return this; }
+ public ArrayList getDefaultSubscriptionPostTypes() { return defaultSubscriptionPostTypes; }
+ public UpdateOrganization setDefaultSubscriptionPostTypes(ArrayList value) { this.defaultSubscriptionPostTypes = value; return this; }
+ public ArrayList getPostTypes() { return postTypes; }
+ public UpdateOrganization setPostTypes(ArrayList value) { this.postTypes = value; return this; }
+ public ArrayList getModeratorPostTypes() { return moderatorPostTypes; }
+ public UpdateOrganization setModeratorPostTypes(ArrayList value) { this.moderatorPostTypes = value; return this; }
+ public ArrayList getTechnologyIds() { return technologyIds; }
+ public UpdateOrganization setTechnologyIds(ArrayList value) { this.technologyIds = value; return this; }
+ private static Object responseType = UpdateOrganizationResponse.class;
+ public Object getResponseType() { return responseType; }
}
- public static class TechnologyInfo
+ @Route(Path="/orgs/{Id}", Verbs="DELETE")
+ public static class DeleteOrganization implements IReturnVoid, IDelete
{
- public TechnologyTier Tier = null;
- public String Slug = null;
- public String Name = null;
- public String LogoUrl = null;
- public Integer StacksCount = null;
+ public Integer id = null;
- public TechnologyTier getTier() { return Tier; }
- public TechnologyInfo setTier(TechnologyTier value) { this.Tier = value; return this; }
- public String getSlug() { return Slug; }
- public TechnologyInfo setSlug(String value) { this.Slug = value; return this; }
- public String getName() { return Name; }
- public TechnologyInfo setName(String value) { this.Name = value; return this; }
- public String getLogoUrl() { return LogoUrl; }
- public TechnologyInfo setLogoUrl(String value) { this.LogoUrl = value; return this; }
- public Integer getStacksCount() { return StacksCount; }
- public TechnologyInfo setStacksCount(Integer value) { this.StacksCount = value; return this; }
+ public Integer getId() { return id; }
+ public DeleteOrganization setId(Integer value) { this.id = value; return this; }
}
- public static class Post
+ @Route(Path="/orgs/{Id}/lock", Verbs="PUT")
+ public static class LockOrganization implements IReturnVoid, IPut
{
- public Integer Id = null;
- public String UserId = null;
- public String UserName = null;
- public String Date = null;
- public String ShortDate = null;
- public String TextHtml = null;
- public ArrayList Comments = null;
-
- public Integer getId() { return Id; }
- public Post setId(Integer value) { this.Id = value; return this; }
- public String getUserId() { return UserId; }
- public Post setUserId(String value) { this.UserId = value; return this; }
- public String getUserName() { return UserName; }
- public Post setUserName(String value) { this.UserName = value; return this; }
- public String getDate() { return Date; }
- public Post setDate(String value) { this.Date = value; return this; }
- public String getShortDate() { return ShortDate; }
- public Post setShortDate(String value) { this.ShortDate = value; return this; }
- public String getTextHtml() { return TextHtml; }
- public Post setTextHtml(String value) { this.TextHtml = value; return this; }
- public ArrayList getComments() { return Comments; }
- public Post setComments(ArrayList value) { this.Comments = value; return this; }
+ public Integer id = null;
+ public Boolean lock = null;
+ public String reason = null;
+
+ public Integer getId() { return id; }
+ public LockOrganization setId(Integer value) { this.id = value; return this; }
+ public Boolean isLock() { return lock; }
+ public LockOrganization setLock(Boolean value) { this.lock = value; return this; }
+ public String getReason() { return reason; }
+ public LockOrganization setReason(String value) { this.reason = value; return this; }
}
- public static class TechnologyBase
+ @Route(Path="/orgs/{OrganizationId}/labels", Verbs="POST")
+ public static class AddOrganizationLabel implements IReturn, IPost
{
- public Long Id = null;
- public String Name = null;
- public String VendorName = null;
- public String VendorUrl = null;
- public String ProductUrl = null;
- public String LogoUrl = null;
- public String Description = null;
- public Date Created = null;
- public String CreatedBy = null;
- public Date LastModified = null;
- public String LastModifiedBy = null;
- public String OwnerId = null;
- public String Slug = null;
- public Boolean LogoApproved = null;
- public Boolean IsLocked = null;
- public TechnologyTier Tier = null;
- public Date LastStatusUpdate = null;
-
- public Long getId() { return Id; }
- public TechnologyBase setId(Long value) { this.Id = value; return this; }
- public String getName() { return Name; }
- public TechnologyBase setName(String value) { this.Name = value; return this; }
- public String getVendorName() { return VendorName; }
- public TechnologyBase setVendorName(String value) { this.VendorName = value; return this; }
- public String getVendorUrl() { return VendorUrl; }
- public TechnologyBase setVendorUrl(String value) { this.VendorUrl = value; return this; }
- public String getProductUrl() { return ProductUrl; }
- public TechnologyBase setProductUrl(String value) { this.ProductUrl = value; return this; }
- public String getLogoUrl() { return LogoUrl; }
- public TechnologyBase setLogoUrl(String value) { this.LogoUrl = value; return this; }
- public String getDescription() { return Description; }
- public TechnologyBase setDescription(String value) { this.Description = value; return this; }
- public Date getCreated() { return Created; }
- public TechnologyBase setCreated(Date value) { this.Created = value; return this; }
- public String getCreatedBy() { return CreatedBy; }
- public TechnologyBase setCreatedBy(String value) { this.CreatedBy = value; return this; }
- public Date getLastModified() { return LastModified; }
- public TechnologyBase setLastModified(Date value) { this.LastModified = value; return this; }
- public String getLastModifiedBy() { return LastModifiedBy; }
- public TechnologyBase setLastModifiedBy(String value) { this.LastModifiedBy = value; return this; }
- public String getOwnerId() { return OwnerId; }
- public TechnologyBase setOwnerId(String value) { this.OwnerId = value; return this; }
- public String getSlug() { return Slug; }
- public TechnologyBase setSlug(String value) { this.Slug = value; return this; }
- public Boolean isLogoApproved() { return LogoApproved; }
- public TechnologyBase setLogoApproved(Boolean value) { this.LogoApproved = value; return this; }
- public Boolean getIsLocked() { return IsLocked; }
- public TechnologyBase setIsLocked(Boolean value) { this.IsLocked = value; return this; }
- public TechnologyTier getTier() { return Tier; }
- public TechnologyBase setTier(TechnologyTier value) { this.Tier = value; return this; }
- public Date getLastStatusUpdate() { return LastStatusUpdate; }
- public TechnologyBase setLastStatusUpdate(Date value) { this.LastStatusUpdate = value; return this; }
+ public Integer organizationId = null;
+ public String slug = null;
+ public String description = null;
+ public String color = null;
+
+ public Integer getOrganizationId() { return organizationId; }
+ public AddOrganizationLabel setOrganizationId(Integer value) { this.organizationId = value; return this; }
+ public String getSlug() { return slug; }
+ public AddOrganizationLabel setSlug(String value) { this.slug = value; return this; }
+ public String getDescription() { return description; }
+ public AddOrganizationLabel setDescription(String value) { this.description = value; return this; }
+ public String getColor() { return color; }
+ public AddOrganizationLabel setColor(String value) { this.color = value; return this; }
+ private static Object responseType = OrganizationLabelResponse.class;
+ public Object getResponseType() { return responseType; }
}
- public static class TechnologyStackBase
+ @Route(Path="/orgs/{OrganizationId}/members/{Slug}", Verbs="PUT")
+ public static class UpdateOrganizationLabel implements IReturn, IPut
{
- public Long Id = null;
- public String Name = null;
- public String VendorName = null;
- public String Description = null;
- public String AppUrl = null;
- public String ScreenshotUrl = null;
- public Date Created = null;
- public String CreatedBy = null;
- public Date LastModified = null;
- public String LastModifiedBy = null;
- public Boolean IsLocked = null;
- public String OwnerId = null;
- public String Slug = null;
- public String Details = null;
- public Date LastStatusUpdate = null;
-
- public Long getId() { return Id; }
- public TechnologyStackBase setId(Long value) { this.Id = value; return this; }
- public String getName() { return Name; }
- public TechnologyStackBase setName(String value) { this.Name = value; return this; }
- public String getVendorName() { return VendorName; }
- public TechnologyStackBase setVendorName(String value) { this.VendorName = value; return this; }
- public String getDescription() { return Description; }
- public TechnologyStackBase setDescription(String value) { this.Description = value; return this; }
- public String getAppUrl() { return AppUrl; }
- public TechnologyStackBase setAppUrl(String value) { this.AppUrl = value; return this; }
- public String getScreenshotUrl() { return ScreenshotUrl; }
- public TechnologyStackBase setScreenshotUrl(String value) { this.ScreenshotUrl = value; return this; }
- public Date getCreated() { return Created; }
- public TechnologyStackBase setCreated(Date value) { this.Created = value; return this; }
- public String getCreatedBy() { return CreatedBy; }
- public TechnologyStackBase setCreatedBy(String value) { this.CreatedBy = value; return this; }
- public Date getLastModified() { return LastModified; }
- public TechnologyStackBase setLastModified(Date value) { this.LastModified = value; return this; }
- public String getLastModifiedBy() { return LastModifiedBy; }
- public TechnologyStackBase setLastModifiedBy(String value) { this.LastModifiedBy = value; return this; }
- public Boolean getIsLocked() { return IsLocked; }
- public TechnologyStackBase setIsLocked(Boolean value) { this.IsLocked = value; return this; }
- public String getOwnerId() { return OwnerId; }
- public TechnologyStackBase setOwnerId(String value) { this.OwnerId = value; return this; }
- public String getSlug() { return Slug; }
- public TechnologyStackBase setSlug(String value) { this.Slug = value; return this; }
- public String getDetails() { return Details; }
- public TechnologyStackBase setDetails(String value) { this.Details = value; return this; }
- public Date getLastStatusUpdate() { return LastStatusUpdate; }
- public TechnologyStackBase setLastStatusUpdate(Date value) { this.LastStatusUpdate = value; return this; }
+ public Integer organizationId = null;
+ public String slug = null;
+ public String description = null;
+ public String color = null;
+
+ public Integer getOrganizationId() { return organizationId; }
+ public UpdateOrganizationLabel setOrganizationId(Integer value) { this.organizationId = value; return this; }
+ public String getSlug() { return slug; }
+ public UpdateOrganizationLabel setSlug(String value) { this.slug = value; return this; }
+ public String getDescription() { return description; }
+ public UpdateOrganizationLabel setDescription(String value) { this.description = value; return this; }
+ public String getColor() { return color; }
+ public UpdateOrganizationLabel setColor(String value) { this.color = value; return this; }
+ private static Object responseType = OrganizationLabelResponse.class;
+ public Object getResponseType() { return responseType; }
}
- public static class QueryBase
+ @Route(Path="/orgs/{OrganizationId}/labels/{Slug}", Verbs="DELETE")
+ public static class RemoveOrganizationLabel implements IReturnVoid, IDelete
{
- @DataMember(Order=1)
- public Integer Skip = null;
-
- @DataMember(Order=2)
- public Integer Take = null;
-
- @DataMember(Order=3)
- public String OrderBy = null;
-
- @DataMember(Order=4)
- public String OrderByDesc = null;
+ public Integer organizationId = null;
+ public String slug = null;
- public Integer getSkip() { return Skip; }
- public QueryBase setSkip(Integer value) { this.Skip = value; return this; }
- public Integer getTake() { return Take; }
- public QueryBase setTake(Integer value) { this.Take = value; return this; }
- public String getOrderBy() { return OrderBy; }
- public QueryBase setOrderBy(String value) { this.OrderBy = value; return this; }
- public String getOrderByDesc() { return OrderByDesc; }
- public QueryBase setOrderByDesc(String value) { this.OrderByDesc = value; return this; }
+ public Integer getOrganizationId() { return organizationId; }
+ public RemoveOrganizationLabel setOrganizationId(Integer value) { this.organizationId = value; return this; }
+ public String getSlug() { return slug; }
+ public RemoveOrganizationLabel setSlug(String value) { this.slug = value; return this; }
}
- public static class TechnologyInStack extends TechnologyBase
+ @Route(Path="/orgs/{OrganizationId}/categories", Verbs="POST")
+ public static class AddOrganizationCategory implements IReturn, IPost
{
- public Long TechnologyId = null;
- public Long TechnologyStackId = null;
- public String Justification = null;
+ public Integer organizationId = null;
+ public String slug = null;
+ public String name = null;
+ public String description = null;
+ public ArrayList technologyIds = null;
- public Long getTechnologyId() { return TechnologyId; }
- public TechnologyInStack setTechnologyId(Long value) { this.TechnologyId = value; return this; }
- public Long getTechnologyStackId() { return TechnologyStackId; }
- public TechnologyInStack setTechnologyStackId(Long value) { this.TechnologyStackId = value; return this; }
- public String getJustification() { return Justification; }
- public TechnologyInStack setJustification(String value) { this.Justification = value; return this; }
+ public Integer getOrganizationId() { return organizationId; }
+ public AddOrganizationCategory setOrganizationId(Integer value) { this.organizationId = value; return this; }
+ public String getSlug() { return slug; }
+ public AddOrganizationCategory setSlug(String value) { this.slug = value; return this; }
+ public String getName() { return name; }
+ public AddOrganizationCategory setName(String value) { this.name = value; return this; }
+ public String getDescription() { return description; }
+ public AddOrganizationCategory setDescription(String value) { this.description = value; return this; }
+ public ArrayList getTechnologyIds() { return technologyIds; }
+ public AddOrganizationCategory setTechnologyIds(ArrayList value) { this.technologyIds = value; return this; }
+ private static Object responseType = AddOrganizationCategoryResponse.class;
+ public Object getResponseType() { return responseType; }
}
- public static class PostComment
+ @Route(Path="/orgs/{OrganizationId}/categories/{Id}", Verbs="PUT")
+ public static class UpdateOrganizationCategory implements IReturn, IPut
{
- public Integer Id = null;
- public Integer PostId = null;
- public String UserId = null;
- public String UserName = null;
- public String Date = null;
- public String ShortDate = null;
- public String TextHtml = null;
-
- public Integer getId() { return Id; }
- public PostComment setId(Integer value) { this.Id = value; return this; }
- public Integer getPostId() { return PostId; }
- public PostComment setPostId(Integer value) { this.PostId = value; return this; }
- public String getUserId() { return UserId; }
- public PostComment setUserId(String value) { this.UserId = value; return this; }
- public String getUserName() { return UserName; }
- public PostComment setUserName(String value) { this.UserName = value; return this; }
- public String getDate() { return Date; }
- public PostComment setDate(String value) { this.Date = value; return this; }
- public String getShortDate() { return ShortDate; }
- public PostComment setShortDate(String value) { this.ShortDate = value; return this; }
- public String getTextHtml() { return TextHtml; }
- public PostComment setTextHtml(String value) { this.TextHtml = value; return this; }
+ public Integer organizationId = null;
+ public Integer id = null;
+ public String name = null;
+ public String slug = null;
+ public String description = null;
+ public ArrayList technologyIds = null;
+
+ public Integer getOrganizationId() { return organizationId; }
+ public UpdateOrganizationCategory setOrganizationId(Integer value) { this.organizationId = value; return this; }
+ public Integer getId() { return id; }
+ public UpdateOrganizationCategory setId(Integer value) { this.id = value; return this; }
+ public String getName() { return name; }
+ public UpdateOrganizationCategory setName(String value) { this.name = value; return this; }
+ public String getSlug() { return slug; }
+ public UpdateOrganizationCategory setSlug(String value) { this.slug = value; return this; }
+ public String getDescription() { return description; }
+ public UpdateOrganizationCategory setDescription(String value) { this.description = value; return this; }
+ public ArrayList getTechnologyIds() { return technologyIds; }
+ public UpdateOrganizationCategory setTechnologyIds(ArrayList value) { this.technologyIds = value; return this; }
+ private static Object responseType = UpdateOrganizationCategoryResponse.class;
+ public Object getResponseType() { return responseType; }
}
- public static class LogoUrlApprovalResponse
+ @Route(Path="/orgs/{OrganizationId}/categories/{Id}", Verbs="DELETE")
+ public static class DeleteOrganizationCategory implements IReturnVoid, IDelete
{
- public Technology Result = null;
+ public Integer organizationId = null;
+ public Integer id = null;
- public Technology getResult() { return Result; }
- public LogoUrlApprovalResponse setResult(Technology value) { this.Result = value; return this; }
+ public Integer getOrganizationId() { return organizationId; }
+ public DeleteOrganizationCategory setOrganizationId(Integer value) { this.organizationId = value; return this; }
+ public Integer getId() { return id; }
+ public DeleteOrganizationCategory setId(Integer value) { this.id = value; return this; }
}
- public static class LockStackResponse
+ @Route(Path="/orgs/{OrganizationId}/members", Verbs="POST")
+ public static class AddOrganizationMember implements IReturn, IPost
{
+ public Integer organizationId = null;
+ public String userName = null;
+ public Boolean isOwner = null;
+ public Boolean isModerator = null;
+ public Boolean denyPosts = null;
+ public Boolean denyComments = null;
+ public Boolean denyAll = null;
+ public String notes = null;
+ public Integer getOrganizationId() { return organizationId; }
+ public AddOrganizationMember setOrganizationId(Integer value) { this.organizationId = value; return this; }
+ public String getUserName() { return userName; }
+ public AddOrganizationMember setUserName(String value) { this.userName = value; return this; }
+ public Boolean getIsOwner() { return isOwner; }
+ public AddOrganizationMember setIsOwner(Boolean value) { this.isOwner = value; return this; }
+ public Boolean getIsModerator() { return isModerator; }
+ public AddOrganizationMember setIsModerator(Boolean value) { this.isModerator = value; return this; }
+ public Boolean isDenyPosts() { return denyPosts; }
+ public AddOrganizationMember setDenyPosts(Boolean value) { this.denyPosts = value; return this; }
+ public Boolean isDenyComments() { return denyComments; }
+ public AddOrganizationMember setDenyComments(Boolean value) { this.denyComments = value; return this; }
+ public Boolean isDenyAll() { return denyAll; }
+ public AddOrganizationMember setDenyAll(Boolean value) { this.denyAll = value; return this; }
+ public String getNotes() { return notes; }
+ public AddOrganizationMember setNotes(String value) { this.notes = value; return this; }
+ private static Object responseType = AddOrganizationMemberResponse.class;
+ public Object getResponseType() { return responseType; }
}
- public static class CreateTechnologyResponse
+ @Route(Path="/orgs/{OrganizationId}/members/{Id}", Verbs="PUT")
+ public static class UpdateOrganizationMember implements IReturn, IPut
{
- public Technology Result = null;
- public ResponseStatus ResponseStatus = null;
+ public Integer organizationId = null;
+ public Integer userId = null;
+ public Boolean isOwner = null;
+ public Boolean isModerator = null;
+ public Boolean denyPosts = null;
+ public Boolean denyComments = null;
+ public Boolean denyAll = null;
+ public String notes = null;
- public Technology getResult() { return Result; }
- public CreateTechnologyResponse setResult(Technology value) { this.Result = value; return this; }
- public ResponseStatus getResponseStatus() { return ResponseStatus; }
- public CreateTechnologyResponse setResponseStatus(ResponseStatus value) { this.ResponseStatus = value; return this; }
+ public Integer getOrganizationId() { return organizationId; }
+ public UpdateOrganizationMember setOrganizationId(Integer value) { this.organizationId = value; return this; }
+ public Integer getUserId() { return userId; }
+ public UpdateOrganizationMember setUserId(Integer value) { this.userId = value; return this; }
+ public Boolean getIsOwner() { return isOwner; }
+ public UpdateOrganizationMember setIsOwner(Boolean value) { this.isOwner = value; return this; }
+ public Boolean getIsModerator() { return isModerator; }
+ public UpdateOrganizationMember setIsModerator(Boolean value) { this.isModerator = value; return this; }
+ public Boolean isDenyPosts() { return denyPosts; }
+ public UpdateOrganizationMember setDenyPosts(Boolean value) { this.denyPosts = value; return this; }
+ public Boolean isDenyComments() { return denyComments; }
+ public UpdateOrganizationMember setDenyComments(Boolean value) { this.denyComments = value; return this; }
+ public Boolean isDenyAll() { return denyAll; }
+ public UpdateOrganizationMember setDenyAll(Boolean value) { this.denyAll = value; return this; }
+ public String getNotes() { return notes; }
+ public UpdateOrganizationMember setNotes(String value) { this.notes = value; return this; }
+ private static Object responseType = UpdateOrganizationMemberResponse.class;
+ public Object getResponseType() { return responseType; }
}
- public static class UpdateTechnologyResponse
+ @Route(Path="/orgs/{OrganizationId}/members/{UserId}", Verbs="DELETE")
+ public static class RemoveOrganizationMember implements IReturnVoid, IDelete
{
- public Technology Result = null;
- public ResponseStatus ResponseStatus = null;
+ public Integer organizationId = null;
+ public Integer userId = null;
- public Technology getResult() { return Result; }
- public UpdateTechnologyResponse setResult(Technology value) { this.Result = value; return this; }
- public ResponseStatus getResponseStatus() { return ResponseStatus; }
- public UpdateTechnologyResponse setResponseStatus(ResponseStatus value) { this.ResponseStatus = value; return this; }
+ public Integer getOrganizationId() { return organizationId; }
+ public RemoveOrganizationMember setOrganizationId(Integer value) { this.organizationId = value; return this; }
+ public Integer getUserId() { return userId; }
+ public RemoveOrganizationMember setUserId(Integer value) { this.userId = value; return this; }
}
- public static class DeleteTechnologyResponse
+ @Route(Path="/orgs/{OrganizationId}/members/set", Verbs="POST")
+ public static class SetOrganizationMembers implements IReturn, IPost
{
- public Technology Result = null;
- public ResponseStatus ResponseStatus = null;
+ public Integer organizationId = null;
+ public ArrayList githubUserNames = null;
+ public ArrayList twitterUserNames = null;
+ public ArrayList emails = null;
+ public Boolean removeUnspecifiedMembers = null;
+ public Boolean isOwner = null;
+ public Boolean isModerator = null;
+ public Boolean denyPosts = null;
+ public Boolean denyComments = null;
+ public Boolean denyAll = null;
- public Technology getResult() { return Result; }
- public DeleteTechnologyResponse setResult(Technology value) { this.Result = value; return this; }
- public ResponseStatus getResponseStatus() { return ResponseStatus; }
- public DeleteTechnologyResponse setResponseStatus(ResponseStatus value) { this.ResponseStatus = value; return this; }
+ public Integer getOrganizationId() { return organizationId; }
+ public SetOrganizationMembers setOrganizationId(Integer value) { this.organizationId = value; return this; }
+ public ArrayList getGithubUserNames() { return githubUserNames; }
+ public SetOrganizationMembers setGithubUserNames(ArrayList value) { this.githubUserNames = value; return this; }
+ public ArrayList getTwitterUserNames() { return twitterUserNames; }
+ public SetOrganizationMembers setTwitterUserNames(ArrayList value) { this.twitterUserNames = value; return this; }
+ public ArrayList getEmails() { return emails; }
+ public SetOrganizationMembers setEmails(ArrayList value) { this.emails = value; return this; }
+ public Boolean isRemoveUnspecifiedMembers() { return removeUnspecifiedMembers; }
+ public SetOrganizationMembers setRemoveUnspecifiedMembers(Boolean value) { this.removeUnspecifiedMembers = value; return this; }
+ public Boolean getIsOwner() { return isOwner; }
+ public SetOrganizationMembers setIsOwner(Boolean value) { this.isOwner = value; return this; }
+ public Boolean getIsModerator() { return isModerator; }
+ public SetOrganizationMembers setIsModerator(Boolean value) { this.isModerator = value; return this; }
+ public Boolean isDenyPosts() { return denyPosts; }
+ public SetOrganizationMembers setDenyPosts(Boolean value) { this.denyPosts = value; return this; }
+ public Boolean isDenyComments() { return denyComments; }
+ public SetOrganizationMembers setDenyComments(Boolean value) { this.denyComments = value; return this; }
+ public Boolean isDenyAll() { return denyAll; }
+ public SetOrganizationMembers setDenyAll(Boolean value) { this.denyAll = value; return this; }
+ private static Object responseType = SetOrganizationMembersResponse.class;
+ public Object getResponseType() { return responseType; }
}
- public static class GetTechnologyResponse
+ @Route(Path="/orgs/{OrganizationId}/invites", Verbs="GET")
+ public static class GetOrganizationMemberInvites implements IReturn, IGet
{
- public Date Created = null;
- public Technology Technology = null;
- public ArrayList TechnologyStacks = null;
- public ResponseStatus ResponseStatus = null;
+ public Integer organizationId = null;
- public Date getCreated() { return Created; }
- public GetTechnologyResponse setCreated(Date value) { this.Created = value; return this; }
- public Technology getTechnology() { return Technology; }
- public GetTechnologyResponse setTechnology(Technology value) { this.Technology = value; return this; }
- public ArrayList getTechnologyStacks() { return TechnologyStacks; }
- public GetTechnologyResponse setTechnologyStacks(ArrayList value) { this.TechnologyStacks = value; return this; }
- public ResponseStatus getResponseStatus() { return ResponseStatus; }
- public GetTechnologyResponse setResponseStatus(ResponseStatus value) { this.ResponseStatus = value; return this; }
+ public Integer getOrganizationId() { return organizationId; }
+ public GetOrganizationMemberInvites setOrganizationId(Integer value) { this.organizationId = value; return this; }
+ private static Object responseType = GetOrganizationMemberInvitesResponse.class;
+ public Object getResponseType() { return responseType; }
}
- public static class GetTechnologyPreviousVersionsResponse
+ @Route(Path="/orgs/{OrganizationId}/invites", Verbs="POST")
+ public static class RequestOrganizationMemberInvite implements IReturn, IPost
{
- public ArrayList Results = null;
+ public Integer organizationId = null;
- public ArrayList getResults() { return Results; }
- public GetTechnologyPreviousVersionsResponse setResults(ArrayList value) { this.Results = value; return this; }
+ public Integer getOrganizationId() { return organizationId; }
+ public RequestOrganizationMemberInvite setOrganizationId(Integer value) { this.organizationId = value; return this; }
+ private static Object responseType = RequestOrganizationMemberInviteResponse.class;
+ public Object getResponseType() { return responseType; }
}
- public static class GetTechnologyFavoriteDetailsResponse
+ @Route(Path="/orgs/{OrganizationId}/invites/{UserId}", Verbs="PUT")
+ public static class UpdateOrganizationMemberInvite implements IReturn, IPut
{
- public ArrayList Users = null;
- public Integer FavoriteCount = null;
+ public Integer organizationId = null;
+ public String userName = null;
+ public Boolean approve = null;
+ public Boolean dismiss = null;
- public ArrayList getUsers() { return Users; }
- public GetTechnologyFavoriteDetailsResponse setUsers(ArrayList value) { this.Users = value; return this; }
- public Integer getFavoriteCount() { return FavoriteCount; }
- public GetTechnologyFavoriteDetailsResponse setFavoriteCount(Integer value) { this.FavoriteCount = value; return this; }
+ public Integer getOrganizationId() { return organizationId; }
+ public UpdateOrganizationMemberInvite setOrganizationId(Integer value) { this.organizationId = value; return this; }
+ public String getUserName() { return userName; }
+ public UpdateOrganizationMemberInvite setUserName(String value) { this.userName = value; return this; }
+ public Boolean isApprove() { return approve; }
+ public UpdateOrganizationMemberInvite setApprove(Boolean value) { this.approve = value; return this; }
+ public Boolean isDismiss() { return dismiss; }
+ public UpdateOrganizationMemberInvite setDismiss(Boolean value) { this.dismiss = value; return this; }
+ private static Object responseType = UpdateOrganizationMemberInviteResponse.class;
+ public Object getResponseType() { return responseType; }
}
- public static class GetAllTechnologiesResponse
+ @Route(Path="/posts", Verbs="GET")
+ public static class QueryPosts extends QueryDb implements IReturn>, IGet
{
- public ArrayList Results = null;
+ public ArrayList ids = null;
+ public Integer organizationId = null;
+ public ArrayList organizationIds = null;
+ public ArrayList types = null;
+ public ArrayList anyTechnologyIds = null;
+ public ArrayList is = null;
- public ArrayList getResults() { return Results; }
- public GetAllTechnologiesResponse setResults(ArrayList value) { this.Results = value; return this; }
+ public ArrayList getIds() { return ids; }
+ public QueryPosts setIds(ArrayList value) { this.ids = value; return this; }
+ public Integer getOrganizationId() { return organizationId; }
+ public QueryPosts setOrganizationId(Integer value) { this.organizationId = value; return this; }
+ public ArrayList getOrganizationIds() { return organizationIds; }
+ public QueryPosts setOrganizationIds(ArrayList value) { this.organizationIds = value; return this; }
+ public ArrayList getTypes() { return types; }
+ public QueryPosts setTypes(ArrayList value) { this.types = value; return this; }
+ public ArrayList getAnyTechnologyIds() { return anyTechnologyIds; }
+ public QueryPosts setAnyTechnologyIds(ArrayList value) { this.anyTechnologyIds = value; return this; }
+ public ArrayList getIs() { return is; }
+ public QueryPosts setIs(ArrayList value) { this.is = value; return this; }
+ private static Object responseType = new TypeToken>(){}.getType();
+ public Object getResponseType() { return responseType; }
}
- @DataContract
- public static class QueryResponse
+ @Route(Path="/posts/{Id}", Verbs="GET")
+ public static class GetPost implements IReturn, IGet
{
- @DataMember(Order=1)
- public Integer Offset = null;
-
- @DataMember(Order=2)
- public Integer Total = null;
-
- @DataMember(Order=3)
- public ArrayList Results = null;
-
- @DataMember(Order=4)
- public HashMap Meta = null;
-
- @DataMember(Order=5)
- public ResponseStatus ResponseStatus = null;
+ public Long id = null;
+ public String include = null;
- public Integer getOffset() { return Offset; }
- public QueryResponse setOffset(Integer value) { this.Offset = value; return this; }
- public Integer getTotal() { return Total; }
- public QueryResponse setTotal(Integer value) { this.Total = value; return this; }
- public ArrayList getResults() { return Results; }
- public QueryResponse setResults(ArrayList value) { this.Results = value; return this; }
- public HashMap getMeta() { return Meta; }
- public QueryResponse setMeta(HashMap value) { this.Meta = value; return this; }
- public ResponseStatus getResponseStatus() { return ResponseStatus; }
- public QueryResponse setResponseStatus(ResponseStatus value) { this.ResponseStatus = value; return this; }
+ public Long getId() { return id; }
+ public GetPost setId(Long value) { this.id = value; return this; }
+ public String getInclude() { return include; }
+ public GetPost setInclude(String value) { this.include = value; return this; }
+ private static Object responseType = GetPostResponse.class;
+ public Object getResponseType() { return responseType; }
}
- public static class CreateTechnologyStackResponse
+ @Route(Path="/posts", Verbs="POST")
+ public static class CreatePost implements IReturn, IPost
{
- public TechStackDetails Result = null;
- public ResponseStatus ResponseStatus = null;
+ public Integer organizationId = null;
+ public PostType type = null;
+ public Integer categoryId = null;
+ public String title = null;
+ public String url = null;
+ public String imageUrl = null;
+ public String content = null;
+ public Boolean lock = null;
+ public ArrayList technologyIds = null;
+ public ArrayList labels = null;
+ public Date fromDate = null;
+ public Date toDate = null;
+ public String metaType = null;
+ public String meta = null;
+ public Long refId = null;
+ public String refSource = null;
+ public String refUrn = null;
- public TechStackDetails getResult() { return Result; }
- public CreateTechnologyStackResponse setResult(TechStackDetails value) { this.Result = value; return this; }
- public ResponseStatus getResponseStatus() { return ResponseStatus; }
- public CreateTechnologyStackResponse setResponseStatus(ResponseStatus value) { this.ResponseStatus = value; return this; }
+ public Integer getOrganizationId() { return organizationId; }
+ public CreatePost setOrganizationId(Integer value) { this.organizationId = value; return this; }
+ public PostType getType() { return type; }
+ public CreatePost setType(PostType value) { this.type = value; return this; }
+ public Integer getCategoryId() { return categoryId; }
+ public CreatePost setCategoryId(Integer value) { this.categoryId = value; return this; }
+ public String getTitle() { return title; }
+ public CreatePost setTitle(String value) { this.title = value; return this; }
+ public String getUrl() { return url; }
+ public CreatePost setUrl(String value) { this.url = value; return this; }
+ public String getImageUrl() { return imageUrl; }
+ public CreatePost setImageUrl(String value) { this.imageUrl = value; return this; }
+ public String getContent() { return content; }
+ public CreatePost setContent(String value) { this.content = value; return this; }
+ public Boolean isLock() { return lock; }
+ public CreatePost setLock(Boolean value) { this.lock = value; return this; }
+ public ArrayList getTechnologyIds() { return technologyIds; }
+ public CreatePost setTechnologyIds(ArrayList value) { this.technologyIds = value; return this; }
+ public ArrayList getLabels() { return labels; }
+ public CreatePost setLabels(ArrayList value) { this.labels = value; return this; }
+ public Date getFromDate() { return fromDate; }
+ public CreatePost setFromDate(Date value) { this.fromDate = value; return this; }
+ public Date getToDate() { return toDate; }
+ public CreatePost setToDate(Date value) { this.toDate = value; return this; }
+ public String getMetaType() { return metaType; }
+ public CreatePost setMetaType(String value) { this.metaType = value; return this; }
+ public String getMeta() { return meta; }
+ public CreatePost setMeta(String value) { this.meta = value; return this; }
+ public Long getRefId() { return refId; }
+ public CreatePost setRefId(Long value) { this.refId = value; return this; }
+ public String getRefSource() { return refSource; }
+ public CreatePost setRefSource(String value) { this.refSource = value; return this; }
+ public String getRefUrn() { return refUrn; }
+ public CreatePost setRefUrn(String value) { this.refUrn = value; return this; }
+ private static Object responseType = CreatePostResponse.class;
+ public Object getResponseType() { return responseType; }
}
- public static class UpdateTechnologyStackResponse
+ @Route(Path="/posts/{Id}", Verbs="PUT")
+ public static class UpdatePost implements IReturn, IPut
{
- public TechStackDetails Result = null;
- public ResponseStatus ResponseStatus = null;
+ public Long id = null;
+ public Integer organizationId = null;
+ public PostType type = null;
+ public Integer categoryId = null;
+ public String title = null;
+ public String url = null;
+ public String imageUrl = null;
+ public String content = null;
+ public Boolean lock = null;
+ public ArrayList technologyIds = null;
+ public ArrayList labels = null;
+ public Date fromDate = null;
+ public Date toDate = null;
+ public String metaType = null;
+ public String meta = null;
- public TechStackDetails getResult() { return Result; }
- public UpdateTechnologyStackResponse setResult(TechStackDetails value) { this.Result = value; return this; }
- public ResponseStatus getResponseStatus() { return ResponseStatus; }
- public UpdateTechnologyStackResponse setResponseStatus(ResponseStatus value) { this.ResponseStatus = value; return this; }
+ public Long getId() { return id; }
+ public UpdatePost setId(Long value) { this.id = value; return this; }
+ public Integer getOrganizationId() { return organizationId; }
+ public UpdatePost setOrganizationId(Integer value) { this.organizationId = value; return this; }
+ public PostType getType() { return type; }
+ public UpdatePost setType(PostType value) { this.type = value; return this; }
+ public Integer getCategoryId() { return categoryId; }
+ public UpdatePost setCategoryId(Integer value) { this.categoryId = value; return this; }
+ public String getTitle() { return title; }
+ public UpdatePost setTitle(String value) { this.title = value; return this; }
+ public String getUrl() { return url; }
+ public UpdatePost setUrl(String value) { this.url = value; return this; }
+ public String getImageUrl() { return imageUrl; }
+ public UpdatePost setImageUrl(String value) { this.imageUrl = value; return this; }
+ public String getContent() { return content; }
+ public UpdatePost setContent(String value) { this.content = value; return this; }
+ public Boolean isLock() { return lock; }
+ public UpdatePost setLock(Boolean value) { this.lock = value; return this; }
+ public ArrayList getTechnologyIds() { return technologyIds; }
+ public UpdatePost setTechnologyIds(ArrayList value) { this.technologyIds = value; return this; }
+ public ArrayList getLabels() { return labels; }
+ public UpdatePost setLabels(ArrayList value) { this.labels = value; return this; }
+ public Date getFromDate() { return fromDate; }
+ public UpdatePost setFromDate(Date value) { this.fromDate = value; return this; }
+ public Date getToDate() { return toDate; }
+ public UpdatePost setToDate(Date value) { this.toDate = value; return this; }
+ public String getMetaType() { return metaType; }
+ public UpdatePost setMetaType(String value) { this.metaType = value; return this; }
+ public String getMeta() { return meta; }
+ public UpdatePost setMeta(String value) { this.meta = value; return this; }
+ private static Object responseType = UpdatePostResponse.class;
+ public Object getResponseType() { return responseType; }
}
- public static class DeleteTechnologyStackResponse
+ @Route(Path="/posts/{Id}", Verbs="DELETE")
+ public static class DeletePost implements IReturn, IDelete
{
- public TechStackDetails Result = null;
- public ResponseStatus ResponseStatus = null;
+ public Long id = null;
- public TechStackDetails getResult() { return Result; }
- public DeleteTechnologyStackResponse setResult(TechStackDetails value) { this.Result = value; return this; }
- public ResponseStatus getResponseStatus() { return ResponseStatus; }
- public DeleteTechnologyStackResponse setResponseStatus(ResponseStatus value) { this.ResponseStatus = value; return this; }
+ public Long getId() { return id; }
+ public DeletePost setId(Long value) { this.id = value; return this; }
+ private static Object responseType = DeletePostResponse.class;
+ public Object getResponseType() { return responseType; }
}
- public static class GetAllTechnologyStacksResponse
+ @Route(Path="/posts/{Id}/lock", Verbs="PUT")
+ public static class LockPost implements IReturnVoid, IPut
{
- public ArrayList Results = null;
+ public Long id = null;
+ public Boolean lock = null;
+ public String reason = null;
- public ArrayList getResults() { return Results; }
- public GetAllTechnologyStacksResponse setResults(ArrayList value) { this.Results = value; return this; }
+ public Long getId() { return id; }
+ public LockPost setId(Long value) { this.id = value; return this; }
+ public Boolean isLock() { return lock; }
+ public LockPost setLock(Boolean value) { this.lock = value; return this; }
+ public String getReason() { return reason; }
+ public LockPost setReason(String value) { this.reason = value; return this; }
}
- public static class GetTechnologyStackResponse
+ @Route(Path="/posts/{Id}/hide", Verbs="PUT")
+ public static class HidePost implements IReturnVoid, IPut
{
- public Date Created = null;
- public TechStackDetails Result = null;
- public ResponseStatus ResponseStatus = null;
+ public Long id = null;
+ public Boolean hide = null;
+ public String reason = null;
- public Date getCreated() { return Created; }
- public GetTechnologyStackResponse setCreated(Date value) { this.Created = value; return this; }
- public TechStackDetails getResult() { return Result; }
- public GetTechnologyStackResponse setResult(TechStackDetails value) { this.Result = value; return this; }
- public ResponseStatus getResponseStatus() { return ResponseStatus; }
- public GetTechnologyStackResponse setResponseStatus(ResponseStatus value) { this.ResponseStatus = value; return this; }
+ public Long getId() { return id; }
+ public HidePost setId(Long value) { this.id = value; return this; }
+ public Boolean isHide() { return hide; }
+ public HidePost setHide(Boolean value) { this.hide = value; return this; }
+ public String getReason() { return reason; }
+ public HidePost setReason(String value) { this.reason = value; return this; }
}
- public static class GetTechnologyStackPreviousVersionsResponse
+ @Route(Path="/posts/{Id}/status/{Status}", Verbs="PUT")
+ public static class ChangeStatusPost implements IReturnVoid, IPut
{
- public ArrayList Results = null;
+ public Long id = null;
+ public String status = null;
+ public String reason = null;
- public ArrayList getResults() { return Results; }
- public GetTechnologyStackPreviousVersionsResponse setResults(ArrayList value) { this.Results = value; return this; }
+ public Long getId() { return id; }
+ public ChangeStatusPost setId(Long value) { this.id = value; return this; }
+ public String getStatus() { return status; }
+ public ChangeStatusPost setStatus(String value) { this.status = value; return this; }
+ public String getReason() { return reason; }
+ public ChangeStatusPost setReason(String value) { this.reason = value; return this; }
}
- public static class GetTechnologyStackFavoriteDetailsResponse
+ @Route(Path="/posts/{PostId}/report/{Id}", Verbs="POST")
+ public static class ActionPostReport implements IReturnVoid, IPost
{
- public ArrayList Users = null;
- public Integer FavoriteCount = null;
+ public Long postId = null;
+ public Long id = null;
+ public ReportAction reportAction = null;
- public ArrayList getUsers() { return Users; }
- public GetTechnologyStackFavoriteDetailsResponse setUsers(ArrayList value) { this.Users = value; return this; }
- public Integer getFavoriteCount() { return FavoriteCount; }
- public GetTechnologyStackFavoriteDetailsResponse setFavoriteCount(Integer value) { this.FavoriteCount = value; return this; }
+ public Long getPostId() { return postId; }
+ public ActionPostReport setPostId(Long value) { this.postId = value; return this; }
+ public Long getId() { return id; }
+ public ActionPostReport setId(Long value) { this.id = value; return this; }
+ public ReportAction getReportAction() { return reportAction; }
+ public ActionPostReport setReportAction(ReportAction value) { this.reportAction = value; return this; }
}
- public static class GetConfigResponse
+ @Route(Path="/posts/{PostId}/comments", Verbs="POST")
+ public static class CreatePostComment implements IReturn, IPost
{
- public ArrayList
AllTiers = null;
+ public Long postId = null;
+ public Long replyId = null;
+ public String content = null;
- public ArrayList
getAllTiers() { return AllTiers; }
- public GetConfigResponse setAllTiers(ArrayList
value) { this.AllTiers = value; return this; }
+ public Long getPostId() { return postId; }
+ public CreatePostComment setPostId(Long value) { this.postId = value; return this; }
+ public Long getReplyId() { return replyId; }
+ public CreatePostComment setReplyId(Long value) { this.replyId = value; return this; }
+ public String getContent() { return content; }
+ public CreatePostComment setContent(String value) { this.content = value; return this; }
+ private static Object responseType = CreatePostCommentResponse.class;
+ public Object getResponseType() { return responseType; }
}
- public static class OverviewResponse
+ @Route(Path="/posts/{PostId}/comments/{Id}", Verbs="PUT")
+ public static class UpdatePostComment implements IReturn, IPut
{
- public Date Created = null;
- public ArrayList TopUsers = null;
- public ArrayList TopTechnologies = null;
- public ArrayList LatestTechStacks = null;
- public HashMap> TopTechnologiesByTier = null;
- public ResponseStatus ResponseStatus = null;
-
- public Date getCreated() { return Created; }
- public OverviewResponse setCreated(Date value) { this.Created = value; return this; }
- public ArrayList getTopUsers() { return TopUsers; }
- public OverviewResponse setTopUsers(ArrayList value) { this.TopUsers = value; return this; }
- public ArrayList getTopTechnologies() { return TopTechnologies; }
- public OverviewResponse setTopTechnologies(ArrayList value) { this.TopTechnologies = value; return this; }
- public ArrayList getLatestTechStacks() { return LatestTechStacks; }
- public OverviewResponse setLatestTechStacks(ArrayList value) { this.LatestTechStacks = value; return this; }
- public HashMap> getTopTechnologiesByTier() { return TopTechnologiesByTier; }
- public OverviewResponse setTopTechnologiesByTier(HashMap> value) { this.TopTechnologiesByTier = value; return this; }
- public ResponseStatus getResponseStatus() { return ResponseStatus; }
- public OverviewResponse setResponseStatus(ResponseStatus value) { this.ResponseStatus = value; return this; }
+ public Long id = null;
+ public Long postId = null;
+ public String content = null;
+
+ public Long getId() { return id; }
+ public UpdatePostComment setId(Long value) { this.id = value; return this; }
+ public Long getPostId() { return postId; }
+ public UpdatePostComment setPostId(Long value) { this.postId = value; return this; }
+ public String getContent() { return content; }
+ public UpdatePostComment setContent(String value) { this.content = value; return this; }
+ private static Object responseType = UpdatePostCommentResponse.class;
+ public Object getResponseType() { return responseType; }
}
- public static class AppOverviewResponse
+ @Route(Path="/posts/{PostId}/comments/{Id}", Verbs="DELETE")
+ public static class DeletePostComment implements IReturn, IDelete
{
- public Date Created = null;
- public ArrayList
AllTiers = null;
- public ArrayList TopTechnologies = null;
- public ResponseStatus ResponseStatus = null;
+ public Long id = null;
+ public Long postId = null;
- public Date getCreated() { return Created; }
- public AppOverviewResponse setCreated(Date value) { this.Created = value; return this; }
- public ArrayList
getAllTiers() { return AllTiers; }
- public AppOverviewResponse setAllTiers(ArrayList
value) { this.AllTiers = value; return this; }
- public ArrayList getTopTechnologies() { return TopTechnologies; }
- public AppOverviewResponse setTopTechnologies(ArrayList value) { this.TopTechnologies = value; return this; }
- public ResponseStatus getResponseStatus() { return ResponseStatus; }
- public AppOverviewResponse setResponseStatus(ResponseStatus value) { this.ResponseStatus = value; return this; }
+ public Long getId() { return id; }
+ public DeletePostComment setId(Long value) { this.id = value; return this; }
+ public Long getPostId() { return postId; }
+ public DeletePostComment setPostId(Long value) { this.postId = value; return this; }
+ private static Object responseType = DeletePostCommentResponse.class;
+ public Object getResponseType() { return responseType; }
}
- public static class GetFavoriteTechStackResponse
+ @Route(Path="/posts/{PostId}/comments/{PostCommentId}/report/{Id}", Verbs="POST")
+ public static class ActionPostCommentReport implements IReturnVoid, IPost
{
- public ArrayList Results = null;
+ public Long id = null;
+ public Long postCommentId = null;
+ public Long postId = null;
+ public ReportAction reportAction = null;
- public ArrayList getResults() { return Results; }
- public GetFavoriteTechStackResponse setResults(ArrayList value) { this.Results = value; return this; }
+ public Long getId() { return id; }
+ public ActionPostCommentReport setId(Long value) { this.id = value; return this; }
+ public Long getPostCommentId() { return postCommentId; }
+ public ActionPostCommentReport setPostCommentId(Long value) { this.postCommentId = value; return this; }
+ public Long getPostId() { return postId; }
+ public ActionPostCommentReport setPostId(Long value) { this.postId = value; return this; }
+ public ReportAction getReportAction() { return reportAction; }
+ public ActionPostCommentReport setReportAction(ReportAction value) { this.reportAction = value; return this; }
}
- public static class FavoriteTechStackResponse
+ @Route("/user/comments/votes")
+ public static class GetUserPostCommentVotes implements IReturn, IGet
{
- public TechnologyStack Result = null;
+ public Long postId = null;
- public TechnologyStack getResult() { return Result; }
- public FavoriteTechStackResponse setResult(TechnologyStack value) { this.Result = value; return this; }
+ public Long getPostId() { return postId; }
+ public GetUserPostCommentVotes setPostId(Long value) { this.postId = value; return this; }
+ private static Object responseType = GetUserPostCommentVotesResponse.class;
+ public Object getResponseType() { return responseType; }
}
- public static class GetFavoriteTechnologiesResponse
+ @Route(Path="/posts/{PostId}/comments/{Id}/pin", Verbs="PUT")
+ public static class PinPostComment implements IReturn, IPut
{
- public ArrayList Results = null;
+ public Long id = null;
+ public Long postId = null;
+ public Boolean pin = null;
- public ArrayList getResults() { return Results; }
- public GetFavoriteTechnologiesResponse setResults(ArrayList value) { this.Results = value; return this; }
+ public Long getId() { return id; }
+ public PinPostComment setId(Long value) { this.id = value; return this; }
+ public Long getPostId() { return postId; }
+ public PinPostComment setPostId(Long value) { this.postId = value; return this; }
+ public Boolean isPin() { return pin; }
+ public PinPostComment setPin(Boolean value) { this.pin = value; return this; }
+ private static Object responseType = PinPostCommentResponse.class;
+ public Object getResponseType() { return responseType; }
}
- public static class FavoriteTechnologyResponse
+ @Route("/users/by-email")
+ public static class GetUsersByEmails implements IReturn, IGet
{
- public Technology Result = null;
+ public ArrayList emails = null;
- public Technology getResult() { return Result; }
- public FavoriteTechnologyResponse setResult(Technology value) { this.Result = value; return this; }
+ public ArrayList getEmails() { return emails; }
+ public GetUsersByEmails setEmails(ArrayList value) { this.emails = value; return this; }
+ private static Object responseType = GetUsersByEmailsResponse.class;
+ public Object getResponseType() { return responseType; }
}
- public static class GetUserFeedResponse
+ @Route("/user/posts/activity")
+ public static class GetUserPostActivity implements IReturn, IGet
{
- public ArrayList Results = null;
- public ArrayList getResults() { return Results; }
- public GetUserFeedResponse setResults(ArrayList value) { this.Results = value; return this; }
+ private static Object responseType = GetUserPostActivityResponse.class;
+ public Object getResponseType() { return responseType; }
}
- public static class GetUserInfoResponse
+ @Route("/user/organizations")
+ public static class GetUserOrganizations implements IReturn, IGet
{
- public String UserName = null;
- public Date Created = null;
- public String AvatarUrl = null;
- public ArrayList TechStacks = null;
- public ArrayList FavoriteTechStacks = null;
- public ArrayList FavoriteTechnologies = null;
-
- public String getUserName() { return UserName; }
- public GetUserInfoResponse setUserName(String value) { this.UserName = value; return this; }
- public Date getCreated() { return Created; }
- public GetUserInfoResponse setCreated(Date value) { this.Created = value; return this; }
- public String getAvatarUrl() { return AvatarUrl; }
- public GetUserInfoResponse setAvatarUrl(String value) { this.AvatarUrl = value; return this; }
- public ArrayList getTechStacks() { return TechStacks; }
- public GetUserInfoResponse setTechStacks(ArrayList value) { this.TechStacks = value; return this; }
- public ArrayList getFavoriteTechStacks() { return FavoriteTechStacks; }
- public GetUserInfoResponse setFavoriteTechStacks(ArrayList value) { this.FavoriteTechStacks = value; return this; }
- public ArrayList getFavoriteTechnologies() { return FavoriteTechnologies; }
- public GetUserInfoResponse setFavoriteTechnologies(ArrayList