View Javadoc

1   package twcsckernel.serverKernel.plugins;
2   
3   import twcsckernel.projectbase.plugins.PluginDescriptor;
4   
5   /***
6    * Uchwyt plugina na serwerze zawierający komplet informacji tj.: deskryptor,
7    * ścieżki do plików JAR klienta i serwera oraz instancję PluginBuildera
8    * (o ile plugina pracuje w trybie zdalnymm czyli deskryptor.isRemote==true).
9    * 
10   * @author VMD Group
11   * 
12   */
13  public class PluginHandle {
14  
15  	/***
16  	 * Deskryptor plugina.
17  	 */
18  	public final PluginDescriptor descriptor;
19  
20  	private final String pluginPath;
21  
22  	private final String serverFilename;
23  
24  	private final String clientFilename;
25  	
26  	private final byte[] clientPluginData;
27  
28  	/***
29  	 * klasa serwerowej części plugina - jeśli plugin nie jest przeznaczony do
30  	 * pracy zdalnej, to wartością jest <code>null</code>.
31  	 */
32  	public final PluginBuilder serverPluginBuilder;
33  
34  	/***
35  	 * @return ścieżka do JARa serwerowej części plugina - jeśli plugin nie
36  	 *         posiada części serwerowej, to wartością jest <code>null</code>.
37  	 */
38  	public String getServerJarPath() {
39  		if (descriptor.isRemote)
40  			return pluginPath + "/" + serverFilename;
41  		else
42  			return null;
43  	}
44  
45  	/***
46  	 * @return ścieżka do JARa klienckiej części plugina.
47  	 */
48  	public String getClientJarPath() {
49  		return pluginPath + "/" + clientFilename;
50  	}
51  	
52  	/***
53  	 * Metoda zwraca binarną postać pliku JAR klienckiej części plugina.
54  	 * @return - binarna postać pliku JAR klienta
55  	 */
56  	public byte[] getClientPluginData() {
57  		/*
58  		 * Można dla bezpieczeństwa zrobić:
59  		 * return clientPluginData.clone();
60  		 * ale to mogłoby być zbyt pamięciożerne.
61  		 * */
62  		return clientPluginData;
63  	}
64  
65  	public PluginHandle(PluginBuilder serverPluginBuilder,
66  			PluginDescriptor descriptor, String pluginPath,
67  			String serverFilename, String clientFilename, byte[] clientPluginData) {
68  		this.clientFilename = clientFilename;
69  		this.descriptor = descriptor;
70  		this.pluginPath = pluginPath;
71  		this.serverFilename = serverFilename;
72  		this.serverPluginBuilder = serverPluginBuilder;
73  		this.clientPluginData=clientPluginData;
74  	}
75  
76  }