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