summaryrefslogtreecommitdiffstats
path: root/branches/trunk-20080910/itest/osgi-tuscany/osgi-tuscany-test/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'branches/trunk-20080910/itest/osgi-tuscany/osgi-tuscany-test/src/main/java')
-rw-r--r--branches/trunk-20080910/itest/osgi-tuscany/osgi-tuscany-test/src/main/java/org/apache/tuscany/sca/test/osgi/runtime/impl/EquinoxTestRuntime.java92
-rw-r--r--branches/trunk-20080910/itest/osgi-tuscany/osgi-tuscany-test/src/main/java/org/apache/tuscany/sca/test/osgi/runtime/impl/FelixTestRuntime.java163
-rw-r--r--branches/trunk-20080910/itest/osgi-tuscany/osgi-tuscany-test/src/main/java/org/apache/tuscany/sca/test/osgi/runtime/impl/OSGiTestRuntime.java163
-rw-r--r--branches/trunk-20080910/itest/osgi-tuscany/osgi-tuscany-test/src/main/java/org/apache/tuscany/sca/test/util/OSGiRuntimeLoader.java86
-rw-r--r--branches/trunk-20080910/itest/osgi-tuscany/osgi-tuscany-test/src/main/java/org/apache/tuscany/sca/test/util/TuscanyLoader.java136
5 files changed, 0 insertions, 640 deletions
diff --git a/branches/trunk-20080910/itest/osgi-tuscany/osgi-tuscany-test/src/main/java/org/apache/tuscany/sca/test/osgi/runtime/impl/EquinoxTestRuntime.java b/branches/trunk-20080910/itest/osgi-tuscany/osgi-tuscany-test/src/main/java/org/apache/tuscany/sca/test/osgi/runtime/impl/EquinoxTestRuntime.java
deleted file mode 100644
index 2e3137239e..0000000000
--- a/branches/trunk-20080910/itest/osgi-tuscany/osgi-tuscany-test/src/main/java/org/apache/tuscany/sca/test/osgi/runtime/impl/EquinoxTestRuntime.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * 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.tuscany.sca.test.osgi.runtime.impl;
-
-import java.lang.reflect.Method;
-
-import org.osgi.framework.BundleContext;
-
-public class EquinoxTestRuntime extends OSGiTestRuntime {
-
-
- private static BundleContext bundleContext;
-
- private static EquinoxTestRuntime instance;
-
- private static Class<?> eclipseStarterClass;
-
- public static OSGiTestRuntime getInstance() throws Exception {
- if (instance == null) {
- eclipseStarterClass = EquinoxTestRuntime.class.getClassLoader().loadClass("org.eclipse.core.runtime.adaptor.EclipseStarter");
- EquinoxTestRuntime runtime = new EquinoxTestRuntime();
- instance = runtime;
- }
- return instance;
- }
-
-
- protected BundleContext startRuntime() throws Exception {
-
- if (bundleContext != null)
- return bundleContext;
-
- Method startupMethod = eclipseStarterClass.getMethod("startup", String [].class, Runnable.class);
-
- System.setProperty("org.osgi.framework.system.packages", getSystemPackages());
- // Equinox version 3.2 upwards have a startup method which returns BundleContext
- bundleContext = (BundleContext) startupMethod.invoke(null,
- new String[] {/*"-clean", */"-console", "-configuration", "target/configuration"},
- null );
-
- return bundleContext;
-
- }
-
- @Override
- public BundleContext getBundleContext() {
- return bundleContext;
- }
-
- @Override
- protected void setBundleContext(BundleContext bundleContext) {
- super.setBundleContext(bundleContext);
- EquinoxTestRuntime.bundleContext = bundleContext;
- }
-
- @Override
- public void shutdown() throws Exception {
-
- if (bundleContext == null)
- return;
- bundleContext = null;
- instance = null;
- if (eclipseStarterClass != null) {
- Method shutdownMethod = eclipseStarterClass.getMethod("shutdown");
- try {
- shutdownMethod.invoke(eclipseStarterClass);
- } catch (Exception e) {
- // Ignore errors.
- }
- }
- super.shutdown();
- }
-
-
-
-}
diff --git a/branches/trunk-20080910/itest/osgi-tuscany/osgi-tuscany-test/src/main/java/org/apache/tuscany/sca/test/osgi/runtime/impl/FelixTestRuntime.java b/branches/trunk-20080910/itest/osgi-tuscany/osgi-tuscany-test/src/main/java/org/apache/tuscany/sca/test/osgi/runtime/impl/FelixTestRuntime.java
deleted file mode 100644
index 0dafffdb8c..0000000000
--- a/branches/trunk-20080910/itest/osgi-tuscany/osgi-tuscany-test/src/main/java/org/apache/tuscany/sca/test/osgi/runtime/impl/FelixTestRuntime.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * 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.tuscany.sca.test.osgi.runtime.impl;
-
-import java.io.File;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-
-public class FelixTestRuntime extends OSGiTestRuntime implements BundleActivator {
-
- private static BundleContext bundleContext;
-
- private static FelixTestRuntime instance;
-
- private static Bundle felix;
-
-
- public static OSGiTestRuntime getInstance() throws Exception {
- if (instance == null) {
-
- FelixTestRuntime runtime = new FelixTestRuntime();
- instance = runtime;
- }
- return instance;
- }
-
-
-// private void deleteDirectory(File dir) {
-// File[] files = dir.listFiles();
-// for (int i = 0; i < files.length; i++) {
-// if (files[i].isDirectory())
-// deleteDirectory(files[i]);
-// else {
-// files[i].delete();
-// }
-// }
-// dir.delete();
-//
-// }
-
-// private void deleteProfile() {
-// String profileDirName = System.getProperty("felix.cache.profiledir");
-// if (profileDirName == null) profileDirName = ".felix";
-// File profileDir = new File(profileDirName);
-// if (profileDir.isDirectory())
-// deleteDirectory(profileDir);
-// else
-// profileDir.delete();
-// }
-
- protected BundleContext startRuntime() throws Exception {
-
- if (bundleContext != null)
- return bundleContext;
-
- ClassLoader cl = this.getClass().getClassLoader();
- Class<?> felixMainClass = cl.loadClass("org.apache.felix.main.Main");
- Class<?> felixClass = cl.loadClass("org.apache.felix.framework.Felix");
- Method propsMethod = felixMainClass.getMethod("loadConfigProperties");
- Properties props = (Properties)propsMethod.invoke(null);
-
- //deleteProfile();
- // Create profile directory
- String profileDirName = System.getProperty("felix.cache.profiledir");
- if (profileDirName == null) profileDirName = ".felix";
- File profileDir = new File(profileDirName);
- profileDir.mkdir();
-
- props.put("felix.cache.profiledir", profileDir.getAbsolutePath());
- props.put("felix.embedded.execution", "true");
- String systemPackages = getSystemPackages() +
- ", org.apache.felix.main";
-
-
- props.put("org.osgi.framework.system.packages", systemPackages);
-
- Constructor felixConstructor = felixClass.getConstructor(Map.class, List.class);
- List<BundleActivator> activators = new ArrayList<BundleActivator>();
-
- Class<?> autoActivatorClass = cl.loadClass("org.apache.felix.main.AutoActivator");
- Constructor autoActivatorConstructor = autoActivatorClass.getConstructor(Map.class);
- BundleActivator autoActivator = (BundleActivator)autoActivatorConstructor.newInstance(props);
- activators.add(autoActivator);
- felix = (Bundle)felixConstructor.newInstance(props, activators);
- felix.start();
- bundleContext = felix.getBundleContext();
-
- return bundleContext;
-
- }
-
- public void start(BundleContext context) throws Exception {
-
- bundleContext = context;
- synchronized (this) {
- this.notify();
- }
- }
-
- public void stop(BundleContext context) throws Exception {
- bundleContext = null;
- }
-
-
-
- @Override
- public BundleContext getBundleContext() {
- return bundleContext;
- }
-
- @Override
- protected void setBundleContext(BundleContext bundleContext) {
- super.setBundleContext(bundleContext);
- FelixTestRuntime.bundleContext = bundleContext;
- }
-
-
- @Override
- public void shutdown() throws Exception {
-
- if (bundleContext == null)
- return;
-
- bundleContext = null;
- instance = null;
-
- felix.stop();
- int retries = 50;
- synchronized (felix) {
- while (retries-- > 0 && felix.getState() != Bundle.UNINSTALLED) {
- felix.wait(100);
- }
- }
-
- super.shutdown();
- }
-
-
-}
diff --git a/branches/trunk-20080910/itest/osgi-tuscany/osgi-tuscany-test/src/main/java/org/apache/tuscany/sca/test/osgi/runtime/impl/OSGiTestRuntime.java b/branches/trunk-20080910/itest/osgi-tuscany/osgi-tuscany-test/src/main/java/org/apache/tuscany/sca/test/osgi/runtime/impl/OSGiTestRuntime.java
deleted file mode 100644
index 6356718fe5..0000000000
--- a/branches/trunk-20080910/itest/osgi-tuscany/osgi-tuscany-test/src/main/java/org/apache/tuscany/sca/test/osgi/runtime/impl/OSGiTestRuntime.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * 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.tuscany.sca.test.osgi.runtime.impl;
-
-import java.lang.reflect.Method;
-
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.BundleException;
-
-public abstract class OSGiTestRuntime {
-
- public abstract BundleContext getBundleContext();
-
- protected abstract BundleContext startRuntime() throws Exception;
-
- private static OSGiTestRuntime instance;
-
- private BundleContext bundleContext;
-
-
- /**
- * System property org.apache.tuscany.implementation.osgi.runtime.OSGiRuntime can be set to the
- * name of the OSGiRuntime class (eg. EquinoxRuntime). If set, start this runtime and return the
- * system bundlecontext. If not set, start Felix from the classpath.
- *
- * @throws BundleException
- */
- public synchronized static OSGiTestRuntime findRuntime() throws Exception {
- if (instance != null) {
- return instance;
- }
- String runtimeClassName = System.getProperty(OSGiTestRuntime.class.getName());
-
- if (instance != null)
- return instance;
-
- if (runtimeClassName != null) {
- try {
- Class<?> runtimeClass = OSGiTestRuntime.class.getClassLoader().loadClass(runtimeClassName);
- Method method = runtimeClass.getMethod("getInstance");
- instance = (OSGiTestRuntime) method.invoke(null);
- return instance;
-
- } catch (Exception e) {
- throw new BundleException("Could not start OSGi runtime " + runtimeClassName, e);
- }
- }
-
- try {
- instance = EquinoxTestRuntime.getInstance();
- } catch (Throwable e) {
- instance = FelixTestRuntime.getInstance();
- }
-
- return instance;
-
- }
-
-
- public synchronized static OSGiTestRuntime getRuntime() throws Exception {
-
- instance = findRuntime();
-
- if (instance != null) {
-
- if (instance.bundleContext == null) {
- instance.startRuntime();
- instance.bundleContext = instance.getBundleContext();
- }
- return instance;
- }
- return instance;
- }
-
-
- public void shutdown() throws Exception {
-
- bundleContext = null;
- if (this == instance)
- instance = null;
- }
-
- protected void setBundleContext(BundleContext bundleContext) {
- this.bundleContext = bundleContext;
- }
-
-
- /**
- * @return the instance
- */
- public synchronized static void stop() throws Exception {
- if (instance != null) {
- instance.shutdown();
- instance = null;
- }
- }
-
-
- /**
- * @return the list of packages to be exported by the system bundle
- */
- protected String getSystemPackages() {
- String systemPackages =
- "org.osgi.framework; version=1.3.0," +
- "org.osgi.service.packageadmin; version=1.2.0, " +
- "org.osgi.service.startlevel; version=1.0.0, " +
- "org.osgi.service.url; version=1.0.0, " +
- "org.osgi.util.tracker; version=1.3.2, " +
- "javax.xml, " +
- "javax.xml.datatype, " +
- "javax.xml.namespace, " +
- "javax.xml.parsers, " +
- "javax.xml.transform, " +
- "javax.xml.transform.dom, " +
- "javax.xml.transform.sax, " +
- "javax.xml.transform.stream, " +
- "javax.xml.validation, " +
- "javax.xml.xpath, " +
- "javax.sql," +
- "org.w3c.dom, " +
- "org.w3c.dom.bootstrap, " +
- "org.w3c.dom.ls, " +
- "org.xml.sax, " +
- "org.xml.sax.ext, " +
- "org.xml.sax.helpers, " +
- "javax.security.auth, " +
- "javax.security.auth.login, " +
- "javax.security.auth.callback, " +
- "javax.security.cert, " +
- "javax.naming, " +
- "javax.naming.spi, " +
- "javax.naming.directory, " +
- "javax.management, " +
- "javax.imageio, " +
- "sun.misc, " +
- "javax.net, " +
- "javax.net.ssl, " +
- "javax.crypto, " +
- "javax.rmi, " +
- "javax.transaction, " +
- "javax.transaction.xa";
-
- return systemPackages;
-
- }
-
-}
diff --git a/branches/trunk-20080910/itest/osgi-tuscany/osgi-tuscany-test/src/main/java/org/apache/tuscany/sca/test/util/OSGiRuntimeLoader.java b/branches/trunk-20080910/itest/osgi-tuscany/osgi-tuscany-test/src/main/java/org/apache/tuscany/sca/test/util/OSGiRuntimeLoader.java
deleted file mode 100644
index c9f77b71cf..0000000000
--- a/branches/trunk-20080910/itest/osgi-tuscany/osgi-tuscany-test/src/main/java/org/apache/tuscany/sca/test/util/OSGiRuntimeLoader.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * 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.tuscany.sca.test.util;
-
-import org.apache.tuscany.sca.test.osgi.runtime.impl.OSGiTestRuntime;
-
-
-
-/**
- * OSGi Test Utils : Set up OSGi runtime
- */
-public class OSGiRuntimeLoader {
-
- public static OSGiTestRuntime startOSGiTestRuntime() throws Exception {
-
- setUpFelixTestRuntime();
-
-
- System.setProperty("felix.cache.profiledir", "target/.felix.test");
-
- OSGiTestRuntime osgiRuntime = OSGiTestRuntime.getRuntime();
-
- System.setProperty("felix.cache.profiledir", ".felix");
-
- return osgiRuntime;
-
- }
-
- public static void setUpOSGiTestRuntime() throws Exception {
-
- setUpFelixTestRuntime();
-
- }
-
-
- private static void setUpFelixTestRuntime() throws Exception {
-
- String felixConfigFileName = "file:target/test-classes/felix/felix.config.properties";
-
- System.setProperty("felix.config.properties", felixConfigFileName);
-
- System.setProperty("felix.service.urlhandlers", "false");
-
-
- try {
- Class<?> felixMainClass = OSGiRuntimeLoader.class.getClassLoader().loadClass("org.apache.felix.main.Main");
- String felixDir = felixMainClass.getProtectionDomain().getCodeSource().getLocation().getPath();
- int index = 0;
- if ((index = felixDir.indexOf("/org.apache.felix.main")) >= 0) {
- felixDir = felixDir.substring(0, index);
- System.setProperty("FELIX_DIR", felixDir);
- }
-
- } catch (Throwable e) {
- // Ignore
- }
-
-
- }
-
- public static void shutdownOSGiRuntime() {
- try {
- OSGiTestRuntime.stop();
-
- } catch (Exception e) {
- // Ignore
- }
- }
-
-}
diff --git a/branches/trunk-20080910/itest/osgi-tuscany/osgi-tuscany-test/src/main/java/org/apache/tuscany/sca/test/util/TuscanyLoader.java b/branches/trunk-20080910/itest/osgi-tuscany/osgi-tuscany-test/src/main/java/org/apache/tuscany/sca/test/util/TuscanyLoader.java
deleted file mode 100644
index 1fba0d6dcd..0000000000
--- a/branches/trunk-20080910/itest/osgi-tuscany/osgi-tuscany-test/src/main/java/org/apache/tuscany/sca/test/util/TuscanyLoader.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * 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.tuscany.sca.test.util;
-
-
-import java.io.File;
-import java.io.FilenameFilter;
-import java.lang.reflect.Method;
-
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.BundleException;
-
-/**
- * Load Tuscany into an OSGi runtime
- *
- */
-public class TuscanyLoader {
-
- private static final String tuscanyInstallerDir = "../tuscany-osgi-installer";
- private static final String tuscanyInstallerJar = "tuscany-sca-osgi-installer.jar";
-
- // 5-bundle version of Tuscany
- private static final String scaApiDir = "../sca-api";
- private static final String tuscanySpiDir = "../tuscany-spi";
- private static final String tuscanyRuntimeDir = "../tuscany-runtime";
- private static final String tuscanyExtensionsDir = "../tuscany-extensions";
- private static final String thirdPartyDir = "../tuscany-3rdparty";
-
- private static String findBundle(String subDirName, final String jarPrefix) throws Exception {
-
- File dir = new File(subDirName + "/target");
- if (dir.exists() && dir.isDirectory()) {
- File[] files = dir.listFiles(new FilenameFilter() {
-
- public boolean accept(File dir, String name) {
- return name.endsWith(".jar") && (jarPrefix == null || name.startsWith(jarPrefix));
- }
-
- });
-
- if (files != null && files.length > 0)
- return files[0].toURI().toURL().toString();
- }
- return null;
- }
-
- public static Bundle loadTuscanyIntoOSGi(BundleContext bundleContext) throws Exception {
-
- String tuscanyInstallerBundleName = new File(tuscanyInstallerDir + "/target/" + tuscanyInstallerJar).toURI().toURL().toString();
- Bundle tuscanyInstallerBundle = bundleContext.installBundle(tuscanyInstallerBundleName);
- tuscanyInstallerBundle.start();
- Bundle[] bundles = bundleContext.getBundles();
- Bundle tuscanyRuntimeBundle = tuscanyInstallerBundle;
- for (Bundle bundle : bundles) {
- if ("org.apache.tuscany.sca.osgi.runtime".equals(bundle.getSymbolicName())) {
- tuscanyRuntimeBundle = bundle;
- break;
- }
- }
- setThreadContextClassLoader(tuscanyRuntimeBundle);
-
- return tuscanyRuntimeBundle;
- }
-
- /**
- * Load four Tuscany bundles (API, Core-SPI, Runtime, Extensions) and combined third party bundle
- *
- * @param bundleContext
- */
- public static Bundle load5BundleTuscanyIntoOSGi(BundleContext bundleContext) throws Exception {
-
-
- String thirdPartyBundleName = findBundle(thirdPartyDir, null);
- Bundle thirdPartyBundle = bundleContext.installBundle(thirdPartyBundleName);
- thirdPartyBundle.start();
-
-
- String scaApiBundleName = findBundle(scaApiDir, null);
- Bundle scaApiBundle = bundleContext.installBundle(scaApiBundleName);
- scaApiBundle.start();
-
- String tuscanySpiBundleName = findBundle(tuscanySpiDir, null);
- Bundle tuscanySpiBundle = bundleContext.installBundle(tuscanySpiBundleName);
-
- String tuscanyRuntimeBundleName = findBundle(tuscanyRuntimeDir, null);
- Bundle tuscanyRuntimeBundle = bundleContext.installBundle(tuscanyRuntimeBundleName);
-
- String tuscanyExtensionsBundleName = findBundle(tuscanyExtensionsDir, null);
- Bundle tuscanyExtensionsBundle = bundleContext.installBundle(tuscanyExtensionsBundleName);
-
-
- tuscanySpiBundle.start();
- tuscanyExtensionsBundle.start();
-
- setThreadContextClassLoader(tuscanyRuntimeBundle);
- return tuscanyRuntimeBundle;
-
- }
-
-
- // Tuscany runtime is started on a different thread when previously cached bundle is used.
- // Set this thread's TCCL to the one used by the runtime.
- public static void setThreadContextClassLoader(Bundle tuscanyRuntimeBundle) throws BundleException {
- if (tuscanyRuntimeBundle != null) {
-
- try {
- Class<?> runtimeClass = tuscanyRuntimeBundle.loadClass("org.apache.tuscany.sca.osgi.runtime.OSGiRuntime");
- Method getRuntimeMethod = runtimeClass.getMethod("findRuntime");
- Object runtime = getRuntimeMethod.invoke(runtimeClass);
- Method getTCCLMethod = runtimeClass.getMethod("getContextClassLoader");
- ClassLoader runtimeTCCL = (ClassLoader) getTCCLMethod.invoke(runtime);
- Thread.currentThread().setContextClassLoader(runtimeTCCL);
-
- } catch (Throwable e) {
- }
- }
- }
-
-}