diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md deleted file mode 100644 index 15c7f60..0000000 --- a/.github/ISSUE_TEMPLATE.md +++ /dev/null @@ -1,33 +0,0 @@ - -> Please provide us with the following information: -> --------------------------------------------------------------- - -### This issue is for a: (mark with an `x`) -``` -- [ ] bug report -> please search issues before submitting -- [ ] feature request -- [ ] documentation issue or request -- [ ] regression (a behavior that used to work and stopped in a new release) -``` - -### Minimal steps to reproduce -> - -### Any log messages given by the failure -> - -### Expected/desired behavior -> - -### OS and Version? -> Windows 7, 8 or 10. Linux (which distribution). macOS (Yosemite? El Capitan? Sierra?) - -### Versions -> - -### Mention any other details that might be useful - -> --------------------------------------------------------------- -> Thanks! We'll be in touch soon. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index ab05e29..0000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,45 +0,0 @@ -## Purpose - -* ... - -## Does this introduce a breaking change? - -``` -[ ] Yes -[ ] No -``` - -## Pull Request Type -What kind of change does this Pull Request introduce? - - -``` -[ ] Bugfix -[ ] Feature -[ ] Code style update (formatting, local variables) -[ ] Refactoring (no functional changes, no api changes) -[ ] Documentation content changes -[ ] Other... Please describe: -``` - -## How to Test -* Get the code - -``` -git clone [repo-address] -cd [repo-name] -git checkout [branch-name] -npm install -``` - -* Test the code - -``` -``` - -## What to Check -Verify that the following are valid -* ... - -## Other Information - \ No newline at end of file diff --git a/.gitignore b/.gitignore deleted file mode 100644 index a9b35aa..0000000 --- a/.gitignore +++ /dev/null @@ -1,28 +0,0 @@ -# Compiled class file -*.class - -# Log file -*.log - -# BlueJ files -*.ctxt - -# Mobile Tools for Java (J2ME) -.mtj.tmp/ - -# Package Files # -*.jar -*.war -*.ear -*.zip -*.tar.gz -*.rar - -# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml -hs_err_pid* - -# eclipse -.classpath -.project -.settings/ -target/ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index 4bd3eba..0000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,76 +0,0 @@ -# Contributing to [project-title] - -This project welcomes contributions and suggestions. Most contributions require you to agree to a -Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us -the rights to use your contribution. For details, visit https://cla.microsoft.com. - -When you submit a pull request, a CLA-bot will automatically determine whether you need to provide -a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions -provided by the bot. You will only need to do this once across all repos using our CLA. - -This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). -For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or -contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. - - - [Code of Conduct](#coc) - - [Issues and Bugs](#issue) - - [Feature Requests](#feature) - - [Submission Guidelines](#submit) - -## Code of Conduct -Help us keep this project open and inclusive. Please read and follow our [Code of Conduct](https://opensource.microsoft.com/codeofconduct/). - -## Found an Issue? -If you find a bug in the source code or a mistake in the documentation, you can help us by -[submitting an issue](#submit-issue) to the GitHub Repository. Even better, you can -[submit a Pull Request](#submit-pr) with a fix. - -## Want a Feature? -You can *request* a new feature by [submitting an issue](#submit-issue) to the GitHub -Repository. If you would like to *implement* a new feature, please submit an issue with -a proposal for your work first, to be sure that we can use it. - -* **Small Features** can be crafted and directly [submitted as a Pull Request](#submit-pr). - -## Submission Guidelines - -### Submitting an Issue -Before you submit an issue, search the archive, maybe your question was already answered. - -If your issue appears to be a bug, and hasn't been reported, open a new issue. -Help us to maximize the effort we can spend fixing issues and adding new -features, by not reporting duplicate issues. Providing the following information will increase the -chances of your issue being dealt with quickly: - -* **Overview of the Issue** - if an error is being thrown a non-minified stack trace helps -* **Version** - what version is affected (e.g. 0.1.2) -* **Motivation for or Use Case** - explain what are you trying to do and why the current behavior is a bug for you -* **Browsers and Operating System** - is this a problem with all browsers? -* **Reproduce the Error** - provide a live example or a unambiguous set of steps -* **Related Issues** - has a similar issue been reported before? -* **Suggest a Fix** - if you can't fix the bug yourself, perhaps you can point to what might be - causing the problem (line of code or commit) - -You can file new issues by providing the above information at the corresponding repository's issues link: https://github.com/[organization-name]/[repository-name]/issues/new]. - -### Submitting a Pull Request (PR) -Before you submit your Pull Request (PR) consider the following guidelines: - -* Search the repository (https://github.com/[organization-name]/[repository-name]/pulls) for an open or closed PR - that relates to your submission. You don't want to duplicate effort. - -* Make your changes in a new git fork: - -* Commit your changes using a descriptive commit message -* Push your fork to GitHub: -* In GitHub, create a pull request -* If we suggest changes then: - * Make the required updates. - * Rebase your fork and force push to your GitHub repository (this will update your Pull Request): - - ```shell - git rebase master -i - git push -f - ``` - -That's it! Thank you for your contribution! diff --git a/LICENSE.md b/LICENSE.md deleted file mode 100644 index d1ca00f..0000000 --- a/LICENSE.md +++ /dev/null @@ -1,21 +0,0 @@ - MIT License - - Copyright (c) Microsoft Corporation. All rights reserved. - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE \ No newline at end of file diff --git a/README.md b/README.md index 7650e1a..ce3508a 100644 --- a/README.md +++ b/README.md @@ -28,22 +28,12 @@ Azure Cosmos DB is a globally distributed multi-model database. One of the suppo * Then, clone this repository using ```bash -git clone https://github.com/Azure-Samples/azure-cosmos-db-sql-api-async-java-getting-started.git +git clone https://github.com/Azure-Samples/azure-cosmos-java-getting-started.git ``` -* From a command prompt or shell, run the following command to compile and resolve dependencies. +* More [Cosmos samples](https://github.com/Azure-Samples/azure-cosmos-java-sql-api-samples). -```bash -cd azure-cosmos-db-sql-api-async-java-getting-started -cd azure-cosmosdb-get-started -mvn clean package -``` - -* From a command prompt or shell, run the following command to run the application. -```bash -mvn exec:java -DACCOUNT_HOST=YOUR_COSMOS_DB_HOSTNAME -DACCOUNT_KEY=YOUR_COSMOS_DB_MASTER_KEY -``` ## About the code diff --git a/azure-cosmosdb-get-started/pom.xml b/azure-cosmosdb-get-started/pom.xml deleted file mode 100644 index f54bce5..0000000 --- a/azure-cosmosdb-get-started/pom.xml +++ /dev/null @@ -1,59 +0,0 @@ - - 4.0.0 - com.microsoft.azure - azure-cosmosdb-get-started - 1.0.0-SNAPSHOT - Get Started With Async Java SDK for SQL API of Azure Cosmos DB Database Service - - UTF-8 - - - - - maven-compiler-plugin - 3.1 - - 1.8 - 1.8 - - - - org.codehaus.mojo - exec-maven-plugin - 1.6.0 - - com.microsoft.azure.cosmosdb.sample.Main - - - - org.apache.maven.plugins - maven-eclipse-plugin - 2.8 - - - - org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8 - - - - - - - - - com.microsoft.azure - azure-cosmosdb - 2.2.0 - - - org.slf4j - slf4j-log4j12 - 1.7.6 - - - log4j - log4j - 1.2.17 - - - diff --git a/azure-cosmosdb-get-started/src/main/java/com/microsoft/azure/cosmosdb/sample/AccountSettings.java b/azure-cosmosdb-get-started/src/main/java/com/microsoft/azure/cosmosdb/sample/AccountSettings.java deleted file mode 100644 index 347a256..0000000 --- a/azure-cosmosdb-get-started/src/main/java/com/microsoft/azure/cosmosdb/sample/AccountSettings.java +++ /dev/null @@ -1,59 +0,0 @@ -/** - * The MIT License (MIT) - * Copyright (c) 2018 Microsoft Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -package com.microsoft.azure.cosmosdb.sample; - -import org.apache.commons.lang3.StringUtils; - -/** - * Contains the account configurations for Sample. - * - * For running tests, you can pass a customized endpoint configuration in one of the following - * ways: - * - * - * If none of the above is set, emulator endpoint will be used. - * Emulator http cert is self signed. If you are using emulator, - * make sure emulator https certificate is imported - * to java trusted cert store: - * https://docs.microsoft.com/en-us/azure/cosmos-db/local-emulator-export-ssl-certificates - */ -public class AccountSettings { - // Replace MASTER_KEY and HOST with values from your Azure Cosmos DB account. - // The default values are credentials of the local emulator, which are not used in any production environment. - // - public static String MASTER_KEY = - System.getProperty("ACCOUNT_KEY", - StringUtils.defaultString(StringUtils.trimToNull( - System.getenv().get("ACCOUNT_KEY")), - "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==")); - - public static String HOST = - System.getProperty("ACCOUNT_HOST", - StringUtils.defaultString(StringUtils.trimToNull( - System.getenv().get("ACCOUNT_HOST")), - "https://localhost:443/")); -} diff --git a/azure-cosmosdb-get-started/src/main/java/com/microsoft/azure/cosmosdb/sample/Address.java b/azure-cosmosdb-get-started/src/main/java/com/microsoft/azure/cosmosdb/sample/Address.java deleted file mode 100644 index 68def20..0000000 --- a/azure-cosmosdb-get-started/src/main/java/com/microsoft/azure/cosmosdb/sample/Address.java +++ /dev/null @@ -1,55 +0,0 @@ -/** - * The MIT License (MIT) - * Copyright (c) 2018 Microsoft Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package com.microsoft.azure.cosmosdb.sample; - -public class Address { - public String getState() { - return state; - } - - public void setState(String state) { - this.state = state; - } - - public String getCounty() { - return county; - } - - public void setCounty(String county) { - this.county = county; - } - - public String getCity() { - return city; - } - - public void setCity(String city) { - this.city = city; - } - - private String state; - private String county; - private String city; -} - diff --git a/azure-cosmosdb-get-started/src/main/java/com/microsoft/azure/cosmosdb/sample/Child.java b/azure-cosmosdb-get-started/src/main/java/com/microsoft/azure/cosmosdb/sample/Child.java deleted file mode 100644 index a3180a2..0000000 --- a/azure-cosmosdb-get-started/src/main/java/com/microsoft/azure/cosmosdb/sample/Child.java +++ /dev/null @@ -1,73 +0,0 @@ -/** - * The MIT License (MIT) - * Copyright (c) 2018 Microsoft Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package com.microsoft.azure.cosmosdb.sample; - -public class Child { - public String getFamilyName() { - return familyName; - } - - public void setFamilyName(String familyName) { - this.familyName = familyName; - } - - public String getFirstName() { - return firstName; - } - - public void setFirstName(String firstName) { - this.firstName = firstName; - } - - public String getGender() { - return gender; - } - - public void setGender(String gender) { - this.gender = gender; - } - - public int getGrade() { - return grade; - } - - public void setGrade(int grade) { - this.grade = grade; - } - - public Pet[] getPets() { - return pets; - } - - public void setPets(Pet[] pets) { - this.pets = pets; - } - - private String familyName; - private String firstName; - private String gender; - private int grade; - private Pet[] pets; -} - diff --git a/azure-cosmosdb-get-started/src/main/java/com/microsoft/azure/cosmosdb/sample/Families.java b/azure-cosmosdb-get-started/src/main/java/com/microsoft/azure/cosmosdb/sample/Families.java deleted file mode 100644 index ff0ced1..0000000 --- a/azure-cosmosdb-get-started/src/main/java/com/microsoft/azure/cosmosdb/sample/Families.java +++ /dev/null @@ -1,136 +0,0 @@ -/** - * The MIT License (MIT) - * Copyright (c) 2018 Microsoft Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -package com.microsoft.azure.cosmosdb.sample; - -public class Families { - - public static Family getAndersenFamilyDocument() { - Family andersenFamily = new Family(); - andersenFamily.setId("Andersen-" + System.currentTimeMillis()); - andersenFamily.setLastName("Andersen"); - - Parent parent1 = new Parent(); - parent1.setFirstName("Thomas"); - - Parent parent2 = new Parent(); - parent2.setFirstName("Mary Kay"); - - andersenFamily.setParents(new Parent[] { parent1, parent2 }); - - Child child1 = new Child(); - child1.setFirstName("Henriette Thaulow"); - child1.setGender("female"); - child1.setGrade(5); - - Pet pet1 = new Pet(); - pet1.setGivenName("Fluffy"); - - child1.setPets(new Pet[] { pet1 }); - - andersenFamily.setDistrict("WA5"); - Address address = new Address(); - address.setCity("Seattle"); - address.setCounty("King"); - address.setState("WA"); - - andersenFamily.setAddress(address); - andersenFamily.setRegistered(true); - - return andersenFamily; - } - - public static Family getWakefieldFamilyDocument() { - Family wakefieldFamily = new Family(); - wakefieldFamily.setId("Wakefield-" + System.currentTimeMillis()); - wakefieldFamily.setLastName("Wakefield"); - - Parent parent1 = new Parent(); - parent1.setFamilyName("Wakefield"); - parent1.setFirstName("Robin"); - - Parent parent2 = new Parent(); - parent2.setFamilyName("Miller"); - parent2.setFirstName("Ben"); - - wakefieldFamily.setParents(new Parent[] { parent1, parent2 }); - - Child child1 = new Child(); - child1.setFirstName("Jesse"); - child1.setFamilyName("Merriam"); - child1.setGrade(8); - - Pet pet1 = new Pet(); - pet1.setGivenName("Goofy"); - - Pet pet2 = new Pet(); - pet2.setGivenName("Shadow"); - - child1.setPets(new Pet[] { pet1, pet2 }); - - Child child2 = new Child(); - child2.setFirstName("Lisa"); - child2.setFamilyName("Miller"); - child2.setGrade(1); - child2.setGender("female"); - - wakefieldFamily.setChildren(new Child[] { child1, child2 }); - - Address address = new Address(); - address.setCity("NY"); - address.setCounty("Manhattan"); - address.setState("NY"); - - wakefieldFamily.setAddress(address); - wakefieldFamily.setDistrict("NY23"); - wakefieldFamily.setRegistered(true); - return wakefieldFamily; - } - - public static Family getJohnsonFamilyDocument() { - Family andersenFamily = new Family(); - andersenFamily.setId("Johnson-" + System.currentTimeMillis()); - andersenFamily.setLastName("Johnson"); - - Parent parent1 = new Parent(); - parent1.setFirstName("John"); - - Parent parent2 = new Parent(); - parent2.setFirstName("Lili"); - - return andersenFamily; - } - - public static Family getSmithFamilyDocument() { - Family andersenFamily = new Family(); - andersenFamily.setId("Smith-" + System.currentTimeMillis()); - andersenFamily.setLastName("Smith"); - - Parent parent1 = new Parent(); - parent1.setFirstName("John"); - - Parent parent2 = new Parent(); - parent2.setFirstName("Cynthia"); - - return andersenFamily; - } -} diff --git a/azure-cosmosdb-get-started/src/main/java/com/microsoft/azure/cosmosdb/sample/Family.java b/azure-cosmosdb-get-started/src/main/java/com/microsoft/azure/cosmosdb/sample/Family.java deleted file mode 100644 index b300508..0000000 --- a/azure-cosmosdb-get-started/src/main/java/com/microsoft/azure/cosmosdb/sample/Family.java +++ /dev/null @@ -1,94 +0,0 @@ -/** - * The MIT License (MIT) - * Copyright (c) 2018 Microsoft Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package com.microsoft.azure.cosmosdb.sample; - -public class Family { - public Family() { - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getLastName() { - return lastName; - } - - public void setLastName(String lastName) { - this.lastName = lastName; - } - - public String getDistrict() { - return district; - } - - public void setDistrict(String district) { - this.district = district; - } - - public Parent[] getParents() { - return parents; - } - - public void setParents(Parent[] parents) { - this.parents = parents; - } - - public Child[] getChildren() { - return children; - } - - public void setChildren(Child[] children) { - this.children = children; - } - - public Address getAddress() { - return address; - } - - public void setAddress(Address address) { - this.address = address; - } - - public boolean isRegistered() { - return isRegistered; - } - - public void setRegistered(boolean isRegistered) { - this.isRegistered = isRegistered; - } - - private String id; - private String lastName; - private String district; - private Parent[] parents; - private Child[] children; - private Address address; - private boolean isRegistered; -} - diff --git a/azure-cosmosdb-get-started/src/main/java/com/microsoft/azure/cosmosdb/sample/Main.java b/azure-cosmosdb-get-started/src/main/java/com/microsoft/azure/cosmosdb/sample/Main.java deleted file mode 100644 index bb6bf74..0000000 --- a/azure-cosmosdb-get-started/src/main/java/com/microsoft/azure/cosmosdb/sample/Main.java +++ /dev/null @@ -1,353 +0,0 @@ -/* - * The MIT License (MIT) - * Copyright (c) 2018 Microsoft Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package com.microsoft.azure.cosmosdb.sample; - -import com.microsoft.azure.cosmosdb.ConnectionPolicy; -import com.microsoft.azure.cosmosdb.ConsistencyLevel; -import com.microsoft.azure.cosmosdb.Database; -import com.microsoft.azure.cosmosdb.Document; -import com.microsoft.azure.cosmosdb.DocumentClientException; -import com.microsoft.azure.cosmosdb.DocumentCollection; -import com.microsoft.azure.cosmosdb.FeedOptions; -import com.microsoft.azure.cosmosdb.FeedResponse; -import com.microsoft.azure.cosmosdb.RequestOptions; -import com.microsoft.azure.cosmosdb.ResourceResponse; -import com.microsoft.azure.cosmosdb.SqlParameter; -import com.microsoft.azure.cosmosdb.SqlParameterCollection; -import com.microsoft.azure.cosmosdb.SqlQuerySpec; -import com.microsoft.azure.cosmosdb.rx.AsyncDocumentClient; -import rx.Observable; -import rx.Scheduler; -import rx.schedulers.Schedulers; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.TimeUnit; -import java.util.stream.Collectors; - -public class Main { - private final ExecutorService executorService; - private final Scheduler scheduler; - - private AsyncDocumentClient client; - - private final String databaseName = "AzureSampleFamilyDB"; - private final String collectionName = "FamilyCollection"; - - public Main() { - executorService = Executors.newFixedThreadPool(100); - // The SDK uses netty library for doing async IO operations. The IO operations are performed on the netty io threads. - // The number of IO netty threads are limited; it is the same as the number of CPU cores. - - // The app should avoid doing anything which takes a lot of time from IO netty thread. - // If the app consumes too much of IO netty thread you may face: - // * low throughput - // * bad latency - // * ReadTimeoutException because there is no netty IO thread available to read data from network. - // * deadlock - - // The app code will receive the data from Azure Cosmos DB on the netty IO thread. - // The app should ensure the user's computationally/IO heavy work after receiving data - // from Azure Cosmos DB is performed on a custom thread managed by the user (not on the SDK netty IO thread). - // - // If you are doing heavy work after receiving the result from the SDK, - // you should provide your own scheduler to switch thread. - - // the following scheduler is used for switching from netty thread to user app thread. - scheduler = Schedulers.from(executorService); - } - - public void close() { - executorService.shutdown(); - client.close(); - } - - /** - * Run a Hello DocumentDB console application. - * - * @param args command line args. - */ - public static void main(String[] args) { - Main p = new Main(); - - try { - p.getStartedDemo(); - System.out.println(String.format("Demo complete, please hold while resources are released")); - } catch (Exception e) { - System.err.println(String.format("DocumentDB GetStarted failed with %s", e)); - } finally { - System.out.println("close the client"); - p.close(); - } - System.exit(0); - } - - private void getStartedDemo() throws Exception { - System.out.println("Using Azure Cosmos DB endpoint: " + AccountSettings.HOST); - - client = new AsyncDocumentClient.Builder() - .withServiceEndpoint(AccountSettings.HOST) - .withMasterKeyOrResourceToken(AccountSettings.MASTER_KEY) - .withConnectionPolicy(ConnectionPolicy.GetDefault()) - .withConsistencyLevel(ConsistencyLevel.Eventual) - .build(); - - createDatabaseIfNotExists(); - createDocumentCollectionIfNotExists(); - - Family andersenFamily = Families.getAndersenFamilyDocument(); - Family wakefieldFamily = Families.getWakefieldFamilyDocument(); - - ArrayList familiesToCreate = new ArrayList<>(); - familiesToCreate.add(andersenFamily); - familiesToCreate.add(wakefieldFamily); - - createFamiliesAndWaitForCompletion(familiesToCreate); - - familiesToCreate = new ArrayList<>(); - familiesToCreate.add(Families.getJohnsonFamilyDocument()); - familiesToCreate.add(Families.getSmithFamilyDocument()); - - CountDownLatch createDocumentsCompletionLatch = new CountDownLatch(1); - - System.out.println("Creating documents async and registering listener for the completion."); - createFamiliesAsyncAndRegisterListener(familiesToCreate, createDocumentsCompletionLatch); - - CountDownLatch queryCompletionLatch = new CountDownLatch(1); - - System.out.println("Querying documents async and registering listener for the result."); - executeSimpleQueryAsyncAndRegisterListenerForResult(queryCompletionLatch); - - // as createFamiliesAsyncAndRegisterListener starts the operation in background - // and only registers a listener, we used the createDocumentsCompletionLatch - // to ensure we wait for the completion - createDocumentsCompletionLatch.await(); - - // as executeSimpleQueryAsyncAndRegisterListenerForResult starts the operation in background - // and only registers a listener, we used the queryCompletionLatch - // to ensure we wait for the completion - queryCompletionLatch.await(); - } - - private void createDatabaseIfNotExists() throws Exception { - writeToConsoleAndPromptToContinue( - "Check if database " + databaseName + " exists."); - - String databaseLink = String.format("/dbs/%s", databaseName); - - Observable> databaseReadObs = - client.readDatabase(databaseLink, null); - - Observable> databaseExistenceObs = - databaseReadObs - .doOnNext(x -> { - System.out.println("database " + databaseName + " already exists."); - }) - .onErrorResumeNext( - e -> { - // if the database doesn't already exists - // readDatabase() will result in 404 error - if (e instanceof DocumentClientException) { - DocumentClientException de = (DocumentClientException) e; - // if database - if (de.getStatusCode() == 404) { - // if the database doesn't exist, create it. - System.out.println("database " + databaseName + " doesn't existed," - + " creating it..."); - - Database dbDefinition = new Database(); - dbDefinition.setId(databaseName); - - return client.createDatabase(dbDefinition, null); - } - } - - // some unexpected failure in reading database happened. - // pass the error up. - System.err.println("Reading database " + databaseName + " failed."); - return Observable.error(e); - }); - - - // wait for completion, - // as waiting for completion is a blocking call try to - // provide your own scheduler to avoid stealing netty io threads. - databaseExistenceObs.toCompletable().await(); - - System.out.println("Checking database " + databaseName + " completed!\n"); - } - - private void createDocumentCollectionIfNotExists() throws Exception { - writeToConsoleAndPromptToContinue( - "Check if collection " + collectionName + " exists."); - - // query for a collection with a given id - // if it exists nothing else to be done - // if the collection doesn't exist, create it. - - String databaseLink = String.format("/dbs/%s", databaseName); - - client.queryCollections(databaseLink, - new SqlQuerySpec("SELECT * FROM r where r.id = @id", - new SqlParameterCollection( - new SqlParameter("@id", collectionName))), null) - .single() // we know there is only single page of result (empty or with a match) - .flatMap(page -> { - if (page.getResults().isEmpty()) { - // if there is no matching collection create the collection. - DocumentCollection collection = new DocumentCollection(); - collection.setId(collectionName); - System.out.println("Creating collection " + collectionName); - - return client.createCollection(databaseLink, collection, null); - } else { - // collection already exists, nothing else to be done. - System.out.println("Collection " + collectionName + "already exists"); - return Observable.empty(); - } - }).toCompletable().await(); - - System.out.println("Checking collection " + collectionName + " completed!\n"); - } - - private void createFamiliesAsyncAndRegisterListener(List families, CountDownLatch completionLatch) { - - String collectionLink = String.format("/dbs/%s/colls/%s", databaseName, collectionName); - - List>> createDocumentsOBs = new ArrayList<>(); - for (Family family : families) { - Observable> obs = client.createDocument( - collectionLink, family, new RequestOptions(), true); - createDocumentsOBs.add(obs); - } - - Observable.merge(createDocumentsOBs) - .map(ResourceResponse::getRequestCharge) - .reduce((sum, value) -> sum + value) - .subscribe( - totalRequestCharge -> { - // this will get print out when completed - System.out.println("total charge for creating documents is " - + totalRequestCharge); - }, - - // terminal error signal - e -> { - e.printStackTrace(); - completionLatch.countDown(); - }, - - // terminal completion signal - () -> { - completionLatch.countDown(); - }); - } - - private void createFamiliesAndWaitForCompletion(List families) throws Exception { - String collectionLink = String.format("/dbs/%s/colls/%s", databaseName, collectionName); - - List>> createDocumentsOBs = new ArrayList<>(); - for (Family family : families) { - Observable> obs = client.createDocument( - collectionLink, family, new RequestOptions(), true); - createDocumentsOBs.add(obs); - } - - Double totalRequestCharge = Observable.merge(createDocumentsOBs) - .map(ResourceResponse::getRequestCharge) - .observeOn(scheduler) // the scheduler will be used for the following work - .map(charge -> { - // as we don't want to run heavyWork() on netty IO thread, we provide the custom scheduler - // for switching from netty IO thread to user thread. - heavyWork(); - return charge; - }) - .reduce((sum, value) -> sum + value) - .toBlocking().single(); - - writeToConsoleAndPromptToContinue(String.format("Created %d documents with total request charge of %.2f", - families.size(), - totalRequestCharge)); - } - - private void heavyWork() { - // I may do a lot of IO work: e.g., writing to log files - // a lot of computational work - // or may do Thread.sleep() - - try { - TimeUnit.SECONDS.sleep(2); - } catch (Exception e) { - } - } - - private void executeSimpleQueryAsyncAndRegisterListenerForResult(CountDownLatch completionLatch) { - // Set some common query options - FeedOptions queryOptions = new FeedOptions(); - queryOptions.setMaxItemCount(10); - queryOptions.setEnableCrossPartitionQuery(true); - - String collectionLink = String.format("/dbs/%s/colls/%s", databaseName, collectionName); - Observable> queryObservable = - client.queryDocuments(collectionLink, - "SELECT * FROM Family WHERE Family.lastName != 'Andersen'", queryOptions); - - queryObservable - .observeOn(scheduler) - .subscribe( - page -> { - // we want to make sure heavyWork() doesn't block any of netty IO threads - // so we use observeOn(scheduler) to switch from the netty thread to user's thread. - heavyWork(); - - System.out.println("Got a page of query result with " + - page.getResults().size() + " document(s)" - + " and request charge of " + page.getRequestCharge()); - - - System.out.println("Document Ids " + page.getResults().stream().map(d -> d.getId()) - .collect(Collectors.toList())); - }, - // terminal error signal - e -> { - e.printStackTrace(); - completionLatch.countDown(); - }, - - // terminal completion signal - () -> { - completionLatch.countDown(); - }); - } - - private void writeToConsoleAndPromptToContinue(String text) throws IOException { - System.out.println(text); - System.out.println("Press any key to continue ..."); - System.in.read(); - } -} diff --git a/azure-cosmosdb-get-started/src/main/java/com/microsoft/azure/cosmosdb/sample/Parent.java b/azure-cosmosdb-get-started/src/main/java/com/microsoft/azure/cosmosdb/sample/Parent.java deleted file mode 100644 index 0df7dd8..0000000 --- a/azure-cosmosdb-get-started/src/main/java/com/microsoft/azure/cosmosdb/sample/Parent.java +++ /dev/null @@ -1,53 +0,0 @@ -/** - * The MIT License (MIT) - * Copyright (c) 2018 Microsoft Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package com.microsoft.azure.cosmosdb.sample; - -public class Parent { - - public Parent() { - } - - public Parent(String firstName) { - this.firstName = firstName; - } - - public String getFamilyName() { - return familyName; - } - - public void setFamilyName(String familyName) { - this.familyName = familyName; - } - - public String getFirstName() { - return firstName; - } - - public void setFirstName(String firstName) { - this.firstName = firstName; - } - - private String familyName; - private String firstName; -} diff --git a/azure-cosmosdb-get-started/src/main/java/com/microsoft/azure/cosmosdb/sample/Pet.java b/azure-cosmosdb-get-started/src/main/java/com/microsoft/azure/cosmosdb/sample/Pet.java deleted file mode 100644 index 3a6d392..0000000 --- a/azure-cosmosdb-get-started/src/main/java/com/microsoft/azure/cosmosdb/sample/Pet.java +++ /dev/null @@ -1,36 +0,0 @@ -/** - * The MIT License (MIT) - * Copyright (c) 2018 Microsoft Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package com.microsoft.azure.cosmosdb.sample; - -public class Pet { - public String getGivenName() { - return givenName; - } - - public void setGivenName(String givenName) { - this.givenName = givenName; - } - - private String givenName; -} diff --git a/azure-cosmosdb-get-started/src/main/resources/log4j.properties b/azure-cosmosdb-get-started/src/main/resources/log4j.properties deleted file mode 100644 index 81050c5..0000000 --- a/azure-cosmosdb-get-started/src/main/resources/log4j.properties +++ /dev/null @@ -1,15 +0,0 @@ -# this is the log4j configuration for tests - -# Set root logger level to DEBUG and its only appender to A1. -log4j.rootLogger=WARN, A1 - -# Set HTTP components' logger to INFO - -log4j.category.io.netty=INFO -log4j.category.io.reactivex=INFO -# A1 is set to be a ConsoleAppender. -log4j.appender.A1=org.apache.log4j.ConsoleAppender - -# A1 uses PatternLayout. -log4j.appender.A1.layout=org.apache.log4j.PatternLayout -log4j.appender.A1.layout.ConversionPattern=%d %5X{pid} [%t] %-5p %c - %m%n