gateway filter

This commit is contained in:
fangzhipeng 2018-11-16 19:03:05 +08:00
parent 78be5f0380
commit b3d4e28575
12 changed files with 726 additions and 317 deletions

View File

@ -10,7 +10,7 @@
</profile>
</annotationProcessing>
<bytecodeTargetLevel>
<module name="sc-f-gateway-filter" target="1.7" />
<module name="sc-f-gateway-filter" target="8" />
</bytecodeTargetLevel>
</component>
</project>

View File

@ -0,0 +1,124 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Palette2">
<group name="Swing">
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
</item>
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
</item>
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true">
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
</item>
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
<initial-values>
<property name="text" value="Button" />
</initial-values>
</item>
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="RadioButton" />
</initial-values>
</item>
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="CheckBox" />
</initial-values>
</item>
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
<initial-values>
<property name="text" value="Label" />
</initial-values>
</item>
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
</item>
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
</item>
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
<preferred-size width="-1" height="20" />
</default-constraints>
</item>
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
</item>
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
</item>
</group>
</component>
</project>

View File

@ -12,11 +12,11 @@
</component>
<component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="375">
<file leaf-file-name="pom.xml" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/pom.xml">
<file leaf-file-name="AddRequestParameterGatewayFilterFactory.java" pinned="false" current-in-tab="false">
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/filter/factory/AddRequestParameterGatewayFilterFactory.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="350">
<caret line="14" selection-start-line="14" selection-end-line="14" />
<state relative-caret-position="-115">
<caret line="29" column="66" selection-start-line="29" selection-start-column="66" selection-end-line="29" selection-end-column="66" />
</state>
</provider>
</entry>
@ -24,8 +24,8 @@
<file leaf-file-name="application.yml" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/main/resources/application.yml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="450">
<caret line="18" selection-start-line="18" selection-end-line="18" />
<state relative-caret-position="575">
<caret line="23" column="13" lean-forward="true" selection-start-line="23" selection-start-column="13" selection-end-line="23" selection-end-column="13" />
</state>
</provider>
</entry>
@ -33,11 +33,92 @@
<file leaf-file-name="Application.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/gateway/Application.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="210">
<caret line="25" column="33" selection-start-line="25" selection-start-column="33" selection-end-line="25" selection-end-column="33" />
<state relative-caret-position="710">
<caret line="38" selection-start-line="38" selection-end-line="41" selection-end-column="5" />
<folding>
<element signature="e#616#617#0" expanded="true" />
<element signature="e#678#679#0" expanded="true" />
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="AbstractChangeRequestUriGatewayFilterFactory.java" pinned="false" current-in-tab="false">
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/filter/factory/AbstractChangeRequestUriGatewayFilterFactory.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="300">
<caret line="36" column="22" selection-start-line="36" selection-start-column="22" selection-end-line="36" selection-end-column="22" />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="ElapsedGatewayFilterFactory.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/gateway/ElapsedGatewayFilterFactory.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1135">
<caret line="74" lean-forward="true" selection-start-line="17" selection-end-line="74" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#627#628#0" expanded="true" />
<element signature="e#668#669#0" expanded="true" />
<element signature="e#712#713#0" expanded="true" />
<element signature="e#747#748#0" expanded="true" />
<element signature="e#327#328#0" expanded="true" />
<element signature="e#368#369#0" expanded="true" />
<element signature="e#425#426#0" expanded="true" />
<element signature="e#477#478#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="AbstractGatewayFilterFactory.java" pinned="false" current-in-tab="false">
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/filter/factory/AbstractGatewayFilterFactory.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="700">
<caret line="49" lean-forward="true" selection-start-line="49" selection-end-line="49" />
<folding>
<element signature="e#1146#1147#0" expanded="true" />
<element signature="e#1171#1172#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="SetPathGatewayFilterFactory.java" pinned="false" current-in-tab="false">
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/filter/factory/SetPathGatewayFilterFactory.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-300">
<caret line="37" column="13" selection-start-line="37" selection-start-column="13" selection-end-line="37" selection-end-column="13" />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="RedirectToGatewayFilterFactory.java" pinned="false" current-in-tab="false">
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/filter/factory/RedirectToGatewayFilterFactory.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="475">
<caret line="67" column="20" selection-start-line="67" selection-start-column="15" selection-end-line="67" selection-end-column="20" />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="RequestHeaderToRequestUriGatewayFilterFactory.java" pinned="false" current-in-tab="false">
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/filter/factory/RequestHeaderToRequestUriGatewayFilterFactory.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="225">
<caret line="19" column="13" selection-start-line="19" selection-start-column="13" selection-end-line="19" selection-end-column="13" />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="RemoveRequestHeaderGatewayFilterFactory.java" pinned="false" current-in-tab="false">
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/filter/factory/RemoveRequestHeaderGatewayFilterFactory.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="225">
<caret line="28" column="69" selection-start-line="28" selection-start-column="69" selection-end-line="28" selection-end-column="69" />
<folding>
<element signature="e#1166#1167#0" expanded="true" />
<element signature="e#1203#1204#0" expanded="true" />
</folding>
</state>
</provider>
@ -45,6 +126,13 @@
</file>
</leaf>
</component>
<component name="FileTemplateManagerImpl">
<option name="RECENT_TEMPLATES">
<list>
<option value="Class" />
</list>
</option>
</component>
<component name="FindInProjectRecents">
<findStrings>
<find>after_route</find>
@ -66,9 +154,13 @@
<option name="CHANGED_PATHS">
<list>
<option value="$PROJECT_DIR$/src/test/java/gateway/ApplicationTest.java" />
<option value="$PROJECT_DIR$/pom.xml" />
<option value="$PROJECT_DIR$/src/main/java/gateway/ElapsedFilter.java" />
<option value="$PROJECT_DIR$/src/main/java/gateway/TokenFilter.java" />
<option value="$PROJECT_DIR$/src/main/java/gateway/Application.java" />
<option value="$PROJECT_DIR$/src/main/resources/application.yml" />
<option value="$PROJECT_DIR$/pom.xml" />
<option value="$PROJECT_DIR$/src/main/java/gateway/ElapsedGatewayFilterFactory.java" />
<option value="$PROJECT_DIR$/src/main/java/gateway/ElapsedatewayFilterFactory.java" />
</list>
</option>
</component>
@ -92,8 +184,7 @@
</treeState>
</component>
<component name="ProjectFrameBounds" extendedState="6">
<option name="x" value="1154" />
<option name="y" value="188" />
<option name="x" value="683" />
<option name="width" value="683" />
<option name="height" value="728" />
</component>
@ -102,8 +193,7 @@
<foldersAlwaysOnTop value="true" />
</navigator>
<panes>
<pane id="Scope" />
<pane id="PackagesPane" />
<pane id="AndroidView" />
<pane id="ProjectPane">
<subPane>
<expand>
@ -144,11 +234,85 @@
<item name="main" type="462c0819:PsiDirectoryNode" />
<item name="resources" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="gs-gateway" type="b2602c69:ProjectViewProjectNode" />
<item name="External Libraries" type="cb654da1:ExternalLibrariesNode" />
</path>
<path>
<item name="gs-gateway" type="b2602c69:ProjectViewProjectNode" />
<item name="External Libraries" type="cb654da1:ExternalLibrariesNode" />
<item name="Maven: org.springframework.cloud:spring-cloud-gateway-core:2.0.1.RELEASE" type="70bed36:NamedLibraryElementNode" />
</path>
<path>
<item name="gs-gateway" type="b2602c69:ProjectViewProjectNode" />
<item name="External Libraries" type="cb654da1:ExternalLibrariesNode" />
<item name="Maven: org.springframework.cloud:spring-cloud-gateway-core:2.0.1.RELEASE" type="70bed36:NamedLibraryElementNode" />
<item name="spring-cloud-gateway-core-2.0.1.RELEASE.jar" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="gs-gateway" type="b2602c69:ProjectViewProjectNode" />
<item name="External Libraries" type="cb654da1:ExternalLibrariesNode" />
<item name="Maven: org.springframework.cloud:spring-cloud-gateway-core:2.0.1.RELEASE" type="70bed36:NamedLibraryElementNode" />
<item name="spring-cloud-gateway-core-2.0.1.RELEASE.jar" type="462c0819:PsiDirectoryNode" />
<item name="gateway" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="gs-gateway" type="b2602c69:ProjectViewProjectNode" />
<item name="External Libraries" type="cb654da1:ExternalLibrariesNode" />
<item name="Maven: org.springframework.cloud:spring-cloud-gateway-core:2.0.1.RELEASE" type="70bed36:NamedLibraryElementNode" />
<item name="spring-cloud-gateway-core-2.0.1.RELEASE.jar" type="462c0819:PsiDirectoryNode" />
<item name="gateway" type="462c0819:PsiDirectoryNode" />
<item name="actuate" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="gs-gateway" type="b2602c69:ProjectViewProjectNode" />
<item name="External Libraries" type="cb654da1:ExternalLibrariesNode" />
<item name="Maven: org.springframework.cloud:spring-cloud-gateway-core:2.0.1.RELEASE" type="70bed36:NamedLibraryElementNode" />
<item name="spring-cloud-gateway-core-2.0.1.RELEASE.jar" type="462c0819:PsiDirectoryNode" />
<item name="gateway" type="462c0819:PsiDirectoryNode" />
<item name="config" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="gs-gateway" type="b2602c69:ProjectViewProjectNode" />
<item name="External Libraries" type="cb654da1:ExternalLibrariesNode" />
<item name="Maven: org.springframework.cloud:spring-cloud-gateway-core:2.0.1.RELEASE" type="70bed36:NamedLibraryElementNode" />
<item name="spring-cloud-gateway-core-2.0.1.RELEASE.jar" type="462c0819:PsiDirectoryNode" />
<item name="gateway" type="462c0819:PsiDirectoryNode" />
<item name="filter" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="gs-gateway" type="b2602c69:ProjectViewProjectNode" />
<item name="External Libraries" type="cb654da1:ExternalLibrariesNode" />
<item name="Maven: org.springframework.cloud:spring-cloud-gateway-core:2.0.1.RELEASE" type="70bed36:NamedLibraryElementNode" />
<item name="spring-cloud-gateway-core-2.0.1.RELEASE.jar" type="462c0819:PsiDirectoryNode" />
<item name="gateway" type="462c0819:PsiDirectoryNode" />
<item name="filter" type="462c0819:PsiDirectoryNode" />
<item name="factory" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="gs-gateway" type="b2602c69:ProjectViewProjectNode" />
<item name="External Libraries" type="cb654da1:ExternalLibrariesNode" />
<item name="Maven: org.springframework.cloud:spring-cloud-gateway-core:2.0.1.RELEASE" type="70bed36:NamedLibraryElementNode" />
<item name="spring-cloud-gateway-core-2.0.1.RELEASE.jar" type="462c0819:PsiDirectoryNode" />
<item name="gateway" type="462c0819:PsiDirectoryNode" />
<item name="filter" type="462c0819:PsiDirectoryNode" />
<item name="factory" type="462c0819:PsiDirectoryNode" />
<item name="rewrite" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="gs-gateway" type="b2602c69:ProjectViewProjectNode" />
<item name="External Libraries" type="cb654da1:ExternalLibrariesNode" />
<item name="Maven: org.springframework.cloud:spring-cloud-gateway-core:2.0.1.RELEASE" type="70bed36:NamedLibraryElementNode" />
<item name="spring-cloud-gateway-core-2.0.1.RELEASE.jar" type="462c0819:PsiDirectoryNode" />
<item name="gateway" type="462c0819:PsiDirectoryNode" />
<item name="route" type="462c0819:PsiDirectoryNode" />
</path>
</expand>
<select />
</subPane>
</pane>
<pane id="AndroidView" />
<pane id="PackagesPane" />
<pane id="Scope" />
</panes>
</component>
<component name="PropertiesComponent">
@ -243,50 +407,51 @@
<workItem from="1541382301462" duration="631000" />
<workItem from="1541577720666" duration="5731000" />
<workItem from="1541645468016" duration="785000" />
<workItem from="1542336268089" duration="13535000" />
</task>
<servers />
</component>
<component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="31230000" />
<option name="totallyTimeSpent" value="44765000" />
</component>
<component name="ToolWindowManager">
<frame x="-8" y="-8" width="1936" height="1176" extended-state="6" />
<editor active="true" />
<layout>
<window_info anchor="right" id="Palette" order="3" />
<window_info anchor="bottom" id="TODO" order="6" />
<window_info anchor="right" id="Palette&#9;" order="3" />
<window_info id="Image Layers" order="2" />
<window_info anchor="right" id="Capture Analysis" order="3" />
<window_info anchor="bottom" id="Event Log" order="7" side_tool="true" />
<window_info anchor="right" id="Maven Projects" order="3" weight="0.3299356" />
<window_info anchor="bottom" id="Database Changes" order="7" show_stripe_button="false" />
<window_info anchor="bottom" id="Run" order="2" weight="0.24556214" />
<window_info anchor="bottom" id="Version Control" order="7" show_stripe_button="false" />
<window_info anchor="bottom" id="Spring" order="7" />
<window_info anchor="bottom" id="Terminal" order="7" />
<window_info id="Capture Tool" order="2" />
<window_info id="Designer" order="2" />
<window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.29935622" />
<window_info anchor="right" id="Bean Validation" order="4" />
<window_info anchor="bottom" id="Docker" order="7" show_stripe_button="false" />
<window_info anchor="right" id="Database" order="3" />
<window_info id="Structure" order="1" side_tool="true" weight="0.25" />
<window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
<window_info id="UI Designer" order="2" />
<window_info anchor="right" id="Theme Preview" order="3" />
<window_info anchor="bottom" id="Debug" order="3" weight="0.39940828" />
<window_info anchor="bottom" id="TODO" order="6" />
<window_info anchor="bottom" id="Messages" order="8" weight="0.32938856" />
<window_info anchor="right" id="Palette&#9;" order="3" />
<window_info id="Image Layers" order="2" />
<window_info anchor="right" id="Capture Analysis" order="3" />
<window_info anchor="bottom" id="Version Control" order="7" show_stripe_button="false" />
<window_info anchor="bottom" id="Run" order="2" weight="0.50986195" />
<window_info anchor="bottom" id="Spring" order="7" />
<window_info anchor="bottom" id="Terminal" order="7" />
<window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.30364805" />
<window_info anchor="right" id="Bean Validation" order="4" />
<window_info anchor="right" id="Theme Preview" order="3" />
<window_info id="Favorites" order="2" side_tool="true" />
<window_info anchor="right" id="Gradle" order="3" />
<window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
<window_info anchor="bottom" id="Find" order="1" />
<window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
<window_info id="Web" order="2" side_tool="true" />
<window_info anchor="bottom" id="Messages" order="8" weight="0.32938856" />
<window_info anchor="bottom" id="Message" order="0" />
<window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
<window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
<window_info anchor="bottom" id="Java Enterprise" order="7" />
<window_info anchor="bottom" id="Find" order="1" />
</layout>
</component>
<component name="TypeScriptGeneratedFilesManager">
@ -296,104 +461,6 @@
<option name="myLimit" value="2678400000" />
</component>
<component name="editorHistoryManager">
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/discovery/GatewayDiscoveryClientAutoConfiguration.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="328">
<caret line="53" column="13" selection-start-line="53" selection-start-column="13" selection-end-line="53" selection-end-column="13" />
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/discovery/DiscoveryClientRouteDefinitionLocator.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="275">
<caret line="41" column="13" selection-start-line="41" selection-start-column="13" selection-end-line="41" selection-end-column="13" />
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/event/FilterArgsEvent.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="150">
<caret line="23" column="13" selection-start-line="23" selection-start-column="13" selection-end-line="23" selection-end-column="13" />
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/event/PredicateArgsEvent.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="150">
<caret line="23" column="13" selection-start-line="23" selection-start-column="13" selection-end-line="23" selection-end-column="13" />
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/event/WeightDefinedEvent.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="150">
<caret line="22" column="13" selection-start-line="22" selection-start-column="13" selection-end-line="22" selection-end-column="13" />
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/event/RefreshRoutesEvent.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="225">
<caret line="24" column="13" selection-start-line="24" selection-start-column="13" selection-end-line="24" selection-end-column="13" />
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/support/ipresolver/RemoteAddressResolver.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="175">
<caret line="9" column="17" selection-start-line="9" selection-start-column="17" selection-end-line="9" selection-end-column="17" />
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/support/ipresolver/XForwardedRemoteAddressResolver.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="328">
<caret line="25" column="13" selection-start-line="25" selection-start-column="13" selection-end-line="25" selection-end-column="13" />
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/support/AbstractConfigurable.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="150">
<caret line="22" column="62" lean-forward="true" selection-start-line="22" selection-start-column="62" selection-end-line="22" selection-end-column="62" />
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/support/AbstractStatefulConfigurable.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="150">
<caret line="24" column="22" selection-start-line="24" selection-start-column="22" selection-end-line="24" selection-end-column="22" />
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/support/BodyInserterContext.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="150">
<caret line="29" column="13" selection-start-line="29" selection-start-column="13" selection-end-line="29" selection-end-column="13" />
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/support/CachedBodyOutputMessage.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="300">
<caret line="40" column="13" selection-start-line="40" selection-start-column="13" selection-end-line="40" selection-end-column="13" />
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/support/Configurable.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="100">
<caret line="19" column="17" selection-start-line="19" selection-start-column="17" selection-end-line="19" selection-end-column="17" />
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/support/ConfigurationUtils.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="150">
<caret line="31" column="22" selection-start-line="31" selection-start-column="22" selection-end-line="31" selection-end-column="22" />
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/support/WeightConfig.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="175">
@ -464,20 +531,6 @@
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/route/builder/BooleanSpec.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="225">
<caret line="33" column="13" selection-start-line="33" selection-start-column="13" selection-end-line="33" selection-end-column="13" />
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/route/builder/GatewayFilterSpec.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="225">
<caret line="66" column="13" selection-start-line="66" selection-start-column="13" selection-end-line="66" selection-end-column="13" />
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/route/builder/PredicateSpec.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="225">
@ -562,13 +615,6 @@
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/route/RouteDefinitionRouteLocator.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="136">
<caret line="200" column="38" selection-start-line="200" selection-start-column="38" selection-end-line="200" selection-end-column="38" />
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/route/RouteLocator.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="250">
@ -594,14 +640,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="225">
<caret line="32" column="13" selection-start-line="32" selection-start-column="13" selection-end-line="32" selection-end-column="13" />
<folding>
<element signature="e#1348#1349#0" expanded="true" />
<element signature="e#1382#1383#0" expanded="true" />
<element signature="e#2644#2645#0" expanded="true" />
<element signature="e#2738#2739#0" expanded="true" />
<element signature="e#2850#2851#0" expanded="true" />
<element signature="e#2876#2877#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
@ -647,21 +685,168 @@
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/filter/GatewayFilterChain.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="425">
<caret line="19" column="15" selection-start-line="19" selection-start-column="15" selection-end-line="19" selection-end-column="15" />
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/route/builder/BooleanSpec.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="225">
<caret line="75" column="19" selection-start-line="75" selection-start-column="19" selection-end-line="75" selection-end-column="19" />
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/route/builder/GatewayFilterSpec.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="320">
<caret line="79" column="29" selection-start-line="79" selection-start-column="29" selection-end-line="79" selection-end-column="29" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/gateway/TokenFilter.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="510">
<caret line="27" column="13" lean-forward="true" selection-start-line="19" selection-end-line="38" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#616#617#0" expanded="true" />
<element signature="e#643#644#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/support/Configurable.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="100">
<caret line="19" column="17" selection-start-line="19" selection-start-column="17" selection-end-line="19" selection-end-column="17" />
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/support/AbstractConfigurable.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="150">
<caret line="22" column="22" selection-start-line="22" selection-start-column="22" selection-end-line="22" selection-end-column="22" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/gateway/ElapsedFilter.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="460">
<caret line="28" column="30" lean-forward="true" selection-start-line="28" selection-start-column="30" selection-end-line="28" selection-end-column="30" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#596#597#0" expanded="true" />
<element signature="e#620#621#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/route/RouteDefinitionRouteLocator.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="575">
<caret line="70" column="38" selection-start-line="70" selection-start-column="38" selection-end-line="70" selection-end-column="38" />
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/filter/factory/AbstractNameValueGatewayFilterFactory.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="150">
<caret line="28" column="22" selection-start-line="28" selection-start-column="22" selection-end-line="28" selection-end-column="22" />
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/filter/factory/AbstractChangeRequestUriGatewayFilterFactory.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="300">
<caret line="36" column="22" selection-start-line="36" selection-start-column="22" selection-end-line="36" selection-end-column="22" />
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/filter/factory/RequestHeaderToRequestUriGatewayFilterFactory.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="225">
<caret line="19" column="13" selection-start-line="19" selection-start-column="13" selection-end-line="19" selection-end-column="13" />
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/filter/factory/RemoveRequestHeaderGatewayFilterFactory.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="225">
<caret line="28" column="69" selection-start-line="28" selection-start-column="69" selection-end-line="28" selection-end-column="69" />
<folding>
<element signature="e#1166#1167#0" expanded="true" />
<element signature="e#1203#1204#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/filter/factory/AbstractGatewayFilterFactory.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="700">
<caret line="49" lean-forward="true" selection-start-line="49" selection-end-line="49" />
<folding>
<element signature="e#1146#1147#0" expanded="true" />
<element signature="e#1171#1172#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/filter/factory/SetPathGatewayFilterFactory.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-300">
<caret line="37" column="13" selection-start-line="37" selection-start-column="13" selection-end-line="37" selection-end-column="13" />
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/filter/factory/AddRequestParameterGatewayFilterFactory.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-115">
<caret line="29" column="66" selection-start-line="29" selection-start-column="66" selection-end-line="29" selection-end-column="66" />
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/filter/factory/RedirectToGatewayFilterFactory.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="475">
<caret line="67" column="20" selection-start-line="67" selection-start-column="15" selection-end-line="67" selection-end-column="20" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/gateway/ElapsedGatewayFilterFactory.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1135">
<caret line="74" lean-forward="true" selection-start-line="17" selection-end-line="74" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#627#628#0" expanded="true" />
<element signature="e#668#669#0" expanded="true" />
<element signature="e#712#713#0" expanded="true" />
<element signature="e#747#748#0" expanded="true" />
<element signature="e#327#328#0" expanded="true" />
<element signature="e#368#369#0" expanded="true" />
<element signature="e#425#426#0" expanded="true" />
<element signature="e#477#478#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/gateway/Application.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="210">
<caret line="25" column="33" selection-start-line="25" selection-start-column="33" selection-end-line="25" selection-end-column="33" />
<state relative-caret-position="710">
<caret line="38" selection-start-line="38" selection-end-line="41" selection-end-column="5" />
<folding>
<element signature="e#616#617#0" expanded="true" />
<element signature="e#678#679#0" expanded="true" />
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/resources/application.yml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="450">
<caret line="18" selection-start-line="18" selection-end-line="18" />
<state relative-caret-position="575">
<caret line="23" column="13" lean-forward="true" selection-start-line="23" selection-start-column="13" selection-end-line="23" selection-end-column="13" />
</state>
</provider>
</entry>
@ -717,7 +902,7 @@
</state>
<state key="ModuleStructureConfigurable.UI">
<settings>
<last-edited>sc-f-gateway-predicate</last-edited>
<last-edited>sc-f-gateway-filter</last-edited>
<splitter-proportions>
<option name="proportions">
<list>

View File

@ -5,7 +5,7 @@
<configuration />
</facet>
</component>
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">

View File

@ -1,16 +1,11 @@
package gateway;
import reactor.core.publisher.Mono;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.gateway.route.RouteLocator;
import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
// tag::code[]
@SpringBootApplication
@RestController
public class Application {
@ -21,29 +16,29 @@ public class Application {
// @Bean
// public RouteLocator myRoutes(RouteLocatorBuilder builder) {
// String httpUri = "http://httpbin.org:80";
// public RouteLocator customerRouteLocator(RouteLocatorBuilder builder) {
//
// return builder.routes()
// .route(p -> p
// .path("/get")
// .filters(f -> f.addRequestHeader("Hello", "World"))
// .uri(httpUri))
// .route(p -> p
// .host("*.hystrix.com")
// .filters(f -> f
// .hystrix(config -> config
// .setName("mycmd")
// .setFallbackUri("forward:/fallback")))
// .uri(httpUri))
// .build();
// }
// end::route-locator[]
// tag::fallback[]
// @RequestMapping("/fallback")
// public Mono<String> fallback() {
// return Mono.just("fallback");
// .route(r -> r.path("/customer/**")
// .filters(f -> f.filter(new ElapsedFilter())
// .addResponseHeader("X-Response-Default-Foo", "Default-Bar"))
// .uri("http://httpbin.org:80/get")
// .order(0)
// .id("customer_filter_router")
// )
// .build();
//
// }
// @Bean
// public TokenFilter tokenFilter(){
// return new TokenFilter();
// }
@Bean
public ElapsedGatewayFilterFactory elapsedGatewayFilterFactory() {
return new ElapsedGatewayFilterFactory();
}
}

View File

@ -0,0 +1,42 @@
package gateway;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.cloud.gateway.filter.GatewayFilter;
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.core.Ordered;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;
/**
* Email miles02@163.com
*
* @author fangzhipeng
* create 2018-11-16
**/
public class ElapsedFilter implements GatewayFilter, Ordered {
private static final Log log = LogFactory.getLog(GatewayFilter.class);
private static final String ELAPSED_TIME_BEGIN = "elapsedTimeBegin";
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
exchange.getAttributes().put(ELAPSED_TIME_BEGIN, System.currentTimeMillis());
return chain.filter(exchange).then(
Mono.fromRunnable(() -> {
Long startTime = exchange.getAttribute(ELAPSED_TIME_BEGIN);
if (startTime != null) {
log.info(exchange.getRequest().getURI().getRawPath() + ": " + (System.currentTimeMillis() - startTime) + "ms");
}
})
);
}
@Override
public int getOrder() {
return 0;
}
}

View File

@ -0,0 +1,74 @@
package gateway;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.cloud.gateway.filter.GatewayFilter;
import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory;
import reactor.core.publisher.Mono;
import java.util.Arrays;
import java.util.List;
/**
* Email miles02@163.com
*
* @author fangzhipeng
* create 2018-11-16
**/
public class ElapsedGatewayFilterFactory extends AbstractGatewayFilterFactory<ElapsedGatewayFilterFactory.Config> {
private static final Log log = LogFactory.getLog(GatewayFilter.class);
private static final String ELAPSED_TIME_BEGIN = "elapsedTimeBegin";
private static final String KEY = "withParams";
@Override
public List<String> shortcutFieldOrder() {
return Arrays.asList(KEY);
}
public ElapsedGatewayFilterFactory() {
super(Config.class);
}
@Override
public GatewayFilter apply(Config config) {
return (exchange, chain) -> {
exchange.getAttributes().put(ELAPSED_TIME_BEGIN, System.currentTimeMillis());
return chain.filter(exchange).then(
Mono.fromRunnable(() -> {
Long startTime = exchange.getAttribute(ELAPSED_TIME_BEGIN);
if (startTime != null) {
StringBuilder sb = new StringBuilder(exchange.getRequest().getURI().getRawPath())
.append(": ")
.append(System.currentTimeMillis() - startTime)
.append("ms");
if (config.isWithParams()) {
sb.append(" params:").append(exchange.getRequest().getQueryParams());
}
log.info(sb.toString());
}
})
);
};
}
public static class Config {
private boolean withParams;
public boolean isWithParams() {
return withParams;
}
public void setWithParams(boolean withParams) {
this.withParams = withParams;
}
}
}

View File

@ -0,0 +1,39 @@
package gateway;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.core.Ordered;
import org.springframework.http.HttpStatus;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;
/**
* Email miles02@163.com
*
* @author fangzhipeng
* create 2018-11-16
**/
public class TokenFilter implements GlobalFilter, Ordered {
Logger logger=LoggerFactory.getLogger( TokenFilter.class );
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
String token = exchange.getRequest().getQueryParams().getFirst("token");
if (token == null || token.isEmpty()) {
logger.info( "token is empty..." );
exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);
return exchange.getResponse().setComplete();
}
return chain.filter(exchange);
}
@Override
public int getOrder() {
return -100;
}
}

View File

@ -2,17 +2,57 @@ server:
port: 8081
spring:
profiles:
active: after_route
active: add_request_header_route
---
spring:
cloud:
gateway:
routes:
- id: after_route
- id: add_request_header_route
uri: http://httpbin.org:80/get
filters:
- AddRequestHeader=X-Request-Foo, Bar
predicates:
- After=2017-01-20T17:42:47.789-07:00[America/Denver]
profiles: after_route
profiles: add_request_header_route
---
spring:
cloud:
gateway:
routes:
- id: add_response_header_route
uri: http://httpbin.org:80/get
filters:
- AddResponseHeader=X-Response-Foo, Bar
predicates:
- After=2017-01-20T17:42:47.789-07:00[America/Denver]
profiles: add_response_header_route
---
spring:
cloud:
gateway:
routes:
- id: rewritepath_route
uri: https://blog.csdn.net
predicates:
- Path=/foo/**
filters:
- RewritePath=/foo/(?<segment>.*), /$\{segment}
profiles: rewritepath_route
---
spring:
cloud:
gateway:
routes:
- id: elapse_route
uri: http://httpbin.org:80/get
filters:
- Elapsed=false
predicates:
- After=2017-01-20T17:42:47.789-07:00[America/Denver]
profiles: elapse_route

View File

@ -1,84 +0,0 @@
server:
port: 8081
spring:
profiles:
active: query_route
---
spring:
cloud:
gateway:
routes:
- id: after_route
uri: http://httpbin.org:80/get
predicates:
- After=2017-01-20T17:42:47.789-07:00[America/Denver]
profiles: after_route
---
spring:
cloud:
gateway:
routes:
- id: header_route
uri: http://httpbin.org:80/get
predicates:
- Header=X-Request-Id, \d+
profiles: header_route
---
spring:
cloud:
gateway:
routes:
- id: cookie_route
uri: http://httpbin.org:80/get
predicates:
- Cookie=name, forezp
profiles: cookie_route
---
spring:
cloud:
gateway:
routes:
- id: host_route
uri: http://httpbin.org:80/get
predicates:
- Host=**.fangzhipeng.com
profiles: host_route
---
spring:
cloud:
gateway:
routes:
- id: method_route
uri: http://httpbin.org:80/get
predicates:
- Method=GET
profiles: method_route
---
spring:
cloud:
gateway:
routes:
- id: path_route
uri: http://httpbin.org:80/get
predicates:
- Path=/foo/{segment}
profiles: path_route
---
spring:
cloud:
gateway:
routes:
- id: query_route
uri: http://httpbin.org:80/get
predicates:
- Query=foo, ba.
profiles: query_route

View File

@ -25,7 +25,7 @@
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/route/RouteRefreshListener.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="325">
<caret line="13" column="33" lean-forward="true" selection-start-line="13" selection-start-column="33" selection-end-line="13" selection-end-column="33" />
<caret line="13" column="33" selection-start-line="13" selection-start-column="33" selection-end-line="13" selection-end-column="33" />
</state>
</provider>
</entry>
@ -33,7 +33,7 @@
<file leaf-file-name="RouteDefinitionRouteLocator.java" pinned="false" current-in-tab="false">
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/route/RouteDefinitionRouteLocator.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="136">
<state relative-caret-position="3775">
<caret line="200" column="38" selection-start-line="200" selection-start-column="38" selection-end-line="200" selection-end-column="38" />
</state>
</provider>
@ -69,7 +69,7 @@
<file leaf-file-name="Route.java" pinned="false" current-in-tab="false">
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/route/Route.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-4615">
<state relative-caret-position="225">
<caret line="41" column="13" selection-start-line="41" selection-start-column="13" selection-end-line="41" selection-end-column="13" />
</state>
</provider>
@ -78,7 +78,7 @@
<file leaf-file-name="RouteDefinition.java" pinned="false" current-in-tab="false">
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/route/RouteDefinition.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-1215">
<state relative-caret-position="250">
<caret line="39" column="13" selection-start-line="39" selection-start-column="13" selection-end-line="39" selection-end-column="13" />
</state>
</provider>
@ -162,8 +162,8 @@
<foldersAlwaysOnTop value="true" />
</navigator>
<panes>
<pane id="AndroidView" />
<pane id="Scope" />
<pane id="PackagesPane" />
<pane id="ProjectPane">
<subPane>
<expand>
@ -179,7 +179,7 @@
<select />
</subPane>
</pane>
<pane id="PackagesPane" />
<pane id="AndroidView" />
</panes>
</component>
<component name="PropertiesComponent">
@ -270,43 +270,45 @@
<workItem from="1540967260477" duration="467000" />
<workItem from="1540967741090" duration="7776000" />
<workItem from="1541036782378" duration="5436000" />
<workItem from="1542335650307" duration="610000" />
</task>
<servers />
</component>
<component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="13679000" />
<option name="totallyTimeSpent" value="14289000" />
</component>
<component name="ToolWindowManager">
<frame x="-8" y="-8" width="1936" height="1176" extended-state="6" />
<editor active="true" />
<layout>
<window_info anchor="right" id="Palette" order="3" />
<window_info anchor="bottom" id="TODO" order="6" />
<window_info anchor="right" id="Palette&#9;" order="3" />
<window_info id="Image Layers" order="2" />
<window_info anchor="right" id="Capture Analysis" order="3" />
<window_info anchor="bottom" id="Event Log" order="7" side_tool="true" />
<window_info anchor="right" id="Maven Projects" order="3" weight="0.3299356" />
<window_info anchor="bottom" id="Database Changes" order="7" show_stripe_button="false" />
<window_info anchor="bottom" id="Run" order="2" weight="0.24556214" />
<window_info anchor="bottom" id="Version Control" order="7" show_stripe_button="false" />
<window_info anchor="bottom" id="Spring" order="8" />
<window_info anchor="bottom" id="Terminal" order="7" />
<window_info id="Capture Tool" order="2" />
<window_info id="Designer" order="2" />
<window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.2864807" />
<window_info anchor="right" id="Bean Validation" order="4" />
<window_info anchor="bottom" id="Docker" order="7" show_stripe_button="false" />
<window_info anchor="right" id="Database" order="3" />
<window_info id="Structure" order="1" side_tool="true" weight="0.25" />
<window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
<window_info id="UI Designer" order="2" />
<window_info anchor="bottom" id="Debug" order="3" weight="0.39940828" />
<window_info anchor="bottom" id="TODO" order="6" />
<window_info anchor="bottom" id="Messages" order="8" weight="0.32938856" />
<window_info anchor="right" id="Palette&#9;" order="3" />
<window_info id="Image Layers" order="2" />
<window_info anchor="right" id="Capture Analysis" order="3" />
<window_info anchor="bottom" id="Version Control" order="7" show_stripe_button="false" />
<window_info anchor="bottom" id="Run" order="2" weight="0.24556214" />
<window_info anchor="bottom" id="Spring" order="8" />
<window_info anchor="bottom" id="Terminal" order="7" />
<window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.28272533" />
<window_info anchor="right" id="Bean Validation" order="4" />
<window_info anchor="right" id="Theme Preview" order="3" />
<window_info anchor="bottom" id="Debug" order="3" weight="0.39940828" />
<window_info id="Favorites" order="2" side_tool="true" />
<window_info anchor="right" id="Gradle" order="3" />
<window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
<window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
<window_info anchor="bottom" id="Messages" order="8" weight="0.32938856" />
<window_info anchor="bottom" id="Message" order="0" />
<window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
<window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
@ -320,6 +322,13 @@
<option name="myLimit" value="2678400000" />
</component>
<component name="editorHistoryManager">
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/route/RouteRefreshListener.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="325">
<caret line="13" column="33" lean-forward="true" selection-start-line="13" selection-start-column="33" selection-end-line="13" selection-end-column="33" />
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/config/GatewayClassPathWarningAutoConfiguration.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="150">
@ -492,10 +501,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1392">
<caret line="99" column="8" selection-start-line="99" selection-start-column="8" selection-end-line="99" selection-end-column="8" />
<folding>
<element signature="e#3960#3961#0" expanded="true" />
<element signature="e#3994#3995#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
@ -562,21 +567,10 @@
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE.jar!/org/springframework/cloud/gateway/route/builder/RouteDslKt.class">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/route/builder/RouteLocatorBuilder.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="225">
<caret line="32" column="13" selection-start-line="32" selection-start-column="13" selection-end-line="32" selection-end-column="13" />
<folding>
<element signature="e#1348#1349#0" expanded="true" />
<element signature="e#1382#1383#0" expanded="true" />
<element signature="e#2644#2645#0" expanded="true" />
<element signature="e#2738#2739#0" expanded="true" />
<element signature="e#2850#2851#0" expanded="true" />
<element signature="e#2876#2877#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
@ -631,14 +625,14 @@
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/route/Route.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-4615">
<state relative-caret-position="225">
<caret line="41" column="13" selection-start-line="41" selection-start-column="13" selection-end-line="41" selection-end-column="13" />
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/route/RouteDefinition.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-1215">
<state relative-caret-position="250">
<caret line="39" column="13" selection-start-line="39" selection-start-column="13" selection-end-line="39" selection-end-column="13" />
</state>
</provider>
@ -659,7 +653,7 @@
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/route/RouteDefinitionRouteLocator.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="136">
<state relative-caret-position="3775">
<caret line="200" column="38" selection-start-line="200" selection-start-column="38" selection-end-line="200" selection-end-column="38" />
</state>
</provider>
@ -681,7 +675,7 @@
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/cloud/spring-cloud-gateway-core/2.0.1.RELEASE/spring-cloud-gateway-core-2.0.1.RELEASE-sources.jar!/org/springframework/cloud/gateway/route/RouteRefreshListener.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="325">
<caret line="13" column="33" lean-forward="true" selection-start-line="13" selection-start-column="33" selection-end-line="13" selection-end-column="33" />
<caret line="13" column="33" selection-start-line="13" selection-start-column="33" selection-end-line="13" selection-end-column="33" />
</state>
</provider>
</entry>