@Override public List<NameVersion> getModuleList() { List<NameVersion> result = Lists.newArrayList(); for (NetData.ModuleInfo moduleInfo : info.getModuleList()) { if (!moduleInfo.hasModuleId() || !moduleInfo.hasModuleVersion()) { logger.error("Received incomplete module info"); } else { Name id = new Name(moduleInfo.getModuleId()); Version version = new Version(moduleInfo.getModuleVersion()); result.add(new NameVersion(id, version)); } } return result; }
private void setUpMockModuleEnvironment() { ModuleManager moduleManager = mock(ModuleManager.class); ModuleRegistry moduleRegistry = new TableModuleRegistry(); Module module = mock(Module.class); when(module.isCodeModule()).thenReturn(true); when(module.getId()).thenReturn(new Name(TEST_MODULE)); when(module.getVersion()).thenReturn(new Version(0, 0, 1, true)); when(module.getMetadata()).thenReturn(new ModuleMetadata()); moduleRegistry.add(module); when(moduleManager.getRegistry()).thenReturn(moduleRegistry); ModuleEnvironment environment = mock(ModuleEnvironment.class); when(moduleManager.loadEnvironment(any(), anyBoolean())).thenReturn(environment); when(moduleManager.getEnvironment()).thenReturn(environment); registerBindButtonClasses = new ArrayList<>(); when(environment.getTypesAnnotatedWith(eq(RegisterBindButton.class))).thenReturn(registerBindButtonClasses); when(environment.getTypesAnnotatedWith(eq(RegisterBindButton.class), any())).thenReturn(registerBindButtonClasses); registerRealBindAxisClasses = new ArrayList<>(); when(environment.getTypesAnnotatedWith(eq(RegisterBindAxis.class))).thenReturn(registerRealBindAxisClasses); when(environment.getTypesAnnotatedWith(eq(RegisterBindAxis.class), any())).thenReturn(registerRealBindAxisClasses); when(environment.getModuleProviding(any())).thenReturn(new Name(TEST_MODULE)); context.put(ModuleManager.class, moduleManager); }
private Module buildSimpleModule(String id, String version) { ModuleMetadata metadata = new ModuleMetadata(); metadata.setId(new Name(id)); if (version != null) { metadata.setVersion(new Version(version)); } return new BaseModule(Collections.emptyList(), metadata) { @Override public ImmutableList<URL> getClasspaths() { return null; } @Override public boolean isOnClasspath() { return false; } @Override public boolean isCodeModule() { return false; } }; }
/** * Gets the server information and passes it to the client, while also checking if all required modules have been downloaded. * @param channelHandlerContext * @param message Passes the server information message to the function. */ private void receivedServerInfo(ChannelHandlerContext channelHandlerContext, NetData.ServerInfoMessage message) { logger.info("Received server info"); ((EngineTime) CoreRegistry.get(Time.class)).setGameTime(message.getTime()); this.server = new ServerImpl(networkSystem, channelHandlerContext.getChannel()); server.setServerInfo(message); // Request missing modules for (NetData.ModuleInfo info : message.getModuleList()) { if (null == moduleManager.getRegistry().getModule(new Name(info.getModuleId()), new Version(info.getModuleVersion()))) { missingModules.add(info.getModuleId().toLowerCase(Locale.ENGLISH)); } } if (missingModules.isEmpty()) { joinStatus.setCurrentActivity("Finalizing join"); sendJoin(channelHandlerContext); } else { joinStatus.setCurrentActivity("Requesting missing modules"); NetData.NetMessage.Builder builder = NetData.NetMessage.newBuilder(); for (String module : missingModules) { builder.addModuleRequest(NetData.ModuleRequest.newBuilder().setModuleId(module)); } channelHandlerContext.getChannel().write(builder.build()); } }