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..805a074b4 --- /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() { + //在env连接之前, 加载一下不依赖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(); diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/AbstractChartTypePane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/type/AbstractChartTypePane.java index 7493afd03..0afd0cd60 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/AbstractChartTypePane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/type/AbstractChartTypePane.java @@ -113,7 +113,7 @@ public abstract class AbstractChartTypePane extends FurtherBasicBeanPane{ } private List createImagePaneList(String[] iconPaths, String[] tipNames) { - List list = new ArrayList<>(); + List list = new ArrayList(); int iconLen = iconPaths.length; int tipLen = tipNames.length; for(int i = 0, len = Math.min(iconLen, tipLen); i < len; i++) {