List of usage examples for java.util.concurrent.atomic AtomicReference get
public final V get()
From source file:de.codesourcery.jasm16.parser.InstructionNodeTest.java
public void testParseNestedImmediateExpression() throws Exception { final String source = "SET I, 4+5*3"; final ICompilationUnit unit = CompilationUnit.createInstance("string input", source); final IParseContext context = createParseContext(source); final ASTNode result = new InstructionNode().parse(context); assertFalse(getErrors(source, result), result.hasErrors()); assertEquals(InstructionNode.class, result.getClass()); final InstructionNode instruction = (InstructionNode) result; final AtomicReference<byte[]> objcode = new AtomicReference<byte[]>(); final IObjectCodeWriter writer = new IObjectCodeWriter() { @Override/* ww w .j a va2 s .com*/ public void close() throws IOException { } @Override public void writeObjectCode(byte[] data, int offset, int length) throws IOException { objcode.set(ArrayUtils.subarray(data, offset, offset + length)); } @Override public void writeObjectCode(byte[] data) throws IOException { writeObjectCode(data, 0, data.length); } @Override public void deleteOutput() throws IOException { // TODO Auto-generated method stub } @Override public Address getCurrentWriteOffset() { return Address.ZERO; } @Override public Address getFirstWriteOffset() { return Address.ZERO; } @Override public void advanceToWriteOffset(Address offset) throws IOException { throw new UnsupportedOperationException("Not implemented"); } }; final ICompilationContext compContext = createCompilationContext(unit); final OperandNode operand = instruction.getOperand(1); final TermNode oldExpression = (TermNode) operand.child(0); final TermNode newExpression = oldExpression.reduce(compContext); if (newExpression != oldExpression) { operand.setChild(0, newExpression); } instruction.symbolsResolved(compContext); instruction.writeObjectCode(writer, compContext); assertNotNull(objcode.get()); assertEquals(source, toSourceCode(result, source)); }
From source file:org.apache.bookkeeper.client.MetadataUpdateLoopTest.java
/** * Test that if we have two conflicting updates, only one of the loops will complete. * The other will throw an exception./*from ww w . j a v a 2 s . c o m*/ */ @Test public void testNewestValueCannotBeUsedAfterReadBack() throws Exception { try (BlockableMockLedgerManager lm = spy(new BlockableMockLedgerManager())) { lm.blockWrites(); long ledgerId = 1234L; BookieSocketAddress b0 = new BookieSocketAddress("0.0.0.0:3181"); BookieSocketAddress b1 = new BookieSocketAddress("0.0.0.1:3181"); LedgerMetadata initMeta = LedgerMetadataBuilder.create().withEnsembleSize(1) .withDigestType(DigestType.CRC32C).withPassword(new byte[0]).withWriteQuorumSize(1) .withAckQuorumSize(1).newEnsembleEntry(0L, Lists.newArrayList(b0)).build(); Versioned<LedgerMetadata> writtenMetadata = lm.createLedgerMetadata(ledgerId, initMeta).get(); AtomicReference<Versioned<LedgerMetadata>> reference = new AtomicReference<>(writtenMetadata); CompletableFuture<Versioned<LedgerMetadata>> loop1 = new MetadataUpdateLoop(lm, ledgerId, reference::get, (currentMetadata) -> !currentMetadata.isClosed(), (currentMetadata) -> { return LedgerMetadataBuilder.from(currentMetadata).withClosedState().withLastEntryId(10L) .withLength(100L).build(); }, reference::compareAndSet).run(); CompletableFuture<Versioned<LedgerMetadata>> loop2 = new MetadataUpdateLoop(lm, ledgerId, reference::get, (currentMetadata) -> { if (currentMetadata.isClosed()) { throw new BKException.BKLedgerClosedException(); } else { return currentMetadata.getEnsembleAt(0L).contains(b0); } }, (currentMetadata) -> { List<BookieSocketAddress> ensemble = Lists.newArrayList(currentMetadata.getEnsembleAt(0L)); ensemble.set(0, b1); return LedgerMetadataBuilder.from(currentMetadata).replaceEnsembleEntry(0L, ensemble) .build(); }, reference::compareAndSet).run(); lm.releaseWrites(); Versioned<LedgerMetadata> l1meta = loop1.get(); try { loop2.get(); Assert.fail("Update loop should have failed"); } catch (ExecutionException ee) { Assert.assertEquals(ee.getCause().getClass(), BKException.BKLedgerClosedException.class); } Assert.assertEquals(l1meta, reference.get()); Assert.assertEquals(l1meta.getValue().getEnsembleAt(0L).get(0), b0); Assert.assertTrue(l1meta.getValue().isClosed()); verify(lm, times(2)).writeLedgerMetadata(anyLong(), any(), any()); } }
From source file:de.hybris.platform.test.HJMPOptimisticConcurrencyPerformanceTest.java
private void doTestMissingUpdateProblem() throws JaloBusinessException, InterruptedException { final Media m = MediaManager.getInstance().createMedia("codeBefore"); try {// ww w . j a va2 s. c om m.setMime("mimeBefore"); m.setDescription("descriptionBefore"); final CyclicBarrier txStartJoinPoint = new CyclicBarrier(2); final AtomicReference<Throwable> tx1Error = new AtomicReference<Throwable>(); final AtomicReference<Throwable> tx2Error = new AtomicReference<Throwable>(); final Thread[] threads = createTxThreads(// new TxRunnable() { @Override public void run() throws Exception { txStartJoinPoint.await(10, TimeUnit.SECONDS); // wait for other tx to begin assertEquals("codeBefore", m.getCode()); txStartJoinPoint.await(10, TimeUnit.SECONDS); // wait for other tx to have read same version m.setMime("tx1Mime"); m.setCode("tx1Code"); } }, // new TxRunnable() { @Override public void run() throws Exception { txStartJoinPoint.await(10, TimeUnit.SECONDS); // wait for other tx assertEquals("codeBefore", m.getCode()); txStartJoinPoint.await(10, TimeUnit.SECONDS); // wait for other tx to have read same version m.setMime("tx2Mime"); m.setDescription("tx2Description"); } }, tx1Error, tx2Error); threads[0].start(); threads[1].start(); threads[0].join(50 * 1000); threads[1].join(50 * 1000); assertFalse(threads[0].isAlive()); assertFalse(threads[1].isAlive()); if (isConcurrentModificationCheckEnabled()) { assertEquals("missing update from tx1", "tx1Code", m.getCode()); assertEquals("missing update from tx1", "tx1Mime", m.getMime()); assertEquals("unexpected update from tx2", "descriptionBefore", m.getDescription()); assertNull("unexpected error from tx1", tx1Error.get()); assertNotNull("expected error from tx2", tx2Error.get()); } else { assertNull("unexpected error from tx1", tx1Error.get()); assertNull("unexpected error from tx2", tx2Error.get()); assertEquals("missing update from tx1", "tx1Code", m.getCode()); assertEquals("missing update from tx2", "tx2Description", m.getDescription()); assertEquals("missing update from tx2", "tx2Mime", m.getMime()); } } finally { m.remove(); } }
From source file:io.undertow.server.handlers.sse.ServerSentEventTestCase.java
@Test public void testProgressiveSSEWithCompression() throws IOException { final AtomicReference<ServerSentEventConnection> connectionReference = new AtomicReference<>(); DecompressingHttpClient client = new DecompressingHttpClient(new TestHttpClient()); try {/*from ww w .j a v a 2 s .c o m*/ DefaultServer.setRootHandler(new EncodingHandler(new ContentEncodingRepository() .addEncodingHandler("deflate", new DeflateEncodingProvider(), 50)) .setNext(new ServerSentEventHandler(new ServerSentEventConnectionCallback() { @Override public void connected(ServerSentEventConnection connection, String lastEventId) { connectionReference.set(connection); connection.send("msg 1", new ServerSentEventConnection.EventCallback() { @Override public void done(ServerSentEventConnection connection, String data, String event, String id) { } @Override public void failed(ServerSentEventConnection connection, String data, String event, String id, IOException e) { e.printStackTrace(); IoUtils.safeClose(connection); } }); } }))); HttpGet get = new HttpGet(DefaultServer.getDefaultServerURL() + "/"); HttpResponse result = client.execute(get); Assert.assertEquals(StatusCodes.OK, result.getStatusLine().getStatusCode()); InputStream stream = result.getEntity().getContent(); assertData(stream, "data:msg 1\n\n"); connectionReference.get().send("msg 2"); assertData(stream, "data:msg 2\n\n"); connectionReference.get().close(); } finally { client.getConnectionManager().shutdown(); } }
From source file:com.igormaznitsa.jhexed.swing.editor.ui.MainForm.java
@Override public HexLayer makeHexLayer(final String name, final String comment) { if (name == null) { throw new NullPointerException("Name must not be null"); }//from w w w . j a v a 2s .co m if (comment == null) { throw new NullPointerException("Comments must not be null"); } final AtomicReference<HexLayer> result = new AtomicReference<HexLayer>(); final Runnable run = new Runnable() { @Override public void run() { result.set(layers.addLayer(layers.makeNewLayerField(name, comment))); } }; if (SwingUtilities.isEventDispatchThread()) { run.run(); } else { try { SwingUtilities.invokeAndWait(run); } catch (Exception ex) { throw new RuntimeException(ex); } } return result.get(); }
From source file:com.microsoft.tfs.core.clients.versioncontrol.internal.WebServiceLayerLocalWorkspaces.java
@Override public GetOperation[] merge(final String workspaceName, final String workspaceOwner, final ItemSpec source, final ItemSpec target, final VersionSpec from, final VersionSpec to, final LockLevel lockLevel, final MergeFlags mergeFlags, final AtomicReference<Failure[]> failures, final AtomicReference<Conflict[]> conflicts, final String[] itemAttributeFilters, final String[] itemPropertyFilters, final AtomicReference<ChangePendedFlags> changePendedFlags) { final Workspace w = reconcileIfLocal(workspaceName, workspaceOwner); reconcileIfLocalVersionSpec(from, true); reconcileIfLocalVersionSpec(to, true); final WorkspaceLock lock = lockIfLocal(w); try {//from w w w . java 2s . c o m final GetOperation[] toReturn = super.merge(workspaceName, workspaceOwner, source, target, from, to, lockLevel, mergeFlags, failures, conflicts, itemAttributeFilters, itemPropertyFilters, changePendedFlags); syncWorkingFoldersIfNecessary(w, changePendedFlags.get()); syncPendingChangesIfLocal(w, toReturn, itemPropertyFilters); return toReturn; } finally { if (lock != null) { lock.close(); } } }
From source file:com.hardincoding.sonar.subsonic.service.SubsonicMusicService.java
private HttpResponse executeWithRetry(Context context, String url, String originalUrl, HttpParams requestParams, List<String> parameterNames, List<Object> parameterValues, List<Header> headers, ProgressListener progressListener, CancellableTask task) throws IOException { Log.i(TAG, "Using URL " + url); final AtomicReference<Boolean> cancelled = new AtomicReference<Boolean>(false); int attempts = 0; while (true) { attempts++;/*from w w w . ja v a 2s .c o m*/ HttpContext httpContext = new BasicHttpContext(); final HttpPost request = new HttpPost(url); if (task != null) { // Attempt to abort the HTTP request if the task is cancelled. task.setOnCancelListener(new CancellableTask.OnCancelListener() { @Override public void onCancel() { cancelled.set(true); request.abort(); } }); } if (parameterNames != null) { List<NameValuePair> params = new ArrayList<NameValuePair>(); for (int i = 0; i < parameterNames.size(); i++) { params.add( new BasicNameValuePair(parameterNames.get(i), String.valueOf(parameterValues.get(i)))); } request.setEntity(new UrlEncodedFormEntity(params, Util.UTF_8)); } if (requestParams != null) { request.setParams(requestParams); Log.d(TAG, "Socket read timeout: " + HttpConnectionParams.getSoTimeout(requestParams) + " ms."); } if (headers != null) { for (Header header : headers) { request.addHeader(header); } } try { HttpResponse response = mHttpClient.execute(request, httpContext); detectRedirect(originalUrl, context, httpContext); return response; } catch (IOException x) { request.abort(); if (attempts >= HTTP_REQUEST_MAX_ATTEMPTS || cancelled.get()) { throw x; } if (progressListener != null) { String msg = context.getResources().getString(R.string.music_service_retry, attempts, HTTP_REQUEST_MAX_ATTEMPTS - 1); progressListener.updateProgress(msg); } Log.w(TAG, "Got IOException (" + attempts + "), will retry", x); increaseTimeouts(requestParams); Util.sleepQuietly(2000L); } } }
From source file:com.microsoft.tfs.core.clients.versioncontrol.internal.WebServiceLayerLocalWorkspaces.java
@Override public Shelveset unshelve(final String shelvesetName, final String shelvesetOwner, final String workspaceName, final String workspaceOwner, final ItemSpec[] items, final String[] itemAttributeFilters, final String[] itemPropertyFilters, final String[] shelvesetPropertyFilters, final boolean merge, final AtomicReference<Failure[]> failures, final AtomicReference<GetOperation[]> getOperations, final AtomicReference<Conflict[]> conflicts, final AtomicReference<ChangePendedFlags> changePendedFlags) { final Workspace w = reconcileIfLocal(workspaceName, workspaceOwner); // Lock the workspace which will receive the pending changes final WorkspaceLock lock = lockIfLocal(w); try {// w w w .j a v a 2 s. com final Shelveset toReturn = super.unshelve(shelvesetName, shelvesetOwner, workspaceName, workspaceOwner, items, itemAttributeFilters, itemPropertyFilters, shelvesetPropertyFilters, merge, failures, getOperations, conflicts, changePendedFlags); syncWorkingFoldersIfNecessary(w, changePendedFlags.get()); syncPendingChangesIfLocal(w, getOperations.get(), itemPropertyFilters); return toReturn; } finally { if (lock != null) { lock.close(); } } }