@Override protected void writeInternal(ObjectDataOutput out) throws IOException { out.writeLong(masterTime); out.writeInt(memberInfos.size()); for (MemberInfo memberInfo : memberInfos) { memberInfo.writeData(out); } out.writeBoolean(sendResponse); }
protected String[] getTearDownMethodCodeLines(MemberInfo memberInfo) { String[] codeLines = new String[7]; codeLines[0] = "super.tearDown();"; codeLines[1] = "if(null != " + memberInfo.getFactoryMember() + ")"; codeLines[2] = "{"; codeLines[3] = " " + memberInfo.getFactoryMember() + ".resetMockContextFactory();"; codeLines[4] = "}"; codeLines[5] = memberInfo.getModuleMember() + " = null;"; codeLines[6] = memberInfo.getFactoryMember() + " = null;"; return codeLines; }
@Override protected void readInternal(ObjectDataInput in) throws IOException { masterTime = in.readLong(); int size = in.readInt(); memberInfos = new ArrayList<MemberInfo>(size); while (size-- > 0) { MemberInfo memberInfo = new MemberInfo(); memberInfo.readData(in); memberInfos.add(memberInfo); } sendResponse = in.readBoolean(); }
/** * External entry point for ScriptClassInfoCollector if invoked from the command line * * @param args argument vector, args contains a class for which to collect info * @throws IOException if there were problems parsing args or class */ public static void main(final String[] args) throws IOException { if (args.length != 1) { System.err.println("Usage: " + ScriptClassInfoCollector.class.getName() + " <class>"); System.exit(1); } args[0] = args[0].replace('.', '/'); final ScriptClassInfoCollector scic = new ScriptClassInfoCollector(); try (final BufferedInputStream bis = new BufferedInputStream(new FileInputStream(args[0] + ".class"))) { final ClassReader reader = new ClassReader(bis); reader.accept(scic, 0); } final ScriptClassInfo sci = scic.getScriptClassInfo(); final PrintStream out = System.out; if (sci != null) { out.println("script class: " + sci.getName()); out.println("==================================="); for (final MemberInfo memInfo : sci.getMembers()) { out.println("kind : " + memInfo.getKind()); out.println("name : " + memInfo.getName()); out.println("attributes: " + memInfo.getAttributes()); out.println("javaName: " + memInfo.getJavaName()); out.println("javaDesc: " + memInfo.getJavaDesc()); out.println("where: " + memInfo.getWhere()); out.println("====================================="); } } else { out.println(args[0] + " is not a @ScriptClass"); } }
void updateMembers(Collection<MemberInfo> lsMemberInfos) { checkServiceThread(); final Map<Address, MemberImpl> mapOldMembers = new HashMap<Address, MemberImpl>(); for (MemberImpl member : lsMembers) { mapOldMembers.put(member.getAddress(), member); } if (mapOldMembers.size() == lsMemberInfos.size()) { boolean same = true; for (MemberInfo memberInfo : lsMemberInfos) { MemberImpl member = mapOldMembers.get(memberInfo.getAddress()); if (member == null || !member.getUuid().equals(memberInfo.uuid)) { same = false; break; } } if (same) { logger.log(Level.FINEST, "No need to process member update..."); return; } } logger.log(Level.FINEST, "Updating Members"); lsMembers.clear(); dataMemberCount.reset(); mapMembers.clear(); memberMasterConfirmationTimes.clear(); for (MemberInfo memberInfo : lsMemberInfos) { MemberImpl member = mapOldMembers.get(memberInfo.address); if (member == null) { member = addMember(memberInfo.address, memberInfo.nodeType, memberInfo.uuid); } else { addMember(member); } member.didRead(); } if (!lsMembers.contains(thisMember)) { throw new RuntimeException("Member list doesn't contain local member!"); } heartBeater(); node.getClusterImpl().setMembers(lsMembers); node.setJoined(); logger.log(Level.INFO, this.toString()); }
public boolean shutdown(String server) throws RemoteException { if (server.equalsIgnoreCase(FORCE_SHUTDOWN)) { System.exit(0); return true; } else if (server.equalsIgnoreCase("middleware")) { // Shutdown the cars group. shutdownGroup(this.carGroup); // Shutdown the rooms group. shutdownGroup(this.roomGroup); // Shutdown the flights group. shutdownGroup(this.flightGroup); // Shutdown all the middleware servers except yourself. for (MemberInfo m : this.currentMembers) { if (!m.equals(this.myInfo)) { shutdownMember(m); } } // Shut yourself down. System.exit(0); return true; } else if (server.equalsIgnoreCase("cars")) { shutdownGroup(this.carGroup); return true; } else if (server.equalsIgnoreCase("rooms")) { shutdownGroup(this.roomGroup); return true; } else if (server.equalsIgnoreCase("flights")) { shutdownGroup(this.flightGroup); return true; } else { return false; } }
void getMemberInfo(AccessibleObject[] accessers, MemberType type) { for (AccessibleObject a : accessers) { if (!a.isAnnotationPresent(JsApi.class) && !a.isAnnotationPresent(JsConstructor.class)) continue; MemberInfo mInfo = new MemberInfo(); String name = ((Member) a).getName(); mInfo.javaName = name; mInfo.accesser = a; mInfo.isStatic = Modifier.isStatic(((Member) a).getModifiers()); if (a.isAnnotationPresent(JsApi.class)) { JsApi mAnno = a.getAnnotation(JsApi.class); // Get eventList from properties. if (type == MemberType.JS_PROPERTY && mAnno.isEventList()) { if (!((Field) a).getType().equals(String[].class)) { Log.w(TAG, "Invalid type for Supported JS event list" + name); continue; } try { // Event List should be a class property with "static". eventList = (String[]) (((Field) a).get(null)); } catch (IllegalArgumentException | IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } continue; } mInfo.type = type; mInfo.isWritable = mAnno.isWritable(); mInfo.isEntryPoint = mAnno.isEntryPoint(); mInfo.withPromise = mAnno.withPromise(); mInfo.jsName = name; mInfo.wrapArgs = mAnno.wrapArgs(); mInfo.wrapReturns = mAnno.wrapReturns(); } else if (a.isAnnotationPresent(JsConstructor.class)) { if (type != MemberType.JS_METHOD) { Log.w(TAG, "Invalid @JsConstructor on non-function member:" + name); continue; } JsConstructor cAnno = a.getAnnotation(JsConstructor.class); mInfo.type = MemberType.JS_CONSTRUCTOR; mInfo.isEntryPoint = cAnno.isEntryPoint(); mInfo.mainClass = cAnno.mainClass(); // Currently Constructor with promise is not supported. mInfo.withPromise = false; // TODO: more detail checking for main class. // Is there a way to throw compile error if main class missing? if (mInfo.mainClass == null) continue; mInfo.jsName = mInfo.mainClass.getSimpleName(); // Create relections for constructor main classes. bindingClasses.put(mInfo.mainClass.getName(), mInfo.jsName); constructorReflections.put(mInfo.jsName, new ReflectionHelper(mInfo.mainClass)); } if (mInfo.isEntryPoint) { // Always get the first entry point setting. if (entryPoint != null) { Log.w(TAG, "Entry point already exist, try to set another:" + mInfo.jsName); continue; } // Flag isEntryPoint only meaningful for methods, constructors and BindingObjects. if (type == MemberType.JS_PROPERTY && !(isBindingClass(((Field) (mInfo.accesser)).getType()))) { Log.w(TAG, "Invalid entry point setting on property:" + name); continue; } // The first entry point will be used. entryPoint = mInfo; } if (members.containsKey(mInfo.jsName)) { Log.w(TAG, "Conflict namespace - " + mInfo.jsName); continue; } members.put(mInfo.jsName, mInfo); } }