{"id":23734591,"url":"https://github.com/benelog/lambda-resort","last_synced_at":"2025-09-04T09:33:55.310Z","repository":{"id":25362884,"uuid":"28790745","full_name":"benelog/lambda-resort","owner":"benelog","description":"examples of filtering, sorting, mapping by Java, Groovy, Scala, Kotlin, Xtend, Ceylon","archived":false,"fork":false,"pushed_at":"2016-01-03T20:00:03.000Z","size":421,"stargazers_count":25,"open_issues_count":0,"forks_count":10,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-04-05T06:41:31.110Z","etag":null,"topics":["groovy","java","lambda","xtend"],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/benelog.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-01-05T00:31:09.000Z","updated_at":"2022-02-22T08:23:14.000Z","dependencies_parsed_at":"2022-08-24T04:31:02.905Z","dependency_job_id":null,"html_url":"https://github.com/benelog/lambda-resort","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/benelog/lambda-resort","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benelog%2Flambda-resort","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benelog%2Flambda-resort/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benelog%2Flambda-resort/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benelog%2Flambda-resort/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/benelog","download_url":"https://codeload.github.com/benelog/lambda-resort/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benelog%2Flambda-resort/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273583607,"owners_count":25131869,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-04T02:00:08.968Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["groovy","java","lambda","xtend"],"created_at":"2024-12-31T05:46:10.886Z","updated_at":"2025-09-04T09:33:54.932Z","avatar_url":"https://github.com/benelog.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# Filtering, sorting, mapping\n\n### Backgrounds\n[Guest.java](src/main/java/com/naver/helloworld/resort/domain/Guest.java)\n\n```java\npublic class Guest {\n\tprivate final int grade;\n\tprivate final String name;\n\tprivate final String company;\n...\n}\n```\n\n[GuestRepository.java](src/main/java/com/naver/helloworld/resort/repository/GuestRepository.java)\n\n```java\nimport java.util.List;\n\npublic interface GuestRepository {\n\tpublic List\u003cGuest\u003e findAllGuest ();\n}\n```\n\n[ResortService.java](src/main/java/com/naver/helloworld/resort/service/ResortService.java)\n\n```java\npublic interface ResortService {\n\tpublic List\u003cString\u003e findGuestNamesByCompany (String company);\n}\n```\n\n## Implementations by classic Java\n### JDK Collections framework\n[ClassicJavaResort.java](src/main/java/com/naver/helloworld/resort/service/ClassicJavaResort.java)\n\n```java\npublic List\u003cString\u003e findGuestNamesbyCompany(String company) {\n\tList\u003cGuest\u003e all = repository.findAllGuest();\n\n\tList\u003cGuest\u003e filtered = filter(guests, company);\n\tsort(filtered);\n\treturn mapNames(filtered);\n}\n\nprivate List\u003cGuest\u003e filter(List\u003cGuest\u003e guests, String company) {\n\tList\u003cGuest\u003e filtered = new  ArrayList\u003c\u003e();\n\tfor(Guest guest : guests ) {\n\t\tif (company.equals(guest.getCompany())) {\n\t\t\tfiltered.add(guest);\n\t\t}\n\t}\n\treturn filtered;\n}\n\nprivate void sort(List\u003cGuest\u003e guests) {\n\tCollections.sort(guests, new Comparator\u003cGuest\u003e() {\n\t\tpublic int compare(Guest o1, Guest o2) {\n\t\t\treturn Integer.compare(o1.getGrade(), o2.getGrade());\n\t\t}\n \t});\n}\n\nprivate List\u003cString\u003e mapNames(List\u003cGuest\u003e guests) {\n\tList\u003cString\u003e names = new ArrayList\u003c\u003e();\n\tfor(Guest guest : guests ) {\n\t\tnames.add(guest.getName());\n\t}\n\treturn names;\n}\n```\n\n### [Guava](https://github.com/google/guava)\n[GuavaResort.java](src/main/java/com/naver/helloworld/resort/service/GuavaResort.java)\n\n```java\npublic List\u003cString\u003e findGuestNamesByCompany(final String company) {\n\tList\u003cGuest\u003e all = repository.findAll();\n\n\tList\u003cGuest\u003e sorted = FluentIterable.from(all)\n\t\t.filter(new Predicate\u003cGuest\u003e() {\n\t\t\tpublic boolean apply(Guest g) {\n\t\t\t\treturn company.equals(g.getCompany());\n\t\t\t}\n\t})\n\t.toSortedList(Ordering.natural().onResultOf(\n\t\tnew Function\u003cGuest, Integer\u003e() {\n\t\t\tpublic Integer apply(Guest g) {\n\t\t\t\treturn g.getGrade();\n\t\t}\n\t}));\n\n\treturn FluentIterable.from(sorted)\n\t\t\t.transform(new Function\u003cGuest, String\u003e() {\n\t\t\t\tpublic String apply(Guest g) {\n\t\t\t\t\treturn g.getName();\n\t\t\t\t}\n\t\t\t})\n\t\t\t.toList();\n}\n```\n\n### [Totally Lazy](http://totallylazy.com/)\n[TotallyLazyResort.java](src/main/java/com/naver/helloworld/resort/service/TotallyLazyResort.java)\n\n```java\npublic List\u003cString\u003e findGuestNamesByCompany(final String company) {\n\tList\u003cGuest\u003e all = repository.findAll();\n\treturn Sequences.sequence(all)\n\t\t.filter(new Predicate\u003cGuest\u003e() {\n\t\t\tpublic boolean matches(Guest g) {\n\t\t\t\treturn company.equals(g.getCompany());\n\t\t\t}\n\t\t})\n\t\t.sortBy(new Callable1\u003cGuest, Integer\u003e(){\n\t\t\tpublic Integer call(Guest g) {\n\t\t\t\treturn g.getGrade();\n\t\t\t}\n\t\t})\n\t\t.map(new Callable1\u003cGuest, String\u003e(){\n\t\t\tpublic String call(Guest g) {\n\t\t\t\treturn g.getName();\n\t\t\t}\n\t\t})\n\t\t.toList();\n}\n```\n\n### [GS Collections](https://github.com/goldmansachs/gs-collections)\n[GsCollectoinsResort.java](src/main/java/com/naver/helloworld/resort/service/GsCollectionsResort.java)\n\n```java\npublic List\u003cString\u003e findGuestNamesByCompany(final String company) {\n\tList\u003cGuest\u003e all = repository.findAll();\n\treturn FastList.newList(all)\n\t\t.select(new Predicate\u003cGuest\u003e() {\n\t\t\tpublic boolean accept(Guest g) {\n\t\t\t\treturn company.equals(g.getCompany());\n\t\t\t}\n\t\t})\n\t\t.sortThisBy(new Function\u003cGuest, Integer\u003e() {\n\t\t\tpublic Integer valueOf(Guest g) {\n\t\t\t\treturn g.getGrade();\n\t\t\t}\n\t\t})\n\t\t.collect(new Function\u003cGuest, String\u003e () {\n\t\t\tpublic String valueOf(Guest g) {\n\t\t\t\treturn g.getName();\n\t\t\t}\n\t\t});\n}\n```\n\n### [Bolts](https://bitbucket.org/stepancheg/bolts/wiki/Home)\n[BoltsResort.java](src/main/java/com/naver/helloworld/resort/service/BoltsResort.java)\n\n```java\n\tpublic List\u003cString\u003e findGuestNamesByCompany(final String company) {\n\t\tList\u003cGuest\u003e all = repository.findAllGuest();\n\t\treturn Cf.list(all)\n\t\t\t.filter(new Function1B\u003cGuest\u003e() {\n\t\t\t\tpublic boolean apply(Guest g) {\n\t\t\t\t\treturn company.equals(g.getCompany());\n\t\t\t\t}\n\t\t\t})\n\t\t\t.sortBy(new Function\u003cGuest, Integer\u003e() {\n\t\t\t\tpublic Integer apply(Guest g) {\n\t\t\t\t\treturn g.getGrade();\n\t\t\t\t}\n\t\t\t})\n\t\t\t.map(new Function\u003cGuest, String\u003e() {\n\t\t\t\tpublic String apply(Guest g) {\n\t\t\t\t\treturn g.getName();\n\t\t\t\t}\n\t\t\t});\n\t}\n```\n\n### [Op4j](www.op4j.org)\n[Op4JResort.java](src/main/java/com/naver/helloworld/resort/service/Op4JResort.java)\n\n```java\npublic List\u003cString\u003e findGuestNamesByCompany(final String company) {\n\tList\u003cGuest\u003e all = repository.findAllGuest();\n\treturn Op.on(all)\n\t\t.removeAllFalse(new IFunction\u003cGuest, Boolean\u003e() {\n\t\t\tpublic Boolean execute(Guest g, ExecCtx ctx) throws Exception {\n\t\t\t\treturn company.equals(g.getCompany());\n\t\t\t}\n\t\t})\n\t\t.sortBy(new IFunction\u003cGuest, Integer\u003e() {\n\t\t\tpublic Integer execute(Guest g, ExecCtx ctx) throws Exception {\n\t\t\t\treturn g.getGrade();\n\t\t\t}\n\t\t})\n\t\t.map(new IFunction\u003cGuest, String\u003e() {\n\t\t\tpublic String execute(Guest g, ExecCtx ctx) throws Exception {\n\t\t\t\treturn g.getName();\n\t\t\t}\n\t\t}).get();\n}\n```\n\n### [Lambdaj](https://code.google.com/p/lambdaj)\n[LambdaJResort.java](src/main/java/com/naver/helloworld/resort/service/LambdaJResort.java)\n\n```java\nimport static ch.lambdaj.Lambda.*;\nimport static org.hamcrest.Matchers.*;\n...\n\npublic List\u003cString\u003e findGuestNamesByCompany(final String company) {\n\tList\u003cGuest\u003e all = repository.findAll();\n\treturn LambdaCollections.with(all)\n\t\t.retain(having(on(Guest.class).getCompany(), equalTo(company)))\n\t\t.sort(on(Guest.class).getGrade())\n\t\t.extract(on(Guest.class).getName());\n}\n```\n\n### [Functional Java](http://functionaljava.org/)\n[FunctionalJavaResort.java](src/main/java/com/naver/helloworld/resort/service/FunctionalJavaResort.java)\n\n```java\npublic List\u003cString\u003e findGuestNamesByCompany(String company) {\n\tList\u003cGuest\u003e all = repository.findAll();\n\n\tCollection\u003cString\u003e mapped = Stream.iterableStream(all)\n\t\t.filter(new F\u003cGuest, Boolean\u003e() {\n\t\t\tpublic Boolean f(Guest g){\n\t\t\t\treturn company.equals(g.getCompany());\n\t\t\t}\n\t\t})\n\t\t.sort(Ord.ord(\n\t\t\tnew F\u003cGuest, F\u003cGuest, Ordering\u003e\u003e() {\n\t\t\t\tpublic F\u003cGuest, Ordering\u003e f(final Guest a1) {\n\t\t\t\t\treturn new F\u003cGuest, Ordering\u003e() {\n\t\t\t\t\t\tpublic Ordering f(final Guest a2) {\n\t\t\t\t\t\t\tint x =  Integer.compare(a1.getGrade(), a2.getGrade());\n\t\t\t\t\t\t\treturn x \u003c 0 ? Ordering.LT : x == 0 ? Ordering.EQ : Ordering.GT;\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\t\t}))\n\t\t.map(new F\u003cGuest, String\u003e() {\n\t\t\tpublic String f(Guest g) {\n\t\t\t\treturn g.getName();\n\t\t\t}\n\t\t})\n\t\t.toCollection();\n\treturn new ArrayList\u003cString\u003e(mapped);\n}\n```\n\n### [Apache Commons Collections](http://commons.apache.org/proper/commons-collections/)\n[CommonsCollectionsResort.java](src/main/java/com/naver/helloworld/resort/service/CommonsCollectionsResort.java)\n\n```java\npublic List\u003cString\u003e findGuestNamesByCompany(final String company) {\n\tList\u003cGuest\u003e all = repository.findAll();\n\tList\u003cGuest\u003e filtered = ListUtils.select(all, new Predicate\u003cGuest\u003e() {\n\t\tpublic boolean evaluate(Guest g) {\n\t\t\treturn company.equals(g.getCompany());\n\t\t}\n\t});\n\tCollections.sort(filtered, new Comparator\u003cGuest\u003e() {\n\t\tpublic int compare(Guest o1, Guest o2) {\n\t\t\treturn Integer.compare(o1.getGrade(), o2.getGrade());\n\t\t}\n\t});\n\tCollection\u003cString\u003e names = CollectionUtils.collect(filtered, new Transformer\u003cGuest, String\u003e(){\n\t\tpublic String transform(Guest g) {\n\t\t\treturn g.getName();\n\t\t}\n\t});\n\treturn new ArrayList\u003c\u003e(names);\n}\n```\n\n### [Jedi](http://jedi.codehaus.org/)\n[JediResort.java](src/main/java/com/naver/helloworld/resort/service/JediResort.java)\n\n```java\npublic List\u003cString\u003e findGuestNamesByCompany(final String company) {\n\tList\u003cGuest\u003e all = repository.findAll();\n\tList\u003cGuest\u003e filtered = FunctionalPrimitives.select(all, new Filter\u003cGuest\u003e() {\n\t\tpublic Boolean execute(Guest g) {\n\t\t\treturn company.equals(g.getCompany());\n\t\t}\n\t});\n\tList\u003cGuest\u003e sorted = Comparables.sort(filtered, new Functor\u003cGuest, Integer\u003e() {\n\t\tpublic Integer execute(Guest g) {\n\t\t\treturn g.getGrade();\n\t\t}\n\t});\n\treturn FunctionalPrimitives.map(sorted, new Functor\u003cGuest, String\u003e() {\n\t\tpublic String execute(Guest g) {\n\t\t\treturn g.getName();\n\t\t}\n\t});\n}\n```\n\n## Implementations by other JVM languages\n- Groovy : 2.3.9\n- Scala :  2.11.4\n- Kotlin : 0.10.195\n- Xtend : 2.7\n- Ceylon : 1.1.0\n\n### [Groovy](http://groovy.codehaus.org/)\n[GroovyAdvancedResort.groovy](src/main/groovy/com/naver/helloworld/resort/service/GroovyAdvancedResort.groovy)\n\n```groovy\nList\u003cString\u003e findGuestNamesByCompany(String company) {\n\tList\u003cGuest\u003e all = repository.findAll()\n\tall.findAll { it.company == company }\n\t\t.sort { it.grade }\n\t\t.collect { it.name }\n}\n```\n\n### [Scala](http://www.scala-lang.org/)\n[ScalaAdvancedResort.scala](src/main/scala/com/naver/helloworld/resort/service/ScalaAdvancedResort.scala)\n\n```scala\nimport scala.collection.JavaConversions._\n...\n\n\tdef findGuestNamesByCompany(company: String): java.util.List[String] = {\n\t\tval all = repository.findAll\n\t\tall.filter ( _.getCompany == company)\n\t\t\t.sortBy ( _.getGrade )\n\t\t\t.map ( _.getName )\n\t}\n```\n\n### [Kotlin](http://kotlinlang.org)\n[KotlinAdvancedResort.kt](src/main/kotlin/com/naver/helloworld/resort/service/KotlinAdvancedResort.kt)\n\n```kotlin\n\n\toverride fun findGuestNamesByCompany(company: String): List\u003cString\u003e {\n\t\tval all = repository.findAll()\n\t\treturn all.filter { it.getCompany() == company }\n\t\t\t.sortBy { it.getGrade() }\n\t\t\t.map { it.getName() }\n\t}\n```\n\n### [Xtend](http://www.eclipse.org/xtend/)\n[XtendAdvancedResort.xtend](src/main/xtend/com/naver/helloworld/resort/service/XtendAdvancedResort.xtend)\n\n```xtend\noverride findGuestNamesByCompany(String aCompany) {\n\tval all = repository.findAll()\n\tall.filter [company == aCompany]\n\t\t.sortBy[grade]\n\t\t.map[name]\n}\n```\n\n### [Ceylon](http://ceylon-lang.org/)\n[resort.ceylon](src/main/ceylon/com/naver/helloworld/resort/service/resort.ceylon)\n\n```ceylon\nimport ceylon.interop.java { CeylonIterable }\nimport java.util {JList = List, JArrayList = ArrayList }\nimport java.lang {JString = String}\n\n...\n\n\tshared actual JList\u003cJString\u003e findGuestNamesByCompany(String company) {\n\t\tvalue all = repository.findAll() ;\n\t\tvalue names = CeylonIterable(all)\n\t\t\t.filter((Guest g) =\u003e g.company == company)\n\t\t\t.sort(byIncreasing((Guest g) =\u003e g.grade.intValue()))\n\t\t\t.map((Guest g) =\u003e g.name);\n\n\t\tvalue jnames = JArrayList\u003cJString\u003e();\n\t\tfor (name in names) {jnames.add(JString(name));}\n\t\treturn jnames;\n\t}\n```\n\n## Implementations by modern Java\n[ModernJavaAdvancedResort.java](src/main/java/com/naver/helloworld/resort/service/ModernJavaAdvancedResort.java)\n\n```java\npublic List\u003cString\u003e findGuestNamesByCompany(String company) {\n\tList\u003cGuest\u003e guests = repository.findAll();\n\treturn guests.stream()\n\t\t.filter(g -\u003e company.equals(g.getCompany()))\n\t\t.sorted(Comparator.comparing(Guest::getGrade))\n\t\t.map(Guest::getName)\n\t\t.collect(Collectors.toList());\n}\n```\n\n# Refactoring by lambda expressions\n\n## Async Servlet\n\n### Classic Java\n[ClassicAsyncServlet.java](src/main/java/com/naver/helloworld/web/ClassicAsyncServlet.java)\n\n```java\npublic void doGet(final HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {\n\tfinal AsyncContext asyncContext = request.startAsync();\n\t\tasyncContext.start(new Runnable() {\n\t\tpublic void run() {\n\t\t\t// long running job\n\t\t\tasyncContext.dispatch(\"/status.jsp\");\n\t\t}\n\t\t});\n}\n```\n\n### Modern Java\n[ModernAsyncServlet.java](src/main/java/com/naver/helloworld/web/ModernAsyncServlet.java)\n\n```java\npublic void doGet(final HttpServletRequest request,\tHttpServletResponse response) throws ServletException, IOException {\n\tAsyncContext asyncContext = request.startAsync();\n\tasyncContext.start(() -\u003e {\n\t\t// long running job\n\t\tasyncContext.dispatch(\"/status.jsp\");\n\t\t});\n}\n```\n\n## Spring JDBC\n### Classic Java\n[ClassicJdbcRepository.java](src/main/java/com/naver/helloworld/resort/repository/ClassicJdbcRepository.java)\n\n```java\npublic List\u003cGuest\u003e findAll() {\n\treturn jdbcTemplate.query(SELECT_ALL, new RowMapper\u003cGuest\u003e(){\n\t\tpublic Guest mapRow(ResultSet rs, int rowNum) throws SQLException {\n\t\t\treturn  new Guest (\n\t\t\t\trs.getInt(\"id\"),\n\t\t\t\trs.getString(\"name\"),\n\t\t\t\trs.getString(\"company\"),\n\t\t\t\trs.getInt(\"grade\")\n\t\t\t);\n\t}\n  });\n}\n```\n\n### Modern Java\n[ModernJdbcRepository.java](src/main/java/com/naver/helloworld/resort/repository/ModernJdbcRepository.java)\n\n```java\npublic List\u003cGuest\u003e findAll() {\n\treturn jdbcTemplate.query(SELECT_ALL,\n\t\t(rs, rowNum) -\u003enew Guest (\n\t\t\trs.getInt(\"id\"),\n\t\t\trs.getString(\"name\"),\n\t\t\trs.getString(\"company\"),\n\t\t\trs.getInt(\"grade\")\n\t\t\t)\n  );\n}\n```\n\n### Event bindings in Android\n### Classic Java\n[ClassicFragment.java](src/main/java/com/naver/helloworld/resort/android/ClassicFragment.java)\n\n```java\nButton calcButton = (Button) view.findViewById(R.id.calcBtn);\nButton sendButton = (Button) view.findViewById(R.id.sendBtn);\n\ncalcButton.setOnClickListener(new OnClickListener() {\n\tpublic void onClick(View view) {\n\t\tcalculate();\n\t}\n});\nsendButton.setOnClickListener(new OnClickListener() {\n\tpublic void onClick(View view) {\n\t\tsend();\n\t}\n});\n```\n\n### Modern Java\n[ModernFragment.java](src/main/java/com/naver/helloworld/web/ModernAsyncServlet.java)\n\n```java\nButton calcButton = (Button) view.findViewById(R.id.calcBtn);\nButton sendButton = (Button) view.findViewById(R.id.sendBtn);\n\ncalcButton.setOnClickListener(v -\u003e calculate());\nsendButton.setOnClickListener(v -\u003e send());\n```\n\n# Frameworks using lambda expressions\n### [Lambda Behave](http://richardwarburton.github.io/lambda-behave/)\n[ResortServiceSpec.java](src/test/java/com/naver/helloworld/resort/service/ResortServiceSpec.java)\n\n```java\n@RunWith(JunitSuiteRunner.class)\npublic class ResortServiceSpec {{\n\tGuestRepository repository = new MemoryRepository();\n\tResortService service = new ModernJavaResort(repository);\n\n\tdescribe(\"ResortService with modern Java\", it -\u003e {\n\t\tit.isSetupWith(() -\u003e {\n\t\t\trepository.save(\n\t\t\t\t\tnew Guest(1, \"jsh\", \"Naver\", 15),\n\t\t\t\t\tnew Guest(2, \"hny\", \"Line\", 10),\n\t\t\t\t\tnew Guest(3, \"chy\", \"Naver\", 5)\n\t\t\t\t);\n\n\t\t});\n\t\tit.isConcludedWith(repository::deleteAll);\n\n\t\tit.should(\"find names of guests by company \", expect -\u003e {\n\t\t\tList\u003cString\u003e names = service.findGuestNamesByCompany(\"Naver\");\n\t\t\texpect.that(names).isEqualTo(Arrays.asList(\"chy\",\"jsh\"));\n\t\t});\n\t});\n}}\n```\n\n### [Jinq](http://www.jinq.org/)\n[JinqResort.java](src/main/java/com/naver/helloworld/resort/service/JinqResort.java)\n\n```java\nprivate EntityManager em;\n@Autowired\npublic JinqResort(EntityManager em) {\n\tthis.em = em;\n}\nprivate \u003cT\u003e JinqStream\u003cT\u003e stream(Class\u003cT\u003e clazz) {\n\treturn new JinqJPAStreamProvider(em.getEntityManagerFactory()).streamAll(em, clazz);\n}\n\npublic List\u003cString\u003e findGuestNamesByCompany(String company) {\n\treturn stream(Guest.class)\n\t\t.where(g -\u003e g.getCompany().equals(company))\n\t\t.sortedBy(Guest::getGrade)\n\t\t.select(Guest::getName)\n\t\t.toList();\n}\n```\n\nA query generated by JinqResort\n\n```sql\n\tHibernate: select guest0_.id as id1_0_, guest0_.company as company2_0_, guest0_.grade as grade3_0_, guest0_.name as name4_0_ from guest guest0_ where guest0_.company=? order by guest0_.grade ASC limit ?\n```\n\n### [Spark](http://www.sparkjava.com/)\n[SparkServer.java](src/main/java/com/naver/helloworld/web/SparkServer.java)\n\n```java\nimport static spark.Spark.*;\n\nimport com.naver.helloworld.resort.service.ResortService;\n\npublic class SparkServer {\n\tpublic static void main(String[] args) {\n\t\tget(\"/guests/:company\", (request, response) -\u003e {\n\t\t\tString company = request.params(\":company\");\n\t\t\treturn \"No guests from \" + company;\n\t\t});\n\t}\n}\n```\n\n[ResortServer.java](src/main/java/com/naver/helloworld/resort/ResortServer.java) (Spark + Spring)\n\n```java\n@SpringBootApplication\npublic class ResortServer {\n\t@Autowired\n\tprivate ResortService service;\n\n\tpublic void start() {\n\t\tget(\"/guests/:company\", (request, response) -\u003e {\n\t\t\tString company = request.params(\":company\");\n\t\t\tList\u003cString\u003e names = service.findGuestNamesByCompany(company);\n\t\t\treturn \"Guests from \" + company + \" : \" + names;\n\t\t});\n\t}\n\n\tpublic static void main(String[] args) {\n\t\tApplicationContext context = SpringApplication.run(ResortServer.class);\n\t\tcontext.getBean(ResortServer.class).start();\n\t}\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbenelog%2Flambda-resort","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbenelog%2Flambda-resort","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbenelog%2Flambda-resort/lists"}