You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ta...@apache.org on 2007/08/13 00:50:28 UTC
svn commit: r565191 - in /activemq/activemq-cpp/trunk/src/decaf/src/main:
Makefile.am decaf/internal/AprPool.cpp decaf/internal/AprPool.h
decaf/lang/System.cpp decaf/lang/System.h
Author: tabish
Date: Sun Aug 12 15:50:27 2007
New Revision: 565191
URL: http://svn.apache.org/viewvc?view=rev&rev=565191
Log:
http://issues.apache.org/activemq/browse/AMQCPP-103
Adding a System class
Added:
activemq/activemq-cpp/trunk/src/decaf/src/main/decaf/lang/System.cpp
activemq/activemq-cpp/trunk/src/decaf/src/main/decaf/lang/System.h
Modified:
activemq/activemq-cpp/trunk/src/decaf/src/main/Makefile.am
activemq/activemq-cpp/trunk/src/decaf/src/main/decaf/internal/AprPool.cpp
activemq/activemq-cpp/trunk/src/decaf/src/main/decaf/internal/AprPool.h
Modified: activemq/activemq-cpp/trunk/src/decaf/src/main/Makefile.am
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/decaf/src/main/Makefile.am?view=diff&rev=565191&r1=565190&r2=565191
==============================================================================
--- activemq/activemq-cpp/trunk/src/decaf/src/main/Makefile.am (original)
+++ activemq/activemq-cpp/trunk/src/decaf/src/main/Makefile.am Sun Aug 12 15:50:27 2007
@@ -34,6 +34,7 @@
decaf/lang/Float.cpp \
decaf/lang/Double.cpp \
decaf/lang/Math.cpp \
+ decaf/lang/System.cpp \
decaf/io/BufferedOutputStream.cpp \
decaf/io/BufferedInputStream.cpp \
decaf/io/ByteArrayInputStream.cpp \
@@ -86,6 +87,7 @@
decaf/lang/Number.h \
decaf/lang/Runnable.h \
decaf/lang/Math.h \
+ decaf/lang/System.h \
decaf/lang/exceptions/NoSuchElementException.h \
decaf/lang/exceptions/RuntimeException.h \
decaf/lang/exceptions/IndexOutOfBoundsException.h \
Modified: activemq/activemq-cpp/trunk/src/decaf/src/main/decaf/internal/AprPool.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/decaf/src/main/decaf/internal/AprPool.cpp?view=diff&rev=565191&r1=565190&r2=565191
==============================================================================
--- activemq/activemq-cpp/trunk/src/decaf/src/main/decaf/internal/AprPool.cpp (original)
+++ activemq/activemq-cpp/trunk/src/decaf/src/main/decaf/internal/AprPool.cpp Sun Aug 12 15:50:27 2007
@@ -29,3 +29,8 @@
AprPool::~AprPool() {
apr_pool_destroy( aprPool );
}
+
+////////////////////////////////////////////////////////////////////////////////
+void AprPool::cleanup() {
+ apr_pool_clear( aprPool );
+}
Modified: activemq/activemq-cpp/trunk/src/decaf/src/main/decaf/internal/AprPool.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/decaf/src/main/decaf/internal/AprPool.h?view=diff&rev=565191&r1=565190&r2=565191
==============================================================================
--- activemq/activemq-cpp/trunk/src/decaf/src/main/decaf/internal/AprPool.h (original)
+++ activemq/activemq-cpp/trunk/src/decaf/src/main/decaf/internal/AprPool.h Sun Aug 12 15:50:27 2007
@@ -47,6 +47,13 @@
return aprPool;
}
+ /**
+ * Clears data that was allocated by this pool. Users should call this
+ * after getting the data from the APR functions and copying it to
+ * someplace safe.
+ */
+ void cleanup();
+
};
}}
Added: activemq/activemq-cpp/trunk/src/decaf/src/main/decaf/lang/System.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/decaf/src/main/decaf/lang/System.cpp?view=auto&rev=565191
==============================================================================
--- activemq/activemq-cpp/trunk/src/decaf/src/main/decaf/lang/System.cpp (added)
+++ activemq/activemq-cpp/trunk/src/decaf/src/main/decaf/lang/System.cpp Sun Aug 12 15:50:27 2007
@@ -0,0 +1,64 @@
+/*
+ * 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 "System.h"
+
+#include <decaf/lang/exceptions/NullPointerException.h>
+#include <apr_errno.h>
+#include <apr_env.h>
+
+using namespace decaf;
+using namespace decaf::lang;
+using namespace decaf::internal;
+using namespace decaf::lang::exceptions;
+
+////////////////////////////////////////////////////////////////////////////////
+AprPool System::aprPool;
+
+////////////////////////////////////////////////////////////////////////////////
+System::System() {
+}
+
+////////////////////////////////////////////////////////////////////////////////
+std::string System::getenv( const std::string& name ) throw ( Exception ) {
+
+ char* value = NULL;
+ apr_status_t result = APR_SUCCESS;
+
+ // Read the value, errors are thrown out as an exception
+ result = apr_env_get( &value, name.c_str(), aprPool.getAprPool() );
+
+ if( result != APR_SUCCESS ) {
+
+ char buffer[256] = {0};
+
+ throw NullPointerException(
+ __FILE__, __LINE__,
+ "System::getenv - ",
+ apr_strerror( result, buffer, 255 ) );
+ }
+
+ // Copy and cleanup
+ if( value == NULL ) {
+ return "";
+ }
+
+ std::string envVal( value );
+ aprPool.cleanup();
+
+ return value;
+}
Added: activemq/activemq-cpp/trunk/src/decaf/src/main/decaf/lang/System.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/decaf/src/main/decaf/lang/System.h?view=auto&rev=565191
==============================================================================
--- activemq/activemq-cpp/trunk/src/decaf/src/main/decaf/lang/System.h (added)
+++ activemq/activemq-cpp/trunk/src/decaf/src/main/decaf/lang/System.h Sun Aug 12 15:50:27 2007
@@ -0,0 +1,55 @@
+/*
+ * 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.
+ */
+
+#ifndef _DECAF_LANG_SYSTEM_H_
+#define _DECAF_LANG_SYSTEM_H_
+
+#include <decaf/util/Config.h>
+#include <decaf/lang/Exception.h>
+#include <decaf/internal/AprPool.h>
+#include <string>
+
+namespace decaf{
+namespace lang{
+
+ class DECAF_API System {
+ private:
+
+ static internal::AprPool aprPool;
+
+ public:
+
+ System();
+ virtual ~System() {}
+
+ public: // Static Methods
+
+ /**
+ * Reads an environment value from the system and returns it as a
+ * string object
+ * @param name - the env var to read
+ * @return a string with the value from the var or ""
+ * @throws an Exception if an error occurs while reading the Env.
+ */
+ static std::string getenv( const std::string& name )
+ throw ( lang::Exception );
+
+ };
+
+}}
+
+#endif /*_DECAF_LANG_SYSTEM_H_*/