/** * Creates an error message given an error code and description. * * @param code an error code * @param message an error description * @return a new error message */ public static SVNErrorMessage create(SVNErrorCode code, String message) { return create(code, message, TYPE_ERROR); }
public void handleError(File path, SVNErrorMessage error) throws SVNException { while (error.hasChildErrorMessage()) { error = error.getChildErrorMessage(); } if (error.getErrorCode() == SVNErrorCode.WC_PATH_NOT_FOUND || error.getErrorCode() == SVNErrorCode.WC_NOT_LOCKED) { return; } SVNErrorManager.error(error, SVNLogType.DEFAULT); }
/** {@inheritDoc} */ public void acknowledgeProxyContext(boolean accepted, SVNErrorMessage error) { if (accepted) { log.trace("Connected to HTTP proxy " + host + ":" + port); } log.error("Unable to connect to HTTP proxy " + host + ":" + port + " recieved error:\n" + error.getFullMessage()); }
private static Throwable findCause(SVNErrorMessage errorMessage, Throwable cause) { if(cause!=null) return cause; // SVNErrorMessage has its own chaining mechanism, so if no 'cause' is given, try to pick up // the nearset exception from there, so that printStackTrace() would print the root cause. for( SVNErrorMessage e = errorMessage; e!=null; e=e.getChildErrorMessage() ) if(e.getCause()!=null) return e.getCause(); return null; }
private void fixError(String path, SVNException e, SVNNodeKind kind) throws SVNException { SVNErrorMessage err = e.getErrorMessage(); if (err.getErrorCode() == SVNErrorCode.FS_NOT_FOUND || err.getErrorCode() == SVNErrorCode.RA_DAV_PATH_NOT_FOUND) { err = SVNErrorMessage.create(SVNErrorCode.WC_NOT_UP_TO_DATE, kind == SVNNodeKind.DIR ? "Directory ''{0}'' is out of date" : "File ''{0}'' is out of date", path); throw new SVNException(err); } throw e; }
public void unlock(Map pathToTokens, boolean force, ISVNLockHandler handler) throws SVNException { try { openConnection(); for (Iterator paths = pathToTokens.keySet().iterator(); paths.hasNext();) { String path = (String) paths.next(); String shortPath = path; String id = (String) pathToTokens.get(path); String repositoryPath = getRepositoryPath(path); path = getFullPath(path); path = SVNEncodingUtil.uriEncode(path); SVNErrorMessage error = null; try { myConnection.doUnlock(path, this, id, force); error = null; } catch (SVNException e) { if (e.getErrorMessage() != null && e.getErrorMessage().getErrorCode() == SVNErrorCode.RA_NOT_LOCKED) { error = e.getErrorMessage(); error = SVNErrorMessage.create(error.getErrorCode(), error.getMessageTemplate(), shortPath); } else { throw e; } } if (handler != null) { handler.handleUnlock(repositoryPath, new SVNLock(path, id, null, null, null, null), error); } } } finally { closeConnection(); } }
SVNErrorMessage sslErr = SVNErrorMessage.create(SVNErrorCode.RA_NOT_AUTHORIZED, "SSL handshake failed: ''{0}''", new Object[] { ssl.getMessage() }, SVNErrorMessage.TYPE_ERROR, ssl); if (keyManager != null) { keyManager.acknowledgeAndClearAuthentication(sslErr); err = SVNErrorMessage.create(SVNErrorCode.RA_DAV_REQUEST_FAILED, ssl); err = SVNErrorMessage.create(SVNErrorCode.RA_DAV_REQUEST_FAILED, "timed out waiting for server", null, SVNErrorMessage.TYPE_ERROR, e); } else if (e instanceof UnknownHostException) { err = SVNErrorMessage.create(SVNErrorCode.RA_DAV_REQUEST_FAILED, "unknown host", null, SVNErrorMessage.TYPE_ERROR, e); } else if (e instanceof ConnectException) { err = SVNErrorMessage.create(SVNErrorCode.RA_DAV_REQUEST_FAILED, "connection refused by the server", null, SVNErrorMessage.TYPE_ERROR, e); SVNErrorManager.cancel(e.getMessage(), SVNLogType.NETWORK); } else if (e instanceof SSLException) { err = SVNErrorMessage.create(SVNErrorCode.RA_DAV_REQUEST_FAILED, e); } else { err = SVNErrorMessage.create(SVNErrorCode.RA_DAV_REQUEST_FAILED, e); err = SVNErrorMessage.create(SVNErrorCode.RA_NOT_AUTHORIZED, "HTTP proxy authorization failed"); SVNURL location = myRepository.getLocation(); ISVNProxyManager proxyManager = authManager != null ? authManager.getProxyManager(location) : null; if (authHeaderValues == null || authHeaderValues.size() == 0) { err = request.getErrorMessage(); status.setError(SVNErrorMessage.create(SVNErrorCode.RA_DAV_REQUEST_FAILED, err.getMessageTemplate(), err.getRelatedObjects()));
public static void error(SVNErrorMessage err, Level logLevel, SVNLogType logType) throws SVNException { if (err == null) { err = SVNErrorMessage.create(SVNErrorCode.UNKNOWN); } SVNDebugLog.getDefaultLog().log(logType, err.getFullMessage(), logLevel); if (err.getErrorCode() == SVNErrorCode.CANCELLED) { throw new SVNCancelException(err); } else if (err.getErrorCode().isAuthentication()) { throw new SVNAuthenticationException(err); } else { throw new SVNException(err); } }
int count = 0; while(err != null && count < 3) { SVNErrorCode errorCode = err.getErrorCode(); if ("".equals(err.getMessageTemplate()) && codes.contains(errorCode)) { err = err.hasChildErrorMessage() ? err.getChildErrorMessage() : null; continue; if ("".equals(err.getMessageTemplate())) { codes.add(errorCode); Object[] objects = err.getRelatedObjects(); if (objects != null && objects.length > 0) { String template = err.getMessageTemplate(); for (int i = 0; i < objects.length; i++) { if (objects[i] instanceof File) { if (err.getType() == SVNErrorMessage.TYPE_WARNING) { String msg = getCommandLineClientName() +": warning: " + (err.isErrorCodeShouldShown() ? "W" + errorCode.getCode() + ": " : "") + message; getErr().println(msg); } else { String msg = getCommandLineClientName() + ": " + (err.isErrorCodeShouldShown() ? "E" + errorCode.getCode() + ": " : "") + message; getErr().println(msg); count++; getErr().println(err.getMessage()); count++;
public void writeError(SVNErrorMessage error) throws SVNException { Object[] buffer = new Object[]{"failure"}; write("(w(", buffer); for (; error != null; error = error.getChildErrorMessage()) { String message = error.getMessage() == null ? "" : error.getMessage(); buffer = new Object[]{new Long(error.getErrorCode().getCode()), message, "", new Integer(0)}; write("(nssn)", buffer); } write(")", null); }
private void openRepository() throws SVNException { try { openRepositoryRoot(); } catch (SVNException svne) { SVNErrorMessage err = SVNErrorMessage.create(SVNErrorCode.RA_LOCAL_REPOS_OPEN_FAILED, "Unable to open repository ''{0}''", getLocation().toDecodedString()); err.setChildErrorMessage(svne.getErrorMessage()); SVNErrorManager.error(err.wrap("Unable to open an ra_local session to URL"), SVNLogType.FSFS); } }
public static void authenticationFailed(String message, Object messageObject, Level logLevel) throws SVNAuthenticationException { SVNErrorMessage err = SVNErrorMessage.create(SVNErrorCode.RA_NOT_AUTHORIZED, message, messageObject); SVNDebugLog.getDefaultLog().log(SVNLogType.NETWORK, err.getMessage(), logLevel); throw new SVNAuthenticationException(err); }
public static void error(SVNErrorMessage err1, SVNErrorMessage err2, Throwable cause, Level logLevel, SVNLogType logType) throws SVNException { if (err1 == null) { error(err2, cause, logLevel, logType); } else if (err2 == null) { error(err1, cause, logLevel, logType); } err1.setChildErrorMessage(err2); SVNDebugLog.getDefaultLog().log(logType, err1.getMessage(), logLevel); if (err1.getErrorCode() == SVNErrorCode.CANCELLED || err2.getErrorCode() == SVNErrorCode.CANCELLED) { throw new SVNCancelException(err1, cause); } else if (err1.getErrorCode().isAuthentication() || err2.getErrorCode().isAuthentication()) { throw new SVNAuthenticationException(err1, cause); } throw new SVNException(err1, cause); }
public static void error(SVNErrorMessage err, Throwable cause) throws SVNException { if (err == null) { err = SVNErrorMessage.create(SVNErrorCode.UNKNOWN); } SVNDebugLog.getDefaultLog().info(err.getMessage()); if (err.getErrorCode() == SVNErrorCode.CANCELLED) { throw new SVNCancelException(err); } else if (err.getErrorCode().isAuthentication()) { throw new SVNAuthenticationException(err); } else { throw new SVNException(err, cause); } }
public static boolean isLockError(SVNErrorMessage err) { if (err == null) { return false; } SVNErrorCode errCode = err.getErrorCode(); return errCode == SVNErrorCode.FS_PATH_ALREADY_LOCKED || errCode == SVNErrorCode.FS_NOT_FOUND || errCode == SVNErrorCode.FS_BAD_LOCK_TOKEN || errCode == SVNErrorCode.FS_OUT_OF_DATE; }
public SVNCommitInfo closeEdit() throws SVNException { if (myTxn == null) { SVNErrorMessage err = SVNErrorMessage.create(SVNErrorCode.REPOS_BAD_ARGS, "No valid transaction supplied to closeEdit()"); SVNErrorManager.error(err); } long committedRev = -1; SVNErrorMessage errorMessage = null; committedRev = finalizeCommit(); try { FSHooks.runPostCommitHook(myFSFS.getRepositoryRoot(), committedRev); } catch (SVNException svne) { errorMessage = SVNErrorMessage.create(SVNErrorCode.REPOS_POST_COMMIT_HOOK_FAILED, svne.getErrorMessage().getFullMessage(), SVNErrorMessage.TYPE_WARNING); } Map revProps = myFSFS.getRevisionProperties(committedRev); String dateProp = (String) revProps.get(SVNRevisionProperty.DATE); String authorProp = (String) revProps.get(SVNRevisionProperty.AUTHOR); Date datestamp = dateProp != null ? SVNTimeUtil.parseDateString(dateProp) : null; SVNCommitInfo info = new SVNCommitInfo(committedRev, authorProp, datestamp, errorMessage); releaseLocks(); myRepository.closeRepository(); return info; }
private SVNErrorMessage readError(String request, String path, SVNErrorMessage context) { String contextMessage = context.getMessageTemplate(); Object[] contextObjects = context.getRelatedObjects(); if (myStatus.getCode() == HttpURLConnection.HTTP_NOT_FOUND) { contextMessage = "''{0}'' path not found"; contextObjects = new Object[] {path}; } SVNErrorMessage error = createDefaultErrorMessage(myConnection.getHost(), myStatus, contextMessage, contextObjects); SVNErrorMessage davError = myConnection.readError(this, request, path); if (davError != null) { if (error != null) { davError.setChildErrorMessage(error); } return davError; } return error; }
/** * Creates an exception given an error message and the cause exception. * * @param errorMessage an error message * @param cause the real cause of the error */ public SVNException(SVNErrorMessage errorMessage, Throwable cause) { super(cause != null ? cause : errorMessage.getCause()); if (cause == null) { cause = errorMessage.getCause(); } if (cause instanceof SVNException) { SVNErrorMessage childMessages = ((SVNException) cause).getErrorMessage(); SVNErrorMessage parent = errorMessage; while(parent.hasChildErrorMessage()) { parent = parent.getChildErrorMessage(); } if (parent != childMessages) { parent.setChildErrorMessage(childMessages); } } myErrorMessage = errorMessage; if (getCause() == null && errorMessage != null) { errorMessage.initCause(this); } }
private void createDBLock(File dstPath) throws SVNException { try { SVNFileUtil.createFile(new File(dstPath, FSFS.DB_LOCK_FILE), FSFS.PRE_12_COMPAT_UNNEEDED_FILE_CONTENTS, "US-ASCII"); } catch (SVNException svne) { SVNErrorMessage err = svne.getErrorMessage().wrap("Creating db lock file"); SVNErrorManager.error(err, SVNLogType.FSFS); } }
public void printCommitInfo(SVNCommitInfo info) { if (info != null && info.getNewRevision() >= 0 && info != SVNCommitInfo.NULL) { getOut().println("Committed revision " + info.getNewRevision() + "."); if (info.getErrorMessage() != null && info.getErrorMessage().isWarning()) { getOut().println("\n" + info.getErrorMessage().getMessage()); } } }