Author: mturk Date: Tue Apr 7 14:50:24 2009 New Revision: 762800 URL: http://svn.apache.org/viewvc?rev=762800&view=rev Log: OS exception helper code
Added: commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/exception/OperatingSystemException.java (with props) commons/sandbox/runtime/trunk/src/main/native/shared/error.c (with props) Added: commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/exception/OperatingSystemException.java URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/exception/OperatingSystemException.java?rev=762800&view=auto ============================================================================== --- commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/exception/OperatingSystemException.java (added) +++ commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/exception/OperatingSystemException.java Tue Apr 7 14:50:24 2009 @@ -0,0 +1,36 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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 org.apache.commons.runtime.exception; + +/** OperatingSystemException + * + * @author Mladen Turk + * + */ + +public class OperatingSystemException extends Exception { + + public OperatingSystemException() + { + super(); + } + + public OperatingSystemException(String msg) + { + super(msg); + } +} Propchange: commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/exception/OperatingSystemException.java ------------------------------------------------------------------------------ svn:eol-style = native Added: commons/sandbox/runtime/trunk/src/main/native/shared/error.c URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/shared/error.c?rev=762800&view=auto ============================================================================== --- commons/sandbox/runtime/trunk/src/main/native/shared/error.c (added) +++ commons/sandbox/runtime/trunk/src/main/native/shared/error.c Tue Apr 7 14:50:24 2009 @@ -0,0 +1,115 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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. + */ + +#include "acr.h" +#include "acr_private.h" + +/* + * Convenience function to help throw any class + */ +ACR_DECLARE(void) ACR_ThrowClass(JNIEnv *env, const char *clazz, + const char *msg) +{ + jclass ec; + + ec = (*env)->FindClass(env, clazz); + if (ec == NULL) { + fprintf(stderr, "Cannot find %s class\n", clazz); + return; + } + (*env)->ThrowNew(env, ec, msg); + (*env)->DeleteLocalRef(env, ec); +} + +/* + * Convenience function to help throw any class with + * file and line number from where the exception was called. + */ + ACR_DECLARE(void) ACR_ThrowClassEx(JNIEnv *env, const char *clazz, + const char *file, int line, + const char *msg) +{ + if (file) { + char fmt[ACR_HBUFFER_SIZ]; + char *f = (char *)(file + strlen(file) - 1); + while (f != file && '\\' != *f && '/' != *f) { + f--; + } + if (f != file) { + f++; + } + if (msg) + sprintf(fmt, "%s (%s)+%d", msg, f, line); + else + sprintf(fmt, "(%s)+%d", msg, f, line); + ACR_ThrowClass(env, clazz, &fmt[0]); + } + else { + ACR_ThrowClass(env, clazz, msg); + } +} + + +/* + * Convenience function to help throw an java.lang.Exception. + */ +ACR_DECLARE(void) ACR_ThrowException(JNIEnv *env, const char *msg) +{ + ACR_ThrowClass(env, "java/lang/Exception", msg); +} + +/* + * Convenience function to help throw an java.io.IOException. + */ +ACR_DECLARE(void) ACR_ThrowIOException(JNIEnv *env, const char *msg) +{ + ACR_ThrowClass(env, "java/io/IOException", msg); +} + +/* + * Convenience function to help throw an java.lang.OutOfMemoryError. + */ +ACR_DECLARE(void) ACR_ThrowMemoryException(JNIEnv *env, const char *file, + int line, const char *msg) +{ + ACR_ThrowClassEx(env, "java/lang/OutOfMemoryError", file, line, msg); +} + +/* + * Convenience function to help throw an java.lang.NullPointerException. + */ +ACR_DECLARE(void) ACR_ThrowNullPointerException(JNIEnv *env, const char *file, + int line, const char *msg) +{ + ACR_ThrowClassEx(env, "java/lang/NullPointerException", file, line, msg); +} + +/* + * Convenience function to help throw an java.lang.IllegalArgumentException. + */ +ACR_DECLARE(void) ACR_ThrowArgumentException(JNIEnv *env, const char *file, + int line, const char *msg) +{ + ACR_ThrowClassEx(env, "java/lang/IllegalArgumentException", file, line, msg); +} + + +ACR_DECLARE(void) ACR_ThrowOSException(JNIEnv *env, const char *msg) +{ + ACR_ThrowClassEx(env, ACR_CLASS_PATH "exception/OperatingSystemException", + msg); +} + Propchange: commons/sandbox/runtime/trunk/src/main/native/shared/error.c ------------------------------------------------------------------------------ svn:eol-style = native