mirror of
https://github.com/apache/zeppelin
synced 2026-05-24 09:38:26 +00:00
Merge remote-tracking branch 'upstream/master' into ZEPPELIN-2403
This commit is contained in:
commit
ca1e2bf760
20 changed files with 796 additions and 747 deletions
|
|
@ -46,15 +46,8 @@ matrix:
|
|||
env: SCALA_VER="2.11" SPARK_VER="2.0.2" HADOOP_VER="2.6" PROFILE="-Prat" BUILD_FLAG="clean" TEST_FLAG="org.apache.rat:apache-rat-plugin:check" TEST_PROJECTS=""
|
||||
|
||||
# Test core modules
|
||||
#
|
||||
# Several tests were excluded from this configuration due to the following issues:
|
||||
# HeliumBundleFactoryTest - https://issues.apache.org/jira/browse/ZEPPELIN-2469
|
||||
# HeliumApplicationFactoryTest - https://issues.apache.org/jira/browse/ZEPPELIN-2470
|
||||
# NotebookTest - https://issues.apache.org/jira/browse/ZEPPELIN-2471
|
||||
# ZeppelinRestApiTest - https://issues.apache.org/jira/browse/ZEPPELIN-2473
|
||||
# After issues are fixed these tests need to be included back by removing them from the "-Dtests.to.exclude" property
|
||||
- jdk: "oraclejdk7"
|
||||
env: SCALA_VER="2.11" SPARK_VER="2.1.0" HADOOP_VER="2.6" PROFILE="-Pweb-ci -Pscalding -Phelium-dev -Pexamples -Pscala-2.11" BUILD_FLAG="package -Pbuild-distr -DskipRat" TEST_FLAG="verify -Pusing-packaged-distr -DskipRat" MODULES="-pl ${INTERPRETERS}" TEST_PROJECTS="-Dtests.to.exclude=**/ZeppelinSparkClusterTest.java,**/org.apache.zeppelin.spark.*,**/HeliumBundleFactoryTest.java,**/HeliumApplicationFactoryTest.java,**/NotebookTest.java,**/ZeppelinRestApiTest.java -DfailIfNoTests=false"
|
||||
env: SCALA_VER="2.11" SPARK_VER="2.1.0" HADOOP_VER="2.6" PROFILE="-Pweb-ci -Pscalding -Phelium-dev -Pexamples -Pscala-2.11" BUILD_FLAG="package -Pbuild-distr -DskipRat" TEST_FLAG="verify -Pusing-packaged-distr -DskipRat" MODULES="-pl ${INTERPRETERS}" TEST_PROJECTS="-Dtest='!ZeppelinSparkClusterTest,!org.apache.zeppelin.spark.*' -DfailIfNoTests=false"
|
||||
|
||||
# Test selenium with spark module for 1.6.3
|
||||
- jdk: "oraclejdk7"
|
||||
|
|
|
|||
|
|
@ -15,268 +15,269 @@ limitations under the License.
|
|||
-->
|
||||
|
||||
<!DOCTYPE module PUBLIC
|
||||
"-//Puppy Crawl//DTD Check Configuration 1.3//EN"
|
||||
"http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
|
||||
"-//Puppy Crawl//DTD Check Configuration 1.3//EN"
|
||||
"http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
|
||||
|
||||
<!-- This is a checkstyle configuration file. For descriptions of what the
|
||||
following rules do, please see the checkstyle configuration page at http://checkstyle.sourceforge.net/config.html -->
|
||||
|
||||
<module name="Checker">
|
||||
|
||||
<module name="FileTabCharacter">
|
||||
<!-- Checks that there are no tab characters in the file. -->
|
||||
</module>
|
||||
<module name="FileTabCharacter">
|
||||
<!-- Checks that there are no tab characters in the file. -->
|
||||
</module>
|
||||
|
||||
<module name="NewlineAtEndOfFile">
|
||||
<property name="lineSeparator" value="lf" />
|
||||
</module>
|
||||
<module name="NewlineAtEndOfFile">
|
||||
<property name="lineSeparator" value="lf"/>
|
||||
</module>
|
||||
|
||||
<module name="RegexpSingleline">
|
||||
<!-- Checks that FIXME is not used in comments. TODO is preferred. -->
|
||||
<property name="format" value="((//.*)|(\*.*))FIXME" />
|
||||
<property name="message"
|
||||
value='TODO is preferred to FIXME. e.g. "TODO(johndoe): Refactor when v2 is released."' />
|
||||
</module>
|
||||
<module name="RegexpSingleline">
|
||||
<!-- Checks that FIXME is not used in comments. TODO is preferred. -->
|
||||
<property name="format" value="((//.*)|(\*.*))FIXME"/>
|
||||
<property name="message"
|
||||
value='TODO is preferred to FIXME. e.g. "TODO(johndoe): Refactor when v2 is released."'/>
|
||||
</module>
|
||||
|
||||
<module name="RegexpSingleline">
|
||||
<!-- Checks that TODOs are named. (Actually, just that they are followed
|
||||
by an open paren.) -->
|
||||
<property name="format" value="((//.*)|(\*.*))TODO[^(]" />
|
||||
<property name="message"
|
||||
value='All TODOs should be named. e.g. "TODO(johndoe): Refactor when v2 is released."' />
|
||||
</module>
|
||||
<module name="RegexpSingleline">
|
||||
<!-- Checks that TODOs are named. (Actually, just that they are followed
|
||||
by an open paren.) -->
|
||||
<property name="format" value="((//.*)|(\*.*))TODO[^(]"/>
|
||||
<property name="message"
|
||||
value='All TODOs should be named. e.g. "TODO(johndoe): Refactor when v2 is released."'/>
|
||||
</module>
|
||||
|
||||
<!-- <module name="JavadocPackage"> - Checks that each Java package has
|
||||
a Javadoc file used for commenting. Only allows a package-info.java, not
|
||||
package.html. </module> -->
|
||||
<!-- All Java AST specific tests live under TreeWalker module. -->
|
||||
<module name="TreeWalker">
|
||||
<!-- <module name="JavadocPackage"> - Checks that each Java package has
|
||||
a Javadoc file used for commenting. Only allows a package-info.java, not
|
||||
package.html. </module> -->
|
||||
<!-- All Java AST specific tests live under TreeWalker module. -->
|
||||
<module name="TreeWalker">
|
||||
|
||||
<!-- IMPORT CHECKS -->
|
||||
<!-- IMPORT CHECKS -->
|
||||
|
||||
<module name="RedundantImport">
|
||||
<!-- Checks for redundant import statements. -->
|
||||
<property name="severity" value="error" />
|
||||
</module>
|
||||
<!-- <module name="ImportOrder"> Checks for out of order import statements
|
||||
<property name="severity" value="warning"/> <property name="groups" value="com.google,android,junit,net,org,java,javax"/>
|
||||
This ensures that static imports go first <property name="option" value="top"/>
|
||||
<property name="tokens" value="STATIC_IMPORT, IMPORT"/> </module> -->
|
||||
<!-- JAVADOC CHECKS -->
|
||||
<module name="RedundantImport">
|
||||
<!-- Checks for redundant import statements. -->
|
||||
<property name="severity" value="error"/>
|
||||
</module>
|
||||
<!-- <module name="ImportOrder"> Checks for out of order import statements
|
||||
<property name="severity" value="warning"/> <property name="groups" value="com.google,android,junit,net,org,java,javax"/>
|
||||
This ensures that static imports go first <property name="option" value="top"/>
|
||||
<property name="tokens" value="STATIC_IMPORT, IMPORT"/> </module> -->
|
||||
<!-- JAVADOC CHECKS -->
|
||||
|
||||
<!-- Checks for Javadoc comments. -->
|
||||
<!-- See http://checkstyle.sf.net/config_javadoc.html -->
|
||||
<module name="JavadocMethod">
|
||||
<property name="scope" value="protected" />
|
||||
<property name="severity" value="warning" />
|
||||
<property name="allowMissingJavadoc" value="true" />
|
||||
<property name="allowMissingParamTags" value="true" />
|
||||
<property name="allowMissingReturnTag" value="true" />
|
||||
<property name="allowMissingThrowsTags" value="true" />
|
||||
<property name="allowThrowsTagsForSubclasses" value="true" />
|
||||
<property name="allowUndeclaredRTE" value="true" />
|
||||
</module>
|
||||
<!-- Checks for Javadoc comments. -->
|
||||
<!-- See http://checkstyle.sf.net/config_javadoc.html -->
|
||||
<module name="JavadocMethod">
|
||||
<property name="scope" value="protected"/>
|
||||
<property name="severity" value="warning"/>
|
||||
<property name="allowMissingJavadoc" value="true"/>
|
||||
<property name="allowMissingParamTags" value="true"/>
|
||||
<property name="allowMissingReturnTag" value="true"/>
|
||||
<property name="allowMissingThrowsTags" value="true"/>
|
||||
<property name="allowThrowsTagsForSubclasses" value="true"/>
|
||||
<property name="allowUndeclaredRTE" value="true"/>
|
||||
</module>
|
||||
|
||||
<module name="JavadocType">
|
||||
<property name="scope" value="protected" />
|
||||
<property name="severity" value="error" />
|
||||
</module>
|
||||
<module name="JavadocType">
|
||||
<property name="scope" value="protected"/>
|
||||
<property name="severity" value="error"/>
|
||||
</module>
|
||||
|
||||
<module name="JavadocStyle">
|
||||
<property name="severity" value="warning" />
|
||||
</module>
|
||||
<module name="JavadocStyle">
|
||||
<property name="severity" value="warning"/>
|
||||
</module>
|
||||
|
||||
<!-- NAMING CHECKS -->
|
||||
<!-- NAMING CHECKS -->
|
||||
|
||||
<!-- Item 38 - Adhere to generally accepted naming conventions -->
|
||||
<!-- Item 38 - Adhere to generally accepted naming conventions -->
|
||||
|
||||
<module name="PackageName">
|
||||
<!-- Validates identifiers for package names against the supplied expression. -->
|
||||
<!-- Here the default checkstyle rule restricts package name parts to
|
||||
seven characters, this is not in line with common practice at Google. -->
|
||||
<property name="format" value="^[a-z]+(\.[a-z][a-z0-9]{1,})*$" />
|
||||
<property name="severity" value="warning" />
|
||||
</module>
|
||||
<module name="PackageName">
|
||||
<!-- Validates identifiers for package names against the supplied expression. -->
|
||||
<!-- Here the default checkstyle rule restricts package name parts to
|
||||
seven characters, this is not in line with common practice at Google. -->
|
||||
<property name="format" value="^[a-z]+(\.[a-z][a-z0-9]{1,})*$"/>
|
||||
<property name="severity" value="warning"/>
|
||||
</module>
|
||||
|
||||
<module name="TypeNameCheck">
|
||||
<!-- Validates static, final fields against the expression "^[A-Z][a-zA-Z0-9]*$". -->
|
||||
<metadata name="altname" value="TypeName" />
|
||||
<property name="severity" value="warning" />
|
||||
</module>
|
||||
<module name="TypeNameCheck">
|
||||
<!-- Validates static, final fields against the expression "^[A-Z][a-zA-Z0-9]*$". -->
|
||||
<metadata name="altname" value="TypeName"/>
|
||||
<property name="severity" value="warning"/>
|
||||
</module>
|
||||
|
||||
<module name="ConstantNameCheck">
|
||||
<!-- Validates non-private, static, final fields against the supplied
|
||||
public/package final fields "^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$". -->
|
||||
<metadata name="altname" value="ConstantName" />
|
||||
<property name="applyToPublic" value="true" />
|
||||
<property name="applyToProtected" value="true" />
|
||||
<property name="applyToPackage" value="true" />
|
||||
<property name="applyToPrivate" value="false" />
|
||||
<property name="format" value="^([A-Z][A-Z0-9]*(_[A-Z0-9]+)*|FLAG_.*)$" />
|
||||
<message key="name.invalidPattern"
|
||||
value="Variable ''{0}'' should be in ALL_CAPS (if it is a constant) or be private (otherwise)." />
|
||||
<property name="severity" value="warning" />
|
||||
</module>
|
||||
<module name="ConstantNameCheck">
|
||||
<!-- Validates non-private, static, final fields against the supplied
|
||||
public/package final fields "^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$". -->
|
||||
<metadata name="altname" value="ConstantName"/>
|
||||
<property name="applyToPublic" value="true"/>
|
||||
<property name="applyToProtected" value="true"/>
|
||||
<property name="applyToPackage" value="true"/>
|
||||
<property name="applyToPrivate" value="false"/>
|
||||
<property name="format" value="^([A-Z][A-Z0-9]*(_[A-Z0-9]+)*|FLAG_.*)$"/>
|
||||
<message key="name.invalidPattern"
|
||||
value="Variable ''{0}'' should be in ALL_CAPS (if it is a constant) or be private (otherwise)."/>
|
||||
<property name="severity" value="warning"/>
|
||||
</module>
|
||||
|
||||
<module name="StaticVariableNameCheck">
|
||||
<!-- Validates static, non-final fields against the supplied expression
|
||||
"^[a-z][a-zA-Z0-9]*_?$". -->
|
||||
<metadata name="altname" value="StaticVariableName" />
|
||||
<property name="applyToPublic" value="true" />
|
||||
<property name="applyToProtected" value="true" />
|
||||
<property name="applyToPackage" value="true" />
|
||||
<property name="applyToPrivate" value="true" />
|
||||
<property name="format" value="^[a-z][a-zA-Z0-9]*_?$" />
|
||||
<property name="severity" value="warning" />
|
||||
</module>
|
||||
<module name="StaticVariableNameCheck">
|
||||
<!-- Validates static, non-final fields against the supplied expression
|
||||
"^[a-z][a-zA-Z0-9]*_?$". -->
|
||||
<metadata name="altname" value="StaticVariableName"/>
|
||||
<property name="applyToPublic" value="true"/>
|
||||
<property name="applyToProtected" value="true"/>
|
||||
<property name="applyToPackage" value="true"/>
|
||||
<property name="applyToPrivate" value="true"/>
|
||||
<property name="format" value="^[a-z][a-zA-Z0-9]*_?$"/>
|
||||
<property name="severity" value="warning"/>
|
||||
</module>
|
||||
|
||||
<module name="MemberNameCheck">
|
||||
<!-- Validates non-static members against the supplied expression. -->
|
||||
<metadata name="altname" value="MemberName" />
|
||||
<property name="applyToPublic" value="true" />
|
||||
<property name="applyToProtected" value="true" />
|
||||
<property name="applyToPackage" value="true" />
|
||||
<property name="applyToPrivate" value="true" />
|
||||
<property name="format" value="^[a-z][a-zA-Z0-9]*$" />
|
||||
<property name="severity" value="warning" />
|
||||
</module>
|
||||
<module name="MemberNameCheck">
|
||||
<!-- Validates non-static members against the supplied expression. -->
|
||||
<metadata name="altname" value="MemberName"/>
|
||||
<property name="applyToPublic" value="true"/>
|
||||
<property name="applyToProtected" value="true"/>
|
||||
<property name="applyToPackage" value="true"/>
|
||||
<property name="applyToPrivate" value="true"/>
|
||||
<property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
|
||||
<property name="severity" value="warning"/>
|
||||
</module>
|
||||
|
||||
<module name="MethodNameCheck">
|
||||
<!-- Validates identifiers for method names. -->
|
||||
<metadata name="altname" value="MethodName" />
|
||||
<property name="format" value="^[a-z][a-zA-Z0-9]*(_[a-zA-Z0-9]+)*$" />
|
||||
<property name="severity" value="warning" />
|
||||
</module>
|
||||
<module name="MethodNameCheck">
|
||||
<!-- Validates identifiers for method names. -->
|
||||
<metadata name="altname" value="MethodName"/>
|
||||
<property name="format" value="^[a-z][a-zA-Z0-9]*(_[a-zA-Z0-9]+)*$"/>
|
||||
<property name="severity" value="warning"/>
|
||||
</module>
|
||||
|
||||
<module name="ParameterName">
|
||||
<!-- Validates identifiers for method parameters against the expression
|
||||
"^[a-z][a-zA-Z0-9]*$". -->
|
||||
<property name="severity" value="warning" />
|
||||
</module>
|
||||
<module name="ParameterName">
|
||||
<!-- Validates identifiers for method parameters against the expression
|
||||
"^[a-z][a-zA-Z0-9]*$". -->
|
||||
<property name="severity" value="warning"/>
|
||||
</module>
|
||||
|
||||
<module name="LocalFinalVariableName">
|
||||
<!-- Validates identifiers for local final variables against the expression
|
||||
"^[a-z][a-zA-Z0-9]*$". -->
|
||||
<property name="severity" value="warning" />
|
||||
</module>
|
||||
<module name="LocalFinalVariableName">
|
||||
<!-- Validates identifiers for local final variables against the expression
|
||||
"^[a-z][a-zA-Z0-9]*$". -->
|
||||
<property name="severity" value="warning"/>
|
||||
</module>
|
||||
|
||||
<module name="LocalVariableName">
|
||||
<!-- Validates identifiers for local variables against the expression
|
||||
"^[a-z][a-zA-Z0-9]*$". -->
|
||||
<property name="severity" value="warning" />
|
||||
</module>
|
||||
<module name="LocalVariableName">
|
||||
<!-- Validates identifiers for local variables against the expression
|
||||
"^[a-z][a-zA-Z0-9]*$". -->
|
||||
<property name="severity" value="warning"/>
|
||||
</module>
|
||||
|
||||
|
||||
<!-- LENGTH and CODING CHECKS -->
|
||||
<!-- LENGTH and CODING CHECKS -->
|
||||
|
||||
<module name="LineLength">
|
||||
<!-- Checks if a line is too long. -->
|
||||
<property name="max"
|
||||
value="${com.puppycrawl.tools.checkstyle.checks.sizes.LineLength.max}"
|
||||
default="100" />
|
||||
<property name="severity" value="error" />
|
||||
<module name="LineLength">
|
||||
<!-- Checks if a line is too long. -->
|
||||
<property name="max"
|
||||
value="${com.puppycrawl.tools.checkstyle.checks.sizes.LineLength.max}"
|
||||
default="100"/>
|
||||
<property name="severity" value="error"/>
|
||||
|
||||
<!-- The default ignore pattern exempts the following elements: - import
|
||||
statements - long URLs inside comments -->
|
||||
<!-- The default ignore pattern exempts the following elements: - import
|
||||
statements - long URLs inside comments -->
|
||||
|
||||
<property name="ignorePattern"
|
||||
value="${com.puppycrawl.tools.checkstyle.checks.sizes.LineLength.ignorePattern}"
|
||||
default="^(package .*;\s*)|(import .*;\s*)|( *\* *https?://.*)$" />
|
||||
</module>
|
||||
<property name="ignorePattern"
|
||||
value="${com.puppycrawl.tools.checkstyle.checks.sizes.LineLength.ignorePattern}"
|
||||
default="^(package .*;\s*)|(import .*;\s*)|( *\* *https?://.*)$"/>
|
||||
</module>
|
||||
|
||||
<module name="LeftCurly">
|
||||
<!-- Checks for placement of the left curly brace ('{'). -->
|
||||
<property name="severity" value="warning" />
|
||||
</module>
|
||||
<module name="LeftCurly">
|
||||
<!-- Checks for placement of the left curly brace ('{'). -->
|
||||
<property name="severity" value="warning"/>
|
||||
</module>
|
||||
|
||||
<module name="RightCurly">
|
||||
<!-- Checks right curlies on CATCH, ELSE, and TRY blocks are on the same
|
||||
line. e.g., the following example is fine: <pre> if { ... } else </pre> -->
|
||||
<!-- This next example is not fine: <pre> if { ... } else </pre> -->
|
||||
<property name="option" value="same" />
|
||||
<property name="severity" value="warning" />
|
||||
</module>
|
||||
<module name="RightCurly">
|
||||
<!-- Checks right curlies on CATCH, ELSE, and TRY blocks are on the same
|
||||
line. e.g., the following example is fine: <pre> if { ... } else </pre> -->
|
||||
<!-- This next example is not fine: <pre> if { ... } else </pre> -->
|
||||
<property name="option" value="same"/>
|
||||
<property name="severity" value="warning"/>
|
||||
</module>
|
||||
|
||||
<!-- Checks for braces around if and else blocks -->
|
||||
<module name="NeedBraces">
|
||||
<property name="severity" value="warning" />
|
||||
<property name="tokens"
|
||||
value="LITERAL_IF, LITERAL_ELSE, LITERAL_FOR, LITERAL_WHILE, LITERAL_DO" />
|
||||
</module>
|
||||
<!-- Checks for braces around if and else blocks -->
|
||||
<module name="NeedBraces">
|
||||
<property name="severity" value="warning"/>
|
||||
<property name="tokens"
|
||||
value="LITERAL_IF, LITERAL_ELSE, LITERAL_FOR, LITERAL_WHILE, LITERAL_DO"/>
|
||||
</module>
|
||||
|
||||
<module name="UpperEll">
|
||||
<!-- Checks that long constants are defined with an upper ell. -->
|
||||
<property name="severity" value="error" />
|
||||
</module>
|
||||
<module name="UpperEll">
|
||||
<!-- Checks that long constants are defined with an upper ell. -->
|
||||
<property name="severity" value="error"/>
|
||||
</module>
|
||||
|
||||
<module name="FallThrough">
|
||||
<!-- Warn about falling through to the next case statement. Similar to
|
||||
javac -Xlint:fallthrough, but the check is suppressed if a single-line comment
|
||||
on the last non-blank line preceding the fallen-into case contains 'fall
|
||||
through' (or some other variants which we don't publicized to promote consistency). -->
|
||||
<property name="reliefPattern"
|
||||
value="fall through|Fall through|fallthru|Fallthru|falls through|Falls through|fallthrough|Fallthrough|No break|NO break|no break|continue on" />
|
||||
<property name="severity" value="error" />
|
||||
</module>
|
||||
<module name="FallThrough">
|
||||
<!-- Warn about falling through to the next case statement. Similar to
|
||||
javac -Xlint:fallthrough, but the check is suppressed if a single-line comment
|
||||
on the last non-blank line preceding the fallen-into case contains 'fall
|
||||
through' (or some other variants which we don't publicized to promote consistency). -->
|
||||
<property name="reliefPattern"
|
||||
value="fall through|Fall through|fallthru|Fallthru|falls through|Falls through|fallthrough|Fallthrough|No break|NO break|no break|continue on"/>
|
||||
<property name="severity" value="error"/>
|
||||
</module>
|
||||
|
||||
|
||||
<!-- MODIFIERS CHECKS -->
|
||||
<!-- MODIFIERS CHECKS -->
|
||||
|
||||
<module name="ModifierOrder">
|
||||
<!-- Warn if modifier order is inconsistent with JLS3 8.1.1, 8.3.1, and
|
||||
8.4.3. The prescribed order is: public, protected, private, abstract, static,
|
||||
final, transient, volatile, synchronized, native, strictfp -->
|
||||
</module>
|
||||
<module name="ModifierOrder">
|
||||
<!-- Warn if modifier order is inconsistent with JLS3 8.1.1, 8.3.1, and
|
||||
8.4.3. The prescribed order is: public, protected, private, abstract, static,
|
||||
final, transient, volatile, synchronized, native, strictfp -->
|
||||
</module>
|
||||
|
||||
|
||||
<!-- WHITESPACE CHECKS -->
|
||||
<!-- WHITESPACE CHECKS -->
|
||||
|
||||
<module name="WhitespaceAround">
|
||||
<!-- Checks that various tokens are surrounded by whitespace. This includes
|
||||
most binary operators and keywords followed by regular or curly braces. -->
|
||||
<property name="tokens"
|
||||
value="ASSIGN, BAND, BAND_ASSIGN, BOR,
|
||||
<module name="WhitespaceAround">
|
||||
<!-- Checks that various tokens are surrounded by whitespace. This includes
|
||||
most binary operators and keywords followed by regular or curly braces. -->
|
||||
<property name="tokens"
|
||||
value="ASSIGN, BAND, BAND_ASSIGN, BOR,
|
||||
BOR_ASSIGN, BSR, BSR_ASSIGN, BXOR, BXOR_ASSIGN, COLON, DIV, DIV_ASSIGN,
|
||||
EQUAL, GE, GT, LAND, LE, LITERAL_CATCH, LITERAL_DO, LITERAL_ELSE,
|
||||
LITERAL_FINALLY, LITERAL_FOR, LITERAL_IF, LITERAL_RETURN,
|
||||
LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE, LOR, LT, MINUS,
|
||||
MINUS_ASSIGN, MOD, MOD_ASSIGN, NOT_EQUAL, PLUS, PLUS_ASSIGN, QUESTION,
|
||||
SL, SL_ASSIGN, SR_ASSIGN, STAR, STAR_ASSIGN" />
|
||||
<property name="severity" value="error" />
|
||||
</module>
|
||||
SL, SL_ASSIGN, SR_ASSIGN, STAR, STAR_ASSIGN"/>
|
||||
<property name="severity" value="error"/>
|
||||
</module>
|
||||
|
||||
<module name="WhitespaceAfter">
|
||||
<!-- Checks that commas, semicolons and typecasts are followed by whitespace. -->
|
||||
<property name="tokens" value="COMMA, SEMI, TYPECAST" />
|
||||
</module>
|
||||
<module name="WhitespaceAfter">
|
||||
<!-- Checks that commas, semicolons and typecasts are followed by whitespace. -->
|
||||
<property name="tokens" value="COMMA, SEMI, TYPECAST"/>
|
||||
</module>
|
||||
|
||||
<module name="NoWhitespaceAfter">
|
||||
<!-- Checks that there is no whitespace after various unary operators.
|
||||
Linebreaks are allowed. -->
|
||||
<property name="tokens"
|
||||
value="BNOT, DEC, DOT, INC, LNOT, UNARY_MINUS,
|
||||
UNARY_PLUS" />
|
||||
<property name="allowLineBreaks" value="true" />
|
||||
<property name="severity" value="error" />
|
||||
</module>
|
||||
<module name="NoWhitespaceAfter">
|
||||
<!-- Checks that there is no whitespace after various unary operators.
|
||||
Linebreaks are allowed. -->
|
||||
<property name="tokens"
|
||||
value="BNOT, DEC, DOT, INC, LNOT, UNARY_MINUS,
|
||||
UNARY_PLUS"/>
|
||||
<property name="allowLineBreaks" value="true"/>
|
||||
<property name="severity" value="error"/>
|
||||
</module>
|
||||
|
||||
<module name="NoWhitespaceBefore">
|
||||
<!-- Checks that there is no whitespace before various unary operators.
|
||||
Linebreaks are allowed. -->
|
||||
<property name="tokens" value="SEMI, DOT, POST_DEC, POST_INC" />
|
||||
<property name="allowLineBreaks" value="true" />
|
||||
<property name="severity" value="error" />
|
||||
</module>
|
||||
<module name="NoWhitespaceBefore">
|
||||
<!-- Checks that there is no whitespace before various unary operators.
|
||||
Linebreaks are allowed. -->
|
||||
<property name="tokens" value="SEMI, DOT, POST_DEC, POST_INC"/>
|
||||
<property name="allowLineBreaks" value="true"/>
|
||||
<property name="severity" value="error"/>
|
||||
</module>
|
||||
|
||||
<module name="ParenPad">
|
||||
<!-- Checks that there is no whitespace before close parens or after open
|
||||
parens. -->
|
||||
<property name="severity" value="warning" />
|
||||
</module>
|
||||
<module name="ParenPad">
|
||||
<!-- Checks that there is no whitespace before close parens or after open
|
||||
parens. -->
|
||||
<property name="severity" value="warning"/>
|
||||
</module>
|
||||
|
||||
<module name="Indentation">
|
||||
<!-- Checks code indentation -->
|
||||
<property name="basicOffset" value="2" />
|
||||
</module>
|
||||
</module>
|
||||
<module name="Indentation">
|
||||
<!-- Checks code indentation -->
|
||||
<property name="basicOffset" value="2"/>
|
||||
<property name="caseIndent" value="2"/>
|
||||
</module>
|
||||
</module>
|
||||
</module>
|
||||
|
|
|
|||
|
|
@ -354,41 +354,41 @@ public class JDBCInterpreter extends Interpreter {
|
|||
|
||||
JDBCSecurityImpl.createSecureConfiguration(property, authType);
|
||||
switch (authType) {
|
||||
case KERBEROS:
|
||||
if (user == null || "false".equalsIgnoreCase(
|
||||
property.getProperty("zeppelin.jdbc.auth.kerberos.proxy.enable"))) {
|
||||
case KERBEROS:
|
||||
if (user == null || "false".equalsIgnoreCase(
|
||||
property.getProperty("zeppelin.jdbc.auth.kerberos.proxy.enable"))) {
|
||||
connection = getConnectionFromPool(connectionUrl, user, propertyKey, properties);
|
||||
} else {
|
||||
if (basePropretiesMap.get(propertyKey).containsKey("proxy.user.property")) {
|
||||
connection = getConnectionFromPool(connectionUrl, user, propertyKey, properties);
|
||||
} else {
|
||||
if (basePropretiesMap.get(propertyKey).containsKey("proxy.user.property")) {
|
||||
connection = getConnectionFromPool(connectionUrl, user, propertyKey, properties);
|
||||
} else {
|
||||
UserGroupInformation ugi = null;
|
||||
try {
|
||||
ugi = UserGroupInformation.createProxyUser(
|
||||
user, UserGroupInformation.getCurrentUser());
|
||||
} catch (Exception e) {
|
||||
logger.error("Error in getCurrentUser", e);
|
||||
throw new InterpreterException("Error in getCurrentUser", e);
|
||||
}
|
||||
UserGroupInformation ugi = null;
|
||||
try {
|
||||
ugi = UserGroupInformation.createProxyUser(
|
||||
user, UserGroupInformation.getCurrentUser());
|
||||
} catch (Exception e) {
|
||||
logger.error("Error in getCurrentUser", e);
|
||||
throw new InterpreterException("Error in getCurrentUser", e);
|
||||
}
|
||||
|
||||
final String poolKey = propertyKey;
|
||||
try {
|
||||
connection = ugi.doAs(new PrivilegedExceptionAction<Connection>() {
|
||||
@Override
|
||||
public Connection run() throws Exception {
|
||||
return getConnectionFromPool(connectionUrl, user, poolKey, properties);
|
||||
}
|
||||
});
|
||||
} catch (Exception e) {
|
||||
logger.error("Error in doAs", e);
|
||||
throw new InterpreterException("Error in doAs", e);
|
||||
}
|
||||
final String poolKey = propertyKey;
|
||||
try {
|
||||
connection = ugi.doAs(new PrivilegedExceptionAction<Connection>() {
|
||||
@Override
|
||||
public Connection run() throws Exception {
|
||||
return getConnectionFromPool(connectionUrl, user, poolKey, properties);
|
||||
}
|
||||
});
|
||||
} catch (Exception e) {
|
||||
logger.error("Error in doAs", e);
|
||||
throw new InterpreterException("Error in doAs", e);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
connection = getConnectionFromPool(connectionUrl, user, propertyKey, properties);
|
||||
default:
|
||||
connection = getConnectionFromPool(connectionUrl, user, propertyKey, properties);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -41,20 +41,20 @@ public class JDBCSecurityImpl {
|
|||
public static void createSecureConfiguration(Properties properties,
|
||||
AuthenticationMethod authType) {
|
||||
switch (authType) {
|
||||
case KERBEROS:
|
||||
Configuration conf = new
|
||||
org.apache.hadoop.conf.Configuration();
|
||||
conf.set("hadoop.security.authentication", KERBEROS.toString());
|
||||
UserGroupInformation.setConfiguration(conf);
|
||||
try {
|
||||
UserGroupInformation.loginUserFromKeytab(
|
||||
properties.getProperty("zeppelin.jdbc.principal"),
|
||||
properties.getProperty("zeppelin.jdbc.keytab.location")
|
||||
);
|
||||
} catch (IOException e) {
|
||||
LOGGER.error("Failed to get either keytab location or principal name in the " +
|
||||
"interpreter", e);
|
||||
}
|
||||
case KERBEROS:
|
||||
Configuration conf = new
|
||||
org.apache.hadoop.conf.Configuration();
|
||||
conf.set("hadoop.security.authentication", KERBEROS.toString());
|
||||
UserGroupInformation.setConfiguration(conf);
|
||||
try {
|
||||
UserGroupInformation.loginUserFromKeytab(
|
||||
properties.getProperty("zeppelin.jdbc.principal"),
|
||||
properties.getProperty("zeppelin.jdbc.keytab.location")
|
||||
);
|
||||
} catch (IOException e) {
|
||||
LOGGER.error("Failed to get either keytab location or principal name in the " +
|
||||
"interpreter", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
6
pom.xml
6
pom.xml
|
|
@ -134,9 +134,6 @@
|
|||
|
||||
<PermGen>64m</PermGen>
|
||||
<MaxPermGen>512m</MaxPermGen>
|
||||
|
||||
<!-- to be able to exclude some tests using command line -->
|
||||
<tests.to.exclude/>
|
||||
</properties>
|
||||
|
||||
<dependencyManagement>
|
||||
|
|
@ -558,9 +555,6 @@
|
|||
<version>${plugin.surefire.version}</version>
|
||||
<configuration combine.children="append">
|
||||
<argLine>-Xmx2g -Xms1g -Dfile.encoding=UTF-8</argLine>
|
||||
<excludes>
|
||||
<exclude>${tests.to.exclude}</exclude>
|
||||
</excludes>
|
||||
</configuration>
|
||||
<!-- <excludes> <exclude>**/itest/**</exclude> </excludes> <executions>
|
||||
<execution> <id>surefire-itest</id> <phase>integration-test</phase> <goals>
|
||||
|
|
|
|||
|
|
@ -39,21 +39,21 @@ public class ShellSecurityImpl {
|
|||
.trim().toUpperCase();
|
||||
|
||||
switch (authType) {
|
||||
case "KERBEROS":
|
||||
CommandLine cmdLine = CommandLine.parse(shell);
|
||||
cmdLine.addArgument("-c", false);
|
||||
String kinitCommand = String.format("kinit -k -t %s %s",
|
||||
case "KERBEROS":
|
||||
CommandLine cmdLine = CommandLine.parse(shell);
|
||||
cmdLine.addArgument("-c", false);
|
||||
String kinitCommand = String.format("kinit -k -t %s %s",
|
||||
properties.getProperty("zeppelin.shell.keytab.location"),
|
||||
properties.getProperty("zeppelin.shell.principal"));
|
||||
cmdLine.addArgument(kinitCommand, false);
|
||||
DefaultExecutor executor = new DefaultExecutor();
|
||||
cmdLine.addArgument(kinitCommand, false);
|
||||
DefaultExecutor executor = new DefaultExecutor();
|
||||
|
||||
try {
|
||||
int exitVal = executor.execute(cmdLine);
|
||||
} catch (Exception e) {
|
||||
LOGGER.error("Unable to run kinit for zeppelin user " + kinitCommand, e);
|
||||
throw new InterpreterException(e);
|
||||
}
|
||||
try {
|
||||
int exitVal = executor.execute(cmdLine);
|
||||
} catch (Exception e) {
|
||||
LOGGER.error("Unable to run kinit for zeppelin user " + kinitCommand, e);
|
||||
throw new InterpreterException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -96,7 +96,8 @@ public class SparkSqlInterpreter extends Interpreter {
|
|||
}
|
||||
|
||||
sparkInterpreter.populateSparkWebUrl(context);
|
||||
sqlc = getSparkInterpreter().getSQLContext();
|
||||
sparkInterpreter.getZeppelinContext().setInterpreterContext(context);
|
||||
sqlc = sparkInterpreter.getSQLContext();
|
||||
SparkContext sc = sqlc.sparkContext();
|
||||
if (concurrentSQL()) {
|
||||
sc.setLocalProperty("spark.scheduler.pool", "fair");
|
||||
|
|
@ -126,7 +127,7 @@ public class SparkSqlInterpreter extends Interpreter {
|
|||
throw new InterpreterException(e);
|
||||
}
|
||||
|
||||
String msg = getSparkInterpreter().getZeppelinContext().showData(rdd);
|
||||
String msg = sparkInterpreter.getZeppelinContext().showData(rdd);
|
||||
sc.clearJobGroup();
|
||||
return new InterpreterResult(Code.SUCCESS, msg);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -254,7 +254,7 @@ The text of each license is also included at licenses/LICENSE-[project]-[version
|
|||
(The MIT License) bcprov-jdk15on v1.51 (org.bouncycastle:bcprov-jdk15on:jar:1.51 - http://www.bouncycastle.org/java.html) - http://www.bouncycastle.org/licence.html
|
||||
(The MIT License) AnchorJS (https://github.com/bryanbraun/anchorjs) - https://github.com/bryanbraun/anchorjs/blob/master/README.md#license
|
||||
(The MIT License) moment-duration-format v1.3.0 (https://github.com/jsmreese/moment-duration-format) - https://github.com/jsmreese/moment-duration-format/blob/master/LICENSE
|
||||
(The MIT License) github-markdown-css 2.4.0 (https://github.com/sindresorhus/github-markdown-css) - https://github.com/sindresorhus/github-markdown-css/blob/gh-pages/license
|
||||
(The MIT License) github-markdown-css 2.6.0 (https://github.com/sindresorhus/github-markdown-css) - https://github.com/sindresorhus/github-markdown-css/blob/v2.6.0/license
|
||||
(The MIT License) scopt (com.github.scopt:scopt_2.10:3.2.0 - https://github.com/scopt/scopt)
|
||||
(The MIT License) Objenesis (org.objenesis:objenesis:2.1 - https://github.com/easymock/objenesis) - Copyright (c) 2006-2015 the original author and authors
|
||||
(The MIT License) JCL 1.1.1 implemented over SLF4J (org.slf4j:jcl-over-slf4j:1.7.16 - http://www.slf4j.org)
|
||||
|
|
|
|||
|
|
@ -78,22 +78,24 @@ import javax.naming.ldap.PagedResultsControl;
|
|||
* <p>Sample config for <tt>shiro.ini</tt>:
|
||||
*
|
||||
* <p>[main]
|
||||
* ldapRealm=org.apache.zeppelin.realm.LdapRealm
|
||||
* ldapRealm.contextFactory=$ldapGroupContextFactory
|
||||
* ldapRealm.contextFactory.authenticationMechanism=simple
|
||||
* ldapRealm.contextFactory.url=ldap://localhost:33389
|
||||
* ldapRealm.userDnTemplate=uid={0},ou=people,dc=hadoop,dc=apache,dc=org
|
||||
* ldapRealm = org.apache.zeppelin.realm.LdapRealm
|
||||
* ldapRealm.contextFactory.url = ldap://localhost:33389
|
||||
* ldapRealm.contextFactory.authenticationMechanism = simple
|
||||
* ldapRealm.contextFactory.systemUsername = uid=guest,ou=people,dc=hadoop,dc=
|
||||
* apache,dc=org
|
||||
* ldapRealm.contextFactory.systemPassword = S{ALIAS=ldcSystemPassword}
|
||||
* ldapRealm.userDnTemplate = uid={0},ou=people,dc=hadoop,dc=apache,dc=org
|
||||
* # Ability to set ldap paging Size if needed default is 100
|
||||
* ldapRealm.pagingSize = 200
|
||||
* ldapRealm.authorizationEnabled=true
|
||||
* ldapRealm.contextFactory.systemAuthenticationMechanism=simple
|
||||
* ldapRealm.searchBase=dc=hadoop,dc=apache,dc=org
|
||||
* ldapRealm.authorizationEnabled = true
|
||||
* ldapRealm.searchBase = dc=hadoop,dc=apache,dc=org
|
||||
* ldapRealm.userSearchBase = dc=hadoop,dc=apache,dc=org
|
||||
* ldapRealm.groupSearchBase = ou=groups,dc=hadoop,dc=apache,dc=org
|
||||
* ldapRealm.groupObjectClass=groupofnames
|
||||
* ldapRealm.userObjectClass = person
|
||||
* ldapRealm.groupObjectClass = groupofnames
|
||||
* # Allow userSearchAttribute to be customized
|
||||
* ldapRealm.userSearchAttributeName = sAMAccountName
|
||||
* ldapRealm.memberAttribute=member
|
||||
* ldapRealm.memberAttribute = member
|
||||
* # force usernames returned from ldap to lowercase useful for AD
|
||||
* ldapRealm.userLowerCase = true
|
||||
* # ability set searchScopes subtree (default), one, base
|
||||
|
|
@ -101,10 +103,6 @@ import javax.naming.ldap.PagedResultsControl;
|
|||
* ldapRealm.groupSearchScope = subtree;
|
||||
* ldapRealm.memberAttributeValueTemplate=cn={0},ou=people,dc=hadoop,dc=apache,
|
||||
* dc=org
|
||||
* ldapRealm.contextFactory.systemUsername=uid=guest,ou=people,dc=hadoop,dc=
|
||||
* apache,dc=org
|
||||
* ldapRealm.contextFactory.systemPassword=S{ALIAS=ldcSystemPassword} [urls]
|
||||
* **=authcBasic
|
||||
* # enable support for nested groups using the LDAP_MATCHING_RULE_IN_CHAIN operator
|
||||
* ldapRealm.groupSearchEnableMatchingRuleInChain = true
|
||||
*
|
||||
|
|
@ -116,6 +114,9 @@ import javax.naming.ldap.PagedResultsControl;
|
|||
* *:ToDoItem:*:*; \ self-install_role = *:ToDoItemsFixturesService:install:* ;
|
||||
* \ admin_role = *
|
||||
*
|
||||
* <p>[urls]
|
||||
* **=authcBasic
|
||||
*
|
||||
* <p>securityManager.realms = $ldapRealm
|
||||
*
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -236,148 +236,148 @@ public class NotebookServer extends WebSocketServlet
|
|||
|
||||
/** Lets be elegant here */
|
||||
switch (messagereceived.op) {
|
||||
case LIST_NOTES:
|
||||
unicastNoteList(conn, subject, userAndRoles);
|
||||
break;
|
||||
case RELOAD_NOTES_FROM_REPO:
|
||||
broadcastReloadedNoteList(subject, userAndRoles);
|
||||
break;
|
||||
case GET_HOME_NOTE:
|
||||
sendHomeNote(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case GET_NOTE:
|
||||
sendNote(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case NEW_NOTE:
|
||||
createNote(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case DEL_NOTE:
|
||||
removeNote(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case REMOVE_FOLDER:
|
||||
removeFolder(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case MOVE_NOTE_TO_TRASH:
|
||||
moveNoteToTrash(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case MOVE_FOLDER_TO_TRASH:
|
||||
moveFolderToTrash(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case EMPTY_TRASH:
|
||||
emptyTrash(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case RESTORE_FOLDER:
|
||||
restoreFolder(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case RESTORE_NOTE:
|
||||
restoreNote(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case RESTORE_ALL:
|
||||
restoreAll(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case CLONE_NOTE:
|
||||
cloneNote(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case IMPORT_NOTE:
|
||||
importNote(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case COMMIT_PARAGRAPH:
|
||||
updateParagraph(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case RUN_PARAGRAPH:
|
||||
runParagraph(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case PARAGRAPH_EXECUTED_BY_SPELL:
|
||||
broadcastSpellExecution(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case RUN_ALL_PARAGRAPHS:
|
||||
runAllParagraphs(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case CANCEL_PARAGRAPH:
|
||||
cancelParagraph(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case MOVE_PARAGRAPH:
|
||||
moveParagraph(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case INSERT_PARAGRAPH:
|
||||
insertParagraph(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case COPY_PARAGRAPH:
|
||||
copyParagraph(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case PARAGRAPH_REMOVE:
|
||||
removeParagraph(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case PARAGRAPH_CLEAR_OUTPUT:
|
||||
clearParagraphOutput(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case PARAGRAPH_CLEAR_ALL_OUTPUT:
|
||||
clearAllParagraphOutput(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case NOTE_UPDATE:
|
||||
updateNote(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case NOTE_RENAME:
|
||||
renameNote(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case FOLDER_RENAME:
|
||||
renameFolder(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case UPDATE_PERSONALIZED_MODE:
|
||||
updatePersonalizedMode(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case COMPLETION:
|
||||
completion(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case PING:
|
||||
break; //do nothing
|
||||
case ANGULAR_OBJECT_UPDATED:
|
||||
angularObjectUpdated(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case ANGULAR_OBJECT_CLIENT_BIND:
|
||||
angularObjectClientBind(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case ANGULAR_OBJECT_CLIENT_UNBIND:
|
||||
angularObjectClientUnbind(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case LIST_CONFIGURATIONS:
|
||||
sendAllConfigurations(conn, userAndRoles, notebook);
|
||||
break;
|
||||
case CHECKPOINT_NOTE:
|
||||
checkpointNote(conn, notebook, messagereceived);
|
||||
break;
|
||||
case LIST_REVISION_HISTORY:
|
||||
listRevisionHistory(conn, notebook, messagereceived);
|
||||
break;
|
||||
case SET_NOTE_REVISION:
|
||||
setNoteRevision(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case NOTE_REVISION:
|
||||
getNoteByRevision(conn, notebook, messagereceived);
|
||||
break;
|
||||
case LIST_NOTE_JOBS:
|
||||
unicastNoteJobInfo(conn, messagereceived);
|
||||
break;
|
||||
case UNSUBSCRIBE_UPDATE_NOTE_JOBS:
|
||||
unsubscribeNoteJobInfo(conn);
|
||||
break;
|
||||
case GET_INTERPRETER_BINDINGS:
|
||||
getInterpreterBindings(conn, messagereceived);
|
||||
break;
|
||||
case SAVE_INTERPRETER_BINDINGS:
|
||||
saveInterpreterBindings(conn, messagereceived);
|
||||
break;
|
||||
case EDITOR_SETTING:
|
||||
getEditorSetting(conn, messagereceived);
|
||||
break;
|
||||
case GET_INTERPRETER_SETTINGS:
|
||||
getInterpreterSettings(conn, subject);
|
||||
break;
|
||||
case WATCHER:
|
||||
switchConnectionToWatcher(conn, messagereceived);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
case LIST_NOTES:
|
||||
unicastNoteList(conn, subject, userAndRoles);
|
||||
break;
|
||||
case RELOAD_NOTES_FROM_REPO:
|
||||
broadcastReloadedNoteList(subject, userAndRoles);
|
||||
break;
|
||||
case GET_HOME_NOTE:
|
||||
sendHomeNote(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case GET_NOTE:
|
||||
sendNote(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case NEW_NOTE:
|
||||
createNote(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case DEL_NOTE:
|
||||
removeNote(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case REMOVE_FOLDER:
|
||||
removeFolder(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case MOVE_NOTE_TO_TRASH:
|
||||
moveNoteToTrash(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case MOVE_FOLDER_TO_TRASH:
|
||||
moveFolderToTrash(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case EMPTY_TRASH:
|
||||
emptyTrash(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case RESTORE_FOLDER:
|
||||
restoreFolder(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case RESTORE_NOTE:
|
||||
restoreNote(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case RESTORE_ALL:
|
||||
restoreAll(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case CLONE_NOTE:
|
||||
cloneNote(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case IMPORT_NOTE:
|
||||
importNote(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case COMMIT_PARAGRAPH:
|
||||
updateParagraph(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case RUN_PARAGRAPH:
|
||||
runParagraph(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case PARAGRAPH_EXECUTED_BY_SPELL:
|
||||
broadcastSpellExecution(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case RUN_ALL_PARAGRAPHS:
|
||||
runAllParagraphs(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case CANCEL_PARAGRAPH:
|
||||
cancelParagraph(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case MOVE_PARAGRAPH:
|
||||
moveParagraph(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case INSERT_PARAGRAPH:
|
||||
insertParagraph(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case COPY_PARAGRAPH:
|
||||
copyParagraph(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case PARAGRAPH_REMOVE:
|
||||
removeParagraph(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case PARAGRAPH_CLEAR_OUTPUT:
|
||||
clearParagraphOutput(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case PARAGRAPH_CLEAR_ALL_OUTPUT:
|
||||
clearAllParagraphOutput(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case NOTE_UPDATE:
|
||||
updateNote(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case NOTE_RENAME:
|
||||
renameNote(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case FOLDER_RENAME:
|
||||
renameFolder(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case UPDATE_PERSONALIZED_MODE:
|
||||
updatePersonalizedMode(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case COMPLETION:
|
||||
completion(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case PING:
|
||||
break; //do nothing
|
||||
case ANGULAR_OBJECT_UPDATED:
|
||||
angularObjectUpdated(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case ANGULAR_OBJECT_CLIENT_BIND:
|
||||
angularObjectClientBind(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case ANGULAR_OBJECT_CLIENT_UNBIND:
|
||||
angularObjectClientUnbind(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case LIST_CONFIGURATIONS:
|
||||
sendAllConfigurations(conn, userAndRoles, notebook);
|
||||
break;
|
||||
case CHECKPOINT_NOTE:
|
||||
checkpointNote(conn, notebook, messagereceived);
|
||||
break;
|
||||
case LIST_REVISION_HISTORY:
|
||||
listRevisionHistory(conn, notebook, messagereceived);
|
||||
break;
|
||||
case SET_NOTE_REVISION:
|
||||
setNoteRevision(conn, userAndRoles, notebook, messagereceived);
|
||||
break;
|
||||
case NOTE_REVISION:
|
||||
getNoteByRevision(conn, notebook, messagereceived);
|
||||
break;
|
||||
case LIST_NOTE_JOBS:
|
||||
unicastNoteJobInfo(conn, messagereceived);
|
||||
break;
|
||||
case UNSUBSCRIBE_UPDATE_NOTE_JOBS:
|
||||
unsubscribeNoteJobInfo(conn);
|
||||
break;
|
||||
case GET_INTERPRETER_BINDINGS:
|
||||
getInterpreterBindings(conn, messagereceived);
|
||||
break;
|
||||
case SAVE_INTERPRETER_BINDINGS:
|
||||
saveInterpreterBindings(conn, messagereceived);
|
||||
break;
|
||||
case EDITOR_SETTING:
|
||||
getEditorSetting(conn, messagereceived);
|
||||
break;
|
||||
case GET_INTERPRETER_SETTINGS:
|
||||
getInterpreterSettings(conn, subject);
|
||||
break;
|
||||
case WATCHER:
|
||||
switchConnectionToWatcher(conn, messagereceived);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
LOG.error("Can't handle message", e);
|
||||
|
|
|
|||
|
|
@ -30,12 +30,12 @@ public class CommandLineUtils {
|
|||
}
|
||||
|
||||
String usage = args[0].toLowerCase(Locale.US);
|
||||
switch (usage){
|
||||
case "--version":
|
||||
case "-v":
|
||||
System.out.println(Util.getVersion());
|
||||
break;
|
||||
default:
|
||||
switch (usage) {
|
||||
case "--version":
|
||||
case "-v":
|
||||
System.out.println(Util.getVersion());
|
||||
break;
|
||||
default:
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,7 +33,6 @@
|
|||
"handsontable": "~0.24.2",
|
||||
"moment-duration-format": "^1.3.0",
|
||||
"select2": "^4.0.3",
|
||||
"github-markdown-css": "^2.4.0",
|
||||
"MathJax": "2.7.0",
|
||||
"ngclipboard": "^1.1.1"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
"test": "karma start karma.conf.js"
|
||||
},
|
||||
"dependencies": {
|
||||
"github-markdown-css": "2.6.0",
|
||||
"grunt-angular-templates": "^0.5.7",
|
||||
"grunt-dom-munger": "^3.4.0",
|
||||
"headroom.js": "^0.9.3"
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@
|
|||
word-wrap: break-word !important;
|
||||
}
|
||||
|
||||
.paragraph table {
|
||||
.paragraph table:not(.markdown-body table) {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
|
|
@ -222,16 +222,69 @@ table.dataTable.table-condensed .sorting_desc:after {
|
|||
cursor: pointer;
|
||||
}
|
||||
|
||||
.dropdown-menu .shortcut-icon{
|
||||
.dropdown-menu .shortcut-icon {
|
||||
padding-right: 7px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.dropdown-menu .shortcut-keys{
|
||||
.dropdown-menu .shortcut-keys {
|
||||
float: right;
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.modal-dialog .table-scroll {
|
||||
max-height: 70vh;
|
||||
min-width: 160px;
|
||||
overflow: auto;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
|
||||
.shortcut-modal-header {
|
||||
min-height: 16.428571429px;
|
||||
padding: 15px;
|
||||
border-bottom: 1px solid #9cb4c5;
|
||||
background-color: #3071a9;
|
||||
border: 2px solid #3071a9;
|
||||
border-top-left-radius: 4px;
|
||||
border-top-right-radius: 4px;
|
||||
}
|
||||
|
||||
.shortcut-modal-header .close {
|
||||
color: #cfcfcf;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.shortcut-modal-title {
|
||||
color: white;
|
||||
margin-top: 2px;
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
|
||||
table.table-shortcut {
|
||||
border-top: 1px solid #ddd;
|
||||
border-bottom: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.table-shortcut > tbody > tr > th {
|
||||
background-color: #d6dde7;
|
||||
border-color: 1px solid #9cb4c5;
|
||||
color: #383a3c;
|
||||
font-size: 15px !important;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.table-shortcut > tbody > tr > td {
|
||||
border-top: 0px;
|
||||
padding: 5px;
|
||||
vertical-align: middle;
|
||||
font-size: 14px !important;
|
||||
}
|
||||
|
||||
.kbd-default {
|
||||
border: 1;
|
||||
font-size: 10px !important;
|
||||
}
|
||||
|
||||
/*
|
||||
Paragraph Title
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -15,292 +15,297 @@ limitations under the License.
|
|||
<div class="modal fade" id="shortcutModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<div class="shortcut-modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
|
||||
<h4 class="modal-title" id="myModalLabel">Keyboard shortcuts</h4>
|
||||
<h4 class="shortcut-modal-title" id="myModalLabel">Keyboard shortcuts</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="table-scroll">
|
||||
<table class="table table-shortcut">
|
||||
<tr>
|
||||
<th style="width:70%">Note Keyboard Shortcuts</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
|
||||
<h4>Note Shortcuts</h4>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="col-md-8">Run paragraph</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="keys">
|
||||
<kbd class="kbd-default">Shift</kbd> + <kbd class="kbd-default">Enter</kbd>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<tr>
|
||||
<td>
|
||||
<div class="col-md-8">Cancel</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="keys">
|
||||
<kbd class="kbd-default">Ctrl</kbd> + <kbd class="kbd-default">{{ isMac ? 'Option' : 'Alt'}}</kbd> + <kbd class="kbd-default">C</kbd>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<div class="col-md-8">Move cursor Up</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="keys">
|
||||
<kbd class="kbd-default">Ctrl</kbd> + <kbd class="kbd-default">P</kbd>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<div class="col-md-8">Move cursor Down</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="keys">
|
||||
<kbd class="kbd-default">Ctrl</kbd> + <kbd class="kbd-default">N</kbd>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<div class="col-md-8">Remove paragraph</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="keys">
|
||||
<kbd class="kbd-dark">Shift</kbd> + <kbd class="kbd-dark">Enter</kbd>
|
||||
<kbd class="kbd-default">Ctrl</kbd> + <kbd class="kbd-default">{{ isMac ? 'Option' : 'Alt'}}</kbd> + <kbd class="kbd-default">D</kbd>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
Run paragraph
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<tr>
|
||||
<td>
|
||||
<div class="col-md-8">Insert new paragraph above</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="keys">
|
||||
<kbd class="kbd-dark">Ctrl</kbd> + <kbd class="kbd-dark">{{ isMac ? 'Option' : 'Alt'}}</kbd> + <kbd class="kbd-dark">C</kbd>
|
||||
<kbd class="kbd-default">Ctrl</kbd> + <kbd class="kbd-default">{{ isMac ? 'Option' : 'Alt'}}</kbd> + <kbd class="kbd-default">A</kbd>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
Cancel
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<tr>
|
||||
<td>
|
||||
<div class="col-md-8">Insert new paragraph below</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="keys">
|
||||
<kbd class="kbd-dark">Ctrl</kbd> + <kbd class="kbd-dark">P</kbd>
|
||||
<kbd class="kbd-default">Ctrl</kbd> + <kbd class="kbd-default">{{ isMac ? 'Option' : 'Alt'}}</kbd> + <kbd class="kbd-default">B</kbd>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
Move cursor Up
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<tr>
|
||||
<td>
|
||||
<div class="col-md-8">Insert copy of paragraph below</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="keys">
|
||||
<kbd class="kbd-dark">Ctrl</kbd> + <kbd class="kbd-dark">N</kbd>
|
||||
<kbd class="kbd-default">Ctrl</kbd> + <kbd class="kbd-default">Shift</kbd> + <kbd class="kbd-default">C</kbd>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
Move cursor Down
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<tr>
|
||||
<td>
|
||||
<div class="col-md-8">Move paragraph Up</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="keys">
|
||||
<kbd class="kbd-dark">Ctrl</kbd> + <kbd class="kbd-dark">{{ isMac ? 'Option' : 'Alt'}}</kbd> + <kbd class="kbd-dark">D</kbd>
|
||||
<kbd class="kbd-default">Ctrl</kbd> + <kbd class="kbd-default">{{ isMac ? 'Option' : 'Alt'}}</kbd> + <kbd class="kbd-default">K</kbd>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
Remove paragraph
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<tr>
|
||||
<td>
|
||||
<div class="col-md-8">Move paragraph Down</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="keys">
|
||||
<kbd class="kbd-dark">Ctrl</kbd> + <kbd class="kbd-dark">{{ isMac ? 'Option' : 'Alt'}}</kbd> + <kbd class="kbd-dark">A</kbd>
|
||||
<kbd class="kbd-default">Ctrl</kbd> + <kbd class="kbd-default">{{ isMac ? 'Option' : 'Alt'}}</kbd> + <kbd class="kbd-default">J</kbd>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
Insert new paragraph above
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<tr>
|
||||
<td>
|
||||
<div class="col-md-8">Enable/Disable run paragraph</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="keys">
|
||||
<kbd class="kbd-dark">Ctrl</kbd> + <kbd class="kbd-dark">{{ isMac ? 'Option' : 'Alt'}}</kbd> + <kbd class="kbd-dark">B</kbd>
|
||||
<kbd class="kbd-default">Ctrl</kbd> + <kbd class="kbd-default">{{ isMac ? 'Option' : 'Alt' }}</kbd> + <kbd class="kbd-default">R</kbd>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
Insert new paragraph below
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<div class="keys">
|
||||
<kbd class="kbd-dark">Ctrl</kbd> + <kbd class="kbd-dark">Shift</kbd> + <kbd class="kbd-dark">C</kbd>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
Insert copy of paragraph below
|
||||
</div>
|
||||
</div>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="col-md-8">Toggle output</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="keys">
|
||||
<kbd class="kbd-default">Ctrl</kbd> + <kbd class="kbd-default">{{ isMac ? 'Option' : 'Alt'}}</kbd> + <kbd class="kbd-default">O</kbd>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<div class="keys">
|
||||
<kbd class="kbd-dark">Ctrl</kbd> + <kbd class="kbd-dark">{{ isMac ? 'Option' : 'Alt'}}</kbd> + <kbd class="kbd-dark">K</kbd>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
Move paragraph Up
|
||||
</div>
|
||||
</div>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="col-md-8">Toggle editor</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="keys">
|
||||
<kbd class="kbd-default">Ctrl</kbd> + <kbd class="kbd-default">{{ isMac ? 'Option' : 'Alt'}}</kbd> + <kbd class="kbd-default">E</kbd>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<div class="keys">
|
||||
<kbd class="kbd-dark">Ctrl</kbd> + <kbd class="kbd-dark">{{ isMac ? 'Option' : 'Alt'}}</kbd> + <kbd class="kbd-dark">J</kbd>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
Move paragraph Down
|
||||
</div>
|
||||
</div>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="col-md-8">Toggle line number</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="keys">
|
||||
<kbd class="kbd-default">Ctrl</kbd> + <kbd class="kbd-default">{{ isMac ? 'Option' : 'Alt'}}</kbd> + <kbd class="kbd-default">M</kbd>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<div class="keys">
|
||||
<kbd class="kbd-dark">Ctrl</kbd> + <kbd class="kbd-dark">{{ isMac ? 'Option' : 'Alt' }}</kbd> + <kbd class="kbd-dark">R</kbd>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
Enable/Disable run paragraph
|
||||
</div>
|
||||
</div>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="col-md-8">Toggle title</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="keys">
|
||||
<kbd class="kbd-default">Ctrl</kbd> + <kbd class="kbd-default">{{ isMac ? 'Option' : 'Alt'}}</kbd> + <kbd class="kbd-default">T</kbd>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<div class="keys">
|
||||
<kbd class="kbd-dark">Ctrl</kbd> + <kbd class="kbd-dark">{{ isMac ? 'Option' : 'Alt'}}</kbd> + <kbd class="kbd-dark">O</kbd>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
Toggle output
|
||||
</div>
|
||||
</div>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="col-md-8">Clear output</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="keys">
|
||||
<kbd class="kbd-default">Ctrl</kbd> + <kbd class="kbd-default">{{ isMac ? 'Option' : 'Alt'}}</kbd> + <kbd class="kbd-default">L</kbd>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<div class="keys">
|
||||
<kbd class="kbd-dark">Ctrl</kbd> + <kbd class="kbd-dark">{{ isMac ? 'Option' : 'Alt'}}</kbd> + <kbd class="kbd-dark">E</kbd>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
Toggle editor
|
||||
</div>
|
||||
</div>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="col-md-8">Link this paragraph</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="keys">
|
||||
<kbd class="kbd-default">Ctrl</kbd> + <kbd class="kbd-default">{{ isMac ? 'Option' : 'Alt'}}</kbd> + <kbd class="kbd-default">W</kbd>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<div class="keys">
|
||||
<kbd class="kbd-dark">Ctrl</kbd> + <kbd class="kbd-dark">{{ isMac ? 'Option' : 'Alt'}}</kbd> + <kbd class="kbd-dark">M</kbd>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
Toggle line number
|
||||
</div>
|
||||
</div>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="col-md-8">Reduce paragraph width</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="keys">
|
||||
<kbd class="kbd-default">Ctrl</kbd> + <kbd class="kbd-default">Shift</kbd> + <kbd class="kbd-default">-</kbd>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<div class="keys">
|
||||
<kbd class="kbd-dark">Ctrl</kbd> + <kbd class="kbd-dark">{{ isMac ? 'Option' : 'Alt'}}</kbd> + <kbd class="kbd-dark">T</kbd>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
Toggle title
|
||||
</div>
|
||||
</div>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="col-md-8">Increase paragraph width</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="keys">
|
||||
<kbd class="kbd-default">Ctrl</kbd> + <kbd class="kbd-default">Shift</kbd> + <kbd class="kbd-default">+</kbd>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<div class="keys">
|
||||
<kbd class="kbd-dark">Ctrl</kbd> + <kbd class="kbd-dark">{{ isMac ? 'Option' : 'Alt'}}</kbd> + <kbd class="kbd-dark">L</kbd>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
Clear output
|
||||
</div>
|
||||
</div>
|
||||
<tr class="sub-title">
|
||||
<th style="width:70%">Editor Keyboard Shortcuts</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<div class="keys">
|
||||
<kbd class="kbd-dark">Ctrl</kbd> + <kbd class="kbd-dark">{{ isMac ? 'Option' : 'Alt'}}</kbd> + <kbd class="kbd-dark">W</kbd>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
Link this paragraph
|
||||
</div>
|
||||
</div>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="col-md-8">Auto-completion</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="keys">
|
||||
<kbd class="kbd-default">Ctrl</kbd> + <kbd class="kbd-default">.</kbd>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<div class="keys">
|
||||
<kbd class="kbd-dark">Ctrl</kbd> + <kbd class="kbd-dark">Shift</kbd> + <kbd class="kbd-dark">-</kbd>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
Reduce paragraph width
|
||||
</div>
|
||||
</div>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="col-md-8">Cut the line</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="keys">
|
||||
<kbd class="kbd-default">Ctrl</kbd> + <kbd class="kbd-default">K</kbd>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<div class="keys">
|
||||
<kbd class="kbd-dark">Ctrl</kbd> + <kbd class="kbd-dark">Shift</kbd> + <kbd class="kbd-dark">+</kbd>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
Increase paragraph width
|
||||
</div>
|
||||
</div>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="col-md-8">Paste the line</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="keys">
|
||||
<kbd class="kbd-default">Ctrl</kbd> + <kbd class="kbd-default">Y</kbd>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<div class="col-md-8">Search inside the code</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="keys">
|
||||
<kbd class="kbd-default">Ctrl</kbd> + <kbd class="kbd-default">S</kbd>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<h4>Editor Shortcuts</h4>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="col-md-8">Move cursor to the beginning</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="keys">
|
||||
<kbd class="kbd-default">Ctrl</kbd> + <kbd class="kbd-default">A</kbd>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<div class="keys">
|
||||
<kbd class="kbd-dark">Ctrl</kbd> + <kbd class="kbd-dark">.</kbd>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
Auto-completion
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<div class="keys">
|
||||
<kbd class="kbd-dark">Ctrl</kbd> + <kbd class="kbd-dark">K</kbd>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
Cut the line
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<div class="keys">
|
||||
<kbd class="kbd-dark">Ctrl</kbd> + <kbd class="kbd-dark">Y</kbd>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
Paste the line
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<div class="keys">
|
||||
<kbd class="kbd-dark">Ctrl</kbd> + <kbd class="kbd-dark">S</kbd>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
Search inside the code
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<div class="keys">
|
||||
<kbd class="kbd-dark">Ctrl</kbd> + <kbd class="kbd-dark">A</kbd>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
Move cursor to the beginning
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<div class="keys">
|
||||
<kbd class="kbd-dark">Ctrl</kbd> + <kbd class="kbd-dark">E</kbd>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
Move cursor at the end
|
||||
</div>
|
||||
</div>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="col-md-8">Move cursor at the end</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="keys">
|
||||
<kbd class="kbd-default">Ctrl</kbd> + <kbd class="kbd-default">E</kbd>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -46,7 +46,6 @@ limitations under the License.
|
|||
<link rel="stylesheet" href="bower_components/bootstrap3-dialog/dist/css/bootstrap-dialog.min.css" />
|
||||
<link rel="stylesheet" href="bower_components/pikaday/css/pikaday.css" />
|
||||
<link rel="stylesheet" href="bower_components/handsontable/dist/handsontable.css" />
|
||||
<link rel="stylesheet" href="bower_components/github-markdown-css/github-markdown.css" />
|
||||
<!-- endbower -->
|
||||
<link rel="stylesheet" href="bower_components/jquery-ui/themes/base/jquery-ui.css" />
|
||||
<link rel="stylesheet" href="bower_components/select2/dist/css/select2.css" />
|
||||
|
|
|
|||
|
|
@ -12,6 +12,9 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
// import globally uses css here
|
||||
import 'github-markdown-css/github-markdown.css'
|
||||
|
||||
import './app/app.js'
|
||||
import './app/app.controller.js'
|
||||
import './app/home/home.controller.js'
|
||||
|
|
|
|||
|
|
@ -165,7 +165,7 @@ module.exports = function makeWebpackConfig () {
|
|||
//
|
||||
// Reference: https://github.com/webpack/style-loader
|
||||
// Use style-loader in development.
|
||||
loader: isTest ? 'null' : ExtractTextPlugin.extract('style-loader', 'css-loader?sourceMap!postcss-loader')
|
||||
loader: ExtractTextPlugin.extract('style-loader', 'css-loader?sourceMap!postcss-loader')
|
||||
}, {
|
||||
// ASSET LOADER
|
||||
// Reference: https://github.com/webpack/file-loader
|
||||
|
|
@ -215,6 +215,10 @@ module.exports = function makeWebpackConfig () {
|
|||
* List: http://webpack.github.io/docs/list-of-plugins.html
|
||||
*/
|
||||
config.plugins = [
|
||||
// Reference: https://github.com/webpack/extract-text-webpack-plugin
|
||||
// Extract css files
|
||||
// Disabled when in test mode or not in build mode
|
||||
new ExtractTextPlugin('[name].[hash].css', {disable: !isProd}),
|
||||
];
|
||||
|
||||
// Skip rendering index.html in test mode
|
||||
|
|
@ -227,11 +231,6 @@ module.exports = function makeWebpackConfig () {
|
|||
inject: 'body'
|
||||
}),
|
||||
|
||||
// Reference: https://github.com/webpack/extract-text-webpack-plugin
|
||||
// Extract css files
|
||||
// Disabled when in test mode or not in build mode
|
||||
new ExtractTextPlugin('[name].[hash].css', {disable: !isProd}),
|
||||
|
||||
// Reference: https://webpack.github.io/docs/list-of-plugins.html#defineplugin
|
||||
new webpack.DefinePlugin({
|
||||
'process.env': {
|
||||
|
|
|
|||
|
|
@ -224,43 +224,43 @@ public class InstallInterpreter {
|
|||
for (int i = 0; i < args.length; i++) {
|
||||
String arg = args[i].toLowerCase(Locale.US);
|
||||
switch (arg) {
|
||||
case "--list":
|
||||
case "-l":
|
||||
installer.list();
|
||||
System.exit(0);
|
||||
break;
|
||||
case "--all":
|
||||
case "-a":
|
||||
all = true;
|
||||
break;
|
||||
case "--name":
|
||||
case "-n":
|
||||
names = args[++i];
|
||||
break;
|
||||
case "--artifact":
|
||||
case "-t":
|
||||
artifacts = args[++i];
|
||||
break;
|
||||
case "--version":
|
||||
case "-v":
|
||||
Util.getVersion();
|
||||
break;
|
||||
case "--proxy-url":
|
||||
proxyUrl = new URL(args[++i]);
|
||||
break;
|
||||
case "--proxy-user":
|
||||
proxyUser = args[++i];
|
||||
break;
|
||||
case "--proxy-password":
|
||||
proxyPassword = args[++i];
|
||||
break;
|
||||
case "--help":
|
||||
case "-h":
|
||||
usage();
|
||||
System.exit(0);
|
||||
break;
|
||||
default:
|
||||
System.out.println("Unknown option " + arg);
|
||||
case "--list":
|
||||
case "-l":
|
||||
installer.list();
|
||||
System.exit(0);
|
||||
break;
|
||||
case "--all":
|
||||
case "-a":
|
||||
all = true;
|
||||
break;
|
||||
case "--name":
|
||||
case "-n":
|
||||
names = args[++i];
|
||||
break;
|
||||
case "--artifact":
|
||||
case "-t":
|
||||
artifacts = args[++i];
|
||||
break;
|
||||
case "--version":
|
||||
case "-v":
|
||||
Util.getVersion();
|
||||
break;
|
||||
case "--proxy-url":
|
||||
proxyUrl = new URL(args[++i]);
|
||||
break;
|
||||
case "--proxy-user":
|
||||
proxyUser = args[++i];
|
||||
break;
|
||||
case "--proxy-password":
|
||||
proxyPassword = args[++i];
|
||||
break;
|
||||
case "--help":
|
||||
case "-h":
|
||||
usage();
|
||||
System.exit(0);
|
||||
break;
|
||||
default:
|
||||
System.out.println("Unknown option " + arg);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -220,12 +220,12 @@ public class ZeppelinhubClient {
|
|||
return;
|
||||
}
|
||||
switch (op) {
|
||||
case RUN_NOTEBOOK:
|
||||
runAllParagraph(hubMsg.meta.get("noteId"), msg);
|
||||
break;
|
||||
default:
|
||||
LOG.debug("Received {} from ZeppelinHub, not handled", op);
|
||||
break;
|
||||
case RUN_NOTEBOOK:
|
||||
runAllParagraph(hubMsg.meta.get("noteId"), msg);
|
||||
break;
|
||||
default:
|
||||
LOG.debug("Received {} from ZeppelinHub, not handled", op);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue