⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chordimplaccess.java

📁 Chord package into p2psim
💻 JAVA
字号:
/***************************************************************************
 *                                                                         *
 *                           ChordImplAccess.java                          *
 *                            -------------------                          *
 *   date                 : 13.12.2005                                     *
 *   copyright            : (C) 2004-2008 Distributed and                  *
 *                              Mobile Systems Group                       *
 *                              Lehrstuhl fuer Praktische Informatik       *
 *                              Universitaet Bamberg                       *
 *                              http://www.uni-bamberg.de/pi/              *
 *   email                : sven.kaffille@uni-bamberg.de                   *
 *                          karsten.loesing@uni-bamberg.de                 *
 *                                                                         *
 *                                                                         *
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 *   A copy of the license can be found in the license.txt file supplied   *
 *   with this software or at: http://www.gnu.org/copyleft/gpl.html        *
 *                                                                         *
 ***************************************************************************/
package de.uniba.wiai.lspi.chord.com.local;

import java.lang.reflect.Field;

import de.uniba.wiai.lspi.chord.com.Node;
import de.uniba.wiai.lspi.chord.service.impl.ChordImpl;
import de.uniba.wiai.lspi.chord.service.impl.NodeImpl;

/**
 * @author sven
 * @version 1.0.5
 * 
 */
public class ChordImplAccess {

	/**
	 * Private constructor, so that no instances of this can be created by other
	 * classes.
	 * 
	 */
	private ChordImplAccess() {
		/*
		 * Nothing to do here, as there are no instance variables.
		 */
	}

	/**
	 * @param n
	 * @return Reference to an instance of {@link ChordImpl}.
	 */
	@SuppressWarnings("null")
	public static ChordImpl fetchChordImplOfNode(Node n) {
		NodeImpl node = null;
		try {
			node = (NodeImpl) n;
		} catch (ClassCastException e) {
			handleException(e); 
		}
		Field chordImplField = null;
		try {
			chordImplField = node.getClass().getDeclaredField("impl");
		} catch (SecurityException e) {
			handleException(e); 
		} catch (NoSuchFieldException e) {
			handleException(e); 
		}
		chordImplField.setAccessible(true);
		ChordImpl impl = null;
		try {
			impl = (ChordImpl) chordImplField.get(node);
		} catch (IllegalArgumentException e) {
			handleException(e); 
		} catch (IllegalAccessException e) {
			handleException(e); 
		}
		return impl;
	}

	/**
	 * @param e
	 */
	private static void handleException(Exception e) {
		System.err.println("This should not happen! This indicates that "
				+ "the implementation " + "of service layer has changed. "
				+ "This code relies heavily on internal structure of service "
				+ "layer, as it was not possible to solve some problem "
				+ "with local communication by other means!");
		System.err.println("If this happens check if you can adapt this "
				+ "code our contact one of the developers!");
		e.printStackTrace();
		throw new RuntimeException(e);
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -