initial check in
This commit is contained in:
1
java/mon-middleware/.idea/.name
generated
Normal file
1
java/mon-middleware/.idea/.name
generated
Normal file
@@ -0,0 +1 @@
|
||||
mon-middleware
|
||||
33
java/mon-middleware/.idea/compiler.xml
generated
Normal file
33
java/mon-middleware/.idea/compiler.xml
generated
Normal file
@@ -0,0 +1,33 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="CompilerConfiguration">
|
||||
<option name="DEFAULT_COMPILER" value="Javac" />
|
||||
<resourceExtensions />
|
||||
<wildcardResourcePatterns>
|
||||
<entry name="!?*.java" />
|
||||
<entry name="!?*.form" />
|
||||
<entry name="!?*.class" />
|
||||
<entry name="!?*.groovy" />
|
||||
<entry name="!?*.scala" />
|
||||
<entry name="!?*.flex" />
|
||||
<entry name="!?*.kt" />
|
||||
<entry name="!?*.clj" />
|
||||
</wildcardResourcePatterns>
|
||||
<annotationProcessing>
|
||||
<profile default="true" name="Default" enabled="false">
|
||||
<processorPath useClasspath="true" />
|
||||
</profile>
|
||||
<profile default="false" name="Maven default annotation processors profile" enabled="true">
|
||||
<sourceOutputDir name="target/generated-sources/annotations" />
|
||||
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
|
||||
<outputRelativeToContentRoot value="true" />
|
||||
<processorPath useClasspath="true" />
|
||||
<module name="mon-middleware" />
|
||||
</profile>
|
||||
</annotationProcessing>
|
||||
<bytecodeTargetLevel>
|
||||
<module name="mon-middleware" target="1.7" />
|
||||
</bytecodeTargetLevel>
|
||||
</component>
|
||||
</project>
|
||||
|
||||
3
java/mon-middleware/.idea/copyright/profiles_settings.xml
generated
Normal file
3
java/mon-middleware/.idea/copyright/profiles_settings.xml
generated
Normal file
@@ -0,0 +1,3 @@
|
||||
<component name="CopyrightManager">
|
||||
<settings default="" />
|
||||
</component>
|
||||
7
java/mon-middleware/.idea/encodings.xml
generated
Normal file
7
java/mon-middleware/.idea/encodings.xml
generated
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false">
|
||||
<file url="file://$PROJECT_DIR$" charset="UTF-8" />
|
||||
</component>
|
||||
</project>
|
||||
|
||||
14
java/mon-middleware/.idea/inspectionProfiles/Project_Default.xml
generated
Normal file
14
java/mon-middleware/.idea/inspectionProfiles/Project_Default.xml
generated
Normal file
@@ -0,0 +1,14 @@
|
||||
<component name="InspectionProjectProfileManager">
|
||||
<profile version="1.0" is_locked="false">
|
||||
<option name="myName" value="Project Default" />
|
||||
<option name="myLocal" value="false" />
|
||||
<inspection_tool class="LoggerInitializedWithForeignClass" enabled="false" level="WARNING" enabled_by_default="false">
|
||||
<option name="loggerClassName" value="org.apache.log4j.Logger,org.slf4j.LoggerFactory,org.apache.commons.logging.LogFactory,java.util.logging.Logger" />
|
||||
<option name="loggerFactoryMethodName" value="getLogger,getLogger,getLog,getLogger" />
|
||||
</inspection_tool>
|
||||
<inspection_tool class="SerializableHasSerialVersionUIDField" enabled="true" level="WARNING" enabled_by_default="true">
|
||||
<option name="ignoreAnonymousInnerClasses" value="false" />
|
||||
<option name="superClassString" value="" />
|
||||
</inspection_tool>
|
||||
</profile>
|
||||
</component>
|
||||
7
java/mon-middleware/.idea/inspectionProfiles/profiles_settings.xml
generated
Normal file
7
java/mon-middleware/.idea/inspectionProfiles/profiles_settings.xml
generated
Normal file
@@ -0,0 +1,7 @@
|
||||
<component name="InspectionProjectProfileManager">
|
||||
<settings>
|
||||
<option name="PROJECT_PROFILE" value="Project Default" />
|
||||
<option name="USE_PROJECT_PROFILE" value="true" />
|
||||
<version value="1.0" />
|
||||
</settings>
|
||||
</component>
|
||||
13
java/mon-middleware/.idea/libraries/Maven__aopalliance_aopalliance_1_0.xml
generated
Normal file
13
java/mon-middleware/.idea/libraries/Maven__aopalliance_aopalliance_1_0.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: aopalliance:aopalliance:1.0">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aopalliance/aopalliance/1.0/aopalliance-1.0.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aopalliance/aopalliance/1.0/aopalliance-1.0-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aopalliance/aopalliance/1.0/aopalliance-1.0-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
java/mon-middleware/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_1_1.xml
generated
Normal file
13
java/mon-middleware/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_1_1.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: ch.qos.logback:logback-classic:1.1.1">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/ch/qos/logback/logback-classic/1.1.1/logback-classic-1.1.1.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/ch/qos/logback/logback-classic/1.1.1/logback-classic-1.1.1-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/ch/qos/logback/logback-classic/1.1.1/logback-classic-1.1.1-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
java/mon-middleware/.idea/libraries/Maven__ch_qos_logback_logback_core_1_1_1.xml
generated
Normal file
13
java/mon-middleware/.idea/libraries/Maven__ch_qos_logback_logback_core_1_1_1.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: ch.qos.logback:logback-core:1.1.1">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/ch/qos/logback/logback-core/1.1.1/logback-core-1.1.1.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/ch/qos/logback/logback-core/1.1.1/logback-core-1.1.1-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/ch/qos/logback/logback-core/1.1.1/logback-core-1.1.1-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
java/mon-middleware/.idea/libraries/Maven__com_beust_jcommander_1_27.xml
generated
Normal file
13
java/mon-middleware/.idea/libraries/Maven__com_beust_jcommander_1_27.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: com.beust:jcommander:1.27">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/beust/jcommander/1.27/jcommander-1.27.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/beust/jcommander/1.27/jcommander-1.27-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/beust/jcommander/1.27/jcommander-1.27-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
java/mon-middleware/.idea/libraries/Maven__com_codahale_metrics_metrics_core_3_0_2.xml
generated
Normal file
13
java/mon-middleware/.idea/libraries/Maven__com_codahale_metrics_metrics_core_3_0_2.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: com.codahale.metrics:metrics-core:3.0.2">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/codahale/metrics/metrics-core/3.0.2/metrics-core-3.0.2.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/codahale/metrics/metrics-core/3.0.2/metrics-core-3.0.2-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/codahale/metrics/metrics-core/3.0.2/metrics-core-3.0.2-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
java/mon-middleware/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_3_0.xml
generated
Normal file
13
java/mon-middleware/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_3_0.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.3.0">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-annotations/2.3.0/jackson-annotations-2.3.0.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-annotations/2.3.0/jackson-annotations-2.3.0-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-annotations/2.3.0/jackson-annotations-2.3.0-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
java/mon-middleware/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_3_0.xml
generated
Normal file
13
java/mon-middleware/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_3_0.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: com.fasterxml.jackson.core:jackson-core:2.3.0">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-core/2.3.0/jackson-core-2.3.0.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-core/2.3.0/jackson-core-2.3.0-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-core/2.3.0/jackson-core-2.3.0-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
java/mon-middleware/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_3_0.xml
generated
Normal file
13
java/mon-middleware/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_3_0.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: com.fasterxml.jackson.core:jackson-databind:2.3.0">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-databind/2.3.0/jackson-databind-2.3.0.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-databind/2.3.0/jackson-databind-2.3.0-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-databind/2.3.0/jackson-databind-2.3.0-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.3.0">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/dataformat/jackson-dataformat-yaml/2.3.0/jackson-dataformat-yaml-2.3.0.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/dataformat/jackson-dataformat-yaml/2.3.0/jackson-dataformat-yaml-2.3.0-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/dataformat/jackson-dataformat-yaml/2.3.0/jackson-dataformat-yaml-2.3.0-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-joda:2.3.0">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/datatype/jackson-datatype-joda/2.3.0/jackson-datatype-joda-2.3.0.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/datatype/jackson-datatype-joda/2.3.0/jackson-datatype-joda-2.3.0-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/datatype/jackson-datatype-joda/2.3.0/jackson-datatype-joda-2.3.0-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
java/mon-middleware/.idea/libraries/Maven__com_google_code_findbugs_jsr305_2_0_0.xml
generated
Normal file
13
java/mon-middleware/.idea/libraries/Maven__com_google_code_findbugs_jsr305_2_0_0.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: com.google.code.findbugs:jsr305:2.0.0">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/google/code/findbugs/jsr305/2.0.0/jsr305-2.0.0.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/google/code/findbugs/jsr305/2.0.0/jsr305-2.0.0-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/google/code/findbugs/jsr305/2.0.0/jsr305-2.0.0-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
java/mon-middleware/.idea/libraries/Maven__com_google_code_gson_gson_2_2_4.xml
generated
Normal file
13
java/mon-middleware/.idea/libraries/Maven__com_google_code_gson_gson_2_2_4.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: com.google.code.gson:gson:2.2.4">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/google/code/gson/gson/2.2.4/gson-2.2.4.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/google/code/gson/gson/2.2.4/gson-2.2.4-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/google/code/gson/gson/2.2.4/gson-2.2.4-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
java/mon-middleware/.idea/libraries/Maven__com_google_guava_guava_17_0.xml
generated
Normal file
13
java/mon-middleware/.idea/libraries/Maven__com_google_guava_guava_17_0.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: com.google.guava:guava:17.0">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/google/guava/guava/17.0/guava-17.0.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/google/guava/guava/17.0/guava-17.0-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/google/guava/guava/17.0/guava-17.0-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
java/mon-middleware/.idea/libraries/Maven__com_google_inject_guice_3_0.xml
generated
Normal file
13
java/mon-middleware/.idea/libraries/Maven__com_google_inject_guice_3_0.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: com.google.inject:guice:3.0">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/google/inject/guice/3.0/guice-3.0.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/google/inject/guice/3.0/guice-3.0-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/google/inject/guice/3.0/guice-3.0-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
java/mon-middleware/.idea/libraries/Maven__com_h2database_h2_1_3_175.xml
generated
Normal file
13
java/mon-middleware/.idea/libraries/Maven__com_h2database_h2_1_3_175.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: com.h2database:h2:1.3.175">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/h2database/h2/1.3.175/h2-1.3.175.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/h2database/h2/1.3.175/h2-1.3.175-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/h2database/h2/1.3.175/h2-1.3.175-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
java/mon-middleware/.idea/libraries/Maven__com_hpcloud_mon_testing_1_0_0_SNAPSHOT.xml
generated
Normal file
13
java/mon-middleware/.idea/libraries/Maven__com_hpcloud_mon_testing_1_0_0_SNAPSHOT.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: com.hpcloud:mon-testing:1.0.0-SNAPSHOT">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/hpcloud/mon-testing/1.0.0-SNAPSHOT/mon-testing-1.0.0-SNAPSHOT.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/hpcloud/mon-testing/1.0.0-SNAPSHOT/mon-testing-1.0.0-SNAPSHOT-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/hpcloud/mon-testing/1.0.0-SNAPSHOT/mon-testing-1.0.0-SNAPSHOT-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
java/mon-middleware/.idea/libraries/Maven__com_hpcloud_mon_util_1_0_0_SNAPSHOT.xml
generated
Normal file
13
java/mon-middleware/.idea/libraries/Maven__com_hpcloud_mon_util_1_0_0_SNAPSHOT.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: com.hpcloud:mon-util:1.0.0-SNAPSHOT">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/hpcloud/mon-util/1.0.0-SNAPSHOT/mon-util-1.0.0-SNAPSHOT.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/hpcloud/mon-util/1.0.0-SNAPSHOT/mon-util-1.0.0-SNAPSHOT-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/hpcloud/mon-util/1.0.0-SNAPSHOT/mon-util-1.0.0-SNAPSHOT-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
java/mon-middleware/.idea/libraries/Maven__commons_codec_commons_codec_1_6.xml
generated
Normal file
13
java/mon-middleware/.idea/libraries/Maven__commons_codec_commons_codec_1_6.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: commons-codec:commons-codec:1.6">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/commons-codec/commons-codec/1.6/commons-codec-1.6.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/commons-codec/commons-codec/1.6/commons-codec-1.6-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/commons-codec/commons-codec/1.6/commons-codec-1.6-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
java/mon-middleware/.idea/libraries/Maven__commons_lang_commons_lang_2_5.xml
generated
Normal file
13
java/mon-middleware/.idea/libraries/Maven__commons_lang_commons_lang_2_5.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: commons-lang:commons-lang:2.5">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/commons-lang/commons-lang/2.5/commons-lang-2.5.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/commons-lang/commons-lang/2.5/commons-lang-2.5-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/commons-lang/commons-lang/2.5/commons-lang-2.5-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
java/mon-middleware/.idea/libraries/Maven__commons_logging_commons_logging_1_1_1.xml
generated
Normal file
13
java/mon-middleware/.idea/libraries/Maven__commons_logging_commons_logging_1_1_1.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: commons-logging:commons-logging:1.1.1">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
java/mon-middleware/.idea/libraries/Maven__commons_pool_commons_pool_1_6.xml
generated
Normal file
13
java/mon-middleware/.idea/libraries/Maven__commons_pool_commons_pool_1_6.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: commons-pool:commons-pool:1.6">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/commons-pool/commons-pool/1.6/commons-pool-1.6.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/commons-pool/commons-pool/1.6/commons-pool-1.6-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/commons-pool/commons-pool/1.6/commons-pool-1.6-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
java/mon-middleware/.idea/libraries/Maven__javax_inject_javax_inject_1.xml
generated
Normal file
13
java/mon-middleware/.idea/libraries/Maven__javax_inject_javax_inject_1.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: javax.inject:javax.inject:1">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/javax/inject/javax.inject/1/javax.inject-1.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/javax/inject/javax.inject/1/javax.inject-1-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/javax/inject/javax.inject/1/javax.inject-1-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
java/mon-middleware/.idea/libraries/Maven__javax_servlet_servlet_api_2_5.xml
generated
Normal file
13
java/mon-middleware/.idea/libraries/Maven__javax_servlet_servlet_api_2_5.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: javax.servlet:servlet-api:2.5">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/javax/servlet/servlet-api/2.5/servlet-api-2.5.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/javax/servlet/servlet-api/2.5/servlet-api-2.5-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/javax/servlet/servlet-api/2.5/servlet-api-2.5-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
java/mon-middleware/.idea/libraries/Maven__javax_validation_validation_api_1_0_0_GA.xml
generated
Normal file
13
java/mon-middleware/.idea/libraries/Maven__javax_validation_validation_api_1_0_0_GA.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: javax.validation:validation-api:1.0.0.GA">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/javax/validation/validation-api/1.0.0.GA/validation-api-1.0.0.GA.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/javax/validation/validation-api/1.0.0.GA/validation-api-1.0.0.GA-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/javax/validation/validation-api/1.0.0.GA/validation-api-1.0.0.GA-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
java/mon-middleware/.idea/libraries/Maven__joda_time_joda_time_2_3.xml
generated
Normal file
13
java/mon-middleware/.idea/libraries/Maven__joda_time_joda_time_2_3.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: joda-time:joda-time:2.3">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/joda-time/joda-time/2.3/joda-time-2.3.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/joda-time/joda-time/2.3/joda-time-2.3-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/joda-time/joda-time/2.3/joda-time-2.3-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
java/mon-middleware/.idea/libraries/Maven__junit_junit_4_10.xml
generated
Normal file
13
java/mon-middleware/.idea/libraries/Maven__junit_junit_4_10.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: junit:junit:4.10">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.10/junit-4.10.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.10/junit-4.10-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.10/junit-4.10-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
java/mon-middleware/.idea/libraries/Maven__org_apache_commons_commons_collections4_4_0.xml
generated
Normal file
13
java/mon-middleware/.idea/libraries/Maven__org_apache_commons_commons_collections4_4_0.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: org.apache.commons:commons-collections4:4.0">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-collections4/4.0/commons-collections4-4.0.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-collections4/4.0/commons-collections4-4.0-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-collections4/4.0/commons-collections4-4.0-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
java/mon-middleware/.idea/libraries/Maven__org_apache_httpcomponents_httpclient_4_2_1.xml
generated
Normal file
13
java/mon-middleware/.idea/libraries/Maven__org_apache_httpcomponents_httpclient_4_2_1.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: org.apache.httpcomponents:httpclient:4.2.1">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpclient/4.2.1/httpclient-4.2.1.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpclient/4.2.1/httpclient-4.2.1-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpclient/4.2.1/httpclient-4.2.1-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
java/mon-middleware/.idea/libraries/Maven__org_apache_httpcomponents_httpcore_4_2_1.xml
generated
Normal file
13
java/mon-middleware/.idea/libraries/Maven__org_apache_httpcomponents_httpcore_4_2_1.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: org.apache.httpcomponents:httpcore:4.2.1">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpcore/4.2.1/httpcore-4.2.1.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpcore/4.2.1/httpcore-4.2.1-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpcore/4.2.1/httpcore-4.2.1-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
java/mon-middleware/.idea/libraries/Maven__org_apache_thrift_libthrift_0_9_0.xml
generated
Normal file
13
java/mon-middleware/.idea/libraries/Maven__org_apache_thrift_libthrift_0_9_0.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: org.apache.thrift:libthrift:0.9.0">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/apache/thrift/libthrift/0.9.0/libthrift-0.9.0.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/apache/thrift/libthrift/0.9.0/libthrift-0.9.0-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/apache/thrift/libthrift/0.9.0/libthrift-0.9.0-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
java/mon-middleware/.idea/libraries/Maven__org_beanshell_bsh_2_0b4.xml
generated
Normal file
13
java/mon-middleware/.idea/libraries/Maven__org_beanshell_bsh_2_0b4.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: org.beanshell:bsh:2.0b4">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/beanshell/bsh/2.0b4/bsh-2.0b4.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/beanshell/bsh/2.0b4/bsh-2.0b4-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/beanshell/bsh/2.0b4/bsh-2.0b4-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
java/mon-middleware/.idea/libraries/Maven__org_eclipse_jetty_jetty_continuation_7_0_0_M2.xml
generated
Normal file
13
java/mon-middleware/.idea/libraries/Maven__org_eclipse_jetty_jetty_continuation_7_0_0_M2.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: org.eclipse.jetty:jetty-continuation:7.0.0.M2">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/eclipse/jetty/jetty-continuation/7.0.0.M2/jetty-continuation-7.0.0.M2.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/eclipse/jetty/jetty-continuation/7.0.0.M2/jetty-continuation-7.0.0.M2-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/eclipse/jetty/jetty-continuation/7.0.0.M2/jetty-continuation-7.0.0.M2-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
java/mon-middleware/.idea/libraries/Maven__org_eclipse_jetty_jetty_http_7_0_0_M2.xml
generated
Normal file
13
java/mon-middleware/.idea/libraries/Maven__org_eclipse_jetty_jetty_http_7_0_0_M2.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: org.eclipse.jetty:jetty-http:7.0.0.M2">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/eclipse/jetty/jetty-http/7.0.0.M2/jetty-http-7.0.0.M2.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/eclipse/jetty/jetty-http/7.0.0.M2/jetty-http-7.0.0.M2-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/eclipse/jetty/jetty-http/7.0.0.M2/jetty-http-7.0.0.M2-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
java/mon-middleware/.idea/libraries/Maven__org_eclipse_jetty_jetty_io_7_0_0_M2.xml
generated
Normal file
13
java/mon-middleware/.idea/libraries/Maven__org_eclipse_jetty_jetty_io_7_0_0_M2.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: org.eclipse.jetty:jetty-io:7.0.0.M2">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/eclipse/jetty/jetty-io/7.0.0.M2/jetty-io-7.0.0.M2.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/eclipse/jetty/jetty-io/7.0.0.M2/jetty-io-7.0.0.M2-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/eclipse/jetty/jetty-io/7.0.0.M2/jetty-io-7.0.0.M2-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
java/mon-middleware/.idea/libraries/Maven__org_eclipse_jetty_jetty_security_7_0_0_M2.xml
generated
Normal file
13
java/mon-middleware/.idea/libraries/Maven__org_eclipse_jetty_jetty_security_7_0_0_M2.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: org.eclipse.jetty:jetty-security:7.0.0.M2">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/eclipse/jetty/jetty-security/7.0.0.M2/jetty-security-7.0.0.M2.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/eclipse/jetty/jetty-security/7.0.0.M2/jetty-security-7.0.0.M2-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/eclipse/jetty/jetty-security/7.0.0.M2/jetty-security-7.0.0.M2-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
java/mon-middleware/.idea/libraries/Maven__org_eclipse_jetty_jetty_server_7_0_0_M2.xml
generated
Normal file
13
java/mon-middleware/.idea/libraries/Maven__org_eclipse_jetty_jetty_server_7_0_0_M2.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: org.eclipse.jetty:jetty-server:7.0.0.M2">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/eclipse/jetty/jetty-server/7.0.0.M2/jetty-server-7.0.0.M2.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/eclipse/jetty/jetty-server/7.0.0.M2/jetty-server-7.0.0.M2-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/eclipse/jetty/jetty-server/7.0.0.M2/jetty-server-7.0.0.M2-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
java/mon-middleware/.idea/libraries/Maven__org_eclipse_jetty_jetty_servlet_7_0_0_M2.xml
generated
Normal file
13
java/mon-middleware/.idea/libraries/Maven__org_eclipse_jetty_jetty_servlet_7_0_0_M2.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: org.eclipse.jetty:jetty-servlet:7.0.0.M2">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/eclipse/jetty/jetty-servlet/7.0.0.M2/jetty-servlet-7.0.0.M2.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/eclipse/jetty/jetty-servlet/7.0.0.M2/jetty-servlet-7.0.0.M2-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/eclipse/jetty/jetty-servlet/7.0.0.M2/jetty-servlet-7.0.0.M2-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
java/mon-middleware/.idea/libraries/Maven__org_eclipse_jetty_jetty_servlet_tester_7_0_0_M2.xml
generated
Normal file
13
java/mon-middleware/.idea/libraries/Maven__org_eclipse_jetty_jetty_servlet_tester_7_0_0_M2.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: org.eclipse.jetty:jetty-servlet-tester:7.0.0.M2">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/eclipse/jetty/jetty-servlet-tester/7.0.0.M2/jetty-servlet-tester-7.0.0.M2.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/eclipse/jetty/jetty-servlet-tester/7.0.0.M2/jetty-servlet-tester-7.0.0.M2-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/eclipse/jetty/jetty-servlet-tester/7.0.0.M2/jetty-servlet-tester-7.0.0.M2-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
java/mon-middleware/.idea/libraries/Maven__org_eclipse_jetty_jetty_util_7_0_0_M2.xml
generated
Normal file
13
java/mon-middleware/.idea/libraries/Maven__org_eclipse_jetty_jetty_util_7_0_0_M2.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: org.eclipse.jetty:jetty-util:7.0.0.M2">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/eclipse/jetty/jetty-util/7.0.0.M2/jetty-util-7.0.0.M2.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/eclipse/jetty/jetty-util/7.0.0.M2/jetty-util-7.0.0.M2-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/eclipse/jetty/jetty-util/7.0.0.M2/jetty-util-7.0.0.M2-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
java/mon-middleware/.idea/libraries/Maven__org_eclipse_jetty_jetty_webapp_7_0_0_M2.xml
generated
Normal file
13
java/mon-middleware/.idea/libraries/Maven__org_eclipse_jetty_jetty_webapp_7_0_0_M2.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: org.eclipse.jetty:jetty-webapp:7.0.0.M2">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/eclipse/jetty/jetty-webapp/7.0.0.M2/jetty-webapp-7.0.0.M2.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/eclipse/jetty/jetty-webapp/7.0.0.M2/jetty-webapp-7.0.0.M2-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/eclipse/jetty/jetty-webapp/7.0.0.M2/jetty-webapp-7.0.0.M2-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
java/mon-middleware/.idea/libraries/Maven__org_eclipse_jetty_jetty_xml_7_0_0_M2.xml
generated
Normal file
13
java/mon-middleware/.idea/libraries/Maven__org_eclipse_jetty_jetty_xml_7_0_0_M2.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: org.eclipse.jetty:jetty-xml:7.0.0.M2">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/eclipse/jetty/jetty-xml/7.0.0.M2/jetty-xml-7.0.0.M2.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/eclipse/jetty/jetty-xml/7.0.0.M2/jetty-xml-7.0.0.M2-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/eclipse/jetty/jetty-xml/7.0.0.M2/jetty-xml-7.0.0.M2-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
java/mon-middleware/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_1.xml
generated
Normal file
13
java/mon-middleware/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_1.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: org.hamcrest:hamcrest-core:1.1">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
java/mon-middleware/.idea/libraries/Maven__org_hibernate_hibernate_validator_4_3_0_Final.xml
generated
Normal file
13
java/mon-middleware/.idea/libraries/Maven__org_hibernate_hibernate_validator_4_3_0_Final.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: org.hibernate:hibernate-validator:4.3.0.Final">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/hibernate/hibernate-validator/4.3.0.Final/hibernate-validator-4.3.0.Final.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/hibernate/hibernate-validator/4.3.0.Final/hibernate-validator-4.3.0.Final-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/hibernate/hibernate-validator/4.3.0.Final/hibernate-validator-4.3.0.Final-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
java/mon-middleware/.idea/libraries/Maven__org_jboss_logging_jboss_logging_3_1_0_CR2.xml
generated
Normal file
13
java/mon-middleware/.idea/libraries/Maven__org_jboss_logging_jboss_logging_3_1_0_CR2.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: org.jboss.logging:jboss-logging:3.1.0.CR2">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jboss/logging/jboss-logging/3.1.0.CR2/jboss-logging-3.1.0.CR2.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jboss/logging/jboss-logging/3.1.0.CR2/jboss-logging-3.1.0.CR2-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jboss/logging/jboss-logging/3.1.0.CR2/jboss-logging-3.1.0.CR2-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
java/mon-middleware/.idea/libraries/Maven__org_jodah_concurrentunit_0_3_0.xml
generated
Normal file
13
java/mon-middleware/.idea/libraries/Maven__org_jodah_concurrentunit_0_3_0.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: org.jodah:concurrentunit:0.3.0">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jodah/concurrentunit/0.3.0/concurrentunit-0.3.0.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jodah/concurrentunit/0.3.0/concurrentunit-0.3.0-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jodah/concurrentunit/0.3.0/concurrentunit-0.3.0-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
java/mon-middleware/.idea/libraries/Maven__org_mockito_mockito_all_1_9_5.xml
generated
Normal file
13
java/mon-middleware/.idea/libraries/Maven__org_mockito_mockito_all_1_9_5.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: org.mockito:mockito-all:1.9.5">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/mockito/mockito-all/1.9.5/mockito-all-1.9.5.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/mockito/mockito-all/1.9.5/mockito-all-1.9.5-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/mockito/mockito-all/1.9.5/mockito-all-1.9.5-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
java/mon-middleware/.idea/libraries/Maven__org_slf4j_slf4j_api_1_5_8.xml
generated
Normal file
13
java/mon-middleware/.idea/libraries/Maven__org_slf4j_slf4j_api_1_5_8.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: org.slf4j:slf4j-api:1.5.8">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/slf4j/slf4j-api/1.5.8/slf4j-api-1.5.8.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/slf4j/slf4j-api/1.5.8/slf4j-api-1.5.8-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/slf4j/slf4j-api/1.5.8/slf4j-api-1.5.8-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
java/mon-middleware/.idea/libraries/Maven__org_testng_testng_6_8_7.xml
generated
Normal file
13
java/mon-middleware/.idea/libraries/Maven__org_testng_testng_6_8_7.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: org.testng:testng:6.8.7">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/testng/testng/6.8.7/testng-6.8.7.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/testng/testng/6.8.7/testng-6.8.7-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/testng/testng/6.8.7/testng-6.8.7-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
java/mon-middleware/.idea/libraries/Maven__org_yaml_snakeyaml_1_12.xml
generated
Normal file
13
java/mon-middleware/.idea/libraries/Maven__org_yaml_snakeyaml_1_12.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: org.yaml:snakeyaml:1.12">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/yaml/snakeyaml/1.12/snakeyaml-1.12.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/yaml/snakeyaml/1.12/snakeyaml-1.12-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/yaml/snakeyaml/1.12/snakeyaml-1.12-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
33
java/mon-middleware/.idea/misc.xml
generated
Normal file
33
java/mon-middleware/.idea/misc.xml
generated
Normal file
@@ -0,0 +1,33 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="EntryPointsManager">
|
||||
<entry_points version="2.0" />
|
||||
</component>
|
||||
<component name="MavenProjectsManager">
|
||||
<option name="originalFiles">
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/pom.xml" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_6" assert-keyword="true" jdk-15="true" project-jdk-name="1.7" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/out" />
|
||||
</component>
|
||||
<component name="masterDetails">
|
||||
<states>
|
||||
<state key="ProjectJDKs.UI">
|
||||
<settings>
|
||||
<last-edited>1.7</last-edited>
|
||||
<splitter-proportions>
|
||||
<option name="proportions">
|
||||
<list>
|
||||
<option value="0.2" />
|
||||
</list>
|
||||
</option>
|
||||
</splitter-proportions>
|
||||
</settings>
|
||||
</state>
|
||||
</states>
|
||||
</component>
|
||||
</project>
|
||||
|
||||
9
java/mon-middleware/.idea/modules.xml
generated
Normal file
9
java/mon-middleware/.idea/modules.xml
generated
Normal file
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/mon-middleware.iml" filepath="$PROJECT_DIR$/mon-middleware.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
||||
|
||||
5
java/mon-middleware/.idea/scopes/scope_settings.xml
generated
Normal file
5
java/mon-middleware/.idea/scopes/scope_settings.xml
generated
Normal file
@@ -0,0 +1,5 @@
|
||||
<component name="DependencyValidationManager">
|
||||
<state>
|
||||
<option name="SKIP_IMPORT_STATEMENTS" value="false" />
|
||||
</state>
|
||||
</component>
|
||||
7
java/mon-middleware/.idea/vcs.xml
generated
Normal file
7
java/mon-middleware/.idea/vcs.xml
generated
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="" vcs="" />
|
||||
</component>
|
||||
</project>
|
||||
|
||||
682
java/mon-middleware/.idea/workspace.xml
generated
Normal file
682
java/mon-middleware/.idea/workspace.xml
generated
Normal file
@@ -0,0 +1,682 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="a5076df4-d3aa-4df3-8298-5d367ebe7288" name="Default" comment="" />
|
||||
<ignored path="mon-middleware.iws" />
|
||||
<ignored path=".idea/workspace.xml" />
|
||||
<option name="TRACKING_ENABLED" value="true" />
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||
</component>
|
||||
<component name="ChangesViewManager" flattened_view="true" show_ignored="false" />
|
||||
<component name="CreatePatchCommitExecutor">
|
||||
<option name="PATCH_PATH" value="" />
|
||||
</component>
|
||||
<component name="DaemonCodeAnalyzer">
|
||||
<disable_hints />
|
||||
</component>
|
||||
<component name="DebuggerManager">
|
||||
<breakpoint_any converted="true">
|
||||
<breakpoint>
|
||||
<option name="NOTIFY_CAUGHT" value="true" />
|
||||
<option name="NOTIFY_UNCAUGHT" value="true" />
|
||||
<option name="ENABLED" value="false" />
|
||||
<option name="LOG_ENABLED" value="false" />
|
||||
<option name="LOG_EXPRESSION_ENABLED" value="false" />
|
||||
<option name="REMOVE_AFTER_HIT" value="false" />
|
||||
<option name="SUSPEND_POLICY" value="SuspendAll" />
|
||||
<option name="SUSPEND" value="true" />
|
||||
<option name="COUNT_FILTER_ENABLED" value="false" />
|
||||
<option name="COUNT_FILTER" value="0" />
|
||||
<option name="CONDITION_ENABLED" value="true" />
|
||||
<option name="CLASS_FILTERS_ENABLED" value="false" />
|
||||
<option name="INSTANCE_FILTERS_ENABLED" value="false" />
|
||||
<option name="CONDITION" value="" />
|
||||
<option name="LOG_MESSAGE" value="" />
|
||||
</breakpoint>
|
||||
<breakpoint>
|
||||
<option name="NOTIFY_CAUGHT" value="true" />
|
||||
<option name="NOTIFY_UNCAUGHT" value="true" />
|
||||
<option name="ENABLED" value="false" />
|
||||
<option name="LOG_ENABLED" value="false" />
|
||||
<option name="LOG_EXPRESSION_ENABLED" value="false" />
|
||||
<option name="REMOVE_AFTER_HIT" value="false" />
|
||||
<option name="SUSPEND_POLICY" value="SuspendAll" />
|
||||
<option name="SUSPEND" value="true" />
|
||||
<option name="COUNT_FILTER_ENABLED" value="false" />
|
||||
<option name="COUNT_FILTER" value="0" />
|
||||
<option name="CONDITION_ENABLED" value="true" />
|
||||
<option name="CLASS_FILTERS_ENABLED" value="false" />
|
||||
<option name="INSTANCE_FILTERS_ENABLED" value="false" />
|
||||
<option name="CONDITION" value="" />
|
||||
<option name="LOG_MESSAGE" value="" />
|
||||
</breakpoint>
|
||||
</breakpoint_any>
|
||||
<breakpoint_rules converted="true" />
|
||||
<ui_properties converted="true" />
|
||||
</component>
|
||||
<component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
|
||||
<component name="FavoritesManager">
|
||||
<favorites_list name="mon-middleware" />
|
||||
</component>
|
||||
<component name="FileEditorManager">
|
||||
<leaf>
|
||||
<file leaf-file-name="Config.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/hpcloud/middleware/Config.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="3795">
|
||||
<caret line="12" column="13" selection-start-line="12" selection-start-column="13" selection-end-line="12" selection-end-column="13" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="CatalogV3.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/hpcloud/middleware/CatalogV3.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="465">
|
||||
<caret line="4" column="13" selection-start-line="4" selection-start-column="13" selection-end-line="4" selection-end-column="13" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="AuthException.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/hpcloud/middleware/AuthException.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="330">
|
||||
<caret line="8" column="16" selection-start-line="8" selection-start-column="16" selection-end-line="8" selection-end-column="16" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="TokenExceptionHandler.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/hpcloud/middleware/TokenExceptionHandler.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="947" max-vertical-offset="1680">
|
||||
<caret line="90" column="28" selection-start-line="0" selection-start-column="0" selection-end-line="106" selection-end-column="0" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="TokenCache.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/hpcloud/middleware/TokenCache.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="1" max-vertical-offset="1020">
|
||||
<caret line="22" column="21" selection-start-line="22" selection-start-column="0" selection-end-line="22" selection-end-column="0" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="AuthConstants.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/hpcloud/middleware/AuthConstants.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="2829" max-vertical-offset="3585">
|
||||
<caret line="45" column="76" selection-start-line="45" selection-start-column="53" selection-end-line="45" selection-end-column="53" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="AuthConnectionException.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/hpcloud/middleware/AuthConnectionException.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="300">
|
||||
<caret line="9" column="44" selection-start-line="9" selection-start-column="44" selection-end-line="9" selection-end-column="44" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="AuthClient.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/hpcloud/middleware/AuthClient.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="390">
|
||||
<caret line="20" column="20" selection-start-line="20" selection-start-column="0" selection-end-line="20" selection-end-column="0" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="UnavailableException.java" pinned="false" current="true" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/hpcloud/middleware/UnavailableException.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.26603" vertical-offset="0" max-vertical-offset="733">
|
||||
<caret line="17" column="80" selection-start-line="17" selection-start-column="0" selection-end-line="17" selection-end-column="0" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="AuthClientFactory.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/hpcloud/middleware/AuthClientFactory.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="1194" max-vertical-offset="1950">
|
||||
<caret line="27" column="69" selection-start-line="27" selection-start-column="69" selection-end-line="27" selection-end-column="69" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
</leaf>
|
||||
</component>
|
||||
<component name="FindManager">
|
||||
<FindUsagesManager>
|
||||
<setting name="OPEN_NEW_TAB" value="true" />
|
||||
</FindUsagesManager>
|
||||
</component>
|
||||
<component name="GradleLocalSettings">
|
||||
<option name="modificationStamps">
|
||||
<map>
|
||||
<entry key="$PROJECT_DIR$/../../../../kafka" value="1392410561000" />
|
||||
</map>
|
||||
</option>
|
||||
</component>
|
||||
<component name="IdeDocumentHistory">
|
||||
<option name="changedFiles">
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/src/main/java/com/hpcloud/middleware/AuthClient.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/com/hpcloud/middleware/AuthClientFactory.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/com/hpcloud/middleware/AuthConstants.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/com/hpcloud/middleware/CatalogV3.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/com/hpcloud/middleware/Config.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/com/hpcloud/middleware/FilterUtils.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/com/hpcloud/middleware/HttpClientFactory.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/com/hpcloud/middleware/HttpClientPoolFactory.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/com/hpcloud/middleware/SignatureExceptionHandler.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/com/hpcloud/middleware/TokenCache.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/com/hpcloud/middleware/TokenExceptionHandler.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/com/hpcloud/middleware/AuthConnectionException.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/com/hpcloud/middleware/AuthException.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/com/hpcloud/middleware/UnavailableException.java" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="ProjectFrameBounds">
|
||||
<option name="y" value="22" />
|
||||
<option name="width" value="1440" />
|
||||
<option name="height" value="874" />
|
||||
</component>
|
||||
<component name="ProjectInspectionProfilesVisibleTreeState">
|
||||
<entry key="Project Default">
|
||||
<profile-state>
|
||||
<expanded-state>
|
||||
<State>
|
||||
<id />
|
||||
</State>
|
||||
<State>
|
||||
<id>Serialization issues</id>
|
||||
</State>
|
||||
</expanded-state>
|
||||
<selected-state>
|
||||
<State>
|
||||
<id>SerializableHasSerialVersionUIDField</id>
|
||||
</State>
|
||||
</selected-state>
|
||||
</profile-state>
|
||||
</entry>
|
||||
</component>
|
||||
<component name="ProjectLevelVcsManager" settingsEditedManually="false">
|
||||
<OptionsSetting value="true" id="Add" />
|
||||
<OptionsSetting value="true" id="Remove" />
|
||||
<OptionsSetting value="true" id="Checkout" />
|
||||
<OptionsSetting value="true" id="Update" />
|
||||
<OptionsSetting value="true" id="Status" />
|
||||
<OptionsSetting value="true" id="Edit" />
|
||||
<ConfirmationsSetting value="0" id="Add" />
|
||||
<ConfirmationsSetting value="0" id="Remove" />
|
||||
</component>
|
||||
<component name="ProjectReloadState">
|
||||
<option name="STATE" value="0" />
|
||||
</component>
|
||||
<component name="ProjectView">
|
||||
<navigator currentView="ProjectPane" proportions="" version="1">
|
||||
<flattenPackages />
|
||||
<showMembers />
|
||||
<showModules />
|
||||
<showLibraryContents />
|
||||
<hideEmptyPackages />
|
||||
<abbreviatePackageNames />
|
||||
<autoscrollToSource />
|
||||
<autoscrollFromSource />
|
||||
<sortByType />
|
||||
</navigator>
|
||||
<panes>
|
||||
<pane id="Scope" />
|
||||
<pane id="ProjectPane">
|
||||
<subPane>
|
||||
<PATH>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="mon-middleware" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
||||
</PATH_ELEMENT>
|
||||
</PATH>
|
||||
<PATH>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="mon-middleware" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="mon-middleware" />
|
||||
<option name="myItemType" value="com.android.tools.idea.gradle.projectView.AndroidPsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
</PATH>
|
||||
<PATH>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="mon-middleware" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="mon-middleware" />
|
||||
<option name="myItemType" value="com.android.tools.idea.gradle.projectView.AndroidPsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="src" />
|
||||
<option name="myItemType" value="com.android.tools.idea.gradle.projectView.AndroidPsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="main" />
|
||||
<option name="myItemType" value="com.android.tools.idea.gradle.projectView.AndroidPsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="java" />
|
||||
<option name="myItemType" value="com.android.tools.idea.gradle.projectView.AndroidPsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="middleware" />
|
||||
<option name="myItemType" value="com.android.tools.idea.gradle.projectView.AndroidPsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
</PATH>
|
||||
</subPane>
|
||||
</pane>
|
||||
<pane id="PackagesPane" />
|
||||
</panes>
|
||||
</component>
|
||||
<component name="PropertiesComponent">
|
||||
<property name="GoToFile.includeJavaFiles" value="false" />
|
||||
<property name="GoToClass.toSaveIncludeLibraries" value="false" />
|
||||
<property name="MemberChooser.sorted" value="false" />
|
||||
<property name="MemberChooser.showClasses" value="true" />
|
||||
<property name="GoToClass.includeLibraries" value="false" />
|
||||
<property name="MemberChooser.copyJavadoc" value="false" />
|
||||
<property name="LayoutCode.rearrangeEntriesJava" value="false" />
|
||||
<property name="options.lastSelected" value="Errors" />
|
||||
<property name="options.splitter.main.proportions" value="0.3" />
|
||||
<property name="options.splitter.details.proportions" value="0.2" />
|
||||
<property name="options.searchVisible" value="true" />
|
||||
</component>
|
||||
<component name="RunManager">
|
||||
<configuration default="true" type="#org.jetbrains.idea.devkit.run.PluginConfigurationType" factoryName="Plugin">
|
||||
<module name="" />
|
||||
<option name="VM_PARAMETERS" value="-Xmx512m -Xms256m -XX:MaxPermSize=250m" />
|
||||
<option name="PROGRAM_PARAMETERS" />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="true" type="AndroidTestRunConfigurationType" factoryName="Android Tests">
|
||||
<module name="" />
|
||||
<option name="TESTING_TYPE" value="0" />
|
||||
<option name="INSTRUMENTATION_RUNNER_CLASS" value="" />
|
||||
<option name="METHOD_NAME" value="" />
|
||||
<option name="CLASS_NAME" value="" />
|
||||
<option name="PACKAGE_NAME" value="" />
|
||||
<option name="TARGET_SELECTION_MODE" value="EMULATOR" />
|
||||
<option name="USE_LAST_SELECTED_DEVICE" value="false" />
|
||||
<option name="PREFERRED_AVD" value="" />
|
||||
<option name="USE_COMMAND_LINE" value="true" />
|
||||
<option name="COMMAND_LINE" value="" />
|
||||
<option name="WIPE_USER_DATA" value="false" />
|
||||
<option name="DISABLE_BOOT_ANIMATION" value="false" />
|
||||
<option name="NETWORK_SPEED" value="full" />
|
||||
<option name="NETWORK_LATENCY" value="none" />
|
||||
<option name="CLEAR_LOGCAT" value="false" />
|
||||
<option name="SHOW_LOGCAT_AUTOMATICALLY" value="true" />
|
||||
<option name="FILTER_LOGCAT_AUTOMATICALLY" value="true" />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="true" type="Remote" factoryName="Remote">
|
||||
<option name="USE_SOCKET_TRANSPORT" value="true" />
|
||||
<option name="SERVER_MODE" value="false" />
|
||||
<option name="SHMEM_ADDRESS" value="javadebug" />
|
||||
<option name="HOST" value="localhost" />
|
||||
<option name="PORT" value="5005" />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="true" type="TestNG" factoryName="TestNG">
|
||||
<module name="" />
|
||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
||||
<option name="ALTERNATIVE_JRE_PATH" />
|
||||
<option name="SUITE_NAME" />
|
||||
<option name="PACKAGE_NAME" />
|
||||
<option name="MAIN_CLASS_NAME" />
|
||||
<option name="METHOD_NAME" />
|
||||
<option name="GROUP_NAME" />
|
||||
<option name="TEST_OBJECT" value="CLASS" />
|
||||
<option name="VM_PARAMETERS" value="-ea" />
|
||||
<option name="PARAMETERS" />
|
||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||
<option name="OUTPUT_DIRECTORY" />
|
||||
<option name="ANNOTATION_TYPE" />
|
||||
<option name="ENV_VARIABLES" />
|
||||
<option name="PASS_PARENT_ENVS" value="true" />
|
||||
<option name="TEST_SEARCH_SCOPE">
|
||||
<value defaultName="moduleWithDependencies" />
|
||||
</option>
|
||||
<option name="USE_DEFAULT_REPORTERS" value="false" />
|
||||
<option name="PROPERTIES_FILE" />
|
||||
<envs />
|
||||
<properties />
|
||||
<listeners />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="true" type="Applet" factoryName="Applet">
|
||||
<module name="" />
|
||||
<option name="MAIN_CLASS_NAME" />
|
||||
<option name="HTML_FILE_NAME" />
|
||||
<option name="HTML_USED" value="false" />
|
||||
<option name="WIDTH" value="400" />
|
||||
<option name="HEIGHT" value="300" />
|
||||
<option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" />
|
||||
<option name="VM_PARAMETERS" />
|
||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
||||
<option name="ALTERNATIVE_JRE_PATH" />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="true" type="Application" factoryName="Application">
|
||||
<option name="MAIN_CLASS_NAME" />
|
||||
<option name="VM_PARAMETERS" />
|
||||
<option name="PROGRAM_PARAMETERS" />
|
||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
||||
<option name="ALTERNATIVE_JRE_PATH" />
|
||||
<option name="ENABLE_SWING_INSPECTOR" value="false" />
|
||||
<option name="ENV_VARIABLES" />
|
||||
<option name="PASS_PARENT_ENVS" value="true" />
|
||||
<module name="" />
|
||||
<envs />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="true" type="JUnit" factoryName="JUnit">
|
||||
<module name="" />
|
||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
||||
<option name="ALTERNATIVE_JRE_PATH" />
|
||||
<option name="PACKAGE_NAME" />
|
||||
<option name="MAIN_CLASS_NAME" />
|
||||
<option name="METHOD_NAME" />
|
||||
<option name="TEST_OBJECT" value="class" />
|
||||
<option name="VM_PARAMETERS" value="-ea" />
|
||||
<option name="PARAMETERS" />
|
||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||
<option name="ENV_VARIABLES" />
|
||||
<option name="PASS_PARENT_ENVS" value="true" />
|
||||
<option name="TEST_SEARCH_SCOPE">
|
||||
<value defaultName="moduleWithDependencies" />
|
||||
</option>
|
||||
<envs />
|
||||
<patterns />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="true" type="AndroidRunConfigurationType" factoryName="Android Application">
|
||||
<module name="" />
|
||||
<option name="ACTIVITY_CLASS" value="" />
|
||||
<option name="MODE" value="default_activity" />
|
||||
<option name="DEPLOY" value="true" />
|
||||
<option name="ARTIFACT_NAME" value="" />
|
||||
<option name="TARGET_SELECTION_MODE" value="EMULATOR" />
|
||||
<option name="USE_LAST_SELECTED_DEVICE" value="false" />
|
||||
<option name="PREFERRED_AVD" value="" />
|
||||
<option name="USE_COMMAND_LINE" value="true" />
|
||||
<option name="COMMAND_LINE" value="" />
|
||||
<option name="WIPE_USER_DATA" value="false" />
|
||||
<option name="DISABLE_BOOT_ANIMATION" value="false" />
|
||||
<option name="NETWORK_SPEED" value="full" />
|
||||
<option name="NETWORK_LATENCY" value="none" />
|
||||
<option name="CLEAR_LOGCAT" value="false" />
|
||||
<option name="SHOW_LOGCAT_AUTOMATICALLY" value="true" />
|
||||
<option name="FILTER_LOGCAT_AUTOMATICALLY" value="true" />
|
||||
<method />
|
||||
</configuration>
|
||||
<list size="0" />
|
||||
<configuration name="<template>" type="WebApp" default="true" selected="false">
|
||||
<Host>localhost</Host>
|
||||
<Port>5050</Port>
|
||||
</configuration>
|
||||
</component>
|
||||
<component name="ShelveChangesManager" show_recycled="false" />
|
||||
<component name="TaskManager">
|
||||
<task active="true" id="Default" summary="Default task">
|
||||
<changelist id="a5076df4-d3aa-4df3-8298-5d367ebe7288" name="Default" comment="" />
|
||||
<created>1403761977800</created>
|
||||
<updated>1403761977800</updated>
|
||||
</task>
|
||||
<servers />
|
||||
</component>
|
||||
<component name="ToolWindowManager">
|
||||
<frame x="0" y="22" width="1440" height="874" extended-state="0" />
|
||||
<editor active="true" />
|
||||
<layout>
|
||||
<window_info id="Palette	" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Designer" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" />
|
||||
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" />
|
||||
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Application Servers" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.24964234" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
|
||||
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
|
||||
</layout>
|
||||
</component>
|
||||
<component name="Vcs.Log.UiProperties">
|
||||
<option name="RECENTLY_FILTERED_USER_GROUPS">
|
||||
<collection />
|
||||
</option>
|
||||
<option name="RECENTLY_FILTERED_BRANCH_GROUPS">
|
||||
<collection />
|
||||
</option>
|
||||
</component>
|
||||
<component name="VcsContentAnnotationSettings">
|
||||
<option name="myLimit" value="2678400000" />
|
||||
</component>
|
||||
<component name="VcsManagerConfiguration">
|
||||
<option name="myTodoPanelSettings">
|
||||
<TodoPanelSettings />
|
||||
</option>
|
||||
</component>
|
||||
<component name="XDebuggerManager">
|
||||
<breakpoint-manager />
|
||||
</component>
|
||||
<component name="editorHistoryManager">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/hpcloud/middleware/SignatureBuilderException.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="255">
|
||||
<caret line="2" column="13" selection-start-line="2" selection-start-column="13" selection-end-line="2" selection-end-column="13" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/hpcloud/middleware/TokenAuth.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="139" max-vertical-offset="1965">
|
||||
<caret line="40" column="13" selection-start-line="40" selection-start-column="13" selection-end-line="40" selection-end-column="13" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/hpcloud/middleware/SignatureExceptionHandler.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="542" max-vertical-offset="1275">
|
||||
<caret line="72" column="92" selection-start-line="72" selection-start-column="4" selection-end-line="72" selection-end-column="4" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/hpcloud/middleware/HttpPoolCleaner.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="900">
|
||||
<caret line="12" column="13" selection-start-line="12" selection-start-column="13" selection-end-line="12" selection-end-column="13" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/hpcloud/middleware/HttpClientPoolFactory.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="1307" max-vertical-offset="2040">
|
||||
<caret line="30" column="66" selection-start-line="30" selection-start-column="49" selection-end-line="30" selection-end-column="49" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
<element signature="e#2840#2841#0" expanded="true" />
|
||||
<element signature="e#2888#2889#0" expanded="true" />
|
||||
<element signature="e#2962#2963#0" expanded="true" />
|
||||
<element signature="e#3002#3003#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/hpcloud/middleware/HttpClientFactory.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="525">
|
||||
<caret line="20" column="64" selection-start-line="20" selection-start-column="45" selection-end-line="20" selection-end-column="45" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/hpcloud/middleware/HttpAuthClient.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="4245">
|
||||
<caret line="31" column="13" selection-start-line="31" selection-start-column="13" selection-end-line="31" selection-end-column="13" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/hpcloud/middleware/FilterUtils.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="349" max-vertical-offset="4005">
|
||||
<caret line="39" column="13" selection-start-line="39" selection-start-column="13" selection-end-line="39" selection-end-column="13" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/hpcloud/middleware/ExceptionHandlerUtil.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="600">
|
||||
<caret line="2" column="13" selection-start-line="2" selection-start-column="13" selection-end-line="2" selection-end-column="13" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/hpcloud/middleware/Config.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="3795">
|
||||
<caret line="12" column="13" selection-start-line="12" selection-start-column="13" selection-end-line="12" selection-end-column="13" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/hpcloud/middleware/CatalogV3.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="465">
|
||||
<caret line="4" column="13" selection-start-line="4" selection-start-column="13" selection-end-line="4" selection-end-column="13" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/hpcloud/middleware/AuthConstants.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="2829" max-vertical-offset="3585">
|
||||
<caret line="45" column="76" selection-start-line="45" selection-start-column="53" selection-end-line="45" selection-end-column="53" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/hpcloud/middleware/AuthClient.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="390">
|
||||
<caret line="20" column="20" selection-start-line="20" selection-start-column="0" selection-end-line="20" selection-end-column="0" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/hpcloud/middleware/AuthClientFactory.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="1194" max-vertical-offset="1950">
|
||||
<caret line="27" column="69" selection-start-line="27" selection-start-column="69" selection-end-line="27" selection-end-column="69" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/hpcloud/middleware/AuthConnectionException.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="300">
|
||||
<caret line="9" column="44" selection-start-line="9" selection-start-column="44" selection-end-line="9" selection-end-column="44" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/hpcloud/middleware/AuthException.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="330">
|
||||
<caret line="8" column="16" selection-start-line="8" selection-start-column="16" selection-end-line="8" selection-end-column="16" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/hpcloud/middleware/TokenCache.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="1" max-vertical-offset="1020">
|
||||
<caret line="22" column="21" selection-start-line="22" selection-start-column="0" selection-end-line="22" selection-end-column="0" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/hpcloud/middleware/TokenExceptionHandler.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="947" max-vertical-offset="1680">
|
||||
<caret line="90" column="28" selection-start-line="0" selection-start-column="0" selection-end-line="106" selection-end-column="0" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/hpcloud/middleware/UnavailableException.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.26603" vertical-offset="0" max-vertical-offset="733">
|
||||
<caret line="17" column="80" selection-start-line="17" selection-start-column="0" selection-end-line="17" selection-end-column="0" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</component>
|
||||
</project>
|
||||
|
||||
103
java/mon-middleware/pom.xml
Normal file
103
java/mon-middleware/pom.xml
Normal file
@@ -0,0 +1,103 @@
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>com.hpcloud</groupId>
|
||||
<artifactId>mon-common</artifactId>
|
||||
<version>${computedVersion}</version>
|
||||
</parent>
|
||||
<artifactId>mon-middleware</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<properties>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.google.guava</groupId>
|
||||
<artifactId>guava</artifactId>
|
||||
<version>17.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.httpcomponents</groupId>
|
||||
<artifactId>httpclient</artifactId>
|
||||
<version>4.2.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.google.code.gson</groupId>
|
||||
<artifactId>gson</artifactId>
|
||||
<version>2.2.4</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>commons-pool</groupId>
|
||||
<artifactId>commons-pool</artifactId>
|
||||
<version>1.6</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.thrift</groupId>
|
||||
<artifactId>libthrift</artifactId>
|
||||
<version>0.9.0</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-collections4</artifactId>
|
||||
<version>4.0</version>
|
||||
</dependency>
|
||||
|
||||
|
||||
<dependency>
|
||||
<groupId>org.eclipse.jetty</groupId>
|
||||
<artifactId>jetty-servlet-tester</artifactId>
|
||||
<version>7.0.0.M2</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>javax.servlet</groupId>
|
||||
<artifactId>servlet-api</artifactId>
|
||||
<scope>provided</scope>
|
||||
<version>2.5</version>
|
||||
</dependency>
|
||||
<!-- Test dependencies -->
|
||||
<dependency>
|
||||
<groupId>com.hpcloud</groupId>
|
||||
<artifactId>mon-testing</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.hpcloud</groupId>
|
||||
<artifactId>mon-util</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>clojars.org</id>
|
||||
<url>http://clojars.org/repo</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-jar-plugin</artifactId>
|
||||
<version>2.4</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<goals>
|
||||
<goal>test-jar</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
</project>
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.hpcloud.middleware;
|
||||
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.http.client.ClientProtocolException;
|
||||
import org.apache.thrift.TException;
|
||||
|
||||
/**
|
||||
* A client that can communicate to an authentication server for authentication.
|
||||
*
|
||||
* @author liemmn
|
||||
*/
|
||||
public interface AuthClient {
|
||||
public Object validateTokenForServiceEndpointV2(String token,
|
||||
String serviceIds, String endpointIds, boolean includeCatalog)
|
||||
throws TException, ClientProtocolException;
|
||||
|
||||
public Object validateTokenForServiceEndpointV3(String token,
|
||||
Map<String, String> inputParams) throws TException, ClientProtocolException;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,124 @@
|
||||
package com.hpcloud.middleware;
|
||||
|
||||
import org.apache.commons.pool.impl.GenericObjectPool;
|
||||
|
||||
/**
|
||||
* A factory for building {@link AuthClient}s.
|
||||
*
|
||||
* @author liemmn
|
||||
*/
|
||||
public abstract class AuthClientFactory {
|
||||
private static AuthClientFactory instance = null;
|
||||
protected static GenericObjectPool pool;
|
||||
|
||||
/**
|
||||
* Build a AuthClientFactory. Singleton.
|
||||
*
|
||||
* @param host Auth host
|
||||
* @param port Auth port
|
||||
* @param timeout Auth connection timeout
|
||||
* @param clientAuth 2-way SSL (if false, 1-way SSL is used)
|
||||
* @param keyStore Keystore
|
||||
* @param keyPass Keystore password
|
||||
* @param trustStore Truststore
|
||||
* @param trustPass Truststore password
|
||||
* @param maxActive Maximum number of objects that can be allocated by the pool
|
||||
* (checked out to clients, or idle awaiting checkout) at a given
|
||||
* time. When non-positive, there is no limit to the number of
|
||||
* objects that can be managed by the pool at one time. When
|
||||
* maxActive is reached, the pool is said to be exhausted. The
|
||||
* default setting for this parameter is 8.
|
||||
* @param maxIdle Maximum number of objects that can sit idle in the pool at any
|
||||
* time. When negative, there is no limit to the number of
|
||||
* objects that may be idle at one time. The default setting for
|
||||
* this parameter is 8.
|
||||
* @param timeBetweenEvictionRunsMillis How long the eviction thread should sleep before "runs" of
|
||||
* examining idle objects. When non-positive, no eviction thread
|
||||
* will be launched. The default setting for this parameter is -1
|
||||
* (i.e., idle object eviction is disabled by default).
|
||||
* @param minEvictableIdleTimeMillis Minimum amount of time that an object may sit idle in the pool
|
||||
* before it is eligible for eviction due to idle time. When
|
||||
* non-positive, no object will be dropped from the pool due to
|
||||
* idle time alone. This setting has no effect unless
|
||||
* timeBetweenEvictionRunsMillis > 0. The default setting for
|
||||
* this parameter is 30 minutes.
|
||||
* @param adminToken Admin token for use with vanilla Keystone.
|
||||
* @return AuthClientFactory singleton.
|
||||
* @throws Exception
|
||||
*/
|
||||
public static synchronized AuthClientFactory build(String host, int port,
|
||||
int timeout, boolean clientAuth, String keyStore, String keyPass,
|
||||
String trustStore, String trustPass, int maxActive, int maxIdle,
|
||||
long timeBetweenEvictionRunsMillis,
|
||||
long minEvictableIdleTimeMillis, String adminToken)
|
||||
throws Exception {
|
||||
if (instance == null) {
|
||||
|
||||
instance = new HttpClientFactory(host, port, timeout,
|
||||
clientAuth, keyStore, keyPass, trustStore, trustPass,
|
||||
adminToken, maxActive, timeBetweenEvictionRunsMillis,
|
||||
minEvictableIdleTimeMillis);
|
||||
|
||||
// Pool tweaking
|
||||
pool.setMaxActive(maxActive);
|
||||
pool.setMaxIdle(maxIdle);
|
||||
pool.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
|
||||
pool.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a client. Don't forget to {@link #recycleClient(Client)} after you
|
||||
* are done using it, successfully or not.
|
||||
*
|
||||
* @return Client
|
||||
* @throws Exception
|
||||
*/
|
||||
public AuthClient getClient() {
|
||||
try {
|
||||
return (AuthClient) pool.borrowObject();
|
||||
} catch (Exception e) {
|
||||
throw new AuthConnectionException("Failed to get a client " + e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Recycle the client for next usage.
|
||||
*
|
||||
* @param client Client to recycle
|
||||
* @throws Exception
|
||||
*/
|
||||
public void recycle(AuthClient client) {
|
||||
try {
|
||||
pool.returnObject(client);
|
||||
} catch (Exception e) {
|
||||
throw new AuthConnectionException("Failed to recycle client", e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Call this if the client is unusable (i.e., exception).
|
||||
*
|
||||
* @param client Client to discard.
|
||||
*/
|
||||
public void discard(AuthClient client) {
|
||||
try {
|
||||
pool.invalidateObject(client);
|
||||
} catch (Exception e) {
|
||||
System.out.println("AuthConnection problem destorying");
|
||||
throw new AuthConnectionException("Failed to destroy client", e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Shut down this factory.
|
||||
*/
|
||||
public void shutdown() {
|
||||
try {
|
||||
pool.close();
|
||||
} catch (Exception e) {
|
||||
throw new AuthConnectionException("Failed to close client pool", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.hpcloud.middleware;
|
||||
|
||||
/**
|
||||
* An exception to indicate any connection issue.
|
||||
*
|
||||
* @author liemmn
|
||||
*
|
||||
*/
|
||||
public class AuthConnectionException extends RuntimeException {
|
||||
private static final long serialVersionUID = 4318025130590973448L;
|
||||
|
||||
public AuthConnectionException(String msg) {
|
||||
super(msg);
|
||||
}
|
||||
public AuthConnectionException(String msg, Exception e) {
|
||||
super(msg, e);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,234 @@
|
||||
package com.hpcloud.middleware;
|
||||
|
||||
public interface AuthConstants {
|
||||
/**
|
||||
* 'Confirmed' or 'Invalid'
|
||||
*/
|
||||
public static enum IdentityStatus {
|
||||
Confirmed, Invalid
|
||||
}
|
||||
|
||||
// =============================== TOKEN ===================================
|
||||
/**
|
||||
* Credential (token) header
|
||||
*/
|
||||
public static final String TOKEN = "X-AUTH-TOKEN";
|
||||
/**
|
||||
* Auth status parameter
|
||||
*/
|
||||
public static final String AUTH_IDENTITY_STATUS = "X-IDENTITY-STATUS";
|
||||
/**
|
||||
* Auth user Id parameter
|
||||
*/
|
||||
public static final String AUTH_USER_ID = "X-USER-ID";
|
||||
/**
|
||||
* Auth user name parameter
|
||||
*/
|
||||
public static final String AUTH_USER_NAME = "X-USER-NAME";
|
||||
|
||||
/**
|
||||
* Auth user roles parameter, comma-separated roles
|
||||
*/
|
||||
public static final String AUTH_ROLES = "X-ROLES";
|
||||
/**
|
||||
* json encoded keystone service catalog
|
||||
*/
|
||||
public static final String AUTH_SERVICE_CATALOG = "X-SERVICE-CATALOG";
|
||||
/**
|
||||
* Service Ids initialization parameter
|
||||
*/
|
||||
public static final String SERVICE_IDS = "ServiceIds";
|
||||
/**
|
||||
* Endpoint Ids initialization parameter
|
||||
*/
|
||||
public static final String ENDPOINT_IDS = "EndpointIds";
|
||||
/**
|
||||
* Keystone admin token for use in vanilla Keystone
|
||||
*/
|
||||
public static final String ADMIN_TOKEN = "AdminToken";
|
||||
|
||||
// ============================ CONNECTION =================================
|
||||
/**
|
||||
* Auth server initialization parameter
|
||||
*/
|
||||
public static final String SERVER_VIP = "ServerVIP";
|
||||
/**
|
||||
* Auth server port: 9543 for Thrift, 35357 for HTTP.
|
||||
*/
|
||||
public static final String SERVER_PORT = "ServerPort";
|
||||
/**
|
||||
* connection timeout initialization parameter
|
||||
*/
|
||||
public static final String CONN_TIMEOUT = "ConnTimeout";
|
||||
/**
|
||||
* 2-way SSL initialization parameter: True or False
|
||||
*/
|
||||
public static final String CONN_SSL_CLIENT_AUTH = "ConnSSLClientAuth";
|
||||
/**
|
||||
* SSL keystore initialization parameter
|
||||
*/
|
||||
public static final String KEYSTORE = "Keystore";
|
||||
/**
|
||||
* SSL keystore password initialization parameter
|
||||
*/
|
||||
public static final String KEYSTORE_PASS = "KeystorePass";
|
||||
/**
|
||||
* SSL truststore initialization parameter
|
||||
*/
|
||||
public static final String TRUSTSTORE = "Truststore";
|
||||
/**
|
||||
* SSL truststore password initialization parameter
|
||||
*/
|
||||
public static final String TRUSTSTORE_PASS = "TruststorePass";
|
||||
|
||||
// ============================== POOLING ==================================
|
||||
/**
|
||||
* Maximum number of objects that can be allocated by the pool (checked out
|
||||
* to clients, or idle awaiting checkout) at a given time. When
|
||||
* non-positive, there is no limit to the number of objects that can be
|
||||
* managed by the pool at one time. When maxActive is reached, the pool is
|
||||
* said to be exhausted. The default setting for this parameter is 8.
|
||||
*/
|
||||
public static final String CONN_POOL_MAX_ACTIVE = "ConnPoolMaxActive";
|
||||
/**
|
||||
* Maximum number of objects that can sit idle in the pool at any time. When
|
||||
* negative, there is no limit to the number of objects that may be idle at
|
||||
* one time. The default setting for this parameter is 8.
|
||||
*/
|
||||
public static final String CONN_POOL_MAX_IDLE = "ConnPoolMaxIdle";
|
||||
/**
|
||||
* How long the eviction thread should sleep before "runs" of examining idle
|
||||
* objects. When non-positive, no eviction thread will be launched. The
|
||||
* default setting for this parameter is -1 (i.e., idle object eviction is
|
||||
* disabled by default).
|
||||
*/
|
||||
public static final String CONN_POOL_EVICT_PERIOD = "ConnPoolEvictPeriod";
|
||||
/**
|
||||
* Minimum amount of time that an object may sit idle in the pool before it
|
||||
* is eligible for eviction due to idle time. When non-positive, no object
|
||||
* will be dropped from the pool due to idle time alone. This setting has no
|
||||
* effect unless ConnPoolEvictPeriod > 0. The default setting for this
|
||||
* parameter is 30 minutes.
|
||||
*/
|
||||
public static final String CONN_POOL_MIN_IDLE_TIME = "ConnPoolMinIdleTime";
|
||||
|
||||
// ============================== CACHING ==================================
|
||||
public static final String TIME_TO_CACHE_TOKEN = "TimeToCacheToken";
|
||||
public static final String MAX_TOKEN_CACHE_SIZE = "MaxTokenCacheSize";
|
||||
|
||||
/**
|
||||
* Number of connection timeout retries *
|
||||
*/
|
||||
public static final String CONN_TIMEOUT_RETRIES = "ConnRetryTimes";
|
||||
/**
|
||||
* Number of connection timeout retries *
|
||||
*/
|
||||
public static final String PAUSE_BETWEEN_RETRIES = "ConnRetryInterval";
|
||||
/**
|
||||
* Authentication decision is forwarded to next filter *
|
||||
*/
|
||||
public static final String DELAY_AUTH_DECISION = "DelayAuthDecision";
|
||||
|
||||
public static final String SIGNATURE_METHOD = "HmacSHA1";
|
||||
|
||||
|
||||
/**
|
||||
* Version of CS to authenticate the credentials *
|
||||
*/
|
||||
public static final String AUTH_VERSION = "AuthVersion";
|
||||
|
||||
/**
|
||||
* Include Service Catalog as part of Authentication Response *
|
||||
*/
|
||||
public static final String INCLUDE_SERVICE_CATALOG = "IncludeServiceCatalog";
|
||||
|
||||
/**
|
||||
* Identity service managed unique identifier, string. Only present if this
|
||||
* is a project-scoped v3 token, or a tenant-scoped v2 token.
|
||||
*/
|
||||
public static final String AUTH_PROJECT_ID = "X-PROJECT-ID";
|
||||
|
||||
/**
|
||||
* Project name, unique within owning domain, string. Only present if this
|
||||
* is a project-scoped v3 token, or a tenant-scoped v2 token.
|
||||
*/
|
||||
public static final String AUTH_PROJECT_NAME = "X-PROJECT-NAME";
|
||||
|
||||
/**
|
||||
* Identity service managed unique identifier of owning domain of project,
|
||||
* string. Only present if this is a project-scoped v3 token. If this
|
||||
* variable is set, this indicates that the PROJECT_NAME can only be assumed
|
||||
* to be unique within this domain.
|
||||
*/
|
||||
public static final String AUTH_PROJECT_DOMAIN_ID = "X-PROJECT-DOMAIN-ID";
|
||||
|
||||
/**
|
||||
* Name of owning domain of project, string. Only present if this is a
|
||||
* project-scoped v3 token. If this variable is set, this indicates that the
|
||||
* PROJECT_NAME can only be assumed to be unique within this domain.
|
||||
*/
|
||||
public static final String AUTH_PROJECT_DOMAIN_NAME = "X-PROJECT-DOMAIN-NAME";
|
||||
|
||||
/**
|
||||
* Identity service managed unique identifier of owning domain of user,
|
||||
* string. If this variable is set, this indicates that the USER_NAME can
|
||||
* only be assumed to be unique within this domain.
|
||||
*/
|
||||
public static final String AUTH_USER_DOMAIN_ID = "X-USER-DOMAIN-ID";
|
||||
|
||||
/**
|
||||
* Name of owning domain of user, string. If this variable is set, this
|
||||
* indicates that the USER_NAME can only be assumed to be unique within this
|
||||
* domain.
|
||||
*/
|
||||
public static final String AUTH_USER_DOMAIN_NAME = "X-USER-DOMAIN-NAME";
|
||||
|
||||
/**
|
||||
* Identity service managed unique identifier, string. Only present if this
|
||||
* is a domain-scoped v3 token.
|
||||
*/
|
||||
public static final String AUTH_DOMAIN_ID = "X-DOMAIN-ID";
|
||||
|
||||
/**
|
||||
* Unique domain name, string. Only present if this is a domain-scoped v3
|
||||
* token.
|
||||
*/
|
||||
public static final String AUTH_DOMAIN_NAME = "X-DOMAIN-NAME";
|
||||
|
||||
public static final String AUTH_HP_IDM_ROLES = "X-HP-IDM-Non-Tenant-Roles";
|
||||
|
||||
public static final String REMOTE_HOST = "RemoteHost";
|
||||
public static final String REMOTE_ADDR = "RemoteAddress";
|
||||
|
||||
// Depracated Headers.
|
||||
/**
|
||||
* Auth user roles parameter, comma-separated roles
|
||||
*/
|
||||
public static final String AUTH_ROLE = "X-ROLE";
|
||||
/**
|
||||
* Auth tenant Id parameter
|
||||
*/
|
||||
public static final String AUTH_TENANT_ID = "X-TENANT-ID";
|
||||
/**
|
||||
* Auth tenant name parameter
|
||||
*/
|
||||
public static final String AUTH_TENANT_NAME = "X-TENANT-NAME";
|
||||
/**
|
||||
* Auth tenant name parameter
|
||||
*/
|
||||
public static final String AUTH_TENANT = "X-TENANT";
|
||||
/**
|
||||
* *Deprecated* in favor of HTTP_X_USER_ID and HTTP_X_USER_NAME User name,
|
||||
* unique within owning domain, string
|
||||
*/
|
||||
public static final String AUTH_USER = "X-USER";
|
||||
|
||||
public static final String AUTH_SUBJECT_TOKEN = "X-Subject-Token";
|
||||
public static final String ADMIN_USER = "AdminUser";
|
||||
public static final String ADMIN_PASSWORD = "AdminPassword";
|
||||
public static final String ADMIN_AUTH_METHOD = "AdminAuthMethod";
|
||||
public static final String ADMIN_ACCESS_KEY = "AdminAccessKey";
|
||||
public static final String ADMIN_SECRET_KEY = "AdminSecretKey";
|
||||
public static final String ADMIN_PROJECT_ID = "AdminProjectId";
|
||||
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.hpcloud.middleware;
|
||||
|
||||
/**
|
||||
* An exception to indicate any authentication error.
|
||||
*
|
||||
* @author liemmn
|
||||
*
|
||||
*/
|
||||
public class AuthException extends RuntimeException {
|
||||
|
||||
private static final long serialVersionUID = 5860956829821067827L;
|
||||
|
||||
public AuthException(String msg) {
|
||||
super(msg);
|
||||
}
|
||||
|
||||
public AuthException(String msg, Exception e) {
|
||||
super(msg, e);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package com.hpcloud.middleware;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class CatalogV3 {
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public List getEndPoints() {
|
||||
return endPoints;
|
||||
}
|
||||
|
||||
public void setEndPoints(List endPoints) {
|
||||
this.endPoints = endPoints;
|
||||
}
|
||||
|
||||
String id;
|
||||
String type;
|
||||
List endPoints;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,281 @@
|
||||
package com.hpcloud.middleware;
|
||||
|
||||
import javax.servlet.FilterConfig;
|
||||
import javax.servlet.ServletContext;
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.ServletRequest;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public class Config implements AuthConstants {
|
||||
|
||||
// Thee faithful logger
|
||||
private static final Logger logger = LoggerFactory
|
||||
.getLogger(Config.class);
|
||||
|
||||
private static final Config instance = new Config();
|
||||
|
||||
private static final String PASSWORD = "password";
|
||||
private static final String ACCESS_KEY = "accesskey";
|
||||
|
||||
// Application wide init param -- ServletContext
|
||||
private ServletContext context = null;
|
||||
|
||||
private TokenCache<String, String> client = null;
|
||||
|
||||
// Auth client factory
|
||||
private AuthClientFactory factory = null;
|
||||
|
||||
// The service IDs that this filter serves
|
||||
private String serviceIds;
|
||||
|
||||
// The optional endpoint IDs that this filter serves
|
||||
private String endpointIds;
|
||||
|
||||
//the time to cache token
|
||||
private long timeToCacheToken;
|
||||
|
||||
// flag to set if auth decision can be delegated to next filter
|
||||
private boolean delayAuthDecision;
|
||||
|
||||
// retries and pauseTime configuration for retry logic
|
||||
private int retries;
|
||||
private int pauseTime;
|
||||
|
||||
// configuration to authenticate against CS api
|
||||
private String authVersion;
|
||||
|
||||
// flag to include catalog in the response
|
||||
private boolean includeCatalog;
|
||||
|
||||
// configuration for admin authentication method to be used for 2-way SSL
|
||||
private String adminAuthMethod;
|
||||
|
||||
// configuration for admin default project
|
||||
private String adminProjectId;
|
||||
|
||||
// flag to indicate if the filter is already intialized with required parameters
|
||||
private volatile boolean initialized = false;
|
||||
|
||||
//context is not getting properly filed so will use FilterConfig
|
||||
private FilterConfig filterConfig;
|
||||
|
||||
private Config() {
|
||||
}
|
||||
|
||||
public static Config getInstance() {
|
||||
return instance;
|
||||
}
|
||||
|
||||
public synchronized void initialize(FilterConfig config, ServletRequest req, Map<String, String> map) throws ServletException {
|
||||
this.context = config.getServletContext();
|
||||
this.filterConfig = config;
|
||||
|
||||
try {
|
||||
// Initialize serviceIds...
|
||||
|
||||
serviceIds = filterConfig.getInitParameter(SERVICE_IDS);
|
||||
// Initialize endpointIds...
|
||||
endpointIds = filterConfig.getInitParameter(ENDPOINT_IDS);
|
||||
|
||||
// Initialize auth server connection parameters...
|
||||
|
||||
String host = filterConfig.getInitParameter(SERVER_VIP);
|
||||
|
||||
int port = Integer.parseInt(filterConfig.getInitParameter(SERVER_PORT));
|
||||
|
||||
// HP Keystone Server only supports authentication against
|
||||
// V3.0 api
|
||||
authVersion = getValue(AUTH_VERSION, "v3.0");
|
||||
|
||||
if ((serviceIds == null || serviceIds.isEmpty())
|
||||
&& (endpointIds == null || endpointIds.isEmpty())
|
||||
&& authVersion.equalsIgnoreCase("v2.0")) {
|
||||
throw new Throwable("Need to specify " + SERVICE_IDS);
|
||||
}
|
||||
|
||||
// Initialize Certificates
|
||||
|
||||
String keyStore = filterConfig.getInitParameter(KEYSTORE);
|
||||
String keyPass = filterConfig.getInitParameter(KEYSTORE_PASS);
|
||||
String trustStore = filterConfig.getInitParameter(TRUSTSTORE);
|
||||
String trustPass = filterConfig.getInitParameter(TRUSTSTORE_PASS);
|
||||
|
||||
String adminToken = getValue(ADMIN_TOKEN, "");
|
||||
int timeout = getValue(CONN_TIMEOUT, 0);
|
||||
boolean clientAuth = getValue(CONN_SSL_CLIENT_AUTH, true);
|
||||
int maxActive = getValue(CONN_POOL_MAX_ACTIVE, 3);
|
||||
int maxIdle = getValue(CONN_POOL_MAX_IDLE, 3);
|
||||
long evictPeriod = getValue(CONN_POOL_EVICT_PERIOD, 60000L);
|
||||
long minIdleTime = getValue(CONN_POOL_MIN_IDLE_TIME, 90000L);
|
||||
retries = getValue(CONN_TIMEOUT_RETRIES, 3);
|
||||
pauseTime = getValue(PAUSE_BETWEEN_RETRIES, 100);
|
||||
delayAuthDecision = getValue(DELAY_AUTH_DECISION, false);
|
||||
includeCatalog = getValue(INCLUDE_SERVICE_CATALOG, true);
|
||||
adminAuthMethod = getValue(ADMIN_AUTH_METHOD, "");
|
||||
adminProjectId = getValue(ADMIN_PROJECT_ID, "");
|
||||
timeToCacheToken = getValue(TIME_TO_CACHE_TOKEN, 600);
|
||||
long maxTokenCacheTime = getValue(MAX_TOKEN_CACHE_SIZE, 1048576);
|
||||
|
||||
this.factory = AuthClientFactory.build(host, port, timeout,
|
||||
clientAuth, null, null, trustStore, trustPass,
|
||||
maxActive, maxIdle, evictPeriod, minIdleTime, adminToken);
|
||||
|
||||
verifyRequiredParamsForAuthMethod();
|
||||
this.client = new TokenCache<>(timeToCacheToken, timeToCacheToken, map);
|
||||
logger.info("Auth host (2-way SSL: " + clientAuth + "): " + host);
|
||||
logger.info("Read Servlet Initialization Parameters ");
|
||||
initialized = true;
|
||||
} catch (Throwable t) {
|
||||
logger.error("Failed to read Servlet Initialization Parameters ",
|
||||
t.getMessage());
|
||||
throw new ServletException(
|
||||
"Failed to read Servlet Initialization Parameters :: "
|
||||
+ t.getMessage(), t);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isInitialized() {
|
||||
return initialized;
|
||||
}
|
||||
|
||||
protected String getAdminProject() {
|
||||
return adminProjectId;
|
||||
}
|
||||
|
||||
protected String getAdminAccessKey() {
|
||||
if (context.getAttribute(ADMIN_ACCESS_KEY) != null) {
|
||||
return (String) context.getAttribute(ADMIN_ACCESS_KEY);
|
||||
} else {
|
||||
return getValue(ADMIN_ACCESS_KEY, "");
|
||||
}
|
||||
}
|
||||
|
||||
protected String getAdminSecretKey() {
|
||||
if (context.getAttribute(ADMIN_SECRET_KEY) != null) {
|
||||
return (String) context.getAttribute(ADMIN_SECRET_KEY);
|
||||
} else {
|
||||
return getValue(ADMIN_SECRET_KEY, "");
|
||||
}
|
||||
}
|
||||
|
||||
protected String getAdminToken() {
|
||||
return getValue(ADMIN_TOKEN, "");
|
||||
}
|
||||
|
||||
protected String getAdminAuthMethod() {
|
||||
return adminAuthMethod;
|
||||
}
|
||||
|
||||
protected String getAdminUser() {
|
||||
if (context.getAttribute(ADMIN_USER) != null) {
|
||||
return (String) context.getAttribute(ADMIN_USER);
|
||||
} else {
|
||||
return getValue(ADMIN_USER, "");
|
||||
}
|
||||
}
|
||||
|
||||
protected String getAdminPassword() {
|
||||
if (context.getAttribute(ADMIN_PASSWORD) != null) {
|
||||
String password = (String) context.getAttribute(ADMIN_PASSWORD);
|
||||
return password;
|
||||
} else {
|
||||
return getValue(ADMIN_PASSWORD, "");
|
||||
}
|
||||
}
|
||||
|
||||
protected boolean isIncludeCatalog() {
|
||||
return includeCatalog;
|
||||
}
|
||||
|
||||
|
||||
protected String getAuthVersion() {
|
||||
return authVersion;
|
||||
}
|
||||
|
||||
protected ServletContext getConfig() {
|
||||
return context;
|
||||
}
|
||||
|
||||
protected TokenCache<String, String> getClient() {
|
||||
return client;
|
||||
}
|
||||
|
||||
protected AuthClientFactory getFactory() {
|
||||
return factory;
|
||||
}
|
||||
|
||||
protected String getServiceIds() {
|
||||
return serviceIds;
|
||||
}
|
||||
|
||||
protected String getEndpointIds() {
|
||||
return endpointIds;
|
||||
}
|
||||
|
||||
protected boolean isDelayAuthDecision() {
|
||||
return delayAuthDecision;
|
||||
}
|
||||
|
||||
protected int getRetries() {
|
||||
return retries;
|
||||
}
|
||||
|
||||
protected int getPauseTime() {
|
||||
return pauseTime;
|
||||
}
|
||||
|
||||
public long getTimeToCacheToken() {
|
||||
return timeToCacheToken;
|
||||
}
|
||||
|
||||
public void setTimeToCacheToken(long timeToCachedToken) {
|
||||
this.timeToCacheToken = timeToCachedToken;
|
||||
}
|
||||
|
||||
public void setClient(TokenCache<String, String> client) {
|
||||
this.client = client;
|
||||
}
|
||||
|
||||
private <T> T getValue(String paramName, T defaultValue) {
|
||||
Class type = defaultValue.getClass();
|
||||
|
||||
String initparamValue = filterConfig.getInitParameter(paramName);
|
||||
if (initparamValue != null && !initparamValue.isEmpty()) {
|
||||
if (type.equals(Integer.class)) {
|
||||
int paramValue = Integer.parseInt(initparamValue);
|
||||
return (T) type.cast(paramValue);
|
||||
} else if (type.equals(Long.class)) {
|
||||
long paramValue = Long.parseLong(initparamValue);
|
||||
return (T) type.cast(paramValue);
|
||||
} else if (type.equals(Boolean.class)) {
|
||||
boolean paramValue = Boolean.parseBoolean(initparamValue);
|
||||
return (T) type.cast(paramValue);
|
||||
} else if (type.equals(String.class)) {
|
||||
return (T) type.cast(initparamValue);
|
||||
}
|
||||
}
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
private void verifyRequiredParamsForAuthMethod() {
|
||||
if (adminAuthMethod.equalsIgnoreCase(PASSWORD)) {
|
||||
if (getAdminUser().isEmpty() || getAdminPassword().isEmpty()) {
|
||||
String msg = String
|
||||
.format("admin user and password must be specified if admin auth method is %s",
|
||||
adminAuthMethod);
|
||||
throw new AuthException(msg);
|
||||
}
|
||||
} else if (adminAuthMethod.equalsIgnoreCase(ACCESS_KEY)) {
|
||||
if (getAdminAccessKey().isEmpty() || getAdminSecretKey().isEmpty()) {
|
||||
String msg = String
|
||||
.format("admin access and secret key must be specified if admin auth method is %s",
|
||||
adminAuthMethod);
|
||||
throw new AuthException(msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.hpcloud.middleware;
|
||||
|
||||
public class ExceptionHandlerUtil {
|
||||
|
||||
public final static String SERVICE_UNAVAILABLE = "Service Unavailable";
|
||||
public final static String UNAUTHORIZED_TOKEN = "Unauthorized Token";
|
||||
public final static String INTERNAL_SERVER_ERROR = "Internal Server Error";
|
||||
|
||||
private ExceptionHandlerUtil() {
|
||||
}
|
||||
|
||||
public static String getStatusText(int errorCode) {
|
||||
if (errorCode == 401) {
|
||||
return UNAUTHORIZED_TOKEN;
|
||||
}
|
||||
if (errorCode == 503) {
|
||||
return SERVICE_UNAVAILABLE;
|
||||
}
|
||||
if (errorCode == 500) {
|
||||
return INTERNAL_SERVER_ERROR;
|
||||
}
|
||||
return "Unknown Error";
|
||||
|
||||
}
|
||||
|
||||
public static TokenExceptionHandler lookUpTokenException(Exception ex) {
|
||||
try {
|
||||
return TokenExceptionHandler.valueOf(ex.getClass().getSimpleName());
|
||||
} catch (IllegalArgumentException iae) {
|
||||
return TokenExceptionHandler.valueOf("ResourceException");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,261 @@
|
||||
package com.hpcloud.middleware;
|
||||
|
||||
|
||||
import static com.hpcloud.middleware.AuthConstants.AUTH_IDENTITY_STATUS;
|
||||
|
||||
import static com.hpcloud.middleware.AuthConstants.AUTH_ROLES;
|
||||
import static com.hpcloud.middleware.AuthConstants.AUTH_TENANT_NAME;
|
||||
|
||||
import static com.hpcloud.middleware.AuthConstants.AUTH_USER_ID;
|
||||
import static com.hpcloud.middleware.AuthConstants.AUTH_DOMAIN_ID;
|
||||
import static com.hpcloud.middleware.AuthConstants.AUTH_DOMAIN_NAME;
|
||||
import static com.hpcloud.middleware.AuthConstants.AUTH_PROJECT_ID;
|
||||
import static com.hpcloud.middleware.AuthConstants.AUTH_PROJECT_NAME;
|
||||
import static com.hpcloud.middleware.AuthConstants.AUTH_TENANT_ID;
|
||||
import static com.hpcloud.middleware.AuthConstants.AUTH_USER_NAME;
|
||||
import static com.hpcloud.middleware.AuthConstants.IdentityStatus;
|
||||
import static com.hpcloud.middleware.AuthConstants.AUTH_PROJECT_DOMAIN_ID;
|
||||
import static com.hpcloud.middleware.AuthConstants.AUTH_PROJECT_DOMAIN_NAME;
|
||||
import static com.hpcloud.middleware.AuthConstants.AUTH_USER_DOMAIN_ID;
|
||||
import static com.hpcloud.middleware.AuthConstants.AUTH_USER_DOMAIN_NAME;
|
||||
import static com.hpcloud.middleware.AuthConstants.AUTH_HP_IDM_ROLES;
|
||||
import static com.hpcloud.middleware.AuthConstants.AUTH_SERVICE_CATALOG;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.lang.reflect.Modifier;
|
||||
import java.util.Iterator;
|
||||
import javax.servlet.ServletRequest;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonNull;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.JsonParser;
|
||||
|
||||
public class FilterUtils {
|
||||
|
||||
private FilterUtils() {
|
||||
}
|
||||
|
||||
private static final Config appConfig = Config.getInstance();
|
||||
|
||||
private static final Gson gson = new GsonBuilder()
|
||||
.excludeFieldsWithModifiers(Modifier.PRIVATE, Modifier.FINAL)
|
||||
.create();
|
||||
|
||||
// Thee faithful logger
|
||||
private static final Logger logger = LoggerFactory
|
||||
.getLogger(FilterUtils.class);
|
||||
|
||||
public static void destroyFilter() {
|
||||
|
||||
TokenCache<String, String> client = appConfig.getClient();
|
||||
|
||||
if (client != null)
|
||||
appConfig.setClient(null);
|
||||
|
||||
AuthClientFactory factory = appConfig.getFactory();
|
||||
// Shutdown factory
|
||||
if (factory != null) {
|
||||
factory.shutdown();
|
||||
}
|
||||
}
|
||||
|
||||
public static ServletRequest wrapRequestFromHttpResponse(
|
||||
ServletRequest req, String data) {
|
||||
if (appConfig.getAuthVersion().equalsIgnoreCase("v2.0")) {
|
||||
wrapRequestFromHttpV2Response(req, data);
|
||||
|
||||
} else {
|
||||
wrapRequestFromHttpV3Response(req, data);
|
||||
}
|
||||
return req;
|
||||
}
|
||||
|
||||
private static void wrapRequestFromHttpV3Response(ServletRequest req,
|
||||
String data) {
|
||||
StringBuilder tenants = new StringBuilder();
|
||||
StringBuilder nonTenants = new StringBuilder();
|
||||
JsonParser jp = new JsonParser();
|
||||
JsonObject token = jp.parse(data).getAsJsonObject().get("token")
|
||||
.getAsJsonObject();
|
||||
// Domain Scoped Token
|
||||
if (token.get("domain") != null) {
|
||||
JsonObject domain = token.get("domain").getAsJsonObject();
|
||||
req.setAttribute(AUTH_DOMAIN_ID, domain.get("id").getAsString());
|
||||
if (domain.get("name") != null) {
|
||||
req.setAttribute(AUTH_DOMAIN_NAME, domain.get("name")
|
||||
.getAsString());
|
||||
}
|
||||
}
|
||||
// Project Scoped Token
|
||||
if (token.get("project") != null) {
|
||||
JsonObject project = token.get("project").getAsJsonObject();
|
||||
req.setAttribute(AUTH_PROJECT_ID, project.get("id").getAsString());
|
||||
req.setAttribute(AUTH_PROJECT_NAME, project.get("name")
|
||||
.getAsString());
|
||||
|
||||
JsonObject projectDomain = project.get("domain").getAsJsonObject();
|
||||
// special case where the value of id is null and the
|
||||
// projectDomain.get("id") != null
|
||||
if (!projectDomain.get("id").equals(new JsonNull())) {
|
||||
req.setAttribute(AUTH_PROJECT_DOMAIN_ID, projectDomain
|
||||
.get("id").getAsString());
|
||||
}
|
||||
if (projectDomain.get("name") != null) {
|
||||
req.setAttribute(AUTH_PROJECT_DOMAIN_NAME,
|
||||
projectDomain.get("name"));
|
||||
}
|
||||
}
|
||||
// User info
|
||||
if (token.get("user") != null) {
|
||||
JsonObject user = token.get("user").getAsJsonObject();
|
||||
req.setAttribute(AUTH_USER_ID, user.get("id").getAsString());
|
||||
req.setAttribute(AUTH_USER_NAME, user.get("name").getAsString());
|
||||
|
||||
JsonObject userDomain = user.get("domain").getAsJsonObject();
|
||||
if (userDomain.get("id") != null) {
|
||||
req.setAttribute(AUTH_USER_DOMAIN_ID, userDomain.get("id")
|
||||
.getAsString());
|
||||
}
|
||||
if (userDomain.get("name") != null) {
|
||||
req.setAttribute(AUTH_USER_DOMAIN_NAME, userDomain.get("name")
|
||||
.getAsString());
|
||||
}
|
||||
|
||||
}
|
||||
// Roles
|
||||
JsonArray roles = token.getAsJsonArray("roles");
|
||||
if (roles != null) {
|
||||
Iterator<JsonElement> it = roles.iterator();
|
||||
StringBuilder roleBuilder = new StringBuilder();
|
||||
while (it.hasNext()) {
|
||||
|
||||
//Changed to meet my purposes
|
||||
JsonObject role = it.next().getAsJsonObject();
|
||||
String currentRole = role.get("name").getAsString();
|
||||
roleBuilder.append(currentRole).append(",");
|
||||
}
|
||||
//My changes to meet my needs
|
||||
req.setAttribute(AUTH_ROLES, roleBuilder.toString());
|
||||
}
|
||||
String tenantRoles = (tenants.length() > 0) ? tenants.substring(1)
|
||||
: tenants.toString();
|
||||
String nonTenantRoles = (nonTenants.length() > 0) ? nonTenants
|
||||
.substring(1) : nonTenants.toString();
|
||||
if (!tenantRoles.equals("")) {
|
||||
req.setAttribute(AUTH_ROLES, tenantRoles);
|
||||
}
|
||||
if (!nonTenantRoles.equals("")) {
|
||||
req.setAttribute(AUTH_HP_IDM_ROLES, nonTenantRoles);
|
||||
}
|
||||
// Catalog
|
||||
if (token.get("catalog") != null && appConfig.isIncludeCatalog()) {
|
||||
JsonArray catalog = token.get("catalog").getAsJsonArray();
|
||||
req.setAttribute(AUTH_SERVICE_CATALOG, catalog.toString());
|
||||
}
|
||||
}
|
||||
|
||||
private static void wrapRequestFromHttpV2Response(ServletRequest req,
|
||||
String data) {
|
||||
StringBuilder tenants = new StringBuilder();
|
||||
StringBuilder nonTenants = new StringBuilder();
|
||||
JsonParser jp = new JsonParser();
|
||||
JsonObject access = jp.parse(data).getAsJsonObject().get("access")
|
||||
.getAsJsonObject();
|
||||
JsonObject token = access.get("token").getAsJsonObject();
|
||||
|
||||
// Tenant info
|
||||
if (token.get("tenant") != null) {
|
||||
JsonObject tenant = token.get("tenant").getAsJsonObject();
|
||||
|
||||
String id = tenant.get("id").getAsString();
|
||||
String name = tenant.get("name").getAsString();
|
||||
if (id != null)
|
||||
req.setAttribute(AUTH_TENANT_ID, id);
|
||||
if (name != null)
|
||||
req.setAttribute(AUTH_TENANT_NAME, name);
|
||||
}
|
||||
// User info
|
||||
if (access.get("user") != null) {
|
||||
JsonObject user = access.get("user").getAsJsonObject();
|
||||
|
||||
String userId = user.get("id").getAsString();
|
||||
String username = user.get("name").getAsString();
|
||||
if (userId != null)
|
||||
req.setAttribute(AUTH_USER_ID, userId);
|
||||
if (username != null)
|
||||
req.setAttribute(AUTH_USER_NAME, username);
|
||||
// Roles
|
||||
JsonArray roles = user.getAsJsonArray("roles");
|
||||
if (roles != null) {
|
||||
Iterator<JsonElement> it = roles.iterator();
|
||||
while (it.hasNext()) {
|
||||
JsonObject role = it.next().getAsJsonObject();
|
||||
if (role.get("tenantId") != null) {
|
||||
tenants.append(",");
|
||||
tenants.append(role.get("name").getAsString());
|
||||
} else {
|
||||
nonTenants.append(",");
|
||||
nonTenants.append(role.get("name").getAsString());
|
||||
}
|
||||
}
|
||||
}
|
||||
String tenantRoles = (tenants.length() > 0) ? tenants.substring(1)
|
||||
: tenants.toString();
|
||||
if (!tenantRoles.equals("")) {
|
||||
req.setAttribute(AUTH_ROLES, tenantRoles);
|
||||
}
|
||||
String nonTenantRoles = (nonTenants.length() > 0) ? nonTenants
|
||||
.substring(1) : nonTenants.toString();
|
||||
if (!nonTenantRoles.equals("")) {
|
||||
req.setAttribute(AUTH_HP_IDM_ROLES, nonTenantRoles);
|
||||
}
|
||||
}
|
||||
// Service catalog
|
||||
if (access.get("serviceCatalog") != null
|
||||
&& appConfig.isIncludeCatalog()) {
|
||||
JsonArray serviceCatalog = access.get("serviceCatalog")
|
||||
.getAsJsonArray();
|
||||
req.setAttribute(AUTH_SERVICE_CATALOG, serviceCatalog.toString());
|
||||
}
|
||||
}
|
||||
|
||||
public static ServletRequest wrapRequest(ServletRequest req, Object data) {
|
||||
if (data == null) {
|
||||
req.setAttribute(AUTH_IDENTITY_STATUS,
|
||||
IdentityStatus.Invalid.toString());
|
||||
logger.debug("Failed Authentication. Setting identity status header to Invalid");
|
||||
}
|
||||
req.setAttribute(AUTH_IDENTITY_STATUS,
|
||||
IdentityStatus.Confirmed.toString());
|
||||
if (data instanceof String) {
|
||||
wrapRequestFromHttpResponse(req, ((String) data));
|
||||
}
|
||||
return req;
|
||||
}
|
||||
|
||||
// Insert token into cache
|
||||
public static void cacheToken(String token, Object auth) {
|
||||
appConfig.getClient().put(token, (String) auth);
|
||||
}
|
||||
|
||||
// Get token from cache
|
||||
public static Object getCachedToken(String token) throws IOException {
|
||||
return appConfig.getClient().getToken(token);
|
||||
}
|
||||
|
||||
public static void pause(long pauseTime) {
|
||||
try {
|
||||
Thread.currentThread().sleep(pauseTime);
|
||||
} catch (InterruptedException e) {
|
||||
logger.debug("Thread is interrupted while sleeping before "
|
||||
+ pauseTime + " seconds. ");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,304 @@
|
||||
package com.hpcloud.middleware;
|
||||
|
||||
import static com.hpcloud.middleware.AuthConstants.TOKEN;
|
||||
import static com.hpcloud.middleware.AuthConstants.AUTH_SUBJECT_TOKEN;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.ConnectException;
|
||||
import java.net.URI;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.Map;
|
||||
import java.util.TimeZone;
|
||||
|
||||
import org.apache.http.Header;
|
||||
import org.apache.http.HttpEntity;
|
||||
import org.apache.http.HttpResponse;
|
||||
import org.apache.http.client.ClientProtocolException;
|
||||
import org.apache.http.client.HttpClient;
|
||||
import org.apache.http.client.methods.HttpGet;
|
||||
import org.apache.http.client.methods.HttpPost;
|
||||
import org.apache.http.entity.StringEntity;
|
||||
import org.apache.http.message.BasicHeader;
|
||||
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.JsonParser;
|
||||
|
||||
public class HttpAuthClient implements AuthClient {
|
||||
private static final String ACCESSKEY = "accesskey";
|
||||
private static final String PASSWORD = "password";
|
||||
private static final String SERVICE_IDS_PARAM = "serviceIds";
|
||||
private static final String ENDPOINT_IDS_PARAM = "endpointIds";
|
||||
private static final int DELTA_TIME_IN_SEC = 30;
|
||||
private static SimpleDateFormat expiryFormat;
|
||||
static {
|
||||
expiryFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mmmmmm'Z'");
|
||||
expiryFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
|
||||
}
|
||||
private final Config appConfig = Config.getInstance();
|
||||
|
||||
private HttpClient client;
|
||||
private String adminToken;
|
||||
private String adminTokenExpiry;
|
||||
private URI uri;
|
||||
|
||||
public HttpAuthClient(HttpClient client, URI uri) {
|
||||
this.client = client;
|
||||
this.uri = uri;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object validateTokenForServiceEndpointV2(String token,
|
||||
String serviceIds, String endpointIds, boolean includeCatalog)
|
||||
throws ClientProtocolException {
|
||||
String newUri = uri.toString() + "/v2.0/tokens/" + token;
|
||||
return verifyUUIDToken(token, newUri, null, serviceIds, endpointIds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object validateTokenForServiceEndpointV3(String token,
|
||||
Map<String, String> inputParams) throws ClientProtocolException {
|
||||
String newUri = uri.toString() + "/v3/auth/tokens/";
|
||||
Header[] header = new Header[1];
|
||||
header[0] = new BasicHeader(AUTH_SUBJECT_TOKEN, token);
|
||||
String serviceIds = null;
|
||||
String endpointIds = null;
|
||||
if (inputParams.containsKey(SERVICE_IDS_PARAM))
|
||||
serviceIds = inputParams.get(SERVICE_IDS_PARAM);
|
||||
if (inputParams.containsKey(ENDPOINT_IDS_PARAM))
|
||||
endpointIds = inputParams.get(ENDPOINT_IDS_PARAM);
|
||||
return verifyUUIDToken(token, newUri, header, serviceIds, endpointIds);
|
||||
}
|
||||
|
||||
private Object verifyUUIDToken(String token, String newUri,
|
||||
Header[] header, String serviceIds, String endpointIds)
|
||||
throws ClientProtocolException {
|
||||
HttpResponse response = sendGet(newUri, header, serviceIds, endpointIds);
|
||||
|
||||
HttpEntity entity = response.getEntity();
|
||||
int code = response.getStatusLine().getStatusCode();
|
||||
|
||||
InputStream instream = null;
|
||||
try {
|
||||
if (code == 404) {
|
||||
instream = entity.getContent();
|
||||
instream.close();
|
||||
throw new AuthException("Authorization failed for token: " + token);
|
||||
}
|
||||
|
||||
if (code != 200) {
|
||||
adminToken = null;
|
||||
instream = entity.getContent();
|
||||
instream.close();
|
||||
String reasonPhrase = response.getStatusLine().getReasonPhrase();
|
||||
|
||||
throw new AuthException("Failed to validate via HTTP " + code
|
||||
+ " " + reasonPhrase);
|
||||
}
|
||||
} catch(IOException e) {
|
||||
throw new ClientProtocolException(
|
||||
"IO Exception: problem closing stream ", e);
|
||||
}
|
||||
|
||||
|
||||
return parseResponse(response);
|
||||
}
|
||||
|
||||
private HttpResponse sendPost(String uri, StringEntity body)
|
||||
throws ClientProtocolException {
|
||||
HttpResponse response = null;
|
||||
HttpPost post = new HttpPost(uri);
|
||||
post.setHeader("Accept", "application/json");
|
||||
post.setHeader("Content-Type", "application/json");
|
||||
try {
|
||||
post.setEntity(body);
|
||||
response = client.execute(post);
|
||||
int code = response.getStatusLine().getStatusCode();
|
||||
if (!(code == 201 || code == 200 || code == 203)) {
|
||||
adminToken = null;
|
||||
throw new AuthException(
|
||||
"Failed to authenticate admin credentials " + code
|
||||
+ response.getStatusLine().getReasonPhrase());
|
||||
}
|
||||
} catch (IOException e) {
|
||||
post.abort();
|
||||
throw new ClientProtocolException(
|
||||
"IO Exception during POST request ", e);
|
||||
}
|
||||
return response;
|
||||
}
|
||||
|
||||
private HttpResponse sendGet(String newUri, Header[] headers,
|
||||
String serviceIds, String endpointIds)
|
||||
throws ClientProtocolException {
|
||||
HttpResponse response = null;
|
||||
HttpGet get = null;
|
||||
boolean hasServiceIds = false;
|
||||
if (serviceIds != null && !serviceIds.isEmpty()) {
|
||||
newUri += "?HP-IDM-serviceId=" + serviceIds;
|
||||
hasServiceIds = true;
|
||||
}
|
||||
if (endpointIds != null && !endpointIds.isEmpty()) {
|
||||
newUri += hasServiceIds ? "&HP-IDM-endpointTemplateId="
|
||||
+ endpointIds : "?HP-IDM-endpointTemplateId=" + endpointIds;
|
||||
}
|
||||
|
||||
get = new HttpGet(newUri);
|
||||
get.setHeader("Accept", "application/json");
|
||||
get.setHeader("Content-Type", "application/json");
|
||||
if (headers != null) {
|
||||
for (Header header : headers) {
|
||||
get.setHeader(header);
|
||||
}
|
||||
}
|
||||
|
||||
if(!appConfig.getAdminToken().isEmpty()) {
|
||||
get.setHeader(new BasicHeader(TOKEN, appConfig.getAdminToken()));
|
||||
}
|
||||
else if (!appConfig.getAdminAuthMethod().isEmpty()) {
|
||||
get.setHeader(new BasicHeader(TOKEN, getAdminToken()));
|
||||
}
|
||||
|
||||
try {
|
||||
response = client.execute(get);
|
||||
|
||||
}catch(ConnectException c) {
|
||||
get.abort();
|
||||
throw new UnavailableException(c.getMessage());
|
||||
}
|
||||
catch (IOException e) {
|
||||
get.abort();
|
||||
|
||||
throw new ClientProtocolException(
|
||||
"IO Exception during GET request ", e);
|
||||
}
|
||||
return response;
|
||||
}
|
||||
|
||||
private String parseResponse(HttpResponse response) {
|
||||
StringBuffer json = new StringBuffer();
|
||||
HttpEntity entity = response.getEntity();
|
||||
if (entity != null) {
|
||||
InputStream instream;
|
||||
try {
|
||||
instream = entity.getContent();
|
||||
|
||||
BufferedReader reader = new BufferedReader(
|
||||
new InputStreamReader(instream));
|
||||
String line = reader.readLine();
|
||||
while (line != null) {
|
||||
json.append(line);
|
||||
line = reader.readLine();
|
||||
}
|
||||
instream.close();
|
||||
reader.close();
|
||||
} catch (Exception e) {
|
||||
throw new AuthException("Failed to parse Http Response ", e);
|
||||
}
|
||||
}
|
||||
|
||||
return json.toString();
|
||||
}
|
||||
|
||||
private String getAdminToken() throws ClientProtocolException {
|
||||
HttpResponse response;
|
||||
String json;
|
||||
JsonParser jp = new JsonParser();
|
||||
|
||||
if (adminTokenExpiry != null) {
|
||||
if (isExpired(adminTokenExpiry)) {
|
||||
adminToken = null;
|
||||
}
|
||||
}
|
||||
if (adminToken == null) {
|
||||
if (appConfig.getAuthVersion().equalsIgnoreCase("v2.0")) {
|
||||
StringEntity params = getUnscopedV2AdminTokenRequest();
|
||||
String authUri = uri + "/v2.0/tokens";
|
||||
response = sendPost(authUri, params);
|
||||
json = parseResponse(response);
|
||||
JsonObject access = jp.parse(json).getAsJsonObject()
|
||||
.get("access").getAsJsonObject();
|
||||
JsonObject token = access.get("token").getAsJsonObject();
|
||||
adminToken = token.get("id").getAsString();
|
||||
adminTokenExpiry = token.get("expires").getAsString();
|
||||
} else {
|
||||
StringEntity params = getUnscopedV3AdminTokenRequest();
|
||||
String authUri = uri + "/v3/auth/tokens";
|
||||
response = sendPost(authUri, params);
|
||||
adminToken = response.getFirstHeader(AUTH_SUBJECT_TOKEN)
|
||||
.getValue();
|
||||
json = parseResponse(response);
|
||||
JsonObject token = jp.parse(json).getAsJsonObject()
|
||||
.get("token").getAsJsonObject();
|
||||
adminTokenExpiry = token.get("expires_at").getAsString();
|
||||
|
||||
}
|
||||
}
|
||||
return adminToken;
|
||||
}
|
||||
|
||||
private StringEntity getUnscopedV2AdminTokenRequest() {
|
||||
StringBuffer bfr = new StringBuffer();
|
||||
if (appConfig.getAdminAuthMethod().equalsIgnoreCase(PASSWORD)) {
|
||||
bfr.append("{\"auth\": {\"passwordCredentials\": {\"username\": \"");
|
||||
bfr.append(appConfig.getAdminUser());
|
||||
bfr.append("\",\"password\": \"");
|
||||
bfr.append(appConfig.getAdminPassword());
|
||||
if (appConfig.getAdminProject() != null && !appConfig.getAdminProject().isEmpty()) {
|
||||
bfr.append("\"}, \"tenantId\": \"");
|
||||
bfr.append(appConfig.getAdminProject());
|
||||
bfr.append("\"}}");
|
||||
} else {
|
||||
bfr.append("\"}}}");
|
||||
}
|
||||
try {
|
||||
return new StringEntity(bfr.toString());
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
throw new AuthException("Invalid V2 authentication request "
|
||||
+ e);
|
||||
}
|
||||
} else {
|
||||
String msg = String.format("Admin auth method %s not supported",appConfig.getAdminAuthMethod());
|
||||
throw new AuthException(msg);
|
||||
}
|
||||
}
|
||||
|
||||
private StringEntity getUnscopedV3AdminTokenRequest() {
|
||||
StringBuffer bfr = new StringBuffer();
|
||||
if (appConfig.getAdminAuthMethod().equalsIgnoreCase(PASSWORD)) {
|
||||
bfr.append("{\"auth\": {\"identity\": {\"methods\": [\"password\"],\"password\": {\"user\": {\"name\": \"");
|
||||
bfr.append(appConfig.getAdminUser());
|
||||
bfr.append("\",\"password\": \"");
|
||||
bfr.append(appConfig.getAdminPassword());
|
||||
bfr.append("\",\"domain\": {\"id\": \"default\"");
|
||||
bfr.append("}}}}}}");
|
||||
} else {
|
||||
String msg = String.format("Admin auth method %s not supported",appConfig.getAdminAuthMethod());
|
||||
throw new AuthException(msg);
|
||||
}
|
||||
try {
|
||||
return new StringEntity(bfr.toString());
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
throw new AuthException("Invalid V3 authentication request " + e);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isExpired(String expires) {
|
||||
Date tokenExpiryDate = null;
|
||||
try {
|
||||
tokenExpiryDate = expiryFormat.parse(expires);
|
||||
} catch (ParseException e) {
|
||||
return true;
|
||||
}
|
||||
Date current = new Date();
|
||||
return tokenExpiryDate.getTime() < (current.getTime() + DELTA_TIME_IN_SEC * 1000);
|
||||
}
|
||||
|
||||
public void reset() { }
|
||||
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package com.hpcloud.middleware;
|
||||
|
||||
import org.apache.commons.pool.impl.GenericObjectPool;
|
||||
|
||||
/**
|
||||
* An HTTP factory.
|
||||
*
|
||||
* @author liemmn
|
||||
*/
|
||||
public class HttpClientFactory extends AuthClientFactory {
|
||||
private HttpClientPoolFactory clientPool;
|
||||
|
||||
HttpClientFactory(String host, int port, int timeout, boolean clientAuth,
|
||||
String keyStore, String keyPass, String trustStore,
|
||||
String trustPass, String adminToken, int maxActive,
|
||||
long timeBetweenEvictionRunsMillis, long minEvictableIdleTimeMillis) {
|
||||
clientPool = new HttpClientPoolFactory(host, port, timeout, clientAuth,
|
||||
keyStore, keyPass, trustStore, trustPass, adminToken,
|
||||
maxActive, timeBetweenEvictionRunsMillis,
|
||||
minEvictableIdleTimeMillis);
|
||||
pool = new GenericObjectPool(clientPool);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void shutdown() {
|
||||
clientPool.shutDown();
|
||||
super.shutdown();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,130 @@
|
||||
package com.hpcloud.middleware;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.net.URI;
|
||||
import java.security.KeyStore;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import org.apache.commons.pool.BasePoolableObjectFactory;
|
||||
import org.apache.http.client.HttpClient;
|
||||
import org.apache.http.conn.scheme.PlainSocketFactory;
|
||||
import org.apache.http.conn.scheme.Scheme;
|
||||
import org.apache.http.conn.scheme.SchemeRegistry;
|
||||
import org.apache.http.conn.ssl.SSLSocketFactory;
|
||||
import org.apache.http.impl.client.DefaultHttpClient;
|
||||
import org.apache.http.impl.conn.PoolingClientConnectionManager;
|
||||
import org.apache.http.params.BasicHttpParams;
|
||||
import org.apache.http.params.CoreConnectionPNames;
|
||||
import org.apache.http.params.HttpParams;
|
||||
|
||||
/**
|
||||
* A Http request pool factory. Based on Apache Commons Pool. Singleton.
|
||||
* Note that the Apache HttpClient maintains its own connection pool and
|
||||
* does not participate in Apache Commons pool' lifecycle other than creating
|
||||
* HTTPRequests.
|
||||
*
|
||||
* @author liemmn
|
||||
*/
|
||||
public class HttpClientPoolFactory extends BasePoolableObjectFactory {
|
||||
private URI uri;
|
||||
private PoolingClientConnectionManager connMgr;
|
||||
private HttpPoolCleaner cleaner;
|
||||
private HttpClient client;
|
||||
|
||||
HttpClientPoolFactory(String host, int port, int timeout,
|
||||
boolean clientAuth, String keyStore, String keyPass,
|
||||
String trustStore, String trustPass, String adminToken,
|
||||
int maxActive, long timeBetweenEvictionRunsMillis,
|
||||
long minEvictableIdleTimeMillis) {
|
||||
// Setup auth URL
|
||||
String protocol = (port == 35357) ? "https://" : "http://";
|
||||
String urlStr = protocol + host + ":" + port;
|
||||
uri = URI.create(urlStr);
|
||||
|
||||
// Setup connection pool
|
||||
SchemeRegistry schemeRegistry = new SchemeRegistry();
|
||||
if (protocol.startsWith("https")) {
|
||||
SSLSocketFactory sslf = sslFactory(keyStore, keyPass, trustStore,
|
||||
trustPass, clientAuth);
|
||||
schemeRegistry.register(new Scheme("https", port, sslf));
|
||||
} else {
|
||||
schemeRegistry.register(new Scheme("http", port, PlainSocketFactory
|
||||
.getSocketFactory()));
|
||||
}
|
||||
connMgr = new PoolingClientConnectionManager(schemeRegistry,
|
||||
minEvictableIdleTimeMillis, TimeUnit.MILLISECONDS);
|
||||
|
||||
connMgr.setMaxTotal(maxActive);
|
||||
connMgr.setDefaultMaxPerRoute(maxActive);
|
||||
|
||||
// Http connection timeout
|
||||
HttpParams params = new BasicHttpParams();
|
||||
params.setParameter(CoreConnectionPNames.SO_TIMEOUT, timeout);
|
||||
params.setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, timeout);
|
||||
|
||||
// Create a single client
|
||||
client = new DefaultHttpClient(connMgr, params);
|
||||
|
||||
// Create and start the connection pool cleaner
|
||||
cleaner = new HttpPoolCleaner(connMgr, timeBetweenEvictionRunsMillis,
|
||||
minEvictableIdleTimeMillis);
|
||||
new Thread(cleaner).start();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object makeObject() throws Exception {
|
||||
return new HttpAuthClient(client, uri);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void passivateObject(Object obj) throws Exception {
|
||||
((HttpAuthClient) obj).reset();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void destroyObject(Object obj) throws Exception {
|
||||
((HttpAuthClient) obj).reset();
|
||||
obj = null;
|
||||
}
|
||||
|
||||
public void shutDown() {
|
||||
// Shutdown all connections
|
||||
connMgr.shutdown();
|
||||
// Shutdown connection pool cleaner
|
||||
cleaner.shutdown();
|
||||
}
|
||||
|
||||
// get a socket factory
|
||||
private static SSLSocketFactory sslFactory(String keyStore, String keyPass,
|
||||
String trustStore, String trustPass, boolean clientAuth) {
|
||||
try {
|
||||
// keystore
|
||||
KeyStore ks = null;
|
||||
if (clientAuth) {
|
||||
ks = KeyStore.getInstance("jks");
|
||||
FileInputStream is1 = new FileInputStream(new File(keyStore));
|
||||
try {
|
||||
ks.load(is1, keyPass.toCharArray());
|
||||
} finally {
|
||||
is1.close();
|
||||
}
|
||||
}
|
||||
// truststore
|
||||
KeyStore ts = KeyStore.getInstance("jks");
|
||||
FileInputStream is2 = new FileInputStream(
|
||||
new File(trustStore));
|
||||
try {
|
||||
ts.load(is2, trustPass.toCharArray());
|
||||
} finally {
|
||||
is2.close();
|
||||
}
|
||||
SSLSocketFactory sslf = new SSLSocketFactory(ks, keyPass, ts);
|
||||
return sslf;
|
||||
} catch (Exception e) {
|
||||
throw new AuthConnectionException(
|
||||
"Failed to create SSLSocketFactory", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
package com.hpcloud.middleware;
|
||||
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import org.apache.http.conn.ClientConnectionManager;
|
||||
|
||||
/**
|
||||
* A runner to clean the connection pool! There should only be one!
|
||||
*
|
||||
* @author liemmn
|
||||
*
|
||||
*/
|
||||
public class HttpPoolCleaner implements Runnable {
|
||||
private final ClientConnectionManager connMgr;
|
||||
private long timeBetweenEvictionRunsMillis, minEvictableIdleTimeMillis;
|
||||
private volatile boolean shutdown;
|
||||
|
||||
public HttpPoolCleaner(ClientConnectionManager connMgr,
|
||||
long timeBetweenEvictionRunsMillis, long minEvictableIdleTimeMillis) {
|
||||
this.connMgr = connMgr;
|
||||
this.timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis;
|
||||
this.minEvictableIdleTimeMillis = minEvictableIdleTimeMillis;
|
||||
}
|
||||
|
||||
/**
|
||||
* Start the cleaner.
|
||||
*/
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
while (!shutdown) {
|
||||
synchronized (this) {
|
||||
wait(timeBetweenEvictionRunsMillis);
|
||||
// Close expired connections
|
||||
connMgr.closeExpiredConnections();
|
||||
// Close connections that have been idle longer than x sec
|
||||
connMgr.closeIdleConnections(minEvictableIdleTimeMillis,
|
||||
TimeUnit.MILLISECONDS);
|
||||
}
|
||||
}
|
||||
} catch (InterruptedException ex) {
|
||||
// terminate
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Shutdown the cleaner.
|
||||
*/
|
||||
public void shutdown() {
|
||||
shutdown = true;
|
||||
synchronized (this) {
|
||||
notifyAll();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.hpcloud.middleware;
|
||||
|
||||
public class SignatureBuilderException extends RuntimeException {
|
||||
|
||||
private static final long serialVersionUID = -2643382825421961020L;
|
||||
|
||||
public SignatureBuilderException(String msg) {
|
||||
super(msg);
|
||||
}
|
||||
public SignatureBuilderException(String msg, Exception e) {
|
||||
super(msg, e);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
package com.hpcloud.middleware;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import javax.servlet.ServletResponse;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
|
||||
public enum SignatureExceptionHandler {
|
||||
|
||||
AuthConnectionException {
|
||||
@Override
|
||||
public void onException(Exception e, ServletResponse resp) {
|
||||
AuthConnectionException ae = (AuthConnectionException) e;
|
||||
logger.error(ae.getMessage() + " " + ae);
|
||||
try {
|
||||
((HttpServletResponse) resp).sendError(
|
||||
HttpServletResponse.SC_UNAUTHORIZED,
|
||||
ExceptionHandlerUtil.getStatusText(HttpServletResponse.SC_UNAUTHORIZED));
|
||||
} catch (IOException ie) {
|
||||
logger.debug("Error in writing the HTTP response "
|
||||
+ ie.getMessage() + " " + ie);
|
||||
}
|
||||
}
|
||||
},
|
||||
TException {
|
||||
@Override
|
||||
public void onException(Exception e, ServletResponse resp) {
|
||||
// TException t = (TException) e;
|
||||
//logger.error("Thrift Exception " + t.getMessage() + " " + t);
|
||||
try {
|
||||
((HttpServletResponse) resp).sendError(
|
||||
HttpServletResponse.SC_UNAUTHORIZED,
|
||||
ExceptionHandlerUtil.getStatusText(HttpServletResponse.SC_UNAUTHORIZED));
|
||||
} catch (IOException ie) {
|
||||
logger.debug("Error in writing the HTTP response "
|
||||
+ ie.getMessage() + " " + ie);
|
||||
}
|
||||
}
|
||||
},
|
||||
SignatureBuilderException {
|
||||
@Override
|
||||
public void onException(Exception e, ServletResponse resp) {
|
||||
SignatureBuilderException sbe = (SignatureBuilderException) e;
|
||||
logger.error(sbe.getMessage() + " " + sbe);
|
||||
try {
|
||||
((HttpServletResponse) resp).sendError(
|
||||
HttpServletResponse.SC_UNAUTHORIZED,
|
||||
ExceptionHandlerUtil.getStatusText(HttpServletResponse.SC_UNAUTHORIZED));
|
||||
} catch (IOException ie) {
|
||||
logger.debug("Error in writing the HTTP response "
|
||||
+ ie.getMessage() + " " + ie);
|
||||
}
|
||||
}
|
||||
},
|
||||
AuthException {
|
||||
@Override
|
||||
public void onException(Exception e, ServletResponse resp) {
|
||||
AuthException ae = (AuthException) e;
|
||||
logger.error(ae.getMessage() + " " + ae);
|
||||
try {
|
||||
((HttpServletResponse) resp).sendError(
|
||||
HttpServletResponse.SC_UNAUTHORIZED,
|
||||
ExceptionHandlerUtil.getStatusText(HttpServletResponse.SC_UNAUTHORIZED));
|
||||
} catch (IOException ie) {
|
||||
logger.debug("Error in writing the HTTP response "
|
||||
+ ie.getMessage() + " " + ie);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
final Logger logger = LoggerFactory.getLogger(SignatureExceptionHandler.class);
|
||||
|
||||
abstract void onException(Exception e, ServletResponse resp);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,144 @@
|
||||
package com.hpcloud.middleware;
|
||||
|
||||
import java.io.IOException;
|
||||
import org.apache.http.client.ClientProtocolException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.servlet.Filter;
|
||||
import javax.servlet.FilterChain;
|
||||
import javax.servlet.FilterConfig;
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.ServletRequest;
|
||||
import javax.servlet.ServletResponse;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
/**
|
||||
* A token-based authentication filter. This filter uses Thrift protocol to
|
||||
* communicate with the CS server. The token to validate is set via the header
|
||||
* {@link #TOKEN}.
|
||||
* <p>
|
||||
* A token is required to validate. However, if no token is presented, the
|
||||
* filter will set the {@link #AUTH_IDENTITY_STATUS} request parameter to
|
||||
* <code>Invalid</code> and let any other filter downstream to decide what to
|
||||
* do. For instance, if a downstream filter knows how to deal with signature
|
||||
* rather than tokens, then it will go ahead and validate with signatures.
|
||||
* <p>
|
||||
* Upon successful validation, all the Auth request parameters will be
|
||||
* populated, including information such as tenant, user and user roles, and
|
||||
* passed down to the next filter downstream.
|
||||
* <p>
|
||||
* Upon unsuccessful validation, this filter will terminate the request by
|
||||
* returning a 401 (unauthorized).
|
||||
*
|
||||
* @author liemmn
|
||||
*
|
||||
*/
|
||||
public class TokenAuth implements Filter, AuthConstants {
|
||||
|
||||
private static final String TOKEN_NOTFOUND = "Bad Request: Token not found in the request";
|
||||
private static final String SERVICE_IDS_PARAM = "serviceIds";
|
||||
private static final String ENDPOINT_IDS_PARAM = "endpointIds";
|
||||
private static final String SERVICE_CATALOG_PARAM = "includeCatalog";
|
||||
private static final String API_VERSION_PARAM = "apiVersion";
|
||||
|
||||
private final Config appConfig = Config.getInstance();
|
||||
|
||||
private FilterConfig filterConfig;
|
||||
|
||||
// Thee faithful logger
|
||||
private static final Logger logger = LoggerFactory
|
||||
.getLogger(TokenAuth.class);
|
||||
|
||||
@Override
|
||||
public void init(FilterConfig filterConfig) throws ServletException {
|
||||
this.filterConfig = filterConfig;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public void destroy() {
|
||||
FilterUtils.destroyFilter();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public void doFilter(ServletRequest req, ServletResponse resp,
|
||||
FilterChain chain) throws IOException, ServletException {
|
||||
Object auth = null;
|
||||
int numberOfTries = 0;
|
||||
if (!appConfig.isInitialized()) {
|
||||
appConfig.initialize(filterConfig,req,getInputParams());
|
||||
}
|
||||
int retries = appConfig.getRetries();
|
||||
long pauseTime = appConfig.getPauseTime();
|
||||
AuthClientFactory factory = appConfig.getFactory();
|
||||
|
||||
// Extract credential
|
||||
String token = ((HttpServletRequest) req).getHeader(TOKEN);
|
||||
|
||||
if (token == null) {
|
||||
if (!appConfig.isDelayAuthDecision()) {
|
||||
logger.error(HttpServletResponse.SC_UNAUTHORIZED
|
||||
+ " No token found.");
|
||||
((HttpServletResponse) resp).sendError(
|
||||
HttpServletResponse.SC_UNAUTHORIZED, TOKEN_NOTFOUND);
|
||||
return;
|
||||
} else {
|
||||
logger.info("No token found...Skipping");
|
||||
}
|
||||
} else {
|
||||
do {
|
||||
try {
|
||||
auth = FilterUtils.getCachedToken(token);
|
||||
}catch(UnavailableException e) {
|
||||
TokenExceptionHandler handler = TokenExceptionHandler
|
||||
.valueOf("UnavailableException");
|
||||
handler.onException(e,resp,token);
|
||||
}
|
||||
catch(ClientProtocolException e) {
|
||||
if (numberOfTries < retries) {
|
||||
FilterUtils.pause(pauseTime);
|
||||
logger.debug("Retrying connection after "
|
||||
+ pauseTime + " seconds.");
|
||||
numberOfTries++;
|
||||
continue;
|
||||
} else {
|
||||
logger.debug("Exhausted retries..");
|
||||
TokenExceptionHandler handler = TokenExceptionHandler
|
||||
.valueOf("ClientProtocolException");
|
||||
handler.onException(e, resp, token);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
}while(auth==null && numberOfTries<=retries);
|
||||
}
|
||||
req = FilterUtils.wrapRequest(req, auth);
|
||||
logger.debug("TokenAuth: Forwarding down stream to next filter/servlet");
|
||||
// Forward downstream...
|
||||
chain.doFilter(req, resp);
|
||||
}
|
||||
|
||||
private Map<String, String> getInputParams() {
|
||||
Map<String, String> inputParams = new HashMap<String, String>();
|
||||
if (appConfig.getServiceIds() != null) {
|
||||
inputParams.put(SERVICE_IDS_PARAM, appConfig.getServiceIds());
|
||||
}
|
||||
if (appConfig.getEndpointIds() != null) {
|
||||
inputParams.put(ENDPOINT_IDS_PARAM, appConfig.getEndpointIds());
|
||||
}
|
||||
inputParams.put(SERVICE_CATALOG_PARAM, String.valueOf(appConfig.isIncludeCatalog()));
|
||||
inputParams.put(API_VERSION_PARAM, appConfig.getAuthVersion());
|
||||
return inputParams;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
package com.hpcloud.middleware;
|
||||
|
||||
import com.google.common.cache.*;
|
||||
import org.apache.http.client.ClientProtocolException;
|
||||
import org.apache.thrift.TException;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
|
||||
public class TokenCache<K, V> {
|
||||
|
||||
private final LoadingCache<K, V> cache;
|
||||
private final Config appConfig = Config.getInstance();
|
||||
private AuthClientFactory factory;
|
||||
private AuthClient client;
|
||||
private static final Logger logger = LoggerFactory
|
||||
.getLogger(TokenCache.class);
|
||||
|
||||
|
||||
public TokenCache(final long maxSize, final long timeToExpire, final Map<String, String> map) {
|
||||
factory = appConfig.getFactory();
|
||||
|
||||
cache = CacheBuilder.newBuilder().maximumSize(maxSize)
|
||||
.expireAfterWrite(timeToExpire, TimeUnit.SECONDS)
|
||||
.build(new CacheLoader<K, V>() {
|
||||
public V load(K key) throws TException, ClientProtocolException {
|
||||
|
||||
V value = null;
|
||||
AuthClient client = null;
|
||||
|
||||
try {
|
||||
client = factory.getClient();
|
||||
if (appConfig.getAuthVersion().equals("v2.0")) {
|
||||
value = (V) client.validateTokenForServiceEndpointV2((String) key, appConfig.getServiceIds(),
|
||||
appConfig.getEndpointIds(), appConfig.isIncludeCatalog());
|
||||
} else {
|
||||
value = (V) client.validateTokenForServiceEndpointV3((String) key, map);
|
||||
}
|
||||
} finally {
|
||||
if (client != null)
|
||||
factory.recycle(client);
|
||||
}
|
||||
return value;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public V getToken(K key) throws ClientProtocolException {
|
||||
V value = null;
|
||||
try {
|
||||
value = cache.get(key);
|
||||
} catch (ExecutionException e) {
|
||||
logger.debug("had problem caching token");
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
public void put(K key, V value) {
|
||||
cache.put(key, value);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,106 @@
|
||||
package com.hpcloud.middleware;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import org.apache.http.client.ClientProtocolException;
|
||||
|
||||
import javax.servlet.ServletResponse;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import org.apache.thrift.TException;
|
||||
|
||||
public enum TokenExceptionHandler {
|
||||
|
||||
AuthConnectionException {
|
||||
@Override
|
||||
public void onException(Exception e, ServletResponse resp, String token) {
|
||||
AuthConnectionException ae = (AuthConnectionException) e;
|
||||
logger.error(ae.getMessage() + " " + ae);
|
||||
try {
|
||||
((HttpServletResponse) resp).sendError(
|
||||
HttpServletResponse.SC_UNAUTHORIZED,
|
||||
ExceptionHandlerUtil.getStatusText(HttpServletResponse.SC_UNAUTHORIZED)
|
||||
+ " " + token);
|
||||
} catch (IOException ie) {
|
||||
logger.debug("Error in writing the HTTP response "
|
||||
+ ie.getMessage() + " " + ie);
|
||||
}
|
||||
}
|
||||
},
|
||||
TException {
|
||||
@Override
|
||||
public void onException(Exception e, ServletResponse resp, String token) {
|
||||
TException t = (TException) e;
|
||||
logger.error("Thrift Exception " + t.getMessage() + " " + t);
|
||||
try {
|
||||
((HttpServletResponse) resp).sendError(
|
||||
HttpServletResponse.SC_UNAUTHORIZED,
|
||||
ExceptionHandlerUtil.getStatusText(HttpServletResponse.SC_UNAUTHORIZED)
|
||||
+ " " + token);
|
||||
} catch (IOException ie) {
|
||||
logger.debug("Error in writing the HTTP response "
|
||||
+ ie.getMessage() + " " + ie);
|
||||
}
|
||||
}
|
||||
},
|
||||
ClientProtocolException {
|
||||
@Override
|
||||
public void onException(Exception e, ServletResponse resp, String token) {
|
||||
ClientProtocolException t = (ClientProtocolException) e;
|
||||
logger.error("Http Client Exception " + t.getMessage() + " " + t);
|
||||
try {
|
||||
((HttpServletResponse) resp).sendError(
|
||||
HttpServletResponse.SC_UNAUTHORIZED,
|
||||
ExceptionHandlerUtil.getStatusText(HttpServletResponse.SC_UNAUTHORIZED)
|
||||
+ " " + token);
|
||||
} catch (IOException ie) {
|
||||
logger.debug("Error in writing the HTTP response "
|
||||
+ ie.getMessage() + " " + ie);
|
||||
}
|
||||
}
|
||||
},
|
||||
AuthException {
|
||||
@Override
|
||||
public void onException(Exception e, ServletResponse resp, String token) {
|
||||
AuthException ae = (AuthException) e;
|
||||
logger.error(ae.getMessage() + " " + ae);
|
||||
String statusText = ae.getMessage();
|
||||
if (statusText == null || statusText.isEmpty()) {
|
||||
statusText = ExceptionHandlerUtil.getStatusText(HttpServletResponse.SC_UNAUTHORIZED);
|
||||
}
|
||||
try {
|
||||
((HttpServletResponse) resp).sendError(
|
||||
HttpServletResponse.SC_UNAUTHORIZED,
|
||||
statusText + " " + token);
|
||||
} catch (IOException ie) {
|
||||
logger.debug("Error in writing the HTTP response "
|
||||
+ ie.getMessage() + " " + ie);
|
||||
}
|
||||
}
|
||||
}, ServiceUnavailableException {
|
||||
@Override
|
||||
public void onException(Exception e, ServletResponse resp, String token) {
|
||||
AuthException ae = (AuthException) e;
|
||||
logger.error(ae.getMessage() + " " + ae);
|
||||
String statusText = ae.getMessage();
|
||||
if (statusText == null || statusText.isEmpty()) {
|
||||
statusText = ExceptionHandlerUtil.getStatusText(HttpServletResponse.SC_UNAUTHORIZED);
|
||||
}
|
||||
try {
|
||||
((HttpServletResponse) resp).sendError(
|
||||
HttpServletResponse.SC_UNAUTHORIZED,
|
||||
statusText + " " + token);
|
||||
} catch (IOException ie) {
|
||||
logger.debug("Error in writing the HTTP response "
|
||||
+ ie.getMessage() + " " + ie);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
final Logger logger = LoggerFactory.getLogger(TokenExceptionHandler.class);
|
||||
|
||||
abstract void onException(Exception e, ServletResponse resp, String token);
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.hpcloud.middleware;
|
||||
|
||||
/**
|
||||
* Created by johnderr on 6/25/14.
|
||||
*/
|
||||
public class UnavailableException extends RuntimeException {
|
||||
|
||||
private static final long serialVersionUID = -2353922744077869466L;
|
||||
|
||||
public UnavailableException(String msg) {
|
||||
super(msg);
|
||||
}
|
||||
|
||||
public UnavailableException(String msg, Exception e) {
|
||||
super(msg, e);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user