Back to project page android-memento.
The source code is released under:
Apache License
If you think the Android project android-memento listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
/* * android-memento-lib https://github.com/twofortyfouram/android-memento * Copyright 2014 two forty four a.m. LLC *//from ww w . jav a 2 s . co m * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing permissions and * limitations under the License. */ package com.twofortyfouram.memento.provider; import com.twofortyfouram.assertion.Assertions; import net.jcip.annotations.Immutable; import android.content.UriMatcher; import android.net.Uri; import android.support.annotation.NonNull; /** * Wraps Android's {@link UriMatcher} in an effectively immutable container class, making the * {@link UriMatcher} thread-safe. */ @Immutable public final class ImmutableUriMatcher { /* * The only real purpose of this class is to put the UriMatcher into a final field, thus safely * publishing it to other threads. This is necessary, because the AbstractSqliteContentProvider * lazily initializes its UriMatcher in onCreate(). Because UriMatcher is a mutable object, it * needs to be put into a final field to be safely published to all the different threads that * might interact with the ContentProvider. */ /** * {@link UriMatcher} wrapped by this class. */ @NonNull private final UriMatcher mUriMatcher; /** * @param matcher UriMatcher to be wrapped by this class. This object cannot be modified after * being passed to this constructor, as that would mutate the internal state of * {@link ImmutableUriMatcher} making it no longer effectively immutable (and * therefore * no longer thread-safe). */ public ImmutableUriMatcher(@NonNull final UriMatcher matcher) { Assertions.assertNotNull(matcher, "matcher"); //$NON-NLS-1$ mUriMatcher = matcher; } /** * Try to match against the path in {@code uri}. * * @param uri The uri whose path we will match against. * @return The code for the matched node * or -1 if there is no matched node. */ public int match(@NonNull final Uri uri) { Assertions.assertNotNull(uri, "uri"); //$NON-NLS-1$ return mUriMatcher.match(uri); } }