Changeset 22686 in osm for applications/editors/josm


Ignore:
Timestamp:
2010-08-19T00:44:22+02:00 (14 years ago)
Author:
bomm
Message:

bug #5348: use reflection to call RemoteControlPlugin

File:
1 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/wmsplugin/src/wmsplugin/WMSPlugin.java

    r22677 r22686  
    1515import java.io.InputStreamReader;
    1616import java.io.UnsupportedEncodingException;
     17import java.lang.reflect.InvocationTargetException;
     18import java.lang.reflect.Method;
    1719import java.util.ArrayList;
    1820import java.util.Collections;
     
    3941import org.openstreetmap.josm.plugins.PluginInformation;
    4042import org.openstreetmap.josm.plugins.PluginProxy;
    41 import org.openstreetmap.josm.plugins.remotecontrol.RemoteControlPlugin;
    4243
    4344import wmsplugin.io.WMSLayerExporter;
     
    6162
    6263        static boolean remoteControlAvailable = false;
     64        static String remoteControlVersion = null;
    6365
    6466        protected void initExporterAndImporter() {
     
    8688        private void initRemoteControl() {
    8789                final String remotecontrolName = "remotecontrol";
    88                 final String remotecontrolVersion = "22675";
     90                final String remotecontrolMinVersion = "22675";
    8991                for(PluginProxy pp: PluginHandler.pluginList)
    9092                {
     
    9294                        if(remotecontrolName.equals(info.name))
    9395                        {
    94                                 if(remotecontrolVersion.compareTo(info.version) <= 0)
     96                                if(remotecontrolMinVersion.compareTo(info.version) <= 0)
    9597                                {
    9698                                        remoteControlAvailable = true;
     99                                        remoteControlVersion = info.version;
    97100                                }
    98101                                else
    99102                                {
    100103                                        System.out.println("wmsplugin: remote control plugin version is " +
    101                                                         info.version + ", need " + remotecontrolVersion + " or newer");
     104                                                        info.version + ", need " + remotecontrolMinVersion + " or newer");
    102105                                }
    103106                                break;
     
    107110                if(remoteControlAvailable)
    108111                {
     112                        remoteControlAvailable = false;
    109113                        System.out.println("wmsplugin: initializing remote control");
    110                         RemoteControlPlugin plugin =
    111                                 (RemoteControlPlugin) PluginHandler.getPlugin(remotecontrolName);
    112                         plugin.addRequestHandler(WMSRemoteHandler.command, WMSRemoteHandler.class);
    113                 }
    114                 else
     114                        Plugin plugin =
     115                                (Plugin) PluginHandler.getPlugin(remotecontrolName);
     116                        try {
     117                                Method method = plugin.getClass().getMethod("addRequestHandler", String.class, Class.class);
     118                                method.invoke(plugin, WMSRemoteHandler.command, WMSRemoteHandler.class);
     119                                remoteControlAvailable = true;
     120                        } catch (SecurityException e) {
     121                                e.printStackTrace();
     122                        } catch (NoSuchMethodException e) {
     123                                e.printStackTrace();
     124                        } catch (IllegalArgumentException e) {
     125                                e.printStackTrace();
     126                        } catch (IllegalAccessException e) {
     127                                e.printStackTrace();
     128                        } catch (InvocationTargetException e) {
     129                                e.printStackTrace();
     130                        }
     131                }
     132                if(!remoteControlAvailable)
    115133                {
    116134                        System.out.println("wmsplugin: cannot use remote control");
Note: See TracChangeset for help on using the changeset viewer.