1 /*
2  * File    : RPPluginConfig.java
3  * Created : 17-Feb-2004
4  * By      : parg
5  *
6  * Azureus - a Java Bittorrent client
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details ( see the LICENSE file ).
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software
20  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
21  */
22 
23 package org.gudy.azureus2.pluginsimpl.remote;
24 
25 import org.gudy.azureus2.plugins.config.PluginConfigSource;
26 
27 /**
28  * @author parg
29  *
30  */
31 
32 import java.io.File;
33 import java.util.List;
34 import java.util.Map;
35 import java.util.Properties;
36 
37 import org.gudy.azureus2.plugins.*;
38 import org.gudy.azureus2.plugins.config.ConfigParameter;
39 
40 public class
41 RPPluginConfig
42 	extends		RPObject
43 	implements 	PluginConfig
44 {
45 	protected transient PluginConfig		delegate;
46 	protected transient	Properties			property_cache;
47 
48 		// don't change these field names as they are visible on XML serialisation
49 
50 	public String[]		cached_property_names;
51 	public Object[]		cached_property_values;
52 
53 	public static PluginConfig
create( PluginConfig _delegate )54 	create(
55 		PluginConfig		_delegate )
56 	{
57 		RPPluginConfig	res =(RPPluginConfig)_lookupLocal( _delegate );
58 
59 		if ( res == null ){
60 
61 			res = new RPPluginConfig( _delegate );
62 		}
63 
64 		return( res );
65 	}
66 
67 	protected
RPPluginConfig( PluginConfig _delegate )68 	RPPluginConfig(
69 		PluginConfig		_delegate )
70 	{
71 		super( _delegate );
72 	}
73 
74 	protected void
_setDelegate( Object _delegate )75 	_setDelegate(
76 		Object		_delegate )
77 	{
78 		delegate = (PluginConfig)_delegate;
79 
80 		cached_property_names 	= new String[]{
81 				CORE_PARAM_INT_MAX_UPLOAD_SPEED_KBYTES_PER_SEC,
82 				CORE_PARAM_INT_MAX_UPLOAD_SPEED_SEEDING_KBYTES_PER_SEC,
83 				CORE_PARAM_INT_MAX_DOWNLOAD_SPEED_KBYTES_PER_SEC,
84 				CORE_PARAM_INT_MAX_CONNECTIONS_PER_TORRENT,
85 				CORE_PARAM_INT_MAX_CONNECTIONS_GLOBAL,
86 				CORE_PARAM_INT_MAX_DOWNLOADS,
87 				CORE_PARAM_INT_MAX_ACTIVE,
88 				CORE_PARAM_INT_MAX_ACTIVE_SEEDING,
89 				CORE_PARAM_INT_MAX_UPLOADS,
90 				CORE_PARAM_INT_MAX_UPLOADS_SEEDING
91 			};
92 
93 		cached_property_values 	= new Object[]{
94 				new Integer( delegate.getIntParameter( cached_property_names[0] )),
95 				new Integer( delegate.getIntParameter( cached_property_names[1] )),
96 				new Integer( delegate.getIntParameter( cached_property_names[2] )),
97 				new Integer( delegate.getIntParameter( cached_property_names[3] )),
98 				new Integer( delegate.getIntParameter( cached_property_names[4] )),
99 				new Integer( delegate.getIntParameter( cached_property_names[5] )),
100 				new Integer( delegate.getIntParameter( cached_property_names[6] )),
101 				new Integer( delegate.getIntParameter( cached_property_names[7] )),
102 				new Integer( delegate.getIntParameter( cached_property_names[8] )),
103 				new Integer( delegate.getIntParameter( cached_property_names[9] ))
104 		};
105 	}
106 
107 	public Object
_setLocal()108 	_setLocal()
109 
110 		throws RPException
111 	{
112 		return( _fixupLocal());
113 	}
114 
115 	public void
_setRemote( RPRequestDispatcher _dispatcher )116 	_setRemote(
117 		RPRequestDispatcher		_dispatcher )
118 	{
119 		super._setRemote( _dispatcher );
120 
121 		property_cache	= new Properties();
122 
123 		for (int i=0;i<cached_property_names.length;i++){
124 
125 			// System.out.println( "cache:" + cached_property_names[i] + "=" + cached_property_values[i] );
126 
127 			property_cache.put(cached_property_names[i],cached_property_values[i]);
128 		}
129 	}
130 
131 	public RPReply
_process( RPRequest request )132 	_process(
133 		RPRequest	request	)
134 	{
135 		String	method = request.getMethod();
136 
137 		Object[] params = (Object[])request.getParams();
138 
139 		if ( method.equals( "getPluginIntParameter[String,int]")){
140 
141 			return( new RPReply( new Integer( delegate.getPluginIntParameter((String)params[0],((Integer)params[1]).intValue()))));
142 
143 		}else if ( method.equals( "getPluginStringParameter[String,String]")){
144 
145 			return( new RPReply( delegate.getPluginStringParameter((String)params[0],(String)params[1])));
146 
147 		}else if ( method.equals( "setPluginParameter[String,int]")){
148 
149 			delegate.setPluginParameter((String)params[0],((Integer)params[1]).intValue());
150 
151 			return( null );
152 
153 		}else if ( 	method.equals( "getIntParameter[String,int]") ||
154 				 	method.equals( "getParameter[String,int]")){
155 
156 			return( new RPReply( new Integer( delegate.getIntParameter((String)params[0],((Integer)params[1]).intValue()))));
157 
158 		}else if ( method.equals( "setParameter[String,int]")){
159 
160 			delegate.setIntParameter((String)params[0],((Integer)params[1]).intValue());
161 
162 			return( null );
163 
164 		}else if ( method.equals( "save")){
165 
166 			try{
167 				delegate.save();
168 
169 				return( null );
170 
171 			}catch( PluginException e ){
172 
173 				return( new RPReply( e ));
174 			}
175 		}
176 
177 
178 		throw( new RPException( "Unknown method: " + method ));
179 	}
180 
181 	// ***************************************************
182 
183 	public boolean
isNewInstall()184 	isNewInstall()
185 	{
186 	  	notSupported();
187 
188 	  	return( false );
189 	}
190 
191 	public String
getPluginConfigKeyPrefix()192 	getPluginConfigKeyPrefix()
193 	{
194 	  	notSupported();
195 
196 	  	return(null);
197 	}
198 
getFloatParameter(String key)199     public float getFloatParameter(String key) {
200 	  	notSupported();
201 
202 	  	return(0);
203     }
204 
getIntParameter(String key)205     public int getIntParameter(String key)
206 	  {
207 	  	notSupported();
208 
209 	  	return(0);
210 	  }
211 
getIntParameter(String key, int default_value)212 	  public int getIntParameter(String key, int default_value)
213 	  {
214 		Integer	res = (Integer)property_cache.get( key );
215 
216 		if ( res == null ){
217 
218 			res = (Integer)_dispatcher.dispatch( new RPRequest( this, "getIntParameter[String,int]", new Object[]{key,new Integer(default_value)} )).getResponse();
219 		}
220 
221 		return( res.intValue());
222 	  }
223 
224 	  public void
setIntParameter( String key, int value )225 	  setIntParameter(
226 		String	key,
227 		int		value )
228 	  {
229 	  	property_cache.put( key, new Integer( value ));
230 
231 		_dispatcher.dispatch( new RPRequest( this, "setParameter[String,int]", new Object[]{key,new Integer(value)} )).getResponse();
232 	  }
233 
getStringParameter(String key)234 	  public String getStringParameter(String key)
235 	  {
236 	  	notSupported();
237 
238 	  	return(null);
239 	  }
240 
getStringParameter(String name, String _default )241 	  public String getStringParameter(String name, String _default )
242 	  {
243 	  	notSupported();
244 
245 	  	return(null);
246 	  }
247 
getBooleanParameter(String key)248 	  public boolean getBooleanParameter(String key)
249 	  {
250 	  	notSupported();
251 
252 	  	return(false);
253 	  }
254 
getBooleanParameter(String key, boolean _default )255 	  public boolean getBooleanParameter(String key, boolean _default )
256 	  {
257 	  	notSupported();
258 
259 	  	return( false );
260 	  }
261 
setBooleanParameter(String key, boolean value )262 	  public void setBooleanParameter(String key, boolean value )
263 	  {
264 	  	notSupported();
265 	  }
266 
getByteParameter(String name, byte[] _default )267 	  public byte[] getByteParameter(String name, byte[] _default )
268 	  {
269 	  	notSupported();
270 
271 	  	return( null );
272 	  }
273 
274 	  public List
getPluginListParameter( String key, List default_value )275 	  getPluginListParameter( String key, List	default_value )
276 	  {
277 		  	notSupported();
278 
279 		  	return( null );
280 	  }
281 
282 	  public void
setPluginListParameter( String key, List value )283 	  setPluginListParameter( String key, List	value )
284 	  {
285 		  notSupported();
286 	  }
287 
288 	  public Map
getPluginMapParameter( String key, Map default_value )289 	  getPluginMapParameter( String key, Map	default_value )
290 	  {
291 		  	notSupported();
292 
293 		  	return( null );
294 	  }
295 
296 	  public void
setPluginMapParameter( String key, Map value )297 	  setPluginMapParameter( String key, Map	value )
298 	  {
299 		  notSupported();
300 	  }
getPluginIntParameter(String key)301 	  public int getPluginIntParameter(String key)
302 	  {
303 	  	notSupported();
304 
305 	  	return(0);
306 	  }
307 
getPluginIntParameter(String key,int defaultValue)308 	  public int getPluginIntParameter(String key,int defaultValue)
309 	  {
310 		Integer	res = (Integer)_dispatcher.dispatch( new RPRequest( this, "getPluginIntParameter[String,int]", new Object[]{key,new Integer(defaultValue)} )).getResponse();
311 
312 		return( res.intValue());
313 	  }
314 
getPluginStringParameter(String key)315 	  public String getPluginStringParameter(String key)
316 	  {
317 	  	notSupported();
318 
319 	  	return(null);
320 	  }
321 
getPluginStringParameter(String key,String defaultValue)322 	  public String getPluginStringParameter(String key,String defaultValue)
323 	  {
324 		String	res = (String)_dispatcher.dispatch( new RPRequest( this, "getPluginStringParameter[String,String]", new Object[]{key,defaultValue} )).getResponse();
325 
326 		return( res );
327 	  }
328 
getPluginBooleanParameter(String key)329 	  public boolean getPluginBooleanParameter(String key)
330 	  {
331 	  	notSupported();
332 
333 	  	return(false);
334 	  }
335 
getPluginByteParameter(String key, byte[] defaultValue )336 	  public byte[] getPluginByteParameter(String key, byte[] defaultValue )
337 	  {
338 	  	notSupported();
339 
340 	  	return(null);
341 	  }
342 
getPluginBooleanParameter(String key,boolean defaultValue)343 	  public boolean getPluginBooleanParameter(String key,boolean defaultValue)
344 	  {
345 	  	notSupported();
346 
347 	  	return(false);
348 	  }
349 
setPluginParameter(String key,int value)350 	  public void setPluginParameter(String key,int value)
351 	  {
352 		_dispatcher.dispatch( new RPRequest( this, "setPluginParameter[String,int]", new Object[]{key,new Integer(value)} ));
353 	  }
354 
setPluginParameter(String key,int value,boolean global)355 	  public void setPluginParameter(String key,int value,boolean global)
356 	  {
357 		  notSupported();
358 	  }
359 
setPluginParameter(String key,String value)360 	  public void setPluginParameter(String key,String value)
361 	  {
362 
363 	  	notSupported();
364 	  }
365 
setPluginParameter(String key,boolean value)366 	  public void setPluginParameter(String key,boolean value)
367 	  {
368 	  	notSupported();
369 	  }
370 
setPluginParameter(String key,byte[] value)371 	  public void setPluginParameter(String key,byte[] value)
372 	  {
373 	  	notSupported();
374 	  }
375 
376 	  public ConfigParameter
getParameter( String key )377 	  getParameter(
378 		String		key )
379 	  {
380 	  	notSupported();
381 
382 	  	return( null );
383 	  }
384 
385 	  public ConfigParameter
getPluginParameter( String key )386 	  getPluginParameter(
387 	  		String		key )
388 	  {
389 	  	notSupported();
390 
391 	  	return( null );
392 	  }
393 
394 	  public boolean
getUnsafeBooleanParameter( String key, boolean default_value )395 	  getUnsafeBooleanParameter(
396 			  String		key,
397 			  boolean		default_value )
398 	  {
399 		  notSupported();
400 
401 		  return( false );
402 	  }
403 
404 	  public void
setUnsafeBooleanParameter( String key, boolean value )405 	  setUnsafeBooleanParameter(
406 			  String		key,
407 			  boolean		value )
408 	  {
409 		  notSupported();
410 	  }
411 
412 	  public int
getUnsafeIntParameter( String key, int default_value )413 	  getUnsafeIntParameter(
414 			  String		key,
415 			  int		default_value )
416 	  {
417 		  notSupported();
418 
419 		  return( 0 );
420 	  }
421 
422 	  public void
setUnsafeIntParameter( String key, int value )423 	  setUnsafeIntParameter(
424 			  String		key,
425 			  int		value )
426 	  {
427 		  notSupported();
428 	  }
429 
430 	  public long
getUnsafeLongParameter( String key, long default_value )431 	  getUnsafeLongParameter(
432 			  String		key,
433 			  long		default_value )
434 	  {
435 		  notSupported();
436 
437 		  return( 0 );
438 	  }
439 
440 	  public void
setUnsafeLongParameter( String key, long value )441 	  setUnsafeLongParameter(
442 			  String		key,
443 			  long		value )
444 	  {
445 		  notSupported();
446 	  }
447 
448 	  public float
getUnsafeFloatParameter( String key, float default_value )449 	  getUnsafeFloatParameter(
450 			  String		key,
451 			  float		default_value )
452 	  {
453 		  notSupported();
454 
455 		  return( 0 );
456 	  }
457 
458 	  public void
setUnsafeFloatParameter( String key, float value )459 	  setUnsafeFloatParameter(
460 			  String		key,
461 			  float		value )
462 	  {
463 		  notSupported();
464 	  }
465 
466 	  public String
getUnsafeStringParameter( String key, String default_value )467 	  getUnsafeStringParameter(
468 			  String		key,
469 			  String		default_value )
470 	  {
471 		  notSupported();
472 
473 		  return( null );
474 	  }
475 
476 	  public void
setUnsafeStringParameter( String key, String value )477 	  setUnsafeStringParameter(
478 			  String		key,
479 			  String		value )
480 	  {
481 		  notSupported();
482 	  }
483 
484 	  public Map
getUnsafeParameterList()485 	  getUnsafeParameterList()
486 	  {
487 		  notSupported();
488 
489 		  return( null );
490 	  }
491 
492 	  public void
save()493 	  save()
494 	  	throws PluginException
495 	  {
496 	  	try{
497 	  		_dispatcher.dispatch( new RPRequest( this, "save", null)).getResponse();
498 
499 		}catch( RPException e ){
500 
501 			Throwable cause = e.getCause();
502 
503 			if ( cause instanceof PluginException ){
504 
505 				throw((PluginException)cause);
506 			}
507 
508 			throw( e );
509 		}
510 	  }
511 
512 		public File
getPluginUserFile( String name )513 		getPluginUserFile(
514 			String	name )
515 		{
516 			notSupported();
517 
518 			return( null );
519 		}
520 
521 		public void
addListener( final PluginConfigListener l )522 		addListener(
523 			final PluginConfigListener	l )
524 		{
525 			notSupported();
526 		}
527 
528 		// @see org.gudy.azureus2.plugins.PluginConfig#setPluginConfigKeyPrefix(java.lang.String)
529 
setPluginConfigKeyPrefix(String _key)530 		public void setPluginConfigKeyPrefix(String _key) {
531 			// TODO Auto-generated method stub
532 
533 		}
534 
hasParameter(String x)535 		public boolean hasParameter(String x) {notSupported(); return false;}
hasPluginParameter(String x)536 		public boolean hasPluginParameter(String x) {notSupported(); return false;}
removePluginParameter(String x)537 		public boolean removePluginParameter(String x) {notSupported(); return false;}
removePluginColorParameter(String x)538 		public boolean removePluginColorParameter(String x) {notSupported(); return false;}
539 
getByteParameter(String key)540 		  public byte[] getByteParameter(String key) {notSupported(); return null;}
getFloatParameter(String key, float default_value)541 		  public float getFloatParameter(String key, float default_value) {notSupported(); return 0;}
getLongParameter(String key)542 		  public long getLongParameter(String key) {notSupported(); return 0;}
getLongParameter(String key, long default_value)543 		  public long getLongParameter(String key, long default_value) {notSupported(); return 0;}
setByteParameter(String key, byte[] value)544 		  public void setByteParameter(String key, byte[] value) {notSupported();}
setFloatParameter(String key, float value)545 		  public void setFloatParameter(String key, float value) {notSupported();}
setLongParameter(String key, long value)546 		  public void setLongParameter(String key, long value) {notSupported();}
setStringParameter(String key, String value)547 		  public void setStringParameter(String key, String value) {notSupported();}
getPluginByteParameter(String key)548 		  public byte[] getPluginByteParameter(String key) {notSupported(); return null;}
getPluginFloatParameter(String key)549 		  public float getPluginFloatParameter(String key) {notSupported(); return 0;}
getPluginFloatParameter(String key, float default_value)550 		  public float getPluginFloatParameter(String key, float default_value) {notSupported(); return 0;}
getPluginLongParameter(String key)551 		  public long getPluginLongParameter(String key) {notSupported(); return 0;}
getPluginLongParameter(String key, long default_value)552 		  public long getPluginLongParameter(String key, long default_value) {notSupported(); return 0;}
setPluginParameter(String key, float value)553 		  public void setPluginParameter(String key, float value) {notSupported();}
setPluginParameter(String key, long value)554 		  public void setPluginParameter(String key, long value) {notSupported();}
getUnsafeBooleanParameter(String key)555 		  public boolean getUnsafeBooleanParameter(String key) {notSupported(); return false;}
getUnsafeByteParameter(String key)556 		  public byte[] getUnsafeByteParameter(String key) {notSupported(); return null;}
getUnsafeByteParameter(String key, byte[] default_value)557 		  public byte[] getUnsafeByteParameter(String key, byte[] default_value) {notSupported(); return null;}
getUnsafeFloatParameter(String key)558 		  public float getUnsafeFloatParameter(String key) {notSupported(); return 0;}
getUnsafeIntParameter(String key)559 		  public int getUnsafeIntParameter(String key) {notSupported(); return 0;}
getUnsafeLongParameter(String key)560 		  public long getUnsafeLongParameter(String key) {notSupported(); return 0;}
getUnsafeStringParameter(String key)561 		  public String getUnsafeStringParameter(String key) {notSupported(); return null;}
setUnsafeByteParameter(String key, byte[] value)562 		  public void setUnsafeByteParameter(String key, byte[] value) {notSupported();}
563 
getCoreBooleanParameter(String key)564 		  public boolean getCoreBooleanParameter(String key) {notSupported(); return false;}
getCoreBooleanParameter(String key, boolean default_value)565 		  public boolean getCoreBooleanParameter(String key, boolean default_value) {notSupported(); return false;}
getCoreByteParameter(String key, byte[] default_value)566 		  public byte[] getCoreByteParameter(String key, byte[] default_value) {notSupported(); return null;}
getCoreByteParameter(String key)567 		  public byte[] getCoreByteParameter(String key) {notSupported(); return null;}
getCoreFloatParameter(String key)568 		  public float getCoreFloatParameter(String key) {notSupported(); return 0;}
getCoreFloatParameter(String key, float default_value)569 		  public float getCoreFloatParameter(String key, float default_value) {notSupported(); return 0;}
getCoreIntParameter(String key)570 		  public int getCoreIntParameter(String key) {notSupported(); return 0;}
getCoreIntParameter(String key, int default_value)571 		  public int getCoreIntParameter(String key, int default_value) {notSupported(); return 0;}
getCoreStringParameter(String key)572 		  public String getCoreStringParameter(String key) {notSupported(); return null;}
getCoreStringParameter(String key, String default_value)573 		  public String getCoreStringParameter(String key, String default_value) {notSupported(); return null;}
getCoreLongParameter(String key)574 		  public long getCoreLongParameter(String key) {notSupported(); return 0;}
getCoreLongParameter(String key, long default_value)575 		  public long getCoreLongParameter(String key, long default_value) {notSupported(); return 0;}
setCoreBooleanParameter(String key, boolean value)576 		  public void setCoreBooleanParameter(String key, boolean value) {notSupported();}
setCoreByteParameter(String key, byte[] value)577 		  public void setCoreByteParameter(String key, byte[] value) {notSupported();}
setCoreFloatParameter(String key, float value)578 		  public void setCoreFloatParameter(String key, float value) {notSupported();}
setCoreIntParameter(String key, int value)579 		  public void setCoreIntParameter(String key, int value) {notSupported();}
setCoreLongParameter(String key, long value)580 		  public void setCoreLongParameter(String key, long value) {notSupported();}
setCoreStringParameter(String key, String value)581 		  public void setCoreStringParameter(String key, String value) {notSupported();}
582 
getCoreColorParameter(String key)583 		  public int[] getCoreColorParameter(String key) {notSupported(); return null;}
getCoreColorParameter(String key, int[] default_value)584 		  public int[] getCoreColorParameter(String key, int[] default_value) {notSupported(); return null;}
setCoreColorParameter(String key, int[] value)585 		  public void setCoreColorParameter(String key, int[] value) {notSupported();}
setCoreColorParameter(String key, int[] value, boolean override)586 		  public void setCoreColorParameter(String key, int[] value, boolean override) {notSupported();}
getPluginColorParameter(String key)587 		  public int[] getPluginColorParameter(String key) {notSupported(); return null;}
getPluginColorParameter(String key, int[] default_value)588 		  public int[] getPluginColorParameter(String key, int[] default_value) {notSupported(); return null;}
getPluginColorParameter(String key, int[] default_value, boolean override)589 		  public int[] getPluginColorParameter(String key, int[] default_value, boolean override) {notSupported(); return null;}
setPluginColorParameter(String key, int[] value)590 		  public void setPluginColorParameter(String key, int[] value) {notSupported();}
setPluginColorParameter(String key, int[] value, boolean override)591 		  public void setPluginColorParameter(String key, int[] value, boolean override) {notSupported();}
getUnsafeColorParameter(String key)592 		  public int[] getUnsafeColorParameter(String key) {notSupported(); return null;}
getUnsafeColorParameter(String key, int[] default_value)593 		  public int[] getUnsafeColorParameter(String key, int[] default_value) {notSupported(); return null;}
setUnsafeColorParameter(String key, int[] default_value)594 		  public void setUnsafeColorParameter(String key, int[] default_value) {notSupported();}
setUnsafeColorParameter(String key, int[] default_value, boolean override)595 		  public void setUnsafeColorParameter(String key, int[] default_value, boolean override) {notSupported();}
getPluginConfigSource()596 		  public PluginConfigSource getPluginConfigSource() {notSupported(); return null;}
setPluginConfigSource(PluginConfigSource source)597 		  public void setPluginConfigSource(PluginConfigSource source) {notSupported();}
enableExternalConfigSource()598 		  public PluginConfigSource enableExternalConfigSource() {notSupported(); return null;}
599 
setPluginStringListParameter(String key, String[] value)600 		  public void setPluginStringListParameter(String key, String[] value)  {notSupported();}
getPluginStringListParameter(String key)601 		  public String[] getPluginStringListParameter(String key)  {notSupported(); return null;}
602 }
603