Example usage for java.lang Throwable Throwable

List of usage examples for java.lang Throwable Throwable

Introduction

In this page you can find the example usage for java.lang Throwable Throwable.

Prototype

public Throwable() 

Source Link

Document

Constructs a new throwable with null as its detail message.

Usage

From source file:com.codepunk.codepunklib.util.log.FormattingLogger.java

/**
 * Returns the first {@link StackTraceElement} in the stack trace found in <code>tr</code>
 * that was called from outside of this class.
 * @param tr The {@link Throwable} containing the stack trace.
 * @param index The number of levels in the stack trace that result from methods in this class.
 * @return The first significant {@link StackTraceElement}; that is, the first element
 * representing a call made outside of this class.
 *///w  w  w  .ja v a 2s  .com
private static StackTraceElement getSignificantStackTraceElement(Throwable tr, int index) {
    StackTraceElement element;
    try {
        if (tr == null) {
            element = (new Throwable()).getStackTrace()[index + 1];
        } else if (tr.getCause() == null) {
            element = tr.getStackTrace()[0];
        } else {
            element = tr.getCause().getStackTrace()[0];
        }
    } catch (Exception e) {
        element = null;
    }
    return element;
}

From source file:org.apache.lens.server.query.save.SavedQueryDao.java

/**
 * Deletes the saved query with the given id
 *
 * @param id/* w ww .j a  va 2s.  co  m*/
 * @throws LensException
 */
public void deleteSavedQueryByID(long id) throws LensException {
    try {
        int rowsDeleted = runner
                .update("delete from " + SAVED_QUERY_TABLE_NAME + " where " + ID_COL_NAME + " = " + id);
        if (rowsDeleted == 0) {
            throw new SavedQueryNotFound(id);
        } else if (rowsDeleted > 1) {
            throw new LensException("Warning! More than one record was deleted", new Throwable());
        }
    } catch (SQLException e) {
        throw new LensException("Delete query failed", e);
    }
}

From source file:com.momock.util.Logger.java

static String getLog(String level, String msg) {
    Throwable t = new Throwable();
    StackTraceElement trace = t.getStackTrace()[2];
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS", Locale.ENGLISH);
    if (remoteLogger != null) {
        remoteLogger.log(level, msg, trace.getFileName() + "(" + trace.getLineNumber() + ")");
    }//from  w  w w  .  j a v  a 2  s  . c om
    return "[" + level + "] " + sdf.format(new Date()) + " in " + trace.getFileName() + "("
            + trace.getLineNumber() + ") >" + msg;
}

From source file:com.android.emailcommon.provider.EmailContent.java

private static void warnIfUiThread() {
    if (Looper.getMainLooper().getThread() == Thread.currentThread()) {
        LogUtils.w(Logging.LOG_TAG, new Throwable(), "Method called on the UI thread");
    }/* w  w w.j a va  2  s .  com*/
}

From source file:org.apache.ranger.biz.RangerBizUtil.java

public String getDisplayNameForClassName(XXDBBase obj) {
    String classTypeDisplayName = RangerConstants.getLabelFor_ClassTypes(obj.getMyClassType());
    if (classTypeDisplayName == null) {
        logger.error("Error get name for class type. obj=" + obj.toString(), new Throwable());
    }/*from   w w w  .  j a  v  a2s . c  om*/
    return classTypeDisplayName;
}

From source file:org.apache.ranger.common.RangerSearchUtil.java

public SearchFilter extractCommonCriteriasForFilter(HttpServletRequest request, SearchFilter ret,
        List<SortField> sortFields) {
    int startIndex = restErrorUtil.parseInt(request.getParameter(SearchFilter.START_INDEX), 0,
            "Invalid value for parameter startIndex", MessageEnums.INVALID_INPUT_DATA, null,
            SearchFilter.START_INDEX);//from w w w  .  j  a  v  a  2 s.c  o  m
    startIndex = startIndex < 0 ? 0 : startIndex;
    ret.setStartIndex(startIndex);

    int pageSize = restErrorUtil.parseInt(request.getParameter(SearchFilter.PAGE_SIZE),
            configUtil.getDefaultMaxRows(), "Invalid value for parameter pageSize",
            MessageEnums.INVALID_INPUT_DATA, null, SearchFilter.PAGE_SIZE);
    ret.setMaxRows(validatePageSize(pageSize));

    ret.setGetCount(restErrorUtil.parseBoolean(request.getParameter("getCount"), true));
    String sortBy = restErrorUtil.validateString(request.getParameter(SearchFilter.SORT_BY),
            StringUtil.VALIDATION_ALPHA, "Invalid value for parameter sortBy", MessageEnums.INVALID_INPUT_DATA,
            null, SearchFilter.SORT_BY);

    boolean sortSet = false;
    if (!StringUtils.isEmpty(sortBy)) {
        for (SortField sortField : sortFields) {
            if (sortField.getParamName().equalsIgnoreCase(sortBy)) {
                ret.setSortBy(sortField.getParamName());
                String sortType = restErrorUtil.validateString(request.getParameter("sortType"),
                        StringUtil.VALIDATION_ALPHA, "Invalid value for parameter sortType",
                        MessageEnums.INVALID_INPUT_DATA, null, "sortType");
                ret.setSortType(sortType);
                sortSet = true;
                break;
            }
        }
    }

    if (!sortSet && !StringUtils.isEmpty(sortBy)) {
        logger.info("Invalid or unsupported sortBy field passed. sortBy=" + sortBy, new Throwable());
    }

    if (ret.getParams() == null) {
        ret.setParams(new HashMap<String, String>());
    }
    return ret;
}

From source file:com.l2jfree.L2Config.java

private static StackTraceElement getCaller() {
    StackTraceElement[] stack = new Throwable().getStackTrace();

    for (int i = stack.length - 1; i >= 0; i--) {
        if (stack[i].getClassName().startsWith("java.io.")
                || stack[i].getMethodName().equals("printStackTrace"))
            return stack[L2Math.limit(0, i + 1, stack.length - 1)];

        //if (stack[i].getMethodName().equals("dispatchUncaughtException"))
        //   break;
    }/*  w  w  w  .j ava 2s . c om*/

    return null;
}

From source file:mobisocial.musubi.service.AddressBookUpdateHandler.java

@Override
public void onChange(boolean selfChange) {
    final DatabaseManager dbManager = new DatabaseManager(mContext);
    if (!dbManager.getIdentitiesManager().hasConnectedAccounts()) {
        Log.w(TAG, "no connected accounts, skipping friend import");
        return;/*w w  w .ja  v  a 2s .co  m*/
    }

    //a new meta contact appears (and the previous ones disappear) if the user merges
    //or if a new entry is added, we can detect the ones that have changed by
    //this condition
    long highestContactIdAlreadySeen = dbManager.getContactDataVersionManager().getMaxContactIdSeen();
    //a new data item corresponds with a new contact, but its possible
    //that a users just adds a new contact method to an existing contact
    //and we need to detect that
    long highestDataIdAlreadySeen = dbManager.getContactDataVersionManager().getMaxDataIdSeen();

    // BJD -- this didn't end up being faster once all import features were added.
    /*if (highestContactIdAlreadySeen == -1) {
       importFullAddressBook(mContext);
       return;
    }*/
    long now = System.currentTimeMillis();
    if (mLastRun + ONCE_PER_PERIOD > now) {
        //wake up when the period expires
        if (!mScheduled) {
            new Handler(mThread.getLooper()).postDelayed(new Runnable() {
                @Override
                public void run() {
                    mScheduled = false;
                    dispatchChange(false);
                }
            }, ONCE_PER_PERIOD - (now - mLastRun) + 1);
        }
        mScheduled = true;
        //skip this update
        return;
    }
    Log.i(TAG, "waking up to handle contact changes...");
    boolean identityAdded = false, profileDataChanged = false;
    Date start = new Date();

    assert (SYNC_EMAIL);
    String account_type_selection = getAccountSelectionString();

    Cursor c = mContext.getContentResolver().query(
            ContactsContract.Data.CONTENT_URI, new String[] { ContactsContract.Data._ID,
                    ContactsContract.Data.DATA_VERSION, ContactsContract.Data.CONTACT_ID },
            "(" + ContactsContract.Data.DATA_VERSION + ">0 OR " + //maybe updated
                    ContactsContract.Data.CONTACT_ID + ">? OR " + //definitely new or merged
                    ContactsContract.Data._ID + ">? " + //definitely added a data item
                    ") AND (" + ContactsContract.RawContacts.ACCOUNT_TYPE + "<>'" + mAccountType + "'"
                    + ") AND (" + NAME_OR_OTHER_SELECTION + account_type_selection + ")", // All known contacts.
            new String[] { String.valueOf(highestContactIdAlreadySeen),
                    String.valueOf(highestDataIdAlreadySeen) },
            null);

    if (c == null) {
        Log.e(TAG, "no valid cursor", new Throwable());
        mContext.getContentResolver().notifyChange(MusubiService.ADDRESS_BOOK_SCANNED, this);
        return;
    }

    HashMap<Pair<String, String>, MMyAccount> account_mapping = new HashMap<Pair<String, String>, MMyAccount>();
    int max_changes = c.getCount();
    TLongArrayList raw_data_ids = new TLongArrayList(max_changes);
    TLongArrayList versions = new TLongArrayList(max_changes);
    long new_max_data_id = highestDataIdAlreadySeen;
    long new_max_contact_id = highestContactIdAlreadySeen;
    TLongHashSet potentially_changed = new TLongHashSet();
    try {
        //the cursor points to a list of raw contact data items that may have changed
        //the items will include a type specific field that we are interested in updating
        //it is possible that multiple data item entries mention the same identifier
        //so we build a list of contacts to update and then perform synchronization
        //by refreshing given that we know the top level contact id.
        if (DBG)
            Log.d(TAG, "Scanning " + c.getCount() + " contacts...");
        while (c.moveToNext()) {
            if (DBG)
                Log.v(TAG, "check for updates of contact " + c.getLong(0));

            long raw_data_id = c.getLong(0);
            long version = c.getLong(1);
            long contact_id = c.getLong(2);

            //if the contact was split or merged, then we get a higher contact id
            //so if we have a higher id, data version doesnt really matter
            if (contact_id <= highestContactIdAlreadySeen) {
                //the data associated with this contact may not be dirty
                //we just can't do the join against our table because thise
                //api is implmented over the content provider
                if (dbManager.getContactDataVersionManager().getVersion(raw_data_id) == version)
                    continue;
            } else {
                new_max_contact_id = Math.max(new_max_contact_id, contact_id);
            }
            raw_data_ids.add(raw_data_id);
            versions.add(version);
            potentially_changed.add(contact_id);
            new_max_data_id = Math.max(new_max_data_id, raw_data_id);
        }
        if (DBG)
            Log.d(TAG, "Finished iterating over " + c.getCount() + " contacts for " + potentially_changed.size()
                    + " candidates.");
    } finally {
        c.close();
    }
    if (potentially_changed.size() == 0) {
        Log.w(TAG,
                "possible bug, woke up to update contacts, but no change was detected; there are extra wakes so it could be ok");
    }

    final SQLiteDatabase db = dbManager.getDatabase();

    Pattern emailPattern = getEmailPattern();
    Pattern numberPattern = getNumberPattern();
    //slice it up so we don't use too much system resource on keeping a lot of state in memory
    int total = potentially_changed.size();
    sAddressBookTotal = total;
    sAddressBookPosition = 0;

    final TLongArrayList slice_of_changed = new TLongArrayList(BATCH_SIZE);
    final StringBuilder to_fetch = new StringBuilder();
    final HashMap<Pair<String, String>, TLongHashSet> ids_for_account = new HashMap<Pair<String, String>, TLongHashSet>();
    final TLongObjectHashMap<String> names = new TLongObjectHashMap<String>();

    TLongIterator it = potentially_changed.iterator();
    for (int i = 0; i < total && it.hasNext();) {
        sAddressBookPosition = i;

        if (BootstrapActivity.isBootstrapped()) {
            try {
                Thread.sleep(mSleepTime * SLEEP_SCALE);
            } catch (InterruptedException e) {
            }
        }

        slice_of_changed.clear();
        ids_for_account.clear();
        names.clear();

        int max = i + BATCH_SIZE;
        for (; i < max && it.hasNext(); ++i) {
            slice_of_changed.add(it.next());
        }

        if (DBG)
            Log.v(TAG, "looking up names ");
        to_fetch.setLength(0);
        to_fetch.append(ContactsContract.Contacts._ID + " IN ");
        SQLClauseHelper.appendArray(to_fetch, slice_of_changed.iterator());
        //lookup the fields we care about from a user profile perspective
        c = mContext.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,
                new String[] { ContactsContract.Contacts._ID, ContactsContract.Contacts.DISPLAY_NAME, },
                to_fetch.toString(), null, null);
        try {
            while (c.moveToNext()) {
                long id = c.getLong(0);
                String name = c.getString(1);
                if (name == null)
                    continue;
                //reject names that are just the email address or are just a number 
                //the default for android is just to propagate this as the name
                //if there is no name
                if (emailPattern.matcher(name).matches() || numberPattern.matcher(name).matches())
                    continue;
                names.put(id, name);
            }
        } finally {
            c.close();
        }

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
            db.beginTransactionNonExclusive();
        } else {
            db.beginTransaction();
        }

        long before = SystemClock.elapsedRealtime();
        SliceUpdater updater = new SliceUpdater(dbManager, slice_of_changed, ids_for_account, names,
                account_type_selection);
        long after = SystemClock.elapsedRealtime();
        mSleepTime = (mSleepTime + after - before) / 2;
        slice_of_changed.forEach(updater);
        profileDataChanged |= updater.profileDataChanged;
        identityAdded |= updater.identityAdded;
        db.setTransactionSuccessful();
        db.endTransaction();

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
            db.beginTransactionNonExclusive();
        } else {
            db.beginTransaction();
        }
        //add all detected members to account feed
        for (Entry<Pair<String, String>, TLongHashSet> e : ids_for_account.entrySet()) {
            Pair<String, String> k = e.getKey();
            TLongHashSet v = e.getValue();
            MMyAccount cached_account = account_mapping.get(k);
            if (cached_account == null) {
                cached_account = lookupOrCreateAccount(dbManager, k.getValue0(), k.getValue1());
                prepareAccountWhitelistFeed(dbManager.getMyAccountManager(), dbManager.getFeedManager(),
                        cached_account);
                account_mapping.put(k, cached_account);
            }

            final MMyAccount account = cached_account;
            v.forEach(new TLongProcedure() {
                @Override
                public boolean execute(long id) {
                    dbManager.getFeedManager().ensureFeedMember(account.feedId_, id);
                    db.yieldIfContendedSafely(75);
                    return true;
                }
            });
        }
        db.setTransactionSuccessful();
        db.endTransaction();
    }

    sAddressBookTotal = sAddressBookPosition = 0;

    //TODO: handle deleted
    //for all android data ids in our table, check if they still exist in the
    //contacts table, probably in batches of 100 or something.  if they don't
    //null them out.  this is annoyingly non-differential.

    //TODO: adding friend should update accepted feed status, however,
    //if a crashe happens for whatever reason, then its possible that this may need to
    //be run for identities which actually exist in the db.  so this update code
    //needs to do the feed accepted status change for all users that were touched
    //by the profile update process

    //update the version ids so we can be faster on subsequent runs
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        db.beginTransactionNonExclusive();
    } else {
        db.beginTransaction();
    }
    int changed_data_rows = raw_data_ids.size();
    for (int i = 0; i < changed_data_rows; ++i) {
        dbManager.getContactDataVersionManager().setVersion(raw_data_ids.get(i), versions.get(i));
    }
    db.setTransactionSuccessful();
    db.endTransaction();

    dbManager.getContactDataVersionManager().setMaxDataIdSeen(new_max_data_id);
    dbManager.getContactDataVersionManager().setMaxContactIdSeen(new_max_contact_id);
    ContentResolver resolver = mContext.getContentResolver();

    Date end = new Date();
    double time = end.getTime() - start.getTime();
    time /= 1000;
    Log.w(TAG, "update address book " + mChangeCount++ + " took " + time + " seconds");
    if (identityAdded) {
        //wake up the profile push
        resolver.notifyChange(MusubiService.WHITELIST_APPENDED, this);
    }
    if (profileDataChanged) {
        //refresh the ui...
        resolver.notifyChange(MusubiService.PRIMARY_CONTENT_CHANGED, this);
    }
    if (identityAdded || profileDataChanged) {
        //update the our musubi address book as needed.
        String accountName = mContext.getString(R.string.account_name);
        String accountType = mContext.getString(R.string.account_type);
        Account account = new Account(accountName, accountType);
        ContentResolver.requestSync(account, ContactsContract.AUTHORITY, new Bundle());
    }

    dbManager.close();
    mLastRun = new Date().getTime();
    resolver.notifyChange(MusubiService.ADDRESS_BOOK_SCANNED, this);
}

From source file:com.googlecode.ehcache.annotations.resolver.DefaultCacheResolverFactory.java

/**
 * Creates or retrieves a SelfPopulatingCacheTracker for the specified cache depending on the
 * configured {@link SelfPopulatingCacheScope}
 * /*from  w  w  w.j  a  v a2s.  co m*/
 * @param cache The cache to create a self populating instance of
 * @return The SelfPopulatingCache and corresponding factory object to use
 */
protected final SelfPopulatingCacheTracker createSelfPopulatingCacheInternal(Ehcache cache, int timeout,
        DecoratedCacheType type, long refreshinterval) {
    //If method scoped just create a new instance 
    if (SelfPopulatingCacheScope.METHOD == this.selfPopulatingCacheScope) {
        return this.createSelfPopulatingCache(cache, timeout, type, refreshinterval);
    }

    //Shared scope, try loading the instance from local Map
    boolean newCache = false;

    //See if there is a cached SelfPopulatingCache for the name
    final String cacheName = cache.getName();
    SelfPopulatingCacheTracker selfPopulatingCacheTracker = this.selfPopulatingCaches.get(cacheName);
    if (selfPopulatingCacheTracker == null) {
        selfPopulatingCacheTracker = this.createSelfPopulatingCache(cache, timeout, type, refreshinterval);

        //do putIfAbsent to handle concurrent creation. If a value is returned it was already put and that
        //value should be used. If no value was returned the newly created selfPopulatingCache should be used
        final SelfPopulatingCacheTracker existing = this.selfPopulatingCaches.putIfAbsent(cacheName,
                selfPopulatingCacheTracker);
        if (existing != null) {
            selfPopulatingCacheTracker = existing;
        }
        //If the new cache was created and didn't replace an existing entry in the map
        else {
            newCache = true;
        }
    }

    if (!newCache) {
        //Check if the timeouts match
        final int timeoutMillis = selfPopulatingCacheTracker.selfPopulatingCache.getTimeoutMillis();
        if (timeoutMillis != timeout) {
            this.logger.warn("SelfPopulatingCache " + cacheName
                    + " was already created by another annotation but has a different timeout of "
                    + timeoutMillis + ". The timeout " + timeout
                    + " for the current annotation will be ignored.", new Throwable());
        }
    }

    return selfPopulatingCacheTracker;
}

From source file:ca.rmen.android.scrumchatter.team.Teams.java

/**
 * @return the Team currently selected by the user.
 *//*w  ww.j a v  a  2  s .  c o m*/
@WorkerThread
private Team getCurrentTeam() {
    // Retrieve the current team name and construct a uri for the team based on the current team id.
    int teamId = Prefs.getInstance(mActivity).getTeamId();
    Uri teamUri = Uri.withAppendedPath(TeamColumns.CONTENT_URI, String.valueOf(teamId));
    Cursor c = mActivity.getContentResolver().query(teamUri, new String[] { TeamColumns.TEAM_NAME }, null, null,
            null);
    if (c != null) {
        try {
            if (c.moveToFirst()) {
                String teamName = c.getString(0);
                return new Team(teamUri, teamName);
            }
        } finally {
            c.close();
        }
    }
    Log.wtf(TAG, "Could not get the current team", new Throwable());
    return selectFirstTeam();
}