List of usage examples for java.util.concurrent.atomic AtomicReference AtomicReference
public AtomicReference()
From source file:Main.java
/** * Runs arbitrary code in the Event Dispatch Thread. * <p>//from ww w . j a v a2s .c o m * The first operation performed by this method is fetching the {@code Object} to return. If {@code supplier} is not {@code null}, its {@code get()} method will be called to fetch the {@code Object}. But if {@code supplier} is {@code null}, or it * produces a {@code null} "value" from its {@code get()} method, then {@code defaultObject}, which may also be {@code null}, will be used instead. * <p> * The second operation performed by this method is handling the {@code Object} to return. So if neither {@code consumer} nor the fetched {@code Object} are {@code null}, the fetched {@code Object} will be handed to {@code consumer}. * <p> * Returns the fetched {@code Object}, which may be {@code null}. * * @param <T> the type of the returned result * @param supplier the {@code Supplier}, which may be {@code null} * @param consumer the {@code Consumer}, which may be {@code null} * @param defaultObject the default {@code Object}, which may be {@code null} * @return the fetched {@code Object}, which may be {@code null} */ public static <T> T runInEDT(final Supplier<T> supplier, final Consumer<T> consumer, final T defaultObject) { final AtomicReference<T> atomicReference = new AtomicReference<>(); if (supplier != null) { runInEDT(() -> atomicReference.set(supplier.get())); } if (defaultObject != null) { atomicReference.compareAndSet(null, defaultObject); } if (atomicReference.get() != null && consumer != null) { runInEDT(() -> consumer.accept(atomicReference.get())); } return atomicReference.get(); }
From source file:io.pravega.controller.store.stream.ZKStreamMetadataStore.java
ZKStreamMetadataStore(CuratorFramework client, int bucketCount, Executor executor) { super(new ZKHostIndex(client, "/hostTxnIndex", executor), bucketCount); initialize();/*from ww w . j a v a 2s . c om*/ storeHelper = new ZKStoreHelper(client, executor); bucketCacheMap = new ConcurrentHashMap<>(); bucketOwnershipCacheRef = new AtomicReference<>(); }
From source file:org.zodiark.publisher.PublisherTest.java
@Test(enabled = false) public void createSessionTest() throws IOException, InterruptedException { final AtomicReference<PublisherResults> answer = new AtomicReference<>(); final ZodiarkClient publisherClient = new ZodiarkClient.Builder().path("http://127.0.0.1:" + port).build(); final CountDownLatch latch = new CountDownLatch(1); publisherClient.handler(new OnEnvelopHandler() { @Override/*w w w . j a va 2 s.c om*/ public boolean onEnvelop(Envelope e) throws IOException { answer.set(mapper.readValue(e.getMessage().getData(), PublisherResults.class)); latch.countDown(); return true; } }).open(); Envelope createSessionMessage = Envelope .newClientToServerRequest(new Message(new Path(DB_POST_PUBLISHER_SESSION_CREATE), mapper.writeValueAsString(new UserPassword("foo", "bar")))); createSessionMessage.setFrom(new From(ActorValue.PUBLISHER)); publisherClient.send(createSessionMessage); latch.await(); assertEquals("OK", answer.get().getResults()); }
From source file:guru.qas.martini.jmeter.config.MartiniSpringConfiguration.java
public MartiniSpringConfiguration() { super(); contextRef = new AtomicReference<>(); }
From source file:com.heliosdecompiler.helios.tasks.DecompileAndSaveTask.java
@Override public void run() { File file = FileChooserUtil.chooseSaveLocation(Settings.LAST_DIRECTORY.get().asString(), Collections.singletonList("zip")); if (file == null) return;// www . j av a 2 s . c o m if (file.exists()) { boolean delete = SWTUtil.promptForYesNo(Constants.REPO_NAME + " - Overwrite existing file", "The selected file already exists. Overwrite?"); if (!delete) { return; } } AtomicReference<Transformer> transformer = new AtomicReference<>(); Display display = Display.getDefault(); display.asyncExec(() -> { Shell shell = new Shell(Display.getDefault()); FillLayout layout = new FillLayout(); layout.type = SWT.VERTICAL; shell.setLayout(layout); Transformer.getAllTransformers(t -> { return t instanceof Decompiler || t instanceof Disassembler; }).forEach(t -> { Button button = new Button(shell, SWT.RADIO); button.setText(t.getName()); button.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { transformer.set(t); } }); }); Button ok = new Button(shell, SWT.NONE); ok.setText("OK"); ok.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { shell.close(); shell.dispose(); synchronized (transformer) { transformer.notify(); } } }); shell.pack(); SWTUtil.center(shell); shell.open(); }); synchronized (transformer) { try { transformer.wait(); } catch (InterruptedException e) { ExceptionHandler.handle(e); } } FileOutputStream fileOutputStream = null; ZipOutputStream zipOutputStream = null; try { file.createNewFile(); fileOutputStream = new FileOutputStream(file); zipOutputStream = new ZipOutputStream(fileOutputStream); Set<String> written = new HashSet<>(); for (Pair<String, String> pair : data) { LoadedFile loadedFile = Helios.getLoadedFile(pair.getValue0()); if (loadedFile != null) { String innerName = pair.getValue1(); byte[] bytes = loadedFile.getAllData().get(innerName); if (bytes != null) { if (loadedFile.getClassNode(pair.getValue1()) != null) { StringBuilder buffer = new StringBuilder(); transformer.get().transform(loadedFile.getClassNode(pair.getValue1()), bytes, buffer); String name = innerName.substring(0, innerName.length() - 6) + ".java"; if (written.add(name)) { zipOutputStream.putNextEntry(new ZipEntry(name)); zipOutputStream.write(buffer.toString().getBytes(StandardCharsets.UTF_8)); zipOutputStream.closeEntry(); } else { SWTUtil.showMessage("Duplicate entry occured: " + name); } } else { if (written.add(pair.getValue1())) { zipOutputStream.putNextEntry(new ZipEntry(pair.getValue1())); zipOutputStream.write(loadedFile.getAllData().get(pair.getValue1())); zipOutputStream.closeEntry(); } else { SWTUtil.showMessage("Duplicate entry occured: " + pair.getValue1()); } } } } } } catch (Exception e) { ExceptionHandler.handle(e); } finally { IOUtils.closeQuietly(zipOutputStream); IOUtils.closeQuietly(fileOutputStream); } }
From source file:io.termd.core.telnet.TelnetHandlerTest.java
@Test public void testAcceptEcho() throws Exception { final AtomicReference<Boolean> serverValue = new AtomicReference<>(); EchoOptionHandler optionHandler = new EchoOptionHandler(false, false, false, true); testOptionValue(() -> new TelnetHandler() { @Override/*from w ww .j a v a 2 s. c o m*/ protected void onOpen(TelnetConnection conn) { conn.writeWillOption(Option.ECHO); } @Override protected void onEcho(boolean echo) { serverValue.set(echo); testComplete(); } }, optionHandler); assertEquals(true, serverValue.get()); assertEquals(true, optionHandler.getAcceptRemote()); }
From source file:org.keycloak.testsuite.crossdc.ConcurrentLoginCrossDCTest.java
@Test public void concurrentLoginWithRandomDcFailures() throws Throwable { log.info("*********************************************"); long start = System.currentTimeMillis(); AtomicReference<String> userSessionId = new AtomicReference<>(); LoginTask loginTask = null;//from ww w. j a v a2 s . co m try (CloseableHttpClient httpClient = HttpClientBuilder.create() .setRedirectStrategy(new LaxRedirectStrategy()).build()) { loginTask = new LoginTask(httpClient, userSessionId, LOGIN_TASK_DELAY_MS, LOGIN_TASK_RETRIES, false, Arrays.asList(createHttpClientContextForUser(httpClient, "test-user@localhost", "password"))); HttpUriRequest request = handleLogin( getPageContent(oauth.getLoginFormUrl(), httpClient, HttpClientContext.create()), "test-user@localhost", "password"); log.debug("Executing login request"); org.junit.Assert.assertTrue( parseAndCloseResponse(httpClient.execute(request)).contains("<title>AUTH_RESPONSE</title>")); run(DEFAULT_THREADS, DEFAULT_CLIENTS_COUNT, loginTask, new SwapDcAvailability()); int clientSessionsCount = testingClient.testing().getClientSessionsCountInUserSession("test", userSessionId.get()); org.junit.Assert.assertEquals(1 + DEFAULT_CLIENTS_COUNT, clientSessionsCount); } finally { long end = System.currentTimeMillis() - start; log.infof("Statistics: %s", loginTask == null ? "??" : loginTask.getHistogram()); log.info("concurrentLoginWithRandomDcFailures took " + (end / 1000) + "s"); log.info("*********************************************"); } }
From source file:interactivespaces.util.web.WebSocketTest.java
@Test public void testWebSocketCommunication() throws Exception { final String dataKey = "message"; final CountDownLatch clientOpenning = new CountDownLatch(1); final CountDownLatch clientClosing = new CountDownLatch(1); final AtomicBoolean onConnectCalledServer = new AtomicBoolean(false); final AtomicBoolean onCloseCalledServer = new AtomicBoolean(false); final AtomicReference<WebServerWebSocketHandler> serverHandler = new AtomicReference<WebServerWebSocketHandler>(); int port = 8082; String webSocketUriPrefix = "websockettest"; URI uri = new URI(String.format("ws://127.0.0.1:%d/%s", port, webSocketUriPrefix)); final List<Integer> serverReceivedList = Lists.newArrayList(); final List<Integer> clientReceivedList = Lists.newArrayList(); List<Integer> serverSentList = Lists.newArrayList(); List<Integer> clientSentList = Lists.newArrayList(); Random random = new Random(System.currentTimeMillis()); for (int i = 0; i < 100; i++) { clientSentList.add(random.nextInt()); serverSentList.add(random.nextInt()); }//w w w.j ava 2 s. co m NettyWebServer server = new NettyWebServer(threadPool, log); server.setServerName("test-server"); server.setPort(port); server.setWebSocketHandlerFactory(webSocketUriPrefix, new WebServerWebSocketHandlerFactory() { @Override public WebServerWebSocketHandler newWebSocketHandler(WebSocketConnection connection) { WebServerWebSocketHandler handler = new WebServerWebSocketHandlerSupport(connection) { @Override public void onReceive(Object data) { @SuppressWarnings("unchecked") Map<String, Object> d = (Map<String, Object>) data; serverReceivedList.add((Integer) d.get(dataKey)); } @Override public void onConnect() { onConnectCalledServer.set(true); } @Override public void onClose() { onCloseCalledServer.set(true); } }; serverHandler.set(handler); return handler; } }); server.startup(); Thread.sleep(2000); WebSocketHandler clientHandler = new WebSocketHandler() { @Override public void onConnect() { clientOpenning.countDown(); } @Override public void onClose() { clientClosing.countDown(); } @Override public void onReceive(Object data) { @SuppressWarnings("unchecked") Map<String, Object> d = (Map<String, Object>) data; clientReceivedList.add((Integer) d.get(dataKey)); } }; NettyWebSocketClient client = new NettyWebSocketClient(uri, clientHandler, threadPool, log); client.startup(); Assert.assertTrue(clientOpenning.await(10, TimeUnit.SECONDS)); Assert.assertTrue(client.isOpen()); Map<String, Object> data = Maps.newHashMap(); for (Integer i : clientSentList) { data.put("message", i); client.writeDataAsJson(data); } for (Integer i : serverSentList) { data.put("message", i); serverHandler.get().sendJson(data); } client.ping(); client.shutdown(); Assert.assertTrue(clientClosing.await(10, TimeUnit.SECONDS)); server.shutdown(); Assert.assertEquals(clientSentList, serverReceivedList); Assert.assertEquals(serverSentList, clientReceivedList); Assert.assertTrue(onConnectCalledServer.get()); Assert.assertTrue(onCloseCalledServer.get()); }
From source file:com.twitter.distributedlog.config.TestConfigurationSubscription.java
@Test(timeout = 60000) public void testReloadConfiguration() throws Exception { PropertiesWriter writer = new PropertiesWriter(); FileConfigurationBuilder builder = new PropertiesConfigurationBuilder(writer.getFile().toURI().toURL()); ConcurrentConstConfiguration conf = new ConcurrentConstConfiguration(new DistributedLogConfiguration()); DeterministicScheduler executorService = new DeterministicScheduler(); List<FileConfigurationBuilder> fileConfigBuilders = Lists.newArrayList(builder); ConfigurationSubscription confSub = new ConfigurationSubscription(conf, fileConfigBuilders, executorService, 100, TimeUnit.MILLISECONDS); final AtomicReference<ConcurrentBaseConfiguration> confHolder = new AtomicReference<>(); confSub.registerListener(new com.twitter.distributedlog.config.ConfigurationListener() { @Override// w w w. ja v a2 s . co m public void onReload(ConcurrentBaseConfiguration conf) { confHolder.set(conf); } }); assertEquals(null, conf.getProperty("prop1")); // add writer.setProperty("prop1", "1"); writer.save(); // ensure the file change reloading event can be triggered ensureConfigReloaded(); // reload the config confSub.reload(); assertNotNull(confHolder.get()); assertTrue(conf == confHolder.get()); assertEquals("1", conf.getProperty("prop1")); }
From source file:de.sainth.recipe.backend.db.repositories.UserRepository.java
public User save(User user) { AtomicReference<User> u = new AtomicReference<>(); create.transaction(configuration -> { Long id = using(configuration).select(USERS.ID).from(USERS).where(USERS.NAME.eq(user.getUsername())) .forUpdate().fetchOneInto(Long.class); UsersRecord record;/*from www.j a v a2 s. c o m*/ if (id == null) { String encrypted = ScryptPasswordEncoder.sEncode(user.getPassword()); record = using(configuration) .insertInto(USERS, USERS.NAME, USERS.EMAIL, USERS.PASSWORD, USERS.PERMISSION) .values(user.getUsername(), user.getEmail(), encrypted, user.getPermission()).returning() .fetchOne(); } else { record = using(configuration).update(USERS).set(USERS.EMAIL, user.getEmail()) .set(USERS.PERMISSION, user.getPermission()).where(USERS.ID.eq(id)).returning().fetchOne(); } u.set(new User(record.getId(), record.getName(), record.getEmail(), record.getPermission())); }); return u.get(); }