summaryrefslogtreecommitdiffstats
path: root/lib/OpenSLX/Basics.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/OpenSLX/Basics.pm')
-rw-r--r--lib/OpenSLX/Basics.pm24
1 files changed, 24 insertions, 0 deletions
diff --git a/lib/OpenSLX/Basics.pm b/lib/OpenSLX/Basics.pm
index 9cca7b8c..998e7982 100644
--- a/lib/OpenSLX/Basics.pm
+++ b/lib/OpenSLX/Basics.pm
@@ -25,6 +25,7 @@ $VERSION = 1.01;
&_tr &trInit
&warn &die &executeInSubprocess &slxsystem
&vlog
+ &instantiateClass
);
use vars qw(%openslxConfig %cmdlineConfig);
@@ -360,4 +361,27 @@ sub die
}
}
+# ------------------------------------------------------------------------------
+sub instantiateClass
+{
+ my $class = shift;
+ my $requestedVersion = shift;
+
+ unless (eval "require $class") {
+ if ($! == 2) {
+ die _tr("Class <%s> not found!\n", $class);
+ } else {
+ die _tr("Unable to load class <%s> (%s)\n", $class, $@);
+ }
+ }
+ if (defined $requestedVersion) {
+ my $classVersion = $class->VERSION;
+ if ($classVersion < $requestedVersion) {
+ die _tr('Could not load class <%s> (Version <%s> required, but <%s> found)',
+ $class, $requestedVersion, $classVersion);
+ }
+ }
+ return $class->new;
+}
+
1;