Author: cwiklik
Date: Fri Nov  7 21:44:38 2014
New Revision: 1637460

URL: http://svn.apache.org/r1637460
Log:
UIMA-4076 Initial implementation for JD and JP

Added:
    
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jp/JobProcessManager.java
    
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jp/JobProcessManagerCallbackListener.java
    
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jp/UimaProcessor.java
    
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jp/classloader/
    
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jp/classloader/JobProcessDeployer.java
    
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jp/iface/
    
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jp/iface/IJobProcessDeployer.java
    
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jp/iface/IJobProcessManager.java
    
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jp/iface/IJobProcessManagerCallbackListener.java
    
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jp/iface/IUimaProcessor.java
    
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jp/iface/ServiceFailedInitialization.java

Added: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jp/JobProcessManager.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jp/JobProcessManager.java?rev=1637460&view=auto
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jp/JobProcessManager.java
 (added)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jp/JobProcessManager.java
 Fri Nov  7 21:44:38 2014
@@ -0,0 +1,48 @@
+/*
+ * 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.uima.ducc.container.jp;
+
+import org.apache.uima.ducc.container.jp.classloader.JobProcessDeployer;
+import org.apache.uima.ducc.container.jp.iface.IJobProcessDeployer;
+import org.apache.uima.ducc.container.jp.iface.IJobProcessManager;
+import 
org.apache.uima.ducc.container.jp.iface.IJobProcessManagerCallbackListener;
+import org.apache.uima.ducc.container.jp.iface.IUimaProcessor;
+import org.apache.uima.ducc.container.jp.iface.ServiceFailedInitialization;
+
+
+public class JobProcessManager implements IJobProcessManager {
+       private IJobProcessManagerCallbackListener callbackListener;
+       private IJobProcessDeployer jobProcessDeployer;
+       
+       public JobProcessManager() {
+               jobProcessDeployer = new JobProcessDeployer();
+       }
+       
+       public void setCallbackListener(IJobProcessManagerCallbackListener 
callbackListener ) {
+               this.callbackListener = callbackListener;
+       }
+       
+       public IUimaProcessor deploy(String userClasspath, String[] args, 
String clz) throws ServiceFailedInitialization {
+               // This blocks until the UIMA AS service is deployed and 
initialized
+               return jobProcessDeployer.deploy(userClasspath, args, clz);
+       }
+
+
+
+}

Added: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jp/JobProcessManagerCallbackListener.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jp/JobProcessManagerCallbackListener.java?rev=1637460&view=auto
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jp/JobProcessManagerCallbackListener.java
 (added)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jp/JobProcessManagerCallbackListener.java
 Fri Nov  7 21:44:38 2014
@@ -0,0 +1,26 @@
+/*
+ * 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.uima.ducc.container.jp;
+
+import 
org.apache.uima.ducc.container.jp.iface.IJobProcessManagerCallbackListener;
+
+public class JobProcessManagerCallbackListener implements
+               IJobProcessManagerCallbackListener {
+
+}

Added: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jp/UimaProcessor.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jp/UimaProcessor.java?rev=1637460&view=auto
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jp/UimaProcessor.java
 (added)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jp/UimaProcessor.java
 Fri Nov  7 21:44:38 2014
@@ -0,0 +1,54 @@
+/*
+ * 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.uima.ducc.container.jp;
+
+import java.lang.reflect.Method;
+
+import org.apache.uima.ducc.container.jp.iface.IUimaProcessor;
+
+public class UimaProcessor implements IUimaProcessor {
+
+       Method processMethod=null;
+       Method stopMethod=null;
+       Object uimaContainerInstance = null;
+       int scaleout;
+       
+       public UimaProcessor(Object uimaContainerInstance, Method 
processMethod, Method stopMethod, int scaleout) {
+               this.processMethod = processMethod;
+               this.stopMethod = stopMethod;
+               this.uimaContainerInstance = uimaContainerInstance;
+               this.scaleout = scaleout;
+       }
+       
+       public void stop() throws Exception {
+               stopMethod.invoke(uimaContainerInstance);
+       }
+
+       
+       public void process(String xmi) throws Exception {
+               processMethod.invoke(uimaContainerInstance, xmi);
+       }
+
+       
+       public int getScaleout() throws Exception {
+               return scaleout;
+       }
+
+}

Added: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jp/classloader/JobProcessDeployer.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jp/classloader/JobProcessDeployer.java?rev=1637460&view=auto
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jp/classloader/JobProcessDeployer.java
 (added)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jp/classloader/JobProcessDeployer.java
 Fri Nov  7 21:44:38 2014
@@ -0,0 +1,146 @@
+/*
+ * 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.uima.ducc.container.jp.classloader;
+
+import java.io.File;
+import java.io.FilenameFilter;
+import java.io.IOException;
+import java.lang.reflect.Method;
+import java.net.MalformedURLException;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.uima.ducc.container.jp.UimaProcessor;
+import org.apache.uima.ducc.container.jp.iface.IJobProcessDeployer;
+import org.apache.uima.ducc.container.jp.iface.IUimaProcessor;
+import org.apache.uima.ducc.container.jp.iface.ServiceFailedInitialization;
+
+public class JobProcessDeployer implements IJobProcessDeployer {
+       private static boolean suppressClassPathDisplay;
+       // declare methods to be called via reflection
+       private static String M_DEPLOY="deploy";
+       private static String M_PROCESS="process";
+       private static String M_STOP="stop";
+       
+       public IUimaProcessor deploy(String userClasspath, String[] args, 
String clzToLoad) throws ServiceFailedInitialization {
+               try {
+                       URL[] urls = getUrls(userClasspath);
+
+                       addUrlsToSystemLoader(urls);
+
+                       Class<?> classToLaunch = null;
+                       classToLaunch = 
ClassLoader.getSystemClassLoader().loadClass(clzToLoad);
+
+                       Method deployMethod = classToLaunch.getMethod(M_DEPLOY, 
String[].class);
+                       Method processMethod = 
classToLaunch.getMethod(M_PROCESS, String.class);
+                       Method stopMethod = classToLaunch.getMethod(M_STOP);
+
+                       int args2length = args.length - 1;
+                       if (args2length < 0) {
+                               args2length = 0;
+                       }
+                       
+                       Object uimaContainerInstance = 
classToLaunch.newInstance();
+                       // This blocks until Uima AS container is fully 
initialized
+                       Object scaleout = 
deployMethod.invoke(uimaContainerInstance,
+                                       (Object) args);
+                       return new 
UimaProcessor(uimaContainerInstance,processMethod,stopMethod,(Integer)scaleout);
+       
+               } catch( Exception e) {
+                       throw new ServiceFailedInitialization(e);
+               }
+
+       }
+
+       private static void addUrlsToSystemLoader(URL[] urls) throws 
IOException {
+               URLClassLoader systemClassLoader = (URLClassLoader) ClassLoader
+                               .getSystemClassLoader();
+               try {
+                       Method method = 
URLClassLoader.class.getDeclaredMethod("addURL",
+                                       new Class[] { URL.class });
+                       method.setAccessible(true); // is normally "protected"
+                       for (URL url : urls) {
+                               method.invoke(systemClassLoader, new Object[] { 
url });
+                       }
+               } catch (Throwable t) {
+                       t.printStackTrace();
+                       throw new IOException(
+                                       "Error, could not add URL to system 
classloader");
+               }
+       }
+
+       private URL[] getUrls(String jps) throws MalformedURLException, 
IOException,
+                       URISyntaxException {
+//             String jps = 
System.getProperty("org.apache.uima.ducc.userjarpath");
+//             if (null == jps) {
+//                     System.err
+//                                     .println("Missing the 
-Dorg.apache.uima.jarpath=XXXX property");
+//                     System.exit(1);
+//             }
+               if (!suppressClassPathDisplay) {
+                       System.out.println("UimaBootstrap ClassPath:");
+               }
+               List<URL> urls = new ArrayList<URL>();
+               String[] jpaths = jps.split(File.pathSeparator);
+               for (String p : jpaths) {
+                       addUrlsFromPath(p, urls);
+               }
+               return urls.toArray(new URL[urls.size()]);
+       }
+
+       private static FilenameFilter jarFilter = new FilenameFilter() {
+               public boolean accept(File dir, String name) {
+                       name = name.toLowerCase();
+                       return (name.endsWith(".jar"));
+               }
+       };
+
+       private static void addUrlsFromPath(String p, List<URL> urls)
+                       throws MalformedURLException, IOException, 
URISyntaxException {
+               File pf = new File(p);
+               if (pf.isDirectory()) {
+                       File[] jars = pf.listFiles(jarFilter);
+                       if (jars.length == 0) {
+                               // this is the case where the user wants to 
include
+                               // a directory containing non-jar'd .class files
+                               add(urls, pf);
+                       } else {
+                               for (File f : jars) {
+                                       add(urls, f);
+                               }
+                       }
+               } else if (p.toLowerCase().endsWith(".jar")) {
+                       add(urls, pf);
+               }
+       }
+
+       private static void add(List<URL> urls, File cp)
+                       throws MalformedURLException {
+               URL url = cp.toURI().toURL();
+               if (!suppressClassPathDisplay) {
+                       System.out.format(" %s%n", url.toString());
+               }
+               urls.add(url);
+       }
+
+}

Added: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jp/iface/IJobProcessDeployer.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jp/iface/IJobProcessDeployer.java?rev=1637460&view=auto
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jp/iface/IJobProcessDeployer.java
 (added)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jp/iface/IJobProcessDeployer.java
 Fri Nov  7 21:44:38 2014
@@ -0,0 +1,25 @@
+/*
+ * 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.uima.ducc.container.jp.iface;
+
+
+public interface IJobProcessDeployer {
+       public IUimaProcessor deploy(String userClasspath, String[] args, 
String clzToLoad) throws ServiceFailedInitialization;
+}

Added: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jp/iface/IJobProcessManager.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jp/iface/IJobProcessManager.java?rev=1637460&view=auto
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jp/iface/IJobProcessManager.java
 (added)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jp/iface/IJobProcessManager.java
 Fri Nov  7 21:44:38 2014
@@ -0,0 +1,25 @@
+/*
+ * 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.uima.ducc.container.jp.iface;
+
+
+public interface IJobProcessManager {
+       public IUimaProcessor deploy(String userClasspath, String[] args, 
String clz) throws ServiceFailedInitialization;
+
+}

Added: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jp/iface/IJobProcessManagerCallbackListener.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jp/iface/IJobProcessManagerCallbackListener.java?rev=1637460&view=auto
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jp/iface/IJobProcessManagerCallbackListener.java
 (added)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jp/iface/IJobProcessManagerCallbackListener.java
 Fri Nov  7 21:44:38 2014
@@ -0,0 +1,23 @@
+/*
+ * 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.uima.ducc.container.jp.iface;
+
+public interface IJobProcessManagerCallbackListener {
+
+}

Added: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jp/iface/IUimaProcessor.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jp/iface/IUimaProcessor.java?rev=1637460&view=auto
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jp/iface/IUimaProcessor.java
 (added)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jp/iface/IUimaProcessor.java
 Fri Nov  7 21:44:38 2014
@@ -0,0 +1,26 @@
+/*
+ * 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.uima.ducc.container.jp.iface;
+
+public interface IUimaProcessor {
+       public void stop() throws Exception;
+       public void process(String xmi) throws Exception;
+       public int getScaleout() throws Exception;
+}

Added: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jp/iface/ServiceFailedInitialization.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jp/iface/ServiceFailedInitialization.java?rev=1637460&view=auto
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jp/iface/ServiceFailedInitialization.java
 (added)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jp/iface/ServiceFailedInitialization.java
 Fri Nov  7 21:44:38 2014
@@ -0,0 +1,29 @@
+/*
+ * 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.uima.ducc.container.jp.iface;
+
+public class ServiceFailedInitialization extends Exception {
+
+       private static final long serialVersionUID = 1L;
+
+       public ServiceFailedInitialization(Exception cause) {
+               super(cause);
+       }
+}


Reply via email to