From 50bc5178648f65040408c64e78f17c25b888d29b Mon Sep 17 00:00:00 2001 From: neil <459208047@qq.com> Date: Thu, 31 Mar 2016 17:43:53 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=9E=E6=8E=A5=E8=BF=9C=E7=A8=8Benv?= =?UTF-8?q?=E6=8F=92=E4=BB=B6=E5=8A=A0=E8=BD=BD=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/ExtraDesignClassManager.java | 14 +++++++++++ .../fr/design/fun/DesignerEnvProcessor.java | 24 +++++++++++++++++++ .../impl/AbstractDesignerEnvProcessor.java | 18 ++++++++++++++ designer_base/src/com/fr/env/RemoteEnv.java | 14 +++++++++++ 4 files changed, 70 insertions(+) create mode 100644 designer_base/src/com/fr/design/fun/DesignerEnvProcessor.java create mode 100644 designer_base/src/com/fr/design/fun/impl/AbstractDesignerEnvProcessor.java diff --git a/designer_base/src/com/fr/design/ExtraDesignClassManager.java b/designer_base/src/com/fr/design/ExtraDesignClassManager.java index 9e557519d..72d5269b0 100644 --- a/designer_base/src/com/fr/design/ExtraDesignClassManager.java +++ b/designer_base/src/com/fr/design/ExtraDesignClassManager.java @@ -124,6 +124,18 @@ public class ExtraDesignClassManager extends XMLFileManager implements ExtraDesi private Set hyperlinkGroupProviders; + private DesignerEnvProcessor envProcessor; + + + public DesignerEnvProcessor getEnvProcessor() { + return envProcessor; + } + + public void setEnvProcessor(Level level, PluginSimplify simplify) throws Exception { + validAPILevel(level, DesignerEnvProcessor.CURRENT_LEVEL, simplify.getPluginName()); + envProcessor = (DesignerEnvProcessor) level; + } + public void addSupportDesignApps(Level level, PluginSimplify simplify) throws Exception { validAPILevel(level, App.CURRENT_LEVEL, simplify.getPluginName()); App provider = (App) level; @@ -783,6 +795,8 @@ public class ExtraDesignClassManager extends XMLFileManager implements ExtraDesi addHyperlinkProvider(impl, simplify); } else if (tagName.equals(App.MARK_STRING)) { addSupportDesignApps(impl, simplify); + } else if (tagName.equals(DesignerEnvProcessor.XML_TAG)) { + setEnvProcessor(impl, simplify); } } catch (PluginInvalidLevelException e) { PluginMessage.remindUpdate(e.getMessage()); diff --git a/designer_base/src/com/fr/design/fun/DesignerEnvProcessor.java b/designer_base/src/com/fr/design/fun/DesignerEnvProcessor.java new file mode 100644 index 000000000..c43c23f1e --- /dev/null +++ b/designer_base/src/com/fr/design/fun/DesignerEnvProcessor.java @@ -0,0 +1,24 @@ +package com.fr.design.fun; + +import com.fr.stable.fun.Level; + +/** + * 在env加载之前, 修改env参数的接口 + * 如: https [需要在加载之前设置系统证书]; + * cas [需要动态获取sessionid来修改path] + * + * Created by Administrator on 2016/3/31/0031. + */ +public interface DesignerEnvProcessor extends Level{ + + String XML_TAG = "DesignerEnvProcessor"; + int CURRENT_LEVEL = 1; + + /** + * 在远程env连接之前, 修改env的path, 以通过权限认证. 如果之前没有jsessionid, 那么就加上, 如果有了, 就更新成新的. + * 如: localhost:8080/WebReport/ReportServer? -> localhost:8080/WebReport/ReportServer?jsessionid=abcdegf; + * + * @return 修改后的jsessionid + */ + String changeEnvPathBeforeConnect(String userName, String password, String path); +} diff --git a/designer_base/src/com/fr/design/fun/impl/AbstractDesignerEnvProcessor.java b/designer_base/src/com/fr/design/fun/impl/AbstractDesignerEnvProcessor.java new file mode 100644 index 000000000..1c07a37db --- /dev/null +++ b/designer_base/src/com/fr/design/fun/impl/AbstractDesignerEnvProcessor.java @@ -0,0 +1,18 @@ +package com.fr.design.fun.impl; + +import com.fr.design.fun.DesignerEnvProcessor; + +/** + * Created by Administrator on 2016/3/31/0031. + */ +public abstract class AbstractDesignerEnvProcessor implements DesignerEnvProcessor { + + public int currentAPILevel() { + return CURRENT_LEVEL; + } + + public String changeEnvPathBeforeConnect(String userName, String password, String path){ + return path; + } + +} diff --git a/designer_base/src/com/fr/env/RemoteEnv.java b/designer_base/src/com/fr/env/RemoteEnv.java index 0e0c93460..b146e146f 100644 --- a/designer_base/src/com/fr/env/RemoteEnv.java +++ b/designer_base/src/com/fr/env/RemoteEnv.java @@ -11,8 +11,10 @@ import com.fr.data.impl.storeproc.StoreProcedure; import com.fr.dav.DavXMLUtils; import com.fr.dav.UserBaseEnv; import com.fr.design.DesignerEnvManager; +import com.fr.design.ExtraDesignClassManager; import com.fr.design.dialog.InformationWarnPane; import com.fr.design.file.HistoryTemplateListPane; +import com.fr.design.fun.DesignerEnvProcessor; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DesignerFrameFileDealerPane; import com.fr.design.mainframe.loghandler.DesignerLogHandler; @@ -26,6 +28,7 @@ import com.fr.json.JSONArray; import com.fr.json.JSONException; import com.fr.json.JSONObject; import com.fr.plugin.Plugin; +import com.fr.plugin.PluginLoader; import com.fr.stable.*; import com.fr.stable.file.XMLFileManagerProvider; import com.fr.stable.project.ProjectConstants; @@ -330,6 +333,8 @@ public class RemoteEnv implements Env { private boolean testConnection(boolean needMessage, boolean isRegisteServer, Component parentComponent) throws Exception { + extraChangeEnvPara(); + HashMap para = new HashMap(); para.put("op", "fr_remote_design"); para.put("cmd", "test_server_connection"); @@ -378,6 +383,15 @@ public class RemoteEnv implements Env { } } + private void extraChangeEnvPara() { + //鍦╡nv杩炴帴涔嬪墠, 鍔犺浇涓涓嬩笉渚濊禆env鐨勬彃浠. 鐪嬬湅闇涓嶉渶瑕佹敼鍙樺弬鏁. + PluginLoader.init(); + DesignerEnvProcessor envProcessor = ExtraDesignClassManager.getInstance().getEnvProcessor(); + if (envProcessor != null) { + this.path = envProcessor.changeEnvPathBeforeConnect(user, password, path); + } + } + private void setHttpsParas() { if (path.startsWith(HTTPS_PREFIX) && System.getProperty(CERT_KEY) == null) { DesignerEnvManager envManager = DesignerEnvManager.getEnvManager();