doanduyhai / killrchat Goto Github PK
View Code? Open in Web Editor NEWKillrChat, a scalable chat backed by Apache Cassandra, AngularJS and Spring Boot
Home Page: http://www.doanduyhai.com/blog/?p=1698
License: Apache License 2.0
KillrChat, a scalable chat backed by Apache Cassandra, AngularJS and Spring Boot
Home Page: http://www.doanduyhai.com/blog/?p=1698
License: Apache License 2.0
Complicated. Distributed storage. Nice to have, very low priority
Nice to have, low priority
Implement a mechanism to load data from previous buckets
On the UI only (no persistence in C*) , display a system message when switching day
New table with TTLs to store invitation sent by email
Create stateless URL to allow user to join a room: http://www.killrchat.com/invitation/xxxxxxxx
Open clicking on this link, the server will remove the temporary token and makes the user join the room then re-forward him to KillrChat
New flag in room: privateChat
Modify the current ngEnter directive to skip Shift+Enter
On Mac OS X (10.10.1), with Java (1.6.0_65) and Maven (3.2.5) installed via homebrew:
mvn clean test
mvn --version
[INFO] Scanning for projects...
[WARNING]
[WARNING] Some problems were encountered while building the effective model for com.datastax.demo:killrchat:war:1.0
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-war-plugin is missing. @ line 198, column 21
[WARNING]
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING]
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING]
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building killrchat 1.0
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] >>> spring-boot-maven-plugin:1.2.0.RELEASE:run (default-cli) > test-compile @ killrchat >>>
[INFO]
[INFO] --- yaml-properties-plugin:0.1.0:read-yaml-properties (default) @ killrchat ---
[WARNING] Error injecting: com.comphenix.maven.yamlplugin.YamlPropertiesPlugin
java.lang.TypeNotPresentException: Type com.comphenix.maven.yamlplugin.YamlPropertiesPlugin not present
at org.eclipse.sisu.space.URLClassSpace.loadClass(URLClassSpace.java:115)
at org.eclipse.sisu.space.NamedClass.load(NamedClass.java:46)
at org.eclipse.sisu.space.AbstractDeferredClass.get(AbstractDeferredClass.java:48)
at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:86)
at com.google.inject.internal.InternalFactoryToInitializableAdapter.provision(InternalFactoryToInitializableAdapter.java:54)
at com.google.inject.internal.ProviderInternalFactory$1.call(ProviderInternalFactory.java:70)
at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:113)
at org.eclipse.sisu.bean.BeanScheduler$Activator.onProvision(BeanScheduler.java:176)
at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:122)
at com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:68)
at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:68)
at com.google.inject.internal.InternalFactoryToInitializableAdapter.get(InternalFactoryToInitializableAdapter.java:46)
at com.google.inject.internal.InjectorImpl$2$1.call(InjectorImpl.java:1009)
at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1059)
at com.google.inject.internal.InjectorImpl$2.get(InjectorImpl.java:1005)
at com.google.inject.Scopes$1$1.get(Scopes.java:59)
at org.eclipse.sisu.inject.LazyBeanEntry.getValue(LazyBeanEntry.java:82)
at org.eclipse.sisu.plexus.LazyPlexusBean.getValue(LazyPlexusBean.java:51)
at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:263)
at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:255)
at org.apache.maven.plugin.internal.DefaultMavenPluginManager.getConfiguredMojo(DefaultMavenPluginManager.java:464)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:119)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.MojoExecutor.executeForkedExecutions(MojoExecutor.java:364)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:198)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:355)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:155)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:584)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:216)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:160)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: java.lang.UnsupportedClassVersionError: com/comphenix/maven/yamlplugin/YamlPropertiesPlugin : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:637)
at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClassFromSelf(ClassRealm.java:401)
at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:42)
at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:254)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239)
at org.eclipse.sisu.space.URLClassSpace.loadClass(URLClassSpace.java:107)
... 45 more
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.308 s
[INFO] Finished at: 2015-01-30T16:24:27+01:00
[INFO] Final Memory: 9M/81M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal com.comphenix.maven:yaml-properties-plugin:0.1.0:read-yaml-properties (default) on project killrchat: Execution default of goal com.comphenix.maven:yaml-properties-plugin:0.1.0:read-yaml-properties failed: Unable to load the mojo 'read-yaml-properties' in the plugin 'com.comphenix.maven:yaml-properties-plugin:0.1.0' due to an API incompatibility: org.codehaus.plexus.component.repository.exception.ComponentLookupException: com/comphenix/maven/yamlplugin/YamlPropertiesPlugin : Unsupported major.minor version 51.0
[ERROR] -----------------------------------------------------
[ERROR] realm = plugin>com.comphenix.maven:yaml-properties-plugin:0.1.0
[ERROR] strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy
[ERROR] urls[0] = file:/Users/damien/.m2/repository/com/comphenix/maven/yaml-properties-plugin/0.1.0/yaml-properties-plugin-0.1.0.jar
[ERROR] urls[1] = file:/Users/damien/.m2/repository/org/codehaus/plexus/plexus-component-annotations/1.0-beta-3.0.5/plexus-component-annotations-1.0-beta-3.0.5.jar
[ERROR] urls[2] = file:/Users/damien/.m2/repository/org/apache/xbean/xbean-reflect/3.4/xbean-reflect-3.4.jar
[ERROR] urls[3] = file:/Users/damien/.m2/repository/log4j/log4j/1.2.12/log4j-1.2.12.jar
[ERROR] urls[4] = file:/Users/damien/.m2/repository/commons-logging/commons-logging-api/1.1/commons-logging-api-1.1.jar
[ERROR] urls[5] = file:/Users/damien/.m2/repository/com/google/code/google-collections/google-collect/snapshot-20080530/google-collect-snapshot-20080530.jar
[ERROR] urls[6] = file:/Users/damien/.m2/repository/junit/junit/3.8.2/junit-3.8.2.jar
[ERROR] urls[7] = file:/Users/damien/.m2/repository/org/codehaus/plexus/plexus-utils/3.0.8/plexus-utils-3.0.8.jar
[ERROR] urls[8] = file:/Users/damien/.m2/repository/org/yaml/snakeyaml/1.12/snakeyaml-1.12.jar
[ERROR] Number of foreign imports: 1
[ERROR] import: Entry[import from realm ClassRealm[maven.api, parent: null]]
[ERROR]
[ERROR] -----------------------------------------------------
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginContainerException
Add a ban list to a room to prevent flooders
After a kick, temporary back-off using TTL before joining the room ?
ALL system messages
Only participant join/leave messages
Make it an user properties
Global properties or by room properties ?
Override system. By room property override global property
Hi,
When I am running killrchat from branch "AchilllesDemo" because I am using DSE 5.1, I am running into following issue. Do you know what could be the issue? Appreciate your help.
Caused by: info.archinnov.achilles.exception.AchillesBeanMappingException: Data type 'set<frozen<killrchat.user_authority>>' for column 'authorities' of entity 'class com.datastax.demo.killrchat.entity.PersistentTokenEntity' does not match type in live schema 'set'
at info.archinnov.achilles.validation.Validator.validateBeanMappingTrue(Validator.java:125)
at info.archinnov.achilles.internals.schema.SchemaValidator.validateColumns(SchemaValidator.java:124)
at info.archinnov.achilles.internals.metamodel.AbstractEntityProperty.validateSchema(AbstractEntityProperty.java:348)
at info.archinnov.achilles.internals.runtime.AbstractManagerFactory.lambda$validateSchema$465(AbstractManagerFactory.java:186)
at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
at java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
at info.archinnov.achilles.internals.runtime.AbstractManagerFactory.validateSchema(AbstractManagerFactory.java:186)
at info.archinnov.achilles.internals.runtime.AbstractManagerFactory.bootstrap(AbstractManagerFactory.java:121)
at info.archinnov.achilles.generated.ManagerFactory.(ManagerFactory.java:56)
at info.archinnov.achilles.generated.ManagerFactoryBuilder.build(ManagerFactoryBuilder.java:38)
at com.datastax.demo.killrchat.configuration.CassandraConfiguration.cassandraNativeClusterProduction(CassandraConfiguration.java:68)
at com.datastax.demo.killrchat.configuration.CassandraConfiguration$$EnhancerBySpringCGLIB$$3bc3981b.CGLIB$cassandraNativeClusterProduction$0()
at com.datastax.demo.killrchat.configuration.CassandraConfiguration$$EnhancerBySpringCGLIB$$3bc3981b$$FastClassBySpringCGLIB$$5b859374.invoke()
at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:309)
at com.datastax.demo.killrchat.configuration.CassandraConfiguration$$EnhancerBySpringCGLIB$$3bc3981b.cassandraNativeClusterProduction()
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162)
Search with the "xxx*" logic. Manually managed index in Cassandra
Add typeahead UI bootstrap plugin
since killrchat is the reference application to demonstrate the capability of Achillies. Updating to version 4 would be an good idea
Add <a href> automatically on detected URLs
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.