Showing preview only (3,093K chars total). Download the full file or copy to clipboard to get everything.
Repository: puniverse/comsat
Branch: master
Commit: f4133289a4aa
Files: 504
Total size: 2.8 MB
Directory structure:
gitextract_0fms8ej0/
├── .gitignore
├── .travis.yml
├── CONTRIBUTING.md
├── LICENSE
├── NOTICE
├── README.md
├── build.gradle
├── comsat-actors-api/
│ └── src/
│ └── main/
│ └── java/
│ └── co/
│ └── paralleluniverse/
│ └── comsat/
│ └── webactors/
│ ├── Cookie.java
│ ├── HttpMessage.java
│ ├── HttpRequest.java
│ ├── HttpResponse.java
│ ├── HttpStreamOpened.java
│ ├── SSE.java
│ ├── WebActor.java
│ ├── WebDataMessage.java
│ ├── WebMessage.java
│ ├── WebSocketOpened.java
│ ├── WebStreamOpened.java
│ └── package-info.java
├── comsat-actors-netty/
│ └── src/
│ ├── main/
│ │ └── java/
│ │ └── co/
│ │ └── paralleluniverse/
│ │ └── comsat/
│ │ └── webactors/
│ │ └── netty/
│ │ ├── AutoWebActorHandler.java
│ │ ├── NettyHttpRequest.java
│ │ ├── WebActorHandler.java
│ │ └── package-info.java
│ └── test/
│ └── java/
│ └── co/
│ └── paralleluniverse/
│ └── comsat/
│ └── webactors/
│ └── netty/
│ ├── HttpRequestWrapperTest.java
│ ├── NettyWebActor.java
│ └── WebActorTest.java
├── comsat-actors-servlet/
│ ├── build.gradle
│ └── src/
│ ├── main/
│ │ └── java/
│ │ └── co/
│ │ └── paralleluniverse/
│ │ └── comsat/
│ │ └── webactors/
│ │ └── servlet/
│ │ ├── EmbedHttpSessionWsConfigurator.java
│ │ ├── ServletHttpRequest.java
│ │ ├── ServletWebActors.java
│ │ ├── WebActorEndpoint.java
│ │ ├── WebActorInitializer.java
│ │ ├── WebActorServlet.java
│ │ └── package-info.java
│ └── test/
│ └── java/
│ └── co/
│ └── paralleluniverse/
│ └── comsat/
│ └── webactors/
│ └── servlet/
│ ├── HttpRequestWrapperTest.java
│ ├── ServletWebActor.java
│ └── WebActorServletTest.java
├── comsat-actors-undertow/
│ └── src/
│ ├── main/
│ │ └── java/
│ │ └── co/
│ │ └── paralleluniverse/
│ │ └── comsat/
│ │ └── webactors/
│ │ └── undertow/
│ │ ├── AutoWebActorHandler.java
│ │ ├── ByteArrayReadChannelListener.java
│ │ ├── StringWriteChannelListener.java
│ │ ├── UndertowHttpRequest.java
│ │ ├── WebActorHandler.java
│ │ └── package-info.java
│ └── test/
│ └── java/
│ └── co/
│ └── paralleluniverse/
│ └── comsat/
│ └── webactors/
│ └── undertow/
│ ├── HttpRequestWrapperTest.java
│ ├── UndertowWebActor.java
│ └── WebActorTest.java
├── comsat-dropwizard/
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── co/
│ │ │ └── paralleluniverse/
│ │ │ └── fibers/
│ │ │ └── dropwizard/
│ │ │ ├── FiberApplication.java
│ │ │ ├── FiberDBIFactory.java
│ │ │ ├── FiberDataSourceFactory.java
│ │ │ ├── FiberHttpClientBuilder.java
│ │ │ ├── FiberManagedDataSource.java
│ │ │ ├── FiberServletContainer.java
│ │ │ ├── InstrumentedNClientConnManager.java
│ │ │ └── InstrumentedNHttpClientBuilder.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── suspendables
│ └── test/
│ ├── java/
│ │ └── co/
│ │ └── paralleluniverse/
│ │ └── fibers/
│ │ └── dropwizard/
│ │ ├── FiberDropwizardTest.java
│ │ └── MyDropwizardApp.java
│ └── resources/
│ └── server.yml
├── comsat-httpclient/
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── co/
│ │ │ └── paralleluniverse/
│ │ │ └── fibers/
│ │ │ ├── httpasyncclient/
│ │ │ │ └── FiberCloseableHttpAsyncClient.java
│ │ │ └── httpclient/
│ │ │ ├── AsyncHttpReq.java
│ │ │ ├── DelegatingHttpResponse.java
│ │ │ ├── FiberHttpClient.java
│ │ │ └── FiberHttpClientBuilder.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── suspendables
│ └── test/
│ └── java/
│ └── co/
│ └── paralleluniverse/
│ └── fibers/
│ ├── httpasyncclient/
│ │ └── FiberHttpAsyncClientTest.java
│ └── httpclient/
│ └── FiberHttpClientBuilderTest.java
├── comsat-httpkit/
│ ├── project.clj
│ ├── src/
│ │ └── co/
│ │ └── paralleluniverse/
│ │ └── fiber/
│ │ └── httpkit/
│ │ └── client.clj
│ ├── test/
│ │ ├── co/
│ │ │ └── paralleluniverse/
│ │ │ └── fiber/
│ │ │ └── httpkit/
│ │ │ ├── client_test.clj
│ │ │ └── test_util.clj
│ │ └── logback-test.xml
│ └── test-resources/
│ └── ssl_keystore
├── comsat-jax-rs-client/
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── co/
│ │ │ └── paralleluniverse/
│ │ │ └── fibers/
│ │ │ └── ws/
│ │ │ └── rs/
│ │ │ └── client/
│ │ │ ├── AsyncClientBuilder.java
│ │ │ ├── AsyncRs.java
│ │ │ ├── FiberBuilder.java
│ │ │ ├── FiberClient.java
│ │ │ ├── FiberInvocation.java
│ │ │ ├── FiberWebTarget.java
│ │ │ └── package-info.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── suspendable-supers
│ └── test/
│ └── java/
│ └── co/
│ └── paralleluniverse/
│ └── fibers/
│ └── ws/
│ └── rs/
│ └── client/
│ └── AsyncClientBuilderTest.java
├── comsat-jdbc/
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── co/
│ │ │ └── paralleluniverse/
│ │ │ └── fibers/
│ │ │ └── jdbc/
│ │ │ ├── FiberArray.java
│ │ │ ├── FiberBlob.java
│ │ │ ├── FiberCallableStatement.java
│ │ │ ├── FiberClob.java
│ │ │ ├── FiberConnection.java
│ │ │ ├── FiberDataSource.java
│ │ │ ├── FiberDataSourceFactory.java
│ │ │ ├── FiberDatabaseMetaData.java
│ │ │ ├── FiberDriver.java
│ │ │ ├── FiberNClob.java
│ │ │ ├── FiberParameterMetadata.java
│ │ │ ├── FiberPreparedStatement.java
│ │ │ ├── FiberRef.java
│ │ │ ├── FiberResultSet.java
│ │ │ ├── FiberResultSetMetaData.java
│ │ │ ├── FiberSQLXML.java
│ │ │ ├── FiberSavepoint.java
│ │ │ ├── FiberStatement.java
│ │ │ ├── FiberStruct.java
│ │ │ ├── JDBCFiberAsync.java
│ │ │ └── package-info.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── services/
│ │ └── java.sql.Driver
│ └── test/
│ └── java/
│ └── co/
│ └── paralleluniverse/
│ └── fibers/
│ └── jdbc/
│ ├── FiberConnectionTest.java
│ └── FiberDataSourceTest.java
├── comsat-jdbi/
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── co/
│ │ │ └── paralleluniverse/
│ │ │ └── fibers/
│ │ │ └── jdbi/
│ │ │ ├── FiberDBI.java
│ │ │ └── JdbiClassifier.java
│ │ └── resources/
│ │ └── META-INF/
│ │ ├── services/
│ │ │ └── co.paralleluniverse.fibers.instrument.SuspendableClassifier
│ │ └── suspendables
│ └── test/
│ └── java/
│ └── co/
│ └── paralleluniverse/
│ └── fibers/
│ └── jdbi/
│ ├── FiberFluentAPITest.java
│ └── FiberSqlObjectAPITest.java
├── comsat-jersey-server/
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── co/
│ │ │ └── paralleluniverse/
│ │ │ └── fibers/
│ │ │ └── jersey/
│ │ │ ├── ServletContainer.java
│ │ │ └── package-info.java
│ │ └── resources/
│ │ └── META-INF/
│ │ ├── suspendable-supers
│ │ └── suspendables
│ └── test/
│ └── java/
│ └── co/
│ └── paralleluniverse/
│ └── fibers/
│ └── jersey/
│ ├── AddTestFiltersFeature.java
│ ├── FiberServletContainerTest.java
│ └── TestResource.java
├── comsat-jetty-loader/
│ ├── build.gradle
│ └── src/
│ ├── main/
│ │ └── java/
│ │ └── co/
│ │ └── paralleluniverse/
│ │ └── comsat/
│ │ └── jetty/
│ │ └── QuasarWebAppClassLoader.java
│ └── test/
│ ├── java/
│ │ └── co/
│ │ └── paralleluniverse/
│ │ └── embedded/
│ │ └── containers/
│ │ └── JettyLoaderTest.java
│ └── resources/
│ ├── log4j.xml
│ └── webapps/
│ └── dep.xml
├── comsat-jooq/
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── co/
│ │ │ └── paralleluniverse/
│ │ │ └── fibers/
│ │ │ └── jooq/
│ │ │ └── JooqClassifier.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── services/
│ │ └── co.paralleluniverse.fibers.instrument.SuspendableClassifier
│ └── test/
│ └── java/
│ └── co/
│ └── paralleluniverse/
│ └── fibers/
│ └── jooq/
│ └── JooqContextTest.java
├── comsat-kafka/
│ └── src/
│ ├── main/
│ │ └── java/
│ │ └── co/
│ │ └── paralleluniverse/
│ │ └── fibers/
│ │ └── kafka/
│ │ └── FiberKafkaProducer.java
│ └── test/
│ └── java/
│ └── co/
│ └── paralleluniverse/
│ └── fibers/
│ └── kafka/
│ └── FiberKafkaProducerTest.java
├── comsat-mongodb-allanbank/
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── co/
│ │ │ └── paralleluniverse/
│ │ │ └── fibers/
│ │ │ └── mongodb/
│ │ │ ├── FiberMongoCallback.java
│ │ │ ├── FiberMongoClientImpl.java
│ │ │ ├── FiberMongoCollectionImpl.java
│ │ │ ├── FiberMongoDatabaseImpl.java
│ │ │ ├── FiberMongoFactory.java
│ │ │ ├── FiberMongoUtils.java
│ │ │ └── SettableListenableFuture.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── suspendables
│ └── test/
│ └── java/
│ └── co/
│ └── paralleluniverse/
│ └── fibers/
│ └── mongodb/
│ ├── AbstractTestFiberMongo.java
│ ├── FiberMongoCollTest.java
│ └── FiberMongoDbTest.java
├── comsat-okhttp/
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ ├── co/
│ │ │ │ └── paralleluniverse/
│ │ │ │ └── fibers/
│ │ │ │ └── okhttp/
│ │ │ │ ├── FiberCall.java
│ │ │ │ ├── FiberOkHttpClient.java
│ │ │ │ └── FiberOkHttpUtil.java
│ │ │ └── com/
│ │ │ └── squareup/
│ │ │ └── okhttp/
│ │ │ └── CallProxy.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── suspendables
│ └── test/
│ └── java/
│ ├── co/
│ │ └── paralleluniverse/
│ │ └── fibers/
│ │ └── okhttp/
│ │ └── test/
│ │ ├── InterceptorTest.java
│ │ ├── apache/
│ │ │ ├── OkApacheClientTest.java
│ │ │ └── OkApacheTestWrapper.java
│ │ └── utils/
│ │ ├── FiberCallTestWrapper.java
│ │ ├── FiberOkHttpClientTestWrapper.java
│ │ └── original/
│ │ ├── DelegatingSSLSocket.java
│ │ ├── DelegatingSSLSocketFactory.java
│ │ ├── DelegatingServerSocketFactory.java
│ │ ├── DelegatingSocketFactory.java
│ │ ├── DoubleInetAddressDns.java
│ │ ├── FallbackTestClientSocketFactory.java
│ │ ├── RecordedResponse.java
│ │ ├── RecordingAuthenticator.java
│ │ ├── RecordingCallback.java
│ │ ├── RecordingOkAuthenticator.java
│ │ ├── SingleInetAddressDns.java
│ │ ├── SocksProxy.java
│ │ ├── SocksProxyTest.java
│ │ ├── TestLogHandler.java
│ │ ├── http/
│ │ │ └── FakeDns.java
│ │ ├── io/
│ │ │ └── InMemoryFileSystem.java
│ │ └── testing/
│ │ └── RecordingHostnameVerifier.java
│ └── com/
│ └── squareup/
│ └── okhttp/
│ ├── CacheTest.java
│ ├── CallTest.java
│ ├── DispatcherTest.java
│ ├── OkUrlFactoryTest.java
│ ├── README.md
│ ├── URLConnectionTest.java
│ └── UrlConnectionCacheTest.java
├── comsat-retrofit/
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── co/
│ │ │ └── paralleluniverse/
│ │ │ └── fibers/
│ │ │ └── retrofit/
│ │ │ └── FiberRestAdapterBuilder.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── suspendables
│ └── test/
│ └── java/
│ └── co/
│ └── paralleluniverse/
│ └── fibers/
│ └── retrofit/
│ ├── FiberRestAdapterBuilderTest.java
│ └── HelloWorldApplication.java
├── comsat-ring-jetty9/
│ ├── project.clj
│ ├── src/
│ │ └── co/
│ │ └── paralleluniverse/
│ │ └── fiber/
│ │ └── ring/
│ │ └── jetty9.clj
│ └── test/
│ ├── co/
│ │ └── paralleluniverse/
│ │ └── fiber/
│ │ └── ring/
│ │ └── test/
│ │ └── jetty9_test.clj
│ └── keystore.jks
├── comsat-servlet/
│ └── src/
│ ├── main/
│ │ └── java/
│ │ └── co/
│ │ └── paralleluniverse/
│ │ └── fibers/
│ │ └── servlet/
│ │ ├── FiberHttpServlet.java
│ │ ├── FiberHttpServletRequest.java
│ │ ├── FiberRequestDispatcher.java
│ │ ├── FiberServletContext.java
│ │ ├── FiberServletRequest.java
│ │ └── package-info.java
│ └── test/
│ └── java/
│ └── co/
│ └── paralleluniverse/
│ └── fibers/
│ └── servlet/
│ └── FiberHttpServletTest.java
├── comsat-shiro/
│ └── src/
│ ├── main/
│ │ └── resources/
│ │ └── META-INF/
│ │ ├── suspendable-supers
│ │ └── suspendables
│ └── test/
│ ├── java/
│ │ └── co/
│ │ └── paralleluniverse/
│ │ └── fibers/
│ │ └── shiro/
│ │ ├── FiberShiroRealmTest.java
│ │ └── FiberedRealm.java
│ └── resources/
│ ├── shiro-multi-realm.ini
│ └── shiro-single-realm.ini
├── comsat-spring/
│ ├── build.gradle
│ ├── comsat-spring-boot/
│ │ ├── build.gradle
│ │ ├── comsat-spring-boot-sample-actuator/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── actuator/
│ │ │ │ │ ├── HelloWorldService.java
│ │ │ │ │ ├── SampleActuatorApplication.java
│ │ │ │ │ ├── SampleController.java
│ │ │ │ │ └── ServiceProperties.java
│ │ │ │ └── resources/
│ │ │ │ └── application.properties
│ │ │ └── test/
│ │ │ ├── java/
│ │ │ │ └── comsat/
│ │ │ │ └── sample/
│ │ │ │ └── actuator/
│ │ │ │ └── SampleActuatorApplicationTests.java
│ │ │ └── resources/
│ │ │ └── application-endpoints.properties
│ │ ├── comsat-spring-boot-sample-actuator-async/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── actuator/
│ │ │ │ │ ├── HelloWorldService.java
│ │ │ │ │ ├── SampleActuatorApplication.java
│ │ │ │ │ ├── SampleController.java
│ │ │ │ │ └── ServiceProperties.java
│ │ │ │ └── resources/
│ │ │ │ └── application.properties
│ │ │ └── test/
│ │ │ ├── java/
│ │ │ │ └── comsat/
│ │ │ │ └── sample/
│ │ │ │ └── actuator/
│ │ │ │ └── SampleActuatorApplicationTests.java
│ │ │ └── resources/
│ │ │ └── application-endpoints.properties
│ │ ├── comsat-spring-boot-sample-actuator-log4j/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── actuator/
│ │ │ │ │ └── log4j/
│ │ │ │ │ ├── HelloWorldService.java
│ │ │ │ │ ├── SampleActuatorApplication.java
│ │ │ │ │ ├── SampleController.java
│ │ │ │ │ └── ServiceProperties.java
│ │ │ │ └── resources/
│ │ │ │ ├── application.properties
│ │ │ │ └── log4j.properties
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── actuator/
│ │ │ └── log4j/
│ │ │ └── SampleActuatorApplicationTests.java
│ │ ├── comsat-spring-boot-sample-actuator-log4j2/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── actuator/
│ │ │ │ │ └── log4j2/
│ │ │ │ │ ├── HelloWorldService.java
│ │ │ │ │ ├── SampleActuatorLog4J2Application.java
│ │ │ │ │ ├── SampleController.java
│ │ │ │ │ └── ServiceProperties.java
│ │ │ │ └── resources/
│ │ │ │ ├── application.properties
│ │ │ │ └── log4j2.xml
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── actuator/
│ │ │ └── log4j2/
│ │ │ └── SampleActuatorApplicationTests.java
│ │ ├── comsat-spring-boot-sample-actuator-ui/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── actuator/
│ │ │ │ │ └── ui/
│ │ │ │ │ └── SampleActuatorUiApplication.java
│ │ │ │ └── resources/
│ │ │ │ └── templates/
│ │ │ │ ├── error.ftl
│ │ │ │ └── home.ftl
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── actuator/
│ │ │ └── ui/
│ │ │ ├── SampleActuatorUiApplicationPortTests.java
│ │ │ └── SampleActuatorUiApplicationTests.java
│ │ ├── comsat-spring-boot-sample-data-jpa/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── data/
│ │ │ │ │ └── jpa/
│ │ │ │ │ ├── SampleDataJpaApplication.java
│ │ │ │ │ ├── domain/
│ │ │ │ │ │ ├── City.java
│ │ │ │ │ │ ├── Hotel.java
│ │ │ │ │ │ ├── HotelSummary.java
│ │ │ │ │ │ ├── Rating.java
│ │ │ │ │ │ ├── RatingCount.java
│ │ │ │ │ │ ├── Review.java
│ │ │ │ │ │ ├── ReviewDetails.java
│ │ │ │ │ │ └── TripType.java
│ │ │ │ │ ├── service/
│ │ │ │ │ │ ├── CityRepository.java
│ │ │ │ │ │ ├── CitySearchCriteria.java
│ │ │ │ │ │ ├── CityService.java
│ │ │ │ │ │ ├── CityServiceImpl.java
│ │ │ │ │ │ ├── HotelRepository.java
│ │ │ │ │ │ ├── HotelService.java
│ │ │ │ │ │ ├── HotelServiceImpl.java
│ │ │ │ │ │ ├── ReviewRepository.java
│ │ │ │ │ │ └── ReviewsSummary.java
│ │ │ │ │ └── web/
│ │ │ │ │ └── SampleController.java
│ │ │ │ └── resources/
│ │ │ │ └── import.sql
│ │ │ └── test/
│ │ │ ├── java/
│ │ │ │ └── comsat/
│ │ │ │ └── sample/
│ │ │ │ └── data/
│ │ │ │ └── jpa/
│ │ │ │ └── SampleDataJpaApplicationTests.java
│ │ │ └── resources/
│ │ │ └── application-scratch.properties
│ │ ├── comsat-spring-boot-sample-jetty/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ └── java/
│ │ │ │ └── comsat/
│ │ │ │ └── sample/
│ │ │ │ └── jetty/
│ │ │ │ ├── SampleJettyApplication.java
│ │ │ │ ├── service/
│ │ │ │ │ └── HelloWorldService.java
│ │ │ │ └── web/
│ │ │ │ └── SampleController.java
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── jetty/
│ │ │ └── SampleJettyApplicationTests.java
│ │ ├── comsat-spring-boot-sample-jetty-ssl/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── jetty/
│ │ │ │ │ ├── SampleJettySslApplication.java
│ │ │ │ │ ├── service/
│ │ │ │ │ │ └── HelloWorldService.java
│ │ │ │ │ └── web/
│ │ │ │ │ └── SampleController.java
│ │ │ │ └── resources/
│ │ │ │ ├── application.properties
│ │ │ │ └── sample.jks
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── jetty/
│ │ │ └── SampleJettySslApplicationTests.java
│ │ ├── comsat-spring-boot-sample-jetty8/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ └── java/
│ │ │ │ └── comsat/
│ │ │ │ └── sample/
│ │ │ │ └── jetty/
│ │ │ │ ├── SampleJetty8Application.java
│ │ │ │ ├── service/
│ │ │ │ │ └── HelloWorldService.java
│ │ │ │ └── web/
│ │ │ │ └── SampleController.java
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── jetty/
│ │ │ └── SampleJetty8ApplicationTests.java
│ │ ├── comsat-spring-boot-sample-jetty8-ssl/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── jetty/
│ │ │ │ │ ├── SampleJetty8SslApplication.java
│ │ │ │ │ ├── service/
│ │ │ │ │ │ └── HelloWorldService.java
│ │ │ │ │ └── web/
│ │ │ │ │ └── SampleController.java
│ │ │ │ └── resources/
│ │ │ │ ├── application.properties
│ │ │ │ └── sample.jks
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── jetty/
│ │ │ └── SampleJetty8SslApplicationTests.java
│ │ ├── comsat-spring-boot-sample-jpa/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── jpa/
│ │ │ │ │ ├── SampleJpaApplication.java
│ │ │ │ │ ├── domain/
│ │ │ │ │ │ ├── Note.java
│ │ │ │ │ │ └── Tag.java
│ │ │ │ │ ├── repository/
│ │ │ │ │ │ ├── JpaNoteRepository.java
│ │ │ │ │ │ ├── JpaTagRepository.java
│ │ │ │ │ │ ├── NoteRepository.java
│ │ │ │ │ │ └── TagRepository.java
│ │ │ │ │ └── web/
│ │ │ │ │ └── IndexController.java
│ │ │ │ └── resources/
│ │ │ │ ├── import.sql
│ │ │ │ └── templates/
│ │ │ │ └── index.ftl
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── jpa/
│ │ │ ├── SampleJpaApplicationTests.java
│ │ │ └── repository/
│ │ │ ├── JpaNoteRepositoryIntegrationTests.java
│ │ │ └── JpaTagRepositoryIntegrationTests.java
│ │ ├── comsat-spring-boot-sample-servlet/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ └── java/
│ │ │ │ └── comsat/
│ │ │ │ └── sample/
│ │ │ │ └── servlet/
│ │ │ │ └── SampleServletApplication.java
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── servlet/
│ │ │ └── SampleServletApplicationTests.java
│ │ ├── comsat-spring-boot-sample-tomcat/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── tomcat/
│ │ │ │ │ ├── SampleTomcatApplication.java
│ │ │ │ │ ├── service/
│ │ │ │ │ │ └── HelloWorldService.java
│ │ │ │ │ └── web/
│ │ │ │ │ └── SampleController.java
│ │ │ │ └── resources/
│ │ │ │ └── public/
│ │ │ │ └── test.css
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── tomcat/
│ │ │ ├── NonAutoConfigurationSampleTomcatApplicationTests.java
│ │ │ └── SampleTomcatApplicationTests.java
│ │ ├── comsat-spring-boot-sample-tomcat-jsp/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── jsp/
│ │ │ │ │ ├── SampleTomcatJspApplication.java
│ │ │ │ │ └── WelcomeController.java
│ │ │ │ ├── resources/
│ │ │ │ │ └── application.properties
│ │ │ │ └── webapp/
│ │ │ │ └── WEB-INF/
│ │ │ │ └── jsp/
│ │ │ │ └── welcome.jsp
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── jsp/
│ │ │ └── SampleWebJspApplicationTests.java
│ │ ├── comsat-spring-boot-sample-tomcat-multi-connectors/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── tomcat/
│ │ │ │ │ ├── SampleTomcatTwoConnectorsApplication.java
│ │ │ │ │ └── web/
│ │ │ │ │ └── SampleController.java
│ │ │ │ └── resources/
│ │ │ │ └── keystore
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── tomcat/
│ │ │ └── SampleTomcatTwoConnectorsApplicationTests.java
│ │ ├── comsat-spring-boot-sample-tomcat-ssl/
│ │ │ ├── build.gradle
│ │ │ ├── sample.jks
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── tomcat/
│ │ │ │ │ ├── SampleTomcatSslApplication.java
│ │ │ │ │ └── web/
│ │ │ │ │ └── SampleController.java
│ │ │ │ └── resources/
│ │ │ │ └── application.properties
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── tomcat/
│ │ │ └── SampleTomcatSslApplicationTests.java
│ │ ├── comsat-spring-boot-sample-tomcat7-jsp/
│ │ │ ├── .gitignore
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── jsp/
│ │ │ │ │ ├── SampleTomcat7JspApplication.java
│ │ │ │ │ └── WelcomeController.java
│ │ │ │ ├── resources/
│ │ │ │ │ └── application.properties
│ │ │ │ └── webapp/
│ │ │ │ └── WEB-INF/
│ │ │ │ └── jsp/
│ │ │ │ └── welcome.jsp
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── jsp/
│ │ │ └── SampleWebJspApplicationTests.java
│ │ ├── comsat-spring-boot-sample-traditional/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── traditional/
│ │ │ │ │ ├── SampleTraditionalApplication.java
│ │ │ │ │ └── config/
│ │ │ │ │ └── WebConfig.java
│ │ │ │ ├── resources/
│ │ │ │ │ └── log4j.properties
│ │ │ │ └── webapp/
│ │ │ │ ├── WEB-INF/
│ │ │ │ │ ├── views/
│ │ │ │ │ │ └── home.jsp
│ │ │ │ │ └── web.xml
│ │ │ │ └── index.html
│ │ │ └── test/
│ │ │ ├── java/
│ │ │ │ └── comsat/
│ │ │ │ └── sample/
│ │ │ │ └── traditional/
│ │ │ │ └── SampleTraditionalApplicationTests.java
│ │ │ └── resources/
│ │ │ └── log4j.properties
│ │ ├── comsat-spring-boot-sample-undertow/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ └── java/
│ │ │ │ └── comsat/
│ │ │ │ └── sample/
│ │ │ │ └── undertow/
│ │ │ │ ├── SampleUndertowApplication.java
│ │ │ │ ├── service/
│ │ │ │ │ └── HelloWorldService.java
│ │ │ │ └── web/
│ │ │ │ └── SampleController.java
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── undertow/
│ │ │ └── SampleUndertowApplicationTests.java
│ │ ├── comsat-spring-boot-sample-undertow-ssl/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── undertow/
│ │ │ │ │ ├── SampleUndertowSslApplication.java
│ │ │ │ │ ├── service/
│ │ │ │ │ │ └── HelloWorldService.java
│ │ │ │ │ └── web/
│ │ │ │ │ └── SampleController.java
│ │ │ │ └── resources/
│ │ │ │ ├── application.properties
│ │ │ │ └── sample.jks
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── undertow/
│ │ │ └── SampleUndertowSslApplicationTests.java
│ │ ├── comsat-spring-boot-sample-web-freemarker/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── freemarker/
│ │ │ │ │ ├── SampleWebFreeMarkerApplication.java
│ │ │ │ │ └── WelcomeController.java
│ │ │ │ └── resources/
│ │ │ │ ├── application.properties
│ │ │ │ └── templates/
│ │ │ │ ├── error.ftl
│ │ │ │ └── welcome.ftl
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── freemarker/
│ │ │ └── SampleWebFreeMarkerApplicationTests.java
│ │ ├── comsat-spring-boot-sample-web-groovy-templates/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── ui/
│ │ │ │ │ ├── InMemoryMessageRespository.java
│ │ │ │ │ ├── Message.java
│ │ │ │ │ ├── MessageRepository.java
│ │ │ │ │ ├── SampleGroovyTemplateApplication.java
│ │ │ │ │ └── mvc/
│ │ │ │ │ └── MessageController.java
│ │ │ │ └── resources/
│ │ │ │ ├── application.properties
│ │ │ │ ├── static/
│ │ │ │ │ └── js/
│ │ │ │ │ ├── jquery-1.7.2.js
│ │ │ │ │ └── jquery.validate.js
│ │ │ │ └── templates/
│ │ │ │ ├── layout.tpl
│ │ │ │ └── messages/
│ │ │ │ ├── form.tpl
│ │ │ │ ├── list.tpl
│ │ │ │ └── view.tpl
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── ui/
│ │ │ └── SampleGroovyTemplateApplicationTests.java
│ │ ├── comsat-spring-boot-sample-web-jsp/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── jsp/
│ │ │ │ │ ├── SampleWebJspApplication.java
│ │ │ │ │ └── WelcomeController.java
│ │ │ │ ├── resources/
│ │ │ │ │ └── application.properties
│ │ │ │ └── webapp/
│ │ │ │ └── WEB-INF/
│ │ │ │ └── jsp/
│ │ │ │ └── welcome.jsp
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── jsp/
│ │ │ └── SampleWebJspApplicationTests.java
│ │ ├── comsat-spring-boot-sample-web-method-security/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── ui/
│ │ │ │ │ └── method/
│ │ │ │ │ └── SampleMethodSecurityApplication.java
│ │ │ │ └── resources/
│ │ │ │ ├── application.properties
│ │ │ │ └── templates/
│ │ │ │ ├── access.html
│ │ │ │ ├── error.html
│ │ │ │ ├── home.html
│ │ │ │ └── login.html
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── ui/
│ │ │ └── method/
│ │ │ └── SampleMethodSecurityApplicationTests.java
│ │ ├── comsat-spring-boot-sample-web-mustache/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── mustache/
│ │ │ │ │ ├── SampleWebMustacheApplication.java
│ │ │ │ │ └── WelcomeController.java
│ │ │ │ └── resources/
│ │ │ │ ├── application.properties
│ │ │ │ └── templates/
│ │ │ │ ├── error.html
│ │ │ │ └── welcome.html
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── mustache/
│ │ │ └── SampleWebMustacheApplicationTests.java
│ │ ├── comsat-spring-boot-sample-web-secure/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── ui/
│ │ │ │ │ └── secure/
│ │ │ │ │ └── SampleWebSecureApplication.java
│ │ │ │ └── resources/
│ │ │ │ ├── application.properties
│ │ │ │ ├── schema.sql
│ │ │ │ └── templates/
│ │ │ │ ├── error.html
│ │ │ │ ├── home.html
│ │ │ │ └── login.html
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── ui/
│ │ │ └── secure/
│ │ │ └── SampleSecureApplicationTests.java
│ │ ├── comsat-spring-boot-sample-web-secure-custom/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── ui/
│ │ │ │ │ └── secure/
│ │ │ │ │ └── SampleWebSecureCustomApplication.java
│ │ │ │ └── resources/
│ │ │ │ ├── application.properties
│ │ │ │ └── templates/
│ │ │ │ ├── error.html
│ │ │ │ ├── home.html
│ │ │ │ └── login.html
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── ui/
│ │ │ └── secure/
│ │ │ └── SampleWebSecureCustomApplicationTests.java
│ │ ├── comsat-spring-boot-sample-web-secure-jdbc/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── ui/
│ │ │ │ │ └── secure/
│ │ │ │ │ └── SampleWebSecureCustomApplication.java
│ │ │ │ └── resources/
│ │ │ │ ├── application.properties
│ │ │ │ ├── data.sql
│ │ │ │ ├── schema.sql
│ │ │ │ └── templates/
│ │ │ │ ├── error.html
│ │ │ │ ├── home.html
│ │ │ │ └── login.html
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── ui/
│ │ │ └── secure/
│ │ │ └── SampleWebSecureCustomApplicationTests.java
│ │ ├── comsat-spring-boot-sample-web-static/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── ui/
│ │ │ │ │ └── SampleWebStaticApplication.java
│ │ │ │ └── webapp/
│ │ │ │ └── index.html
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── ui/
│ │ │ └── SampleWebStaticApplicationTests.java
│ │ ├── comsat-spring-boot-sample-web-ui/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── ui/
│ │ │ │ │ ├── InMemoryMessageRepository.java
│ │ │ │ │ ├── Message.java
│ │ │ │ │ ├── MessageRepository.java
│ │ │ │ │ ├── SampleWebUiApplication.java
│ │ │ │ │ └── mvc/
│ │ │ │ │ └── MessageController.java
│ │ │ │ └── resources/
│ │ │ │ ├── application.properties
│ │ │ │ ├── logback.xml
│ │ │ │ ├── static/
│ │ │ │ │ └── js/
│ │ │ │ │ ├── jquery-1.7.2.js
│ │ │ │ │ └── jquery.validate.js
│ │ │ │ └── templates/
│ │ │ │ ├── layout.html
│ │ │ │ └── messages/
│ │ │ │ ├── form.html
│ │ │ │ ├── list.html
│ │ │ │ └── view.html
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── ui/
│ │ │ └── SampleWebUiApplicationTests.java
│ │ ├── comsat-spring-boot-sample-web-velocity/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── velocity/
│ │ │ │ │ ├── SampleWebVelocityApplication.java
│ │ │ │ │ └── WelcomeController.java
│ │ │ │ └── resources/
│ │ │ │ ├── application.properties
│ │ │ │ └── templates/
│ │ │ │ ├── error.vm
│ │ │ │ └── welcome.vm
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── velocity/
│ │ │ └── SampleWebVelocityApplicationTests.java
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ └── co/
│ │ └── paralleluniverse/
│ │ └── springframework/
│ │ └── boot/
│ │ └── autoconfigure/
│ │ └── web/
│ │ ├── FiberSpringBootApplication.java
│ │ └── FiberWebMvcAutoConfiguration.java
│ ├── comsat-spring-boot-security/
│ │ ├── build.gradle
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ └── co/
│ │ └── paralleluniverse/
│ │ └── springframework/
│ │ └── boot/
│ │ └── security/
│ │ └── autoconfigure/
│ │ └── web/
│ │ └── FiberSecureSpringBootApplication.java
│ ├── comsat-spring-security/
│ │ ├── build.gradle
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ └── co/
│ │ └── paralleluniverse/
│ │ └── springframework/
│ │ └── security/
│ │ └── config/
│ │ └── FiberSecurityContextHolderConfig.java
│ └── comsat-spring-webmvc/
│ ├── build.gradle
│ └── src/
│ └── main/
│ └── java/
│ ├── co/
│ │ └── paralleluniverse/
│ │ └── springframework/
│ │ └── web/
│ │ ├── method/
│ │ │ └── support/
│ │ │ └── FiberInvocableHandlerMethod.java
│ │ └── servlet/
│ │ ├── config/
│ │ │ └── annotation/
│ │ │ └── FiberWebMvcConfigurationSupport.java
│ │ └── mvc/
│ │ └── method/
│ │ └── annotation/
│ │ ├── FiberRequestMappingHandlerAdapter.java
│ │ └── FiberServletInvocableHandlerMethod.java
│ └── org/
│ └── springframework/
│ └── web/
│ └── servlet/
│ └── config/
│ └── annotation/
│ └── ServletConfigAnnotationProtectedProxy.java
├── comsat-test-utils/
│ └── src/
│ ├── main/
│ │ └── java/
│ │ └── co/
│ │ └── paralleluniverse/
│ │ ├── comsat/
│ │ │ └── webactors/
│ │ │ ├── AbstractWebActorTest.java
│ │ │ └── MyWebActor.java
│ │ ├── embedded/
│ │ │ ├── containers/
│ │ │ │ ├── AbstractEmbeddedServer.java
│ │ │ │ ├── EmbeddedServer.java
│ │ │ │ ├── JettyServer.java
│ │ │ │ ├── TomcatServer.java
│ │ │ │ └── UndertowServer.java
│ │ │ └── db/
│ │ │ └── H2JdbcDatasource.java
│ │ └── test/
│ │ └── categories/
│ │ └── CI.java
│ └── test/
│ └── java/
│ └── co/
│ └── paralleluniverse/
│ └── embedded/
│ └── containers/
│ └── EmbeddedServerTest.java
├── comsat-test-war/
│ ├── TestServlet.java
│ ├── build.gradle
│ └── src/
│ └── main/
│ ├── java/
│ │ └── co/
│ │ └── paralleluniverse/
│ │ └── examples/
│ │ └── test/
│ │ └── MyFiberServlet.java
│ └── webapp/
│ ├── META-INF/
│ │ └── context.xml
│ └── WEB-INF/
│ ├── jetty-env.xml
│ └── web.xml
├── comsat-tomcat-loader/
│ ├── build.gradle
│ └── src/
│ ├── main/
│ │ └── java/
│ │ └── co/
│ │ └── paralleluniverse/
│ │ └── comsat/
│ │ └── tomcat/
│ │ └── QuasarWebAppClassLoader.java
│ └── test/
│ └── java/
│ └── co/
│ └── paralleluniverse/
│ └── embedded/
│ └── containers/
│ └── TomcatLoaderTest.java
├── docs/
│ ├── _config.yml
│ ├── _includes/
│ │ ├── footer.html
│ │ ├── head.html
│ │ ├── header.html
│ │ ├── meta.html
│ │ └── top-nav.html
│ ├── _layouts/
│ │ └── default.html
│ ├── _plugins/
│ │ ├── domain_name.filter.rb
│ │ ├── enhanced_kramdown.rb
│ │ ├── exclude_toc.filter.rb
│ │ ├── include_external.rb
│ │ ├── include_snippet.rb
│ │ ├── markdown_converter.rb
│ │ ├── sorted_for.rb
│ │ ├── svg_support.rb
│ │ └── toc.filter.rb
│ ├── css/
│ │ ├── PIE.htc
│ │ ├── fonts/
│ │ │ └── FairpNarMedIta.otf
│ │ ├── pygments/
│ │ │ ├── default.css
│ │ │ ├── github.css
│ │ │ ├── jekyll-github.css
│ │ │ └── linenos.css
│ │ └── screen.css
│ ├── index.md
│ └── js/
│ ├── main.js
│ ├── plugins.js
│ └── vendor/
│ └── html5shiv.js
├── gradle-app.setting
├── settings.gradle
└── travis/
├── build_clj.sh
└── post_build.sh
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
/dist/
/out/
_site/
/docs/javadoc/
.idea/
*.iml
/artifacts
/nbproject/private/
/.nb-gradle
build/
.DS_Store
.gradle/
.nb-gradle-properties
.bdb/
tomcat.8080
**/.lein*
**/target
/comsat-ring-jetty9/pom.xml
/comsat-ring-jetty9/pom.xml.asc
/comsat-httpkit/pom.xml
/comsat-httpkit/pom.xml.asc
.project
.classpath
.settings/
bin/
================================================
FILE: .travis.yml
================================================
language: java
install: gradle -q assemble
script: set -o pipefail; gradle check | sed 's/\e\[?.*?[\@-~]//g'
jdk:
- oraclejdk7
- oraclejdk8
branches:
except:
- gh-pages
env:
global:
- secure: "I8awdba2QYgO+vKmbsIa10L7dGPpcvt/l0sfE+NH2On4ZtBFuX7X4tFncmWizHhrqa0xvoAEl8hZFZ6+RjbAOzd9kDLfdHevLVv6z8VQusvY58GbAHPP0h4yd4PA0YsSeiLv1F7X7bCH6weZo16t42lVh4NrAS2XHqSOOvMyAWo="
- DOCS_BRANCH="release"
- GEN_APIDOCS="gradle javadoc"
after_success:
- chmod a+x travis/build_clj.sh
- ./travis/build_clj.sh
- chmod a+x travis/post_build.sh
- ./travis/post_build.sh
notifications:
slack: puniverse:OsnbakHrYeTcLyalVgtUeI4F
================================================
FILE: CONTRIBUTING.md
================================================
We are happy to receive contributions from the developer community to this free software project. If you make a non-trivial contribution and wish it merged into this project's main repository, you must first agree to and sign this [Contributor's Agreement](https://docs.google.com/a/paralleluniverse.co/forms/d/1U5GinUnRsYbvAP5W3-o11wmRkMmicD_WgRDS6Sy30HA/viewform). We appreciate your effort to making this free software better.
If you create a new GitHub Pull Request, please base bugfix changes upon the `release` branch and any other change (improvements, features etc.) upon the `master` branch.
================================================
FILE: LICENSE
================================================
COMSAT
Copyright (C) ${year}, Parallel Universe Software Co. All rights reserved.
This program and the accompanying materials are dual-licensed under
either the terms of the Eclipse Public License v1.0 as published by
the Eclipse Foundation
or (per the licensee's choosing)
under the terms of the GNU Lesser General Public License version 3.0
as published by the Free Software Foundation.
================================================
FILE: NOTICE
================================================
This product contains modified source code from Tomcat Library, by the Apache Software Foundation:
Copyright (c) 1999-2013 The Apache Software Foundation
* LICENSE: Apache 2.0 (http://www.apache.org/licenses/LICENSE-2.0.html)
* HOMEPAGE: http://tomcat.apache.org/
This product contains modified source code from Spring Framework:
Copyright (c) 1999-2014 The original autors
* LICENSE: Apache 2.0 (http://www.apache.org/licenses/LICENSE-2.0.html)
* HOMEPAGE: http://projects.spring.io/spring-framework/
This product contains modified source code from Spring Boot:
Copyright (c) 1999-2014 The original autors
* LICENSE: Apache 2.0 (http://www.apache.org/licenses/LICENSE-2.0.html)
* HOMEPAGE: http://projects.spring.io/spring-boot/
This product contains modified source code from Ring, by the original Authors (https://github.com/ring-clojure/ring/blob/master/CONTRIBUTORS.md)
Copyright (c) 1999-2014 The original Authors
* LICENSE: MIT (http://opensource.org/licenses/MIT)
* HOMEPAGE: https://github.com/ring-clojure/ring
This product contains modified source code from OkHttp by Square, Inc.:
Copyright (c) 1999-2014 Square, Inc.
* LICENSE: Apache 2.0 (http://www.apache.org/licenses/LICENSE-2.0.html)
* HOMEPAGE: https://github.com/square/okhttp
This product contains modified source code from The Android Open Source Project:
Copyright (C) 2011 The Android Open Source Project
* LICENSE: Apache 2.0 (http://www.apache.org/licenses/LICENSE-2.0.html)
* HOMEPAGE: https://source.android.com/
This product contains modified source code from HTTP Kit:
Copyright (C) 2012-2013 Feng Shen
* LICENSE: Apache 2.0 (http://www.apache.org/licenses/LICENSE-2.0.html)
* HOMEPAGE: http://www.http-kit.org/
This product contains modified source code from Undertow:
JBoss, Home of Professional Open Source. Copyright (C) 2014 Red Hat, Inc., and individual contributors as indicated by the @author tags
* LICENSE: Apache 2.0 (http://www.apache.org/licenses/LICENSE-2.0.html)
* HOMEPAGE: http://undertow.io/
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
================================================
FILE: README.md
================================================
# *COMSAT*<br/>Scalable, Concurrent Web Apps
[](https://travis-ci.org/puniverse/comsat) [](https://www.versioneye.com/user/projects/52dfc913ec1375318800039f) [](https://github.com/puniverse/comsat/releases) [](https://www.eclipse.org/legal/epl-v10.html) [](https://www.gnu.org/licenses/lgpl.html)
## Getting started
Add the following Maven/Gradle dependencies:
| Feature | Artifact
|---------------------------------------------------------------------------------------------------------------------------|--------------------------
| Servlet integration for defining fiber-per-request servlets. | `co.paralleluniverse:comsat-servlet:0.7.0`
| A fiber-blocking Clojure [Ring](https://github.com/ring-clojure/ring) adapter based on Jetty 9.3. | `co.paralleluniverse:comsat-ring-jetty9:0.7.0`
| [HTTP Kit](http://www.http-kit.org/client.html)-based fiber-blocking HTTP client. | `co.paralleluniverse:comsat-httpkit:0.7.0`
| [Jersey server](https://jersey.java.net/) integration for defining REST services. | `co.paralleluniverse:comsat-jersey-server:0.7.0`
| [Dropwizard](http://dropwizard.io/) integration including Jersey, ApacheHttpClient and JDBI. | `co.paralleluniverse:comsat-dropwizard:0.7.0`
| [Spring Framework](http://projects.spring.io/spring-framework/) Web MVC fiber-blocking controller methods integration. | `co.paralleluniverse:comsat-spring-webmvc:0.7.0`
| [Spring Boot](http://projects.spring.io/spring-boot/) auto-configuration support for Web MVC controllers. | `co.paralleluniverse:comsat-spring-boot:0.7.0`
| [Spring Security](http://projects.spring.io/spring-security/) configuration support for fibers. | `co.paralleluniverse:comsat-spring-security:0.7.0`
| [JAX-RS client](https://jersey.java.net/documentation/latest/client.html) integration for HTTP calls with fibers. | `co.paralleluniverse:comsat-jax-rs-client:0.7.0`
| [ApacheHttpClient](http://hc.apache.org/httpcomponents-client-ga/) integration for HTTP calls with fibers. | `co.paralleluniverse:comsat-httpclient:0.7.0`
| [Retrofit](http://square.github.io/retrofit/) integration with fibers. | `co.paralleluniverse:comsat-retrofit:0.7.0`
| [JDBI](http://jdbi.org/) integration with fibers. | `co.paralleluniverse:comsat-jdbi:0.7.0`
| JDBC integration with fibers. | `co.paralleluniverse:comsat-jdbc:0.7.0`
| [jOOQ](http://www.jooq.org/) integration with fibers. | `co.paralleluniverse:comsat-jooq:0.7.0`
| MongoDB fiber-blocking integration for the [Allanbank API](http://www.allanbank.com/mongodb-async-driver/index.html). | `co.paralleluniverse:comsat-mongodb-allanbank:0.7.0`
| [OkHttp](https://github.com/square/okhttp) HTTP+SPDY client integration. | `co.paralleluniverse:comsat-okhttp:0.7.0`
| The Web Actors API. | `co.paralleluniverse:comsat-actors-api:0.7.0`
| Deploy HTTP, SSE and WebSocket Web Actors as [Undertow](http://undertow.io/) handlers. | `co.paralleluniverse:comsat-actors-undertow:0.7.0`
| Deploy HTTP, SSE and WebSocket Web Actors as [Netty](http://netty.io/) handlers. | `co.paralleluniverse:comsat-actors-netty:0.7.0`
| Deploy HTTP, SSE and WebSocket Web Actors in J2EE 7 Servlet and WebSocket (JSR-356) embedded and standalone containers. | `co.paralleluniverse:comsat-actors-servlet:0.7.0`
| Use Comsat in the Tomcat servlet container without the java agent. | `co.paralleluniverse:comsat-tomcat-loader:0.7.0[:jdk8]` (for JDK 8 optionally add the `jdk8` classifier)
| Use Comsat in the Jetty servlet container without the java agent. | `co.paralleluniverse:comsat-jetty-loader:0.7.0[:jdk8]` (for JDK 8 optionally add the `jdk8` classifier)
| [Spring Framework](http://projects.spring.io/spring-framework/) Web integration allows using fiber-blocking controllers. | `co.paralleluniverse:comsat-spring-web:0.7.0`
| [Apache Kafka](http://kafka.apache.org/) producer integration module. | `co.paralleluniverse:comsat-kafka:0.7.0`
| [Apache Shiro](http://shiro.apache.org/) realms integration module. | `co.paralleluniverse:comsat-shiro:0.7.0`
Or, build and install from sources (after installing [Gradle](http://www.gradle.org) locally) in your local maven repository with:
```
gradle install
```
The full testsuite can be run with `gradle build`.
## Usage
* [Documentation](http://docs.paralleluniverse.co/comsat/)
* [Javadoc](http://docs.paralleluniverse.co/comsat/javadoc)
A [Gradle template](https://github.com/puniverse/comsat-gradle-template) project and a [Maven archetype](https://github.com/puniverse/comsat-mvn-archetype) using various integration modules and featuring setup with both Dropwizard and standalone Tomcat are also available for jumpstart and study. Both have a `without-comsat` branch which is useful to clearly see the (minimal, if any) porting effort required (branches comparison works very well for this purporse).
There's a [Comsat-Ring Clojure Leiningen template](https://github.com/puniverse/comsat-ring-template) as well which includes an `auto-instrument` branch that doesn't need any explicit suspendable-marking code (`suspendable!`, `defsfn`, `sfn` etc.) thanks to [Pulsar's new auto-instrumentation feature](http://docs.paralleluniverse.co/pulsar/#automatic-instrumentation).
You can also have a look at [additional examples](https://github.com/puniverse/comsat-examples).
Finally there are several regularly updated third-party bootstrap projects: [Comsat + Dropwizard + jOOQ](https://github.com/circlespainter/comsat-jooq-gradle-template), [Comsat Web Actors Stock Quotes (ported from Akka)](https://github.com/circlespainter/quasar-stocks), [Spring MVC + Tomcat standalone servlet container](https://github.com/circlespainter/spring4-mvc-gradle-annotation-hello-world).
## Getting help
Questions and suggestions are welcome at this [forum/mailing list](https://groups.google.com/forum/#!forum/comsat-user).
## Contributions (including Pull Requests)
Please have a look at some brief [information for contributors](https://github.com/puniverse/comsat/blob/master/CONTRIBUTING.md).
## License
COMSAT is free software published under the following license:
```
Copyright (c) 2013-2016, Parallel Universe Software Co. All rights reserved.
This program and the accompanying materials are dual-licensed under
either the terms of the Eclipse Public License v1.0 as published by
the Eclipse Foundation
or (per the licensee's choosing)
under the terms of the GNU Lesser General Public License version 3.0
as published by the Free Software Foundation.
```
================================================
FILE: build.gradle
================================================
allprojects {
configurations {
markdownDoclet
}
repositories {
// mavenLocal()
mavenCentral()
}
dependencies {
markdownDoclet "ch.raffael.pegdown-doclet:pegdown-doclet:1.1.1"
}
}
subprojects {
apply plugin: 'java'
sourceCompatibility = '1.7'
targetCompatibility = '1.7'
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
group = "co.paralleluniverse"
version = "0.7.1-SNAPSHOT"
status = "integration"
description = "Fibers services for web"
ext.url = "http://puniverse.github.com/comsat"
ext.vendor = "Parallel Universe Software Co."
ext.licenseName1 = "The GNU Lesser General Public License, version 3"
ext.licenseUrl1 = "http://www.gnu.org/licenses/lgpl-3.0.txt"
ext.licenseName2 = "Eclipse Public License - v 1.0"
ext.licenseUrl2 = "http://www.eclipse.org/legal/epl-v10.html"
ext.scmUrl = "https://github.com/puniverse/comsat"
ext.scmConnection = "https://github.com/puniverse/comsat.git"
ext.distDir = "$buildDir/dist"
ext.isRelease = !version.endsWith("SNAPSHOT")
ext.java8 = System.properties['java.version'].startsWith('1.8')
ext.metricsVer = '3.1.2'
ext.asmVer = '5.0.4'
ext.quasarVer = '0.7.6'
ext.jettyVer = '9.2.14.v20151106' // '9.3.x' requires JDK8
ext.tomcatVer = '8.0.33'
ext.undertowVer = '1.3.19.Final'
ext.nettyVer = '4.0.36.Final'
ext.osgiVer = '6.0.0'
ext.jerseyVer = '2.22.2'
ext.hk2apiVer = '2.4.0'
ext.jerseyJettyVer = '9.1.1.v20140108'
ext.servletVer = '3.0.1'
ext.jaxrsVer = '2.0.1'
ext.websocketApiVer = '1.0'
ext.dropwizardVer = '0.9.2'
ext.jdbiVer = '2.72'
ext.retrofitVer = '1.9.0'
ext.jooqVer = '3.6.4' // 3jooq.7.x support only Java 8+
ext.slf4jApiVer = '1.7.21'
ext.log4jVer = '1.2.17'
ext.guavaVer = '19.0'
ext.okhttpVer = '2.6.0' // TODO Upgrade to 3.2.x
ext.apacheAsyncClientVer = '4.1.1'
ext.httpCoreVer = '4.4.4'
ext.httpClientVer = '4.5.2'
ext.junitVer = '4.12'
ext.h2Ver = '1.4.191'
ext.mongodbJavaAsyncDriverVer = '2.0.1'
ext.embedMongoVer = '1.47.0' // TODO Upgrade and troubleshoot
// ext.bytemanVer = '3.0.1'
// Spring projects
ext.springSecurityVer = '4.0.4.RELEASE'
ext.springVer = '4.2.5.RELEASE'
ext.springBootVer = '1.3.3.RELEASE' // TODO Port testsuite diffs
ext.commonsLoggingVer = '1.2'
ext.commonsBeanUtilsVer = '1.9.2'
ext.commonsDigesterVer = '2.1'
ext.commonsCollectionsVer = '3.2.2'
ext.velocityVer = '1.7'
ext.hamcrestVer = '1.3'
ext.jqueryVer = '2.1.4'
ext.snakeYamlVer = '1.16'
ext.javaxELVer = '3.0.1-b05'
ext.hibernateValidatorVer = '5.2.2.Final'
ext.jbossLoggingVer = '3.2.1.Final'
ext.jstlVer = '1.2'
ext.jolokiaVer = '1.3.2'
ext.hsqlVer = '2.3.3'
ext.bootstrapVer = '3.3.5'
ext.hibernateVer = '4.3.11.Final'
ext.kafkaClientsVer = '0.9.0.0' // ''0.8.2.2'
ext.shiroVer = '1.2.4'
configurations.all {
resolutionStrategy {
failOnVersionConflict()
force "org.jdbi:jdbi:$jdbiVer"
force "org.ow2.asm:asm:$asmVer"
force "org.ow2.asm:asm-commons:$asmVer"
force "io.dropwizard.metrics:metrics-core:$metricsVer"
force "com.google.guava:guava:$guavaVer"
force "org.slf4j:slf4j-api:$slf4jApiVer"
force "org.apache.httpcomponents:httpcore:$httpCoreVer"
force "org.apache.httpcomponents:httpclient:$httpClientVer"
force "javax.servlet:javax.servlet-api:$servletVer"
force "javax.ws.rs:javax.ws.rs-api:$jaxrsVer"
force "org.glassfish.jersey.core:jersey-server:$jerseyVer"
force "org.glassfish.jersey.core:jersey-client:$jerseyVer"
force "org.glassfish.jersey.core:jersey-common:$jerseyVer"
force "org.glassfish.jersey.containers:jersey-container-servlet-core:$jerseyVer"
force "org.glassfish.hk2:hk2-api:$hk2apiVer"
force "org.glassfish.hk2:hk2-locator:$hk2apiVer"
force "org.glassfish.hk2.external:javax.inject:$hk2apiVer"
// Spring projects, moving here since changing conf. in subprojects has been deprecated in Gradle 2.5
force "org.springframework:spring-aop:$springVer"
force "org.springframework:spring-beans:$springVer"
force "org.springframework:spring-context:$springVer"
force "org.springframework:spring-core:$springVer"
force "org.springframework:spring-expression:$springVer"
force "org.springframework:spring-web:$springVer"
force "org.springframework:spring-webmvc:$springVer"
force "org.springframework:spring-orm:$springVer"
force "org.springframework:spring-jdbc:$springVer"
force "org.springframework:spring-tx:$springVer"
force "org.springframework.security:spring-security-config:$springSecurityVer"
force "org.springframework.security:spring-security-web:$springSecurityVer"
force "org.webjars:jquery:$jqueryVer"
force "commons-beanutils:commons-beanutils:$commonsBeanUtilsVer"
force "commons-digester:commons-digester:$commonsDigesterVer"
force "commons-collections:commons-collections:$commonsCollectionsVer"
force "org.jboss.logging:jboss-logging:$jbossLoggingVer"
force "org.apache.velocity:velocity:$velocityVer"
force "org.hamcrest:hamcrest-core:$hamcrestVer"
force "org.glassfish:javax.el:$javaxELVer"
force "org.apache.tomcat.embed:tomcat-embed-core:$tomcatVer"
force "org.apache.tomcat.embed:tomcat-embed-el:$tomcatVer"
force "org.hibernate:hibernate-validator:$hibernateValidatorVer"
force "org.slf4j:jcl-over-slf4j:$slf4jApiVer"
force "junit:junit:$junitVer"
}
}
if (!project.hasProperty("sonatypeUsername") || !project.hasProperty("sonatypePassword")) {
// println "sonatype username or password not set"
ext.sonatypeUsername = ""
ext.sonatypePassword = ""
}
if (!project.hasProperty('mainClass')) { // must use project.hasProperty() rather than hasProperty in subprojects (gradle bug)
ext.mainClass = ''
}
repositories {
mavenLocal()
mavenCentral()
maven { url "https://oss.sonatype.org/content/repositories/releases" }
maven { url 'https://oss.sonatype.org/content/repositories/snapshots' }
maven { url 'https://maven.java.net/content/repositories/snapshots' }
maven { url 'http://www.allanbank.com/repo/' }
maven { url 'http://repo.springsource.org/libs-milestone' }
}
configurations {
quasar
// byteman
provided
srcFiles
}
dependencies {
compile "com.google.guava:guava:$guavaVer"
quasar "co.paralleluniverse:quasar-core:$quasarVer@jar"
// byteman "org.jboss.byteman:byteman:$bytemanVer@jar"
testCompile "junit:junit:$junitVer"
provided "co.paralleluniverse:quasar-core:$quasarVer"
provided "javax.servlet:javax.servlet-api:$servletVer" // was 3.1.0
}
sourceSets {
main.compileClasspath = main.compileClasspath + configurations.provided
test.compileClasspath = test.compileClasspath + configurations.provided
test.runtimeClasspath = test.runtimeClasspath + configurations.provided
}
defaultTasks 'install'
classes {
doFirst{
println "Executing scanSuspendables..."
ant.taskdef(
name:'scanSuspendables', classname:'co.paralleluniverse.fibers.instrument.SuspendablesScanner',
classpath: "build/classes/main:build/resources/main:${configurations.provided.asPath}:${configurations.runtime.asPath}")
ant.scanSuspendables(
auto:false,
suspendablesFile: "$sourceSets.main.output.resourcesDir/META-INF/suspendables",
supersFile: "$sourceSets.main.output.resourcesDir/META-INF/suspendable-supers",
append: true) {
fileset(dir: sourceSets.main.output.classesDir)
}
// ant.taskdef(name:'scanSuspendables',
// classname:'co.paralleluniverse.fibers.instrument.OldSuspendablesScanner',
// classpath: "build/classes/main:${configurations.provided.asPath}:${configurations.runtime.asPath}")
// ant.scanSuspendables(outputFile:"$sourceSets.main.output.resourcesDir/META-INF/suspendable-supers",
// suspendablesFile: "$sourceSets.main.output.resourcesDir/META-INF/suspendables"
// ) {
// fileset(dir: sourceSets.main.output.classesDir)
// }
}
}
tasks.withType(Test) {
// systemProperty 'co.paralleluniverse.fibers.verifyInstrumentation', 'true'
// systemProperty 'co.paralleluniverse.fibers.detectRunawayFibers', 'false'
// systemProperty 'org.jboss.byteman.verbose', 'true'
// systemProperty 'org.jboss.byteman.debug', 'true'
jvmArgs "-javaagent:${configurations.quasar.singleFile}" // =v, =d, =c
// , "-javaagent:${configurations.byteman.singleFile}=script:${projectDir}/script.btm"
}
test {
beforeTest { desc ->
logger.quiet("Running test: " + desc)
}
afterTest { desc, result ->
if(result.resultType == TestResult.ResultType.FAILURE) {
logger.quiet("Failed test ${desc.name} [${desc.className}] with exception: ${result.exception}")
if(result.exception != null) {
result.exception.printStackTrace()
}
}
}
}
task sourcesJar(type: Jar, dependsOn: classes) {
classifier = 'sources'
from sourceSets.main.allSource
}
// Adds license header on each java file. gradle licenseMain for check or licenseFormatMain to apply
apply plugin: 'license'
license {
ignoreFailures true
header rootProject.file('LICENSE')
ext.year = Calendar.getInstance().get(Calendar.YEAR)
strictCheck true
skipExistingHeaders true
mapping('java','SLASHSTAR_STYLE')
}
apply plugin: 'com.github.ben-manes.versions'
//rest of the subprojects definition in the block after subproject specific definitions
}
// Per subproject Defintions
project (':comsat-actors-api') {
dependencies {
compile "co.paralleluniverse:quasar-actors:$quasarVer"
}
}
project (':comsat-actors-netty') {
dependencies {
compile "io.netty:netty-all:$nettyVer"
compile project (':comsat-actors-api')
provided "co.paralleluniverse:quasar-core:$quasarVer"
testCompile "javax.websocket:javax.websocket-api:$websocketApiVer"
testCompile project(':comsat-test-utils')
}
}
project (':comsat-actors-servlet') {
dependencies {
compile project (':comsat-actors-api')
provided "javax.websocket:javax.websocket-api:$websocketApiVer"
provided "javax.servlet:javax.servlet-api:$servletVer" // was 3.1.0
provided "co.paralleluniverse:quasar-core:$quasarVer"
testCompile project(':comsat-test-utils')
// testRuntime "ch.qos.logback:logback-classic:1.1.3" // Exceeds Travis limit
}
}
project (':comsat-actors-undertow') {
dependencies {
compile "io.undertow:undertow-core:$undertowVer"
compile project (':comsat-actors-api')
provided "co.paralleluniverse:quasar-core:$quasarVer"
testCompile "javax.websocket:javax.websocket-api:$websocketApiVer"
testCompile project(':comsat-test-utils')
}
}
project (':comsat-dropwizard') {
dependencies {
testRuntime "com.h2database:h2:$h2Ver"
compile "io.dropwizard:dropwizard-core:$dropwizardVer"
compile "io.dropwizard:dropwizard-client:$dropwizardVer"
compile "io.dropwizard:dropwizard-jdbi:$dropwizardVer"
compile project(":comsat-servlet")
compile (project(":comsat-httpclient")) {
exclude group: 'org.apache.httpcomponents', module: 'httpclient'
}
compile project(":comsat-jdbi")
provided "co.paralleluniverse:quasar-core:$quasarVer"
}
}
project (':comsat-httpclient') {
dependencies {
compile "org.apache.httpcomponents:httpclient:$httpClientVer"
compile ("org.apache.httpcomponents:httpasyncclient:$apacheAsyncClientVer") {
exclude group: 'org.apache.httpcomponents', module: 'httpclient'
}
testCompile project(':comsat-test-utils')
}
}
project (':comsat-jax-rs-client') {
dependencies {
compile "javax.ws.rs:javax.ws.rs-api:$jaxrsVer"
compile "org.glassfish.jersey.core:jersey-client:$jerseyVer"
compile "org.glassfish.jersey.connectors:jersey-jetty-connector:$jerseyVer"
testCompile (project(':comsat-test-utils')) {
exclude group: 'org.eclipse.jetty', module: '*'
}
testRuntime "org.eclipse.jetty:jetty-server:$jerseyJettyVer"
testRuntime "org.eclipse.jetty:jetty-servlet:$jerseyJettyVer"
}
}
project (':comsat-jdbc') {
dependencies {
testCompile project(':comsat-test-utils')
}
// AOT instrumentation in order to support jdbc in container
compileJava {
doLast {
println("Instrumenting classes...")
ant.taskdef(name:'instrumentation',
classname:'co.paralleluniverse.fibers.instrument.InstrumentationTask',
classpath: "build/classes/main:${configurations.provided.asPath}:${configurations.compile.asPath}")
ant.instrumentation(verbose:'true', check:'true', debug:'true') {
fileset(dir: sourceSets.main.output.classesDir) {
exclude(name: 'co/paralleluniverse/fibers/instrument/*.class')
}
}
}
}
}
project (':comsat-jdbi') {
dependencies {
compile "org.jdbi:jdbi:$jdbiVer"
compile project (':comsat-jdbc')
testCompile project(':comsat-test-utils')
}
}
project (':comsat-jersey-server') {
dependencies {
compile project(':comsat-servlet')
compile 'org.sonatype.sisu.inject:cglib:3.1.1' // instead of old cglib in jersey
compile ("org.glassfish.jersey.containers:jersey-container-servlet:$jerseyVer") {
exclude group: 'org.glassfish.hk2.external', module: 'cglib'
}
provided "org.osgi:org.osgi.core:$osgiVer"
testCompile project(':comsat-test-utils')
}
}
project (':comsat-jooq') {
dependencies {
compile "org.jooq:jooq:$jooqVer"
compile project (':comsat-jdbc')
testCompile project(':comsat-test-utils')
}
}
project (':comsat-mongodb-allanbank') {
dependencies {
compile "com.allanbank:mongodb-async-driver:$mongodbJavaAsyncDriverVer"
testCompile "de.flapdoodle.embed:de.flapdoodle.embed.mongo:$embedMongoVer"
testCompile project(':comsat-test-utils')
}
}
project (':comsat-okhttp') {
dependencies {
compile "com.squareup.okhttp:okhttp:$okhttpVer"
compile "com.squareup.okhttp:okhttp-urlconnection:$okhttpVer"
compile "com.squareup.okhttp:okhttp-apache:$okhttpVer"
compile project (':comsat-httpclient')
testCompile "com.squareup.okhttp:mockwebserver:$okhttpVer"
}
}
project (':comsat-kafka') {
dependencies {
compile "org.apache.kafka:kafka-clients:$kafkaClientsVer"
}
}
project (':comsat-shiro') {
dependencies {
compile "org.apache.shiro:shiro-core:$shiroVer"
testCompile "co.paralleluniverse:quasar-core:$quasarVer"
testCompile "commons-logging:commons-logging:$commonsLoggingVer"
}
}
project (':comsat-retrofit') {
dependencies {
compile "com.squareup.retrofit:retrofit:$retrofitVer"
compile project (':comsat-httpclient')
compile project (':comsat-okhttp')
testCompile (project (':comsat-dropwizard')) {
exclude group: 'org.jboss.logging', module: 'jboss-logging'
exclude group: 'org.apache.httpcomponents', module: 'httpclient'
}
testCompile (project(':comsat-test-utils')) {
exclude group: 'org.eclipse.jetty', module: '*'
exclude group: 'org.apache.httpcomponents', module: 'httpclient'
exclude group: 'org.apache.tomcat', module: 'tomcat-juli'
// exclude group: 'org.apache.tomcat', module: 'tomcat-dbcp'
}
}
}
project (':comsat-servlet') { // TODO Check seemingly harmless exceptions during tests
dependencies {
testRuntime "ch.qos.logback:logback-classic:1.1.3"
testCompile project(':comsat-test-utils')
}
}
project (':comsat-test-utils') {
dependencies {
compile "org.slf4j:slf4j-api:$slf4jApiVer"
compile "org.apache.httpcomponents:httpclient:$httpClientVer"
compile "com.h2database:h2:$h2Ver"
compile "org.glassfish.jersey.core:jersey-client:$jerseyVer"
compile "org.glassfish.jersey.media:jersey-media-sse:$jerseyVer"
compile "org.eclipse.jetty:jetty-server:$jettyVer"
compile "org.eclipse.jetty:jetty-servlet:$jettyVer"
compile "org.eclipse.jetty.websocket:javax-websocket-server-impl:$jettyVer"
compile "org.eclipse.jetty.websocket:javax-websocket-client-impl:$jettyVer"
compile "org.eclipse.jetty:jetty-annotations:$jettyVer"
compile "org.eclipse.jetty:jetty-deploy:$jettyVer"
compile "io.undertow:undertow-core:$undertowVer"
compile "io.undertow:undertow-servlet:$undertowVer"
compile "io.undertow:undertow-websockets-jsr:$undertowVer"
compile "org.apache.tomcat.embed:tomcat-embed-core:$tomcatVer"
compile "org.apache.tomcat.embed:tomcat-embed-websocket:$tomcatVer"
compile "junit:junit:$junitVer"
provided "co.paralleluniverse:quasar-core:$quasarVer"
provided "co.paralleluniverse:quasar-actors:$quasarVer"
provided project (':comsat-actors-api')
runtime "org.apache.tomcat.embed:tomcat-embed-logging-log4j:$tomcatVer"
runtime "org.apache.tomcat:tomcat-dbcp:$tomcatVer"
}
}
// Can't be done in separate files since srcFiles configuration is resolved by the root javadoc task
project (':comsat-servlet') {
dependencies {
srcFiles "javax.servlet:javax.servlet-api:$servletVer:sources"
}
}
project (':comsat-httpclient') {
dependencies {
srcFiles ("org.apache.httpcomponents:httpasyncclient:$apacheAsyncClientVer:sources") {
exclude group: 'org.apache.httpcomponents', module: 'httpclient'
}
srcFiles "org.apache.httpcomponents:httpclient:$httpClientVer:sources"
// srcFiles "org.apache.httpcomponents:httpcore:$httpCoreVer:sources"
}
}
/* project (':comsat-mongodb') {
dependencies {
srcFiles "com.allanbank:mongodb-async-driver:$mongodbJavaAsyncDriverVer:sources"
}
} */
// links are needed for javadoc external links. (eg. instead of javax.sql.DataSource link to DataSource)
ext.javadocLinks = [
"http://docs.oracle.com/javaee/7/api/",
"http://hc.apache.org/httpcomponents-client-4.5.x/httpclient/apidocs/",
"http://hc.apache.org/httpcomponents-asyncclient-4.1.x/httpasyncclient/apidocs/",
"http://hc.apache.org/httpcomponents-core-4.4.x/httpcore/apidocs/",
"http://square.github.io/retrofit/1.x/retrofit/",
"http://jdbi.org/apidocs/",
"http://www.jooq.org/javadoc/3.6.x/",
"http://docs.oracle.com/javase/7/docs/api/",
"http://puniverse.github.io/quasar/javadoc/",
"http://google.github.io/guava/releases/19.0/api/docs/",
"http://jersey.java.net/apidocs/latest/jersey/",
"http://www.allanbank.com/mongodb-async-driver/apidocs/",
"http://docs.spring.io/spring/docs/current/javadoc-api/",
"http://docs.spring.io/spring-boot/docs/current/api/",
"http://docs.spring.io/autorepo/docs/spring-security/current/apidocs/",
"http://square.github.io/okhttp/2.x/okhttp/",
"http://undertow.io/javadoc/1.3.x/",
"http://netty.io/4.0/api/"
]
ext.javadocExcludes = [
"org/glassfish/jersey/server/internal/**",
"co/paralleluniverse/comsat/webactors/servlet/WebActorEndpoint.java",
// "co/paralleluniverse/comsat/webactors/servlet/WebActorInitializer.java",
"co/paralleluniverse/comsat/webactors/servlet/WebActorServlet.java",
"co/paralleluniverse/comsat/webactors/netty/WebActorHandler.java",
"co/paralleluniverse/comsat/webactors/netty/AutoWebActorHandler.java",
"co/paralleluniverse/comsat/webactors/undertow/WebActorHandler.java",
"co/paralleluniverse/comsat/webactors/undertow/AutoActorHandler.java",
]
// Rest of the subprojects common definitions
subprojects {
javadoc {
source = files(subprojects.collect { project -> project.sourceSets.main.allJava })
classpath = files(subprojects.collect { project -> project.sourceSets.main.compileClasspath })
options {
addStringOption('sourcepath', configurations.srcFiles.files.flatten().join(':'))
docletpath = configurations.markdownDoclet.files.asType(List)
doclet = 'ch.raffael.doclets.pegdown.PegdownDoclet'
addStringOption("parse-timeout", "10")
// stylesheetFile = rootProject.file('./baselib/javadoc.css')
links = javadocLinks
}
}
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
///////// Publish Artifacts
apply plugin: 'maven'
apply plugin: 'signing'
artifacts {
archives jar
archives sourcesJar
archives javadocJar
}
signing {
required { isRelease && gradle.taskGraph.hasTask("uploadArchives") }
sign configurations.archives
}
uploadArchives {
repositories {
mavenDeployer {
beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }
repository(
url: (isRelease ?
"https://oss.sonatype.org/service/local/staging/deploy/maven2" :
"https://oss.sonatype.org/content/repositories/snapshots")) {
// User and Password are taken from ~/.gradle/gradle.properties
authentication(userName: sonatypeUsername, password: sonatypePassword)
}
pom.project {
name project.name
packaging 'jar'
description project.description
url project.url
scm {
url project.scmUrl
connection project.scmConnection
developerConnection project.scmConnection
}
licenses {
license {
name project.licenseName1
url project.licenseUrl1
distribution 'repo'
}
license {
name project.licenseName2
url project.licenseUrl2
distribution 'repo'
}
}
developers {
developer {
id 'eitan'
name 'Eitan Yarden'
}
}
}
}
}
}
}
task javadoc(type: Javadoc) {
title = "Comsat ${project(':comsat-actors-api').version}"
destinationDir = file("docs/javadoc")
source = files(subprojects.collect { project -> project.sourceSets.main.allJava })
classpath = files(subprojects.collect { project -> project.sourceSets.main.compileClasspath })
options {
addStringOption('sourcepath', subprojects.configurations.srcFiles.files.flatten().join(':'))
docletpath = configurations.markdownDoclet.files.asType(List)
doclet = 'ch.raffael.doclets.pegdown.PegdownDoclet'
addStringOption("parse-timeout", "10")
// stylesheetFile = rootProject.file('./baselib/javadoc.css')
links = javadocLinks
}
excludes = javadocExcludes
}
task clean(dependsOn: subprojects.clean) << {
delete 'docs/javadoc'
}
buildscript {
repositories {
mavenCentral()
jcenter()
}
dependencies {
classpath 'nl.javadude.gradle.plugins:license-gradle-plugin:0.10.0'
classpath 'com.github.ben-manes:gradle-versions-plugin:0.6'
classpath 'com.github.jengelman.gradle.plugins:shadow:1.2.0'
}
}
defaultTasks 'install'
================================================
FILE: comsat-actors-api/src/main/java/co/paralleluniverse/comsat/webactors/Cookie.java
================================================
/*
* COMSAT
* Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.
*
* This program and the accompanying materials are dual-licensed under
* either the terms of the Eclipse Public License v1.0 as published by
* the Eclipse Foundation
*
* or (per the licensee's choosing)
*
* under the terms of the GNU Lesser General Public License version 3.0
* as published by the Free Software Foundation.
*/
package co.paralleluniverse.comsat.webactors;
/**
* A HTTP cookie
*/
public class Cookie {
/**
* Constructs a cookie with the specified name and value.
*
* <p>The name must conform to RFC 2109. However, vendors may
* provide a configuration option that allows cookie names conforming
* to the original Netscape Cookie Specification to be accepted.
*
* <p>The name of a cookie cannot be changed once the cookie has been created.
*
* <p>The value can be anything the server chooses to send.
* Its value is probably of interest only to the server.
*
* <p>By default, cookies are created according to the Netscape cookie specification.
* The version can be changed with the {@link Builder#setVersion(int) setVersion} method.
*
* @param name the name of the cookie
* @param value the value of the cookie
* @return a new {@link Cookie.Builder}
*/
public static Builder cookie(String name, String value) {
return new Builder(name, value);
}
public static class Builder {
private final String name;
private final String value;
private String path;
private String domain;
private int maxAge = -1;
private String comment;
private int version;
private boolean httpOnly;
private boolean secure;
private Builder(String name, String value) {
this.name = name;
this.value = value;
}
/**
* Specifies a path for the cookie to which the client should return the cookie.
*
* <p>The cookie is visible to all the pages in the directory
* you specify, and all the pages in that directory's subdirectories.
* A cookie's path must include the servlet that set the cookie,
* for example, <i>/catalog</i>, which makes the cookie
* visible to all directories on the server under <i>/catalog</i>.
*
* <p>Consult RFC 2109 (available on the Internet) for more
* information on setting path names for cookies.
*
* @param uri a {@code String} specifying a path
*
* @see Cookie#getPath
*/
public Builder setPath(String uri) {
this.path = uri;
return this;
}
/**
*
* Specifies the domain within which this cookie should be presented.
*
* <p>The form of the domain name is specified by RFC 2109.
* A domain name begins with a dot ({@code .foo.com}) and means that
* the cookie is visible to servers in a specified Domain Name System
* (DNS) zone (for example,
* {@code www.foo.com}, but not {@code a.b.foo.com}).
* By default, cookies are only returned to the server that sent them.
*
* @param domain the domain name within which this cookie is visible;
* form is according to RFC 2109
*
* @see Cookie#getDomain
*/
public Builder setDomain(String domain) {
this.domain = domain;
return this;
}
/**
* Sets the maximum age in seconds for this Cookie.
*
* <p>A positive value indicates that the cookie will expire
* after that many seconds have passed. Note that the value is
* the <i>maximum</i> age when the cookie will expire, not the cookie's
* current age.
*
* <p>A negative value means that the cookie is not stored persistently and will
* be deleted when the Web browser exits.
* A zero value causes the cookie to be deleted.
*
* @param maxAge an integer specifying the maximum age of the
* cookie in seconds; if negative, means
* the cookie is not stored; if zero, deletes the cookie
*
* @see Cookie#getMaxAge
*/
public Builder setMaxAge(int maxAge) {
this.maxAge = maxAge;
return this;
}
/**
* Specifies a comment that describes a cookie's purpose.
* The comment is useful if the browser presents the cookie
* to the user. Comments
* are not supported by Netscape Version 0 cookies.
*
* @param comment a {@code String} specifying the comment to display to the user
*
* @see Cookie#getComment
*/
public Builder setComment(String comment) {
this.comment = comment;
return this;
}
/**
* Sets the version of the cookie protocol that this Cookie complies with.
*
* <p>Version 0 complies with the original Netscape cookie specification.
* Version 1 complies with RFC 2109.
*
* <p>Since RFC 2109 is still somewhat new, consider
* version 1 as experimental; do not use it yet on production sites.
*
* @param version 0 if the cookie should comply with the original Netscape
* specification; 1 if the cookie should comply with RFC 2109
*
* @see Cookie#getVersion
*/
public Builder setVersion(int version) {
this.version = version;
return this;
}
/**
* Marks or unmarks this Cookie as <i>HttpOnly</i>.
*
* <p>If {@code httpOnly} is set to {@code true}, this cookie is
* marked as <i>HttpOnly</i>, by adding the {@code HttpOnly} attribute to it.
*
* <p><i>HttpOnly</i> cookies are not supposed to be exposed to
* client-side scripting code, and may therefore help mitigate certain
* kinds of cross-site scripting attacks.
*
* @param httpOnly {@code true} if this cookie is to be marked as <i>HttpOnly</i>, {@code false} otherwise
*
* @see Cookie#isHttpOnly()
*/
public Builder setHttpOnly(boolean httpOnly) {
this.httpOnly = httpOnly;
return this;
}
/**
* Indicates to the browser whether the cookie should only be sent
* using a secure protocol, such as HTTPS or SSL.
*
* <p>The default value is {@code false}.
*
* @param flag if {@code true}, sends the cookie from the browser
* to the server only when using a secure protocol;
* if {@code false}, sent on any protocol
*
* @see Cookie#isSecure
*/
public Builder setSecure(boolean flag) {
this.secure = flag;
return this;
}
/**
* Instantiates a new immutable {@link Cookie} based on the values set in this builder.
*
* @return a new {@link Cookie}
*/
public Cookie build() {
return new Cookie(this);
}
}
private final String name;
private final String value;
private final String path;
private final String domain;
private final int maxAge;
private final String comment;
private final int version;
private final boolean httpOnly;
private final boolean secure;
private Cookie(Builder builder) {
this.name = builder.name;
this.value = builder.value;
this.path = builder.path;
this.domain = builder.domain;
this.maxAge = builder.maxAge;
this.comment = builder.comment;
this.version = builder.version;
this.httpOnly = builder.httpOnly;
this.secure = builder.secure;
}
/**
* The name of the cookie.
*
* @see #cookie(String, String)
*/
public String getName() {
return name;
}
/**
* The value of this Cookie.
*
* @see #cookie(String, String)
*/
public String getValue() {
return value;
}
/**
* Returns the path on the server to which the browser returns this cookie.
* The cookie is visible to all subpaths on the server.
*
* @return a {@code String} specifying a path that contains a servlet name, for example, <i>/catalog</i>
*
* @see Builder#setPath
*/
public String getPath() {
return path;
}
/**
* The domain name of this Cookie.
*
* <p>Domain names are formatted according to RFC 2109.
*
* @see Builder#setDomain
*/
public String getDomain() {
return domain;
}
/**
* The maximum age in seconds of this Cookie.
*
* <p>By default, {@code -1} is returned, which indicates that the cookie will persist until browser shutdown.
*
* @return an integer specifying the maximum age of the cookie in seconds;
* if negative, means the cookie persists until browser shutdown
*
* @see Builder#setMaxAge
*/
public int getMaxAge() {
return maxAge;
}
/**
* The comment describing the purpose of this cookie, or {@code null} if the cookie has no comment.
*
* @see Builder#setComment
*/
public String getComment() {
return comment;
}
/**
* The version of the protocol this cookie complies with.
* Version 1 complies with RFC 2109,
* and version 0 complies with the original cookie specification drafted by Netscape.
* Cookies provided by a browser use and identify the browser's cookie version.
*
* @return {@code 0} if the cookie complies with the original Netscape specification;
* {@code 1} if the cookie complies with RFC 2109
*
* @see Builder#setVersion
*/
public int getVersion() {
return version;
}
/**
* Whether this Cookie has been marked as <i>HttpOnly</i>.
*
* @return {@code true} if this Cookie has been marked as <i>HttpOnly</i>, {@code false} otherwise
*/
public boolean isHttpOnly() {
return httpOnly;
}
/**
* Returns {@code true} if the browser is sending cookies only over a secure protocol,
* or {@code false} if the browser can send cookies using any protocol.
*
* @return {@code true} if the browser uses a secure protocol, {@code false} otherwise
*
* @see Builder#setSecure
*/
public boolean isSecure() {
return secure;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("Cookie[");
sb.append("name: ").append(name);
sb.append(" value: ").append(value);
if (path != null)
sb.append(" path: ").append(path);
if (domain != null)
sb.append(" domain: ").append(domain);
sb.append(" maxAge: ").append(maxAge);
if (comment != null)
sb.append(" comment: ").append(comment);
sb.append(" version: ").append(version);
if (httpOnly)
sb.append(" httpOnly: ").append(httpOnly);
sb.append(" secure: ").append(secure);
sb.append(']');
return sb.toString();
}
}
================================================
FILE: comsat-actors-api/src/main/java/co/paralleluniverse/comsat/webactors/HttpMessage.java
================================================
/*
* COMSAT
* Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.
*
* This program and the accompanying materials are dual-licensed under
* either the terms of the Eclipse Public License v1.0 as published by
* the Eclipse Foundation
*
* or (per the licensee's choosing)
*
* under the terms of the GNU Lesser General Public License version 3.0
* as published by the Free Software Foundation.
*/
package co.paralleluniverse.comsat.webactors;
import com.google.common.collect.ListMultimap;
import java.nio.charset.Charset;
import java.util.Collection;
import java.util.Locale;
/**
* A message sent over an HTTP connection. Can be either a request or a response.
*/
public abstract class HttpMessage extends WebMessage {
/**
* A multimap of the headers contained in this message and (all) their values.
* If the request has no headers, returns an empty multimap.
*
* Note that header names' case is not preserved necessarily due to normalization for
* concordance with the HTTP specification.
*/
public abstract ListMultimap<String, String> getHeaders();
/**
* A collection all of the {@link Cookie} objects the client sent with this message.
* This method returns an empty collection if no cookies were sent.
*/
public abstract Collection<Cookie> getCookies();
/**
* The length, in bytes, of the message body and made available by the input stream,
* or {@code -1} if the length is not known or is greater than {@code Integer.MAX_VALUE}.
*/
public abstract int getContentLength();
/**
* The {@link Charset} representing character encoding used in the body of this message.
* This method returns {@code null} if the message does not specify a character encoding.
*/
public abstract Charset getCharacterEncoding();
/**
* The MIME type of the body of the request, or {@code null} if the type is not known
* For example, {@code text/html; charset=UTF-8}.
*/
public abstract String getContentType();
/**
* Returns all values associated with the given header name
*
* @param name the header name
* @return all values associated with the given header name
*/
public Collection<String> getHeaderValues(String name) {
return getHeaders().get(name);
}
/**
* Returns the value of the given header name.
* If the header is not found in the message, this method returns {@code null}.
* If the header has more than one value, this method returns the first value.
*
* In concordance with the HTTP specification, this method treats HTTP header names as case-insensitive.
*
* @param name the header name
* @return the (first) value of the given header name; {@code null} if the header is not found
*/
public String getHeader(String name) {
return first(getHeaders().get(name.toLowerCase(Locale.ENGLISH)));
}
static <V> V first(Collection<V> c) {
if (c == null || c.isEmpty())
return null;
return c.iterator().next();
}
}
================================================
FILE: comsat-actors-api/src/main/java/co/paralleluniverse/comsat/webactors/HttpRequest.java
================================================
/*
* COMSAT
* Copyright (c) 2013-2016, Parallel Universe Software Co. All rights reserved.
*
* This program and the accompanying materials are dual-licensed under
* either the terms of the Eclipse Public License v1.0 as published by
* the Eclipse Foundation
*
* or (per the licensee's choosing)
*
* under the terms of the GNU Lesser General Public License version 3.0
* as published by the Free Software Foundation.
*/
package co.paralleluniverse.comsat.webactors;
import co.paralleluniverse.actors.ActorRef;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableListMultimap;
import com.google.common.collect.LinkedListMultimap;
import com.google.common.collect.ListMultimap;
import com.google.common.collect.Multimap;
import java.nio.ByteBuffer;
import java.nio.charset.Charset;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.TimeZone;
/**
* An HTTP request message.
*/
public abstract class HttpRequest extends HttpMessage {
/**
* The Internet Protocol (IP) host that sent the request or {@code null} if not available.
*/
public abstract String getSourceHost();
/**
* The Internet Protocol (IP) port from which the request was sent or {@code -1} if not available.
*/
public abstract int getSourcePort();
/**
* A multimap of the parameters contained in this message and (all) their values.
* If the request has no parameters, returns an empty multimap.
*/
public abstract Multimap<String, String> getParameters();
/**
* Returns the names values of all attributed associated with this request.
*
* <p>
* The container may set
* attributes to make available custom information about a request.
* For example, for requests made using HTTPS, the attribute
* <code>javax.servlet.request.X509Certificate</code> can be used to
* retrieve information on the certificate of the client.
*
* @return an {@code Object} containing the value of the attribute,
* or {@code null} if the attribute does not exist
*/
public abstract Map<String, Object> getAttributes();
/**
* Returns all values associated with the given parameter
*
* @param name the parameter name
* @return all values associated with the given parameter
*/
public Collection<String> getParametersValues(String name) {
return getParameters().get(name);
}
/**
* Returns the value of the given parameter.
* If the parameter is not found in the message, this method returns {@code null}.
* If the parameter has more than one value, this method returns the first value.
*
* @param name the parameter name
* @return the (first) value of the given parameter name; {@code null} if the parameter is not found
*/
public String getParameter(String name) {
return first(getParameters().get(name));
}
/**
* Returns the value of the given attribute.
* If the attribute is not found in the message, this method returns {@code null}.
*
* @param name the attribute name
* @return the value of the given attribute; {@code null} if the attribute is not found
*/
public Object getAttribute(String name) {
return getAttributes().get(name);
}
/**
* Returns the name of the scheme used to make this request, for example, {@code http}, {@code https}, or {@code ftp}.
* Different schemes have different rules for constructing URLs, as noted in RFC 1738.
*/
public abstract String getScheme();
/**
* The name of the HTTP method with which this request was made;
* for example, GET, POST, or PUT.
*
* @return the name of the method with which this request was made
*/
public abstract String getMethod();
/**
* Returns the value of the specified request header as a {@code long} value that represents a {@code Date} object.
* Use this method with headers that contain dates, such as {@code If-Modified-Since}.
*
* <p>
* The date is returned as the number of milliseconds since January 1, 1970 GMT.
*
* <p>
* If the request does not have a header of the specified name, this method returns -1.
* If the header can't be converted to a date, the method throws an {@code IllegalArgumentException}.
*
* @param name the name of the header
*
* @return a {@code long} value representing the date specified in the header expressed as
* the number of milliseconds since January 1, 1970 GMT,
* or {@code -1} if the named header was not included with the request
*
* @exception IllegalArgumentException If the header value can't be converted to a date
*/
public long getDateHeader(String name) {
String value = getHeader(name);
if (value == null)
return (-1L);
long result = parseDate(value);
if (result != (-1L))
return result;
throw new IllegalArgumentException(value);
}
/**
* Returns any extra path information associated with the URL the client sent when it made this request.
* The extra path information follows the servlet path but precedes the query string and will start with
* a "/" character.
*
* <p>
* This method returns {@code null} if there was no extra path information.
*
* @return a {@code String} decoded by the web container, specifying
* extra path information that comes after the servlet path but before the query string in the request URL;
* or {@code null} if the URL does not have any extra path information
*/
public abstract String getPathInfo();
/**
* The portion of the request URI that indicates the context of the request.
* The context path always comes first in a request URI.
* The path starts with a "/" character but does not end with a "/" character.
* For servlets in the default (root) context, this method returns "".
* The container does not decode this string.
*
* <p>
* It is possible that a container may match a context by
* more than one context path. In such cases this method will return the
* actual context path used by the request.
*
* @return the portion of the request URI that indicates the context of the request
*/
public abstract String getContextPath();
/**
* The query string that is contained in the request URL after the path,
* or {@code null} if the URL does not have a query string.
*/
public abstract String getQueryString();
/**
* Returns the part of this request's URL from the protocol name up to the query string in the first line of the HTTP request.
* The web container does not decode this string.
* For example:
*
* <table summary="Examples of Returned Values">
* <tr align=left>
* <th>First line of HTTP request </th><th> Returned Value</th>
* <tr><td>POST /some/path.html HTTP/1.1<td><td>/some/path.html
* <tr><td>GET http://foo.bar/a.html HTTP/1.0<td><td>/a.html
* <tr><td>HEAD /xyz?a=b HTTP/1.1<td><td>/xyz
* </table>
*
* @return the part of the URL from the protocol name up to the query string
*/
public abstract String getRequestURI();
/**
* Reconstructs the URL the client used to make the request.
* The returned URL contains a protocol, server name, port
* number, and server path, but it does not include query
* string parameters.
*
* <p>
* This method is useful for creating redirect messages
* and for reporting errors.
*
* @return the reconstructed URL
*/
public String getRequestURL() {
StringBuilder url = new StringBuilder();
String scheme = getScheme();
int port = getServerPort();
if (port < 0)
port = 80; // Work around java.net.URL bug
url.append(scheme);
url.append("://");
url.append(getServerName());
if ((scheme.equals("http") && (port != 80))
|| (scheme.equals("https") && (port != 443))) {
url.append(':');
url.append(port);
}
url.append(getRequestURI());
return url.toString();
}
/**
* The host name of the server to which the request was sent.
* It is the value of the part before ":" in the {@code Host} header value, if any,
* or the resolved server name, or the server IP address.
*/
public abstract String getServerName();
/**
* The port number to which the request was sent.
* It is the value of the part after ":" in the {@code Host} header value, if any,
* or the server port where the client connection was accepted on.
*
* @return the port number
*/
public abstract int getServerPort();
/**
* Returns an actor representing the client to which an {@link HttpResponse} should be sent as a response to this request.
* All {@code HttpRequest}s from the same session will have the same sender. It will appear to have died (i.e. send an
* {@link co.paralleluniverse.actors.ExitMessage ExitMessage} if {@link co.paralleluniverse.actors.Actor#watch(co.paralleluniverse.actors.ActorRef) watched})
* when the session is terminated.
*
* @return an actor representing the client
*/
@Override
public abstract ActorRef<WebMessage> getFrom();
@Override
protected String contentString() {
StringBuilder sb = new StringBuilder();
sb.append(" ").append(getMethod());
sb.append(" sourceHost: ").append(getSourceHost());
sb.append(" uri: ").append(getRequestURI());
sb.append(" query: ").append(getQueryString());
sb.append(" params: ").append(getParameters());
sb.append(" headers: ").append(getHeaders());
sb.append(" cookies: ").append(getCookies());
sb.append(" contentLength: ").append(getContentLength());
sb.append(" charEncoding: ").append(getCharacterEncoding());
sb.append(" body: ").append(getStringBody());
return super.contentString() + sb;
}
public static class Builder {
private final ActorRef<WebMessage> sender;
private final String strBody;
private final ByteBuffer binBody;
private String sourceHost;
private int sourcePort;
private String contentType;
private Charset charset;
private List<Cookie> cookies;
private ListMultimap<String, String> headers;
private String method;
private String scheme;
private String server;
private int port;
private String path;
private Multimap<String, String> params;
public Builder(ActorRef<? super WebMessage> from, String body) {
this.sender = (ActorRef<WebMessage>) from;
this.strBody = body;
this.binBody = null;
}
public Builder(ActorRef<? super WebMessage> from, ByteBuffer body) {
this.sender = (ActorRef<WebMessage>) from;
this.binBody = body;
this.strBody = null;
}
public Builder(ActorRef<? super WebMessage> from) {
this(from, (String) null);
}
public Builder setSourceHost(String sourceAddress) {
this.sourceHost = sourceAddress;
return this;
}
public Builder setSourcePort(int sourcePort) {
this.sourcePort = sourcePort;
return this;
}
/**
* Sets the content type of the request being sent to the client.
* <p/>
* The given content type may include a character encoding
* specification, for example, {@code text/html;charset=UTF-8}.
* <p/>
* The {@code Content-Type} header is used to communicate the content type and the character
* encoding used in the response writer to the client
*
* @param contentType the MIME type of the content
*
*/
public Builder setContentType(String contentType) {
this.contentType = contentType;
return this;
}
/**
* Sets the character encoding (MIME charset) of the response being sent to the client,
* for example, {@code UTF-8}.
* If the character encoding has already been set by {@link #setContentType}, this method overrides it.
* Calling {@link #setContentType} with {@code "text/html"} and calling this method with {@code Charset.forName("UTF-8")}
* is equivalent with calling {@code setContentType} with {@code "text/html; charset=UTF-8"}.
* <p/>
* Note that the character encoding cannot be communicated via HTTP headers if
* content type is not specified; however, it is still used to encode text
* written in this response's body.
*
* @param charset only the character sets defined by IANA Character Sets
* (http://www.iana.org/assignments/character-sets)
*
* @see #setContentType
*/
public Builder setCharacterEncoding(Charset charset) {
this.charset = charset;
return this;
}
/**
* Adds a request header with the given name and value.
* This method allows response headers to have multiple values.
*
* @param name the name of the header
* @param value the additional header value.
* If it contains octet string, it should be encoded according to RFC 2047 (http://www.ietf.org/rfc/rfc2047.txt)
*/
public Builder addHeader(final String name, final String value) {
if (headers == null)
headers = LinkedListMultimap.create();
// Normalize header names by their conversion to lower case
headers.put(name.toLowerCase(Locale.ENGLISH), value);
return this;
}
/**
* Adds the specified cookie to the request.
* This method can be called multiple times to set multiple cookies.
*
* @param cookie the {@link Cookie} to return to the client
* @return {@code this}
*/
public Builder addCookie(Cookie cookie) {
if (cookies == null)
cookies = new ArrayList<>();
cookies.add(cookie);
return this;
}
public Builder setMethod(String method) {
this.method = method;
return this;
}
public Builder setScheme(String scheme) {
this.scheme = scheme;
return this;
}
public Builder setServer(String server) {
this.server = server;
return this;
}
public Builder setPort(int port) {
this.port = port;
return this;
}
public Builder setPath(String path) {
this.path = path;
return this;
}
/**
* Adds a request parameter with the given name and value.
*
* @param name the name of the parameter
* @param value the additional header value.
* If it contains octet string, it should be encoded according to RFC 2047 (http://www.ietf.org/rfc/rfc2047.txt)
*/
public Builder addParam(final String name, final String value) {
if (params == null)
params = LinkedListMultimap.create();
params.put(name, value);
return this;
}
/**
* Instantiates a new immutable {@link HttpRequest} based on the values set in this builder.
*
* @return a new {@link HttpRequest}
*/
public HttpRequest build() {
return new SimpleHttpRequest(sender, this);
}
}
private static class SimpleHttpRequest extends HttpRequest {
private final String sourceHost;
private final int sourcePort;
private final ActorRef<WebMessage> sender;
private final String contentType;
private final Charset charset;
private final String strBody;
private final ByteBuffer binBody;
private final Collection<Cookie> cookies;
private final ListMultimap<String, String> headers;
private final Multimap<String, String> params;
private final String method;
private final String scheme;
private final String server;
private final int port;
private final String uri;
/**
* Use when forwarding
*
* @param from
* @param httpRequest
*/
public SimpleHttpRequest(ActorRef<? super WebMessage> from, HttpRequest httpRequest) {
this.sourceHost = httpRequest.getSourceHost();
this.sourcePort = httpRequest.getSourcePort();
this.sender = (ActorRef<WebMessage>) from;
this.contentType = httpRequest.getContentType();
this.charset = httpRequest.getCharacterEncoding();
this.strBody = httpRequest.getStringBody();
this.binBody = httpRequest.getByteBufferBody() != null ? httpRequest.getByteBufferBody().asReadOnlyBuffer() : null;
this.cookies = httpRequest.getCookies();
this.headers = httpRequest.getHeaders();
this.method = httpRequest.getMethod();
this.scheme = httpRequest.getScheme();
this.server = httpRequest.getServerName();
this.port = httpRequest.getServerPort();
this.params = httpRequest.getParameters();
this.uri = httpRequest.getRequestURI();
}
public SimpleHttpRequest(ActorRef<? super WebMessage> from, HttpRequest.Builder builder) {
this.sourceHost = builder.sourceHost;
this.sourcePort = builder.sourcePort;
this.sender = (ActorRef<WebMessage>) from;
this.contentType = builder.contentType;
this.charset = builder.charset;
this.strBody = builder.strBody;
this.binBody = builder.binBody != null ? builder.binBody.asReadOnlyBuffer() : null;
this.cookies = builder.cookies != null ? ImmutableList.copyOf(builder.cookies) : null;
this.headers = builder.headers != null ? ImmutableListMultimap.copyOf(builder.headers) : null;
this.params = builder.params != null ? ImmutableListMultimap.copyOf(builder.params) : null;
this.method = builder.method;
this.scheme = builder.scheme;
this.server = builder.server;
this.port = builder.port;
this.uri = builder.path;
}
@Override
public String getSourceHost() {
return sourceHost;
}
@Override
public int getSourcePort() {
return sourcePort;
}
@Override
public ActorRef<WebMessage> getFrom() {
return sender;
}
@Override
public String getContentType() {
return contentType;
}
@Override
public Charset getCharacterEncoding() {
return charset;
}
@Override
public int getContentLength() {
if (binBody != null)
return binBody.remaining();
else
return -1;
}
@Override
public String getStringBody() {
return strBody;
}
@Override
public ByteBuffer getByteBufferBody() {
return binBody != null ? binBody.duplicate() : null;
}
@Override
public Collection<Cookie> getCookies() {
return cookies;
}
@Override
public ListMultimap<String, String> getHeaders() {
return headers;
}
@Override
public Map<String, Object> getAttributes() {
return null;
}
@Override
public String getScheme() {
return scheme;
}
@Override
public String getMethod() {
return method;
}
@Override
public String getServerName() {
return server;
}
@Override
public int getServerPort() {
return port;
}
@Override
public Multimap<String, String> getParameters() {
return params;
}
@Override
public String getRequestURI() {
return uri;
}
@Override
public String getQueryString() {
if(params == null)
return null;
StringBuilder sb = new StringBuilder();
for(Map.Entry<String, String> entry : params.entries())
sb.append(entry.getKey()).append('=').append(entry.getValue()).append('&');
sb.delete(sb.length()-1, sb.length());
return sb.toString();
}
@Override
public String getPathInfo() {
throw new UnsupportedOperationException();
}
@Override
public String getContextPath() {
throw new UnsupportedOperationException();
}
}
/**
* The only date format permitted when generating HTTP headers.
*/
public static final String RFC1123_DATE = "EEE, dd MMM yyyy HH:mm:ss zzz";
private static final SimpleDateFormat format = new SimpleDateFormat(RFC1123_DATE, Locale.US);
/**
* The set of SimpleDateFormat formats to use in getDateHeader().
*/
private static final SimpleDateFormat formats[] = {
new SimpleDateFormat(RFC1123_DATE, Locale.US),
new SimpleDateFormat("EEEEEE, dd-MMM-yy HH:mm:ss zzz", Locale.US),
new SimpleDateFormat("EEE MMMM d HH:mm:ss yyyy", Locale.US)
};
private static final TimeZone gmtZone = TimeZone.getTimeZone("GMT");
/**
* All HTTP dates are on GMT
*/
static {
format.setTimeZone(gmtZone);
formats[0].setTimeZone(gmtZone);
formats[1].setTimeZone(gmtZone);
formats[2].setTimeZone(gmtZone);
}
private static long parseDate(String value) {
Date date = null;
for (int i = 0; (date == null) && (i < formats.length); i++) {
try {
date = formats[i].parse(value);
} catch (ParseException e) {
// Ignore
}
}
if (date == null)
return -1L;
return date.getTime();
}
}
================================================
FILE: comsat-actors-api/src/main/java/co/paralleluniverse/comsat/webactors/HttpResponse.java
================================================
/*
* COMSAT
* Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.
*
* This program and the accompanying materials are dual-licensed under
* either the terms of the Eclipse Public License v1.0 as published by
* the Eclipse Foundation
*
* or (per the licensee's choosing)
*
* under the terms of the GNU Lesser General Public License version 3.0
* as published by the Free Software Foundation.
*/
package co.paralleluniverse.comsat.webactors;
import co.paralleluniverse.actors.ActorRef;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableListMultimap;
import com.google.common.collect.LinkedListMultimap;
import com.google.common.collect.ListMultimap;
import java.nio.ByteBuffer;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
/**
* An HTTP response message sent as a {@link HttpRequest#sender() response} to an {@link HttpRequest}.
* When this response is sent to an {@link HttpRequest}'s {@link HttpRequest#sender() sender}, the connection stream will be closed
* if {@link HttpRequest#openChannel() openChannel} has not been called on the request,
* and will be flushed but not closed if {@link HttpRequest#openChannel() openChannel} <i>has</i> been called on the request.
*/
public abstract class HttpResponse extends HttpMessage {
@Override
public abstract ActorRef<WebMessage> getFrom();
/**
* The {@link HttpRequest} this is a response to.
*/
public abstract HttpRequest getRequest();
/**
* The response's HTTP status code.
*/
public abstract int getStatus();
/**
* An exception optionally associated with an error status code.
*/
public abstract Throwable getError();
/**
* The redirect URL target if this is a {@link #redirect(HttpRequest, String) redirect} response.
*/
public abstract String getRedirectPath();
public abstract boolean shouldStartActor();
@Override
protected String contentString() {
StringBuilder sb = new StringBuilder();
sb.append(" ").append(getStatus());
sb.append(" headers: ").append(getHeaders());
sb.append(" cookies: ").append(getCookies());
sb.append(" contentLength: ").append(getContentLength());
sb.append(" charEncoding: ").append(getCharacterEncoding());
if (getStringBody() != null)
sb.append(" body: ").append(getStringBody());
if (getRedirectPath() != null)
sb.append(" redirectPath: ").append(getRedirectPath());
if (getError() != null)
sb.append(" error: ").append(getError());
sb.append(" shouldStartActor: ").append(shouldStartActor());
return super.contentString() + sb;
}
/**
* Creates an {@link HttpResponse} with a text body and response code {@code 200}.
*
* @param request the {@link HttpRequest} this is a response to.
* @param body the response body
* @return A response {@link Builder} that can be used to add headers and other metadata to the response.
*/
public static Builder ok(ActorRef<? super WebMessage> from, HttpRequest request, String body) {
return new Builder(from, request, body);
}
/**
* Creates an {@link HttpResponse} with a binary body and response code {@code 200}.
*
* @param request the {@link HttpRequest} this is a response to.
* @param body the response body
* @return A response {@link Builder} that can be used to add headers and other metadata to the response.
*/
public static Builder ok(ActorRef<? super WebMessage> from, HttpRequest request, ByteBuffer body) {
return new Builder(from, request, body);
}
/**
* Creates an {@link HttpResponse} indicating an error, with a given status code and an attached exception that may be reported
* back to the client.
*
* @param request the {@link HttpRequest} this is a response to.
* @param status the response status code
* @param cause the exception that caused the error
* @return A response {@link Builder} that can be used to add headers and other metadata to the response.
*/
public static Builder error(ActorRef<? super WebMessage> from, HttpRequest request, int status, Throwable cause) {
return new Builder(from, request).status(status).error(cause);
}
/**
* Creates an {@link HttpResponse} indicating an error, with a given status code and a text body.
*
* @param request the {@link HttpRequest} this is a response to.
* @param status the response status code
* @param body the response body
* @return A response {@link Builder} that can be used to add headers and other metadata to the response.
*/
public static Builder error(ActorRef<? super WebMessage> from, HttpRequest request, int status, String body) {
return new Builder(from, request, body).status(status);
}
/**
* Sends a temporary redirect response to the client using the
* specified redirect location URL and clears the buffer.
* The status code is set to {@code SC_FOUND} 302 (Found).
* This method can accept relative URLs;
* the container must convert the relative URL to an absolute URL before sending the response to the client.
* If the location is relative without a leading '/' the container interprets it as relative to
* the current request URI.
* If the location is relative with a leading '/' the container interprets it as relative to the container root.
* If the location is relative with two leading '/' the container interprets
* it as a network-path reference
* (see <a href="http://www.ietf.org/rfc/rfc3986.txt"> RFC 3986: Uniform Resource Identifier (URI): Generic Syntax</a>, section 4.2 "Relative Reference").
*
* @param redirectPath the redirect location URL
*/
public static Builder redirect(HttpRequest request, String redirectPath) {
return new Builder(request).redirect(redirectPath);
}
public static class Builder {
private final ActorRef<WebMessage> sender;
private final HttpRequest request;
private final String strBody;
private final ByteBuffer binBody;
private String contentType;
private Charset charset;
private List<Cookie> cookies;
private ListMultimap<String, String> headers;
private int status;
private Throwable error;
private String redirectPath;
private boolean startActor;
public Builder(ActorRef<? super WebMessage> from, HttpRequest request, String body) {
this.sender = (ActorRef<WebMessage>) from;
this.request = request;
this.strBody = body;
this.binBody = null;
this.status = 200;
}
public Builder(ActorRef<? super WebMessage> from, HttpRequest request, ByteBuffer body) {
this.sender = (ActorRef<WebMessage>) from;
this.request = request;
this.binBody = body;
this.strBody = null;
this.status = 200;
}
public Builder(ActorRef<? super WebMessage> from, HttpRequest request) {
this(from, request, (String) null);
}
Builder(HttpRequest request, String body) {
this(null, request, body);
}
Builder(HttpRequest request, ByteBuffer body) {
this(null, request, body);
}
Builder(HttpRequest request) {
this(request, (String) null);
}
/**
* Sets the content type of the response being sent to the client.
* <p/>
* The given content type may include a character encoding
* specification, for example, {@code text/html;charset=UTF-8}.
* <p/>
* The {@code Content-Type} header is used to communicate the content type and the character
* encoding used in the response writer to the client
*
* @param contentType the MIME type of the content
*
*/
public Builder setContentType(String contentType) {
this.contentType = contentType;
return this;
}
/**
* Sets the character encoding (MIME charset) of the response being sent to the client,
* for example, {@code UTF-8}.
* If the character encoding has already been set by {@link #setContentType}, this method overrides it.
* Calling {@link #setContentType} with {@code "text/html"} and calling this method with {@code Charset.forName("UTF-8")}
* is equivalent with calling {@code setContentType} with {@code "text/html; charset=UTF-8"}.
* <p/>
* Note that the character encoding cannot be communicated via HTTP headers if
* content type is not specified; however, it is still used to encode text
* written in this response's body.
*
* @param charset only the character sets defined by IANA Character Sets
* (http://www.iana.org/assignments/character-sets)
*
* @see #setContentType
*/
public Builder setCharacterEncoding(Charset charset) {
this.charset = charset;
return this;
}
/**
* Adds a response header with the given name and value.
* This method allows response headers to have multiple values.
*
* @param name the name of the header
* @param value the additional header value.
* If it contains octet string, it should be encoded according to RFC 2047 (http://www.ietf.org/rfc/rfc2047.txt)
*/
public Builder addHeader(final String name, final String value) {
if (headers == null)
headers = LinkedListMultimap.create();
headers.put(name, value);
return this;
}
/**
* Adds the specified cookie to the response.
* This method can be called multiple times to set multiple cookies.
*
* @param cookie the {@link Cookie} to return to the client
* @return {@code this}
*/
public Builder addCookie(Cookie cookie) {
if (cookies == null)
cookies = new ArrayList<>();
cookies.add(cookie);
return this;
}
/**
* Sets the status code for this response.
*
* <p>
* This method is used to set the return status code
* Valid status codes are those in the 2XX, 3XX, 4XX, and 5XX ranges.
* Other status codes are treated as container specific.
* <p>
* codes in the 4XX and 5XX range will be treated as error codes, and
* will trigger the container's error reporting.
*
* @param sc the status code
* @return {@code this}
* @see #error
*/
public Builder status(int sc) {
this.status = sc;
return this;
}
/**
* Associates an exception with an error status. The exception may be used in the error report
* which might be sent to the client.
*
* @param error the exception responsible for the error
* @return {@code this}
*/
public Builder error(Throwable error) {
this.error = error;
return this;
}
/**
* Indicates that the connection to the client must not be closed after sending this response;
* rather an {@link HttpStreamOpened} message will be sent to the actor sending this response.
*
* @return {@code this}
*/
public Builder startActor() {
this.startActor = true;
return this;
}
Builder redirect(String redirectPath) {
this.redirectPath = redirectPath;
this.status = 302;
return this;
}
/**
* Instantiates a new immutable {@link HttpResponse} based on the values set in this builder.
*
* @return a new {@link HttpResponse}
*/
public HttpResponse build() {
return new SimpleHttpResponse(sender, this);
}
}
private static class SimpleHttpResponse extends HttpResponse {
//
private final ActorRef<WebMessage> sender;
private final HttpRequest request;
private final String contentType;
private final Charset charset;
private final String strBody;
private final ByteBuffer binBody;
private final Collection<Cookie> cookies;
private final ListMultimap<String, String> headers;
private final int status;
private final Throwable error;
private final String redirectPath;
private final boolean startActor;
/**
* Use when forwarding
*
* @param from
* @param httpResponse
*/
public SimpleHttpResponse(ActorRef<? super WebMessage> from, HttpResponse httpResponse) {
this.sender = (ActorRef<WebMessage>) from;
this.request = httpResponse.getRequest();
this.contentType = httpResponse.getContentType();
this.charset = httpResponse.getCharacterEncoding();
this.strBody = httpResponse.getStringBody();
this.binBody = httpResponse.getByteBufferBody() != null ? httpResponse.getByteBufferBody().asReadOnlyBuffer() : null;
this.cookies = httpResponse.getCookies();
this.headers = httpResponse.getHeaders();
this.error = httpResponse.getError();
this.status = httpResponse.getStatus();
this.redirectPath = httpResponse.getRedirectPath();
this.startActor = httpResponse.shouldStartActor();
}
public SimpleHttpResponse(ActorRef<? super WebMessage> from, Builder builder) {
this.sender = (ActorRef<WebMessage>) from;
this.request = builder.request;
this.contentType = builder.contentType;
this.charset = builder.charset;
this.strBody = builder.strBody;
this.binBody = builder.binBody != null ? builder.binBody.asReadOnlyBuffer() : null;
this.cookies = builder.cookies != null ? ImmutableList.copyOf(builder.cookies) : null;
this.headers = builder.headers != null ? ImmutableListMultimap.copyOf(builder.headers) : null;
this.error = builder.error;
this.status = builder.status;
this.redirectPath = builder.redirectPath;
this.startActor = builder.startActor;
}
@Override
public ActorRef<WebMessage> getFrom() {
return sender;
}
@Override
public String getContentType() {
return contentType;
}
@Override
public Charset getCharacterEncoding() {
return charset;
}
@Override
public int getContentLength() {
if (binBody != null)
return binBody.remaining();
else
return -1;
}
@Override
public String getStringBody() {
return strBody;
}
@Override
public ByteBuffer getByteBufferBody() {
return binBody != null ? binBody.duplicate() : null;
}
@Override
public Collection<Cookie> getCookies() {
return cookies;
}
@Override
public ListMultimap<String, String> getHeaders() {
return headers;
}
/**
* The {@link HttpRequest} this is a response to.
*/
@Override
public HttpRequest getRequest() {
return request;
}
/**
* The response's HTTP status code.
*/
@Override
public int getStatus() {
return status;
}
/**
* An exception optionally associated with an error status code.
*/
@Override
public Throwable getError() {
return error;
}
/**
* The redirect URL target if this is a {@link #redirect(HttpRequest, String) redirect} response.
*/
@Override
public String getRedirectPath() {
return redirectPath;
}
@Override
public boolean shouldStartActor() {
return startActor;
}
}
}
================================================
FILE: comsat-actors-api/src/main/java/co/paralleluniverse/comsat/webactors/HttpStreamOpened.java
================================================
/*
* COMSAT
* Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.
*
* This program and the accompanying materials are dual-licensed under
* either the terms of the Eclipse Public License v1.0 as published by
* the Eclipse Foundation
*
* or (per the licensee's choosing)
*
* under the terms of the GNU Lesser General Public License version 3.0
* as published by the Free Software Foundation.
*/
package co.paralleluniverse.comsat.webactors;
import co.paralleluniverse.actors.ActorRef;
import co.paralleluniverse.actors.behaviors.IdMessage;
/**
* A message sent to a web actor indicating that a new stream has been opened.
* This message is sent as a result of the web actor replying to an {@link HttpRequest}
* with an {@link HttpResponse} whose {@link HttpResponse.Builder#startActor() startActor} method has been called.
* The actor sending this message writes all received {@link WebDataMessage} to the HTTP response stream that's been left
* open after the {@link HttpResponse}.
* <p/>
* This is usually used by SSE.
*/
public class HttpStreamOpened extends WebStreamOpened implements IdMessage {
private final HttpResponse response;
public HttpStreamOpened(ActorRef<WebDataMessage> actor, HttpResponse response) {
super(actor);
this.response = response;
}
/**
* {@inheritDoc }
* <p/>
* Returns the {@link HttpResponse} passed to the constructor.
*/
@Override
public Object getId() {
return response;
}
}
================================================
FILE: comsat-actors-api/src/main/java/co/paralleluniverse/comsat/webactors/SSE.java
================================================
/*
* COMSAT
* Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.
*
* This program and the accompanying materials are dual-licensed under
* either the terms of the Eclipse Public License v1.0 as published by
* the Eclipse Foundation
*
* or (per the licensee's choosing)
*
* under the terms of the GNU Lesser General Public License version 3.0
* as published by the Free Software Foundation.
*/
package co.paralleluniverse.comsat.webactors;
import co.paralleluniverse.actors.ActorRef;
import co.paralleluniverse.strands.channels.Channels;
import co.paralleluniverse.strands.channels.SendPort;
import com.google.common.base.Function;
import java.nio.charset.Charset;
/**
* Utility classes for SSE (<a href="http://dev.w3.org/html5/eventsource/">Server-Sent Events</a>).
* To start an SSE stream in response to an {@link HttpRequest}, do the following:
*
* ```java
* request.getFrom().send(new HttpResponse(self(), SSE.startSSE(request)));
* ```
* This will result in a {@link HttpStreamOpened} message being sent to the web actor from a newly
* created actor that represents the SSE connection. To send SSE events, simply send {@link WebDataMessage}s
* to that actor:
*
* ```java
* // send events
* sseActor.send(new WebDataMessage(self(), SSE.event("this is an SSE event!")));
* ```
*
* You might want to consider wrapping the actor sending {@link HttpStreamOpened} with a
* {@link co.paralleluniverse.strands.channels.Channels#mapSend(co.paralleluniverse.strands.channels.SendPort, com.google.common.base.Function) mapping channel}
* to transform a specialized message class into {@link WebDataMessage} using the methods in this class.
*
* For a good tutorial on SSE, please see: <a href="http://www.html5rocks.com/en/tutorials/eventsource/basics/">Stream Updates with Server-Sent Events</a>,
* by Eric Bidelman
*/
public final class SSE {
/*
*see http://www.html5rocks.com/en/tutorials/eventsource/basics/
*/
/**
* This method returns a new {@link HttpResponse HttpResponse} with
* its {@link HttpResponse.Builder#setContentType(String) content type}
* and {@link HttpResponse.Builder#setCharacterEncoding(java.nio.charset.Charset) character encoding} set
* in compliance with to the SSE spec, and an empty body.
*
* @param request the {@link HttpRequest} in response to which we wish to start an SSE stream.
* @return an {@link HttpResponse.Builder HttpResponse.Builder} (which can have other metadata, such as headers or cookies added to).
*/
public static HttpResponse.Builder startSSE(ActorRef<? super WebMessage> from, HttpRequest request) {
return new HttpResponse.Builder(from, request)
.setContentType("text/event-stream")
.setCharacterEncoding(Charset.forName("UTF-8"))
.startActor();
}
/**
* This method returns a new {@link HttpResponse HttpResponse} with
* its {@link HttpResponse.Builder#setContentType(String) content type}
* and {@link HttpResponse.Builder#setCharacterEncoding(java.nio.charset.Charset) character encoding} set
* in compliance with to the SSE spec, and a body encoding a {@link #reconnectTimeout(long) reconnection timeout} indication.
*
* @param request the {@link HttpRequest} in response to which we wish to start an SSE stream.
* @param reconnectTimeout the amount of time, in milliseconds, the client should wait before attempting to reconnect
* after the connection has closed (will be encoded in the message body as {@code retry: ...})
* @return an {@link HttpResponse.Builder HttpResponse.Builder} (which can have other metadata, such as headers or cookies added to).
*/
public static HttpResponse.Builder startSSE(ActorRef<? super WebMessage> from, HttpRequest request, long reconnectTimeout) {
return new HttpResponse.Builder(from, request, retryString(reconnectTimeout) + '\n')
.setContentType("text/event-stream")
.setCharacterEncoding(Charset.forName("UTF-8"))
.startActor();
}
/**
* Wrappes the whole string body
*/
public static SendPort<WebDataMessage> wrapAsSSE(SendPort<WebDataMessage> actor) {
return Channels.mapSend(actor, new Function<WebDataMessage, WebDataMessage>() {
@Override
public WebDataMessage apply(WebDataMessage f) {
return new WebDataMessage(f.getFrom(), SSE.event(f.getStringBody()));
}
});
}
/**
* Returns the SSE last-event-id value from the request (the {@code Last-Event-ID} header).
*
* @param request the request
* @return the SSE last-event-id value from the request, or {@code -1} if not specified.
*/
public static long getLastEventId(HttpRequest request) {
String str = request.getHeader("Last-Event-ID");
if (str == null)
return -1;
return Long.parseLong(str);
}
/**
* Encodes a given payload as an SSE event message. The returned value can be used as the body of a {@link WebDataMessage}.
*
* @param id the SSE event id (will be encoded in the message as {@code id: ...})
* @param eventType the name of the type of the event (will be encoded in the message as {@code event: ...})
* @param payload the message payload (will be encoded in the message as {@code data: ...})
* @return the payload encoded as an SSE event
*/
public static String event(long id, String eventType, String payload) {
return idString(id) + eventString(eventType) + dataString(payload) + '\n';
}
/**
* Encodes a given payload as an SSE event message. The returned value can be used as the body of a {@link WebDataMessage}.
*
* @param eventType the name of the type of the event (will be encoded in the message as {@code event: ...})
* @param payload the message payload (will be encoded in the message as {@code data: ...})
* @return the payload encoded as an SSE event
*/
public static String event(String eventType, String payload) {
return dataString(payload) + '\n';
}
/**
* Encodes a given payload and id as an SSE event message. The returned value can be used as the body of a {@link WebDataMessage}.
*
* @param id the SSE event id (will be encoded in the message as {@code id: ...})
* @param payload the message payload (will be encoded in the message as {@code data: ...})
* @return the id and payload encoded as an SSE event
*/
public static String event(long id, String payload) {
return idString(id) + dataString(payload) + '\n';
}
/**
* Encodes a given payload as an SSE event message. The returned value can be used as the body of a {@link WebDataMessage}.
*
* @param payload the message payload the message payload (will be encoded in the message as {@code data: ...})
* @return the payload encoded as an SSE event
*/
public static String event(String payload) {
return dataString(payload) + '\n';
}
/**
* Encodes an indication to the client to attempt a reconnect if the connection is closed within the given time.
* This string may be concatenated ahead of a string encoding an SSE event, like so: {@code reconnectTimeout(t) + event(x)}).
*
* @param reconnectTimeout the amount of time, in milliseconds, the client should wait before attempting to reconnect
* after the connection has closed (will be encoded in the message as {@code retry: ...})
* @return a string encoding the reconnection timeout indication
*/
public static String reconnectTimeout(long reconnectTimeout) {
return retryString(reconnectTimeout);
}
private static String idString(long id) {
return "id: " + id + '\n';
}
private static String eventString(String eventName) {
return "event: " + eventName + '\n';
}
private static String retryString(long reconnectTimeout) {
return "retry: " + reconnectTimeout + '\n';
}
private static String dataString(String payload) {
String message = payload.trim();
if (message.charAt(message.length() - 1) == '\n')
message = message.substring(0, message.length() - 1);
message = message.replaceAll("\n", "\ndata: ");
message = "data: " + message + '\n';
return message;
}
private SSE() {
}
}
================================================
FILE: comsat-actors-api/src/main/java/co/paralleluniverse/comsat/webactors/WebActor.java
================================================
/*
* COMSAT
* Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.
*
* This program and the accompanying materials are dual-licensed under
* either the terms of the Eclipse Public License v1.0 as published by
* the Eclipse Foundation
*
* or (per the licensee's choosing)
*
* under the terms of the GNU Lesser General Public License version 3.0
* as published by the Free Software Foundation.
*/
package co.paralleluniverse.comsat.webactors;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* A class annotated with this annotation will be automatically loaded by COMSAT
* and spawned as a web actor.
*/
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface WebActor {
/**
* The name of the WebActor.
*/
String name() default "";
/**
* Display name of this WebActor, if present.
*/
String displayName() default "";
/**
* Description of this WebActor, if present.
*/
String description() default "";
/**
* Array of HTTP URL patterns to which this WebActor applies.
* For example {@code /myservice}, or {@code /myservice/*}.
*/
String[] httpUrlPatterns() default {};
/**
* Array of WebSocket URI patterns to which this WebActor applies.
* For example {@code /myservice/ws}, or {@code /myservice/ws/*}.
*/
String[] webSocketUrlPatterns() default {};
/**
* A convenience property, to allow extremely simple annotation of a class -
* Array of HTTP URL patterns.
*
* @see #httpUrlPatterns()
*/
String[] value() default {};
}
================================================
FILE: comsat-actors-api/src/main/java/co/paralleluniverse/comsat/webactors/WebDataMessage.java
================================================
/*
* COMSAT
* Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.
*
* This program and the accompanying materials are dual-licensed under
* either the terms of the Eclipse Public License v1.0 as published by
* the Eclipse Foundation
*
* or (per the licensee's choosing)
*
* under the terms of the GNU Lesser General Public License version 3.0
* as published by the Free Software Foundation.
*/
package co.paralleluniverse.comsat.webactors;
import co.paralleluniverse.actors.ActorRef;
import java.nio.ByteBuffer;
/**
* A message that can be received from or sent to a web client, and contains only data (and no metadata like headers).
*/
public class WebDataMessage extends WebMessage {
private final ActorRef<WebDataMessage> sender;
private final String string;
private final ByteBuffer byteBuffer;
/**
* Constructs a {@code WebDataMessage} with a text body.
* @param from the message sender
* @param body the message body
*/
public WebDataMessage(ActorRef<? super WebDataMessage> from, String body) {
this.sender = (ActorRef<WebDataMessage>)from;
this.string = body;
this.byteBuffer = null;
}
/**
* Constructs a {@code WebDataMessage} with a binary body.
* @param from the message sender
* @param body the message body
*/
public WebDataMessage(ActorRef<? super WebDataMessage> from, ByteBuffer body) {
this.sender = (ActorRef<WebDataMessage>)from;
this.string = null;
this.byteBuffer = body;
}
@Override
public ActorRef<WebDataMessage> getFrom() {
return sender;
}
/**
* Whether this is a binary message or a text message.
* @return {@code true} if this is a binary message; {@code false} if this is a text mesasge.
*/
public boolean isBinary() {
return (byteBuffer != null);
}
@Override
public String getStringBody() {
return string;
}
@Override
public ByteBuffer getByteBufferBody() {
return byteBuffer;
}
@Override
protected String contentString() {
return super.contentString() +
" size: " + (string != null ? string.length() : byteBuffer != null ? byteBuffer.remaining() : 0) +
(isBinary() ? "" : " data: " + string);
}
}
================================================
FILE: comsat-actors-api/src/main/java/co/paralleluniverse/comsat/webactors/WebMessage.java
================================================
/*
* COMSAT
* Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.
*
* This program and the accompanying materials are dual-licensed under
* either the terms of the Eclipse Public License v1.0 as published by
* the Eclipse Foundation
*
* or (per the licensee's choosing)
*
* under the terms of the GNU Lesser General Public License version 3.0
* as published by the Free Software Foundation.
*/
package co.paralleluniverse.comsat.webactors;
import co.paralleluniverse.actors.ActorRef;
import co.paralleluniverse.actors.behaviors.ActorMessage;
import co.paralleluniverse.actors.behaviors.FromMessage;
import java.nio.ByteBuffer;
/**
* A message that is received from or can be set to a web client (via HTTP or WebSockets).
* The message has either a {@link #getStringBody() text body} or a {@link #getByteBufferBody() binary} body (but not both).
*/
public abstract class WebMessage extends ActorMessage implements FromMessage {
/**
* The actor that sent this message. This can be a virtual actor representing the web client.
*/
@Override
public abstract ActorRef<? extends WebMessage> getFrom();
/**
* The message's text body, if it has one; {@code null} otherwise.
*/
public abstract String getStringBody();
/**
* The message's binary body, if it has one; {@code null} otherwise.
*/
public abstract ByteBuffer getByteBufferBody();
@Override
protected String contentString() {
return super.contentString() + " from: " + getFrom();
}
}
================================================
FILE: comsat-actors-api/src/main/java/co/paralleluniverse/comsat/webactors/WebSocketOpened.java
================================================
/*
* COMSAT
* Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.
*
* This program and the accompanying materials are dual-licensed under
* either the terms of the Eclipse Public License v1.0 as published by
* the Eclipse Foundation
*
* or (per the licensee's choosing)
*
* under the terms of the GNU Lesser General Public License version 3.0
* as published by the Free Software Foundation.
*/
package co.paralleluniverse.comsat.webactors;
import co.paralleluniverse.actors.ActorRef;
/**
* A message sent to a web actor indicating that a new WebSocket has been opened by the client.
*/
public class WebSocketOpened extends WebStreamOpened {
public WebSocketOpened(ActorRef<WebDataMessage> actor) {
super(actor);
}
}
================================================
FILE: comsat-actors-api/src/main/java/co/paralleluniverse/comsat/webactors/WebStreamOpened.java
================================================
/*
* COMSAT
* Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.
*
* This program and the accompanying materials are dual-licensed under
* either the terms of the Eclipse Public License v1.0 as published by
* the Eclipse Foundation
*
* or (per the licensee's choosing)
*
* under the terms of the GNU Lesser General Public License version 3.0
* as published by the Free Software Foundation.
*/
package co.paralleluniverse.comsat.webactors;
import co.paralleluniverse.actors.ActorRef;
import java.nio.ByteBuffer;
/**
* A message sent to a web actor indicating that a new stream has been opened by the client.
* The stream is usually a WebSocket or an SSE stream.
*/
public class WebStreamOpened extends WebMessage {
private final ActorRef<WebDataMessage> actor;
public WebStreamOpened(ActorRef<WebDataMessage> actor) {
this.actor = actor;
}
@Override
public ActorRef<WebDataMessage> getFrom() {
return actor;
}
/**
* {@inheritDoc}
* <p>This method returns {@code null}, as it has no body.
*
* @return {@code null}
*/
@Override
public String getStringBody() {
return null;
}
/**
* {@inheritDoc}
* <p>This method returns {@code null}, as it has no body.
*
* @return {@code null}
*/
@Override
public ByteBuffer getByteBufferBody() {
return null;
}
}
================================================
FILE: comsat-actors-api/src/main/java/co/paralleluniverse/comsat/webactors/package-info.java
================================================
/*
* Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.
*
* This program and the accompanying materials are dual-licensed under
* either the terms of the Eclipse Public License v1.0 as published by
* the Eclipse Foundation
*
* or (per the licensee's choosing)
*
* under the terms of the GNU Lesser General Public License version 3.0
* as published by the Free Software Foundation.
*/
/**
* The Web Actors API
*/
package co.paralleluniverse.comsat.webactors;
================================================
FILE: comsat-actors-netty/src/main/java/co/paralleluniverse/comsat/webactors/netty/AutoWebActorHandler.java
================================================
/*
* COMSAT
* Copyright (c) 2015-2016, Parallel Universe Software Co. All rights reserved.
*
* This program and the accompanying materials are dual-licensed under
* either the terms of the Eclipse Public License v1.0 as published by
* the Eclipse Foundation
*
* or (per the licensee's choosing)
*
* under the terms of the GNU Lesser General Public License version 3.0
* as published by the Free Software Foundation.
*/
package co.paralleluniverse.comsat.webactors.netty;
import co.paralleluniverse.actors.Actor;
import co.paralleluniverse.actors.ActorImpl;
import co.paralleluniverse.actors.ActorRef;
import co.paralleluniverse.actors.ActorSpec;
import co.paralleluniverse.common.reflection.AnnotationUtil;
import co.paralleluniverse.common.reflection.ClassLoaderUtil;
import co.paralleluniverse.common.util.Pair;
import co.paralleluniverse.comsat.webactors.WebActor;
import co.paralleluniverse.comsat.webactors.WebMessage;
import io.netty.handler.codec.http.FullHttpRequest;
import io.netty.handler.codec.http.cookie.Cookie;
import io.netty.util.internal.logging.InternalLogger;
import io.netty.util.internal.logging.InternalLoggerFactory;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.*;
/**
* @author circlespainter
*/
public class AutoWebActorHandler extends WebActorHandler {
private static final InternalLogger log = InternalLoggerFactory.getInstance(AutoWebActorHandler.class);
private static final List<Class<?>> actorClasses = new ArrayList<>(32);
private static final Object[] EMPTY_OBJECT_ARRAY = new Object[0];
public AutoWebActorHandler() {
this(null, null, null, null);
}
public AutoWebActorHandler(List<String> packagePrefixes) {
this(null, null, packagePrefixes, null);
}
public AutoWebActorHandler(String httpResponseEncoderName, List<String> packagePrefixes) {
this(httpResponseEncoderName, null, packagePrefixes, null);
}
public AutoWebActorHandler(String httpResponseEncoderName) {
this(httpResponseEncoderName, null, null, null);
}
public AutoWebActorHandler(String httpResponseEncoderName, ClassLoader userClassLoader) {
this(httpResponseEncoderName, userClassLoader, null, null);
}
public AutoWebActorHandler(String httpResponseEncoderName, ClassLoader userClassLoader, List<String> packagePrefixes) {
this(httpResponseEncoderName, userClassLoader, packagePrefixes, null);
}
public AutoWebActorHandler(String httpResponseEncoderName, Map<Class<?>, Object[]> actorParams) {
this(httpResponseEncoderName, null, null, actorParams);
}
public AutoWebActorHandler(String httpResponseEncoderName, List<String> packagePrefixes, Map<Class<?>, Object[]> actorParams) {
this(httpResponseEncoderName, null, packagePrefixes, actorParams);
}
public AutoWebActorHandler(String httpResponseEncoderName, ClassLoader userClassLoader, List<String> packagePrefixes, Map<Class<?>, Object[]> actorParams) {
super(null, httpResponseEncoderName);
super.contextProvider = newContextProvider(userClassLoader != null ? userClassLoader : ClassLoader.getSystemClassLoader(), packagePrefixes, actorParams);
}
public AutoWebActorHandler(String httpResponseEncoderName, AutoContextProvider prov) {
super(prov, httpResponseEncoderName);
}
protected AutoContextProvider newContextProvider(ClassLoader userClassLoader, List<String> packagePrefixes, Map<Class<?>, Object[]> actorParams) {
return new AutoContextProvider(userClassLoader, packagePrefixes, actorParams);
}
public static class AutoContextProvider implements WebActorContextProvider {
private final ClassLoader userClassLoader;
private final List<String> packagePrefixes;
private final Map<Class<?>, Object[]> actorParams;
private final Long defaultContextValidityMS;
public AutoContextProvider(ClassLoader userClassLoader, List<String> packagePrefixes, Map<Class<?>, Object[]> actorParams) {
this(userClassLoader, packagePrefixes, actorParams, null);
}
public AutoContextProvider(ClassLoader userClassLoader, List<String> packagePrefixes, Map<Class<?>, Object[]> actorParams, Long defaultContextValidityMS) {
this.userClassLoader = userClassLoader;
this.packagePrefixes = packagePrefixes;
this.actorParams = actorParams;
this.defaultContextValidityMS = defaultContextValidityMS;
}
@Override
public final Context get(final FullHttpRequest req) {
final String sessionId = getSessionId(req);
if (sessionId != null && sessionsEnabled()) {
final Context actorContext = sessions.get(sessionId);
if (actorContext != null) {
if (actorContext.renew())
return actorContext;
else
sessions.remove(sessionId); // Evict session
}
}
return newActorContext(req);
}
protected AutoContext newActorContext(FullHttpRequest req) {
final AutoContext c = new AutoContext(req, packagePrefixes, actorParams, userClassLoader);
if (defaultContextValidityMS != null)
c.setValidityMS(defaultContextValidityMS);
return c;
}
private String getSessionId(FullHttpRequest req) {
final Set<Cookie> cookies = NettyHttpRequest.getNettyCookies(req);
if (cookies != null) {
for (final Cookie c : cookies) {
if (c != null && SESSION_COOKIE_KEY.equals(c.name()))
return c.value();
}
}
return null;
}
}
private static class AutoContext extends DefaultContextImpl {
private String id;
private final List<String> packagePrefixes;
private final Map<Class<?>, Object[]> actorParams;
private final ClassLoader userClassLoader;
private Class<? extends ActorImpl<? extends WebMessage>> actorClass;
private ActorRef<? extends WebMessage> actorRef;
public AutoContext(FullHttpRequest req, List<String> packagePrefixes, Map<Class<?>, Object[]> actorParams, ClassLoader userClassLoader) {
this.packagePrefixes = packagePrefixes;
this.actorParams = actorParams;
this.userClassLoader = userClassLoader;
fillActor(req);
}
private void fillActor(FullHttpRequest req) {
final Pair<ActorRef<? extends WebMessage>, Class<? extends ActorImpl<? extends WebMessage>>> p = autoCreateActor(req);
if (p != null) {
actorRef = p.getFirst();
actorClass = p.getSecond();
}
}
@Override
public final String getId() {
return id != null ? id : (id = UUID.randomUUID().toString());
}
@Override
public final void restart(FullHttpRequest req) {
renewed = new Date().getTime();
fillActor(req);
}
@Override
public final ActorRef<? extends WebMessage> getWebActor() {
return actorRef;
}
@Override
public final boolean handlesWithHttp(String uri) {
return WebActorHandler.handlesWithHttp(uri, actorClass);
}
@Override
public final boolean handlesWithWebSocket(String uri) {
return WebActorHandler.handlesWithWebSocket(uri, actorClass);
}
@Override
public WatchPolicy watch() {
return WatchPolicy.DIE_IF_EXCEPTION_ELSE_RESTART;
}
@SuppressWarnings("unchecked")
private Pair<ActorRef<? extends WebMessage>, Class<? extends ActorImpl<? extends WebMessage>>> autoCreateActor(FullHttpRequest req) {
registerActorClasses();
final String uri = req.getUri();
for (final Class<?> c : actorClasses) {
if (WebActorHandler.handlesWithHttp(uri, c) || WebActorHandler.handlesWithWebSocket(uri, c))
return new Pair<ActorRef<? extends WebMessage>, Class<? extends ActorImpl<? extends WebMessage>>>(
Actor.newActor (
new ActorSpec(c, actorParams != null ? actorParams.get(c) : EMPTY_OBJECT_ARRAY)
).spawn(),
(Class<? extends ActorImpl<? extends WebMessage>>) c
);
}
return null;
}
private synchronized void registerActorClasses() {
if (actorClasses.isEmpty()) {
try {
final ClassLoader classLoader = userClassLoader != null ? userClassLoader : this.getClass().getClassLoader();
ClassLoaderUtil.accept((URLClassLoader) classLoader, new ClassLoaderUtil.Visitor() {
@Override
public final void visit(String resource, URL url, ClassLoader cl) {
if (packagePrefixes != null) {
boolean found = false;
for (final String packagePrefix : packagePrefixes) {
if (packagePrefix != null && resource.startsWith(packagePrefix.replace('.', '/'))) {
found = true;
break;
}
}
if (!found)
return;
}
if (!ClassLoaderUtil.isClassFile(resource))
return;
final String className = ClassLoaderUtil.resourceToClass(resource);
try (final InputStream is = cl.getResourceAsStream(resource)) {
if (AnnotationUtil.hasClassAnnotation(WebActor.class, is))
registerWebActor(cl.loadClass(className));
} catch (final IOException | ClassNotFoundException e) {
log.error("Exception while scanning class " + className + " for WebActor annotation", e);
throw new RuntimeException(e);
}
}
private void registerWebActor(Class<?> c) {
actorClasses.add(c);
}
});
} catch (final IOException e) {
log.error("IOException while scanning classes for WebActor annotation", e);
}
}
}
}
}
================================================
FILE: comsat-actors-netty/src/main/java/co/paralleluniverse/comsat/webactors/netty/NettyHttpRequest.java
================================================
/*
* COMSAT
* Copyright (c) 2015-2016, Parallel Universe Software Co. All rights reserved.
*
* This program and the accompanying materials are dual-licensed under
* either the terms of the Eclipse Public License v1.0 as published by
* the Eclipse Foundation
*
* or (per the licensee's choosing)
*
* under the terms of the GNU Lesser General Public License version 3.0
* as published by the Free Software Foundation.
*/
package co.paralleluniverse.comsat.webactors.netty;
import co.paralleluniverse.actors.ActorRef;
import co.paralleluniverse.comsat.webactors.Cookie;
import co.paralleluniverse.comsat.webactors.HttpRequest;
import co.paralleluniverse.comsat.webactors.HttpResponse;
import co.paralleluniverse.comsat.webactors.WebMessage;
import com.google.common.collect.*;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.http.FullHttpRequest;
import io.netty.handler.codec.http.HttpHeaders;
import io.netty.handler.codec.http.QueryStringDecoder;
import io.netty.handler.codec.http.cookie.ServerCookieDecoder;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.net.URI;
import java.net.URISyntaxException;
import java.nio.ByteBuffer;
import java.nio.charset.CharacterCodingException;
import java.nio.charset.Charset;
import java.nio.charset.CodingErrorAction;
import java.nio.charset.UnsupportedCharsetException;
import java.util.*;
import static io.netty.handler.codec.http.HttpHeaders.Names.*;
/**
* @author circlespainter
*/
public final class NettyHttpRequest extends HttpRequest {
public static final String CHARSET_MARKER_STRING = "charset=";
final ActorRef<? super HttpResponse> actorRef;
final FullHttpRequest req;
final ChannelHandlerContext ctx;
final String sessionId;
private static final Set<io.netty.handler.codec.http.cookie.Cookie> EMPTY_SET = new HashSet<>();
private final ByteBuf reqContent;
private InetSocketAddress sourceAddress;
private ImmutableMultimap<String, String> params;
private URI uri;
private Collection<Cookie> cookies;
private ListMultimap<String, String> heads;
private ByteBuffer byteBufferBody;
private String stringBody;
private Charset encoding;
private String contentType;
public NettyHttpRequest(ActorRef<? super HttpResponse> actorRef, ChannelHandlerContext ctx, FullHttpRequest req, String sessionId) {
this.actorRef = actorRef;
this.ctx = ctx;
this.req = req;
this.sessionId = sessionId;
reqContent = Unpooled.copiedBuffer(req.content());
}
@Override
public final String getSourceHost() {
fillSourceAddress();
return sourceAddress != null ? sourceAddress.getHostString() : null;
}
@Override
public final int getSourcePort() {
fillSourceAddress();
return sourceAddress != null ? sourceAddress.getPort() : -1;
}
private void fillSourceAddress() {
final SocketAddress remoteAddress = ctx.channel().remoteAddress();
if (sourceAddress == null && remoteAddress instanceof InetSocketAddress) {
sourceAddress = (InetSocketAddress) remoteAddress;
}
}
@Override
public final Multimap<String, String> getParameters() {
QueryStringDecoder queryStringDecoder;
if (params == null) {
queryStringDecoder = new QueryStringDecoder(req.getUri());
final ImmutableMultimap.Builder<String, String> builder = ImmutableMultimap.builder();
final Map<String, List<String>> parameters = queryStringDecoder.parameters();
for (final String k : parameters.keySet())
builder.putAll(k, parameters.get(k));
params = builder.build();
}
return params;
}
@Override
public final Map<String, Object> getAttributes() {
return ImmutableMap.of(); // No attributes in Netty; Guava's impl. will return a pre-built instance
}
@Override
public final String getScheme() {
initUri();
return uri.getScheme();
}
private void initUri() {
if (uri == null) {
try {
uri = new URI(req.getUri());
} catch (final URISyntaxException e) {
throw new RuntimeException(e);
}
}
}
@Override
public final String getMethod() {
return req.getMethod().name();
}
@Override
public final String getPathInfo() {
initUri();
return uri.getPath();
}
@Override
public final String getContextPath() {
return "/"; // Context path makes sense only for servlets
}
@Override
public final String getQueryString() {
initUri();
return uri.getQuery();
}
@Override
public final String getRequestURI() {
return req.getUri();
}
@Override
public final String getServerName() {
initUri();
return uri.getHost();
}
@Override
public final int getServerPort() {
initUri();
return uri.getPort();
}
@SuppressWarnings("unchecked")
@Override
public final ActorRef<WebMessage> getFrom() {
return (ActorRef<WebMessage>) actorRef;
}
@Override
public final ListMultimap<String, String> getHeaders() {
if (heads == null) {
heads = extractHeaders(req.headers());
}
return heads;
}
@Override
public final Collection<Cookie> getCookies() {
if (cookies == null) {
final ImmutableList.Builder<Cookie> builder = ImmutableList.builder();
for (io.netty.handler.codec.http.cookie.Cookie c : getNettyCookies(req)) {
builder.add(
Cookie.cookie(c.name(), c.value())
.setDomain(c.domain())
.setPath(c.path())
.setHttpOnly(c.isHttpOnly())
.setMaxAge((int) c.maxAge())
.setSecure(c.isSecure())
.build()
);
}
cookies = builder.build();
}
return cookies;
}
static Set<io.netty.handler.codec.http.cookie.Cookie> getNettyCookies(FullHttpRequest req) {
final HttpHeaders heads = req.headers();
final String head = heads != null ? heads.get(HttpHeaders.Names.COOKIE) : null;
if (head != null)
return ServerCookieDecoder.LAX.decode(head);
else
return EMPTY_SET;
}
@Override
public final int getContentLength() {
final String stringBody = getStringBody();
if (stringBody != null)
return stringBody.length();
final ByteBuffer bufferBody = getByteBufferBody();
if (bufferBody != null)
return bufferBody.remaining();
return 0;
}
@Override
public final Charset getCharacterEncoding() {
if (encoding == null)
encoding = extractCharacterEncoding(getHeaders());
return encoding;
}
@Override
public final String getContentType() {
if (contentType == null) {
getHeaders();
if (heads != null) {
final List<String> cts = heads.get(CONTENT_TYPE);
if (cts != null && cts.size() > 0)
contentType = cts.get(0);
}
}
return null;
}
@Override
public final String getStringBody() {
if (stringBody == null) {
if (byteBufferBody != null)
return null;
decodeStringBody();
}
return stringBody;
}
@Override
public final ByteBuffer getByteBufferBody() {
if (byteBufferBody == null) {
if (stringBody != null)
return null;
if (reqContent != null)
byteBufferBody = reqContent.nioBuffer();
}
return byteBufferBody;
}
public final String getSessionId() {
return sessionId;
}
public ChannelHandlerContext getContext() {
return ctx;
}
public FullHttpRequest getRequest() {
return req;
}
private String decodeStringBody() {
if (reqContent != null) {
try {
stringBody =
getCharacterEncodingOrDefault()
.newDecoder()
.onMalformedInput(CodingErrorAction.REPORT)
.onUnmappableCharacter(CodingErrorAction.REPORT)
.decode(reqContent.nioBuffer())
.toString();
} catch (CharacterCodingException ignored) {
}
}
return stringBody;
}
Charset getCharacterEncodingOrDefault() {
return getCharacterEncodingOrDefault(getCharacterEncoding());
}
static Charset extractCharacterEncodingOrDefault(HttpHeaders headers) {
return getCharacterEncodingOrDefault(extractCharacterEncoding(extractHeaders(headers)));
}
static Charset extractCharacterEncoding(ListMultimap<String, String> heads) {
if (heads != null) {
final List<String> cts = heads.get(CONTENT_TYPE);
if (cts != null && cts.size() > 0) {
final String ct = cts.get(0).trim().toLowerCase();
if (ct.contains(CHARSET_MARKER_STRING)) {
try {
return Charset.forName(ct.substring(ct.indexOf(CHARSET_MARKER_STRING) + CHARSET_MARKER_STRING.length()).trim());
} catch (UnsupportedCharsetException ignored) {
}
}
}
}
return null;
}
static ImmutableListMultimap<String, String> extractHeaders(HttpHeaders headers) {
if (headers != null) {
final ImmutableListMultimap.Builder<String, String> builder = ImmutableListMultimap.builder();
for (final String n : headers.names())
// Normalize header names by their conversion to lower case
builder.putAll(n.toLowerCase(Locale.ENGLISH), headers.getAll(n));
return builder.build();
}
return null;
}
private static Charset getCharacterEncodingOrDefault(Charset characterEncoding) {
if (characterEncoding == null)
return Charset.defaultCharset();
return characterEncoding;
}
}
================================================
FILE: comsat-actors-netty/src/main/java/co/paralleluniverse/comsat/webactors/netty/WebActorHandler.java
================================================
/*
/*
* COMSAT
* Copyright (c) 2015-2016, Parallel Universe Software Co. All rights reserved.
*
* This program and the accompanying materials are dual-licensed under
* either the terms of the Eclipse Public License v1.0 as published by
* the Eclipse Foundation
*
* or (per the licensee's choosing)
*
* under the terms of the GNU Lesser General Public License version 3.0
* as published by the Free Software Foundation.
*/
package co.paralleluniverse.comsat.webactors.netty;
import co.paralleluniverse.actors.*;
import co.paralleluniverse.common.util.Pair;
import co.paralleluniverse.common.util.SystemProperties;
import co.paralleluniverse.comsat.webactors.*;
import co.paralleluniverse.comsat.webactors.Cookie;
import co.paralleluniverse.comsat.webactors.HttpRequest;
import co.paralleluniverse.comsat.webactors.HttpResponse;
import co.paralleluniverse.fibers.SuspendExecution;
import co.paralleluniverse.fibers.Suspendable;
import co.paralleluniverse.strands.Timeout;
import co.paralleluniverse.strands.channels.SendPort;
import co.paralleluniverse.strands.concurrent.CountDownLatch;
import co.paralleluniverse.strands.concurrent.ReentrantLock;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.channel.*;
import io.netty.handler.codec.http.*;
import static io.netty.handler.codec.http.HttpResponseStatus.*;
import static io.netty.handler.codec.http.HttpHeaders.Names.*;
import io.netty.handler.codec.http.cookie.ServerCookieEncoder;
import io.netty.handler.codec.http.websocketx.*;
import io.netty.util.concurrent.GenericFutureListener;
import io.netty.util.internal.logging.InternalLogger;
import io.netty.util.internal.logging.InternalLoggerFactory;
import java.nio.ByteBuffer;
import java.nio.charset.Charset;
import java.util.*;
import java.util.concurrent.*;
import java.util.concurrent.atomic.AtomicReference;
/**
* @author circlespainter
*/
public class WebActorHandler extends SimpleChannelInboundHandler<Object> {
protected static final ScheduledExecutorService ts = Executors.newScheduledThreadPool(Runtime.getRuntime().availableProcessors());
// @FunctionalInterface
public interface WebActorContextProvider {
Context get(FullHttpRequest req);
}
public interface Context {
String getId();
ReentrantLock getLock();
boolean isValid() throws SuspendExecution, InterruptedException;
void invalidate() throws SuspendExecution, InterruptedException;
boolean renew();
void restart(FullHttpRequest r);
ActorRef<? extends WebMessage> getWebActor();
boolean handlesWithHttp(String uri);
boolean handlesWithWebSocket(String uri);
enum WatchPolicy { DONT_WATCH, DIE, DIE_IF_EXCEPTION_ELSE_RESTART, RESTART }
WatchPolicy watch();
Map<String, Object> getAttachments();
}
public static abstract class DefaultContextImpl implements Context {
private final static String durationProp = System.getProperty(DefaultContextImpl.class.getName() + ".durationMillis");
private final static long DURATION = durationProp != null ? Long.parseLong(durationProp) : 60_000L;
private final ReentrantLock lock = new ReentrantLock();
@SuppressWarnings("unused")
private final long created;
private final Map<String, Object> attachments = new HashMap<>();
protected long renewed;
private Long validityMS;
private boolean valid = true;
public DefaultContextImpl() {
renewed = created = new Date().getTime();
}
@Override
public void invalidate() throws SuspendExecution, InterruptedException {
final HttpActorAdapter actor = (HttpActorAdapter) attachments.get(ACTOR_KEY);
if (actor != null)
actor.handleDie(null);
attachments.clear();
valid = false;
}
@Override
public final boolean isValid() throws SuspendExecution, InterruptedException {
final boolean ret = valid && (new Date().getTime() - renewed) <= getValidityMS();
if (!ret)
invalidate();
return ret;
}
@Override
public final boolean renew() {
if (!valid)
return false;
renewed = new Date().getTime();
return true;
}
@Override
public final Map<String, Object> getAttachments() {
return attachments;
}
@Override
public final ReentrantLock getLock() {
return lock;
}
public void setValidityMS(long validityMS) {
this.validityMS = validityMS;
}
public long getValidityMS() {
return validityMS != null ? validityMS : DURATION;
}
}
public WebActorHandler(WebActorContextProvider contextProvider) {
this(contextProvider, null);
}
public WebActorHandler(WebActorContextProvider contextProvider, String httpResponseEncoderName) {
this.contextProvider = contextProvider;
this.httpResponseEncoderName = httpResponseEncoderName;
}
@Override
public final void channelReadComplete(ChannelHandlerContext ctx) {
ctx.flush();
}
@Override
public final void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
if (ctx.channel().isOpen())
ctx.close();
log.error("Exception caught", cause);
}
@Override
protected final void channelRead0(ChannelHandlerContext ctx, Object msg) throws Exception {
if (msg instanceof FullHttpRequest) {
handleHttpRequest(ctx, (FullHttpRequest) msg);
} else if (msg instanceof WebSocketFrame) {
handleWebSocketFrame(ctx, (WebSocketFrame) msg);
} else {
throw new AssertionError("Unexpected message " + msg);
}
}
protected static boolean sessionsEnabled() {
return "always".equals(trackSession) || "sse".equals(trackSession);
}
protected final static String SESSION_COOKIE_KEY = "JSESSIONID";
protected final static String TRACK_SESSION_PROP = HttpChannelAdapter.class.getName() + ".trackSession";
protected final static String trackSession = System.getProperty(TRACK_SESSION_PROP, "sse");
protected final static String OMIT_DATE_HEADER_PROP = HttpChannelAdapter.class.getName() + ".omitDateHeader";
protected final static Boolean omitDateHeader = SystemProperties.isEmptyOrTrue(OMIT_DATE_HEADER_PROP);
protected final static ConcurrentHashMap<String, Context> sessions = new ConcurrentHashMap<>();
protected final static ReentrantLock sessionsLock = new ReentrantLock();
protected WebActorContextProvider contextProvider;
protected String httpResponseEncoderName;
private static final String ACTOR_KEY = "co.paralleluniverse.comsat.webactors.sessionActor";
private static final WeakHashMap<Class<?>, List<Pair<String, String>>> classToUrlPatterns = new WeakHashMap<>();
private static final InternalLogger log = InternalLoggerFactory.getInstance(AutoWebActorHandler.class);
private WebSocketServerHandshaker handshaker;
private WebSocketActorAdapter webSocketActor;
private void handleWebSocketFrame(ChannelHandlerContext ctx, WebSocketFrame frame) {
// Check for closing frame
if (frame instanceof CloseWebSocketFrame) {
handshaker.close(ctx.channel(), (CloseWebSocketFrame) frame.retain());
return;
}
if (frame instanceof PingWebSocketFrame) {
ctx.channel().writeAndFlush(new PongWebSocketFrame(frame.content().retain()));
return;
}
if (frame instanceof ContinuationWebSocketFrame)
return;
if (frame instanceof TextWebSocketFrame)
webSocketActor.onMessage(((TextWebSocketFrame) frame).text());
else
webSocketActor.onMessage(frame.content().nioBuffer());
}
private void handleHttpRequest(ChannelHandlerContext ctx, FullHttpRequest req) throws SuspendExecution, InterruptedException {
// Handle a bad request.
if (!req.getDecoderResult().isSuccess()) {
sendHttpError(ctx, req, new DefaultFullHttpResponse(req.getProtocolVersion(), BAD_REQUEST));
return;
}
final String uri = req.getUri();
final Context actorCtx = contextProvider.get(req);
assert actorCtx != null;
final String sessionId = actorCtx.getId();
assert sessionId != null;
final ReentrantLock lock = actorCtx.getLock();
assert lock != null;
lock.lock();
try {
final ActorRef<? extends WebMessage> userActorRef = actorCtx.getWebActor();
ActorImpl internalActor = (ActorImpl) actorCtx.getAttachments().get(ACTOR_KEY);
if (userActorRef != null) {
if (actorCtx.handlesWithWebSocket(uri)) {
if (internalActor == null || !(internalActor instanceof WebSocketActorAdapter)) {
//noinspection unchecked
webSocketActor = new WebSocketActorAdapter(ctx, (ActorRef<? super WebMessage>) userActorRef);
addActorToContextAndUnlock(actorCtx, webSocketActor, lock);
}
// Handshake
final WebSocketServerHandshakerFactory wsFactory = new WebSocketServerHandshakerFactory(uri, null, true);
handshaker = wsFactory.newHandshaker(req);
if (handshaker == null) {
WebSocketServerHandshakerFactory.sendUnsupportedVersionResponse(ctx.channel());
} else {
@SuppressWarnings("unchecked") final ActorRef<WebMessage> userActorRef0 = (ActorRef<WebMessage>) webSocketActor.userActor;
handshaker.handshake(ctx.channel(), req).addListener(new GenericFutureListener<ChannelFuture>() {
@Override
@Suspendable
public void operationComplete(ChannelFuture future) throws Exception {
userActorRef0.send(new WebSocketOpened(WebActorHandler.this.webSocketActor.ref()));
}
});
}
return;
} else if (actorCtx.handlesWithHttp(uri)) {
if (internalActor == null || !(internalActor instanceof HttpActorAdapter)) {
//noinspection unchecked
internalActor = new HttpActorAdapter((ActorRef<HttpRequest>) userActorRef, actorCtx, httpResponseEncoderName);
addActorToContextAndUnlock(actorCtx, internalActor, lock);
}
//noinspection unchecked
((HttpActorAdapter) internalActor).handleRequest(new NettyHttpRequest(internalActor.ref(), ctx, req, sessionId));
return;
}
}
} finally {
if (lock.isHeldByCurrentStrand() && lock.isLocked())
lock.unlock();
}
sendHttpError(ctx, req, new DefaultFullHttpResponse(req.getProtocolVersion(), NOT_FOUND));
}
static void addActorToContextAndUnlock(Context actorContext, ActorImpl actor, ReentrantLock lock) {
try {
actorContext.getAttachments().put(ACTOR_KEY, actor);
} finally {
if (lock.isLocked() && lock.isHeldByCurrentStrand())
lock.unlock();
}
}
private static final class WebSocketActorAdapter extends FakeActor<WebDataMessage> {
ActorRef<? super WebMessage> userActor;
private ChannelHandlerContext ctx;
public WebSocketActorAdapter(ChannelHandlerContext ctx, ActorRef<? super WebMessage> userActor) {
super(userActor.getName(), new WebSocketChannelAdapter(ctx));
((WebSocketChannelAdapter) (SendPort) getMailbox()).actor = this;
this.ctx = ctx;
this.userActor = userActor;
watch(userActor);
}
@Override
public final void interrupt() {
die(new InterruptedException());
}
@Override
public final String toString() {
return "WebSocketActorAdapter{" + "userActor=" + userActor + '}';
}
private void onMessage(final ByteBuffer message) {
try {
userActor.send(new WebDataMessage(ref(), message));
} catch (SuspendExecution ex) {
throw new AssertionError(ex);
}
}
private void onMessage(final String message) {
try {
userActor.send(new WebDataMessage(ref(), message));
} catch (SuspendExecution ex) {
throw new AssertionError(ex);
}
}
@Override
protected final WebDataMessage handleLifecycleMessage(LifecycleMessage m) {
if (m instanceof ExitMessage) {
ExitMessage em = (ExitMessage) m;
if (em.getActor() != null && em.getActor().equals(userActor))
die(em.getCause());
}
return null;
}
@Override
protected final void throwIn(RuntimeException e) {
die(e);
}
@Override
protected final void die(Throwable cause) {
super.die(cause);
if (ctx.channel().isOpen())
ctx.close();
// Ensure to release server references
userActor = null;
ctx = null;
}
}
private static final class WebSocketChannelAdapter implements SendPort<WebDataMessage> {
private final ChannelHandlerContext ctx;
WebSocketActorAdapter actor;
public WebSocketChannelAdapter(ChannelHandlerContext ctx) {
this.ctx = ctx;
}
@Override
public final void send(WebDataMessage message) throws SuspendExecution, InterruptedException {
trySend(message);
}
@Override
public final boolean send(WebDataMessage message, long timeout, TimeUnit unit) throws SuspendExecution, InterruptedException {
return trySend(message);
}
@Override
public final boolean send(WebDataMessage message, Timeout timeout) throws SuspendExecution, InterruptedException {
return send(message, timeout.nanosLeft(), TimeUnit.NANOSECONDS);
}
@Override
public final boolean trySend(WebDataMessage message) {
if (!message.isBinary())
ctx.writeAndFlush(new TextWebSocketFrame(message.getStringBody()));
else
ctx.writeAndFlush(new BinaryWebSocketFrame(Unpooled.wrappedBuffer(message.getByteBufferBody())));
return true;
}
@Override
public final void close() {
if (ctx.channel().isOpen())
ctx.close();
actor.die(null);
}
@Override
public final void close(Throwable t) {
actor.die(t);
close();
}
}
private static final class HttpActorAdapter extends FakeActor<HttpResponse> {
private final static String replyTimeoutProp = System.getProperty(HttpActorAdapter.class.getName() + ".replyTimeout");
private static final long REPLY_TIMEOUT = replyTimeoutProp != null ? Long.parseLong(replyTimeoutProp) : 120_000L;
private final AtomicReference<CountDownLatch> gate = new AtomicReference<>();
private final String httpResponseEncoderName;
private volatile ActorRef<? super HttpRequest> userActor;
private volatile Context context;
private volatile ChannelHandlerContext ctx;
private volatile FullHttpRequest req;
private volatile boolean needsRestart;
private volatile Object watchToken;
private volatile boolean dead;
private volatile ScheduledFuture<?> cancelTask;
HttpActorAdapter(ActorRef<? super HttpRequest> userActor, Context actorContext, String httpResponseEncoderName) {
super("HttpActorAdapter", new HttpChannelAdapter());
((HttpChannelAdapter) (SendPort) getMailbox()).actor = this;
if (actorContext.watch() != Context.WatchPolicy.DONT_WATCH) {
if (userActor != null)
watchToken = watch(userActor);
}
this.userActor = userActor;
this.context = actorContext;
this.httpResponseEncoderName = httpResponseEncoderName;
}
@Override
public final String toString() {
return "HttpActorAdapter{" + userActor + "}";
}
@Override
@Suspendable
protected final HttpResponse handleLifecycleMessage(LifecycleMessage m) {
handleLifecycle(m);
return null;
}
@Override
@Suspendable
protected final void die(Throwable cause) {
handleDie(cause);
}
@Override
@Suspendable
protected final void throwIn(RuntimeException e) {
die(e);
}
@Override
@Suspendable
protected final void interrupt() {
die(new InterruptedException());
}
final boolean handleLifecycle(LifecycleMessage l) {
if (l instanceof ExitMessage) {
final ExitMessage em = (ExitMessage) l;
if (em.getActor() != null && em.getActor().equals(userActor)) {
possiblyReplyDeadAndUnblock(em.getCause());
final Context.WatchPolicy wp = context.watch();
//noinspection ThrowableResultOfMethodCallIgnored
if (wp == Context.WatchPolicy.RESTART ||
wp == Context.WatchPolicy.DIE_IF_EXCEPTION_ELSE_RESTART && em.getCause() == null) {
needsRestart = true;
} else {
die(em.getCause());
return true;
}
}
}
return false;
}
final void handleRequest(NettyHttpRequest s) throws SuspendExecution, InterruptedException {
blockSessionRequests();
ctx = s.ctx;
req = s.req;
if (needsRestart) {
context.restart(req);
context.getLock().lock();
addActorToContextAndUnlock(context, HttpActorAdapter.this, context.getLock());
needsRestart = false;
}
userActor.send(s);
}
@Suspendable
final void handleReply(HttpResponse message) throws SuspendExecution, InterruptedException {
try {
final NettyHttpRequest nettyRequest = (NettyHttpRequest) message.getRequest();
final FullHttpRequest req = nettyRequest.req;
final ChannelHandlerContext ctx = nettyRequest.ctx;
final String sessionId = nettyRequest.getSessionId();
final HttpResponseStatus status = HttpResponseStatus.valueOf(message.getStatus());
if (message.getStatus() >= 400 && message.getStatus() < 600) {
sendHttpError(ctx, req, new DefaultFullHttpResponse(req.getProtocolVersion(), status));
return;
}
if (message.getRedirectPath() != null) {
sendHttpRedirect(ctx, req, message.getRedirectPath());
return;
}
final FullHttpResponse res;
if (message.getStringBody() != null)
res = new DefaultFullHttpResponse(req.getProtocolVersion(), status, Unpooled.wrappedBuffer(message.getStringBody().getBytes()));
else if (message.getByteBufferBody() != null)
res = new DefaultFullHttpResponse(req.getProtocolVersion(), status, Unpooled.wrappedBuffer(message.getByteBufferBody()));
else
res = new DefaultFullHttpResponse(req.getProtocolVersion(), status);
if (message.getCookies() != null) {
final ServerCookieEncoder enc = ServerCookieEncoder.STRICT;
for (final Cookie c : message.getCookies())
HttpHeaders.setHeader(res, COOKIE, enc.encode(getNettyCookie(c)));
}
if (message.getHeaders() != null) {
for (final Map.Entry<String, String> h : message.getHeaders().entries())
HttpHeaders.setHeader(res, h.getKey(), h.getValue());
}
if (message.getContentType() != null) {
String ct = message.getContentType();
if (message.getCharacterEncoding() != null)
ct = ct + "; charset=" + message.getCharacterEncoding().name();
HttpHeaders.setHeader(res, CONTENT_TYPE, ct);
}
final boolean sseStarted = message.shouldStartActor();
if (trackSession(sseStarted)) {
res.headers().add(SET_COOKIE, ServerCookieEncoder.STRICT.encode(SESSION_COOKIE_KEY, sessionId));
startSession(sessionId, context);
}
if (!sseStarted) {
final String stringBody = message.getStringBody();
long contentLength = 0L;
if (stringBody != null)
contentLength = stringBody.getBytes().length;
else {
final ByteBuffer byteBufferBody = message.getByteBufferBody();
if (byteBufferBody != null)
contentLength = byteBufferBody.remaining();
}
res.headers().add(CONTENT_LENGTH, contentLength);
}
final HttpStreamActorAdapter httpStreamActorAdapter;
if (sseStarted)
// This will copy the request content, which must still be referenceable, doing before the request handler
// unallocates it (unfortunately it is explicitly reference-counted in Netty)
httpStreamActorAdapter = new HttpStreamActorAdapter(ctx, req);
else
httpStreamActorAdapter = null;
sendHttpResponse(ctx, req, res);
if (sseStarted) {
if (httpResponseEncoderName != null) {
ctx.pipeline().remove(httpResponseEncoderName);
} else {
final ChannelPipeline pl = ctx.pipeline();
final List<String> handlerKeysToBeRemoved = new ArrayList<>();
for (final Map.Entry<String, ChannelHandler> e : pl) {
if (e.getValue() instanceof HttpResponseEncoder)
handlerKeysToBeRemoved.add(e.getKey());
}
for (final String k : handlerKeysToBeRemoved)
pl.remove(k);
}
try {
message.getFrom().send(new HttpStreamOpened(httpStreamActorAdapter.ref(), message));
} catch (final SuspendExecution e) {
throw new AssertionError(e);
}
}
} finally {
unblockSessionRequests();
}
}
@Suspendable
final void handleDie(Throwable cause) {
possiblyReplyDeadAndUnblock(cause);
if (dead)
return;
dead = true;
HttpActorAdapter.super.die(cause);
try {
context.invalidate();
} catch (final Exception ignored) {
}
// Ensure to release references
if (userActor != null && watchToken != null)
unwatch(userActor, watchToken);
userActor = null;
watchToken = null;
context = null;
ctx = null;
req = null;
}
private void possiblyReplyDeadAndUnblock(Throwable cause) {
if (isRequestInProgress()) { // Req replied
try {
if (cause != null) {
sendHttpError(ctx, req, new DefaultFullHttpResponse(req.getProtocolVersion(), INTERNAL_SERVER_ERROR, Unpooled.wrappedBuffer(("Actor is dead because of " + cause.getMessage()).getBytes())));
} else {
sendHttpError(ctx, req, new DefaultFullHttpResponse(req.getProtocolVersion(), INTERNAL_SERVER_ERROR, Unpooled.wrappedBuffer(("Actor has terminated.").getBytes())));
}
} finally {
unblockSessionRequests();
}
}
}
@Suspendable
private void blockSessionRequests() throws InterruptedException {
while (!gate.compareAndSet(null, new CountDownLatch(1))) {
final CountDownLatch l = gate.get();
if (l != null)
l.await();
}
final ChannelHandlerContext ctx1 = ctx;
final FullHttpRequest req1 = req;
cancelTask = ts.schedule(new Runnable() {
@Override
public void run() {
try {
sendHttpError(ctx1, req1, new DefaultFullHttpResponse(req1.getProtocolVersion(), INTERNAL_SERVER_ERROR, Unpooled.wrappedBuffer(("Timeout while waiting for user actor to reply.").getBytes())));
} finally {
unblockSessionRequests();
}
}
}, REPLY_TIMEOUT, TimeUnit.MILLISECONDS);
}
@Suspendable
private void unblockSessionRequests() {
if (cancelTask != null)
cancelTask.cancel(true);
final CountDownLatch l = gate.getAndSet(null);
if (l != null)
l.countDown();
}
private boolean isRequestInProgress() {
return gate.get() != null;
}
}
private static final class HttpChannelAdapter implements SendPort<HttpResponse> {
HttpActorAdapter actor;
@Override
@Suspendable
public final void send(HttpResponse message) throws SuspendExecution, InterruptedException {
trySend(message);
}
@Override
@Suspendable
public final boolean send(HttpResponse message, long timeout, TimeUnit unit) throws SuspendExecution, InterruptedException {
send(message);
return true;
}
@Override
@Suspendable
public final boolean send(HttpResponse message, Timeout timeout) throws SuspendExecution, InterruptedException {
return send(message, timeout.nanosLeft(), TimeUnit.NANOSECONDS);
}
@Override
@Suspendable
public final boolean trySend(HttpResponse r) {
try {
actor.handleReply(r);
} catch (final SuspendExecution e) {
throw new AssertionError(e);
} catch (final InterruptedException e) {
throw new RuntimeException(e);
}
return true;
}
@Override
@Suspendable
public final void close() {
actor.die(null);
}
@Override
@Suspendable
public final void close(Throwable t) {
log.error("Exception while closing HTTP adapter", t);
actor.die(t);
}
}
protected static boolean trackSession(boolean sseStarted) {
return
trackSession != null && (
"always".equals(trackSession) ||
sseStarted && "sse".equals(trackSession)
);
}
protected static boolean handlesWithHttp(String uri, Class<?> actorClass) {
return match(uri, actorClass).equals("websocket");
}
protected static boolean handlesWithWebSocket(String uri, Class<?> actorClass) {
return match(uri, actorClass).equals("ws");
}
private static final class HttpStreamActorAdapter extends FakeActor<WebDataMessage> {
private volatile boolean dead;
public HttpStreamActorAdapter(final ChannelHandlerContext ctx, final FullHttpRequest req) {
super(req.toString(), new HttpStreamChannelAdapter(ctx, req));
((HttpStreamChannelAdapter) (SendPort) getMailbox()).actor = this;
}
@Override
protected WebDataMessage handleLifecycleMessage(LifecycleMessage m) {
if (m instanceof ShutdownMessage) {
die(null);
}
return null;
}
@Override
protected void throwIn(RuntimeException e) {
die(e);
}
@Override
public void interrupt() {
die(new InterruptedException());
}
@Override
protected void die(Throwable cause) {
if (dead)
return;
this.dead = true;
mailbox().close();
super.die(cause);
}
@Override
public String toString() {
return "HttpStreamActorAdapter{request + " + getName() + "}";
}
}
private static final class HttpStreamChannelAdapter implements SendPort<WebDataMessage> {
private final Charset encoding;
private final ChannelHandlerContext ctx;
HttpStreamActorAdapter actor;
public HttpStreamChannelAdapter(ChannelHandlerContext ctx, FullHttpRequest req) {
this.ctx = ctx;
this.encoding = NettyHttpRequest.extractCharacterEncodingOrDefault(req.headers());
}
@Override
public final void send(WebDataMessage message) throws SuspendExecution, InterruptedException {
trySend(message);
}
@Override
public final boolean send(WebDataMessage message, long timeout, TimeUnit unit) throws SuspendExecution, InterruptedException {
send(message);
return true;
}
@Override
public final boolean send(WebDataMessage message, Timeout timeout) throws SuspendExecution, InterruptedException {
return send(message, timeout.nanosLeft(), TimeUnit.NANOSECONDS);
}
@Override
public final boolean trySend(WebDataMessage res) {
final ByteBuf buf;
final String stringBody = res.getStringBody();
if (stringBody != null) {
byte[] bs = stringBody.getBytes(encoding);
buf = Unpooled.wrappedBuffer(bs);
} else {
buf = Unpooled.wrappedBuffer(res.getByteBufferBody());
}
ctx.writeAndFlush(buf);
return true;
}
@Override
public final void close() {
if (ctx.channel().isOpen())
ctx.close();
actor.die(null);
}
@Override
public final void close(Throwable t) {
actor.die(t);
close();
}
}
static void startSession(String sessionId, Context actorContext) throws SuspendExecution, InterruptedException {
sessionsLock.lock();
try {
cleanSessions();
sessions.put(sessionId, actorContext);
} finally {
sessionsLock.unlock();
}
}
private static void cleanSessions() throws SuspendExecution, InterruptedException {
// TODO less often
final Collection<String> toBeRemoved = new ArrayList<>(1024);
for (final Map.Entry<String, Context> e : sessions.entrySet()) {
if (!e.getValue().isValid())
toBeRemoved.add(e.getKey());
}
for (final String s : toBeRemoved)
sessions.remove(s);
}
static io.netty.handler.codec.http.cookie.Cookie getNettyCookie(Cookie c) {
io.netty.handler.codec.http.cookie.Cookie ret = new io.netty.handler.codec.http.cookie.DefaultCookie(c.getName(), c.getValue());
ret.setDomain(c.getDomain());
ret.setHttpOnly(c.isHttpOnly());
ret.setMaxAge(c.getMaxAge());
ret.setPath(c.getPath());
ret.setSecure(c.isSecure());
return ret;
}
static void sendHttpRedirect(ChannelHandlerContext ctx, FullHttpRequest req, String newUri) {
final FullHttpResponse res = new DefaultFullHttpResponse(req.getProtocolVersion(), FOUND);
HttpHeaders.setHeader(res, LOCATION, newUri);
writeHttpResponse(ctx, req, res, true);
}
static void sendHttpError(ChannelHandlerContext ctx, FullHttpRequest req, FullHttpResponse res) {
sendHttpResponse(ctx, req, res, true);
}
static void sendHttpResponse(ChannelHandlerContext ctx, FullHttpRequest req, FullHttpResponse res) {
sendHttpResponse(ctx, req, res, false);
}
private static void sendHttpResponse(ChannelHandlerContext ctx, FullHttpRequest req, FullHttpResponse res, boolean close) {
writeHttpResponse(ctx, req, res, close);
}
private static void writeHttpResponse(ChannelHandlerContext ctx, FullHttpRequest req, FullHttpResponse res, boolean close) {
if (!omitDateHeader && !res.headers().contains(DefaultHttpHeaders.Names.DATE))
DefaultHttpHeaders.addDateHeader(res, DefaultHttpHeaders.Names.DATE, new Date());
// Reply the response and close the connection if necessary.
if (!HttpHeaders.isKeepAlive(req) || close) {
res.headers().set(CONNECTION, HttpHeaders.Values.CLOSE);
ctx.writeAndFlush(res).addListener(ChannelFutureListener.CLOSE);
} else {
res.headers().set(CONNECTION, HttpHeaders.Values.KEEP_ALIVE);
write(ctx, res);
}
}
private static ChannelFuture write(ChannelHandlerContext ctx, Object res) {
return ctx.writeAndFlush(res);
// : ctx.write(res);
}
private static String match(String uri, Class<?> actorClass) {
if (uri != null && actorClass != null) {
for (final Pair<String, String> e : lookupOrInsert(actorClass)) {
if (servletMatch(e.getFirst(), uri))
return e.getSecond();
}
}
return "";
}
private static List<Pair<String, String>> lookupOrInsert(Class<?> actorClass) {
if (actorClass != null) {
final List<Pair<String, String>> lookup = classToUrlPatterns.get(actorClass);
if (lookup != null)
return lookup;
return insert(actorClass);
}
return null;
}
private static List<Pair<String, String>> insert(Class<?> actorClass) {
if (actorClass != null) {
final WebActor wa = actorClass.getAnnotation(WebActor.class);
final List<Pair<String, String>> ret = new ArrayList<>(4);
for (String httpP : wa.httpUrlPatterns())
addPattern(ret, httpP, "websocket");
for (String wsP : wa.webSocketUrlPatterns())
addPattern(ret, wsP, "ws");
classToUrlPatterns.put(actorClass, ret);
return ret;
}
return null;
}
private static void addPattern(List<Pair<String, String>> ret, String p, String type) {
if (p != null) {
@SuppressWarnings("MismatchedQueryAndUpdateOfCollection") final Pair<String, String> entry = new Pair<>(p, type);
if (p.endsWith("*") || p.startsWith("*.") || p.equals("/")) // Wildcard -> end
ret.add(entry);
else // Exact -> beginning
ret.add(0, entry);
}
}
private static boolean servletMatch(String pattern, String uri) {
// As per servlet spec
if (pattern != null && uri != null) {
if (pattern.startsWith("/") && pattern.endsWith("*"))
return uri.startsWith(pattern.substring(0, pattern.length() - 1));
if (pattern.startsWith("*."))
return uri.endsWith(pattern.substring(2));
if (pattern.isEmpty())
return uri.equals("/");
return pattern.equals("/") || pattern.equals(uri);
}
return false;
}
}
================================================
FILE: comsat-actors-netty/src/main/java/co/paralleluniverse/comsat/webactors/netty/package-info.java
================================================
/*
* Copyright (c) 2015-2016, Parallel Universe Software Co. All rights reserved.
*
* This program and the accompanying materials are dual-licensed under
* either the terms of the Eclipse Public License v1.0 as published by
* the Eclipse Foundation
*
* or (per the licensee's choosing)
*
* under the terms of the GNU Lesser General Public License version 3.0
* as published by the Free Software Foundation.
*/
/**
* A Web Actors backend implementation based on Netty
*/
package co.paralleluniverse.comsat.webactors.netty;
================================================
FILE: comsat-actors-netty/src/test/java/co/paralleluniverse/comsat/webactors/netty/HttpRequestWrapperTest.java
================================================
package co.paralleluniverse.comsat.webactors.netty;
import io.netty.buffer.EmptyByteBuf;
import io.netty.buffer.UnpooledByteBufAllocator;
import io.netty.handler.codec.http.DefaultFullHttpRequest;
import io.netty.handler.codec.http.HttpMethod;
import io.netty.handler.codec.http.HttpVersion;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
/**
* @author rodedb
*/
public class HttpRequestWrapperTest {
@Test
public void httpHeaderCaseInsensitivity() {
DefaultFullHttpRequest httpRequest =
new DefaultFullHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.GET, "uri", new EmptyByteBuf(UnpooledByteBufAllocator.DEFAULT));
String headerValue = "application/json";
httpRequest.headers().add("Content-Type", headerValue);
NettyHttpRequest requestWrapper = new NettyHttpRequest(null, null, httpRequest, "sessionId");
assertEquals(headerValue, requestWrapper.getHeader("content-type"));
}
}
================================================
FILE: comsat-actors-netty/src/test/java/co/paralleluniverse/comsat/webactors/netty/NettyWebActor.java
================================================
/*
* COMSAT
* Copyright (C) 2015, Parallel Universe Software Co. All rights reserved.
*
* This program and the accompanying materials are dual-licensed under
* either the terms of the Eclipse Public License v1.0 as published by
* the Eclipse Foundation
*
* or (per the licensee's choosing)
*
* under the terms of the GNU Lesser General Public License version 3.0
* as published by the Free Software Foundation.
*/
package co.paralleluniverse.comsat.webactors.netty;
import co.paralleluniverse.comsat.webactors.MyWebActor;
import co.paralleluniverse.comsat.webactors.WebActor;
/**
* @author circlespainter
*/
@WebActor(httpUrlPatterns = {"/*"}, webSocketUrlPatterns = {"/ws"})
public final class NettyWebActor extends MyWebActor {}
================================================
FILE: comsat-actors-netty/src/test/java/co/paralleluniverse/comsat/webactors/netty/WebActorTest.java
================================================
/*
* COMSAT
* Copyright (C) 2015-2016, Parallel Universe Software Co. All rights reserved.
*
* This program and the accompanying materials are dual-licensed under
* either the terms of the Eclipse Public License v1.0 as published by
* the Eclipse Foundation
*
* or (per the licensee's choosing)
*
* under the terms of the GNU Lesser General Public License version 3.0
* as published by the Free Software Foundation.
*/
package co.paralleluniverse.comsat.webactors.netty;
import co.paralleluniverse.actors.Actor;
import co.paralleluniverse.actors.ActorRef;
import co.paralleluniverse.comsat.webactors.AbstractWebActorTest;
import co.paralleluniverse.comsat.webactors.WebMessage;
import java.io.IOException;
import java.util.Arrays;
import java.util.Collection;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import co.paralleluniverse.embedded.containers.AbstractEmbeddedServer;
import io.netty.bootstrap.ServerBootstrap;
import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.ChannelPipeline;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.SocketChannel;
import io.netty.channel.socket.nio.NioServerSocketChannel;
import io.netty.handler.codec.http.*;
import io.netty.handler.logging.LogLevel;
import io.netty.handler.logging.LoggingHandler;
import org.junit.*;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
/**
* @author circlespainter
*/
@RunWith(Parameterized.class)
public class WebActorTest extends AbstractWebActorTest {
private static final int INET_PORT = 8080;
private static final String HTTP_RESPONSE_ENCODER_KEY = "httpResponseEncoder";
private static final Actor actor = new NettyWebActor();
@SuppressWarnings("unchecked")
private static final ActorRef<? extends WebMessage> actorRef = actor.spawn();
private static final WebActorHandler.DefaultContextImpl context = new WebActorHandler.DefaultContextImpl() {
@Override
public String getId() {
return "CONSTANT";
}
@SuppressWarnings("unchecked")
@Override
public ActorRef<? extends WebMessage> getWebActor() {
return actorRef;
}
@Override
public void restart(FullHttpRequest r) {
// Nothing to do
}
@Override
public final boolean handlesWithWebSocket(String uri) {
return uri.startsWith("/ws");
}
@Override
public WatchPolicy watch() {
return WatchPolicy.DIE;
}
@Override
public final boolean handlesWithHttp(String uri) {
return !handlesWithWebSocket(uri);
}
};
private static final Callable<WebActorHandler> basicWebActorHandlerCreator = new Callable<WebActorHandler>() {
@Override
public WebActorHandler call() throws Exception {
return new WebActorHandler(new WebActorHandler.WebActorContextProvider() {
@Override
public WebActorHandler.Context get(FullHttpRequest req) {
return context;
}
});
}
};
private static final Callable<WebActorHandler> autoWebActorHandlerCreator = new Callable<WebActorHandler>() {
@Override
public WebActorHandler call() throws Exception {
return new AutoWebActorHandler();
}
};
@Parameterized.Parameters(name = "{index}")
public static Collection<Object[]> data() {
return Arrays.asList(new Object[][]{
{basicWebActorHandlerCreator},
{autoWebActorHandlerCreator}
});
}
private ChannelFuture ch;
private NioEventLoopGroup group;
private Callable<WebActorHandler> webActorHandlerCreatorInEffect;
public WebActorTest(Callable<WebActorHandler> webActorHandlerCreator) {
webActorHandlerCreatorInEffect = webActorHandlerCreator;
}
@Before
public void setUp() throws InterruptedException, IOException {
System.out.println("Clearing sessions");
WebActorHandler.sessions.clear();
group = new NioEventLoopGroup();
final ServerBootstrap b = new ServerBootstrap();
b.group(group)
.channel(NioServerSocketChannel.class)
.handler(new LoggingHandler(LogLevel.INFO))
.childHandler(new ChannelInitializer<SocketChannel>() {
@Override
public void initChannel(SocketChannel ch) throws Exception {
ChannelPipeline pipeline = ch.pipeline();
pipeline.addLast(new LoggingHandler(LogLevel.INFO));
pipeline.addLast(new HttpRequestDecoder());
pipeline.addLast(new LoggingHandler(LogLevel.INFO));
pipeline.addLast(HTTP_RESPONSE_ENCODER_KEY, new HttpResponseEncoder());
pipeline.addLast(new LoggingHandler(LogLevel.INFO));
pipeline.addLast(new HttpObjectAggregator(65536));
pipeline.addLast(new LoggingHandler(LogLevel.INFO));
pipeline.addLast(webActorHandlerCreatorInEffect.call());
}
});
ch = b.bind(INET_PORT).sync();
AbstractEmbeddedServer.waitUrlAvailable("http://localhost:" + INET_PORT);
System.err.println("Server is up");
}
@Override
@Test
public final void testDie() throws IOException, InterruptedException, ExecutionException {
Assume.assumeTrue(webActorHandlerCreatorInEffect == autoWebActorHandlerCreator);
super.testDie();
}
@After
public void tearDown() throws Exception {
ch.channel().close();
group.shutdownGracefully().sync();
System.out.println("Server is down");
}
@Override
protected String getSessionIdCookieName() {
return WebActorHandler.SESSION_COOKIE_KEY;
}
}
================================================
FILE: comsat-actors-servlet/build.gradle
================================================
dependencies {
testCompile "org.springframework:spring-test:$springVer"
}
================================================
FILE: comsat-actors-servlet/src/main/java/co/paralleluniverse/comsat/webactors/servlet/EmbedHttpSessionWsConfigurator.java
================================================
/*
* COMSAT
* Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.
*
* This program and the accompanying materials are dual-licensed under
* either the terms of the Eclipse Public License v1.0 as published by
* the Eclipse Foundation
*
* or (per the licensee's choosing)
*
* under the terms of the GNU Lesser General Public License version 3.0
* as published by the Free Software Foundation.
*/
package co.paralleluniverse.comsat.webactors.servlet;
import javax.servlet.http.HttpSession;
import javax.websocket.HandshakeResponse;
import javax.websocket.server.HandshakeRequest;
import javax.websocket.server.ServerEndpointConfig;
import javax.websocket.server.ServerEndpointConfig.Configurator;
class EmbedHttpSessionWsConfigurator extends Configurator {
@Override
public void modifyHandshake(ServerEndpointConfig sec, HandshakeRequest request, HandshakeResponse response) {
// save the http session based on idea from
// http://stackoverflow.com/questions/17936440/accessing-httpsession-from-httpservletrequest-in-a-web-socket-socketendpoint
final Object httpSession = request.getHttpSession();
if (httpSession != null)
sec.getUserProperties().put(HttpSession.class.getName(), httpSession);
super.modifyHandshake(sec, request, response);
}
}
================================================
FILE: comsat-actors-servlet/src/main/java/co/paralleluniverse/comsat/webactors/servlet/ServletHttpRequest.java
================================================
/*
* COMSAT
* Copyright (c) 2013-2016, Parallel Universe Software Co. All rights reserved.
*
* This program and the accompanying materials are dual-licensed under
* either the terms of the Eclipse Public License v1.0 as published by
* the Eclipse Foundation
*
* or (per the licensee's choosing)
*
* under the terms of the GNU Lesser General Public License version 3.0
* as published by the Free Software Foundation.
*/
package co.paralleluniverse.comsat.webactors.servlet;
import co.paralleluniverse.actors.ActorRef;
import co.paralleluniverse.comsat.webactors.Cookie;
import static co.paralleluniverse.comsat.webactors.Cookie.*;
import co.paralleluniverse.comsat.webactors.HttpRequest;
import co.paralleluniverse.comsat.webactors.HttpResponse;
import co.paralleluniverse.comsat.webactors.WebMessage;
import com.google.common.collect.ImmutableCollection;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableListMultimap;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ListMultimap;
import com.google.common.collect.Multimap;
import com.google.common.io.ByteStreams;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.nio.ByteBuffer;
import java.nio.charset.Charset;
import java.nio.charset.UnsupportedCharsetException;
import java.util.Collection;
import java.util.Enumeration;
import java.util.Locale;
import java.util.Map;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Wraps a {@link HttpServletRequest} as a {@link HttpRequest}
*/
public final class ServletHttpRequest extends HttpRequest {
final HttpServletRequest request;
final HttpServletResponse response;
private ListMultimap<String, String> headers;
private Multimap<String, String> params;
private Map<String, Object> attrs;
private final ActorRef<? super HttpResponse> sender;
private String strBody;
private byte[] binBody;
private Collection<Cookie> cookies;
/**
* Constructs a {@code HttpRequestWrapper} message
*
* @param sender this message's sender
* @param request the {@link HttpServletRequest}
* @param response the {@link HttpServletResponse}
*/
public ServletHttpRequest(ActorRef<? super HttpResponse> sender, HttpServletRequest request, HttpServletResponse response) {
this.sender = sender;
this.request = request;
this.response = response;
}
public HttpServletRequest getServletRequest() {
return request;
}
public HttpServletResponse getServletResponse() {
return response;
}
@Override
public final String getSourceHost() {
return request.getRemoteHost();
}
@Override
public final int getSourcePort() {
return request.getRemotePort();
}
// @Override
// public String getRequestURL() {
// return request.getRequestURL().toString();
// }
@Override
public final String getStringBody() {
if (strBody == null) {
if (binBody != null)
return null;
final byte[] ba = readBody();
final String enc = request.getCharacterEncoding();
try {
this.strBody = enc!=null ? new String(ba, enc) : new String(ba);
} catch (final UnsupportedEncodingException e) {
throw new UnsupportedCharsetException(enc);
}
}
return strBody;
}
@Override
public final ByteBuffer getByteBufferBody() {
if (binBody == null) {
if (strBody != null)
return null;
this.binBody = readBody();
}
return ByteBuffer.wrap(binBody).asReadOnlyBuffer();
}
private byte[] readBody() {
try {
final ServletInputStream is = request.getInputStream();
final int length = request.getContentLength();
final byte[] ba;
if (length < 0)
ba = ByteStreams.toByteArray(is);
else {
ba = new byte[length];
ByteStreams.readFully(is, ba);
}
return ba;
} catch (final IOException ex) {
throw new RuntimeException(ex);
}
}
@Override
public final ListMultimap<String, String> getHeaders() {
if (headers == null) {
final ImmutableListMultimap.Builder<String, String> mm = ImmutableListMultimap.builder();// LinkedHashMultimap.create();
for (final Enumeration<String> hs = request.getHeaderNames(); hs.hasMoreElements();) {
final String h = hs.nextElement();
for (final Enumeration<String> hv = request.getHeaders(h); hv.hasMoreElements();)
// Normalize header names by their conversion to lower case
mm.put(h.toLowerCase(Locale.ENGLISH), hv.nextElement());
}
this.headers = mm.build();
}
return headers;
}
@Override
public final Multimap<String, String> getParameters() {
if (params == null) {
final ImmutableListMultimap.Builder<String, String> mm = ImmutableListMultimap.builder();
for (final Enumeration<String> ps = request.getParameterNames(); ps.hasMoreElements();) {
final String p = ps.nextElement();
final String[] pvs = request.getParameterValues(p);
if (pvs != null) {
for (final String pv : pvs)
mm.put(p, pv);
}
}
this.params = mm.build();
}
return params;
}
@Override
public final Map<String, Object> getAttributes() {
if (attrs == null) {
final ImmutableMap.Builder<String, Object> m = ImmutableMap.builder();
for (final Enumeration<String> as = request.getAttributeNames(); as.hasMoreElements();) {
final String a = as.nextElement();
final Object v = request.getAttribute(a);
m.put(a, v);
}
this.attrs = m.build();
}
return attrs;
}
@Override
public final Collection<Cookie> getCookies() {
if (cookies == null) {
final javax.servlet.http.Cookie[] cs = request.getCookies();
final ImmutableCollection.Builder<Cookie> collb = ImmutableList.builder();
if (cs != null) {
for (final javax.servlet.http.Cookie c : cs) {
collb.add(cookie(c.getName(), c.getValue())
.setComment(c.getComment())
.setDomain(c.getDomain())
.setMaxAge(c.getMaxAge())
.setHttpOnly(c.isHttpOnly())
.setPath(c.getPath())
.setSecure(c.getSecure())
.setVersion(c.getVersion())
.build());
}
}
this.cookies = collb.build();
}
return cookies;
}
@Override
public final long getDateHeader(String name) {
return request.getDateHeader(name);
}
@Override
public final String getMethod() {
return request.getMethod();
}
@Override
public final String getScheme() {
return request.getScheme();
}
@Override
public final String getQueryString() {
return request.getQueryString();
}
@Override
public final String getServerName() {
return request.getServerName();
}
@Override
public final int getServerPort() {
return request.getServerPort();
}
@Override
public final String getContextPath() {
return request.getContextPath();
}
@Override
public final String getRequestURI() {
return request.getRequestURI();
}
@Override
public final int getContentLength() {
return request.getContentLength();
}
@Override
public final String getContentType() {
return request.getContentType();
}
@Override
public final String getPathInfo() {
return request.getPathInfo();
}
@Override
public final Charset getCharacterEncoding() {
return request.getCharacterEncoding() != null ? Charset.forName(request.getCharacterEncoding()) : null;
}
@Override
public final ActorRef<WebMessage> getFrom() {
//noinspection unchecked
return (ActorRef<WebMessage>) sender;
}
}
================================================
FILE: comsat-actors-servlet/src/main/java/co/paralleluniverse/comsat/webactors/servlet/ServletWebActors.java
================================================
/*
* COMSAT
* Copyright (c) 2013-2016, Parallel Universe Software Co. All rights reserved.
*
* This program and the accompanying materials are dual-licensed under
* either the terms of the Eclipse Public License v1.0 as published by
* the Eclipse Foundation
*
* or (per the licensee's choosing)
*
* under the terms of the GNU Lesser General Public License version 3.0
* as published by the Free Software Foundation.
*/
package co.paralleluniverse.comsat.webactors.servlet;
import co.paralleluniverse.actors.ActorRef;
import co.paralleluniverse.comsat.webactors.HttpRequest;
import co.paralleluniverse.comsat.webactors.WebMessage;
import java.util.Collection;
import java.util.Collections;
import java.util.concurrent.Callable;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSession;
import javax.websocket.DeploymentException;
import javax.websocket.Endpoint;
import javax.websocket.EndpointConfig;
import javax.websocket.Session;
import javax.websocket.server.ServerContainer;
import javax.websocket.server.ServerEndpointConfig;
/**
* Static methods to attach web actors with HTTP and WebSocket sessions
*/
public final class ServletWebActors {
/**
* Attaches the given web actor to the given {@link HttpSession}.
*
* @param session the session
* @param actor the web actor
* @return {@code actor}
*/
public static <T> ActorRef<T> attachWebActor(final HttpSession session, final ActorRef<T> actor) {
//noinspection unchecked,ConstantConditions
return WebActorServlet.getOrAttachSessionActor(session, new Callable<WebActorServlet.HttpActorAdapter>() {
@Override
public WebActorServlet.HttpActorAdapter call() throws Exception {
return new WebActorServlet.HttpActorAdapter(new Callable<ActorRef>() {
@Override
public ActorRef call() throws Exception {
return actor;
}
}, session);
}
}).userWebActorRef;
}
/**
* Checks whether a web actor is attached to an {@link HttpSession}.
*/
public static boolean isWebActorAttached(HttpSession session) {
return WebActorServlet.isWebActorAttached(session);
}
/**
* Returns the web actor attached to the given {@link HttpSession}.
*
* @param session the session
* @return the web actor attached to the session, or {@code null} if none.
*/
public static ActorRef<? super HttpRequest> getWebActor(HttpSession session) {
return WebActorServlet.getWebActor(session);
}
/**
* Attaches the given web actor to the given WebSocket session
*
* @param session the WebSocket {@link Session}
* @param httpSession the WebSocket's associated HTTP session
* @param actor the web actor
* @return {@code actor}
*/
public static <T> ActorRef<T> attachWebActor(Session session, HttpSession httpSession, ActorRef<T> actor) {
WebActorEndpoint.attachWebActor(session, httpSession, (ActorRef<WebMessage>) actor);
return actor;
}
/**
* Attaches the given web actor to the given WebSocket session
*
* @param session the WebSocket {@link Session}
* @param config the WebSocket endpoint's configuration
* @param actor the web actor
* @return {@code actor}
*/
public static <T> ActorRef<T> attachWebActor(Session session, EndpointConfig config, ActorRef<T> actor) {
WebActorEndpoint.attachWebActor(session, config, (ActorRef<WebMessage>) actor);
return actor;
}
/**
* Attaches the given web actor to web socket sessions that will be opened at the given URI (or URI pattern).
* This method installs a new WebSocket {@link Endpoint}.
*
* @param sc the {@link ServletContext}
* @param webSocketURI the WebSocket's URI (or URI pattern)
* @param actor the web actor
* @return {@code actor}
*/
public static <T> ActorRef<T> attachWebActor(ServletContext sc, String webSocketURI, ActorRef<T> actor) {
return attachWebActor(sc, Collections.singleton(webSocketURI), actor);
}
/**
* Attaches the given web actor to web socket sessions that will be opened at the given URIs (or URI patterns).
* This method installs new WebSocket {@link Endpoint}s.
*
* @param sc the {@link ServletContext}
* @param webSocketURIs the WebSockets' URI (or URI pattern)
* @param actor the web actor
* @return {@code actor}
*/
public static <T> ActorRef<T> attachWebActor(ServletContext sc, Collection<String> webSocketURIs, ActorRef<T> actor) {
final ServerContainer scon = (ServerContainer) sc.getAttribute("javax.websocket.server.ServerContainer");
for (String webSocketURI : webSocketURIs) {
try {
scon.addEndpoint(ServerEndpointConfig.Builder.create(WebActorEndpoint.class, webSocketURI).configurator(new EmbedHttpSessionWsConfigurator()).build());
} catch (DeploymentException ex) {
sc.log("Unable to deploy endpoint", ex);
}
}
return actor;
}
private ServletWebActors() {
}
}
================================================
FILE: comsat-actors-servlet/src/main/java/co/paralleluniverse/comsat/webactors/servlet/WebActorEndpoint.java
================================================
/*
* COMSAT
* Copyright (c) 2013-2016, Parallel Universe Software Co. All rights reserved.
*
* This program and the accompanying materials are dual-licensed under
* either the terms of the Eclipse Public License v1.0 as published by
* the Eclipse Foundation
*
* or (per the licensee's choosing)
*
* under the terms of the GNU Lesser General Public License version 3.0
* as published by the Free Software Foundation.
*/
package co.paralleluniverse.comsat.webactors.servlet;
import co.paralleluniverse.actors.ActorRef;
import co.paralleluniverse.actors.ExitMessage;
import co.paralleluniverse.actors.FakeActor;
import co.paralleluniverse.actors.LifecycleMessage;
import co.paralleluniverse.comsat.webactors.WebDataMessage;
import co.paralleluniverse.comsat.webactors.WebMessage;
import co.paralleluniverse.comsat.webactors.WebSocketOpened;
import co.paralleluniverse.fibers.FiberUtil;
import co.paralleluniverse.fibers.SuspendExecution;
import co.paralleluniverse.strands.SuspendableRunnable;
import co.paralleluniverse.strands.Timeout;
import co.paralleluniverse.strands.channels.SendPort;
import ja
gitextract_0fms8ej0/
├── .gitignore
├── .travis.yml
├── CONTRIBUTING.md
├── LICENSE
├── NOTICE
├── README.md
├── build.gradle
├── comsat-actors-api/
│ └── src/
│ └── main/
│ └── java/
│ └── co/
│ └── paralleluniverse/
│ └── comsat/
│ └── webactors/
│ ├── Cookie.java
│ ├── HttpMessage.java
│ ├── HttpRequest.java
│ ├── HttpResponse.java
│ ├── HttpStreamOpened.java
│ ├── SSE.java
│ ├── WebActor.java
│ ├── WebDataMessage.java
│ ├── WebMessage.java
│ ├── WebSocketOpened.java
│ ├── WebStreamOpened.java
│ └── package-info.java
├── comsat-actors-netty/
│ └── src/
│ ├── main/
│ │ └── java/
│ │ └── co/
│ │ └── paralleluniverse/
│ │ └── comsat/
│ │ └── webactors/
│ │ └── netty/
│ │ ├── AutoWebActorHandler.java
│ │ ├── NettyHttpRequest.java
│ │ ├── WebActorHandler.java
│ │ └── package-info.java
│ └── test/
│ └── java/
│ └── co/
│ └── paralleluniverse/
│ └── comsat/
│ └── webactors/
│ └── netty/
│ ├── HttpRequestWrapperTest.java
│ ├── NettyWebActor.java
│ └── WebActorTest.java
├── comsat-actors-servlet/
│ ├── build.gradle
│ └── src/
│ ├── main/
│ │ └── java/
│ │ └── co/
│ │ └── paralleluniverse/
│ │ └── comsat/
│ │ └── webactors/
│ │ └── servlet/
│ │ ├── EmbedHttpSessionWsConfigurator.java
│ │ ├── ServletHttpRequest.java
│ │ ├── ServletWebActors.java
│ │ ├── WebActorEndpoint.java
│ │ ├── WebActorInitializer.java
│ │ ├── WebActorServlet.java
│ │ └── package-info.java
│ └── test/
│ └── java/
│ └── co/
│ └── paralleluniverse/
│ └── comsat/
│ └── webactors/
│ └── servlet/
│ ├── HttpRequestWrapperTest.java
│ ├── ServletWebActor.java
│ └── WebActorServletTest.java
├── comsat-actors-undertow/
│ └── src/
│ ├── main/
│ │ └── java/
│ │ └── co/
│ │ └── paralleluniverse/
│ │ └── comsat/
│ │ └── webactors/
│ │ └── undertow/
│ │ ├── AutoWebActorHandler.java
│ │ ├── ByteArrayReadChannelListener.java
│ │ ├── StringWriteChannelListener.java
│ │ ├── UndertowHttpRequest.java
│ │ ├── WebActorHandler.java
│ │ └── package-info.java
│ └── test/
│ └── java/
│ └── co/
│ └── paralleluniverse/
│ └── comsat/
│ └── webactors/
│ └── undertow/
│ ├── HttpRequestWrapperTest.java
│ ├── UndertowWebActor.java
│ └── WebActorTest.java
├── comsat-dropwizard/
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── co/
│ │ │ └── paralleluniverse/
│ │ │ └── fibers/
│ │ │ └── dropwizard/
│ │ │ ├── FiberApplication.java
│ │ │ ├── FiberDBIFactory.java
│ │ │ ├── FiberDataSourceFactory.java
│ │ │ ├── FiberHttpClientBuilder.java
│ │ │ ├── FiberManagedDataSource.java
│ │ │ ├── FiberServletContainer.java
│ │ │ ├── InstrumentedNClientConnManager.java
│ │ │ └── InstrumentedNHttpClientBuilder.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── suspendables
│ └── test/
│ ├── java/
│ │ └── co/
│ │ └── paralleluniverse/
│ │ └── fibers/
│ │ └── dropwizard/
│ │ ├── FiberDropwizardTest.java
│ │ └── MyDropwizardApp.java
│ └── resources/
│ └── server.yml
├── comsat-httpclient/
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── co/
│ │ │ └── paralleluniverse/
│ │ │ └── fibers/
│ │ │ ├── httpasyncclient/
│ │ │ │ └── FiberCloseableHttpAsyncClient.java
│ │ │ └── httpclient/
│ │ │ ├── AsyncHttpReq.java
│ │ │ ├── DelegatingHttpResponse.java
│ │ │ ├── FiberHttpClient.java
│ │ │ └── FiberHttpClientBuilder.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── suspendables
│ └── test/
│ └── java/
│ └── co/
│ └── paralleluniverse/
│ └── fibers/
│ ├── httpasyncclient/
│ │ └── FiberHttpAsyncClientTest.java
│ └── httpclient/
│ └── FiberHttpClientBuilderTest.java
├── comsat-httpkit/
│ ├── project.clj
│ ├── src/
│ │ └── co/
│ │ └── paralleluniverse/
│ │ └── fiber/
│ │ └── httpkit/
│ │ └── client.clj
│ ├── test/
│ │ ├── co/
│ │ │ └── paralleluniverse/
│ │ │ └── fiber/
│ │ │ └── httpkit/
│ │ │ ├── client_test.clj
│ │ │ └── test_util.clj
│ │ └── logback-test.xml
│ └── test-resources/
│ └── ssl_keystore
├── comsat-jax-rs-client/
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── co/
│ │ │ └── paralleluniverse/
│ │ │ └── fibers/
│ │ │ └── ws/
│ │ │ └── rs/
│ │ │ └── client/
│ │ │ ├── AsyncClientBuilder.java
│ │ │ ├── AsyncRs.java
│ │ │ ├── FiberBuilder.java
│ │ │ ├── FiberClient.java
│ │ │ ├── FiberInvocation.java
│ │ │ ├── FiberWebTarget.java
│ │ │ └── package-info.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── suspendable-supers
│ └── test/
│ └── java/
│ └── co/
│ └── paralleluniverse/
│ └── fibers/
│ └── ws/
│ └── rs/
│ └── client/
│ └── AsyncClientBuilderTest.java
├── comsat-jdbc/
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── co/
│ │ │ └── paralleluniverse/
│ │ │ └── fibers/
│ │ │ └── jdbc/
│ │ │ ├── FiberArray.java
│ │ │ ├── FiberBlob.java
│ │ │ ├── FiberCallableStatement.java
│ │ │ ├── FiberClob.java
│ │ │ ├── FiberConnection.java
│ │ │ ├── FiberDataSource.java
│ │ │ ├── FiberDataSourceFactory.java
│ │ │ ├── FiberDatabaseMetaData.java
│ │ │ ├── FiberDriver.java
│ │ │ ├── FiberNClob.java
│ │ │ ├── FiberParameterMetadata.java
│ │ │ ├── FiberPreparedStatement.java
│ │ │ ├── FiberRef.java
│ │ │ ├── FiberResultSet.java
│ │ │ ├── FiberResultSetMetaData.java
│ │ │ ├── FiberSQLXML.java
│ │ │ ├── FiberSavepoint.java
│ │ │ ├── FiberStatement.java
│ │ │ ├── FiberStruct.java
│ │ │ ├── JDBCFiberAsync.java
│ │ │ └── package-info.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── services/
│ │ └── java.sql.Driver
│ └── test/
│ └── java/
│ └── co/
│ └── paralleluniverse/
│ └── fibers/
│ └── jdbc/
│ ├── FiberConnectionTest.java
│ └── FiberDataSourceTest.java
├── comsat-jdbi/
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── co/
│ │ │ └── paralleluniverse/
│ │ │ └── fibers/
│ │ │ └── jdbi/
│ │ │ ├── FiberDBI.java
│ │ │ └── JdbiClassifier.java
│ │ └── resources/
│ │ └── META-INF/
│ │ ├── services/
│ │ │ └── co.paralleluniverse.fibers.instrument.SuspendableClassifier
│ │ └── suspendables
│ └── test/
│ └── java/
│ └── co/
│ └── paralleluniverse/
│ └── fibers/
│ └── jdbi/
│ ├── FiberFluentAPITest.java
│ └── FiberSqlObjectAPITest.java
├── comsat-jersey-server/
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── co/
│ │ │ └── paralleluniverse/
│ │ │ └── fibers/
│ │ │ └── jersey/
│ │ │ ├── ServletContainer.java
│ │ │ └── package-info.java
│ │ └── resources/
│ │ └── META-INF/
│ │ ├── suspendable-supers
│ │ └── suspendables
│ └── test/
│ └── java/
│ └── co/
│ └── paralleluniverse/
│ └── fibers/
│ └── jersey/
│ ├── AddTestFiltersFeature.java
│ ├── FiberServletContainerTest.java
│ └── TestResource.java
├── comsat-jetty-loader/
│ ├── build.gradle
│ └── src/
│ ├── main/
│ │ └── java/
│ │ └── co/
│ │ └── paralleluniverse/
│ │ └── comsat/
│ │ └── jetty/
│ │ └── QuasarWebAppClassLoader.java
│ └── test/
│ ├── java/
│ │ └── co/
│ │ └── paralleluniverse/
│ │ └── embedded/
│ │ └── containers/
│ │ └── JettyLoaderTest.java
│ └── resources/
│ ├── log4j.xml
│ └── webapps/
│ └── dep.xml
├── comsat-jooq/
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── co/
│ │ │ └── paralleluniverse/
│ │ │ └── fibers/
│ │ │ └── jooq/
│ │ │ └── JooqClassifier.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── services/
│ │ └── co.paralleluniverse.fibers.instrument.SuspendableClassifier
│ └── test/
│ └── java/
│ └── co/
│ └── paralleluniverse/
│ └── fibers/
│ └── jooq/
│ └── JooqContextTest.java
├── comsat-kafka/
│ └── src/
│ ├── main/
│ │ └── java/
│ │ └── co/
│ │ └── paralleluniverse/
│ │ └── fibers/
│ │ └── kafka/
│ │ └── FiberKafkaProducer.java
│ └── test/
│ └── java/
│ └── co/
│ └── paralleluniverse/
│ └── fibers/
│ └── kafka/
│ └── FiberKafkaProducerTest.java
├── comsat-mongodb-allanbank/
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── co/
│ │ │ └── paralleluniverse/
│ │ │ └── fibers/
│ │ │ └── mongodb/
│ │ │ ├── FiberMongoCallback.java
│ │ │ ├── FiberMongoClientImpl.java
│ │ │ ├── FiberMongoCollectionImpl.java
│ │ │ ├── FiberMongoDatabaseImpl.java
│ │ │ ├── FiberMongoFactory.java
│ │ │ ├── FiberMongoUtils.java
│ │ │ └── SettableListenableFuture.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── suspendables
│ └── test/
│ └── java/
│ └── co/
│ └── paralleluniverse/
│ └── fibers/
│ └── mongodb/
│ ├── AbstractTestFiberMongo.java
│ ├── FiberMongoCollTest.java
│ └── FiberMongoDbTest.java
├── comsat-okhttp/
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ ├── co/
│ │ │ │ └── paralleluniverse/
│ │ │ │ └── fibers/
│ │ │ │ └── okhttp/
│ │ │ │ ├── FiberCall.java
│ │ │ │ ├── FiberOkHttpClient.java
│ │ │ │ └── FiberOkHttpUtil.java
│ │ │ └── com/
│ │ │ └── squareup/
│ │ │ └── okhttp/
│ │ │ └── CallProxy.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── suspendables
│ └── test/
│ └── java/
│ ├── co/
│ │ └── paralleluniverse/
│ │ └── fibers/
│ │ └── okhttp/
│ │ └── test/
│ │ ├── InterceptorTest.java
│ │ ├── apache/
│ │ │ ├── OkApacheClientTest.java
│ │ │ └── OkApacheTestWrapper.java
│ │ └── utils/
│ │ ├── FiberCallTestWrapper.java
│ │ ├── FiberOkHttpClientTestWrapper.java
│ │ └── original/
│ │ ├── DelegatingSSLSocket.java
│ │ ├── DelegatingSSLSocketFactory.java
│ │ ├── DelegatingServerSocketFactory.java
│ │ ├── DelegatingSocketFactory.java
│ │ ├── DoubleInetAddressDns.java
│ │ ├── FallbackTestClientSocketFactory.java
│ │ ├── RecordedResponse.java
│ │ ├── RecordingAuthenticator.java
│ │ ├── RecordingCallback.java
│ │ ├── RecordingOkAuthenticator.java
│ │ ├── SingleInetAddressDns.java
│ │ ├── SocksProxy.java
│ │ ├── SocksProxyTest.java
│ │ ├── TestLogHandler.java
│ │ ├── http/
│ │ │ └── FakeDns.java
│ │ ├── io/
│ │ │ └── InMemoryFileSystem.java
│ │ └── testing/
│ │ └── RecordingHostnameVerifier.java
│ └── com/
│ └── squareup/
│ └── okhttp/
│ ├── CacheTest.java
│ ├── CallTest.java
│ ├── DispatcherTest.java
│ ├── OkUrlFactoryTest.java
│ ├── README.md
│ ├── URLConnectionTest.java
│ └── UrlConnectionCacheTest.java
├── comsat-retrofit/
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── co/
│ │ │ └── paralleluniverse/
│ │ │ └── fibers/
│ │ │ └── retrofit/
│ │ │ └── FiberRestAdapterBuilder.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── suspendables
│ └── test/
│ └── java/
│ └── co/
│ └── paralleluniverse/
│ └── fibers/
│ └── retrofit/
│ ├── FiberRestAdapterBuilderTest.java
│ └── HelloWorldApplication.java
├── comsat-ring-jetty9/
│ ├── project.clj
│ ├── src/
│ │ └── co/
│ │ └── paralleluniverse/
│ │ └── fiber/
│ │ └── ring/
│ │ └── jetty9.clj
│ └── test/
│ ├── co/
│ │ └── paralleluniverse/
│ │ └── fiber/
│ │ └── ring/
│ │ └── test/
│ │ └── jetty9_test.clj
│ └── keystore.jks
├── comsat-servlet/
│ └── src/
│ ├── main/
│ │ └── java/
│ │ └── co/
│ │ └── paralleluniverse/
│ │ └── fibers/
│ │ └── servlet/
│ │ ├── FiberHttpServlet.java
│ │ ├── FiberHttpServletRequest.java
│ │ ├── FiberRequestDispatcher.java
│ │ ├── FiberServletContext.java
│ │ ├── FiberServletRequest.java
│ │ └── package-info.java
│ └── test/
│ └── java/
│ └── co/
│ └── paralleluniverse/
│ └── fibers/
│ └── servlet/
│ └── FiberHttpServletTest.java
├── comsat-shiro/
│ └── src/
│ ├── main/
│ │ └── resources/
│ │ └── META-INF/
│ │ ├── suspendable-supers
│ │ └── suspendables
│ └── test/
│ ├── java/
│ │ └── co/
│ │ └── paralleluniverse/
│ │ └── fibers/
│ │ └── shiro/
│ │ ├── FiberShiroRealmTest.java
│ │ └── FiberedRealm.java
│ └── resources/
│ ├── shiro-multi-realm.ini
│ └── shiro-single-realm.ini
├── comsat-spring/
│ ├── build.gradle
│ ├── comsat-spring-boot/
│ │ ├── build.gradle
│ │ ├── comsat-spring-boot-sample-actuator/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── actuator/
│ │ │ │ │ ├── HelloWorldService.java
│ │ │ │ │ ├── SampleActuatorApplication.java
│ │ │ │ │ ├── SampleController.java
│ │ │ │ │ └── ServiceProperties.java
│ │ │ │ └── resources/
│ │ │ │ └── application.properties
│ │ │ └── test/
│ │ │ ├── java/
│ │ │ │ └── comsat/
│ │ │ │ └── sample/
│ │ │ │ └── actuator/
│ │ │ │ └── SampleActuatorApplicationTests.java
│ │ │ └── resources/
│ │ │ └── application-endpoints.properties
│ │ ├── comsat-spring-boot-sample-actuator-async/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── actuator/
│ │ │ │ │ ├── HelloWorldService.java
│ │ │ │ │ ├── SampleActuatorApplication.java
│ │ │ │ │ ├── SampleController.java
│ │ │ │ │ └── ServiceProperties.java
│ │ │ │ └── resources/
│ │ │ │ └── application.properties
│ │ │ └── test/
│ │ │ ├── java/
│ │ │ │ └── comsat/
│ │ │ │ └── sample/
│ │ │ │ └── actuator/
│ │ │ │ └── SampleActuatorApplicationTests.java
│ │ │ └── resources/
│ │ │ └── application-endpoints.properties
│ │ ├── comsat-spring-boot-sample-actuator-log4j/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── actuator/
│ │ │ │ │ └── log4j/
│ │ │ │ │ ├── HelloWorldService.java
│ │ │ │ │ ├── SampleActuatorApplication.java
│ │ │ │ │ ├── SampleController.java
│ │ │ │ │ └── ServiceProperties.java
│ │ │ │ └── resources/
│ │ │ │ ├── application.properties
│ │ │ │ └── log4j.properties
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── actuator/
│ │ │ └── log4j/
│ │ │ └── SampleActuatorApplicationTests.java
│ │ ├── comsat-spring-boot-sample-actuator-log4j2/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── actuator/
│ │ │ │ │ └── log4j2/
│ │ │ │ │ ├── HelloWorldService.java
│ │ │ │ │ ├── SampleActuatorLog4J2Application.java
│ │ │ │ │ ├── SampleController.java
│ │ │ │ │ └── ServiceProperties.java
│ │ │ │ └── resources/
│ │ │ │ ├── application.properties
│ │ │ │ └── log4j2.xml
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── actuator/
│ │ │ └── log4j2/
│ │ │ └── SampleActuatorApplicationTests.java
│ │ ├── comsat-spring-boot-sample-actuator-ui/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── actuator/
│ │ │ │ │ └── ui/
│ │ │ │ │ └── SampleActuatorUiApplication.java
│ │ │ │ └── resources/
│ │ │ │ └── templates/
│ │ │ │ ├── error.ftl
│ │ │ │ └── home.ftl
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── actuator/
│ │ │ └── ui/
│ │ │ ├── SampleActuatorUiApplicationPortTests.java
│ │ │ └── SampleActuatorUiApplicationTests.java
│ │ ├── comsat-spring-boot-sample-data-jpa/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── data/
│ │ │ │ │ └── jpa/
│ │ │ │ │ ├── SampleDataJpaApplication.java
│ │ │ │ │ ├── domain/
│ │ │ │ │ │ ├── City.java
│ │ │ │ │ │ ├── Hotel.java
│ │ │ │ │ │ ├── HotelSummary.java
│ │ │ │ │ │ ├── Rating.java
│ │ │ │ │ │ ├── RatingCount.java
│ │ │ │ │ │ ├── Review.java
│ │ │ │ │ │ ├── ReviewDetails.java
│ │ │ │ │ │ └── TripType.java
│ │ │ │ │ ├── service/
│ │ │ │ │ │ ├── CityRepository.java
│ │ │ │ │ │ ├── CitySearchCriteria.java
│ │ │ │ │ │ ├── CityService.java
│ │ │ │ │ │ ├── CityServiceImpl.java
│ │ │ │ │ │ ├── HotelRepository.java
│ │ │ │ │ │ ├── HotelService.java
│ │ │ │ │ │ ├── HotelServiceImpl.java
│ │ │ │ │ │ ├── ReviewRepository.java
│ │ │ │ │ │ └── ReviewsSummary.java
│ │ │ │ │ └── web/
│ │ │ │ │ └── SampleController.java
│ │ │ │ └── resources/
│ │ │ │ └── import.sql
│ │ │ └── test/
│ │ │ ├── java/
│ │ │ │ └── comsat/
│ │ │ │ └── sample/
│ │ │ │ └── data/
│ │ │ │ └── jpa/
│ │ │ │ └── SampleDataJpaApplicationTests.java
│ │ │ └── resources/
│ │ │ └── application-scratch.properties
│ │ ├── comsat-spring-boot-sample-jetty/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ └── java/
│ │ │ │ └── comsat/
│ │ │ │ └── sample/
│ │ │ │ └── jetty/
│ │ │ │ ├── SampleJettyApplication.java
│ │ │ │ ├── service/
│ │ │ │ │ └── HelloWorldService.java
│ │ │ │ └── web/
│ │ │ │ └── SampleController.java
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── jetty/
│ │ │ └── SampleJettyApplicationTests.java
│ │ ├── comsat-spring-boot-sample-jetty-ssl/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── jetty/
│ │ │ │ │ ├── SampleJettySslApplication.java
│ │ │ │ │ ├── service/
│ │ │ │ │ │ └── HelloWorldService.java
│ │ │ │ │ └── web/
│ │ │ │ │ └── SampleController.java
│ │ │ │ └── resources/
│ │ │ │ ├── application.properties
│ │ │ │ └── sample.jks
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── jetty/
│ │ │ └── SampleJettySslApplicationTests.java
│ │ ├── comsat-spring-boot-sample-jetty8/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ └── java/
│ │ │ │ └── comsat/
│ │ │ │ └── sample/
│ │ │ │ └── jetty/
│ │ │ │ ├── SampleJetty8Application.java
│ │ │ │ ├── service/
│ │ │ │ │ └── HelloWorldService.java
│ │ │ │ └── web/
│ │ │ │ └── SampleController.java
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── jetty/
│ │ │ └── SampleJetty8ApplicationTests.java
│ │ ├── comsat-spring-boot-sample-jetty8-ssl/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── jetty/
│ │ │ │ │ ├── SampleJetty8SslApplication.java
│ │ │ │ │ ├── service/
│ │ │ │ │ │ └── HelloWorldService.java
│ │ │ │ │ └── web/
│ │ │ │ │ └── SampleController.java
│ │ │ │ └── resources/
│ │ │ │ ├── application.properties
│ │ │ │ └── sample.jks
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── jetty/
│ │ │ └── SampleJetty8SslApplicationTests.java
│ │ ├── comsat-spring-boot-sample-jpa/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── jpa/
│ │ │ │ │ ├── SampleJpaApplication.java
│ │ │ │ │ ├── domain/
│ │ │ │ │ │ ├── Note.java
│ │ │ │ │ │ └── Tag.java
│ │ │ │ │ ├── repository/
│ │ │ │ │ │ ├── JpaNoteRepository.java
│ │ │ │ │ │ ├── JpaTagRepository.java
│ │ │ │ │ │ ├── NoteRepository.java
│ │ │ │ │ │ └── TagRepository.java
│ │ │ │ │ └── web/
│ │ │ │ │ └── IndexController.java
│ │ │ │ └── resources/
│ │ │ │ ├── import.sql
│ │ │ │ └── templates/
│ │ │ │ └── index.ftl
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── jpa/
│ │ │ ├── SampleJpaApplicationTests.java
│ │ │ └── repository/
│ │ │ ├── JpaNoteRepositoryIntegrationTests.java
│ │ │ └── JpaTagRepositoryIntegrationTests.java
│ │ ├── comsat-spring-boot-sample-servlet/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ └── java/
│ │ │ │ └── comsat/
│ │ │ │ └── sample/
│ │ │ │ └── servlet/
│ │ │ │ └── SampleServletApplication.java
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── servlet/
│ │ │ └── SampleServletApplicationTests.java
│ │ ├── comsat-spring-boot-sample-tomcat/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── tomcat/
│ │ │ │ │ ├── SampleTomcatApplication.java
│ │ │ │ │ ├── service/
│ │ │ │ │ │ └── HelloWorldService.java
│ │ │ │ │ └── web/
│ │ │ │ │ └── SampleController.java
│ │ │ │ └── resources/
│ │ │ │ └── public/
│ │ │ │ └── test.css
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── tomcat/
│ │ │ ├── NonAutoConfigurationSampleTomcatApplicationTests.java
│ │ │ └── SampleTomcatApplicationTests.java
│ │ ├── comsat-spring-boot-sample-tomcat-jsp/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── jsp/
│ │ │ │ │ ├── SampleTomcatJspApplication.java
│ │ │ │ │ └── WelcomeController.java
│ │ │ │ ├── resources/
│ │ │ │ │ └── application.properties
│ │ │ │ └── webapp/
│ │ │ │ └── WEB-INF/
│ │ │ │ └── jsp/
│ │ │ │ └── welcome.jsp
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── jsp/
│ │ │ └── SampleWebJspApplicationTests.java
│ │ ├── comsat-spring-boot-sample-tomcat-multi-connectors/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── tomcat/
│ │ │ │ │ ├── SampleTomcatTwoConnectorsApplication.java
│ │ │ │ │ └── web/
│ │ │ │ │ └── SampleController.java
│ │ │ │ └── resources/
│ │ │ │ └── keystore
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── tomcat/
│ │ │ └── SampleTomcatTwoConnectorsApplicationTests.java
│ │ ├── comsat-spring-boot-sample-tomcat-ssl/
│ │ │ ├── build.gradle
│ │ │ ├── sample.jks
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── tomcat/
│ │ │ │ │ ├── SampleTomcatSslApplication.java
│ │ │ │ │ └── web/
│ │ │ │ │ └── SampleController.java
│ │ │ │ └── resources/
│ │ │ │ └── application.properties
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── tomcat/
│ │ │ └── SampleTomcatSslApplicationTests.java
│ │ ├── comsat-spring-boot-sample-tomcat7-jsp/
│ │ │ ├── .gitignore
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── jsp/
│ │ │ │ │ ├── SampleTomcat7JspApplication.java
│ │ │ │ │ └── WelcomeController.java
│ │ │ │ ├── resources/
│ │ │ │ │ └── application.properties
│ │ │ │ └── webapp/
│ │ │ │ └── WEB-INF/
│ │ │ │ └── jsp/
│ │ │ │ └── welcome.jsp
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── jsp/
│ │ │ └── SampleWebJspApplicationTests.java
│ │ ├── comsat-spring-boot-sample-traditional/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── traditional/
│ │ │ │ │ ├── SampleTraditionalApplication.java
│ │ │ │ │ └── config/
│ │ │ │ │ └── WebConfig.java
│ │ │ │ ├── resources/
│ │ │ │ │ └── log4j.properties
│ │ │ │ └── webapp/
│ │ │ │ ├── WEB-INF/
│ │ │ │ │ ├── views/
│ │ │ │ │ │ └── home.jsp
│ │ │ │ │ └── web.xml
│ │ │ │ └── index.html
│ │ │ └── test/
│ │ │ ├── java/
│ │ │ │ └── comsat/
│ │ │ │ └── sample/
│ │ │ │ └── traditional/
│ │ │ │ └── SampleTraditionalApplicationTests.java
│ │ │ └── resources/
│ │ │ └── log4j.properties
│ │ ├── comsat-spring-boot-sample-undertow/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ └── java/
│ │ │ │ └── comsat/
│ │ │ │ └── sample/
│ │ │ │ └── undertow/
│ │ │ │ ├── SampleUndertowApplication.java
│ │ │ │ ├── service/
│ │ │ │ │ └── HelloWorldService.java
│ │ │ │ └── web/
│ │ │ │ └── SampleController.java
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── undertow/
│ │ │ └── SampleUndertowApplicationTests.java
│ │ ├── comsat-spring-boot-sample-undertow-ssl/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── undertow/
│ │ │ │ │ ├── SampleUndertowSslApplication.java
│ │ │ │ │ ├── service/
│ │ │ │ │ │ └── HelloWorldService.java
│ │ │ │ │ └── web/
│ │ │ │ │ └── SampleController.java
│ │ │ │ └── resources/
│ │ │ │ ├── application.properties
│ │ │ │ └── sample.jks
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── undertow/
│ │ │ └── SampleUndertowSslApplicationTests.java
│ │ ├── comsat-spring-boot-sample-web-freemarker/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── freemarker/
│ │ │ │ │ ├── SampleWebFreeMarkerApplication.java
│ │ │ │ │ └── WelcomeController.java
│ │ │ │ └── resources/
│ │ │ │ ├── application.properties
│ │ │ │ └── templates/
│ │ │ │ ├── error.ftl
│ │ │ │ └── welcome.ftl
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── freemarker/
│ │ │ └── SampleWebFreeMarkerApplicationTests.java
│ │ ├── comsat-spring-boot-sample-web-groovy-templates/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── ui/
│ │ │ │ │ ├── InMemoryMessageRespository.java
│ │ │ │ │ ├── Message.java
│ │ │ │ │ ├── MessageRepository.java
│ │ │ │ │ ├── SampleGroovyTemplateApplication.java
│ │ │ │ │ └── mvc/
│ │ │ │ │ └── MessageController.java
│ │ │ │ └── resources/
│ │ │ │ ├── application.properties
│ │ │ │ ├── static/
│ │ │ │ │ └── js/
│ │ │ │ │ ├── jquery-1.7.2.js
│ │ │ │ │ └── jquery.validate.js
│ │ │ │ └── templates/
│ │ │ │ ├── layout.tpl
│ │ │ │ └── messages/
│ │ │ │ ├── form.tpl
│ │ │ │ ├── list.tpl
│ │ │ │ └── view.tpl
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── ui/
│ │ │ └── SampleGroovyTemplateApplicationTests.java
│ │ ├── comsat-spring-boot-sample-web-jsp/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── jsp/
│ │ │ │ │ ├── SampleWebJspApplication.java
│ │ │ │ │ └── WelcomeController.java
│ │ │ │ ├── resources/
│ │ │ │ │ └── application.properties
│ │ │ │ └── webapp/
│ │ │ │ └── WEB-INF/
│ │ │ │ └── jsp/
│ │ │ │ └── welcome.jsp
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── jsp/
│ │ │ └── SampleWebJspApplicationTests.java
│ │ ├── comsat-spring-boot-sample-web-method-security/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── ui/
│ │ │ │ │ └── method/
│ │ │ │ │ └── SampleMethodSecurityApplication.java
│ │ │ │ └── resources/
│ │ │ │ ├── application.properties
│ │ │ │ └── templates/
│ │ │ │ ├── access.html
│ │ │ │ ├── error.html
│ │ │ │ ├── home.html
│ │ │ │ └── login.html
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── ui/
│ │ │ └── method/
│ │ │ └── SampleMethodSecurityApplicationTests.java
│ │ ├── comsat-spring-boot-sample-web-mustache/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── mustache/
│ │ │ │ │ ├── SampleWebMustacheApplication.java
│ │ │ │ │ └── WelcomeController.java
│ │ │ │ └── resources/
│ │ │ │ ├── application.properties
│ │ │ │ └── templates/
│ │ │ │ ├── error.html
│ │ │ │ └── welcome.html
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── mustache/
│ │ │ └── SampleWebMustacheApplicationTests.java
│ │ ├── comsat-spring-boot-sample-web-secure/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── ui/
│ │ │ │ │ └── secure/
│ │ │ │ │ └── SampleWebSecureApplication.java
│ │ │ │ └── resources/
│ │ │ │ ├── application.properties
│ │ │ │ ├── schema.sql
│ │ │ │ └── templates/
│ │ │ │ ├── error.html
│ │ │ │ ├── home.html
│ │ │ │ └── login.html
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── ui/
│ │ │ └── secure/
│ │ │ └── SampleSecureApplicationTests.java
│ │ ├── comsat-spring-boot-sample-web-secure-custom/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── ui/
│ │ │ │ │ └── secure/
│ │ │ │ │ └── SampleWebSecureCustomApplication.java
│ │ │ │ └── resources/
│ │ │ │ ├── application.properties
│ │ │ │ └── templates/
│ │ │ │ ├── error.html
│ │ │ │ ├── home.html
│ │ │ │ └── login.html
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── ui/
│ │ │ └── secure/
│ │ │ └── SampleWebSecureCustomApplicationTests.java
│ │ ├── comsat-spring-boot-sample-web-secure-jdbc/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── ui/
│ │ │ │ │ └── secure/
│ │ │ │ │ └── SampleWebSecureCustomApplication.java
│ │ │ │ └── resources/
│ │ │ │ ├── application.properties
│ │ │ │ ├── data.sql
│ │ │ │ ├── schema.sql
│ │ │ │ └── templates/
│ │ │ │ ├── error.html
│ │ │ │ ├── home.html
│ │ │ │ └── login.html
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── ui/
│ │ │ └── secure/
│ │ │ └── SampleWebSecureCustomApplicationTests.java
│ │ ├── comsat-spring-boot-sample-web-static/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── ui/
│ │ │ │ │ └── SampleWebStaticApplication.java
│ │ │ │ └── webapp/
│ │ │ │ └── index.html
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── ui/
│ │ │ └── SampleWebStaticApplicationTests.java
│ │ ├── comsat-spring-boot-sample-web-ui/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── ui/
│ │ │ │ │ ├── InMemoryMessageRepository.java
│ │ │ │ │ ├── Message.java
│ │ │ │ │ ├── MessageRepository.java
│ │ │ │ │ ├── SampleWebUiApplication.java
│ │ │ │ │ └── mvc/
│ │ │ │ │ └── MessageController.java
│ │ │ │ └── resources/
│ │ │ │ ├── application.properties
│ │ │ │ ├── logback.xml
│ │ │ │ ├── static/
│ │ │ │ │ └── js/
│ │ │ │ │ ├── jquery-1.7.2.js
│ │ │ │ │ └── jquery.validate.js
│ │ │ │ └── templates/
│ │ │ │ ├── layout.html
│ │ │ │ └── messages/
│ │ │ │ ├── form.html
│ │ │ │ ├── list.html
│ │ │ │ └── view.html
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── ui/
│ │ │ └── SampleWebUiApplicationTests.java
│ │ ├── comsat-spring-boot-sample-web-velocity/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── comsat/
│ │ │ │ │ └── sample/
│ │ │ │ │ └── velocity/
│ │ │ │ │ ├── SampleWebVelocityApplication.java
│ │ │ │ │ └── WelcomeController.java
│ │ │ │ └── resources/
│ │ │ │ ├── application.properties
│ │ │ │ └── templates/
│ │ │ │ ├── error.vm
│ │ │ │ └── welcome.vm
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── comsat/
│ │ │ └── sample/
│ │ │ └── velocity/
│ │ │ └── SampleWebVelocityApplicationTests.java
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ └── co/
│ │ └── paralleluniverse/
│ │ └── springframework/
│ │ └── boot/
│ │ └── autoconfigure/
│ │ └── web/
│ │ ├── FiberSpringBootApplication.java
│ │ └── FiberWebMvcAutoConfiguration.java
│ ├── comsat-spring-boot-security/
│ │ ├── build.gradle
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ └── co/
│ │ └── paralleluniverse/
│ │ └── springframework/
│ │ └── boot/
│ │ └── security/
│ │ └── autoconfigure/
│ │ └── web/
│ │ └── FiberSecureSpringBootApplication.java
│ ├── comsat-spring-security/
│ │ ├── build.gradle
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ └── co/
│ │ └── paralleluniverse/
│ │ └── springframework/
│ │ └── security/
│ │ └── config/
│ │ └── FiberSecurityContextHolderConfig.java
│ └── comsat-spring-webmvc/
│ ├── build.gradle
│ └── src/
│ └── main/
│ └── java/
│ ├── co/
│ │ └── paralleluniverse/
│ │ └── springframework/
│ │ └── web/
│ │ ├── method/
│ │ │ └── support/
│ │ │ └── FiberInvocableHandlerMethod.java
│ │ └── servlet/
│ │ ├── config/
│ │ │ └── annotation/
│ │ │ └── FiberWebMvcConfigurationSupport.java
│ │ └── mvc/
│ │ └── method/
│ │ └── annotation/
│ │ ├── FiberRequestMappingHandlerAdapter.java
│ │ └── FiberServletInvocableHandlerMethod.java
│ └── org/
│ └── springframework/
│ └── web/
│ └── servlet/
│ └── config/
│ └── annotation/
│ └── ServletConfigAnnotationProtectedProxy.java
├── comsat-test-utils/
│ └── src/
│ ├── main/
│ │ └── java/
│ │ └── co/
│ │ └── paralleluniverse/
│ │ ├── comsat/
│ │ │ └── webactors/
│ │ │ ├── AbstractWebActorTest.java
│ │ │ └── MyWebActor.java
│ │ ├── embedded/
│ │ │ ├── containers/
│ │ │ │ ├── AbstractEmbeddedServer.java
│ │ │ │ ├── EmbeddedServer.java
│ │ │ │ ├── JettyServer.java
│ │ │ │ ├── TomcatServer.java
│ │ │ │ └── UndertowServer.java
│ │ │ └── db/
│ │ │ └── H2JdbcDatasource.java
│ │ └── test/
│ │ └── categories/
│ │ └── CI.java
│ └── test/
│ └── java/
│ └── co/
│ └── paralleluniverse/
│ └── embedded/
│ └── containers/
│ └── EmbeddedServerTest.java
├── comsat-test-war/
│ ├── TestServlet.java
│ ├── build.gradle
│ └── src/
│ └── main/
│ ├── java/
│ │ └── co/
│ │ └── paralleluniverse/
│ │ └── examples/
│ │ └── test/
│ │ └── MyFiberServlet.java
│ └── webapp/
│ ├── META-INF/
│ │ └── context.xml
│ └── WEB-INF/
│ ├── jetty-env.xml
│ └── web.xml
├── comsat-tomcat-loader/
│ ├── build.gradle
│ └── src/
│ ├── main/
│ │ └── java/
│ │ └── co/
│ │ └── paralleluniverse/
│ │ └── comsat/
│ │ └── tomcat/
│ │ └── QuasarWebAppClassLoader.java
│ └── test/
│ └── java/
│ └── co/
│ └── paralleluniverse/
│ └── embedded/
│ └── containers/
│ └── TomcatLoaderTest.java
├── docs/
│ ├── _config.yml
│ ├── _includes/
│ │ ├── footer.html
│ │ ├── head.html
│ │ ├── header.html
│ │ ├── meta.html
│ │ └── top-nav.html
│ ├── _layouts/
│ │ └── default.html
│ ├── _plugins/
│ │ ├── domain_name.filter.rb
│ │ ├── enhanced_kramdown.rb
│ │ ├── exclude_toc.filter.rb
│ │ ├── include_external.rb
│ │ ├── include_snippet.rb
│ │ ├── markdown_converter.rb
│ │ ├── sorted_for.rb
│ │ ├── svg_support.rb
│ │ └── toc.filter.rb
│ ├── css/
│ │ ├── PIE.htc
│ │ ├── fonts/
│ │ │ └── FairpNarMedIta.otf
│ │ ├── pygments/
│ │ │ ├── default.css
│ │ │ ├── github.css
│ │ │ ├── jekyll-github.css
│ │ │ └── linenos.css
│ │ └── screen.css
│ ├── index.md
│ └── js/
│ ├── main.js
│ ├── plugins.js
│ └── vendor/
│ └── html5shiv.js
├── gradle-app.setting
├── settings.gradle
└── travis/
├── build_clj.sh
└── post_build.sh
Showing preview only (374K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (4511 symbols across 318 files)
FILE: comsat-actors-api/src/main/java/co/paralleluniverse/comsat/webactors/Cookie.java
class Cookie (line 19) | public class Cookie {
method cookie (line 39) | public static Builder cookie(String name, String value) {
class Builder (line 43) | public static class Builder {
method Builder (line 54) | private Builder(String name, String value) {
method setPath (line 75) | public Builder setPath(String uri) {
method setDomain (line 96) | public Builder setDomain(String domain) {
method setMaxAge (line 119) | public Builder setMaxAge(int maxAge) {
method setComment (line 134) | public Builder setComment(String comment) {
method setVersion (line 153) | public Builder setVersion(int version) {
method setHttpOnly (line 172) | public Builder setHttpOnly(boolean httpOnly) {
method setSecure (line 189) | public Builder setSecure(boolean flag) {
method build (line 199) | public Cookie build() {
method Cookie (line 213) | private Cookie(Builder builder) {
method getName (line 230) | public String getName() {
method getValue (line 239) | public String getValue() {
method getPath (line 251) | public String getPath() {
method getDomain (line 262) | public String getDomain() {
method getMaxAge (line 276) | public int getMaxAge() {
method getComment (line 285) | public String getComment() {
method getVersion (line 300) | public int getVersion() {
method isHttpOnly (line 309) | public boolean isHttpOnly() {
method isSecure (line 321) | public boolean isSecure() {
method toString (line 325) | @Override
FILE: comsat-actors-api/src/main/java/co/paralleluniverse/comsat/webactors/HttpMessage.java
class HttpMessage (line 24) | public abstract class HttpMessage extends WebMessage {
method getHeaders (line 32) | public abstract ListMultimap<String, String> getHeaders();
method getCookies (line 38) | public abstract Collection<Cookie> getCookies();
method getContentLength (line 44) | public abstract int getContentLength();
method getCharacterEncoding (line 50) | public abstract Charset getCharacterEncoding();
method getContentType (line 56) | public abstract String getContentType();
method getHeaderValues (line 64) | public Collection<String> getHeaderValues(String name) {
method getHeader (line 78) | public String getHeader(String name) {
method first (line 82) | static <V> V first(Collection<V> c) {
FILE: comsat-actors-api/src/main/java/co/paralleluniverse/comsat/webactors/HttpRequest.java
class HttpRequest (line 37) | public abstract class HttpRequest extends HttpMessage {
method getSourceHost (line 41) | public abstract String getSourceHost();
method getSourcePort (line 46) | public abstract int getSourcePort();
method getParameters (line 52) | public abstract Multimap<String, String> getParameters();
method getAttributes (line 67) | public abstract Map<String, Object> getAttributes();
method getParametersValues (line 75) | public Collection<String> getParametersValues(String name) {
method getParameter (line 87) | public String getParameter(String name) {
method getAttribute (line 98) | public Object getAttribute(String name) {
method getScheme (line 106) | public abstract String getScheme();
method getMethod (line 114) | public abstract String getMethod();
method getDateHeader (line 135) | public long getDateHeader(String name) {
method getPathInfo (line 159) | public abstract String getPathInfo();
method getContextPath (line 175) | public abstract String getContextPath();
method getQueryString (line 181) | public abstract String getQueryString();
method getRequestURI (line 198) | public abstract String getRequestURI();
method getRequestURL (line 212) | public String getRequestURL() {
method getServerName (line 237) | public abstract String getServerName();
method getServerPort (line 246) | public abstract int getServerPort();
method getFrom (line 256) | @Override
method contentString (line 259) | @Override
class Builder (line 275) | public static class Builder {
method Builder (line 292) | public Builder(ActorRef<? super WebMessage> from, String body) {
method Builder (line 298) | public Builder(ActorRef<? super WebMessage> from, ByteBuffer body) {
method Builder (line 304) | public Builder(ActorRef<? super WebMessage> from) {
method setSourceHost (line 308) | public Builder setSourceHost(String sourceAddress) {
method setSourcePort (line 313) | public Builder setSourcePort(int sourcePort) {
method setContentType (line 330) | public Builder setContentType(String contentType) {
method setCharacterEncoding (line 351) | public Builder setCharacterEncoding(Charset charset) {
method addHeader (line 364) | public Builder addHeader(final String name, final String value) {
method addCookie (line 379) | public Builder addCookie(Cookie cookie) {
method setMethod (line 386) | public Builder setMethod(String method) {
method setScheme (line 391) | public Builder setScheme(String scheme) {
method setServer (line 396) | public Builder setServer(String server) {
method setPort (line 401) | public Builder setPort(int port) {
method setPath (line 406) | public Builder setPath(String path) {
method addParam (line 418) | public Builder addParam(final String name, final String value) {
method build (line 430) | public HttpRequest build() {
class SimpleHttpRequest (line 435) | private static class SimpleHttpRequest extends HttpRequest {
method SimpleHttpRequest (line 458) | public SimpleHttpRequest(ActorRef<? super WebMessage> from, HttpRequ...
method SimpleHttpRequest (line 476) | public SimpleHttpRequest(ActorRef<? super WebMessage> from, HttpRequ...
method getSourceHost (line 494) | @Override
method getSourcePort (line 499) | @Override
method getFrom (line 504) | @Override
method getContentType (line 509) | @Override
method getCharacterEncoding (line 514) | @Override
method getContentLength (line 519) | @Override
method getStringBody (line 527) | @Override
method getByteBufferBody (line 532) | @Override
method getCookies (line 537) | @Override
method getHeaders (line 542) | @Override
method getAttributes (line 547) | @Override
method getScheme (line 552) | @Override
method getMethod (line 557) | @Override
method getServerName (line 562) | @Override
method getServerPort (line 567) | @Override
method getParameters (line 572) | @Override
method getRequestURI (line 577) | @Override
method getQueryString (line 582) | @Override
method getPathInfo (line 593) | @Override
method getContextPath (line 598) | @Override
method parseDate (line 631) | private static long parseDate(String value) {
FILE: comsat-actors-api/src/main/java/co/paralleluniverse/comsat/webactors/HttpResponse.java
class HttpResponse (line 33) | public abstract class HttpResponse extends HttpMessage {
method getFrom (line 34) | @Override
method getRequest (line 40) | public abstract HttpRequest getRequest();
method getStatus (line 45) | public abstract int getStatus();
method getError (line 50) | public abstract Throwable getError();
method getRedirectPath (line 55) | public abstract String getRedirectPath();
method shouldStartActor (line 57) | public abstract boolean shouldStartActor();
method contentString (line 59) | @Override
method ok (line 84) | public static Builder ok(ActorRef<? super WebMessage> from, HttpReques...
method ok (line 95) | public static Builder ok(ActorRef<? super WebMessage> from, HttpReques...
method error (line 108) | public static Builder error(ActorRef<? super WebMessage> from, HttpReq...
method error (line 120) | public static Builder error(ActorRef<? super WebMessage> from, HttpReq...
method redirect (line 139) | public static Builder redirect(HttpRequest request, String redirectPat...
class Builder (line 143) | public static class Builder {
method Builder (line 157) | public Builder(ActorRef<? super WebMessage> from, HttpRequest reques...
method Builder (line 165) | public Builder(ActorRef<? super WebMessage> from, HttpRequest reques...
method Builder (line 173) | public Builder(ActorRef<? super WebMessage> from, HttpRequest reques...
method Builder (line 177) | Builder(HttpRequest request, String body) {
method Builder (line 181) | Builder(HttpRequest request, ByteBuffer body) {
method Builder (line 185) | Builder(HttpRequest request) {
method setContentType (line 201) | public Builder setContentType(String contentType) {
method setCharacterEncoding (line 222) | public Builder setCharacterEncoding(Charset charset) {
method addHeader (line 235) | public Builder addHeader(final String name, final String value) {
method addCookie (line 249) | public Builder addCookie(Cookie cookie) {
method status (line 271) | public Builder status(int sc) {
method error (line 283) | public Builder error(Throwable error) {
method startActor (line 294) | public Builder startActor() {
method redirect (line 299) | Builder redirect(String redirectPath) {
method build (line 310) | public HttpResponse build() {
class SimpleHttpResponse (line 315) | private static class SimpleHttpResponse extends HttpResponse {
method SimpleHttpResponse (line 336) | public SimpleHttpResponse(ActorRef<? super WebMessage> from, HttpRes...
method SimpleHttpResponse (line 351) | public SimpleHttpResponse(ActorRef<? super WebMessage> from, Builder...
method getFrom (line 366) | @Override
method getContentType (line 371) | @Override
method getCharacterEncoding (line 376) | @Override
method getContentLength (line 381) | @Override
method getStringBody (line 389) | @Override
method getByteBufferBody (line 394) | @Override
method getCookies (line 399) | @Override
method getHeaders (line 404) | @Override
method getRequest (line 412) | @Override
method getStatus (line 420) | @Override
method getError (line 428) | @Override
method getRedirectPath (line 436) | @Override
method shouldStartActor (line 441) | @Override
FILE: comsat-actors-api/src/main/java/co/paralleluniverse/comsat/webactors/HttpStreamOpened.java
class HttpStreamOpened (line 28) | public class HttpStreamOpened extends WebStreamOpened implements IdMessa...
method HttpStreamOpened (line 31) | public HttpStreamOpened(ActorRef<WebDataMessage> actor, HttpResponse r...
method getId (line 41) | @Override
FILE: comsat-actors-api/src/main/java/co/paralleluniverse/comsat/webactors/SSE.java
class SSE (line 45) | public final class SSE {
method startSSE (line 58) | public static HttpResponse.Builder startSSE(ActorRef<? super WebMessag...
method startSSE (line 76) | public static HttpResponse.Builder startSSE(ActorRef<? super WebMessag...
method wrapAsSSE (line 86) | public static SendPort<WebDataMessage> wrapAsSSE(SendPort<WebDataMessa...
method getLastEventId (line 101) | public static long getLastEventId(HttpRequest request) {
method event (line 116) | public static String event(long id, String eventType, String payload) {
method event (line 127) | public static String event(String eventType, String payload) {
method event (line 138) | public static String event(long id, String payload) {
method event (line 148) | public static String event(String payload) {
method reconnectTimeout (line 160) | public static String reconnectTimeout(long reconnectTimeout) {
method idString (line 164) | private static String idString(long id) {
method eventString (line 168) | private static String eventString(String eventName) {
method retryString (line 172) | private static String retryString(long reconnectTimeout) {
method dataString (line 176) | private static String dataString(String payload) {
method SSE (line 185) | private SSE() {
FILE: comsat-actors-api/src/main/java/co/paralleluniverse/comsat/webactors/WebDataMessage.java
class WebDataMessage (line 22) | public class WebDataMessage extends WebMessage {
method WebDataMessage (line 32) | public WebDataMessage(ActorRef<? super WebDataMessage> from, String bo...
method WebDataMessage (line 43) | public WebDataMessage(ActorRef<? super WebDataMessage> from, ByteBuffe...
method getFrom (line 49) | @Override
method isBinary (line 58) | public boolean isBinary() {
method getStringBody (line 62) | @Override
method getByteBufferBody (line 67) | @Override
method contentString (line 72) | @Override
FILE: comsat-actors-api/src/main/java/co/paralleluniverse/comsat/webactors/WebMessage.java
class WebMessage (line 25) | public abstract class WebMessage extends ActorMessage implements FromMes...
method getFrom (line 29) | @Override
method getStringBody (line 35) | public abstract String getStringBody();
method getByteBufferBody (line 40) | public abstract ByteBuffer getByteBufferBody();
method contentString (line 42) | @Override
FILE: comsat-actors-api/src/main/java/co/paralleluniverse/comsat/webactors/WebSocketOpened.java
class WebSocketOpened (line 21) | public class WebSocketOpened extends WebStreamOpened {
method WebSocketOpened (line 22) | public WebSocketOpened(ActorRef<WebDataMessage> actor) {
FILE: comsat-actors-api/src/main/java/co/paralleluniverse/comsat/webactors/WebStreamOpened.java
class WebStreamOpened (line 23) | public class WebStreamOpened extends WebMessage {
method WebStreamOpened (line 26) | public WebStreamOpened(ActorRef<WebDataMessage> actor) {
method getFrom (line 30) | @Override
method getStringBody (line 41) | @Override
method getByteBufferBody (line 52) | @Override
FILE: comsat-actors-netty/src/main/java/co/paralleluniverse/comsat/webactors/netty/AutoWebActorHandler.java
class AutoWebActorHandler (line 39) | public class AutoWebActorHandler extends WebActorHandler {
method AutoWebActorHandler (line 44) | public AutoWebActorHandler() {
method AutoWebActorHandler (line 48) | public AutoWebActorHandler(List<String> packagePrefixes) {
method AutoWebActorHandler (line 52) | public AutoWebActorHandler(String httpResponseEncoderName, List<String...
method AutoWebActorHandler (line 56) | public AutoWebActorHandler(String httpResponseEncoderName) {
method AutoWebActorHandler (line 60) | public AutoWebActorHandler(String httpResponseEncoderName, ClassLoader...
method AutoWebActorHandler (line 64) | public AutoWebActorHandler(String httpResponseEncoderName, ClassLoader...
method AutoWebActorHandler (line 68) | public AutoWebActorHandler(String httpResponseEncoderName, Map<Class<?...
method AutoWebActorHandler (line 72) | public AutoWebActorHandler(String httpResponseEncoderName, List<String...
method AutoWebActorHandler (line 76) | public AutoWebActorHandler(String httpResponseEncoderName, ClassLoader...
method AutoWebActorHandler (line 81) | public AutoWebActorHandler(String httpResponseEncoderName, AutoContext...
method newContextProvider (line 85) | protected AutoContextProvider newContextProvider(ClassLoader userClass...
class AutoContextProvider (line 89) | public static class AutoContextProvider implements WebActorContextProv...
method AutoContextProvider (line 95) | public AutoContextProvider(ClassLoader userClassLoader, List<String>...
method AutoContextProvider (line 99) | public AutoContextProvider(ClassLoader userClassLoader, List<String>...
method get (line 106) | @Override
method newActorContext (line 121) | protected AutoContext newActorContext(FullHttpRequest req) {
method getSessionId (line 128) | private String getSessionId(FullHttpRequest req) {
class AutoContext (line 140) | private static class AutoContext extends DefaultContextImpl {
method AutoContext (line 149) | public AutoContext(FullHttpRequest req, List<String> packagePrefixes...
method fillActor (line 156) | private void fillActor(FullHttpRequest req) {
method getId (line 164) | @Override
method restart (line 169) | @Override
method getWebActor (line 175) | @Override
method handlesWithHttp (line 180) | @Override
method handlesWithWebSocket (line 185) | @Override
method watch (line 190) | @Override
method autoCreateActor (line 195) | @SuppressWarnings("unchecked")
method registerActorClasses (line 211) | private synchronized void registerActorClasses() {
FILE: comsat-actors-netty/src/main/java/co/paralleluniverse/comsat/webactors/netty/NettyHttpRequest.java
class NettyHttpRequest (line 46) | public final class NettyHttpRequest extends HttpRequest {
method NettyHttpRequest (line 68) | public NettyHttpRequest(ActorRef<? super HttpResponse> actorRef, Chann...
method getSourceHost (line 77) | @Override
method getSourcePort (line 83) | @Override
method fillSourceAddress (line 89) | private void fillSourceAddress() {
method getParameters (line 96) | @Override
method getAttributes (line 110) | @Override
method getScheme (line 115) | @Override
method initUri (line 121) | private void initUri() {
method getMethod (line 131) | @Override
method getPathInfo (line 136) | @Override
method getContextPath (line 142) | @Override
method getQueryString (line 147) | @Override
method getRequestURI (line 153) | @Override
method getServerName (line 158) | @Override
method getServerPort (line 164) | @Override
method getFrom (line 170) | @SuppressWarnings("unchecked")
method getHeaders (line 176) | @Override
method getCookies (line 184) | @Override
method getNettyCookies (line 204) | static Set<io.netty.handler.codec.http.cookie.Cookie> getNettyCookies(...
method getContentLength (line 213) | @Override
method getCharacterEncoding (line 224) | @Override
method getContentType (line 231) | @Override
method getStringBody (line 244) | @Override
method getByteBufferBody (line 254) | @Override
method getSessionId (line 265) | public final String getSessionId() {
method getContext (line 269) | public ChannelHandlerContext getContext() {
method getRequest (line 273) | public FullHttpRequest getRequest() {
method decodeStringBody (line 277) | private String decodeStringBody() {
method getCharacterEncodingOrDefault (line 293) | Charset getCharacterEncodingOrDefault() {
method extractCharacterEncodingOrDefault (line 297) | static Charset extractCharacterEncodingOrDefault(HttpHeaders headers) {
method extractCharacterEncoding (line 301) | static Charset extractCharacterEncoding(ListMultimap<String, String> h...
method extractHeaders (line 317) | static ImmutableListMultimap<String, String> extractHeaders(HttpHeader...
method getCharacterEncodingOrDefault (line 328) | private static Charset getCharacterEncodingOrDefault(Charset character...
FILE: comsat-actors-netty/src/main/java/co/paralleluniverse/comsat/webactors/netty/WebActorHandler.java
class WebActorHandler (line 53) | public class WebActorHandler extends SimpleChannelInboundHandler<Object> {
type WebActorContextProvider (line 57) | public interface WebActorContextProvider {
method get (line 58) | Context get(FullHttpRequest req);
type Context (line 61) | public interface Context {
method getId (line 62) | String getId();
method getLock (line 63) | ReentrantLock getLock();
method isValid (line 65) | boolean isValid() throws SuspendExecution, InterruptedException;
method invalidate (line 66) | void invalidate() throws SuspendExecution, InterruptedException;
method renew (line 68) | boolean renew();
method restart (line 69) | void restart(FullHttpRequest r);
method getWebActor (line 71) | ActorRef<? extends WebMessage> getWebActor();
method handlesWithHttp (line 72) | boolean handlesWithHttp(String uri);
method handlesWithWebSocket (line 73) | boolean handlesWithWebSocket(String uri);
type WatchPolicy (line 75) | enum WatchPolicy { DONT_WATCH, DIE, DIE_IF_EXCEPTION_ELSE_RESTART, R...
method watch (line 76) | WatchPolicy watch();
method getAttachments (line 78) | Map<String, Object> getAttachments();
class DefaultContextImpl (line 81) | public static abstract class DefaultContextImpl implements Context {
method DefaultContextImpl (line 94) | public DefaultContextImpl() {
method invalidate (line 98) | @Override
method isValid (line 107) | @Override
method renew (line 115) | @Override
method getAttachments (line 124) | @Override
method getLock (line 129) | @Override
method setValidityMS (line 134) | public void setValidityMS(long validityMS) {
method getValidityMS (line 138) | public long getValidityMS() {
method WebActorHandler (line 143) | public WebActorHandler(WebActorContextProvider contextProvider) {
method WebActorHandler (line 147) | public WebActorHandler(WebActorContextProvider contextProvider, String...
method channelReadComplete (line 152) | @Override
method exceptionCaught (line 157) | @Override
method channelRead0 (line 164) | @Override
method sessionsEnabled (line 175) | protected static boolean sessionsEnabled() {
method handleWebSocketFrame (line 200) | private void handleWebSocketFrame(ChannelHandlerContext ctx, WebSocket...
method handleHttpRequest (line 221) | private void handleHttpRequest(ChannelHandlerContext ctx, FullHttpRequ...
method addActorToContextAndUnlock (line 286) | static void addActorToContextAndUnlock(Context actorContext, ActorImpl...
class WebSocketActorAdapter (line 295) | private static final class WebSocketActorAdapter extends FakeActor<Web...
method WebSocketActorAdapter (line 300) | public WebSocketActorAdapter(ChannelHandlerContext ctx, ActorRef<? s...
method interrupt (line 308) | @Override
method toString (line 313) | @Override
method onMessage (line 318) | private void onMessage(final ByteBuffer message) {
method onMessage (line 326) | private void onMessage(final String message) {
method handleLifecycleMessage (line 334) | @Override
method throwIn (line 344) | @Override
method die (line 349) | @Override
class WebSocketChannelAdapter (line 361) | private static final class WebSocketChannelAdapter implements SendPort...
method WebSocketChannelAdapter (line 366) | public WebSocketChannelAdapter(ChannelHandlerContext ctx) {
method send (line 370) | @Override
method send (line 375) | @Override
method send (line 380) | @Override
method trySend (line 385) | @Override
method close (line 394) | @Override
method close (line 401) | @Override
class HttpActorAdapter (line 408) | private static final class HttpActorAdapter extends FakeActor<HttpResp...
method HttpActorAdapter (line 428) | HttpActorAdapter(ActorRef<? super HttpRequest> userActor, Context ac...
method toString (line 442) | @Override
method handleLifecycleMessage (line 447) | @Override
method die (line 454) | @Override
method throwIn (line 460) | @Override
method interrupt (line 466) | @Override
method handleLifecycle (line 472) | final boolean handleLifecycle(LifecycleMessage l) {
method handleRequest (line 492) | final void handleRequest(NettyHttpRequest s) throws SuspendExecution...
method handleReply (line 506) | @Suspendable
method handleDie (line 604) | @Suspendable
method possiblyReplyDeadAndUnblock (line 628) | private void possiblyReplyDeadAndUnblock(Throwable cause) {
method blockSessionRequests (line 642) | @Suspendable
method unblockSessionRequests (line 663) | @Suspendable
method isRequestInProgress (line 672) | private boolean isRequestInProgress() {
class HttpChannelAdapter (line 677) | private static final class HttpChannelAdapter implements SendPort<Http...
method send (line 680) | @Override
method send (line 686) | @Override
method send (line 693) | @Override
method trySend (line 699) | @Override
method close (line 712) | @Override
method close (line 718) | @Override
method trackSession (line 726) | protected static boolean trackSession(boolean sseStarted) {
method handlesWithHttp (line 734) | protected static boolean handlesWithHttp(String uri, Class<?> actorCla...
method handlesWithWebSocket (line 738) | protected static boolean handlesWithWebSocket(String uri, Class<?> act...
class HttpStreamActorAdapter (line 742) | private static final class HttpStreamActorAdapter extends FakeActor<We...
method HttpStreamActorAdapter (line 745) | public HttpStreamActorAdapter(final ChannelHandlerContext ctx, final...
method handleLifecycleMessage (line 750) | @Override
method throwIn (line 758) | @Override
method interrupt (line 763) | @Override
method die (line 768) | @Override
method toString (line 777) | @Override
class HttpStreamChannelAdapter (line 783) | private static final class HttpStreamChannelAdapter implements SendPor...
method HttpStreamChannelAdapter (line 789) | public HttpStreamChannelAdapter(ChannelHandlerContext ctx, FullHttpR...
method send (line 794) | @Override
method send (line 799) | @Override
method send (line 805) | @Override
method trySend (line 810) | @Override
method close (line 824) | @Override
method close (line 831) | @Override
method startSession (line 838) | static void startSession(String sessionId, Context actorContext) throw...
method cleanSessions (line 848) | private static void cleanSessions() throws SuspendExecution, Interrupt...
method getNettyCookie (line 859) | static io.netty.handler.codec.http.cookie.Cookie getNettyCookie(Cookie...
method sendHttpRedirect (line 869) | static void sendHttpRedirect(ChannelHandlerContext ctx, FullHttpReques...
method sendHttpError (line 875) | static void sendHttpError(ChannelHandlerContext ctx, FullHttpRequest r...
method sendHttpResponse (line 879) | static void sendHttpResponse(ChannelHandlerContext ctx, FullHttpReques...
method sendHttpResponse (line 883) | private static void sendHttpResponse(ChannelHandlerContext ctx, FullHt...
method writeHttpResponse (line 887) | private static void writeHttpResponse(ChannelHandlerContext ctx, FullH...
method write (line 901) | private static ChannelFuture write(ChannelHandlerContext ctx, Object r...
method match (line 906) | private static String match(String uri, Class<?> actorClass) {
method lookupOrInsert (line 916) | private static List<Pair<String, String>> lookupOrInsert(Class<?> acto...
method insert (line 926) | private static List<Pair<String, String>> insert(Class<?> actorClass) {
method addPattern (line 940) | private static void addPattern(List<Pair<String, String>> ret, String ...
method servletMatch (line 950) | private static boolean servletMatch(String pattern, String uri) {
FILE: comsat-actors-netty/src/test/java/co/paralleluniverse/comsat/webactors/netty/HttpRequestWrapperTest.java
class HttpRequestWrapperTest (line 15) | public class HttpRequestWrapperTest {
method httpHeaderCaseInsensitivity (line 17) | @Test
FILE: comsat-actors-netty/src/test/java/co/paralleluniverse/comsat/webactors/netty/NettyWebActor.java
class NettyWebActor (line 22) | @WebActor(httpUrlPatterns = {"/*"}, webSocketUrlPatterns = {"/ws"})
FILE: comsat-actors-netty/src/test/java/co/paralleluniverse/comsat/webactors/netty/WebActorTest.java
class WebActorTest (line 46) | @RunWith(Parameterized.class)
method getId (line 57) | @Override
method getWebActor (line 62) | @SuppressWarnings("unchecked")
method restart (line 68) | @Override
method handlesWithWebSocket (line 73) | @Override
method watch (line 78) | @Override
method handlesWithHttp (line 83) | @Override
method call (line 90) | @Override
method call (line 102) | @Override
method data (line 108) | @Parameterized.Parameters(name = "{index}")
method WebActorTest (line 120) | public WebActorTest(Callable<WebActorHandler> webActorHandlerCreator) {
method setUp (line 124) | @Before
method testDie (line 156) | @Override
method tearDown (line 164) | @After
method getSessionIdCookieName (line 172) | @Override
FILE: comsat-actors-servlet/src/main/java/co/paralleluniverse/comsat/webactors/servlet/EmbedHttpSessionWsConfigurator.java
class EmbedHttpSessionWsConfigurator (line 22) | class EmbedHttpSessionWsConfigurator extends Configurator {
method modifyHandshake (line 23) | @Override
FILE: comsat-actors-servlet/src/main/java/co/paralleluniverse/comsat/webactors/servlet/ServletHttpRequest.java
class ServletHttpRequest (line 45) | public final class ServletHttpRequest extends HttpRequest {
method ServletHttpRequest (line 64) | public ServletHttpRequest(ActorRef<? super HttpResponse> sender, HttpS...
method getServletRequest (line 70) | public HttpServletRequest getServletRequest() {
method getServletResponse (line 74) | public HttpServletResponse getServletResponse() {
method getSourceHost (line 78) | @Override
method getSourcePort (line 83) | @Override
method getStringBody (line 92) | @Override
method getByteBufferBody (line 108) | @Override
method readBody (line 118) | private byte[] readBody() {
method getHeaders (line 135) | @Override
method getParameters (line 150) | @Override
method getAttributes (line 167) | @Override
method getCookies (line 181) | @Override
method getDateHeader (line 204) | @Override
method getMethod (line 209) | @Override
method getScheme (line 214) | @Override
method getQueryString (line 220) | @Override
method getServerName (line 225) | @Override
method getServerPort (line 230) | @Override
method getContextPath (line 235) | @Override
method getRequestURI (line 240) | @Override
method getContentLength (line 245) | @Override
method getContentType (line 250) | @Override
method getPathInfo (line 255) | @Override
method getCharacterEncoding (line 260) | @Override
method getFrom (line 265) | @Override
FILE: comsat-actors-servlet/src/main/java/co/paralleluniverse/comsat/webactors/servlet/ServletWebActors.java
class ServletWebActors (line 34) | public final class ServletWebActors {
method attachWebActor (line 42) | public static <T> ActorRef<T> attachWebActor(final HttpSession session...
method isWebActorAttached (line 60) | public static boolean isWebActorAttached(HttpSession session) {
method getWebActor (line 70) | public static ActorRef<? super HttpRequest> getWebActor(HttpSession se...
method attachWebActor (line 82) | public static <T> ActorRef<T> attachWebActor(Session session, HttpSess...
method attachWebActor (line 95) | public static <T> ActorRef<T> attachWebActor(Session session, Endpoint...
method attachWebActor (line 109) | public static <T> ActorRef<T> attachWebActor(ServletContext sc, String...
method attachWebActor (line 122) | public static <T> ActorRef<T> attachWebActor(ServletContext sc, Collec...
method ServletWebActors (line 134) | private ServletWebActors() {
FILE: comsat-actors-servlet/src/main/java/co/paralleluniverse/comsat/webactors/servlet/WebActorEndpoint.java
class WebActorEndpoint (line 42) | public final class WebActorEndpoint extends Endpoint {
method onOpen (line 46) | @Override
method getUserWebActor (line 69) | private ActorRef getUserWebActor(EndpointConfig config) {
method attachWebActor (line 75) | static WebSocketActor attachWebActor(Session session, EndpointConfig c...
method attachWebActor (line 79) | static WebSocketActor attachWebActor(Session session, HttpSession http...
method onError (line 87) | @Override
method onClose (line 92) | @Override
method getSessionActor (line 97) | private static WebSocketActor getSessionActor(Session session) {
method getHttpSession (line 101) | private static HttpSession getHttpSession(EndpointConfig config) {
class WebSocketActor (line 105) | static final class WebSocketActor extends FakeActor<WebDataMessage> {
method WebSocketActor (line 110) | public WebSocketActor(Session session, HttpSession httpSession, Acto...
method onOpen (line 142) | final void onOpen() {
method onClose (line 157) | final void onClose(CloseReason closeReason) {
method onError (line 162) | final void onError(Throwable t) {
method handleLifecycleMessage (line 166) | @Override
method throwIn (line 176) | @Override
method interrupt (line 181) | @Override
method die (line 186) | @Override
method log (line 196) | private void log(String message, Throwable t) {
method toString (line 200) | @Override
class WebSocketChannel (line 206) | private static final class WebSocketChannel implements SendPort<WebDat...
method WebSocketChannel (line 212) | public WebSocketChannel(Session session, HttpSession httpSession) {
method send (line 217) | @Override
method send (line 222) | @Override
method send (line 227) | @Override
method trySend (line 232) | @Override
method close (line 244) | @Override
method close (line 256) | @Override
FILE: comsat-actors-servlet/src/main/java/co/paralleluniverse/comsat/webactors/servlet/WebActorInitializer.java
class WebActorInitializer (line 37) | @WebListener
method setUserClassLoader (line 46) | public static Class<? extends WebActorInitializer> setUserClassLoader(...
method contextInitialized (line 51) | @Override
method registerWebActor (line 85) | public static void registerWebActor(ServletContext sc, Class<?> webAct...
method contextDestroyed (line 111) | @Override
FILE: comsat-actors-servlet/src/main/java/co/paralleluniverse/comsat/webactors/servlet/WebActorServlet.java
class WebActorServlet (line 38) | @WebListener
method init (line 75) | @Override
method setRedirectNoSessionPath (line 102) | public final WebActorServlet setRedirectNoSessionPath(String path) {
method setActorClassName (line 107) | public final WebActorServlet setActorClassName(String className) {
method getOrAttachSessionActor (line 112) | static HttpActorAdapter getOrAttachSessionActor(final HttpSession sess...
method sessionCreated (line 126) | @Override
method sessionDestroyed (line 131) | @Override
method isWebActorAttached (line 136) | static boolean isWebActorAttached(final HttpSession session) {
method getWebActor (line 140) | static <T> ActorRef<T> getWebActor(final HttpSession session) {
method service (line 146) | @Override
method redirect (line 200) | static void redirect(AsyncContext ac, HttpServletResponse res, String ...
method internalError (line 206) | static void internalError(HttpServletRequest req, AsyncContext ac, Htt...
method error (line 217) | static void error(HttpServletRequest req, AsyncContext ac, HttpServlet...
class HttpActorAdapter (line 229) | static final class HttpActorAdapter extends FakeActor<HttpResponse> {
method HttpActorAdapter (line 251) | public HttpActorAdapter(Callable<ActorRef> userWebActorRefBuilder, H...
method handleRequest (line 267) | final void handleRequest(final AsyncContext asyncCtx, final HttpServ...
method blockSessionRequests (line 292) | @Suspendable
method unblockSessionRequests (line 315) | @Suspendable
method isRequestInProgress (line 324) | private boolean isRequestInProgress() {
method throwIn (line 328) | @Override
method interrupt (line 333) | @Override
method handleLifecycleMessage (line 338) | @Override
method handleLifecycle (line 344) | private boolean handleLifecycle(LifecycleMessage m) {
method die (line 361) | @Override
method handleDie (line 366) | private void handleDie(Throwable cause) {
method possiblyReplyDeadAndUnblock (line 400) | private void possiblyReplyDeadAndUnblock(final Throwable cause) thro...
method handleReply (line 415) | final void handleReply(final HttpResponse msg) throws SuspendExecuti...
method writeResponse (line 475) | private void writeResponse(AsyncContext ctx, HttpResponse msg, HttpS...
class HttpRequestChannel (line 492) | private static final class HttpRequestChannel implements SendPort<Http...
method HttpRequestChannel (line 495) | HttpRequestChannel() {}
method send (line 497) | @Override
method send (line 502) | @Override
method send (line 508) | @Override
method trySend (line 513) | @Override
method close (line 524) | @Override
method close (line 530) | @Override
class HttpStreamActor (line 538) | private static final class HttpStreamActor extends FakeActor<WebDataMe...
method HttpStreamActor (line 541) | public HttpStreamActor(final HttpServletRequest request, final HttpS...
method handleLifecycleMessage (line 546) | @Override
method throwIn (line 553) | @Override
method interrupt (line 558) | @Override
method die (line 563) | @Override
method toString (line 572) | @Override
class HttpStreamChannel (line 578) | private static final class HttpStreamChannel implements SendPort<WebDa...
method HttpStreamChannel (line 584) | public HttpStreamChannel(AsyncContext ctx, HttpServletResponse respo...
method send (line 589) | @Override
method send (line 594) | @Override
method send (line 600) | @Override
method trySend (line 605) | @Override
method close (line 622) | @Override
method close (line 644) | @Override
method writeBody (line 652) | static ServletOutputStream writeBody(WebMessage message, HttpServletRe...
method getServletCookie (line 689) | private static javax.servlet.http.Cookie getServletCookie(Cookie wc) {
method isTomcat (line 702) | static boolean isTomcat(Class c) {
method isUndertow (line 706) | static boolean isUndertow(Class c) {
method getLong (line 710) | static long getLong(String propName, long def) {
FILE: comsat-actors-servlet/src/test/java/co/paralleluniverse/comsat/webactors/servlet/HttpRequestWrapperTest.java
class HttpRequestWrapperTest (line 11) | public class HttpRequestWrapperTest {
method httpHeaderCaseInsensitivity (line 13) | @Test
FILE: comsat-actors-servlet/src/test/java/co/paralleluniverse/comsat/webactors/servlet/ServletWebActor.java
class ServletWebActor (line 22) | @WebActor(httpUrlPatterns = {"/*"}, webSocketUrlPatterns = {"/ws"})
FILE: comsat-actors-servlet/src/test/java/co/paralleluniverse/comsat/webactors/servlet/WebActorServletTest.java
class WebActorServletTest (line 30) | @RunWith(Parameterized.class)
method data (line 32) | @Parameterized.Parameters(name = "{0}")
method WebActorServletTest (line 43) | public WebActorServletTest(Class<? extends EmbeddedServer> cls) {
method setUp (line 47) | @Before
method tearDown (line 60) | @After
method getSessionIdCookieName (line 65) | @Override
method getClientEndPointConfig (line 70) | @Override
method getByName (line 80) | private static String getByName(final CookieStore cookieStore, String ...
FILE: comsat-actors-undertow/src/main/java/co/paralleluniverse/comsat/webactors/undertow/AutoWebActorHandler.java
class AutoWebActorHandler (line 37) | public final class AutoWebActorHandler extends WebActorHandler {
method AutoWebActorHandler (line 41) | public AutoWebActorHandler() {
method AutoWebActorHandler (line 45) | public AutoWebActorHandler(List<String> packagePrefixes) {
method AutoWebActorHandler (line 49) | public AutoWebActorHandler(ClassLoader userClassLoader, List<String> p...
method AutoWebActorHandler (line 53) | public AutoWebActorHandler(List<String> packagePrefixes, Map<Class<?>,...
method AutoWebActorHandler (line 57) | public AutoWebActorHandler(ClassLoader userClassLoader, List<String> p...
method AutoWebActorHandler (line 62) | public AutoWebActorHandler(AutoContextProvider prov) {
method newContextProvider (line 66) | protected AutoContextProvider newContextProvider(ClassLoader userClass...
class AutoContextProvider (line 70) | private static class AutoContextProvider implements ContextProvider {
method AutoContextProvider (line 76) | public AutoContextProvider(ClassLoader userClassLoader, List<String>...
method AutoContextProvider (line 80) | public AutoContextProvider(ClassLoader userClassLoader, List<String>...
method get (line 87) | @Override
method newContext (line 109) | private Context newContext(final HttpServerExchange xch) {
class AutoActorContext (line 121) | private static final class AutoActorContext extends DefaultContextImpl {
method AutoActorContext (line 130) | public AutoActorContext(List<String> packagePrefixes, Map<Class<?>, ...
method fillActor (line 141) | private boolean fillActor(HttpServerExchange xch) {
method getId (line 151) | @Override
method restart (line 156) | @Override
method getWebActor (line 162) | @Override
method handlesWithWebSocket (line 167) | @Override
method handlesWithHttp (line 172) | @Override
method watch (line 177) | @Override
method autoCreateActor (line 182) | @SuppressWarnings("unchecked")
method registerActorClasses (line 199) | private synchronized void registerActorClasses() {
FILE: comsat-actors-undertow/src/main/java/co/paralleluniverse/comsat/webactors/undertow/ByteArrayReadChannelListener.java
class ByteArrayReadChannelListener (line 36) | public abstract class ByteArrayReadChannelListener implements ChannelLis...
method ByteArrayReadChannelListener (line 40) | public ByteArrayReadChannelListener(final ByteBufferPool bufferPool) {
method setup (line 44) | public final void setup(final StreamSourceChannel c) {
method handleEvent (line 48) | @Override
method byteArrayDone (line 53) | protected abstract void byteArrayDone(byte[] bs);
method error (line 55) | protected abstract void error(IOException e);
method partialRead (line 57) | private void partialRead(StreamSourceChannel c, boolean setup) {
method cleanup (line 98) | private void cleanup(StreamSourceChannel c) {
FILE: comsat-actors-undertow/src/main/java/co/paralleluniverse/comsat/webactors/undertow/StringWriteChannelListener.java
class StringWriteChannelListener (line 35) | public final class StringWriteChannelListener implements ChannelListener...
method StringWriteChannelListener (line 38) | public StringWriteChannelListener(String string) {
method StringWriteChannelListener (line 42) | public StringWriteChannelListener(final String string, Charset charset) {
method StringWriteChannelListener (line 46) | public StringWriteChannelListener(final ByteBuffer buffer) {
method setup (line 50) | public final void setup(final StreamSinkChannel channel) {
method handleEvent (line 54) | @Override
method partialWrite (line 59) | private void partialWrite(StreamSinkChannel c, boolean setup) {
method writeDone (line 82) | private void writeDone(final StreamSinkChannel c) {
method handleError (line 108) | private void handleError(StreamSinkChannel c, String m, Throwable t) {
method cleanup (line 118) | private void cleanup() {
FILE: comsat-actors-undertow/src/main/java/co/paralleluniverse/comsat/webactors/undertow/UndertowHttpRequest.java
class UndertowHttpRequest (line 40) | public final class UndertowHttpRequest extends HttpRequest {
method UndertowHttpRequest (line 54) | public UndertowHttpRequest(ActorRef<? super HttpResponse> actorRef, Ht...
method getServerExchange (line 60) | public HttpServerExchange getServerExchange() {
method extractHeaders (line 64) | static ImmutableListMultimap<String, String> extractHeaders(HeaderMap ...
method getSourceHost (line 75) | @Override
method getSourcePort (line 81) | @Override
method fillSourceAddress (line 87) | private void fillSourceAddress() {
method getParameters (line 92) | @Override
method getAttributes (line 104) | @Override
method getScheme (line 109) | @Override
method initUri (line 115) | private void initUri() {
method getMethod (line 125) | @Override
method getPathInfo (line 130) | @Override
method getContextPath (line 136) | @Override
method getQueryString (line 141) | @Override
method getRequestURI (line 147) | @Override
method getServerName (line 152) | @Override
method getServerPort (line 157) | @Override
method getFrom (line 162) | @SuppressWarnings("unchecked")
method getHeaders (line 168) | @Override
method getCookies (line 176) | @Override
method getContentLength (line 198) | @Override
method getCharacterEncoding (line 203) | @Override
method getContentType (line 219) | @Override
method getStringBody (line 232) | @Override
method getByteBufferBody (line 242) | @Override
method decodeStringBody (line 253) | private String decodeStringBody() {
FILE: comsat-actors-undertow/src/main/java/co/paralleluniverse/comsat/webactors/undertow/WebActorHandler.java
class WebActorHandler (line 51) | public class WebActorHandler implements HttpHandler {
type ContextProvider (line 59) | public interface ContextProvider {
method get (line 60) | Context get(HttpServerExchange xch);
type Context (line 63) | public interface Context {
method getId (line 64) | String getId();
method getLock (line 65) | ReentrantLock getLock();
method isValid (line 67) | boolean isValid() throws SuspendExecution, InterruptedException;
method invalidate (line 68) | void invalidate() throws SuspendExecution, InterruptedException;
method renew (line 70) | boolean renew();
method restart (line 71) | void restart(HttpServerExchange xch);
method getWebActor (line 73) | ActorRef<? extends WebMessage> getWebActor();
method handlesWithHttp (line 74) | boolean handlesWithHttp(String uri);
method handlesWithWebSocket (line 75) | boolean handlesWithWebSocket(String uri);
type WatchPolicy (line 77) | enum WatchPolicy { DONT_WATCH, DIE, DIE_IF_EXCEPTION_ELSE_RESTART, R...
method watch (line 78) | WatchPolicy watch();
method getAttachments (line 80) | Map<String, Object> getAttachments();
class DefaultContextImpl (line 83) | public static abstract class DefaultContextImpl implements Context {
method DefaultContextImpl (line 96) | public DefaultContextImpl() {
method invalidate (line 100) | @Override
method isValid (line 110) | @Override
method renew (line 118) | @Override
method getAttachments (line 127) | @Override
method getLock (line 132) | @Override
method setValidityMS (line 137) | public void setValidityMS(long validityMS) {
method getValidityMS (line 141) | public final long getValidityMS() {
method WebActorHandler (line 151) | public WebActorHandler(ContextProvider contextProvider) {
method setFallbackHttpHandler (line 155) | public final void setFallbackHttpHandler(HttpHandler httpHandler) {
method handleRequest (line 159) | @Override
method handlingComplete (line 285) | private void handlingComplete(HttpServerExchange xch) throws Exception {
method addActorToContextAndUnlock (line 292) | static void addActorToContextAndUnlock(Context context, ActorImpl acto...
class WebSocketActorAdapter (line 297) | private static final class WebSocketActorAdapter extends FakeActor<Web...
method WebSocketActorAdapter (line 304) | public WebSocketActorAdapter(ActorRef<? super WebMessage> userActor) {
method setChannel (line 312) | final void setChannel(WebSocketChannel channel) {
method onMessage (line 317) | final void onMessage(BufferedBinaryMessage message) {
method onMessage (line 325) | final void onMessage(BufferedTextMessage message) {
method handleLifecycleMessage (line 333) | @Override
method throwIn (line 343) | @Override
method interrupt (line 348) | @Override
method die (line 353) | @Override
method toString (line 370) | @Override
class WebSocketChannelAdapter (line 376) | private static final class WebSocketChannelAdapter implements SendPort...
method send (line 381) | @Override
method send (line 386) | @Override
method send (line 391) | @Override
method trySend (line 396) | @Override
method close (line 405) | @Override
method close (line 418) | @Override
class HttpActorAdapter (line 426) | private static final class HttpActorAdapter extends FakeActor<HttpResp...
method HttpActorAdapter (line 443) | HttpActorAdapter(ActorRef<? super HttpRequest> userActor, Context ac...
method toString (line 456) | @Override
method handleLifecycleMessage (line 462) | @Override
method die (line 469) | @Override
method throwIn (line 475) | @Override
method interrupt (line 481) | @Override
method handleRequest (line 487) | @Suspendable
method handleReply (line 500) | final void handleReply(final HttpResponse message) throws Interrupte...
method handleLifecycle (line 599) | final boolean handleLifecycle(LifecycleMessage l) {
method handleDie (line 617) | @Suspendable
method possiblyReplyDeadAndUnblock (line 646) | private void possiblyReplyDeadAndUnblock(final Throwable cause) {
method notifySSEStarted (line 671) | private void notifySSEStarted(HttpStreamActorAdapter httpStreamActor...
method blockSessionRequests (line 676) | @Suspendable
method unblockSessionRequests (line 692) | @Suspendable
method isRequestInProgress (line 701) | private boolean isRequestInProgress() {
method newUndertowCookie (line 705) | private io.undertow.server.handlers.Cookie newUndertowCookie(Cookie ...
class HttpChannelAdapter (line 718) | private static final class HttpChannelAdapter implements SendPort<Http...
method HttpChannelAdapter (line 721) | HttpChannelAdapter() {}
method send (line 723) | @Override
method send (line 729) | @Override
method send (line 736) | @Override
method trySend (line 742) | @Override
method close (line 753) | @Override
method close (line 759) | @Override
class HttpStreamActorAdapter (line 767) | private static final class HttpStreamActorAdapter extends FakeActor<We...
method HttpStreamActorAdapter (line 772) | HttpStreamActorAdapter(HttpServerExchange xch) {
method handleLifecycleMessage (line 778) | @Override
method throwIn (line 785) | @Override
method interrupt (line 790) | @Override
method die (line 795) | @Override
method toString (line 806) | @Override
method setChannel (line 811) | public final void setChannel(StreamSinkChannel channel) {
class HttpStreamChannelAdapter (line 816) | private static final class HttpStreamChannelAdapter implements SendPor...
method HttpStreamChannelAdapter (line 823) | HttpStreamChannelAdapter(HttpServerExchange xch) {
method setChannel (line 827) | public final void setChannel(StreamSinkChannel channel) {
method send (line 831) | @Override
method send (line 836) | @Override
method send (line 842) | @Override
method trySend (line 847) | @Override
method close (line 864) | @Override
method close (line 871) | @Override
method sendHttpResponse (line 879) | static void sendHttpResponse(HttpServerExchange xch, int statusCode) {
method sendHttpResponse (line 883) | static void sendHttpResponse(HttpServerExchange xch, int statusCode, S...
method sendHttpResponse (line 890) | static void sendHttpResponse(HttpServerExchange xch, int statusCode, B...
method sendHttpRedirect (line 897) | static void sendHttpRedirect(HttpServerExchange xch, String path) {
method handlesWithHttp (line 903) | static boolean handlesWithHttp(String uri, Class<?> actorClass) {
method handlesWithWebSocket (line 907) | static boolean handlesWithWebSocket(String uri, Class<?> actorClass) {
method match (line 911) | private static String match(String uri, Class<?> actorClass) {
method lookupOrInsert (line 921) | private static List<Pair<String, String>> lookupOrInsert(Class<?> acto...
method insert (line 931) | private static List<Pair<String, String>> insert(Class<?> actorClass) {
method addPattern (line 945) | private static void addPattern(List<Pair<String, String>> ret, String ...
method servletMatch (line 955) | private static boolean servletMatch(String pattern, String uri) {
method toBuffer (line 969) | private static ByteBuffer toBuffer(ByteBuffer... payload) {
FILE: comsat-actors-undertow/src/test/java/co/paralleluniverse/comsat/webactors/undertow/HttpRequestWrapperTest.java
class HttpRequestWrapperTest (line 12) | public class HttpRequestWrapperTest {
method httpHeaderCaseInsensitivity (line 14) | @Test
FILE: comsat-actors-undertow/src/test/java/co/paralleluniverse/comsat/webactors/undertow/UndertowWebActor.java
class UndertowWebActor (line 22) | @WebActor(httpUrlPatterns = {"/*"}, webSocketUrlPatterns = {"/ws"})
FILE: comsat-actors-undertow/src/test/java/co/paralleluniverse/comsat/webactors/undertow/WebActorTest.java
class WebActorTest (line 44) | @RunWith(Parameterized.class)
method call (line 51) | @Override
method testDie (line 93) | @Override
method call (line 102) | @Override
method data (line 108) | @Parameterized.Parameters(name = "{0}")
method WebActorTest (line 122) | public WebActorTest(Callable<WebActorHandler> webActorHandlerCreator) {
method setUp (line 126) | @Before
method tearDown (line 143) | @After
method getSessionIdCookieName (line 150) | @Override
FILE: comsat-dropwizard/src/main/java/co/paralleluniverse/fibers/dropwizard/FiberApplication.java
class FiberApplication (line 25) | public abstract class FiberApplication<T extends Configuration> extends ...
method initialize (line 26) | @Override
method run (line 30) | @Override
method fiberRun (line 41) | public abstract void fiberRun(T configuration, Environment environment...
FILE: comsat-dropwizard/src/main/java/co/paralleluniverse/fibers/dropwizard/FiberDBIFactory.java
class FiberDBIFactory (line 26) | public class FiberDBIFactory {
method FiberDBIFactory (line 30) | public FiberDBIFactory(final ExecutorService es) {
method FiberDBIFactory (line 35) | public FiberDBIFactory(final int threadsNum) {
method FiberDBIFactory (line 39) | public FiberDBIFactory() {
method build (line 43) | public IDBI build(Environment environment, DataSourceFactory dsFactory...
method build (line 49) | public IDBI build(Environment environment, DataSourceFactory dsFactory...
FILE: comsat-dropwizard/src/main/java/co/paralleluniverse/fibers/dropwizard/FiberDataSourceFactory.java
class FiberDataSourceFactory (line 23) | public class FiberDataSourceFactory extends DataSourceFactory {
method FiberDataSourceFactory (line 26) | public FiberDataSourceFactory(DataSourceFactory dsf) {
method build (line 30) | @Override
method isAutoCommentsEnabled (line 38) | @Override
method setAutoCommentsEnabled (line 43) | @Override
method getDriverClass (line 48) | @Override
method setDriverClass (line 53) | @Override
method getUser (line 58) | @Override
method setUser (line 63) | @Override
method getPassword (line 68) | @Override
method setPassword (line 73) | @Override
method getUrl (line 78) | @Override
method setUrl (line 83) | @Override
method getProperties (line 88) | @Override
method setProperties (line 93) | @Override
method getMaxWaitForConnection (line 98) | @Override
method setMaxWaitForConnection (line 103) | @Override
method getValidationQuery (line 108) | @Override
method setValidationQuery (line 113) | @Override
method getMinSize (line 118) | @Override
method setMinSize (line 123) | @Override
method getMaxSize (line 128) | @Override
method setMaxSize (line 133) | @Override
method getCheckConnectionWhileIdle (line 138) | @Override
method setCheckConnectionWhileIdle (line 143) | @Override
method isDefaultReadOnly (line 148) | @Override
method setDefaultReadOnly (line 153) | @Override
method isMinSizeLessThanMaxSize (line 158) | @Override
method isInitialSizeLessThanMaxSize (line 163) | @Override
method isInitialSizeGreaterThanMinSize (line 168) | @Override
method getAbandonWhenPercentageFull (line 173) | @Override
method setAbandonWhenPercentageFull (line 178) | @Override
method isAlternateUsernamesAllowed (line 183) | @Override
method setAlternateUsernamesAllowed (line 188) | @Override
method getCommitOnReturn (line 193) | @Override
method setCommitOnReturn (line 198) | @Override
method getAutoCommitByDefault (line 203) | @Override
method setAutoCommitByDefault (line 208) | @Override
method getDefaultCatalog (line 213) | @Override
method setDefaultCatalog (line 218) | @Override
method getReadOnlyByDefault (line 223) | @Override
method setReadOnlyByDefault (line 228) | @Override
method getDefaultTransactionIsolation (line 233) | @Override
method setDefaultTransactionIsolation (line 238) | @Override
method getUseFairQueue (line 243) | @Override
method setUseFairQueue (line 248) | @Override
method getInitialSize (line 253) | @Override
method setInitialSize (line 258) | @Override
method getInitializationQuery (line 263) | @Override
method setInitializationQuery (line 268) | @Override
method getLogAbandonedConnections (line 273) | @Override
method setLogAbandonedConnections (line 278) | @Override
method getLogValidationErrors (line 283) | @Override
method setLogValidationErrors (line 288) | @Override
method getMaxConnectionAge (line 293) | @Override
method setMaxConnectionAge (line 298) | @Override
method getMinIdleTime (line 303) | @Override
method setMinIdleTime (line 308) | @Override
method getCheckConnectionOnBorrow (line 313) | @Override
method setCheckConnectionOnBorrow (line 318) | @Override
method getCheckConnectionOnConnect (line 323) | @Override
method setCheckConnectionOnConnect (line 328) | @Override
method getCheckConnectionOnReturn (line 333) | @Override
method setCheckConnectionOnReturn (line 338) | @Override
method getEvictionInterval (line 343) | @Override
method setEvictionInterval (line 348) | @Override
method getValidationInterval (line 353) | @Override
method setValidationInterval (line 358) | @Override
FILE: comsat-dropwizard/src/main/java/co/paralleluniverse/fibers/dropwizard/FiberHttpClientBuilder.java
class FiberHttpClientBuilder (line 62) | public class FiberHttpClientBuilder {
method FiberHttpClientBuilder (line 70) | public FiberHttpClientBuilder(MetricRegistry metricRegistry) {
method FiberHttpClientBuilder (line 74) | public FiberHttpClientBuilder(Environment environment) {
method using (line 84) | public FiberHttpClientBuilder using(HttpClientConfiguration configurat...
method using (line 95) | public FiberHttpClientBuilder using(DnsResolver resolver) {
method using (line 106) | public FiberHttpClientBuilder using(HttpRequestRetryHandler httpReques...
method using (line 117) | public FiberHttpClientBuilder using(SchemeRegistry registry) {
method build (line 127) | public HttpClient build(String name) {
method setStrategiesForClient (line 145) | protected void setStrategiesForClient(HttpAsyncClientBuilder client) {
method getRetryHandler (line 165) | private HttpRequestRetryHandler getRetryHandler() {
method createHttpParams (line 176) | protected RequestConfig createHttpParams() {
method createConnectionManager (line 195) | protected NHttpClientConnectionManager createConnectionManager(SchemeR...
method createDefaultIOReactor (line 216) | private static ConnectingIOReactor createDefaultIOReactor(final IOReac...
method convertRegistry (line 224) | private static Registry<SchemeIOSessionStrategy> convertRegistry(final...
FILE: comsat-dropwizard/src/main/java/co/paralleluniverse/fibers/dropwizard/FiberManagedDataSource.java
class FiberManagedDataSource (line 24) | public class FiberManagedDataSource extends FiberDataSource implements M...
method wrap (line 27) | public static ManagedDataSource wrap(ManagedDataSource ds, int numThre...
method wrap (line 31) | public static ManagedDataSource wrap(ManagedDataSource ds, ExecutorSer...
method FiberManagedDataSource (line 35) | protected FiberManagedDataSource(ManagedDataSource ds, ListeningExecut...
method start (line 40) | @Override
method stop (line 45) | @Override
FILE: comsat-dropwizard/src/main/java/co/paralleluniverse/fibers/dropwizard/FiberServletContainer.java
class FiberServletContainer (line 39) | public class FiberServletContainer extends FiberHttpServlet implements F...
method FiberServletContainer (line 46) | public FiberServletContainer() {
method FiberServletContainer (line 55) | public FiberServletContainer(ResourceConfig resourceConfig) {
method FiberServletContainer (line 64) | public FiberServletContainer(ServletContainer sc) {
method init (line 68) | @Override
method getServletContext (line 81) | @Override
method service (line 86) | @Override
method destroy (line 93) | @Override
method init (line 98) | @Override
method init (line 103) | @Override
method doFilter (line 108) | @Override
method doFilter (line 113) | public void doFilter(HttpServletRequest request, HttpServletResponse r...
method getInitParameter (line 117) | @Override
method getInitParameterNames (line 122) | @Override
method getServletInfo (line 127) | @Override
method log (line 132) | @Override
method log (line 137) | @Override
method getServletName (line 142) | @Override
method hashCode (line 147) | @Override
method equals (line 152) | @Override
method toString (line 157) | @Override
FILE: comsat-dropwizard/src/main/java/co/paralleluniverse/fibers/dropwizard/InstrumentedNClientConnManager.java
class InstrumentedNClientConnManager (line 30) | public class InstrumentedNClientConnManager extends PoolingNHttpClientCo...
method InstrumentedNClientConnManager (line 32) | public InstrumentedNClientConnManager(final ConnectingIOReactor ioreac...
FILE: comsat-dropwizard/src/main/java/co/paralleluniverse/fibers/dropwizard/InstrumentedNHttpClientBuilder.java
class InstrumentedNHttpClientBuilder (line 31) | public class InstrumentedNHttpClientBuilder extends HttpAsyncClientBuild...
method InstrumentedNHttpClientBuilder (line 36) | public InstrumentedNHttpClientBuilder(MetricRegistry metricRegistry, H...
method InstrumentedNHttpClientBuilder (line 43) | public InstrumentedNHttpClientBuilder(MetricRegistry metricRegistry, S...
method timer (line 47) | private Timer timer(HttpRequest request) {
method build (line 51) | @Override
FILE: comsat-dropwizard/src/test/java/co/paralleluniverse/fibers/dropwizard/FiberDropwizardTest.java
class FiberDropwizardTest (line 30) | public class FiberDropwizardTest {
method setUpClass (line 34) | @BeforeClass
method setUp (line 51) | @Before
method tearDown (line 58) | @After
method testGet (line 63) | @Test
method testHttp (line 69) | @Test
method testFluentAPI (line 75) | @Test
method testDao (line 81) | @Test
method waitUrlAvailable (line 88) | public static void waitUrlAvailable(final String url) throws Interrupt...
FILE: comsat-dropwizard/src/test/java/co/paralleluniverse/fibers/dropwizard/MyDropwizardApp.java
class MyDropwizardApp (line 48) | @Singleton
method fiberRun (line 57) | @Override
class MyConfig (line 67) | public static class MyConfig extends Configuration {
method getHttpClientConfiguration (line 73) | @JsonProperty
method getDB (line 83) | public DataSourceFactory getDB() {
class Saying (line 88) | public static class Saying {
method Saying (line 94) | public Saying() {
method Saying (line 97) | public Saying(long id, String content) {
method getId (line 102) | @JsonProperty
method getContent (line 107) | @JsonProperty
type MyDAO (line 113) | @Suspendable
method createSomethingTable (line 115) | @SqlUpdate("create table if not exists something (id int primary key...
method dropSomethingTable (line 118) | @SqlUpdate("drop table something")
method insert (line 121) | @SqlUpdate("insert into something (id, name) values (:id, :name)")
method findNameById (line 124) | @SqlQuery("select name from something where id = :id")
method get (line 130) | @GET
method http (line 138) | @GET
method fluentAPI (line 145) | @GET
method dao (line 160) | @GET
FILE: comsat-httpclient/src/main/java/co/paralleluniverse/fibers/httpasyncclient/FiberCloseableHttpAsyncClient.java
class FiberCloseableHttpAsyncClient (line 29) | public class FiberCloseableHttpAsyncClient extends CloseableHttpAsyncCli...
method FiberCloseableHttpAsyncClient (line 32) | private FiberCloseableHttpAsyncClient(CloseableHttpAsyncClient client) {
method wrap (line 36) | public static CloseableHttpAsyncClient wrap(CloseableHttpAsyncClient c...
method isRunning (line 40) | @Override
method start (line 45) | @Override
method execute (line 50) | @Override
method execute (line 57) | @Override
method execute (line 64) | @Override
method execute (line 71) | @Override
method execute (line 78) | @Override
method close (line 85) | @Override
method execute (line 90) | @Override
method wrapCallbackWithFuture (line 97) | private static <T> FutureCallback<T> wrapCallbackWithFuture(final Sett...
FILE: comsat-httpclient/src/main/java/co/paralleluniverse/fibers/httpclient/AsyncHttpReq.java
class AsyncHttpReq (line 22) | abstract class AsyncHttpReq extends FiberAsync<HttpResponse, IOException...
method run (line 23) | @Override
method completed (line 32) | @Override
method failed (line 37) | @Override
method cancelled (line 42) | @Override
FILE: comsat-httpclient/src/main/java/co/paralleluniverse/fibers/httpclient/DelegatingHttpResponse.java
class DelegatingHttpResponse (line 29) | class DelegatingHttpResponse implements HttpResponse {
method DelegatingHttpResponse (line 32) | public DelegatingHttpResponse(HttpResponse response) {
method getStatusLine (line 36) | @Override
method setStatusLine (line 41) | @Override
method setStatusLine (line 46) | @Override
method setStatusLine (line 51) | @Override
method setStatusCode (line 56) | @Override
method setReasonPhrase (line 61) | @Override
method getEntity (line 66) | @Override
method setEntity (line 71) | @Override
method getLocale (line 76) | @Override
method setLocale (line 81) | @Override
method getProtocolVersion (line 86) | @Override
method containsHeader (line 91) | @Override
method getHeaders (line 96) | @Override
method getFirstHeader (line 101) | @Override
method getLastHeader (line 106) | @Override
method getAllHeaders (line 111) | @Override
method addHeader (line 116) | @Override
method addHeader (line 121) | @Override
method setHeader (line 126) | @Override
method setHeader (line 131) | @Override
method setHeaders (line 136) | @Override
method removeHeader (line 141) | @Override
method removeHeaders (line 146) | @Override
method headerIterator (line 151) | @Override
method headerIterator (line 156) | @Override
method getParams (line 161) | @Override
method setParams (line 166) | @Override
method hashCode (line 171) | @Override
method equals (line 176) | @Override
method toString (line 181) | @Override
FILE: comsat-httpclient/src/main/java/co/paralleluniverse/fibers/httpclient/FiberHttpClient.java
class FiberHttpClient (line 47) | public class FiberHttpClient extends CloseableHttpClient {
method FiberHttpClient (line 54) | public FiberHttpClient(CloseableHttpAsyncClient client) {
method FiberHttpClient (line 58) | public FiberHttpClient(CloseableHttpAsyncClient client, IOReactor iore...
method FiberHttpClient (line 62) | public FiberHttpClient(CloseableHttpAsyncClient client, HttpRequestRet...
method FiberHttpClient (line 66) | public FiberHttpClient(CloseableHttpAsyncClient client, HttpRequestRet...
method getParams (line 75) | @Override
method getConnectionManager (line 80) | @Override
method doExecute (line 85) | @Override
class CloseableHttpResponseWrapper (line 138) | private static class CloseableHttpResponseWrapper extends DelegatingHt...
method CloseableHttpResponseWrapper (line 139) | public CloseableHttpResponseWrapper(HttpResponse response) {
method close (line 143) | @Override
method close (line 150) | @Override
method execute (line 158) | @Override
method execute (line 167) | @Override
method execute (line 177) | @Override
method execute (line 187) | @Override
method execute (line 196) | @Override
method execute (line 205) | @Override
method execute (line 214) | @Override
method execute (line 223) | @Override
method determineTarget (line 256) | private static HttpHost determineTarget(final HttpUriRequest request) ...
FILE: comsat-httpclient/src/main/java/co/paralleluniverse/fibers/httpclient/FiberHttpClientBuilder.java
class FiberHttpClientBuilder (line 51) | public class FiberHttpClientBuilder {
method FiberHttpClientBuilder (line 55) | protected FiberHttpClientBuilder(HttpAsyncClientBuilder builder) {
method create (line 63) | public static FiberHttpClientBuilder create() {
method create (line 71) | public static FiberHttpClientBuilder create(int ioThreadCount) {
method setConnectionManager (line 77) | public final FiberHttpClientBuilder setConnectionManager(NHttpClientCo...
method setIOReactor (line 82) | public final FiberHttpClientBuilder setIOReactor(IOReactor ioreactor) {
method setSchemePortResolver (line 87) | public final FiberHttpClientBuilder setSchemePortResolver(SchemePortRe...
method setMaxConnTotal (line 92) | public final FiberHttpClientBuilder setMaxConnTotal(int maxConnTotal) {
method setMaxConnPerRoute (line 97) | public final FiberHttpClientBuilder setMaxConnPerRoute(int maxConnPerR...
method setConnectionReuseStrategy (line 102) | public final FiberHttpClientBuilder setConnectionReuseStrategy(Connect...
method setKeepAliveStrategy (line 107) | public final FiberHttpClientBuilder setKeepAliveStrategy(ConnectionKee...
method setUserTokenHandler (line 112) | public final FiberHttpClientBuilder setUserTokenHandler(UserTokenHandl...
method setTargetAuthenticationStrategy (line 117) | public final FiberHttpClientBuilder setTargetAuthenticationStrategy(Au...
method setProxyAuthenticationStrategy (line 122) | public final FiberHttpClientBuilder setProxyAuthenticationStrategy(Aut...
method setHttpProcessor (line 127) | public final FiberHttpClientBuilder setHttpProcessor(HttpProcessor htt...
method addInterceptorFirst (line 132) | public final FiberHttpClientBuilder addInterceptorFirst(HttpResponseIn...
method addInterceptorLast (line 137) | public final FiberHttpClientBuilder addInterceptorLast(HttpResponseInt...
method addInterceptorFirst (line 142) | public final FiberHttpClientBuilder addInterceptorFirst(HttpRequestInt...
method addInterceptorLast (line 147) | public final FiberHttpClientBuilder addInterceptorLast(HttpRequestInte...
method setRoutePlanner (line 152) | public final FiberHttpClientBuilder setRoutePlanner(HttpRoutePlanner r...
method setRedirectStrategy (line 157) | public final FiberHttpClientBuilder setRedirectStrategy(RedirectStrate...
method setDefaultCookieStore (line 162) | public final FiberHttpClientBuilder setDefaultCookieStore(CookieStore ...
method setDefaultCredentialsProvider (line 167) | public final FiberHttpClientBuilder setDefaultCredentialsProvider(Cred...
method setDefaultAuthSchemeRegistry (line 172) | public final FiberHttpClientBuilder setDefaultAuthSchemeRegistry(Looku...
method setDefaultCookieSpecRegistry (line 177) | public final FiberHttpClientBuilder setDefaultCookieSpecRegistry(Looku...
method setUserAgent (line 182) | public final FiberHttpClientBuilder setUserAgent(String userAgent) {
method setProxy (line 187) | public final FiberHttpClientBuilder setProxy(HttpHost proxy) {
method setSSLStrategy (line 192) | public final FiberHttpClientBuilder setSSLStrategy(SchemeIOSessionStra...
method setSSLContext (line 197) | public final FiberHttpClientBuilder setSSLContext(SSLContext sslcontex...
method setHostnameVerifier (line 202) | public final FiberHttpClientBuilder setHostnameVerifier(X509HostnameVe...
method setDefaultHeaders (line 207) | public final FiberHttpClientBuilder setDefaultHeaders(Collection<? ext...
method setDefaultConnectionConfig (line 216) | public final FiberHttpClientBuilder setDefaultConnectionConfig(Connect...
method setDefaultRequestConfig (line 221) | public final FiberHttpClientBuilder setDefaultRequestConfig(RequestCon...
method disableConnectionState (line 230) | public final FiberHttpClientBuilder disableConnectionState() {
method disableCookieManagement (line 235) | public final FiberHttpClientBuilder disableCookieManagement() {
method disableAuthCaching (line 240) | public final FiberHttpClientBuilder disableAuthCaching() {
method useSystemProperties (line 245) | public final FiberHttpClientBuilder useSystemProperties() {
method build (line 250) | public FiberHttpClient build() {
FILE: comsat-httpclient/src/test/java/co/paralleluniverse/fibers/httpasyncclient/FiberHttpAsyncClientTest.java
class FiberHttpAsyncClientTest (line 47) | @RunWith(Parameterized.class)
method data (line 50) | @Parameterized.Parameters(name = "{0}")
method FiberHttpAsyncClientTest (line 58) | public FiberHttpAsyncClientTest(Class<? extends EmbeddedServer> cls) {
method setUp (line 62) | @Before
method tearDown (line 69) | @After
method testAsync (line 74) | @Test
class TestServlet (line 104) | public static class TestServlet extends HttpServlet {
method doGet (line 105) | @Override
FILE: comsat-httpclient/src/test/java/co/paralleluniverse/fibers/httpclient/FiberHttpClientBuilderTest.java
class FiberHttpClientBuilderTest (line 41) | @RunWith(Parameterized.class)
method data (line 44) | @Parameterized.Parameters(name = "{0}")
method FiberHttpClientBuilderTest (line 52) | public FiberHttpClientBuilderTest(Class<? extends EmbeddedServer> cls) {
method setUp (line 56) | @Before
method tearDown (line 63) | @After
method testConcurrency (line 68) | @Test
class TestServlet (line 99) | public static class TestServlet extends HttpServlet {
method doGet (line 100) | @Override
FILE: comsat-jax-rs-client/src/main/java/co/paralleluniverse/fibers/ws/rs/client/AsyncClientBuilder.java
class AsyncClientBuilder (line 34) | public class AsyncClientBuilder extends ClientBuilder {
method AsyncClientBuilder (line 37) | protected AsyncClientBuilder(ClientBuilder clientBuilder) {
method newBuilder (line 47) | public static ClientBuilder newBuilder() {
method newClient (line 57) | public static Client newClient() {
method newClient (line 68) | public static Client newClient(Configuration configuration) {
method addDefaultConfigurations (line 72) | private static ClientConfig addDefaultConfigurations(Configuration con...
method build (line 98) | @Override
method withConfig (line 103) | @Override
method sslContext (line 109) | @Override
method keyStore (line 115) | @Override
method keyStore (line 121) | @Override
method trustStore (line 127) | @Override
method hostnameVerifier (line 133) | @Override
method property (line 139) | @Override
method register (line 145) | @Override
method register (line 151) | @Override
method register (line 157) | @Override
method register (line 163) | @Override
method register (line 169) | @Override
method register (line 175) | @Override
method register (line 181) | @Override
method register (line 187) | @Override
method getConfiguration (line 193) | @Override
method hashCode (line 198) | @Override
method equals (line 203) | @Override
method toString (line 208) | @Override
FILE: comsat-jax-rs-client/src/main/java/co/paralleluniverse/fibers/ws/rs/client/AsyncRs.java
class AsyncRs (line 20) | abstract class AsyncRs<ResponseType> extends FiberAsync<ResponseType, Ru...
method run (line 21) | @Override
method completed (line 31) | @Override
method failed (line 36) | @Override
FILE: comsat-jax-rs-client/src/main/java/co/paralleluniverse/fibers/ws/rs/client/FiberBuilder.java
class FiberBuilder (line 30) | class FiberBuilder implements Invocation.Builder {
method FiberBuilder (line 40) | public FiberBuilder(Builder builder) {
method build (line 45) | @Override
method build (line 50) | @Override
method buildGet (line 55) | @Override
method buildDelete (line 60) | @Override
method buildPost (line 65) | @Override
method buildPut (line 70) | @Override
method accept (line 76) | @Override
method accept (line 82) | @Override
method acceptLanguage (line 88) | @Override
method acceptLanguage (line 94) | @Override
method acceptEncoding (line 100) | @Override
method cookie (line 106) | @Override
method cookie (line 112) | @Override
method cacheControl (line 118) | @Override
method header (line 124) | @Override
method headers (line 130) | @Override
method property (line 136) | @Override
method get (line 143) | @Override
method get (line 149) | @Override
method get (line 155) | @Override
method put (line 161) | @Override
method put (line 167) | @Override
method put (line 173) | @Override
method post (line 179) | @Override
method post (line 185) | @Override
method post (line 191) | @Override
method delete (line 197) | @Override
method delete (line 203) | @Override
method delete (line 209) | @Override
method head (line 215) | @Override
method options (line 221) | @Override
method options (line 227) | @Override
method options (line 233) | @Override
method trace (line 239) | @Override
method trace (line 245) | @Override
method trace (line 251) | @Override
method method (line 257) | @Override
method method (line 272) | @Override
method method (line 287) | @Override
method method (line 293) | @Override
method method (line 308) | @Override
method method (line 323) | @Override
method async (line 339) | @Override
method hashCode (line 344) | @Override
method equals (line 349) | @Override
method toString (line 354) | @Override
FILE: comsat-jax-rs-client/src/main/java/co/paralleluniverse/fibers/ws/rs/client/FiberClient.java
class FiberClient (line 27) | class FiberClient implements Client {
method FiberClient (line 30) | public FiberClient(Client client) {
method target (line 36) | @Override
method target (line 41) | @Override
method target (line 46) | @Override
method target (line 51) | @Override
method invocation (line 57) | @Override
method property (line 63) | @Override
method register (line 69) | @Override
method register (line 75) | @Override
method register (line 81) | @Override
method register (line 87) | @Override
method register (line 93) | @Override
method register (line 99) | @Override
method register (line 105) | @Override
method register (line 111) | @Override
method getSslContext (line 118) | @Override
method getHostnameVerifier (line 123) | @Override
method getConfiguration (line 128) | @Override
method close (line 133) | @Override
method hashCode (line 138) | @Override
method equals (line 143) | @Override
method toString (line 148) | @Override
FILE: comsat-jax-rs-client/src/main/java/co/paralleluniverse/fibers/ws/rs/client/FiberInvocation.java
class FiberInvocation (line 25) | class FiberInvocation implements Invocation {
method FiberInvocation (line 28) | public FiberInvocation(Invocation invocation) {
method property (line 32) | @Override
method invoke (line 38) | @Override
method invoke (line 53) | @Override
method invoke (line 68) | @Override
method submit (line 83) | @Override
method submit (line 101) | @Override
method submit (line 119) | @Override
method submit (line 137) | @Override
method hashCode (line 157) | @Override
method equals (line 162) | @Override
method toString (line 167) | @Override
FILE: comsat-jax-rs-client/src/main/java/co/paralleluniverse/fibers/ws/rs/client/FiberWebTarget.java
class FiberWebTarget (line 24) | class FiberWebTarget implements WebTarget {
method FiberWebTarget (line 27) | public FiberWebTarget(WebTarget webTarget) {
method wrap (line 31) | private static Builder wrap(Builder builder) {
method wrap (line 35) | private WebTarget wrap(WebTarget webTarget) {
method request (line 41) | @Override
method request (line 46) | @Override
method request (line 51) | @Override
method path (line 56) | @Override
method resolveTemplate (line 61) | @Override
method resolveTemplate (line 66) | @Override
method resolveTemplateFromEncoded (line 71) | @Override
method resolveTemplates (line 76) | @Override
method resolveTemplates (line 81) | @Override
method resolveTemplatesFromEncoded (line 86) | @Override
method matrixParam (line 91) | @Override
method queryParam (line 96) | @Override
method property (line 101) | @Override
method register (line 107) | @Override
method register (line 113) | @Override
method register (line 119) | @Override
method register (line 125) | @Override
method register (line 131) | @Override
method register (line 137) | @Override
method register (line 143) | @Override
method register (line 149) | @Override
method getUri (line 156) | @Override
method getUriBuilder (line 161) | @Override
method getConfiguration (line 166) | @Override
method hashCode (line 171) | @Override
method equals (line 176) | @Override
method toString (line 181) | @Override
FILE: comsat-jax-rs-client/src/test/java/co/paralleluniverse/fibers/ws/rs/client/AsyncClientBuilderTest.java
class AsyncClientBuilderTest (line 41) | @RunWith(Parameterized.class)
method data (line 44) | @Parameterized.Parameters(name = "{0}")
method AsyncClientBuilderTest (line 52) | public AsyncClientBuilderTest(Class<? extends EmbeddedServer> cls) {
method setUp (line 56) | @Before
method tearDown (line 63) | @After
method testConcurrency (line 68) | @Test
class TestServlet (line 93) | public static class TestServlet extends HttpServlet {
method doGet (line 94) | @Override
FILE: comsat-jdbc/src/main/java/co/paralleluniverse/fibers/jdbc/FiberArray.java
class FiberArray (line 27) | public class FiberArray implements Array {
method FiberArray (line 31) | public FiberArray(final Array array, final ExecutorService executor) {
method getBaseTypeName (line 36) | @Override
method getBaseType (line 47) | @Override
method getArray (line 58) | @Override
method getArray (line 69) | @Override
method getArray (line 80) | @Override
method getArray (line 91) | @Override
method getResultSet (line 102) | @Override
method getResultSet (line 114) | @Override
method getResultSet (line 127) | @Override
method getResultSet (line 139) | @Override
method free (line 151) | @Override
method hashCode (line 163) | @Override
method equals (line 168) | @SuppressWarnings("EqualsWhichDoesntCheckParameterClass")
method toString (line 174) | @Override
FILE: comsat-jdbc/src/main/java/co/paralleluniverse/fibers/jdbc/FiberBlob.java
class FiberBlob (line 27) | public class FiberBlob implements Blob {
method FiberBlob (line 31) | public FiberBlob(final Blob blob, final ExecutorService executor) {
method getBytes (line 36) | @Override
method getBinaryStream (line 47) | @Override
method position (line 58) | @Override
method position (line 69) | @Override
method setBytes (line 80) | @Override
method setBytes (line 91) | @Override
method setBinaryStream (line 102) | @Override
method getBinaryStream (line 113) | @Override
method length (line 124) | @Override
method truncate (line 135) | @Override
method free (line 147) | @Override
method hashCode (line 159) | @Override
method equals (line 164) | @SuppressWarnings("EqualsWhichDoesntCheckParameterClass")
method toString (line 170) | @Override
FILE: comsat-jdbc/src/main/java/co/paralleluniverse/fibers/jdbc/FiberCallableStatement.java
class FiberCallableStatement (line 41) | public class FiberCallableStatement extends FiberPreparedStatement imple...
method FiberCallableStatement (line 42) | public FiberCallableStatement(final CallableStatement cs, final Execut...
method stmt (line 46) | @Override
method registerOutParameter (line 52) | @Override
method registerOutParameter (line 64) | @Override
method wasNull (line 76) | @Override
method getString (line 87) | @Override
method getBoolean (line 98) | @Override
method getByte (line 109) | @Override
method getShort (line 120) | @Override
method getInt (line 131) | @Override
method getLong (line 142) | @Override
method getFloat (line 153) | @Override
method getDouble (line 164) | @Override
method getBigDecimal (line 175) | @Override
method getBytes (line 186) | @Override
method getDate (line 197) | @Override
method getTime (line 208) | @Override
method getTimestamp (line 219) | @Override
method getObject (line 230) | @Override
method getBigDecimal (line 241) | @Override
method getObject (line 252) | @Override
method getRef (line 263) | @Override
method getBlob (line 275) | @Override
method getClob (line 287) | @Override
method getArray (line 299) | @Override
method getDate (line 311) | @Override
method getTime (line 322) | @Override
method getTimestamp (line 333) | @Override
method registerOutParameter (line 344) | @Override
method registerOutParameter (line 356) | @Override
method registerOutParameter (line 368) | @Override
method registerOutParameter (line 380) | @Override
method getURL (line 392) | @Override
method setURL (line 403) | @Override
method setNull (line 415) | @Override
method setBoolean (line 427) | @Override
method setByte (line 439) | @Override
method setShort (line 451) | @Override
method setInt (line 463) | @Override
method setLong (line 475) | @Override
method setFloat (line 487) | @Override
method setDouble (line 499) | @Override
method setBigDecimal (line 511) | @Override
method setString (line 523) | @Override
method setBytes (line 535) | @Override
method setDate (line 547) | @Override
method setTime (line 559) | @Override
method setTimestamp (line 571) | @Override
method setAsciiStream (line 583) | @Override
method setBinaryStream (line 595) | @Override
method setObject (line 607) | @Override
method setObject (line 619) | @Override
method setObject (line 631) | @Override
method setCharacterStream (line 643) | @Override
method setDate (line 655) | @Override
method setTime (line 667) | @Override
method setTimestamp (line 679) | @Override
method setNull (line 691) | @Override
method getString (line 703) | @Override
method getBoolean (line 714) | @Override
method getByte (line 725) | @Override
method getShort (line 736) | @Override
method getInt (line 747) | @Override
method getLong (line 758) | @Override
method getFloat (line 769) | @Override
method getDouble (line 780) | @Override
method getBytes (line 791) | @Override
method getDate (line 802) | @Override
method getTime (line 813) | @Override
method getTimestamp (line 824) | @Override
method getObject (line 835) | @Override
method getBigDecimal (line 846) | @Override
method getObject (line 857) | @Override
method getRef (line 868) | @Override
method getBlob (line 880) | @Override
method getClob (line 892) | @Override
method getArray (line 904) | @Override
method getDate (line 916) | @Override
method getTime (line 927) | @Override
method getTimestamp (line 938) | @Override
method getURL (line 949) | @Override
method getRowId (line 960) | @Override
method getRowId (line 971) | @Override
method getNClob (line 982) | @Override
method getNClob (line 994) | @Override
method getSQLXML (line 1006) | @Override
method getSQLXML (line 1018) | @Override
method getNString (line 1030) | @Override
method getNString (line 1041) | @Override
method getNCharacterStream (line 1052) | @Override
method getNCharacterStream (line 1063) | @Override
method getCharacterStream (line 1074) | @Override
method getCharacterStream (line 1085) | @Override
method getObject (line 1096) | @Override
method getObject (line 1107) | @Override
method setRowId (line 1118) | @Override
method setNString (line 1130) | @Override
method setNCharacterStream (line 1142) | @Override
method setNClob (line 1154) | @Override
method setClob (line 1166) | @Override
method setBlob (line 1178) | @Override
method setNClob (line 1190) | @Override
method setSQLXML (line 1202) | @Override
method setBlob (line 1214) | @Override
method setClob (line 1226) | @Override
method setAsciiStream (line 1238) | @Override
method setBinaryStream (line 1250) | @Override
method setAsciiStream (line 1262) | @Override
method setBinaryStream (line 1274) | @Override
method setCharacterStream (line 1286) | @Override
method setNCharacterStream (line 1298) | @Override
method setClob (line 1310) | @Override
method setBlob (line 1322) | @Override
method setNClob (line 1334) | @Override
method setURL (line 1346) | @Override
method setNull (line 1358) | @Override
method setBoolean (line 1370) | @Override
method setByte (line 1382) | @Override
method setShort (line 1394) | @Override
method setInt (line 1406) | @Override
method setLong (line 1418) | @Override
method setFloat (line 1430) | @Override
method setDouble (line 1442) | @Override
method setBigDecimal (line 1454) | @Override
method setString (line 1466) | @Override
method setBytes (line 1478) | @Override
method setDate (line 1490) | @Override
method setTime (line 1502) | @Override
method setTimestamp (line 1514) | @Override
method setAsciiStream (line 1526) | @Override
method setBinaryStream (line 1538) | @Override
method setObject (line 1550) | @Override
method setObject (line 1562) | @Override
method setObject (line 1574) | @Override
method setCharacterStream (line 1586) | @Override
method setDate (line 1598) | @Override
method setTime (line 1610) | @Override
method setTimestamp (line 1622) | @Override
method setNull (line 1634) | @Override
method setRowId (line 1646) | @Override
method setNString (line 1658) | @Override
method setNCharacterStream (line 1670) | @Override
method setNClob (line 1682) | @Override
method setClob (line 1694) | @Override
method setBlob (line 1706) | @Override
method setNClob (line 1718) | @Override
method setSQLXML (line 1730) | @Override
method setBlob (line 1742) | @Override
method setClob (line 1754) | @Override
method setAsciiStream (line 1766) | @Override
method setBinaryStream (line 1778) | @Override
method setCharacterStream (line 1790) | @Override
method setAsciiStream (line 1802) | @Override
method setBinaryStream (line 1814) | @Override
method setCharacterStream (line 1826) | @Override
method setNCharacterStream (line 1838) | @Override
method setClob (line 1850) | @Override
method setBlob (line 1862) | @Override
method setNClob (line 1874) | @Override
method hashCode (line 1886) | @Override
method equals (line 1891) | @SuppressWarnings("EqualsWhichDoesntCheckParameterClass")
method toString (line 1897) | @Override
FILE: comsat-jdbc/src/main/java/co/paralleluniverse/fibers/jdbc/FiberClob.java
class FiberClob (line 29) | public class FiberClob implements Clob {
method FiberClob (line 33) | public FiberClob(final Clob clob, final ExecutorService executor) {
method length (line 38) | @Override
method getSubString (line 49) | @Override
method getCharacterStream (line 60) | @Override
method getAsciiStream (line 71) | @Override
method position (line 82) | @Override
method position (line 93) | @Override
method setString (line 104) | @Override
method setString (line 115) | @Override
method setAsciiStream (line 126) | @Override
method setCharacterStream (line 137) | @Override
method truncate (line 148) | @Override
method free (line 160) | @Override
method getCharacterStream (line 172) | @Override
method hashCode (line 183) | @Override
method equals (line 188) | @SuppressWarnings("EqualsWhichDoesntCheckParameterClass")
method toString (line 194) | @Override
FILE: comsat-jdbc/src/main/java/co/paralleluniverse/fibers/jdbc/FiberConnection.java
class FiberConnection (line 41) | public class FiberConnection implements Connection {
method FiberConnection (line 45) | FiberConnection(final Connection conn, final ExecutorService exec) {
method createStatement (line 50) | @Override
method prepareStatement (line 62) | @Override
method prepareStatement (line 74) | @Override
method prepareStatement (line 86) | @Override
method prepareStatement (line 98) | @Override
method prepareStatement (line 110) | @Override
method prepareCall (line 122) | @Override
method prepareCall (line 134) | @Override
method prepareCall (line 146) | @Override
method nativeSQL (line 158) | @Override
method setAutoCommit (line 169) | @Override
method getAutoCommit (line 181) | @Override
method commit (line 192) | @Override
method rollback (line 204) | @Override
method close (line 216) | @Override
method isClosed (line 228) | @Override
method getMetaData (line 239) | @Override
method setReadOnly (line 251) | @Override
method isReadOnly (line 263) | @Override
method setCatalog (line 274) | @Override
method getCatalog (line 286) | @Override
method setTransactionIsolation (line 297) | @Override
method getTransactionIsolation (line 309) | @Override
method getWarnings (line 320) | @Override
method clearWarnings (line 331) | @Override
method createStatement (line 343) | @Override
method prepareStatement (line 355) | @Override
method getTypeMap (line 367) | @Override
method setTypeMap (line 378) | @Override
method setHoldability (line 390) | @Override
method getHoldability (line 402) | @Override
method setSavepoint (line 413) | @Override
method setSavepoint (line 425) | @Override
method rollback (line 437) | @Override
method releaseSavepoint (line 449) | @Override
method createStatement (line 461) | @Override
method createClob (line 473) | @Override
method createBlob (line 485) | @Override
method createNClob (line 497) | @Override
method createSQLXML (line 509) | @Override
method isValid (line 521) | @Override
method setClientInfo (line 532) | @Override
method setClientInfo (line 544) | @Override
method getClientInfo (line 556) | @Override
method getClientInfo (line 567) | @Override
method createArrayOf (line 578) | @Override
method createStruct (line 590) | @Override
method setSchema (line 602) | @Override
method getSchema (line 614) | @Override
method abort (line 625) | @Override
method setNetworkTimeout (line 637) | @Override
method getNetworkTimeout (line 649) | @Override
method unwrap (line 660) | @Override
method isWrapperFor (line 665) | @Override
method hashCode (line 670) | @Override
method equals (line 675) | @SuppressWarnings("EqualsWhichDoesntCheckParameterClass")
method toString (line 681) | @Override
FILE: comsat-jdbc/src/main/java/co/paralleluniverse/fibers/jdbc/FiberDataSource.java
class FiberDataSource (line 35) | public class FiberDataSource implements DataSource {
method wrap (line 45) | public static DataSource wrap(final DataSource ds, final ExecutorServi...
method wrap (line 55) | public static DataSource wrap(final DataSource ds, final int numThread...
method wrap (line 64) | public static DataSource wrap(final DataSource ds) {
method FiberDataSource (line 68) | protected FiberDataSource(final DataSource ds, final ExecutorService e...
method getConnection (line 73) | @Override
method getConnection (line 84) | @Override
method getLogWriter (line 95) | @Override
method setLogWriter (line 106) | @Override
method setLoginTimeout (line 118) | @Override
method getLoginTimeout (line 130) | @Override
method getParentLogger (line 141) | @Override
method unwrap (line 146) | @Override
method isWrapperFor (line 151) | @Override
method hashCode (line 156) | @Override
method equals (line 161) | @Override
method toString (line 167) | @Override
FILE: comsat-jdbc/src/main/java/co/paralleluniverse/fibers/jdbc/FiberDataSourceFactory.java
class FiberDataSourceFactory (line 29) | public class FiberDataSourceFactory implements ObjectFactory {
method getObjectInstance (line 30) | @Override
method create (line 49) | public static DataSource create(final String rawDS, final int tc) thro...
FILE: comsat-jdbc/src/main/java/co/paralleluniverse/fibers/jdbc/FiberDatabaseMetaData.java
class FiberDatabaseMetaData (line 28) | public class FiberDatabaseMetaData implements DatabaseMetaData {
method FiberDatabaseMetaData (line 32) | public FiberDatabaseMetaData(final DatabaseMetaData dbMeta, final Exec...
method allProceduresAreCallable (line 37) | @Override
method allTablesAreSelectable (line 48) | @Override
method getURL (line 59) | @Override
method getUserName (line 70) | @Override
method isReadOnly (line 81) | @Override
method nullsAreSortedHigh (line 92) | @Override
method nullsAreSortedLow (line 103) | @Override
method nullsAreSortedAtStart (line 114) | @Override
method nullsAreSortedAtEnd (line 125) | @Override
method getDatabaseProductName (line 136) | @Override
method getDatabaseProductVersion (line 147) | @Override
method getDriverName (line 158) | @Override
method getDriverVersion (line 169) | @Override
method getDriverMajorVersion (line 180) | @Override
method getDriverMinorVersion (line 185) | @Override
method usesLocalFiles (line 190) | @Override
method usesLocalFilePerTable (line 201) | @Override
method supportsMixedCaseIdentifiers (line 212) | @Override
method storesUpperCaseIdentifiers (line 223) | @Override
method storesLowerCaseIdentifiers (line 234) | @Override
method storesMixedCaseIdentifiers (line 245) | @Override
method supportsMixedCaseQuotedIdentifiers (line 256) | @Override
method storesUpperCaseQuotedIdentifiers (line 267) | @Override
method storesLowerCaseQuotedIdentifiers (line 278) | @Override
method storesMixedCaseQuotedIdentifiers (line 289) | @Override
method getIdentifierQuoteString (line 300) | @Override
method getSQLKeywords (line 311) | @Override
method getNumericFunctions (line 322) | @Override
method getStringFunctions (line 333) | @Override
method getSystemFunctions (line 344) | @Override
method getTimeDateFunctions (line 355) | @Override
method getSearchStringEscape (line 366) | @Override
method getExtraNameCharacters (line 377) | @Override
method supportsAlterTableWithAddColumn (line 388) | @Override
method supportsAlterTableWithDropColumn (line 399) | @Override
method supportsColumnAliasing (line 410) | @Override
method nullPlusNonNullIsNull (line 421) | @Override
method supportsConvert (line 432) | @Override
method supportsConvert (line 443) | @Override
method supportsTableCorrelationNames (line 454) | @Override
method supportsDifferentTableCorrelationNames (line 465) | @Override
method supportsExpressionsInOrderBy (line 476) | @Override
method supportsOrderByUnrelated (line 487) | @Override
method supportsGroupBy (line 498) | @Override
method supportsGroupByUnrelated (line 509) | @Override
method supportsGroupByBeyondSelect (line 520) | @Override
method supportsLikeEscapeClause (line 531) | @Override
method supportsMultipleResultSets (line 542) | @Override
method supportsMultipleTransactions (line 553) | @Override
method supportsNonNullableColumns (line 564) | @Override
method supportsMinimumSQLGrammar (line 575) | @Override
method supportsCoreSQLGrammar (line 586) | @Override
method supportsExtendedSQLGrammar (line 597) | @Override
method supportsANSI92EntryLevelSQL (line 608) | @Override
method supportsANSI92IntermediateSQL (line 619) | @Override
method supportsANSI92FullSQL (line 630) | @Override
method supportsIntegrityEnhancementFacility (line 641) | @Override
method supportsOuterJoins (line 652) | @Override
method supportsFullOuterJoins (line 663) | @Override
method supportsLimitedOuterJoins (line 674) | @Override
method getSchemaTerm (line 685) | @Override
method getProcedureTerm (line 696) | @Override
method getCatalogTerm (line 707) | @Override
method isCatalogAtStart (line 718) | @Override
method getCatalogSeparator (line 729) | @Override
method supportsSchemasInDataManipulation (line 740) | @Override
method supportsSchemasInProcedureCalls (line 751) | @Override
method supportsSchemasInTableDefinitions (line 762) | @Override
method supportsSchemasInIndexDefinitions (line 773) | @Override
method supportsSchemasInPrivilegeDefinitions (line 784) | @Override
method supportsCatalogsInDataManipulation (line 795) | @Override
method supportsCatalogsInProcedureCalls (line 806) | @Override
method supportsCatalogsInTableDefinitions (line 817) | @Override
method supportsCatalogsInIndexDefinitions (line 828) | @Override
method supportsCatalogsInPrivilegeDefinitions (line 839) | @Override
method supportsPositionedDelete (line 850) | @Override
method supportsPositionedUpdate (line 861) | @Override
method supportsSelectForUpdate (line 872) | @Override
method supportsStoredProcedures (line 883) | @Override
method supportsSubqueriesInComparisons (line 894) | @Override
method supportsSubqueriesInExists (line 905) | @Override
method supportsSubqueriesInIns (line 916) | @Override
method supportsSubqueriesInQuantifieds (line 927) | @Override
method supportsCorrelatedSubqueries (line 938) | @Override
method supportsUnion (line 949) | @Override
method supportsUnionAll (line 960) | @Override
method supportsOpenCursorsAcrossCommit (line 971) | @Override
method supportsOpenCursorsAcrossRollback (line 982) | @Override
method supportsOpenStatementsAcrossCommit (line 993) | @Override
method supportsOpenStatementsAcrossRollback (line 1004) | @Override
method getMaxBinaryLiteralLength (line 1015) | @Override
method getMaxCharLiteralLength (line 1026) | @Override
method getMaxColumnNameLength (line 1037) | @Override
method getMaxColumnsInGroupBy (line 1048) | @Override
method getMaxColumnsInIndex (line 1059) | @Override
method getMaxColumnsInOrderBy (line 1070) | @Override
method getMaxColumnsInSelect (line 1081) | @Override
method getMaxColumnsInTable (line 1092) | @Override
method getMaxConnections (line 1103) | @Override
method getMaxCursorNameLength (line 1114) | @Override
method getMaxIndexLength (line 1125) | @Override
method getMaxSchemaNameLength (line 1136) | @Override
method getMaxProcedureNameLength (line 1147) | @Override
method getMaxCatalogNameLength (line 1158) | @Override
method getMaxRowSize (line 1169) | @Override
method doesMaxRowSizeIncludeBlobs (line 1180) | @Override
method getMaxStatementLength (line 1191) | @Override
method getMaxStatements (line 1202) | @Override
method getMaxTableNameLength (line 1213) | @Override
method getMaxTablesInSelect (line 1224) | @Override
method getMaxUserNameLength (line 1235) | @Override
method getDefaultTransactionIsolation (line 1246) | @Override
method supportsTransactions (line 1257) | @Override
method supportsTransactionIsolationLevel (line 1268) | @Override
method supportsDataDefinitionAndDataManipulationTransactions (line 1279) | @Override
method supportsDataManipulationTransactionsOnly (line 1290) | @Override
method dataDefinitionCausesTransactionCommit (line 1301) | @Override
method dataDefinitionIgnoredInTransactions (line 1312) | @Override
method getProcedures (line 1323) | @Override
method getProcedureColumns (line 1335) | @Override
method getTables (line 1347) | @Override
method getSchemas (line 1359) | @Override
method getCatalogs (line 1371) | @Override
method getTableTypes (line 1383) | @Override
method getColumns (line 1395) | @Override
method getColumnPrivileges (line 1407) | @Override
method getTablePrivileges (line 1419) | @Override
method getBestRowIdentifier (line 1431) | @Override
method getVersionColumns (line 1443) | @Override
method getPrimaryKeys (line 1455) | @Override
method getImportedKeys (line 1467) | @Override
method getExportedKeys (line 1479) | @Override
method getCrossReference (line 1491) | @Override
method getTypeInfo (line 1503) | @Override
method getIndexInfo (line 1515) | @Override
method supportsResultSetType (line 1527) | @Override
method supportsResultSetConcurrency (line 1538) | @Override
method ownUpdatesAreVisible (line 1549) | @Override
method ownDeletesAreVisible (line 1560) | @Override
method ownInsertsAreVisible (line 1571) | @Override
method othersUpdatesAreVisible (line 1582) | @Override
method othersDeletesAreVisible (line 1593) | @Override
method othersInsertsAreVisible (line 1604) | @Override
method updatesAreDetected (line 1615) | @Override
method deletesAreDetected (line 1626) | @Override
method insertsAreDetected (line 1637) | @Override
method supportsBatchUpdates (line 1648) | @Override
method getUDTs (line 1659) | @Override
method getConnection (line 1671) | @Override
method supportsSavepoints (line 1683) | @Override
method supportsNamedParameters (line 1694) | @Override
method supportsMultipleOpenResults (line 1705) | @Override
method supportsGetGeneratedKeys (line 1716) | @Override
method getSuperTypes (line 1727) | @Override
method getSuperTables (line 1739) | @Override
method getAttributes (line 1751) | @Override
method supportsResultSetHoldability (line 1763) | @Override
method getResultSetHoldability (line 1774) | @Override
method getDatabaseMajorVersion (line 1785) | @Override
method getDatabaseMinorVersion (line 1796) | @Override
method getJDBCMajorVersion (line 1807) | @Override
method getJDBCMinorVersion (line 1818) | @Override
method getSQLStateType (line 1829) | @Override
method locatorsUpdateCopy (line 1840) | @Override
method supportsStatementPooling (line 1851) | @Override
method getRowIdLifetime (line 1862) | @Override
method getSchemas (line 1873) | @Override
method supportsStoredFunctionsUsingCallSyntax (line 1885) | @Override
method autoCommitFailureClosesAllResultSets (line 1896) | @Override
method getClientInfoProperties (line 1907) | @Override
method getFunctions (line 1919) | @Override
method getFunctionColumns (line 1931) | @Override
method getPseudoColumns (line 1943) | @Override
method generatedKeyAlwaysReturned (line 1955) | @Override
method unwrap (line 1966) | @Override
method isWrapperFor (line 1971) | @Override
method hashCode (line 1976) | @Override
method equals (line 1981) | @SuppressWarnings("EqualsWhichDoesntCheckParameterClass")
method toString (line 1987) | @Override
FILE: comsat-jdbc/src/main/java/co/paralleluniverse/fibers/jdbc/FiberDriver.java
class FiberDriver (line 34) | public class FiberDriver implements Driver {
method connect (line 35) | @Suspendable
method acceptsURL (line 53) | @Override
method getPropertyInfo (line 58) | @Override
method getMajorVersion (line 67) | @Override
method getMinorVersion (line 72) | @Override
method jdbcCompliant (line 77) | @Override
method getParentLogger (line 82) | @Override
FILE: comsat-jdbc/src/main/java/co/paralleluniverse/fibers/jdbc/FiberNClob.java
class FiberNClob (line 30) | public class FiberNClob implements NClob {
method FiberNClob (line 34) | public FiberNClob(final NClob nclob, final ExecutorService executor) {
method length (line 39) | @Override
method getSubString (line 50) | @Override
method getCharacterStream (line 61) | @Override
method getAsciiStream (line 72) | @Override
method position (line 83) | @Override
method position (line 94) | @Override
method setString (line 105) | @Override
method setString (line 116) | @Override
method setAsciiStream (line 127) | @Override
method setCharacterStream (line 138) | @Override
method truncate (line 149) | @Override
method free (line 161) | @Override
method getCharacterStream (line 173) | @Override
method hashCode (line 184) | @Override
method equals (line 189) | @SuppressWarnings("EqualsWhichDoesntCheckParameterClass")
method toString (line 195) | @Override
FILE: comsat-jdbc/src/main/java/co/paralleluniverse/fibers/jdbc/FiberParameterMetadata.java
class FiberParameterMetadata (line 25) | public class FiberParameterMetadata implements ParameterMetaData {
method FiberParameterMetadata (line 29) | public FiberParameterMetadata(ParameterMetaData pmeta, ExecutorService...
method getParameterCount (line 34) | @Override
method isNullable (line 45) | @Override
method isSigned (line 56) | @Override
method getPrecision (line 67) | @Override
method getScale (line 78) | @Override
method getParameterType (line 89) | @Override
method getParameterTypeName (line 100) | @Override
method getParameterClassName (line 111) | @Override
method getParameterMode (line 122) | @Override
method unwrap (line 133) | @Override
method isWrapperFor (line 138) | @Override
method hashCode (line 143) | @Override
method equals (line 148) | @SuppressWarnings("EqualsWhichDoesntCheckParameterClass")
method toString (line 154) | @Override
FILE: comsat-jdbc/src/main/java/co/paralleluniverse/fibers/jdbc/FiberPreparedStatement.java
class FiberPreparedStatement (line 43) | public class FiberPreparedStatement extends FiberStatement implements Pr...
method FiberPreparedStatement (line 44) | FiberPreparedStatement(final java.sql.PreparedStatement ps, final Exec...
method stmt (line 48) | protected PreparedStatement stmt() {
method executeQuery (line 52) | @Override
method executeUpdate (line 64) | @Override
method execute (line 75) | @Override
method setNull (line 86) | @Override
method setBoolean (line 98) | @Override
method setByte (line 110) | @Override
method setShort (line 122) | @Override
method setInt (line 134) | @Override
method setLong (line 146) | @Override
method setFloat (line 158) | @Override
method setDouble (line 170) | @Override
method setBigDecimal (line 182) | @Override
method setString (line 194) | @Override
method setBytes (line 206) | @Override
method setDate (line 218) | @Override
method setTime (line 230) | @Override
method setTimestamp (line 242) | @Override
method setAsciiStream (line 254) | @Override
method setUnicodeStream (line 266) | @Override
method setBinaryStream (line 278) | @Override
method clearParameters (line 290) | @Override
method setObject (line 302) | @Override
method setObject (line 314) | @Override
method addBatch (line 326) | @Override
method setCharacterStream (line 338) | @Override
method setRef (line 350) | @Override
method setBlob (line 362) | @Override
method setClob (line 374) | @Override
method setArray (line 386) | @Override
method getMetaData (line 398) | @Override
method setDate (line 410) | @Override
method setTime (line 422) | @Override
method setTimestamp (line 434) | @Override
method setNull (line 446) | @Override
method setURL (line 458) | @Override
method getParameterMetaData (line 470) | @Override
method setRowId (line 482) | @Override
method setNString (line 494) | @Override
method setNCharacterStream (line 506) | @Override
method setNClob (line 518) | @Override
method setClob (line 530) | @Override
method setBlob (line 542) | @Override
method setNClob (line 554) | @Override
method setSQLXML (line 566) | @Override
method setObject (line 578) | @Override
method setAsciiStream (line 590) | @Override
method setBinaryStream (line 602) | @Override
method setCharacterStream (line 614) | @Override
method setAsciiStream (line 626) | @Override
method setBinaryStream (line 638) | @Override
method setCharacterStream (line 650) | @Override
method setNCharacterStream (line 662) | @Override
method setClob (line 674) | @Override
method setBlob (line 686) | @Override
method setNClob (line 698) | @Override
method hashCode (line 710) | @Override
method equals (line 715) | @SuppressWarnings("EqualsWhichDoesntCheckParameterClass")
method toString (line 721) | @Override
FILE: comsat-jdbc/src/main/java/co/paralleluniverse/fibers/jdbc/FiberRef.java
class FiberRef (line 26) | public class FiberRef implements Ref {
method FiberRef (line 30) | public FiberRef(final Ref ref, final ExecutorService executor) {
method getBaseTypeName (line 35) | @Override
method getObject (line 46) | @Override
method getObject (line 57) | @Override
method setObject (line 68) | @Override
method hashCode (line 80) | @Override
method equals (line 85) | @SuppressWarnings("EqualsWhichDoesntCheckParameterClass")
method toString (line 91) | @Override
FILE: comsat-jdbc/src/main/java/co/paralleluniverse/fibers/jdbc/FiberResultSet.java
class FiberResultSet (line 47) | public class FiberResultSet implements ResultSet {
method FiberResultSet (line 51) | public FiberResultSet(final ResultSet result, final ExecutorService ex...
method next (line 56) | @Override
method close (line 67) | @Override
method wasNull (line 79) | @Override
method getString (line 90) | @Override
method getBoolean (line 101) | @Override
method getByte (line 112) | @Override
method getShort (line 123) | @Override
method getInt (line 134) | @Override
method getLong (line 145) | @Override
method getFloat (line 156) | @Override
method getDouble (line 167) | @Override
method getBigDecimal (line 178) | @Override
method getBytes (line 190) | @Override
method getDate (line 201) | @Override
method getTime (line 212) | @Override
method getTimestamp (line 223) | @Override
method getAsciiStream (line 234) | @Override
method getUnicodeStream (line 245) | @Override
method getBinaryStream (line 257) | @Override
method getString (line 268) | @Override
method getBoolean (line 279) | @Override
method getByte (line 290) | @Override
method getShort (line 301) | @Override
method getInt (line 312) | @Override
method getLong (line 323) | @Override
method getFloat (line 334) | @Override
method getDouble (line 345) | @Override
method getBigDecimal (line 356) | @Override
method getBytes (line 368) | @Override
method getDate (line 379) | @Override
method getTime (line 390) | @Override
method getTimestamp (line 401) | @Override
method getAsciiStream (line 412) | @Override
method getUnicodeStream (line 423) | @Override
method getBinaryStream (line 435) | @Override
method getWarnings (line 446) | @Override
method clearWarnings (line 457) | @Override
method getCursorName (line 469) | @Override
method getMetaData (line 480) | @Override
method getObject (line 492) | @Override
method getObject (line 503) | @Override
method findColumn (line 514) | @Override
method getCharacterStream (line 525) | @Override
method getCharacterStream (line 536) | @Override
method getBigDecimal (line 547) | @Override
method getBigDecimal (line 558) | @Override
method isBeforeFirst (line 569) | @Override
method isAfterLast (line 580) | @Override
method isFirst (line 591) | @Override
method isLast (line 602) | @Override
method beforeFirst (line 613) | @Override
method afterLast (line 625) | @Override
method first (line 637) | @Override
method last (line 648) | @Override
method getRow (line 659) | @Override
method absolute (line 670) | @Override
method relative (line 681) | @Override
method previous (line 692) | @Override
method setFetchDirection (line 703) | @Override
method getFetchDirection (line 715) | @Override
method setFetchSize (line 726) | @Override
method getFetchSize (line 738) | @Override
method getType (line 749) | @Override
method getConcurrency (line 760) | @Override
method rowUpdated (line 771) | @Override
method rowInserted (line 782) | @Override
method rowDeleted (line 793) | @Override
method updateNull (line 804) | @Override
method updateBoolean (line 816) | @Override
method updateByte (line 828) | @Override
method updateShort (line 840) | @Override
method updateInt (line 852) | @Override
method updateLong (line 864) | @Override
method updateFloat (line 876) | @Override
method updateDouble (line 888) | @Override
method updateBigDecimal (line 900) | @Override
method updateString (line 912) | @Override
method updateBytes (line 924) | @Override
method updateDate (line 936) | @Override
method updateTime (line 948) | @Override
method updateTimestamp (line 960) | @Override
method updateAsciiStream (line 972) | @Override
method updateBinaryStream (line 984) | @Override
method updateCharacterStream (line 996) | @Override
method updateObject (line 1008) | @Override
method updateObject (line 1020) | @Override
method updateNull (line 1032) | @Override
method updateBoolean (line 1044) | @Override
method updateByte (line 1056) | @Override
method updateShort (line 1068) | @Override
method updateInt (line 1080) | @Override
method updateLong (line 1092) | @Override
method updateFloat (line 1104) | @Override
method updateDouble (line 1116) | @Override
method updateBigDecimal (line 1128) | @Override
method updateString (line 1140) | @Override
method updateBytes (line 1152) | @Override
method updateDate (line 1164) | @Override
method updateTime (line 1176) | @Override
method updateTimestamp (line 1188) | @Override
method updateAsciiStream (line 1200) | @Override
method updateBinaryStream (line 1212) | @Override
method updateCharacterStream (line 1224) | @Override
method updateObject (line 1236) | @Override
method updateObject (line 1248) | @Override
method insertRow (line 1260) | @Override
method updateRow (line 1272) | @Override
method deleteRow (line 1284) | @Override
method refreshRow (line 1296) | @Override
method cancelRowUpdates (line 1308) | @Override
method moveToInsertRow (line 1320) | @Override
method moveToCurrentRow (line 1332) | @Override
method getStatement (line 1344) | @Override
method getObject (line 1356) | @Override
method getRef (line 1367) | @Override
method getBlob (line 1379) | @Override
method getClob (line 1391) | @Override
method getArray (line 1403) | @Override
method getObject (line 1415) | @Override
method getRef (line 1426) | @Override
method getBlob (line 1438) | @Override
method getClob (line 1450) | @Override
method getArray (line 1462) | @Override
method getDate (line 1474) | @Override
method getDate (line 1485) | @Override
method getTime (line 1496) | @Override
method getTime (line 1507) | @Override
method getTimestamp (line 1518) | @Override
method getTimestamp (line 1529) | @Override
method getURL (line 1540) | @Override
method getURL (line 1551) | @Override
method updateRef (line 1562) | @Override
method updateRef (line 1574) | @Override
method updateBlob (line 1586) | @Override
method updateBlob (line 1598) | @Override
method updateClob (line 1610) | @Override
method updateClob (line 1622) | @Override
method updateArray (line 1634) | @Override
method updateArray (line 1646) | @Override
method getRowId (line 1658) | @Override
method getRowId (line 1669) | @Override
method updateRowId (line 1680) | @Override
method updateRowId (line 1692) | @Override
method getHoldability (line 1704) | @Override
method isClosed (line 1715) | @Override
method updateNString (line 1726) | @Override
method updateNString (line 1738) | @Override
method updateNClob (line 1750) | @Override
method updateNClob (line 1762) | @Override
method getNClob (line 1774) | @Override
method getNClob (line 1786) | @Override
method getSQLXML (line 1798) | @Override
method getSQLXML (line 1810) | @Override
method updateSQLXML (line 1822) | @Override
method updateSQLXML (line 1834) | @Override
method getNString (line 1846) | @Override
method getNString (line 1857) | @Override
method getNCharacterStream (line 1868) | @Override
method getNCharacterStream (line 1879) | @Override
method updateNCharacterStream (line 1890) | @Override
method updateNCharacterStream (line 1902) | @Override
method updateAsciiStream (line 1914) | @Override
method updateBinaryStream (line 1926) | @Override
method updateCharacterStream (line 1938) | @Override
method updateAsciiStream (line 1950) | @Override
method updateBinaryStream (line 1962) | @Override
method updateCharacterStream (line 1974) | @Override
method updateBlob (line 1986) | @Override
method updateBlob (line 1998) | @Override
method updateClob (line 2010) | @Override
method updateClob (line 2022) | @Override
method updateNClob (line 2034) | @Override
method updateNClob (line 2046) | @Override
method updateNCharacterStream (line 2058) | @Override
method updateNCharacterStream (line 2070) | @Override
method updateAsciiStream (line 2082) | @Override
method updateBinaryStream (line 2094) | @Override
method updateCharacterStream (line 2106) | @Override
method updateAsciiStream (line 2118) | @Override
method updateBinaryStream (line 2130) | @Override
method updateCharacterStream (line 2142) | @Override
method updateBlob (line 2154) | @Override
method updateBlob (line 2166) | @Override
method updateClob (line 2178) | @Override
method updateClob (line 2190) | @Override
method updateNClob (line 2202) | @Override
method updateNClob (line 2214) | @Override
method getObject (line 2226) | @Override
method getObject (line 2237) | @Override
method unwrap (line 2298) | @Override
method isWrapperFor (line 2303) | @Override
method hashCode (line 2308) | @Override
method equals (line 2313) | @SuppressWarnings("EqualsWhichDoesntCheckParameterClass")
method toString (line 2319) | @Override
FILE: comsat-jdbc/src/main/java/co/paralleluniverse/fibers/jdbc/FiberResultSetMetaData.java
class FiberResultSetMetaData (line 25) | public class FiberResultSetMetaData implements ResultSetMetaData {
method FiberResultSetMetaData (line 29) | public FiberResultSetMetaData(final ResultSetMetaData resultMeta, fina...
method getColumnCount (line 34) | @Override
method isAutoIncrement (line 45) | @Override
method isCaseSensitive (line 56) | @Override
method isSearchable (line 67) | @Override
method isCurrency (line 78) | @Override
method isNullable (line 89) | @Override
method isSigned (line 100) | @Override
method getColumnDisplaySize (line 111) | @Override
method getColumnLabel (line 122) | @Override
method getColumnName (line 133) | @Override
method getSchemaName (line 144) | @Override
method getPrecision (line 155) | @Override
method getScale (line 166) | @Override
method getTableName (line 177) | @Override
method getCatalogName (line 188) | @Override
method getColumnType (line 199) | @Override
method getColumnTypeName (line 210) | @Override
method isReadOnly (line 221) | @Override
method isWritable (line 232) | @Override
method isDefinitelyWritable (line 243) | @Override
method getColumnClassName (line 254) | @Override
method unwrap (line 265) | @Override
method isWrapperFor (line 270) | @Override
method hashCode (line 275) | @Override
method equals (line 280) | @SuppressWarnings("EqualsWhichDoesntCheckParameterClass")
method toString (line 286) | @Override
FILE: comsat-jdbc/src/main/java/co/paralleluniverse/fibers/jdbc/FiberSQLXML.java
class FiberSQLXML (line 31) | public class FiberSQLXML implements SQLXML {
method FiberSQLXML (line 35) | public FiberSQLXML(final SQLXML sqlXML, final ExecutorService executor) {
method getBinaryStream (line 40) | @Override
method free (line 51) | @Override
method setBinaryStream (line 63) | @Override
method getCharacterStream (line 74) | @Override
method setCharacterStream (line 85) | @Override
method getString (line 96) | @Override
method setString (line 107) | @Override
method getSource (line 119) | @Override
method setResult (line 130) | @Override
method hashCode (line 141) | @Override
method equals (line 146) | @SuppressWarnings("EqualsWhichDoesntCheckParameterClass")
method toString (line 152) | @Override
FILE: comsat-jdbc/src/main/java/co/paralleluniverse/fibers/jdbc/FiberSavepoint.java
class FiberSavepoint (line 25) | class FiberSavepoint implements Savepoint {
method FiberSavepoint (line 29) | public FiberSavepoint(final Savepoint savepoint, final ExecutorService...
method getSavepointId (line 34) | @Override
method getSavepointName (line 45) | @Override
method hashCode (line 56) | @Override
method equals (line 61) | @SuppressWarnings("EqualsWhichDoesntCheckParameterClass")
method toString (line 67) | @Override
FILE: comsat-jdbc/src/main/java/co/paralleluniverse/fibers/jdbc/FiberStatement.java
class FiberStatement (line 28) | public class FiberStatement implements Statement {
method FiberStatement (line 32) | public FiberStatement(final Statement stmt, final ExecutorService exec) {
method executeQuery (line 37) | @Override
method executeUpdate (line 53) | @Override
method close (line 64) | @Override
method getMaxFieldSize (line 76) | @Override
method setMaxFieldSize (line 87) | @Override
method getMaxRows (line 99) | @Override
method setMaxRows (line 110) | @Override
method setEscapeProcessing (line 122) | @Override
method getQueryTimeout (line 134) | @Override
method setQueryTimeout (line 145) | @Override
method cancel (line 157) | @Override
method getWarnings (line 169) | @Override
method clearWarnings (line 180) | @Override
method setCursorName (line 192) | @Override
method getResultSet (line 204) | @Override
method getUpdateCount (line 216) | @Override
method getMoreResults (line 227) | @Override
method setFetchDirection (line 238) | @Override
method getFetchDirection (line 250) | @Override
method setFetchSize (line 261) | @Override
method getFetchSize (line 273) | @Override
method getResultSetConcurrency (line 284) | @Override
method getResultSetType (line 295) | @Override
method addBatch (line 306) | @Override
method clearBatch (line 318) | @Override
method executeBatch (line 330) | @Override
method getConnection (line 341) | @Override
method getMoreResults (line 353) | @Override
method getGeneratedKeys (line 364) | @Override
method executeUpdate (line 376) | @Override
method executeUpdate (line 387) | @Override
method executeUpdate (line 398) | @Override
method execute (line 409) | @Suspendable
method execute (line 420) | @Override
method execute (line 431) | @Override
method execute (line 442) | @Override
method getResultSetHoldability (line 453) | @Override
method isClosed (line 464) | @Override
method setPoolable (line 475) | @Override
method isPoolable (line 487) | @Override
method closeOnCompletion (line 498) | @Override
method isCloseOnCompletion (line 510) | @Override
method unwrap (line 521) | @Override
method isWrapperFor (line 526) | @Override
method hashCode (line 531) | @Override
method equals (line 536) | @Override
method toString (line 542) | @Override
FILE: comsat-jdbc/src/main/java/co/paralleluniverse/fibers/jdbc/FiberStruct.java
class FiberStruct (line 26) | public class FiberStruct implements Struct {
method FiberStruct (line 30) | public FiberStruct(final Struct struct, final ExecutorService executor) {
method getSQLTypeName (line 35) | @Override
method getAttributes (line 46) | @Override
method getAttributes (line 57) | @Override
method hashCode (line 68) | @Override
method equals (line 73) | @SuppressWarnings("EqualsWhichDoesntCheckParameterClass")
method toString (line 79) | @Override
FILE: comsat-jdbc/src/main/java/co/paralleluniverse/fibers/jdbc/JDBCFiberAsync.java
class JDBCFiberAsync (line 25) | public abstract class JDBCFiberAsync<V, E extends Throwable> extends Fib...
method exec (line 26) | @Suspendable
FILE: comsat-jdbc/src/test/java/co/paralleluniverse/fibers/jdbc/FiberConnectionTest.java
class FiberConnectionTest (line 36) | @RunWith(Parameterized.class)
method data (line 39) | @Parameterized.Parameters(name = "{0}")
method FiberConnectionTest (line 47) | public FiberConnectionTest(Class<? extends DataSource> cls) {
method setUp (line 51) | @Before
method tearDown (line 58) | @After
method testCreateStatement (line 63) | @Test
method testPrepareStatement (line 77) | @Test
method testPrepareCall (line 91) | @Test
method testCommit (line 105) | @Test
method testRollback (line 128) | @Test
FILE: comsat-jdbc/src/test/java/co/paralleluniverse/fibers/jdbc/FiberDataSourceTest.java
class FiberDataSourceTest (line 32) | @RunWith(Parameterized.class)
method data (line 35) | @Parameterized.Parameters(name = "{0}")
method FiberDataSourceTest (line 43) | public FiberDataSourceTest(Class<? extends DataSource> cls) {
method setUp (line 47) | @Before
method testGetConnection (line 52) | @Test
method testGetConnectionUsername (line 72) | @Test
FILE: comsat-jdbi/src/main/java/co/paralleluniverse/fibers/jdbi/FiberDBI.java
class FiberDBI (line 28) | public class FiberDBI implements IDBI {
method FiberDBI (line 35) | public FiberDBI(IDBI jdbi) {
method FiberDBI (line 45) | public FiberDBI(DataSource dataSource, ExecutorService es) {
method FiberDBI (line 55) | public FiberDBI(DataSource dataSource, int threadCount) {
method FiberDBI (line 64) | public FiberDBI(DataSource dataSource) {
method open (line 68) | @Override
method withHandle (line 74) | @Override
method useHandle (line 80) | @Override
method open (line 86) | @Override
method close (line 92) | @Override
method onDemand (line 98) | @Override
method inTransaction (line 103) | @Override
method useTransaction (line 109) | @Override
method inTransaction (line 115) | @Override
method useTransaction (line 121) | @Override
method define (line 127) | @Override
FILE: comsat-jdbi/src/main/java/co/paralleluniverse/fibers/jdbi/JdbiClassifier.java
class JdbiClassifier (line 26) | public class JdbiClassifier implements SuspendableClassifier {
method isSuspendable (line 55) | @Override
method isJDBICGLibProxy (line 92) | private boolean isJDBICGLibProxy(String className, String methodName) {
FILE: comsat-jdbi/src/test/java/co/paralleluniverse/fibers/jdbi/FiberFluentAPITest.java
class FiberFluentAPITest (line 40) | @RunWith(Parameterized.class)
type TestDAO (line 43) | @Suspendable
method insert (line 45) | @SqlUpdate("insert into test (id, name) values (:id, :name)")
method data (line 49) | @Parameterized.Parameters(name = "{0}")
method FiberFluentAPITest (line 57) | public FiberFluentAPITest(Class<? extends DataSource> cls) {
method setUp (line 61) | @Before
method testOpen (line 69) | @Test
method testQueryFirst (line 82) | @Test
method testQueryList (line 101) | @Test
method testAttach (line 118) | @Test
method testOnDemand (line 133) | @Test
method testTransactionalOnDemand (line 152) | @Test
method testWithHandle (line 173) | @Test
method testTransactionalWithHandle (line 189) | @Test
method dropTest (line 207) | @Suspendable
method createTest (line 212) | @Suspendable
FILE: comsat-jdbi/src/test/java/co/paralleluniverse/fibers/jdbi/FiberSqlObjectAPITest.java
class FiberSqlObjectAPITest (line 34) | @RunWith(Parameterized.class)
method data (line 36) | @Parameterized.Parameters(name = "{0}")
method FiberSqlObjectAPITest (line 44) | public FiberSqlObjectAPITest(Class<? extends DataSource> cls) {
method setUp (line 48) | @Before
method testDao (line 56) | @Test
type MyDAO (line 73) | @Suspendable
method createSomethingTable (line 75) | @SqlUpdate("create table if not exists something (id int primary key...
method dropSomethingTable (line 78) | @SqlUpdate("drop table something")
method insert (line 81) | @SqlUpdate("insert into something (id, name) values (:id, :name)")
method findNameById (line 84) | @SqlQuery("select name from something where id = :id")
FILE: comsat-jersey-server/src/main/java/co/paralleluniverse/fibers/jersey/ServletContainer.java
class ServletContainer (line 42) | public class ServletContainer extends FiberHttpServlet implements Filter...
method ServletContainer (line 49) | public ServletContainer() {
method ServletContainer (line 58) | public ServletContainer(ResourceConfig resourceConfig) {
method ServletContainer (line 67) | public ServletContainer(org.glassfish.jersey.servlet.ServletContainer ...
method init (line 71) | @Override
method getServletContext (line 84) | @Override
method service (line 89) | @Override
method destroy (line 96) | @Override
method init (line 101) | @Override
method service (line 117) | public Value<Integer> service(URI baseUri, URI requestUri, HttpServlet...
method init (line 121) | @Override
method doFilter (line 126) | @Override
method doFilter (line 131) | public void doFilter(HttpServletRequest request, HttpServletResponse r...
method getConfiguration (line 135) | @Override
method reload (line 140) | @Override
method reload (line 145) | @Override
method getInitParameter (line 150) | @Override
method getInitParameterNames (line 155) | @Override
method getServletInfo (line 160) | @Override
method log (line 165) | @Override
method log (line 170) | @Override
method getServletName (line 175) | @Override
method hashCode (line 180) | @Override
method equals (line 185) | @Override
method toString (line 190) | @Override
method getApplicationHandler (line 195) | @Override
FILE: comsat-jersey-server/src/test/java/co/paralleluniverse/fibers/jersey/AddTestFiltersFeature.java
class AddTestFiltersFeature (line 17) | @Provider
method configure (line 20) | @Override
class TestRequestFilter (line 29) | class TestRequestFilter implements ContainerRequestFilter {
method filter (line 31) | @Override
class TestResponseFilter (line 44) | class TestResponseFilter implements ContainerResponseFilter {
method filter (line 46) | @Override
FILE: comsat-jersey-server/src/test/java/co/paralleluniverse/fibers/jersey/FiberServletContainerTest.java
class FiberServletContainerTest (line 52) | @RunWith(Parameterized.class)
method data (line 55) | @Parameterized.Parameters(name = "{0}")
method FiberServletContainerTest (line 67) | public FiberServletContainerTest(Class<? extends EmbeddedServer> cls) {
method setUp (line 80) | @Before
method tearDown (line 94) | @After
method testGet (line 100) | @Test
method testPost (line 106) | @Test
method handleEntity (line 113) | @Override
method handleResponse (line 119) | @Override
method starting (line 132) | @Override
method failed (line 140) | @Override
method succeeded (line 150) | @Override
FILE: comsat-jersey-server/src/test/java/co/paralleluniverse/fibers/jersey/TestResource.java
class TestResource (line 29) | @Singleton
method get (line 32) | @GET
method post (line 48) | @POST
FILE: comsat-jetty-loader/src/main/java/co/paralleluniverse/comsat/jetty/QuasarWebAppClassLoader.java
class QuasarWebAppClassLoader (line 27) | public class QuasarWebAppClassLoader extends WebAppClassLoader {
method QuasarWebAppClassLoader (line 30) | public QuasarWebAppClassLoader(Context context) throws IOException {
method QuasarWebAppClassLoader (line 36) | public QuasarWebAppClassLoader(ClassLoader parent, Context context) th...
method findClass (line 42) | @Override
method getResourceAsStream (line 47) | @Override
FILE: comsat-jetty-loader/src/test/java/co/paralleluniverse/embedded/containers/JettyLoaderTest.java
class JettyLoaderTest (line 33) | public class JettyLoaderTest {
method setUp (line 37) | @Before
method tearDown (line 49) | @After
method testGetDeployedWar (line 55) | @Test
method createDataSource (line 65) | private static JdbcDataSource createDataSource(final String url) {
method scanDirForWebApps (line 71) | private static void scanDirForWebApps(final Server server, final Strin...
FILE: comsat-jooq/src/main/java/co/paralleluniverse/fibers/jooq/JooqClassifier.java
class JooqClassifier (line 25) | public class JooqClassifier implements SuspendableClassifier {
method isSuspendable (line 68) | @Override
FILE: comsat-jooq/src/test/java/co/paralleluniverse/fibers/jooq/JooqContextTest.java
class JooqContextTest (line 39) | @RunWith(Parameterized.class)
method data (line 42) | @Parameterized.Parameters(name = "{0}")
method JooqContextTest (line 51) | public JooqContextTest(Class<? extends DataSource> cls) {
method setUp (line 55) | @Before
method tearDown (line 65) | @After
method testInsertSelect (line 71) | @Test
class Something (line 89) | public static class Something {
method map (line 93) | @Override
method Something (line 99) | public Something(int id, String name) {
FILE: comsat-kafka/src/main/java/co/paralleluniverse/fibers/kafka/FiberKafkaProducer.java
class FiberKafkaProducer (line 27) | public class FiberKafkaProducer<K, V> implements Producer<K, V> {
method FiberKafkaProducer (line 31) | public FiberKafkaProducer(Producer<K, V> producer) {
method send (line 35) | @Override
method send (line 40) | @Override
method flush (line 47) | @Override
method partitionsFor (line 52) | @Override
method metrics (line 57) | @Override
method close (line 62) | @Override
method close (line 67) | @Override
class CallbackWrapper (line 72) | private static class CallbackWrapper implements Callback {
method CallbackWrapper (line 77) | public CallbackWrapper(SettableFuture<RecordMetadata> future, Callba...
method onCompletion (line 82) | @Override
FILE: comsat-kafka/src/test/java/co/paralleluniverse/fibers/kafka/FiberKafkaProducerTest.java
class FiberKafkaProducerTest (line 36) | public class FiberKafkaProducerTest {
method setUp (line 42) | @Before
method testSuccessfulSendWithoutCallback (line 49) | @Test
method testSuccessfulSendWithCallback (line 83) | @Test
method testErrorSendWithoutCallback (line 145) | @Test
method testErrorSendWithCallback (line 170) | @Test
FILE: comsat-mongodb-allanbank/src/main/java/co/paralleluniverse/fibers/mongodb/FiberMongoCallback.java
class FiberMongoCallback (line 26) | public abstract class FiberMongoCallback<T> extends FiberAsync<T, MongoD...
method callback (line 27) | @Override
method exception (line 32) | @Override
FILE: comsat-mongodb-allanbank/src/main/java/co/paralleluniverse/fibers/mongodb/FiberMongoClientImpl.java
class FiberMongoClientImpl (line 27) | public class FiberMongoClientImpl extends MongoClientImpl {
method FiberMongoClientImpl (line 29) | public FiberMongoClientImpl(Client client) {
method FiberMongoClientImpl (line 33) | public FiberMongoClientImpl(MongoClientConfiguration mcc) {
method getDatabase (line 37) | @Override
method asSerializedClient (line 42) | @Override
FILE: comsat-mongodb-allanbank/src/main/java/co/paralleluniverse/fibers/mongodb/FiberMongoCollectionImpl.java
class FiberMongoCollectionImpl (line 47) | public class FiberMongoCollectionImpl extends SynchronousMongoCollection...
method FiberMongoCollectionImpl (line 49) | public FiberMongoCollectionImpl(Client client, MongoDatabase md, Strin...
method aggregate (line 55) | @Override
method aggregate (line 72) | @Override
method count (line 89) | @Override
method count (line 106) | @Override
method count (line 123) | @Override
method count (line 140) | @Override
method count (line 157) | @Override
method delete (line 174) | @Override
method delete (line 191) | @Override
method delete (line 208) | @Override
method delete (line 225) | @Override
method distinct (line 242) | @Override
method distinct (line 259) | @Override
method explain (line 276) | @Override
method explain (line 293) | @Override
method explain (line 310) | @Override
method explain (line 327) | @Override
method explain (line 344) | @Override
method find (line 361) | @Override
method findAndModify (line 378) | @Override
method findAndModify (line 395) | @Override
method find (line 412) | @Override
method find (line 429) | @Override
method findOne (line 446) | @Override
method findOne (line 463) | @Override
method findOne (line 480) | @Override
method groupBy (line 497) | @Override
method groupBy (line 514) | @Override
method insert (line 531) | @Override
method insert (line 548) | @Override
method insert (line 565) | @Override
method insert (line 582) | @Override
method mapReduce (line 599) | @Override
method mapReduce (line 616) | @Override
method parallelScan (line 633) | @Override
method parallelScan (line 650) | @Override
method save (line 667) | @Override
method save (line 684) | @Override
method textSearch (line 701) | @Override
method textSearch (line 719) | @Override
method update (line 737) | @Override
method update (line 754) | @Override
method update (line 771) | @Override
method update (line 788) | @Override
method write (line 805) | @Override
method write (line 822) | @Override
method aggregateAsync (line 842) | @Override
method aggregateAsync (line 849) | @Override
method countAsync (line 856) | @Override
method countAsync (line 863) | @Override
method countAsync (line 870) | @Override
method countAsync (line 877) | @Override
method countAsync (line 884) | @Override
method countAsync (line 891) | @Override
method deleteAsync (line 898) | @Override
method deleteAsync (line 905) | @Override
method deleteAsync (line 912) | @Override
method deleteAsync (line 919) | @Override
method distinctAsync (line 926) | @Override
method distinctAsync (line 933) | @Override
method explainAsync (line 940) | @Override
method explainAsync (line 947) | @Override
method explainAsync (line 954) | @Override
method explainAsync (line 961) | @Override
method findAsync (line 968) | @Override
method findAsync (line 975) | @Override
method findAsync (line 982) | @Override
method findAndModifyAsync (line 989) | @Override
method findAndModifyAsync (line 996) | @Override
method findOneAsync (line 1003) | @Override
method findOneAsync (line 1010) | @Override
method findOneAsync (line 1017) | @Override
method groupByAsync (line 1024) | @Override
method groupByAsync (line 1031) | @Override
method insertAsync (line 1038) | @Override
method insertAsync (line 1045) | @Override
method insertAsync (line 1052) | @Override
method insertAsync (line 1059) | @Override
method mapReduceAsync (line 1066) | @Override
method mapReduceAsync (line 1073) | @Override
method parallelScanAsync (line 1080) | @Override
method parallelScanAsync (line 1087) | @Override
method saveAsync (line 1094) | @Override
method saveAsync (line 1101) | @Override
method textSearchAsync (line 1108) | @Deprecated
method textSearchAsync (line 1116) | @Deprecated
method updateAsync (line 1124) | @Override
method updateAsync (line 1131) | @Override
method updateAsync (line 1138) | @Override
method updateAsync (line 1145) | @Override
method writeAsync (line 1152) | @Override
method writeAsync (line 1159) | @Override
FILE: comsat-mongodb-allanbank/src/main/java/co/paralleluniverse/fibers/mongodb/FiberMongoDatabaseImpl.java
class FiberMongoDatabaseImpl (line 32) | public class FiberMongoDatabaseImpl extends MongoDatabaseImpl {
method FiberMongoDatabaseImpl (line 34) | public FiberMongoDatabaseImpl(MongoClient mongoClient, Client client, ...
method getCollection (line 38) | @Override
method runCommand (line 43) | @Override
method runCommand (line 60) | @Override
method runCommand (line 77) | @Override
method runCommand (line 94) | @Override
method runCommand (line 111) | @Override
method runCommandAsync (line 131) | @Override
method runCommandAsync (line 138) | @Override
method runCommandAsync (line 145) | @Override
method runCommandAsync (line 152) | @Override
method runCommandAsync (line 159) | @Override
FILE: comsat-mongodb-allanbank/src/main/java/co/paralleluniverse/fibers/mongodb/FiberMongoFactory.java
class FiberMongoFactory (line 24) | public class FiberMongoFactory {
method createClient (line 26) | public static MongoClient createClient(MongoClientConfiguration mcc) {
method createClient (line 30) | public static MongoClient createClient(MongoDbUri uri) {
method createClient (line 34) | public static MongoClient createClient(String uri) {
FILE: comsat-mongodb-allanbank/src/main/java/co/paralleluniverse/fibers/mongodb/FiberMongoUtils.java
class FiberMongoUtils (line 23) | public class FiberMongoUtils {
method callbackSettingFuture (line 31) | public static <T> Callback<T> callbackSettingFuture(final SettableFutu...
FILE: comsat-mongodb-allanbank/src/main/java/co/paralleluniverse/fibers/mongodb/SettableListenableFuture.java
class SettableListenableFuture (line 26) | public class SettableListenableFuture<V> extends SettableFuture<V> imple...
method set (line 29) | @Override
method setException (line 36) | @Override
method addListener (line 43) | @Override
FILE: comsat-mongodb-allanbank/src/test/java/co/paralleluniverse/fibers/mongodb/AbstractTestFiberMongo.java
class AbstractTestFiberMongo (line 45) | public abstract class AbstractTestFiberMongo {
method addListenerCalledFlagSetter (line 57) | protected <V> ListenableFuture<V> addListenerCalledFlagSetter(Listenab...
method setUpTestBase (line 62) | protected void setUpTestBase() throws ExecutionException, InterruptedE...
method tearDownTestBase (line 82) | protected void tearDownTestBase() throws ExecutionException, Interrupt...
method assertListenerCalled (line 98) | protected void assertListenerCalled() throws SuspendExecution, Interru...
method setUpClass (line 102) | @BeforeClass
method tearDownClass (line 124) | @AfterClass
FILE: comsat-mongodb-allanbank/src/test/java/co/paralleluniverse/fibers/mongodb/FiberMongoCollTest.java
class FiberMongoCollTest (line 54) | public class FiberMongoCollTest extends AbstractTestFiberMongo {
method insertTestSet (line 73) | private int insertTestSet() throws SuspendExecution, MongoDbException,...
method deleteTestSet (line 77) | private long deleteTestSet() throws SuspendExecution, MongoDbException...
method setUpTest (line 81) | @Before
method tearDownTest (line 94) | @After
method getAggregateSizeAsString (line 112) | private static String getAggregateSizeAsString(MongoIterator<Document>...
method testAggregateQuery (line 121) | @Test
method testAggregateBuilder (line 132) | @Test
method testAggregateQueryFuture (line 143) | @Test
method testAggregateBuilderFuture (line 159) | @Test
method testCount (line 175) | @Test
method testCountBuilder (line 186) | @Test
method testCountQuery (line 197) | @Test
method testCountQueryDocument (line 208) | @Test
method testCountFuture (line 219) | @Test
method testCountBuilderFuture (line 235) | @Test
method testCountQueryFuture (line 251) | @Test
method testCountQueryDocumentFuture (line 267) | @Test
method testDeleteQuery (line 286) | @Test
method testDeleteQuerySingle (line 297) | @Test
method testDeleteQuerySingleDurable (line 308) | @Test
method testDeleteQueryDurable (line 319) | @Test
method testDeleteQueryFuture (line 330) | @Test
method testDeleteQuerySingleFuture (line 346) | @Test
method testDeleteQuerySingleDurableFuture (line 362) | @Test
method testDeleteQueryDurableFuture (line 378) | @Test
method getDistinctSize (line 394) | private static long getDistinctSize(MongoIterator<Element> distinct) t...
method testDistinctQuery (line 402) | @Test
method testDistinctBuilder (line 413) | @Test
method testDistinctQueryFuture (line 424) | @Test
method testDistinctBuilderFuture (line 440) | @Test
method testExplainAggregateQuery (line 459) | @Test
method testExplainAggregateBuilder (line 470) | @Test
method testExplainFindQueryDocument (line 483) | @Test
method testExplainFindQuery (line 494) | @Test
method testExplainFindBuilder (line 505) | @Test
method testExplainAggregateQueryFuture (line 516) | @Test
method testExplainAggregateBuilderFuture (line 532) | @Test
method testExplainFindQueryFuture (line 548) | @Test
method testExplainFindBuilderFuture (line 564) | @Test
method testFindQueryDocument (line 580) | @Test
method testFindQuery (line 591) | @Test
method testFindBuilder (line 602) | @Test
method testFindQueryFuture (line 613) | @Test
method testFindQueryDocumentFuture (line 629) | @Test
method testFindBuilderFuture (line 645) | @Test
method testFindAndModifyQuery (line 668) | @Test
method testFindAndModifyBuilder (line 679) | @Test
method testFindAndModifyQueryFuture (line 690) | @Test
method testFindAndModifyBuilderFuture (line 706) | @Test
method testFindOneQueryDocument (line 722) | @Test
method testFindOneQuery (line 733) | @Test
method testFindOneBuilder (line 744) | @Test
method testFindOneQueryDocumentFuture (line 755) | @Test
method testFindOneQueryFuture (line 771) | @Test
method testFindOneBuilderFuture (line 787) | @Test
method getGroupByResultAsString (line 813) | private static String getGroupByResultAsString(Element groupBy) {
method testGroupByQuery (line 817) | @Test
method testGroupByBuilder (line 828) | @Test
method testGroupByQueryFuture (line 839) | @Test
method testGroupByBuilderFuture (line 855) | @Test
method testInsert (line 871) | @Test
method testInsertContinueOnError (line 883) | @Test
method testInsertContinueOnErrorDurable (line 895) | @Test
method testInsertDurable (line 907) | @Test
method testInsertFuture (line 919) | @Test
method testInsertContinueOnErrorFuture (line 936) | @Test
method testInsertContinueOnErrorDurableFuture (line 953) | @Test
method testInsertDurableFuture (line 970) | @Test
method getMapReduceSizeAsString (line 987) | private static String getMapReduceSizeAsString(MongoIterator<Document>...
method testMapReduceQuery (line 1002) | @Test
method testMapReduceBuilder (line 1013) | @Test
method testMapReduceQueryFuture (line 1024) | @Test
method testMapReduceBuilderFuture (line 1040) | @Test
method testParallelScanQuery (line 1059) | @Test
method testParallelScanBuilder (line 1070) | @Test
method testParallelScanQueryFuture (line 1081) | @Test
method testParallelScanBuilderFuture (line 1097) | @Test
method updatedDocument (line 1114) | private static Document updatedDocument(Document docLoaded) {
method testSaveQuery (line 1119) | @Test
method testSaveQueryDurable (line 1132) | @Test
method testSaveQueryFuture (line 1145) | @Test
method testSaveQueryDurableFuture (line 1163) | @Test
method testTextSearchQuery (line 1183) | @Test
method testTextSearchBuilder (line 1197) | @Test
method testTextSearchQueryFuture (line 1211) | @Test
method testTextSearchBuilderFuture (line 1230) | @Test
method testUpate (line 1251) | @Test
method testUpdateMultiUpsert (line 1262) | @Test
method testUpdateMultiUpsertDurability (line 1273) | @Test
method testUpdateDurability (line 1284) | @Test
method testUpdateFuture (line 1295) | @Test
method testUpdateMultiUpsertFuture (line 1311) | @Test
method testUpdateMultiUpsertDurabilityFuture (line 1327) | @Test
method testUpdateDurabilityFuture (line 1343) | @Test
method testWriteQuery (line 1361) | @Test
method testWriteBuilder (line 1372) | @Test
method testWriteQueryFuture (line 1383) | @Test
method testWriteBuilderFuture (line 1399) | @Test
FILE: comsat-mongodb-allanbank/src/test/java/co/paralleluniverse/fibers/mongodb/FiberMongoDbTest.java
class FiberMongoDbTest (line 35) | public class FiberMongoDbTest extends AbstractTestFiberMongo {
method setUpTest (line 36) | @Before
method tearDownTest (line 41) | @After
method testRunCommandDocument (line 46) | @Test
method testRunCommandString (line 60) | @Test
method testRunCommandOptions (line 71) | @Test
method testRunCommandNameIntValueOptions (line 82) | @Test
method testRunCommandNameStringValueOptions (line 93) | @Test
method testRunCommandDocumentFuture (line 104) | @Test
method testRunCommandStringFuture (line 120) | @Test
method testRunCommandOptionsFuture (line 136) | @Test
method testRunCommandNameIntValueOptionsFuture (line 152) | @Test
method testRunCommandNameStringValueOptionsFuture (line 168) | @Test
FILE: comsat-okhttp/src/main/java/co/paralleluniverse/fibers/okhttp/FiberCall.java
class FiberCall (line 32) | public class FiberCall extends CallProxy {
method FiberCall (line 34) | public FiberCall(final OkHttpClient client, final Request originalRequ...
method execute (line 38) | @Override
class FiberAsyncCallback (line 48) | private class FiberAsyncCallback extends FiberAsync<Response, IOExcept...
method requestAsync (line 49) | @Override
method onFailure (line 54) | @Override
method onResponse (line 59) | @Override
method requestSync (line 64) | @Override
FILE: comsat-okhttp/src/main/java/co/paralleluniverse/fibers/okhttp/FiberOkHttpClient.java
class FiberOkHttpClient (line 25) | public class FiberOkHttpClient extends OkHttpClient {
method newCall (line 27) | @Override
FILE: comsat-okhttp/src/main/java/co/paralleluniverse/fibers/okhttp/FiberOkHttpUtil.java
class FiberOkHttpUtil (line 34) | public class FiberOkHttpUtil {
method executeInFiber (line 35) | public static Response executeInFiber(final FiberOkHttpClient client, ...
method executeInFiber (line 39) | public static Response executeInFiber(final Call call) throws Interrup...
method openInFiber (line 54) | public static HttpURLConnection openInFiber(final OkUrlFactory factory...
method executeInFiber (line 65) | public static HttpResponse executeInFiber(final OkApacheClient client,...
method FiberOkHttpUtil (line 80) | private FiberOkHttpUtil() {
FILE: comsat-okhttp/src/main/java/com/squareup/okhttp/CallProxy.java
class CallProxy (line 21) | public class CallProxy extends Call {
method CallProxy (line 22) | public CallProxy(final OkHttpClient client, final Request originalRequ...
FILE: comsat-okhttp/src/test/java/co/paralleluniverse/fibers/okhttp/test/InterceptorTest.java
class InterceptorTest (line 51) | public final class InterceptorTest {
method applicationInterceptorsCanShortCircuitResponses (line 57) | @Test public void applicationInterceptorsCanShortCircuitResponses() th...
method networkInterceptorsCannotShortCircuitResponses (line 82) | @Ignore
method networkInterceptorsCannotCallProceedMultipleTimes (line 113) | @Ignore
method networkInterceptorsCannotChangeServerAddress (line 139) | @Ignore
method networkInterceptorsHaveConnectionAccess (line 168) | @Test public void networkInterceptorsHaveConnectionAccess() throws Exc...
method networkInterceptorsObserveNetworkHeaders (line 185) | @Test public void networkInterceptorsObserveNetworkHeaders() throws Ex...
method networkInterceptorsCanChangeRequestMethodFromGetToPost (line 221) | @Test public void networkInterceptorsCanChangeRequestMethodFromGetToPo...
method applicationInterceptorsRewriteRequestToServer (line 250) | @Test public void applicationInterceptorsRewriteRequestToServer() thro...
method networkInterceptorsRewriteRequestToServer (line 254) | @Test public void networkInterceptorsRewriteRequestToServer() throws E...
method rewriteRequestToServer (line 258) | private void rewriteRequestToServer(List<Interceptor> interceptors) th...
method applicationInterceptorsRewriteResponseFromServer (line 286) | @Test public void applicationInterceptorsRewriteResponseFromServer() t...
method networkInterceptorsRewriteResponseFromServer (line 290) | @Test public void networkInterceptorsRewriteResponseFromServer() throw...
method rewriteResponseFromServer (line 294) | private void rewriteResponseFromServer(List<Interceptor> interceptors)...
method multipleApplicationInterceptors (line 319) | @Test public void multipleApplicationInterceptors() throws Exception {
method multipleNetworkInterceptors (line 323) | @Test public void multipleNetworkInterceptors() throws Exception {
method multipleInterceptors (line 327) | private void multipleInterceptors(List<Interceptor> interceptors) thro...
method asyncApplicationInterceptors (line 366) | @Test public void asyncApplicationInterceptors() throws Exception {
method asyncNetworkInterceptors (line 370) | @Test public void asyncNetworkInterceptors() throws Exception {
method asyncInterceptors (line 374) | private void asyncInterceptors(List<Interceptor> interceptors) throws ...
method applicationInterceptorsCanMakeMultipleRequestsToServer (line 396) | @Test public void applicationInterceptorsCanMakeMultipleRequestsToServ...
method interceptorMakesAnUnrelatedRequest (line 416) | @Test public void interceptorMakesAnUnrelatedRequest() throws Exception {
method interceptorMakesAnUnrelatedAsyncRequest (line 442) | @Test public void interceptorMakesAnUnrelatedAsyncRequest() throws Exc...
method applicationkInterceptorThrowsRuntimeExceptionSynchronous (line 474) | @Ignore @Test public void applicationkInterceptorThrowsRuntimeExceptio...
method networkInterceptorThrowsRuntimeExceptionSynchronous (line 478) | @Ignore @Test public void networkInterceptorThrowsRuntimeExceptionSync...
method interceptorThrowsRuntimeExceptionSynchronous (line 488) | private void interceptorThrowsRuntimeExceptionSynchronous(
method networkInterceptorModifiedRequestIsReturned (line 508) | @Test public void networkInterceptorModifiedRequestIsReturned() throws...
method applicationInterceptorThrowsRuntimeExceptionAsynchronous (line 532) | @Test public void applicationInterceptorThrowsRuntimeExceptionAsynchro...
method networkInterceptorThrowsRuntimeExceptionAsynchronous (line 536) | @Test public void networkInterceptorThrowsRuntimeExceptionAsynchronous...
method interceptorThrowsRuntimeExceptionAsynchronous (line 546) | private void interceptorThrowsRuntimeExceptionAsynchronous(
method applicationInterceptorReturnsNull (line 565) | @Ignore @Test public void applicationInterceptorReturnsNull() throws E...
method networkInterceptorReturnsNull (line 591) | @Ignore @Test public void networkInterceptorReturnsNull() throws Excep...
method uppercase (line 616) | private RequestBody uppercase(final RequestBody original) {
method uppercase (line 635) | private Sink uppercase(final BufferedSink original) {
method uppercase (line 643) | static ResponseBody uppercase(ResponseBody original) throws IOException {
method uppercase (line 648) | private static Source uppercase(final Source original) {
method gzip (line 659) | private Buffer gzip(String data) throws IOException {
class ExceptionCatchingExecutor (line 668) | private static class ExceptionCatchingExecutor extends ThreadPoolExecu...
method ExceptionCatchingExecutor (line 671) | public ExceptionCatchingExecutor() {
method execute (line 675) | @Override public void execute(final Runnable runnable) {
method takeException (line 687) | public Exception takeException() throws InterruptedException {
FILE: comsat-okhttp/src/test/java/co/paralleluniverse/fibers/okhttp/test/apache/OkApacheClientTest.java
class OkApacheClientTest (line 36) | public class OkApacheClientTest {
method setUp (line 40) | @Before public void setUp() throws IOException {
method tearDown (line 46) | @After public void tearDown() throws IOException {
method success (line 50) | @Suspendable @Test public void success() throws Exception {
method redirect (line 59) | @Suspendable @Test public void redirect() throws Exception {
method sessionExpired (line 69) | @Suspendable @Test public void sessionExpired() throws Exception {
method headers (line 77) | @Suspendable @Test public void headers() throws Exception {
method postByteEntity (line 95) | @Suspendable @Test public void postByteEntity() throws Exception {
method postInputStreamEntity (line 108) | @Suspendable @Test public void postInputStreamEntity() throws Exception {
method postEmptyEntity (line 120) | @Suspendable @Test public void postEmptyEntity() throws Exception {
method putEmptyEntity (line 129) | @Suspendable @Test public void putEmptyEntity() throws Exception {
method postOverrideContentType (line 139) | @Suspendable @Test public void postOverrideContentType() throws Except...
method contentType (line 152) | @Suspendable @Test public void contentType() throws Exception {
method contentTypeIsCaseInsensitive (line 182) | @Suspendable @Test public void contentTypeIsCaseInsensitive() throws U...
method contentEncoding (line 191) | @Suspendable @Test public void contentEncoding() throws Exception {
method jsonGzipResponse (line 210) | @Suspendable @Test public void jsonGzipResponse() throws Exception {
method jsonTransparentGzipResponse (line 237) | @Suspendable @Test public void jsonTransparentGzipResponse() throws Ex...
method gzip (line 266) | private static Buffer gzip(String body) throws IOException {
method gunzip (line 272) | private static String gunzip(HttpEntity body) throws IOException {
FILE: comsat-okhttp/src/test/java/co/paralleluniverse/fibers/okhttp/test/apache/OkApacheTestWrapper.java
class OkApacheTestWrapper (line 10) | public final class OkApacheTestWrapper {
method OkApacheTestWrapper (line 13) | public OkApacheTestWrapper(OkApacheClient underlying) {
method execute (line 17) | public HttpResponse execute(HttpRequestBase request) throws IOExceptio...
FILE: comsat-okhttp/src/test/java/co/paralleluniverse/fibers/okhttp/test/utils/FiberCallTestWrapper.java
class FiberCallTestWrapper (line 13) | public final class FiberCallTestWrapper extends FiberCall {
method FiberCallTestWrapper (line 16) | public FiberCallTestWrapper(FiberOkHttpClient client, Call call, Reque...
method execute (line 21) | @Override
method enqueue (line 30) | @Override
method cancel (line 35) | @Override
method isCanceled (line 40) | @Override
FILE: comsat-okhttp/src/test/java/co/paralleluniverse/fibers/okhttp/test/utils/FiberOkHttpClientTestWrapper.java
class FiberOkHttpClientTestWrapper (line 7) | final public class FiberOkHttpClientTestWrapper extends FiberOkHttpClient {
method newCall (line 8) | @Override
FILE: comsat-okhttp/src/test/java/co/paralleluniverse/fibers/okhttp/test/utils/original/DelegatingSSLSocket.java
class DelegatingSSLSocket (line 33) | public abstract class DelegatingSSLSocket extends SSLSocket {
method DelegatingSSLSocket (line 36) | public DelegatingSSLSocket(SSLSocket delegate) {
method shutdownInput (line 40) | @Override public void shutdownInput() throws IOException {
method shutdownOutput (line 44) | @Override public void shutdownOutput() throws IOException {
method getSupportedCipherSuites (line 48) | @Override public String[] getSupportedCipherSuites() {
method getEnabledCipherSuites (line 52) | @Override public String[] getEnabledCipherSuites() {
method setEnabledCipherSuites (line 56) | @Override public void setEnabledCipherSuites(String[] suites) {
method getSupportedProtocols (line 60) | @Override public String[] getSupportedProtocols() {
method getEnabledProtocols (line 64) | @Override public String[] getEnabledProtocols() {
method setEnabledProtocols (line 68) | @Override public void setEnabledProtocols(String[] protocols) {
method getSession (line 72) | @Override public SSLSession getSession() {
method addHandshakeCompletedListener (line 76) | @Override public void addHandshakeCompletedListener(HandshakeCompleted...
method removeHandshakeCompletedListener (line 80) | @Override public void removeHandshakeCompletedListener(HandshakeComple...
method startHandshake (line 84) | @Override public void startHandshake() throws IOException {
method setUseClientMode (line 88) | @Override public void setUseClientMode(boolean mode) {
method getUseClientMode (line 92) | @Override public boolean getUseClientMode() {
method setNeedClientAuth (line 96) | @Override public void setNeedClientAuth(boolean need) {
method setWantClientAuth (line 100) | @Override public void setWantClientAuth(boolean want) {
method getNeedClientAuth (line 104) | @Override public boolean getNeedClientAuth() {
method getWantClientAuth (line 108) | @Override public boolean getWantClientAuth() {
method setEnableSessionCreation (line 112) | @Override public void setEnableSessionCreation(boolean flag) {
method getEnableSessionCreation (line 116) | @Override public boolean getEnableSessionCreation() {
method getSSLParameters (line 120) | @Override public SSLParameters getSSLParameters() {
method setSSLParameters (line 124) | @Override public void setSSLParameters(SSLParameters p) {
method close (line 128) | @Override public void close() throws IOException {
method getInetAddress (line 132) | @Override public InetAddress getInetAddress() {
method getInputStream (line 136) | @Override public InputStream getInputStream() throws IOException {
method getKeepAlive (line 140) | @Override public boolean getKeepAlive() throws SocketException {
method getLocalAddress (line 144) | @Override public InetAddress getLocalAddress() {
method getLocalPort (line 148) | @Override public int getLocalPort() {
method getOutputStream (line 152) | @Override public OutputStream getOutputStream() throws IOException {
method getPort (line 156) | @Override public int getPort() {
method getSoLinger (line 160) | @Override public int getSoLinger() throws SocketException {
method getReceiveBufferSize (line 164) | @Override public int getReceiveBufferSize() throws SocketException {
method getSendBufferSize (line 168) | @Override public int getSendBufferSize() throws SocketException {
method getSoTimeout (line 172) | @Override public int getSoTimeout() throws SocketException {
method getTcpNoDelay (line 176) | @Override public boolean getTcpNoDelay() throws SocketException {
method setKeepAlive (line 180) | @Override public void setKeepAlive(boolean keepAlive) throws SocketExc...
method setSendBufferSize (line 184) | @Override public void setSendBufferSize(int size) throws SocketExcepti...
method setReceiveBufferSize (line 188) | @Override public void setReceiveBufferSize(int size) throws SocketExce...
method setSoLinger (line 192) | @Override public void setSoLinger(boolean on, int timeout) throws Sock...
method setSoTimeout (line 196) | @Override public void setSoTimeout(int timeout) throws SocketException {
method setTcpNoDelay (line 200) | @Override public void setTcpNoDelay(boolean on) throws SocketException {
method toString (line 204) | @Override public String toString() {
method getLocalSocketAddress (line 208) | @Override public SocketAddress getLocalSocketAddress() {
method getRemoteSocketAddress (line 212) | @Override public SocketAddress getRemoteSocketAddress() {
method isBound (line 216) | @Override public boolean isBound() {
method isConnected (line 220) | @Override public boolean isConnected() {
method isClosed (line 224) | @Override public boolean isClosed() {
method bind (line 228) | @Override public void bind(SocketAddress localAddr) throws IOException {
method connect (line 232) | @Override public void connect(SocketAddress remoteAddr) throws IOExcep...
method connect (line 236) | @Override public void connect(SocketAddress remoteAddr, int timeout) t...
method isInputShutdown (line 240) | @Override public boolean isInputShutdown() {
method isOutputShutdown (line 244) | @Override public boolean isOutputShutdown() {
method setReuseAddress (line 248) | @Override public void setReuseAddress(boolean reuse) throws SocketExce...
method getReuseAddress (line 252) | @Override public boolean getReuseAddress() throws SocketException {
method setOOBInline (line 256) | @Override public void setOOBInline(boolean oobinline) throws SocketExc...
method getOOBInline (line 260) | @Override public boolean getOOBInline() throws SocketException {
method setTrafficClass (line 264) | @Override public void setTrafficClass(int value) throws SocketException {
method getTrafficClass (line 268) | @Override public int getTrafficClass() throws SocketException {
method sendUrgentData (line 272) | @Override public void sendUrgentData(int value) throws IOException {
method getChannel (line 276) | @Override public SocketChannel getChannel() {
method setPerformancePreferences (line 280) | @Override public void setPerformancePreferences(int connectionTime, in...
FILE: comsat-okhttp/src/test/java/co/paralleluniverse/fibers/okhttp/test/utils/original/DelegatingSSLSocketFactory.java
class DelegatingSSLSocketFactory (line 29) | public class DelegatingSSLSocketFactory extends SSLSocketFactory {
method DelegatingSSLSocketFactory (line 33) | public DelegatingSSLSocketFactory(SSLSocketFactory delegate) {
method createSocket (line 37) | @Override
method createSocket (line 43) | @Override
method createSocket (line 49) | @Override
method createSocket (line 56) | @Override
method createSocket (line 62) | @Override
method getDefaultCipherSuites (line 69) | @Override
method getSupportedCipherSuites (line 74) | @Override
method createSocket (line 79) | @Override
method configureSocket (line 86) | protected SSLSocket configureSocket(SSLSocket sslSocket) throws IOExce...
FILE: comsat-okhttp/src/test/java/co/paralleluniverse/fibers/okhttp/test/utils/original/DelegatingServerSocketFactory.java
class DelegatingServerSocketFactory (line 27) | public class DelegatingServerSocketFactory extends ServerSocketFactory {
method DelegatingServerSocketFactory (line 31) | public DelegatingServerSocketFactory(ServerSocketFactory delegate) {
method createServerSocket (line 35) | @Override
method createServerSocket (line 41) | @Override
method createServerSocket (line 47) | @Override
method createServerSocket (line 53) | @Override
method configureServerSocket (line 60) | protected ServerSocket configureServerSocket(ServerSocket serverSocket...
FILE: comsat-okhttp/src/test/java/co/paralleluniverse/fibers/okhttp/test/utils/original/DelegatingSocketFactory.java
class DelegatingSocketFactory (line 28) | public class DelegatingSocketFactory extends SocketFactory {
method DelegatingSocketFactory (line 32) | public DelegatingSocketFactory(SocketFactory delegate) {
method createSocket (line 36) | @Override
method createSocket (line 42) | @Override
method createSocket (line 48) | @Override
method createSocket (line 55) | @Override
method createSocket (line 61) | @Override
method configureSocket (line 68) | protected Socket configureSocket(Socket socket) throws IOException {
FILE: comsat-okhttp/src/test/java/co/paralleluniverse/fibers/okhttp/test/utils/original/DoubleInetAddressDns.java
class DoubleInetAddressDns (line 28) | public class DoubleInetAddressDns implements Dns {
method lookup (line 29) | @Override public List<InetAddress> lookup(String hostname) throws Unkn...
FILE: comsat-okhttp/src/test/java/co/paralleluniverse/fibers/okhttp/test/utils/original/FallbackTestClientSocketFactory.java
class FallbackTestClientSocketFactory (line 35) | public class FallbackTestClientSocketFactory extends DelegatingSSLSocket...
method FallbackTestClientSocketFactory (line 42) | public FallbackTestClientSocketFactory(SSLSocketFactory delegate) {
method configureSocket (line 46) | @Override protected SSLSocket configureSocket(SSLSocket sslSocket) thr...
class TlsFallbackScsvDisabledSSLSocket (line 50) | private static class TlsFallbackScsvDisabledSSLSocket extends Delegati...
method TlsFallbackScsvDisabledSSLSocket (line 52) | public TlsFallbackScsvDisabledSSLSocket(SSLSocket socket) {
method setEnabledCipherSuites (line 56) | @Override public void setEnabledCipherSuites(String[] suites) {
FILE: comsat-okhttp/src/test/java/co/paralleluniverse/fibers/okhttp/test/utils/original/RecordedResponse.java
class RecordedResponse (line 35) | public final class RecordedResponse {
method RecordedResponse (line 42) | public RecordedResponse(Request request, Response response, WebSocket ...
method assertRequestUrl (line 51) | public RecordedResponse assertRequestUrl(URL url) {
method assertRequestMethod (line 56) | public RecordedResponse assertRequestMethod(String method) {
method assertRequestHeader (line 61) | public RecordedResponse assertRequestHeader(String name, String... val...
method assertCode (line 66) | public RecordedResponse assertCode(int expectedCode) {
method assertSuccessful (line 71) | public RecordedResponse assertSuccessful() {
method assertNotSuccessful (line 76) | public RecordedResponse assertNotSuccessful() {
method assertHeader (line 81) | public RecordedResponse assertHeader(String name, String... values) {
method assertBody (line 86) | public RecordedResponse assertBody(String expectedBody) {
method assertHandshake (line 91) | public RecordedResponse assertHandshake() {
method priorResponse (line 105) | public RecordedResponse priorResponse() {
method networkResponse (line 116) | public RecordedResponse networkResponse() {
method assertNoNetworkResponse (line 124) | public RecordedResponse assertNoNetworkResponse() {
method assertNoCacheResponse (line 130) | public RecordedResponse assertNoCacheResponse() {
method cacheResponse (line 139) | public RecordedResponse cacheResponse() {
method assertFailure (line 146) | public void assertFailure(String... messages) {
FILE: comsat-okhttp/src/test/java/co/paralleluniverse/fibers/okhttp/test/utils/original/RecordingAuthenticator.java
class RecordingAuthenticator (line 23) | public final class RecordingAuthenticator extends Authenticator {
method RecordingAuthenticator (line 30) | public RecordingAuthenticator(PasswordAuthentication authentication) {
method RecordingAuthenticator (line 34) | public RecordingAuthenticator() {
method getPasswordAuthentication (line 38) | @Override protected PasswordAuthentication getPasswordAuthentication() {
FILE: comsat-okhttp/src/test/java/co/paralleluniverse/fibers/okhttp/test/utils/original/RecordingCallback.java
class RecordingCallback (line 32) | public class RecordingCallback implements Callback {
method onFailure (line 37) | @Override public synchronized void onFailure(Request request, IOExcept...
method onResponse (line 42) | @Override public synchronized void onResponse(Response response) throw...
method await (line 52) | public synchronized RecordedResponse await(HttpUrl url) throws Excepti...
method assertNoResponse (line 71) | public synchronized void assertNoResponse(HttpUrl url) throws Exception {
FILE: comsat-okhttp/src/test/java/co/paralleluniverse/fibers/okhttp/test/utils/original/RecordingOkAuthenticator.java
class RecordingOkAuthenticator (line 25) | public final class RecordingOkAuthenticator implements Authenticator {
method RecordingOkAuthenticator (line 30) | public RecordingOkAuthenticator(String credential) {
method onlyResponse (line 34) | public Response onlyResponse() {
method onlyProxy (line 39) | public Proxy onlyProxy() {
method authenticate (line 44) | @Override public Request authenticate(Proxy proxy, Response response) {
method authenticateProxy (line 52) | @Override public Request authenticateProxy(Proxy proxy, Response respo...
FILE: comsat-okhttp/src/test/java/co/paralleluniverse/fibers/okhttp/test/utils/original/SingleInetAddressDns.java
class SingleInetAddressDns (line 29) | public class SingleInetAddressDns implements Dns {
method lookup (line 30) | @Override public List<InetAddress> lookup(String hostname) throws Unkn...
FILE: comsat-okhttp/src/test/java/co/paralleluniverse/fibers/okhttp/test/utils/original/SocksProxy.java
class SocksProxy (line 43) | public final class SocksProxy {
method play (line 60) | public void play() throws IOException {
method proxy (line 79) | public Proxy proxy() {
method connectionCount (line 84) | public int connectionCount() {
method shutdown (line 88) | public void shutdown() throws Exception {
method service (line 96) | private void service(final Socket from) {
method hello (line 112) | private void hello(BufferedSource fromSource, BufferedSink fromSink) t...
method acceptCommand (line 140) | private void acceptCommand(InetAddress fromAddress, BufferedSource fro...
method transfer (line 199) | private void transfer(final InetAddress fromAddress, final InetAddress...
FILE: comsat-okhttp/src/test/java/co/paralleluniverse/fibers/okhttp/test/utils/original/SocksProxyTest.java
class SocksProxyTest (line 36) | public final class SocksProxyTest {
method setUp (line 40) | @Before public void setUp() throws Exception {
method tearDown (line 45) | @After public void tearDown() throws Exception {
method proxy (line 50) | @Test public void proxy() throws Exception {
method proxySelector (line 69) | @Test public void proxySelector() throws Exception {
FILE: comsat-okhttp/src/test/java/co/paralleluniverse/fibers/okhttp/test/utils/original/TestLogHandler.java
class TestLogHandler (line 27) | public final class TestLogHandler extends Handler {
method publish (line 30) | @Override public synchronized void publish(LogRecord logRecord) {
method flush (line 35) | @Override public void flush() {
method close (line 38) | @Override public void close() throws SecurityException {
method take (line 41) | public synchronized String take() throws InterruptedException {
FILE: comsat-okhttp/src/test/java/co/paralleluniverse/fibers/okhttp/test/utils/original/http/FakeDns.java
class FakeDns (line 28) | public final class FakeDns implements Dns {
method addresses (line 33) | public FakeDns addresses(List<InetAddress> addresses) {
method unknownHost (line 39) | public FakeDns unknownHost() {
method address (line 44) | public InetAddress address(int index) {
method lookup (line 48) | @Override public List<InetAddress> lookup(String hostname) throws Unkn...
method assertRequests (line 54) | public void assertRequests(String... expectedHosts) {
FILE: comsat-okhttp/src/test/java/co/paralleluniverse/fibers/okhttp/test/utils/original/io/InMemoryFileSystem.java
class InMemoryFileSystem (line 39) | public final class InMemoryFileSystem implements FileSystem, TestRule {
method apply (line 44) | @Override public Statement apply(final Statement base, Description des...
method ensureResourcesClosed (line 53) | public void ensureResourcesClosed() {
method source (line 70) | @Override public Source source(File file) throws FileNotFoundException {
method sink (line 85) | @Override public Sink sink(File file) throws FileNotFoundException {
method appendingSink (line 89) | @Override public Sink appendingSink(File file) throws FileNotFoundExce...
method sink (line 93) | private Sink sink(File file, boolean appending) {
method delete (line 114) | @Override public void delete(File file) throws IOException {
method exists (line 118) | @Override public boolean exists(File file) throws IOException {
method size (line 122) | @Override public long size(File file) {
method rename (line 127) | @Override public void rename(File from, File to) throws IOException {
method deleteContents (line 133) | @Override public void deleteContents(File directory) throws IOException {
FILE: comsat-okhttp/src/test/java/co/paralleluniverse/fibers/okhttp/test/utils/original/testing/RecordingHostnameVerifier.java
class RecordingHostnameVerifier (line 23) | public final class RecordingHostnameVerifier implements HostnameVerifier {
method verify (line 26) | public boolean verify(String hostname, SSLSession session) {
FILE: comsat-okhttp/src/test/java/com/squareup/okhttp/CacheTest.java
class CacheTest (line 70) | public final class CacheTest {
method verify (line 72) | @Override public boolean verify(String s, SSLSession sslSession) {
method setUp (line 86) | @Before public void setUp() throws Exception {
method tearDown (line 93) | @After public void tearDown() throws Exception {
method responseCachingByResponseCode (line 103) | @Test public void responseCachingByResponseCode() throws Exception {
method assertCached (line 157) | private void assertCached(boolean shouldPut, int responseCode) throws ...
method responseCachingAndInputStreamSkipWithFixedLength (line 195) | @Test public void responseCachingAndInputStreamSkipWithFixedLength() t...
method responseCachingAndInputStreamSkipWithChunkedEncoding (line 199) | @Test public void responseCachingAndInputStreamSkipWithChunkedEncoding...
method responseCachingAndInputStreamSkipWithNoLengthHeaders (line 203) | @Test public void responseCachingAndInputStreamSkipWithNoLengthHeaders...
method testResponseCaching (line 211) | private void testResponseCaching(TransferKind transferKind) throws IOE...
method secureResponseCaching (line 247) | @Test public void secureResponseCaching() throws IOException {
method responseCachingAndRedirects (line 283) | @Test public void responseCachingAndRedirects() throws Exception {
method redirectToCachedResult (line 308) | @Test public void redirectToCachedResult() throws Exception {
method secureResponseCachingAndRedirects (line 341) | @Test public void secureResponseCachingAndRedirects() throws IOExcepti...
method secureResponseCachingAndProtocolRedirects (line 380) | @Test public void secureResponseCachingAndProtocolRedirects() throws I...
method foundCachedWithExpiresHeader (line 409) | @Test public void foundCachedWithExpiresHeader() throws Exception {
method foundCachedWithCacheControlHeader (line 413) | @Test public void foundCachedWithCacheControlHeader() throws Exception {
method temporaryRedirectCachedWithExpiresHeader (line 417) | @Test public void temporaryRedirectCachedWithExpiresHeader() throws Ex...
method temporaryRedirectCachedWithCacheControlHeader (line 421) | @Test public void temporaryRedirectCachedWithCacheControlHeader() thro...
method foundNotCachedWithoutCacheHeader (line 425) | @Test public void foundNotCachedWithoutCacheHeader() throws Exception {
method temporaryRedirectNotCachedWithoutCacheHeader (line 429) | @Test public void temporaryRedirectNotCachedWithoutCacheHeader() throw...
method temporaryRedirectCachedWithCachingHeader (line 433) | private void temporaryRedirectCachedWithCachingHeader(
method temporaryRedirectNotCachedWithoutCachingHeader (line 452) | private void temporaryRedirectNotCachedWithoutCachingHeader(int respon...
method serverDisconnectsPrematurelyWithContentLengthHeader (line 466) | @Test public void serverDisconnectsPrematurelyWithContentLengthHeader(...
method serverDisconnectsPrematurelyWithChunkedEncoding (line 470) | @Test public void serverDisconnectsPrematurelyWithChunkedEncoding() th...
method serverDisconnectsPrematurelyWithNoLengthHeaders (line 474) | @Test public void serverDisconnectsPrematurelyWithNoLengthHeaders() th...
method testServerPrematureDisconnect (line 480) | private void testServerPrematureDisconnect(TransferKind transferKind) ...
method clientPrematureDisconnectWithContentLengthHeader (line 505) | @Test public void clientPrematureDisconnectWithContentLengthHeader() t...
method clientPrematureDisconnectWithChunkedEncoding (line 509) | @Test public void clientPrematureDisconnectWithChunkedEncoding() throw...
method clientPrematureDisconnectWithNoLengthHeaders (line 513) | @Test public void clientPrematureDisconnectWithNoLengthHeaders() throw...
method testClientPrematureDisconnect (line 517) | private void testClientPrematureDisconnect(TransferKind transferKind) ...
method defaultExpirationDateFullyCachedForLessThan24Hours (line 544) | @Test public void defaultExpirationDateFullyCachedForLessThan24Hours()...
method defaultExpirationDateConditionallyCached (line 563) | @Test public void defaultExpirationDateConditionallyCached() throws Ex...
method defaultExpirationDateFullyCachedForMoreThan24Hours (line 575) | @Test public void defaultExpirationDateFullyCachedForMoreThan24Hours()...
method noDefaultExpirationForUrlsWithQueryString (line 591) | @Test public void noDefaultExpirationForUrlsWithQueryString() throws E...
method expirationDateInThePastWithLastModifiedHeader (line 604) | @Test public void expirationDateInThePastWithLastModifiedHeader() thro...
method expirationDateInThePastWithNoLastModifiedHeader (line 612) | @Test public void expirationDateInThePastWithNoLastModifiedHeader() th...
method expirationDateInTheFuture (line 617) | @Test public void expirationDateInTheFuture() throws Exception {
method maxAgePreferredWithMaxAgeAndExpires (line 622) | @Test public void maxAgePreferredWithMaxAgeAndExpires() throws Excepti...
method maxAgeInThePastWithDateAndLastModifiedHeaders (line 629) | @Test public void maxAgeInThePastWithDateAndLastModifiedHeaders() thro...
method maxAgeInThePastWithDateHeaderButNoLastModifiedHeader (line 638) | @Test public void maxAgeInThePastWithDateHeaderButNoLastModifiedHeader...
method maxAgeInTheFutureWithDateHeader (line 646) | @Test public void maxAgeInTheFutureWithDateHeader() throws Exception {
method maxAgeInTheFutureWithNoDateHeader (line 652) | @Test public void maxAgeInTheFutureWithNoDateHeader() throws Exception {
method maxAgeWithLastModifiedButNoServedDate (line 657) | @Test public void maxAgeWithLastModifiedButNoServedDate() throws Excep...
method maxAgeInTheFutureWithDateAndLastModifiedHeaders (line 663) | @Test public void maxAgeInTheFutureWithDateAndLastModifiedHeaders() th...
method maxAgePreferredOverLowerSharedMaxAge (line 670) | @Test public void maxAgePreferredOverLowerSharedMaxAge() throws Except...
method maxAgePreferredOverHigherMaxAge (line 677) | @Test public void maxAgePreferredOverHigherMaxAge() throws Exception {
method requestMethodOptionsIsNotCached (line 684) | @Test public void requestMethodOptionsIsNotCached() throws Exception {
method requestMethodGetIsCached (line 688) | @Test public void requestMethodGetIsCached() throws Exception {
method requestMethodHeadIsNotCached (line 692) | @Test public void requestMethodHeadIsNotCached() throws Exception {
method requestMethodPostIsNotCached (line 697) | @Test public void requestMethodPostIsNotCached() throws Exception {
method requestMethodPutIsNotCached (line 702) | @Test public void requestMethodPutIsNotCached() throws Exception {
method requestMethodDeleteIsNotCached (line 706) | @Test public void requestMethodDeleteIsNotCached() throws Exception {
method requestMethodTraceIsNotCached (line 710) | @Test public void requestMethodTraceIsNotCached() throws Exception {
method testRequestMethod (line 714) | private void testRequestMethod(String requestMethod, boolean expectCac...
method requestBodyOrNull (line 742) | private RequestBody requestBodyOrNull(String requestMethod) {
method postInvalidatesCache (line 748) | @Test public void postInvalidatesCache() throws Exception {
method putInvalidatesCache (line 752) | @Test public void putInvalidatesCache() throws Exception {
method deleteMethodInvalidatesCache (line 756) | @Test public void deleteMethodInvalidatesCache() throws Exception {
method testMethodInvalidates (line 760) | private void testMethodInvalidates(String requestMethod) throws Except...
method postInvalidatesCacheWithUncacheableResponse (line 786) | @Test public void postInvalidatesCacheWithUncacheableResponse() throws...
method etag (line 813) | @Test public void etag() throws Exception {
method etagAndExpirationDateInThePast (line 820) | @Test public void etagAndExpirationDateInThePast() throws Exception {
method etagAndExpirationDateInTheFuture (line 830) | @Test public void etagAndExpirationDateInTheFuture() throws Exception {
method cacheControlNoCache (line 837) | @Test public void cacheControlNoCache() throws Exception {
method cacheControlNoCacheAndExpirationDateInTheFuture (line 842) | @Test public void cacheControlNoCacheAndExpirationDateInTheFuture() th...
method pragmaNoCache (line 851) | @Test public void pragmaNoCache() throws Exception {
method pragmaNoCacheAndExpirationDateInTheFuture (line 856) | @Test public void pragmaNoCacheAndExpirationDateInTheFuture() throws E...
method cacheControlNoStore (line 865) | @Test public void cacheControlNoStore() throws Exception {
method cacheControlNoStoreAndExpirationDateInTheFuture (line 870) | @Test public void cacheControlNoStoreAndExpirationDateInTheFuture() th...
method partialRangeResponsesDoNotCorruptCache (line 877) | @Test public void partialRangeResponsesDoNotCorruptCache() throws Exce...
method serverReturnsDocumentOlderThanCache (line 900) | @Test public void serverReturnsDocumentOlderThanCache() throws Excepti...
method clientSideNoStore (line 915) | @Test public void clientSideNoStore() throws Exception {
method nonIdentityEncodingAndConditionalCache (line 937) | @Test public void nonIdentityEncodingAndConditionalCache() throws Exce...
method nonIdentityEncodingAndFullCache (line 943) | @Test public void nonIdentityEncodingAndFullCache() throws Exception {
method assertNonIdentityEncodingCached (line 949) | private void assertNonIdentityEncodingCached(MockResponse response) th...
method notModifiedSpecifiesEncoding (line 966) | @Test public void notModifiedSpecifiesEncoding() throws Exception {
method gzipAndVaryOnAcceptEncoding (line 984) | @Test public void gzipAndVaryOnAcceptEncoding() throws Exception {
method conditionalCacheHitIsNotDoublePooled (line 997) | @Test public void conditionalCacheHitIsNotDoublePooled() throws Except...
method expiresDateBeforeModifiedDate (line 1014) | @Test public void expiresDateBeforeModifiedDate() throws Exception {
method requestMaxAge (line 1020) | @Test public void requestMaxAge() throws IOException {
method requestMinFresh (line 1039) | @Test public void requestMinFresh() throws IOException {
method requestMaxStale (line 1057) | @Test public void requestMaxStale() throws IOException {
method requestMaxStaleDirectiveWithNoValue (line 1076) | @Test public void requestMaxStaleDirectiveWithNoValue() throws IOExcep...
method requestMaxStaleNotHonoredWithMustRevalidate (line 1097) | @Test public void requestMaxStaleNotHonoredWithMustRevalidate() throws...
method requestOnlyIfCachedWithNoResponseCached (line 1115) | @Test public void requestOnlyIfCachedWithNoResponseCached() throws IOE...
method requestOnlyIfCachedWithFullResponseCached (line 1130) | @Test public void requestOnlyIfCachedWithFullResponseCached() throws I...
method requestOnlyIfCachedWithConditionalResponseCached (line 1148) | @Test public void requestOnlyIfCachedWithConditionalResponseCached() t...
method requestOnlyIfCachedWithUnhelpfulResponseCached (line 1167) | @Test public void requestOnlyIfCachedWithUnhelpfulResponseCached() thr...
method requestCacheControlNoCache (line 1184) | @Test public void requestCacheControlNoCache() throws Exception {
method requestPragmaNoCache (line 1203) | @Test public void requestPragmaNoCache() throws Exception {
method clientSuppliedIfModifiedSinceWithCachedResult (line 1222) | @Test public void clientSuppliedIfModifiedSinceWithCachedResult() thro...
method clientSuppliedIfNoneMatchSinceWithCachedResult (line 1233) | @Test public void clientSuppliedIfNoneMatchSinceWithCachedResult() thr...
method assertClientSuppliedCondition (line 1244) | private RecordedRequest assertClientSuppliedCondition(MockResponse see...
method retainServedDateFormat (line 1269) | @Test public void retainServedDateFormat() throws Exception {
method clientSuppliedConditionWithoutCachedResult (line 1298) | @Test public void clientSuppliedConditionWithoutCachedResult() throws ...
method authorizationRequestFullyCached (line 1311) | @Test public void authorizationRequestFullyCached() throws Exception {
method contentLocationDoesNotPopulateCache (line 1328) | @Test public void contentLocationDoesNotPopulateCache() throws Excepti...
method connectionIsReturnedToPoolAfterConditionalSuccess (line 1340) | @Test public void connectionIsReturnedToPoolAfterConditionalSuccess() ...
method statisticsConditionalCacheMiss (line 1359) | @Test public void statisticsConditionalCacheMiss() throws Exception {
method statisticsConditionalCacheHit (line 1380) | @Test public void statisticsConditionalCacheHit() throws Exception {
method statisticsFullCacheHit (line 1401) | @Test public void statisticsFullCacheHit() throws Exception {
method varyMatchesChangedRequestHeaderField (line 1417) | @Test public void varyMatchesChangedRequestHeaderField() throws Except...
method varyMatchesUnchangedRequestHeaderField (line 1441) | @Test public void varyMatchesUnchangedRequestHeaderField() throws Exce...
method varyMatchesAbsentRequestHeaderField (line 1464) | @Test public void varyMatchesAbsentRequestHeaderField() throws Excepti...
method varyMatchesAddedRequestHeaderField (line 1476) | @Test public void varyMatchesAddedRequestHeaderField() throws Exception {
method varyMatchesRemovedRequestHeaderField (line 1492) | @Test public void varyMatchesRemovedRequestHeaderField() throws Except...
method varyFieldsAreCaseInsensitive (line 1508) | @Test public void varyFieldsAreCaseInsensitive() throws Exception {
method varyMultipleFieldsWithMatch (line 1531) | @Test public void varyMultipleFieldsWithMatch() throws Exception {
method varyMultipleFieldsWithNoMatch (line 1559) | @Test public void varyMultipleFieldsWithNoMatch() throws Exception {
method varyMultipleFieldValuesWithMatch (line 1587) | @Test public void varyMultipleFieldValuesWithMatch() throws Exception {
method varyMultipleFieldValuesWithNoMatch (line 1613) | @Test public void varyMultipleFieldValuesWithNoMatch() throws Exception {
method varyAsterisk (line 1639) | @Test public void varyAsterisk() throws Exception {
method varyAndHttps (line 1651) | @Test public void varyAndHttps() throws Exception {
method cachePlusCookies (line 1679) | @Test public void cachePlusCookies() throws Exception {
method getHeadersReturnsNetworkEndToEndHeaders (line 1696) | @Test public void getHeadersReturnsNetworkEndToEndHeaders() throws Exc...
method getHeadersReturnsCachedHopByHopHeaders (line 1715) | @Test public void getHeadersReturnsCachedHopByHopHeaders() throws Exce...
method getHeadersDeletesCached100LevelWarnings (line 1734) | @Test public void getHeadersDeletesCached100LevelWarnings() throws Exc...
method getHeadersRetainsCached200LevelWarnings (line 1752) | @Test public void getHeadersRetainsCached200LevelWarnings() throws Exc...
method assertCookies (line 1770) | public void assertCookies(HttpUrl url, String... expectedCookies) thro...
method doNotCachePartialResponse (line 1778) | @Test public void doNotCachePartialResponse() throws Exception {
method conditionalHitUpdatesCache (line 1786) | @Test public void conditionalHitUpdatesCache() throws Exception {
method responseSourceHeaderCached (line 1817) | @Test public void responseSourceHeaderCached() throws IOException {
method responseSourceHeaderConditionalCacheFetched (line 1831) | @Test public void responseSourceHeaderConditionalCacheFetched() throws...
method responseSourceHeaderConditionalCacheNotFetched (line 1846) | @Test public void responseSourceHeaderConditionalCacheNotFetched() thr...
method responseSourceHeaderFetched (line 1859) | @Test public void responseSourceHeader
Condensed preview — 504 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (3,092K chars).
[
{
"path": ".gitignore",
"chars": 325,
"preview": "/dist/\n/out/\n_site/\n/docs/javadoc/\n.idea/\n*.iml\n/artifacts\n/nbproject/private/\n/.nb-gradle\nbuild/\n.DS_Store\n.gradle/\n.nb"
},
{
"path": ".travis.yml",
"chars": 646,
"preview": "language: java\ninstall: gradle -q assemble\nscript: set -o pipefail; gradle check | sed 's/\\e\\[?.*?[\\@-~]//g'\njdk:\n - or"
},
{
"path": "CONTRIBUTING.md",
"chars": 602,
"preview": "We are happy to receive contributions from the developer community to this free software project. If you make a non-triv"
},
{
"path": "LICENSE",
"chars": 395,
"preview": "COMSAT\nCopyright (C) ${year}, Parallel Universe Software Co. All rights reserved.\n\nThis program and the accompanying mat"
},
{
"path": "NOTICE",
"chars": 2857,
"preview": "This product contains modified source code from Tomcat Library, by the Apache Software Foundation:\n\n Copyright (c) 19"
},
{
"path": "README.md",
"chars": 7927,
"preview": "# *COMSAT*<br/>Scalable, Concurrent Web Apps\n[\n maven"
},
{
"path": "comsat-actors-api/src/main/java/co/paralleluniverse/comsat/webactors/Cookie.java",
"chars": 11562,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-actors-api/src/main/java/co/paralleluniverse/comsat/webactors/HttpMessage.java",
"chars": 3127,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-actors-api/src/main/java/co/paralleluniverse/comsat/webactors/HttpRequest.java",
"chars": 22870,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2016, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-actors-api/src/main/java/co/paralleluniverse/comsat/webactors/HttpResponse.java",
"chars": 16645,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-actors-api/src/main/java/co/paralleluniverse/comsat/webactors/HttpStreamOpened.java",
"chars": 1531,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-actors-api/src/main/java/co/paralleluniverse/comsat/webactors/SSE.java",
"chars": 8595,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-actors-api/src/main/java/co/paralleluniverse/comsat/webactors/WebActor.java",
"chars": 1795,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-actors-api/src/main/java/co/paralleluniverse/comsat/webactors/WebDataMessage.java",
"chars": 2350,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-actors-api/src/main/java/co/paralleluniverse/comsat/webactors/WebMessage.java",
"chars": 1559,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-actors-api/src/main/java/co/paralleluniverse/comsat/webactors/WebSocketOpened.java",
"chars": 775,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-actors-api/src/main/java/co/paralleluniverse/comsat/webactors/WebStreamOpened.java",
"chars": 1432,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-actors-api/src/main/java/co/paralleluniverse/comsat/webactors/package-info.java",
"chars": 504,
"preview": "/*\n * Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.\n * \n * This program and the accompany"
},
{
"path": "comsat-actors-netty/src/main/java/co/paralleluniverse/comsat/webactors/netty/AutoWebActorHandler.java",
"chars": 10927,
"preview": "/*\n * COMSAT\n * Copyright (c) 2015-2016, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-actors-netty/src/main/java/co/paralleluniverse/comsat/webactors/netty/NettyHttpRequest.java",
"chars": 10519,
"preview": "/*\n * COMSAT\n * Copyright (c) 2015-2016, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-actors-netty/src/main/java/co/paralleluniverse/comsat/webactors/netty/WebActorHandler.java",
"chars": 36727,
"preview": "/*\n/*\n * COMSAT\n * Copyright (c) 2015-2016, Parallel Universe Software Co. All rights reserved.\n *\n * This program and t"
},
{
"path": "comsat-actors-netty/src/main/java/co/paralleluniverse/comsat/webactors/netty/package-info.java",
"chars": 542,
"preview": "/*\n * Copyright (c) 2015-2016, Parallel Universe Software Co. All rights reserved.\n * \n * This program and the accompany"
},
{
"path": "comsat-actors-netty/src/test/java/co/paralleluniverse/comsat/webactors/netty/HttpRequestWrapperTest.java",
"chars": 971,
"preview": "package co.paralleluniverse.comsat.webactors.netty;\n\nimport io.netty.buffer.EmptyByteBuf;\nimport io.netty.buffer.Unpoole"
},
{
"path": "comsat-actors-netty/src/test/java/co/paralleluniverse/comsat/webactors/netty/NettyWebActor.java",
"chars": 749,
"preview": "/*\n * COMSAT\n * Copyright (C) 2015, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the accom"
},
{
"path": "comsat-actors-netty/src/test/java/co/paralleluniverse/comsat/webactors/netty/WebActorTest.java",
"chars": 5988,
"preview": "/*\n * COMSAT\n * Copyright (C) 2015-2016, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-actors-servlet/build.gradle",
"chars": 77,
"preview": "dependencies {\n testCompile \"org.springframework:spring-test:$springVer\"\n}"
},
{
"path": "comsat-actors-servlet/src/main/java/co/paralleluniverse/comsat/webactors/servlet/EmbedHttpSessionWsConfigurator.java",
"chars": 1347,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-actors-servlet/src/main/java/co/paralleluniverse/comsat/webactors/servlet/ServletHttpRequest.java",
"chars": 8683,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2016, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-actors-servlet/src/main/java/co/paralleluniverse/comsat/webactors/servlet/ServletWebActors.java",
"chars": 5295,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2016, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-actors-servlet/src/main/java/co/paralleluniverse/comsat/webactors/servlet/WebActorEndpoint.java",
"chars": 10043,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2016, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-actors-servlet/src/main/java/co/paralleluniverse/comsat/webactors/servlet/WebActorInitializer.java",
"chars": 5212,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2016, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-actors-servlet/src/main/java/co/paralleluniverse/comsat/webactors/servlet/WebActorServlet.java",
"chars": 27606,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2016, Parallel Universe Sotware Co. All rights reserved.\n *\n * This program and the a"
},
{
"path": "comsat-actors-servlet/src/main/java/co/paralleluniverse/comsat/webactors/servlet/package-info.java",
"chars": 547,
"preview": "/*\n * Copyright (c) 2013-2016, Parallel Universe Software Co. All rights reserved.\n * \n * This program and the accompany"
},
{
"path": "comsat-actors-servlet/src/test/java/co/paralleluniverse/comsat/webactors/servlet/HttpRequestWrapperTest.java",
"chars": 671,
"preview": "package co.paralleluniverse.comsat.webactors.servlet;\n\nimport org.junit.Test;\nimport org.springframework.mock.web.MockHt"
},
{
"path": "comsat-actors-servlet/src/test/java/co/paralleluniverse/comsat/webactors/servlet/ServletWebActor.java",
"chars": 758,
"preview": "/*\n * COMSAT\n * Copyright (C) 2014-2015, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-actors-servlet/src/test/java/co/paralleluniverse/comsat/webactors/servlet/WebActorServletTest.java",
"chars": 3038,
"preview": "/*\n * COMSAT\n * Copyright (C) 2014-2015, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-actors-undertow/src/main/java/co/paralleluniverse/comsat/webactors/undertow/AutoWebActorHandler.java",
"chars": 9995,
"preview": "/*\n * COMSAT\n * Copyright (c) 2015-2016, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-actors-undertow/src/main/java/co/paralleluniverse/comsat/webactors/undertow/ByteArrayReadChannelListener.java",
"chars": 3308,
"preview": "/*\n * COMSAT\n * Copyright (c) 2016, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the accom"
},
{
"path": "comsat-actors-undertow/src/main/java/co/paralleluniverse/comsat/webactors/undertow/StringWriteChannelListener.java",
"chars": 3913,
"preview": "/*\n * COMSAT\n * Copyright (c) 2016, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the accom"
},
{
"path": "comsat-actors-undertow/src/main/java/co/paralleluniverse/comsat/webactors/undertow/UndertowHttpRequest.java",
"chars": 8029,
"preview": "/*\n * COMSAT\n * Copyright (c) 2015-2016, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-actors-undertow/src/main/java/co/paralleluniverse/comsat/webactors/undertow/WebActorHandler.java",
"chars": 37739,
"preview": "/*\n * COMSAT\n * Copyright (c) 2015-2016, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-actors-undertow/src/main/java/co/paralleluniverse/comsat/webactors/undertow/package-info.java",
"chars": 548,
"preview": "/*\n * Copyright (c) 2015-2016, Parallel Universe Software Co. All rights reserved.\n * \n * This program and the accompany"
},
{
"path": "comsat-actors-undertow/src/test/java/co/paralleluniverse/comsat/webactors/undertow/HttpRequestWrapperTest.java",
"chars": 730,
"preview": "package co.paralleluniverse.comsat.webactors.undertow;\n\nimport io.undertow.server.HttpServerExchange;\nimport io.undertow"
},
{
"path": "comsat-actors-undertow/src/test/java/co/paralleluniverse/comsat/webactors/undertow/UndertowWebActor.java",
"chars": 755,
"preview": "/*\n * COMSAT\n * Copyright (C) 2015, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the accom"
},
{
"path": "comsat-actors-undertow/src/test/java/co/paralleluniverse/comsat/webactors/undertow/WebActorTest.java",
"chars": 5512,
"preview": "/*\n * COMSAT\n * Copyright (C) 2016, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the accom"
},
{
"path": "comsat-dropwizard/src/main/java/co/paralleluniverse/fibers/dropwizard/FiberApplication.java",
"chars": 1509,
"preview": "/*\n * COMSAT\n * Copyright (C) 2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the accom"
},
{
"path": "comsat-dropwizard/src/main/java/co/paralleluniverse/fibers/dropwizard/FiberDBIFactory.java",
"chars": 1933,
"preview": "/*\n * COMSAT\n * Copyright (C) 2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the accom"
},
{
"path": "comsat-dropwizard/src/main/java/co/paralleluniverse/fibers/dropwizard/FiberDataSourceFactory.java",
"chars": 8819,
"preview": "/*\n * COMSAT\n * Copyright (C) 2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the accom"
},
{
"path": "comsat-dropwizard/src/main/java/co/paralleluniverse/fibers/dropwizard/FiberHttpClientBuilder.java",
"chars": 9840,
"preview": "/*\n * COMSAT\n * Copyright (C) 2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the accom"
},
{
"path": "comsat-dropwizard/src/main/java/co/paralleluniverse/fibers/dropwizard/FiberManagedDataSource.java",
"chars": 1728,
"preview": "/*\n * COMSAT\n * Copyright (C) 2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the accom"
},
{
"path": "comsat-dropwizard/src/main/java/co/paralleluniverse/fibers/dropwizard/FiberServletContainer.java",
"chars": 4453,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-dropwizard/src/main/java/co/paralleluniverse/fibers/dropwizard/InstrumentedNClientConnManager.java",
"chars": 3441,
"preview": "/*\n * COMSAT\n * Copyright (C) 2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the accom"
},
{
"path": "comsat-dropwizard/src/main/java/co/paralleluniverse/fibers/dropwizard/InstrumentedNHttpClientBuilder.java",
"chars": 3229,
"preview": "/*\n * COMSAT\n * Copyright (C) 2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the accom"
},
{
"path": "comsat-dropwizard/src/main/resources/META-INF/suspendables",
"chars": 1259,
"preview": "org.apache.tomcat.jdbc.pool.ProxyConnection.invoke\norg.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke\norg.apache.tomcat."
},
{
"path": "comsat-dropwizard/src/test/java/co/paralleluniverse/fibers/dropwizard/FiberDropwizardTest.java",
"chars": 3575,
"preview": "/*\n * COMSAT\n * Copyright (C) 2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the accom"
},
{
"path": "comsat-dropwizard/src/test/java/co/paralleluniverse/fibers/dropwizard/MyDropwizardApp.java",
"chars": 6015,
"preview": "/*\r\n * COMSAT\r\n * Copyright (C) 2014, Parallel Universe Software Co. All rights reserved.\r\n *\r\n * This program and the a"
},
{
"path": "comsat-dropwizard/src/test/resources/server.yml",
"chars": 1154,
"preview": "# snippet server\nserver:\n maxThreads: 200\n minThreads: 200\n maxQueuedRequests: 9999 \n requestLog:\n a"
},
{
"path": "comsat-httpclient/src/main/java/co/paralleluniverse/fibers/httpasyncclient/FiberCloseableHttpAsyncClient.java",
"chars": 4421,
"preview": "/*\n * COMSAT\n * Copyright (C) 2014-2015, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-httpclient/src/main/java/co/paralleluniverse/fibers/httpclient/AsyncHttpReq.java",
"chars": 1330,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-httpclient/src/main/java/co/paralleluniverse/fibers/httpclient/DelegatingHttpResponse.java",
"chars": 4269,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-httpclient/src/main/java/co/paralleluniverse/fibers/httpclient/FiberHttpClient.java",
"chars": 10313,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2015, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-httpclient/src/main/java/co/paralleluniverse/fibers/httpclient/FiberHttpClientBuilder.java",
"chars": 9068,
"preview": "/*\n * COMSAT\n * Copyright (C) 2014-2015, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-httpclient/src/main/resources/META-INF/suspendables",
"chars": 114,
"preview": "org.apache.http.impl.client.CloseableHttpClient.doExecute\norg.apache.http.impl.client.CloseableHttpClient.execute\n"
},
{
"path": "comsat-httpclient/src/test/java/co/paralleluniverse/fibers/httpasyncclient/FiberHttpAsyncClientTest.java",
"chars": 4225,
"preview": "/*\n * COMSAT\n * Copyright (C) 2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the accom"
},
{
"path": "comsat-httpclient/src/test/java/co/paralleluniverse/fibers/httpclient/FiberHttpClientBuilderTest.java",
"chars": 4041,
"preview": "/*\n * COMSAT\n * Copyright (C) 2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the accom"
},
{
"path": "comsat-httpkit/project.clj",
"chars": 989,
"preview": "(def quasar-pulsar-version \"0.7.6\")\n\n(defproject co.paralleluniverse/comsat-httpkit \"0.7.1-SNAPSHOT\"\n :description \"'ht"
},
{
"path": "comsat-httpkit/src/co/paralleluniverse/fiber/httpkit/client.clj",
"chars": 1067,
"preview": "; Pulsar: lightweight threads and Erlang-like actors for Clojure.\n; Copyright (C) 2015, Parallel Universe Software Co. A"
},
{
"path": "comsat-httpkit/test/co/paralleluniverse/fiber/httpkit/client_test.clj",
"chars": 19215,
"preview": "; Pulsar: lightweight threads and Erlang-like actors for Clojure.\n; Copyright (C) 2015, Parallel Universe Software Co. A"
},
{
"path": "comsat-httpkit/test/co/paralleluniverse/fiber/httpkit/test_util.clj",
"chars": 1477,
"preview": "; Pulsar: lightweight threads and Erlang-like actors for Clojure.\n; Copyright (C) 2015, Parallel Universe Software Co. A"
},
{
"path": "comsat-httpkit/test/logback-test.xml",
"chars": 314,
"preview": "<!-- for jetty -->\n\n<configuration scan=\"false\">\n\t<appender name=\"STDOUT\" class=\"ch.qos.logback.core.ConsoleAppender\">\n\t"
},
{
"path": "comsat-jax-rs-client/src/main/java/co/paralleluniverse/fibers/ws/rs/client/AsyncClientBuilder.java",
"chars": 7007,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-jax-rs-client/src/main/java/co/paralleluniverse/fibers/ws/rs/client/AsyncRs.java",
"chars": 1227,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-jax-rs-client/src/main/java/co/paralleluniverse/fibers/ws/rs/client/FiberBuilder.java",
"chars": 9066,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-jax-rs-client/src/main/java/co/paralleluniverse/fibers/ws/rs/client/FiberClient.java",
"chars": 3800,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-jax-rs-client/src/main/java/co/paralleluniverse/fibers/ws/rs/client/FiberInvocation.java",
"chars": 4894,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-jax-rs-client/src/main/java/co/paralleluniverse/fibers/ws/rs/client/FiberWebTarget.java",
"chars": 5124,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-jax-rs-client/src/main/java/co/paralleluniverse/fibers/ws/rs/client/package-info.java",
"chars": 559,
"preview": "/*\n * Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.\n * \n * This program and the accompany"
},
{
"path": "comsat-jax-rs-client/src/main/resources/META-INF/suspendable-supers",
"chars": 330,
"preview": "javax.ws.rs.client.SyncInvoker.get\njavax.ws.rs.client.SyncInvoker.put\njavax.ws.rs.client.SyncInvoker.post\njavax.ws.rs.cl"
},
{
"path": "comsat-jax-rs-client/src/test/java/co/paralleluniverse/fibers/ws/rs/client/AsyncClientBuilderTest.java",
"chars": 3649,
"preview": "/*\n * COMSAT\n * Copyright (C) 2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the accom"
},
{
"path": "comsat-jdbc/src/main/java/co/paralleluniverse/fibers/jdbc/FiberArray.java",
"chars": 5628,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2015, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-jdbc/src/main/java/co/paralleluniverse/fibers/jdbc/FiberBlob.java",
"chars": 5340,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2015, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-jdbc/src/main/java/co/paralleluniverse/fibers/jdbc/FiberCallableStatement.java",
"chars": 64512,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2015, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-jdbc/src/main/java/co/paralleluniverse/fibers/jdbc/FiberClob.java",
"chars": 6083,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2015, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-jdbc/src/main/java/co/paralleluniverse/fibers/jdbc/FiberConnection.java",
"chars": 23491,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2015, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-jdbc/src/main/java/co/paralleluniverse/fibers/jdbc/FiberDataSource.java",
"chars": 5577,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2015, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-jdbc/src/main/java/co/paralleluniverse/fibers/jdbc/FiberDataSourceFactory.java",
"chars": 1979,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-jdbc/src/main/java/co/paralleluniverse/fibers/jdbc/FiberDatabaseMetaData.java",
"chars": 68577,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2015, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-jdbc/src/main/java/co/paralleluniverse/fibers/jdbc/FiberDriver.java",
"chars": 3013,
"preview": "/*\n * COMSAT\n * Copyright (C) 2014-2015, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-jdbc/src/main/java/co/paralleluniverse/fibers/jdbc/FiberNClob.java",
"chars": 6124,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2015, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-jdbc/src/main/java/co/paralleluniverse/fibers/jdbc/FiberParameterMetadata.java",
"chars": 4807,
"preview": "/*\n * COMSAT\n * Copyright (c) 2015, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the accom"
},
{
"path": "comsat-jdbc/src/main/java/co/paralleluniverse/fibers/jdbc/FiberPreparedStatement.java",
"chars": 24180,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2015, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-jdbc/src/main/java/co/paralleluniverse/fibers/jdbc/FiberRef.java",
"chars": 2672,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2015, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-jdbc/src/main/java/co/paralleluniverse/fibers/jdbc/FiberResultSet.java",
"chars": 76604,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2015, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-jdbc/src/main/java/co/paralleluniverse/fibers/jdbc/FiberResultSetMetaData.java",
"chars": 9254,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2015, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-jdbc/src/main/java/co/paralleluniverse/fibers/jdbc/FiberSQLXML.java",
"chars": 4633,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2015, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-jdbc/src/main/java/co/paralleluniverse/fibers/jdbc/FiberSavepoint.java",
"chars": 2026,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2015, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-jdbc/src/main/java/co/paralleluniverse/fibers/jdbc/FiberStatement.java",
"chars": 16957,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2015, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-jdbc/src/main/java/co/paralleluniverse/fibers/jdbc/FiberStruct.java",
"chars": 2386,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2015, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-jdbc/src/main/java/co/paralleluniverse/fibers/jdbc/JDBCFiberAsync.java",
"chars": 1232,
"preview": "/*\n * COMSAT\n * Copyright (c) 2015, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the accom"
},
{
"path": "comsat-jdbc/src/main/java/co/paralleluniverse/fibers/jdbc/package-info.java",
"chars": 532,
"preview": "/*\n * Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.\n * \n * This program and the accompany"
},
{
"path": "comsat-jdbc/src/main/resources/META-INF/services/java.sql.Driver",
"chars": 43,
"preview": "co.paralleluniverse.fibers.jdbc.FiberDriver"
},
{
"path": "comsat-jdbc/src/test/java/co/paralleluniverse/fibers/jdbc/FiberConnectionTest.java",
"chars": 5667,
"preview": "/*\n * COMSAT\n * Copyright (C) 2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the accom"
},
{
"path": "comsat-jdbc/src/test/java/co/paralleluniverse/fibers/jdbc/FiberDataSourceTest.java",
"chars": 2824,
"preview": "/*\n * COMSAT\n * Copyright (C) 2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the accom"
},
{
"path": "comsat-jdbi/src/main/java/co/paralleluniverse/fibers/jdbi/FiberDBI.java",
"chars": 4001,
"preview": "/*\n * COMSAT\n * Copyright (C) 2014-2015, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-jdbi/src/main/java/co/paralleluniverse/fibers/jdbi/JdbiClassifier.java",
"chars": 5068,
"preview": "/*\n * COMSAT\n * Copyright (C) 2015, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the accom"
},
{
"path": "comsat-jdbi/src/main/resources/META-INF/services/co.paralleluniverse.fibers.instrument.SuspendableClassifier",
"chars": 46,
"preview": "co.paralleluniverse.fibers.jdbi.JdbiClassifier"
},
{
"path": "comsat-jdbi/src/main/resources/META-INF/suspendables",
"chars": 740,
"preview": "org.skife.jdbi.v2.SQLStatement.internalExecute\norg.skife.jdbi.v2.Update.execute\norg.skife.jdbi.v2.Update.executeAndRetur"
},
{
"path": "comsat-jdbi/src/test/java/co/paralleluniverse/fibers/jdbi/FiberFluentAPITest.java",
"chars": 7793,
"preview": "/*\n * COMSAT\n * Copyright (C) 2014-2015, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-jdbi/src/test/java/co/paralleluniverse/fibers/jdbi/FiberSqlObjectAPITest.java",
"chars": 2967,
"preview": "/*\n * COMSAT\n * Copyright (C) 2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the accom"
},
{
"path": "comsat-jersey-server/src/main/java/co/paralleluniverse/fibers/jersey/ServletContainer.java",
"chars": 6113,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-jersey-server/src/main/java/co/paralleluniverse/fibers/jersey/package-info.java",
"chars": 598,
"preview": "/*\n * Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.\n * \n * This program and the accompany"
},
{
"path": "comsat-jersey-server/src/main/resources/META-INF/suspendable-supers",
"chars": 155,
"preview": "javax.ws.rs.container.ContainerRequestFilter.filter\njavax.ws.rs.container.ContainerResponseFilter.filter\norg.glassfish.j"
},
{
"path": "comsat-jersey-server/src/main/resources/META-INF/suspendables",
"chars": 1725,
"preview": "org.glassfish.jersey.process.Inflector.apply\norg.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerF"
},
{
"path": "comsat-jersey-server/src/test/java/co/paralleluniverse/fibers/jersey/AddTestFiltersFeature.java",
"chars": 1865,
"preview": "package co.paralleluniverse.fibers.jersey;\n\nimport java.io.IOException;\n\nimport javax.ws.rs.container.ContainerRequestCo"
},
{
"path": "comsat-jersey-server/src/test/java/co/paralleluniverse/fibers/jersey/FiberServletContainerTest.java",
"chars": 5780,
"preview": "/*\n * COMSAT\n * Copyright (C) 2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the accom"
},
{
"path": "comsat-jersey-server/src/test/java/co/paralleluniverse/fibers/jersey/TestResource.java",
"chars": 1883,
"preview": "/*\n * COMSAT\n * Copyright (C) 2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the accom"
},
{
"path": "comsat-jetty-loader/build.gradle",
"chars": 1752,
"preview": "sourceSets {\n jdk7 {\n java {\n srcDir 'src/main/java'\n }\n \n compileClasspat"
},
{
"path": "comsat-jetty-loader/src/main/java/co/paralleluniverse/comsat/jetty/QuasarWebAppClassLoader.java",
"chars": 1608,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-jetty-loader/src/test/java/co/paralleluniverse/embedded/containers/JettyLoaderTest.java",
"chars": 2941,
"preview": "/*\n * COMSAT\n * Copyright (C) 2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the accom"
},
{
"path": "comsat-jetty-loader/src/test/resources/log4j.xml",
"chars": 542,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE log4j:configuration SYSTEM \"log4j.dtd\">\n\n<log4j:configuration xmlns:lo"
},
{
"path": "comsat-jetty-loader/src/test/resources/webapps/dep.xml",
"chars": 1160,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE Configure PUBLIC \n \"-//Mort Bay Consulting//DTD Configure//EN\" \n "
},
{
"path": "comsat-jooq/src/main/java/co/paralleluniverse/fibers/jooq/JooqClassifier.java",
"chars": 4697,
"preview": "/*\n * COMSAT\n * Copyright (C) 2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the accom"
},
{
"path": "comsat-jooq/src/main/resources/META-INF/services/co.paralleluniverse.fibers.instrument.SuspendableClassifier",
"chars": 46,
"preview": "co.paralleluniverse.fibers.jooq.JooqClassifier"
},
{
"path": "comsat-jooq/src/test/java/co/paralleluniverse/fibers/jooq/JooqContextTest.java",
"chars": 3655,
"preview": "package co.paralleluniverse.fibers.jooq;\n\n/*\n * COMSAT\n * Copyright (C) 2014, Parallel Universe Software Co. All rights "
},
{
"path": "comsat-kafka/src/main/java/co/paralleluniverse/fibers/kafka/FiberKafkaProducer.java",
"chars": 2661,
"preview": "/*\n * COMSAT\n * Copyright (C) 2013-2016, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-kafka/src/test/java/co/paralleluniverse/fibers/kafka/FiberKafkaProducerTest.java",
"chars": 8448,
"preview": "/*\n * COMSAT\n * Copyright (C) 2013-2016, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-mongodb-allanbank/src/main/java/co/paralleluniverse/fibers/mongodb/FiberMongoCallback.java",
"chars": 1045,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-mongodb-allanbank/src/main/java/co/paralleluniverse/fibers/mongodb/FiberMongoClientImpl.java",
"chars": 1427,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-mongodb-allanbank/src/main/java/co/paralleluniverse/fibers/mongodb/FiberMongoCollectionImpl.java",
"chars": 45154,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-mongodb-allanbank/src/main/java/co/paralleluniverse/fibers/mongodb/FiberMongoDatabaseImpl.java",
"chars": 6212,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-mongodb-allanbank/src/main/java/co/paralleluniverse/fibers/mongodb/FiberMongoFactory.java",
"chars": 1105,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-mongodb-allanbank/src/main/java/co/paralleluniverse/fibers/mongodb/FiberMongoUtils.java",
"chars": 1251,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-mongodb-allanbank/src/main/java/co/paralleluniverse/fibers/mongodb/SettableListenableFuture.java",
"chars": 1530,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-mongodb-allanbank/src/main/resources/META-INF/suspendables",
"chars": 1493,
"preview": "com.allanbank.mongodb.client.MongoClientImpl.listDatabaseNames\ncom.allanbank.mongodb.client.MongoClientImpl.listDatabase"
},
{
"path": "comsat-mongodb-allanbank/src/test/java/co/paralleluniverse/fibers/mongodb/AbstractTestFiberMongo.java",
"chars": 5044,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-mongodb-allanbank/src/test/java/co/paralleluniverse/fibers/mongodb/FiberMongoCollTest.java",
"chars": 60916,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-mongodb-allanbank/src/test/java/co/paralleluniverse/fibers/mongodb/FiberMongoDbTest.java",
"chars": 7287,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-okhttp/src/main/java/co/paralleluniverse/fibers/okhttp/FiberCall.java",
"chars": 2087,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2015, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-okhttp/src/main/java/co/paralleluniverse/fibers/okhttp/FiberOkHttpClient.java",
"chars": 854,
"preview": "/*\n * COMSAT\n * Copyright (C) 2013-2015, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-okhttp/src/main/java/co/paralleluniverse/fibers/okhttp/FiberOkHttpUtil.java",
"chars": 2972,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2015, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-okhttp/src/main/java/com/squareup/okhttp/CallProxy.java",
"chars": 744,
"preview": "/*\n * COMSAT\n * Copyright (c) 2015, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the accom"
},
{
"path": "comsat-okhttp/src/main/resources/META-INF/suspendables",
"chars": 49,
"preview": "com.squareup.okhttp.apache.OkApacheClient.execute"
},
{
"path": "comsat-okhttp/src/test/java/co/paralleluniverse/fibers/okhttp/test/InterceptorTest.java",
"chars": 24432,
"preview": "/*\n * Copyright (C) 2014 Square, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may n"
},
{
"path": "comsat-okhttp/src/test/java/co/paralleluniverse/fibers/okhttp/test/apache/OkApacheClientTest.java",
"chars": 11624,
"preview": "package co.paralleluniverse.fibers.okhttp.test.apache;\n\nimport co.paralleluniverse.fibers.Suspendable;\nimport co.paralle"
},
{
"path": "comsat-okhttp/src/test/java/co/paralleluniverse/fibers/okhttp/test/apache/OkApacheTestWrapper.java",
"chars": 648,
"preview": "package co.paralleluniverse.fibers.okhttp.test.apache;\n\nimport co.paralleluniverse.fibers.okhttp.FiberOkHttpUtil;\nimport"
},
{
"path": "comsat-okhttp/src/test/java/co/paralleluniverse/fibers/okhttp/test/utils/FiberCallTestWrapper.java",
"chars": 1197,
"preview": "package co.paralleluniverse.fibers.okhttp.test.utils;\n\nimport co.paralleluniverse.fibers.okhttp.FiberCall;\nimport co.par"
},
{
"path": "comsat-okhttp/src/test/java/co/paralleluniverse/fibers/okhttp/test/utils/FiberOkHttpClientTestWrapper.java",
"chars": 406,
"preview": "package co.paralleluniverse.fibers.okhttp.test.utils;\n\nimport co.paralleluniverse.fibers.okhttp.FiberOkHttpClient;\nimpor"
},
{
"path": "comsat-okhttp/src/test/java/co/paralleluniverse/fibers/okhttp/test/utils/original/DelegatingSSLSocket.java",
"chars": 7820,
"preview": "/*\n * Copyright 2014 Square Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not us"
},
{
"path": "comsat-okhttp/src/test/java/co/paralleluniverse/fibers/okhttp/test/utils/original/DelegatingSSLSocketFactory.java",
"chars": 3046,
"preview": "/*\n * Copyright (C) 2014 Square, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may n"
},
{
"path": "comsat-okhttp/src/test/java/co/paralleluniverse/fibers/okhttp/test/utils/original/DelegatingServerSocketFactory.java",
"chars": 2233,
"preview": "/*\n * Copyright (C) 2014 Square, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may n"
},
{
"path": "comsat-okhttp/src/test/java/co/paralleluniverse/fibers/okhttp/test/utils/original/DelegatingSocketFactory.java",
"chars": 2365,
"preview": "/*\n * Copyright (C) 2014 Square, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may n"
},
{
"path": "comsat-okhttp/src/test/java/co/paralleluniverse/fibers/okhttp/test/utils/original/DoubleInetAddressDns.java",
"chars": 1257,
"preview": "/*\n * Copyright (C) 2014 Square, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may n"
},
{
"path": "comsat-okhttp/src/test/java/co/paralleluniverse/fibers/okhttp/test/utils/original/FallbackTestClientSocketFactory.java",
"chars": 2545,
"preview": "/*\n * Copyright 2014 Square Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not us"
},
{
"path": "comsat-okhttp/src/test/java/co/paralleluniverse/fibers/okhttp/test/utils/original/RecordedResponse.java",
"chars": 4746,
"preview": "/*\n * Copyright (C) 2013 Square, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may n"
},
{
"path": "comsat-okhttp/src/test/java/co/paralleluniverse/fibers/okhttp/test/utils/original/RecordingAuthenticator.java",
"chars": 1810,
"preview": "/*\n * Copyright (C) 2013 The Android Open Source Project\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lice"
},
{
"path": "comsat-okhttp/src/test/java/co/paralleluniverse/fibers/okhttp/test/utils/original/RecordingCallback.java",
"chars": 2785,
"preview": "/*\n * Copyright (C) 2013 Square, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may n"
},
{
"path": "comsat-okhttp/src/test/java/co/paralleluniverse/fibers/okhttp/test/utils/original/RecordingOkAuthenticator.java",
"chars": 1926,
"preview": "/*\n * Copyright (C) 2013 Square, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may n"
},
{
"path": "comsat-okhttp/src/test/java/co/paralleluniverse/fibers/okhttp/test/utils/original/SingleInetAddressDns.java",
"chars": 1273,
"preview": "/*\n * Copyright (C) 2014 Square, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may n"
},
{
"path": "comsat-okhttp/src/test/java/co/paralleluniverse/fibers/okhttp/test/utils/original/SocksProxy.java",
"chars": 8052,
"preview": "/*\n * Copyright (C) 2014 Square, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may n"
},
{
"path": "comsat-okhttp/src/test/java/co/paralleluniverse/fibers/okhttp/test/utils/original/SocksProxyTest.java",
"chars": 3057,
"preview": "/*\n * Copyright (C) 2014 Square, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may n"
},
{
"path": "comsat-okhttp/src/test/java/co/paralleluniverse/fibers/okhttp/test/utils/original/TestLogHandler.java",
"chars": 1434,
"preview": "/*\n * Copyright (C) 2014 Square, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may n"
},
{
"path": "comsat-okhttp/src/test/java/co/paralleluniverse/fibers/okhttp/test/utils/original/http/FakeDns.java",
"chars": 1904,
"preview": "/*\n * Copyright (C) 2012 Square, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may n"
},
{
"path": "comsat-okhttp/src/test/java/co/paralleluniverse/fibers/okhttp/test/utils/original/io/InMemoryFileSystem.java",
"chars": 4341,
"preview": "/*\n * Copyright (C) 2015 Square, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may n"
},
{
"path": "comsat-okhttp/src/test/java/co/paralleluniverse/fibers/okhttp/test/utils/original/testing/RecordingHostnameVerifier.java",
"chars": 1070,
"preview": "/*\n * Copyright (C) 2013 The Android Open Source Project\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lice"
},
{
"path": "comsat-okhttp/src/test/java/com/squareup/okhttp/CacheTest.java",
"chars": 87686,
"preview": "/*\n * Copyright (C) 2011 The Android Open Source Project\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lice"
},
{
"path": "comsat-okhttp/src/test/java/com/squareup/okhttp/CallTest.java",
"chars": 77350,
"preview": "/*\n * Copyright (C) 2013 Square, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may n"
},
{
"path": "comsat-okhttp/src/test/java/com/squareup/okhttp/DispatcherTest.java",
"chars": 6704,
"preview": "package com.squareup.okhttp;\n\nimport co.paralleluniverse.fibers.okhttp.test.utils.FiberOkHttpClientTestWrapper;\nimport c"
},
{
"path": "comsat-okhttp/src/test/java/com/squareup/okhttp/OkUrlFactoryTest.java",
"chars": 6570,
"preview": "package com.squareup.okhttp;\n\nimport co.paralleluniverse.fibers.okhttp.test.utils.FiberOkHttpClientTestWrapper;\nimport c"
},
{
"path": "comsat-okhttp/src/test/java/com/squareup/okhttp/README.md",
"chars": 82,
"preview": "Unfortunately these tests can't be moved as they use package-local functionality.\n"
},
{
"path": "comsat-okhttp/src/test/java/com/squareup/okhttp/URLConnectionTest.java",
"chars": 135570,
"preview": "/*\n * Copyright (C) 2009 The Android Open Source Project\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lice"
},
{
"path": "comsat-okhttp/src/test/java/com/squareup/okhttp/UrlConnectionCacheTest.java",
"chars": 78224,
"preview": "/*\n * Copyright (C) 2011 The Android Open Source Project\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lice"
},
{
"path": "comsat-retrofit/src/main/java/co/paralleluniverse/fibers/retrofit/FiberRestAdapterBuilder.java",
"chars": 2613,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2016, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-retrofit/src/main/resources/META-INF/suspendables",
"chars": 123,
"preview": "retrofit.client.ApacheClient.execute\nretrofit.RestAdapter$RestHandler.invokeRequest\nretrofit.RestAdapter$RestHandler.inv"
},
{
"path": "comsat-retrofit/src/test/java/co/paralleluniverse/fibers/retrofit/FiberRestAdapterBuilderTest.java",
"chars": 3920,
"preview": "/*\n * COMSAT\n * Copyright (C) 2014-2016, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-retrofit/src/test/java/co/paralleluniverse/fibers/retrofit/HelloWorldApplication.java",
"chars": 2229,
"preview": "/*\r\n * COMSAT\r\n * Copyright (C) 2014, Parallel Universe Software Co. All rights reserved.\r\n *\r\n * This program and the a"
},
{
"path": "comsat-ring-jetty9/project.clj",
"chars": 1076,
"preview": "(def quasar-pulsar-version \"0.7.6\")\n\n(defproject co.paralleluniverse/comsat-ring-jetty9 \"0.7.1-SNAPSHOT\"\n :description "
},
{
"path": "comsat-ring-jetty9/src/co/paralleluniverse/fiber/ring/jetty9.clj",
"chars": 8760,
"preview": ";\n; COMSAT\n; Copyright (C) 2014-2015, Parallel Universe Software Co. All rights reserved.\n;\n; This program and the accom"
},
{
"path": "comsat-ring-jetty9/test/co/paralleluniverse/fiber/ring/test/jetty9_test.clj",
"chars": 8975,
"preview": "\n; COMSAT\n; Copyright (C) 2014-2015, Parallel Universe Software Co. All rights reserved.\n;\n; This program and the accomp"
},
{
"path": "comsat-servlet/src/main/java/co/paralleluniverse/fibers/servlet/FiberHttpServlet.java",
"chars": 22908,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2016, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-servlet/src/main/java/co/paralleluniverse/fibers/servlet/FiberHttpServletRequest.java",
"chars": 5132,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2016, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-servlet/src/main/java/co/paralleluniverse/fibers/servlet/FiberRequestDispatcher.java",
"chars": 3624,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2016, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-servlet/src/main/java/co/paralleluniverse/fibers/servlet/FiberServletContext.java",
"chars": 8481,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2016, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-servlet/src/main/java/co/paralleluniverse/fibers/servlet/FiberServletRequest.java",
"chars": 5846,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2016, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-servlet/src/main/java/co/paralleluniverse/fibers/servlet/package-info.java",
"chars": 543,
"preview": "/*\n * Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.\n * \n * This program and the accompany"
},
{
"path": "comsat-servlet/src/test/java/co/paralleluniverse/fibers/servlet/FiberHttpServletTest.java",
"chars": 11246,
"preview": "/*\n * COMSAT\n * Copyright (C) 2014-2016, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-shiro/src/main/resources/META-INF/suspendable-supers",
"chars": 1240,
"preview": "org.apache.shiro.authc.AbstractAuthenticator.doAuthenticate\norg.apache.shiro.authc.Authenticator.authenticate\norg.apache"
},
{
"path": "comsat-shiro/src/main/resources/META-INF/suspendables",
"chars": 2745,
"preview": "org.apache.shiro.authc.pam.ModularRealmAuthenticator.doMultiRealmAuthentication\norg.apache.shiro.authc.pam.ModularRealmA"
},
{
"path": "comsat-shiro/src/test/java/co/paralleluniverse/fibers/shiro/FiberShiroRealmTest.java",
"chars": 2856,
"preview": "/*\n * COMSAT\n * Copyright (C) 2013-2016, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-shiro/src/test/java/co/paralleluniverse/fibers/shiro/FiberedRealm.java",
"chars": 2045,
"preview": "package co.paralleluniverse.fibers.shiro;\n\nimport co.paralleluniverse.fibers.Fiber;\nimport co.paralleluniverse.fibers.Su"
},
{
"path": "comsat-shiro/src/test/resources/shiro-multi-realm.ini",
"chars": 186,
"preview": "[main]\nfiberedRealmA = co.paralleluniverse.fibers.shiro.FiberedRealm\nfiberedRealmB = co.paralleluniverse.fibers.shiro.Fi"
},
{
"path": "comsat-shiro/src/test/resources/shiro-single-realm.ini",
"chars": 106,
"preview": "[main]\nfiberedRealm = co.paralleluniverse.fibers.shiro.FiberedRealm\nsecurityManager.realms = $fiberedRealm"
},
{
"path": "comsat-spring/build.gradle",
"chars": 993,
"preview": "subprojects {\n dependencies {\n testCompile 'org.assertj:assertj-core:2.4.0'\n\n testCompile (project(':co"
},
{
"path": "comsat-spring/comsat-spring-boot/build.gradle",
"chars": 406,
"preview": "subprojects {\n install.enabled = false\n uploadArchives.enabled = false\n}\n\ndependencies {\n compile (\"org.springf"
},
{
"path": "comsat-spring/comsat-spring-boot/comsat-spring-boot-sample-actuator/build.gradle",
"chars": 533,
"preview": "dependencies {\n compile \"org.springframework.boot:spring-boot-starter-actuator:$springBootVer\"\n compile \"org.sprin"
},
{
"path": "comsat-spring/comsat-spring-boot/comsat-spring-boot-sample-actuator/src/main/java/comsat/sample/actuator/HelloWorldService.java",
"chars": 931,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-spring/comsat-spring-boot/comsat-spring-boot-sample-actuator/src/main/java/comsat/sample/actuator/SampleActuatorApplication.java",
"chars": 1320,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2015, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-spring/comsat-spring-boot/comsat-spring-boot-sample-actuator/src/main/java/comsat/sample/actuator/SampleController.java",
"chars": 3038,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-spring/comsat-spring-boot/comsat-spring-boot-sample-actuator/src/main/java/comsat/sample/actuator/ServiceProperties.java",
"chars": 1027,
"preview": "/*\n * COMSAT\n * Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.\n *\n * This program and the "
},
{
"path": "comsat-spring/comsat-spring-boot/comsat-spring-boot-sample-actuator/src/main/resources/application.properties",
"chars": 615,
"preview": "logging.file: /tmp/logs/app.log\nlogging.level.org.springframework.security: INFO\nmanagement.address: 127.0.0.1\n#manageme"
}
]
// ... and 304 more files (download for full content)
About this extraction
This page contains the full source code of the puniverse/comsat GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 504 files (2.8 MB), approximately 771.7k tokens, and a symbol index with 4511 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.