List of usage examples for java.lang Throwable Throwable
public Throwable()
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(); }