Re: [VOTE] Release Apache UIMA Ruta 2.2.0 RC5
Am 07.04.2014 15:26, schrieb Marshall Schor: On 4/7/2014 8:29 AM, Peter Klügl wrote: ... Advice would be greatly appreciated. I looked at the license file in that jar and it seems to have a lot of additional licenses. So, one thing to do is to copy those licenses into the top level license file for your distribution. That would be the engine plugin artifact. Another thing to possibly do is to filter the Jar to remove the parts you're not using, and drop the notices/licenses for those parts (since the jar you'll be distributing won't have those). There are tools out there for figuring out what can be dropped, and doing the filtering - I don't have a link at this moment, but I remember coming across them when looking at Android packaging tooling. I'd rather remove the complete dependency. It is only used in the addons plugin in one view of the cde framework, but we actually have been thinking about using more functionality in the future. This would cause us to do the filtering each time. So, I will cancel the RC and create a new one with an extended LICENSE file, right? Just to mention a reason why this did not happen before: https://www.apache.org/dev/licensing-howto.html#alv2-dep quote Bundling an Apache-2.0-licensed Dependency Assuming once again that that the dependency subtree contains no bundled subcomponents under other licenses and thus the ALv2 applies uniformly to all files, there is no need to modify LICENSE. If the dependency supplies a NOTICE file, its contents must be analyzed and the relevant portions bubbled up into the top-level NOTICE file. /quote Reading this with the fact in mind that the dependency is a library developed and released by ASF, one can easily think that the license file does not need to be changed. Isn't there only one license for a released artifact at ASF? Peter -Marshall Best, Peter -Marshall
Re: [VOTE] Release Apache UIMA Ruta 2.2.0 RC5
Am 08.04.2014 09:40, schrieb Peter Klügl: ...Reading this with the fact in mind that the dependency is a library developed and released by ASF, one can easily think that the license file does not need to be changed. Isn't there only one license for a released artifact at ASF? Peter Let me reword it. I thought the license file is for licenses, not for copyright notices. Those should go to the notice file as we do with the IBM or University notices. Peter
[jira] [Created] (UIMA-3724) Adding (J)CasUtil.selectCoveredSingle()
Ofer Bronstein created UIMA-3724: Summary: Adding (J)CasUtil.selectCoveredSingle() Key: UIMA-3724 URL: https://issues.apache.org/jira/browse/UIMA-3724 Project: UIMA Issue Type: Improvement Components: uimaFIT Reporter: Ofer Bronstein Priority: Minor JCasUtil (and its equivalent CASUtil) have two very useful methods: - {{selectSingle(JCas jCas, ClassT type)}}, retrieving all T type annotations from the CAS, making sure only one exists, and returning it - {{selectCovered(JCas jCas, final ClassT type, AnnotationFS coveringAnnotation)}}, retrieving all T type annotations from the CAS, that exist in the span defined by the covering annotation. My request is to add a {{selectCoveredSingle}} method (I already implemented and tested, written below). It would retrieve all T type annotation in the span of the covering annotation, make sure there is only one, and return it. The uses for such a method would be really common, as this assists in performing something very basic in UIMA - once you have some annotation, you want to retrieve other information on it, and if it is a small unit, then you know in advance that many types of information should only appear once for that annotation. Otherwise, it's an error. For instance, say I have linguistically annotated text, and I hold some intersting annotation of a Token. Then I want to find out what is its Part Of Speech. Then I would simply call: {{selectCoveredSingle(jcas, PartOfSpeech.class, token)}}, and get exactly one PartOfSpeech annotation as I expected. If there is none or more then one, an exception is thrown. One could also use a method like {{selectCoveredSingleOptional}} (not implemented yet), that does exactly the same, but returns null when no such annotation exists, instead of throwing an exception. This makes sense when a token can have some optional attribute. In linguistics, it could be when a Token may be a NamedEntity, but not necessarily. the implementation is made out of two methods - the first should be in JCasUtil, the second should be in CASUtil. === Implementation: === /** * Get the annotation of the given annotation type constrained by a 'covering' annotation. * Iterates over all annotations of the given type to find the covered annotations. * Does not use subiterators. * * @param T *the JCas type. * @param jCas *a JCas containing the annotation. * @param type *a UIMA type. * @param coveringAnnotation *the covering annotation. * @return the single instance of the given type. * @throws IllegalArgumentException if not exactly one instance if the given type is present * under the covering annotation. * @see Subiterator * * @author Ofer Bronstein * @since April 2014 */ @SuppressWarnings(unchecked) public static T extends Annotation T selectCoveredSingle(JCas jCas, final ClassT type, AnnotationFS coveringAnnotation) { return (T) selectCoveredSingle(jCas.getCas(), JCasUtil.getType(jCas, type), coveringAnnotation); } /** * Get the annotation of the given annotation type constrained by a 'covering' annotation. * Iterates over all annotations of the given type to find the covered annotations. * Does not use subiterators. * * @param cas *a cas containing the annotation. * @param type *a UIMA type. * @param coveringAnnotation *the covering annotation. * @return the single instance of the given type. * @throws IllegalArgumentException if not exactly one instance if the given type is present * under the covering annotation. * @see Subiterator * * @author Ofer Bronstein * @since April 2014 */ public static AnnotationFS selectCoveredSingle(CAS cas, Type type, AnnotationFS coveringAnnotation) { ListAnnotationFS annotations = CasUtil.selectCovered(cas, type, coveringAnnotation); if (annotations.isEmpty()) { throw new IllegalArgumentException(CAS does not contain any [ + type.getName() + ]); } if (annotations.size() 1) { throw new IllegalArgumentException(CAS contains more than one [ + type.getName() + ]); } return annotations.get(0); } -- This message was sent by
[jira] [Updated] (UIMA-3724) Adding (J)CasUtil.selectCoveredSingle()
[ https://issues.apache.org/jira/browse/UIMA-3724?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Richard Eckart de Castilho updated UIMA-3724: - Fix Version/s: 2.0.1uimaFIT Adding (J)CasUtil.selectCoveredSingle() --- Key: UIMA-3724 URL: https://issues.apache.org/jira/browse/UIMA-3724 Project: UIMA Issue Type: Improvement Components: uimaFIT Reporter: Ofer Bronstein Priority: Minor Labels: patch Fix For: 2.0.1uimaFIT Original Estimate: 5m Remaining Estimate: 5m JCasUtil (and its equivalent CASUtil) have two very useful methods: - {{selectSingle(JCas jCas, ClassT type)}}, retrieving all T type annotations from the CAS, making sure only one exists, and returning it - {{selectCovered(JCas jCas, final ClassT type, AnnotationFS coveringAnnotation)}}, retrieving all T type annotations from the CAS, that exist in the span defined by the covering annotation. My request is to add a {{selectCoveredSingle}} method (I already implemented and tested, written below). It would retrieve all T type annotation in the span of the covering annotation, make sure there is only one, and return it. The uses for such a method would be really common, as this assists in performing something very basic in UIMA - once you have some annotation, you want to retrieve other information on it, and if it is a small unit, then you know in advance that many types of information should only appear once for that annotation. Otherwise, it's an error. For instance, say I have linguistically annotated text, and I hold some intersting annotation of a Token. Then I want to find out what is its Part Of Speech. Then I would simply call: {{selectCoveredSingle(jcas, PartOfSpeech.class, token)}}, and get exactly one PartOfSpeech annotation as I expected. If there is none or more then one, an exception is thrown. One could also use a method like {{selectCoveredSingleOptional}} (not implemented yet), that does exactly the same, but returns null when no such annotation exists, instead of throwing an exception. This makes sense when a token can have some optional attribute. In linguistics, it could be when a Token may be a NamedEntity, but not necessarily. the implementation is made out of two methods - the first should be in JCasUtil, the second should be in CASUtil. === Implementation: === /** * Get the annotation of the given annotation type constrained by a 'covering' annotation. * Iterates over all annotations of the given type to find the covered annotations. * Does not use subiterators. * * @param T *the JCas type. * @param jCas *a JCas containing the annotation. * @param type *a UIMA type. * @param coveringAnnotation *the covering annotation. * @return the single instance of the given type. * @throws IllegalArgumentException if not exactly one instance if the given type is present * under the covering annotation. * @see Subiterator * * @author Ofer Bronstein * @since April 2014 */ @SuppressWarnings(unchecked) public static T extends Annotation T selectCoveredSingle(JCas jCas, final ClassT type, AnnotationFS coveringAnnotation) { return (T) selectCoveredSingle(jCas.getCas(), JCasUtil.getType(jCas, type), coveringAnnotation); } /** * Get the annotation of the given annotation type constrained by a 'covering' annotation. * Iterates over all annotations of the given type to find the covered annotations. * Does not use subiterators. * * @param cas *a cas containing the annotation. * @param type *a UIMA type. * @param coveringAnnotation *the covering annotation. * @return the single instance of the given type. * @throws IllegalArgumentException if not exactly one instance if the given type is present * under the covering annotation. * @see Subiterator * * @author Ofer Bronstein * @since April 2014 */ public static AnnotationFS selectCoveredSingle(CAS cas, Type type, AnnotationFS coveringAnnotation) { ListAnnotationFS annotations = CasUtil.selectCovered(cas, type, coveringAnnotation); if (annotations.isEmpty()) { throw new IllegalArgumentException(CAS does not contain any [ + type.getName() + ]); } if
[jira] [Assigned] (UIMA-3724) Adding (J)CasUtil.selectCoveredSingle()
[ https://issues.apache.org/jira/browse/UIMA-3724?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Richard Eckart de Castilho reassigned UIMA-3724: Assignee: Richard Eckart de Castilho Adding (J)CasUtil.selectCoveredSingle() --- Key: UIMA-3724 URL: https://issues.apache.org/jira/browse/UIMA-3724 Project: UIMA Issue Type: Improvement Components: uimaFIT Reporter: Ofer Bronstein Assignee: Richard Eckart de Castilho Priority: Minor Labels: patch Fix For: 2.0.1uimaFIT Original Estimate: 5m Remaining Estimate: 5m JCasUtil (and its equivalent CASUtil) have two very useful methods: - {{selectSingle(JCas jCas, ClassT type)}}, retrieving all T type annotations from the CAS, making sure only one exists, and returning it - {{selectCovered(JCas jCas, final ClassT type, AnnotationFS coveringAnnotation)}}, retrieving all T type annotations from the CAS, that exist in the span defined by the covering annotation. My request is to add a {{selectCoveredSingle}} method (I already implemented and tested, written below). It would retrieve all T type annotation in the span of the covering annotation, make sure there is only one, and return it. The uses for such a method would be really common, as this assists in performing something very basic in UIMA - once you have some annotation, you want to retrieve other information on it, and if it is a small unit, then you know in advance that many types of information should only appear once for that annotation. Otherwise, it's an error. For instance, say I have linguistically annotated text, and I hold some intersting annotation of a Token. Then I want to find out what is its Part Of Speech. Then I would simply call: {{selectCoveredSingle(jcas, PartOfSpeech.class, token)}}, and get exactly one PartOfSpeech annotation as I expected. If there is none or more then one, an exception is thrown. One could also use a method like {{selectCoveredSingleOptional}} (not implemented yet), that does exactly the same, but returns null when no such annotation exists, instead of throwing an exception. This makes sense when a token can have some optional attribute. In linguistics, it could be when a Token may be a NamedEntity, but not necessarily. the implementation is made out of two methods - the first should be in JCasUtil, the second should be in CASUtil. === Implementation: === /** * Get the annotation of the given annotation type constrained by a 'covering' annotation. * Iterates over all annotations of the given type to find the covered annotations. * Does not use subiterators. * * @param T *the JCas type. * @param jCas *a JCas containing the annotation. * @param type *a UIMA type. * @param coveringAnnotation *the covering annotation. * @return the single instance of the given type. * @throws IllegalArgumentException if not exactly one instance if the given type is present * under the covering annotation. * @see Subiterator * * @author Ofer Bronstein * @since April 2014 */ @SuppressWarnings(unchecked) public static T extends Annotation T selectCoveredSingle(JCas jCas, final ClassT type, AnnotationFS coveringAnnotation) { return (T) selectCoveredSingle(jCas.getCas(), JCasUtil.getType(jCas, type), coveringAnnotation); } /** * Get the annotation of the given annotation type constrained by a 'covering' annotation. * Iterates over all annotations of the given type to find the covered annotations. * Does not use subiterators. * * @param cas *a cas containing the annotation. * @param type *a UIMA type. * @param coveringAnnotation *the covering annotation. * @return the single instance of the given type. * @throws IllegalArgumentException if not exactly one instance if the given type is present * under the covering annotation. * @see Subiterator * * @author Ofer Bronstein * @since April 2014 */ public static AnnotationFS selectCoveredSingle(CAS cas, Type type, AnnotationFS coveringAnnotation) { ListAnnotationFS annotations = CasUtil.selectCovered(cas, type, coveringAnnotation); if (annotations.isEmpty()) { throw new IllegalArgumentException(CAS does not contain any [ +
[jira] [Commented] (UIMA-3724) Adding (J)CasUtil.selectCoveredSingle()
[ https://issues.apache.org/jira/browse/UIMA-3724?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13962938#comment-13962938 ] Richard Eckart de Castilho commented on UIMA-3724: -- Sounds reasonable. The implementation could be made more efficient though by not resorting internally to selectCovered(). An exception could already be thrown when the count hits 2 without checking if there are any more. I'm considering adding a method like selectCovered(jcas, type, covering, count). Adding (J)CasUtil.selectCoveredSingle() --- Key: UIMA-3724 URL: https://issues.apache.org/jira/browse/UIMA-3724 Project: UIMA Issue Type: Improvement Components: uimaFIT Reporter: Ofer Bronstein Priority: Minor Labels: patch Fix For: 2.0.1uimaFIT Original Estimate: 5m Remaining Estimate: 5m JCasUtil (and its equivalent CASUtil) have two very useful methods: - {{selectSingle(JCas jCas, ClassT type)}}, retrieving all T type annotations from the CAS, making sure only one exists, and returning it - {{selectCovered(JCas jCas, final ClassT type, AnnotationFS coveringAnnotation)}}, retrieving all T type annotations from the CAS, that exist in the span defined by the covering annotation. My request is to add a {{selectCoveredSingle}} method (I already implemented and tested, written below). It would retrieve all T type annotation in the span of the covering annotation, make sure there is only one, and return it. The uses for such a method would be really common, as this assists in performing something very basic in UIMA - once you have some annotation, you want to retrieve other information on it, and if it is a small unit, then you know in advance that many types of information should only appear once for that annotation. Otherwise, it's an error. For instance, say I have linguistically annotated text, and I hold some intersting annotation of a Token. Then I want to find out what is its Part Of Speech. Then I would simply call: {{selectCoveredSingle(jcas, PartOfSpeech.class, token)}}, and get exactly one PartOfSpeech annotation as I expected. If there is none or more then one, an exception is thrown. One could also use a method like {{selectCoveredSingleOptional}} (not implemented yet), that does exactly the same, but returns null when no such annotation exists, instead of throwing an exception. This makes sense when a token can have some optional attribute. In linguistics, it could be when a Token may be a NamedEntity, but not necessarily. the implementation is made out of two methods - the first should be in JCasUtil, the second should be in CASUtil. === Implementation: === /** * Get the annotation of the given annotation type constrained by a 'covering' annotation. * Iterates over all annotations of the given type to find the covered annotations. * Does not use subiterators. * * @param T *the JCas type. * @param jCas *a JCas containing the annotation. * @param type *a UIMA type. * @param coveringAnnotation *the covering annotation. * @return the single instance of the given type. * @throws IllegalArgumentException if not exactly one instance if the given type is present * under the covering annotation. * @see Subiterator * * @author Ofer Bronstein * @since April 2014 */ @SuppressWarnings(unchecked) public static T extends Annotation T selectCoveredSingle(JCas jCas, final ClassT type, AnnotationFS coveringAnnotation) { return (T) selectCoveredSingle(jCas.getCas(), JCasUtil.getType(jCas, type), coveringAnnotation); } /** * Get the annotation of the given annotation type constrained by a 'covering' annotation. * Iterates over all annotations of the given type to find the covered annotations. * Does not use subiterators. * * @param cas *a cas containing the annotation. * @param type *a UIMA type. * @param coveringAnnotation *the covering annotation. * @return the single instance of the given type. * @throws IllegalArgumentException if not exactly one instance if the given type is present * under the covering annotation. * @see Subiterator * * @author Ofer Bronstein * @since April 2014 */ public static AnnotationFS selectCoveredSingle(CAS cas, Type type, AnnotationFS
[jira] [Created] (UIMA-3725) DUCC Job Driver (JD) hangs if an Error occurs during initialize phase
Lou DeGenaro created UIMA-3725: -- Summary: DUCC Job Driver (JD) hangs if an Error occurs during initialize phase Key: UIMA-3725 URL: https://issues.apache.org/jira/browse/UIMA-3725 Project: UIMA Issue Type: Bug Components: DUCC Reporter: Lou DeGenaro Assignee: Lou DeGenaro Fix For: 1.0-Ducc 07 Apr 2014 16:45:24,544 36 INFO jd.JobDriver initialize N/A jd.step:initialize 07 Apr 2014 16:45:24,558 36 ERROR jd.JobDriverComponent process N/A java.lang.NoClassDefFoundError: org.apache.uima.resourceSpecifier.factory.ServiceContext at java.lang.J9VMInternals.verifyImpl(Native Method) at java.lang.J9VMInternals.verify(J9VMInternals.java:93) at java.lang.J9VMInternals.initialize(J9VMInternals.java:170) at org.apache.uima.ducc.transport.uima.dd.generator.DeploymentDescriptorGenerator.generateDeploymentDescriptor(DeploymentDescriptorGenerator.java:216) at org.apache.uima.ducc.transport.uima.dd.generator.DeploymentDescriptorGenerator.generate(DeploymentDescriptorGenerator.java:102) at org.apache.uima.ducc.jd.JobDriver.initialize(JobDriver.java:149) at org.apache.uima.ducc.jd.JobDriverComponent.process(JobDriverComponent.java:145) at org.apache.uima.ducc.jd.JobDriverComponent.evaluateJobDriverConstraints(JobDriverComponent.java:252) at org.apache.uima.ducc.jd.event.JobDriverEventListener.onOrchestratorAbbreviatedStateDuccEvent(JobDriverEventListener.java:39) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:88) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55) at java.lang.reflect.Method.invoke(Method.java:613) at org.apache.camel.component.bean.MethodInfo.invoke(MethodInfo.java:341) at org.apache.camel.component.bean.MethodInfo$1.proceed(MethodInfo.java:238) at org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:166) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) at org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99) at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:73) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) at org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99) at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) at org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:91) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) at org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:330) at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:220) at org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:45) at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) at org.apache.camel.processor.interceptor.DefaultChannel.process(DefaultChannel.java:303) at org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:45) at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) at org.apache.camel.processor.UnitOfWorkProcessor.processAsync(UnitOfWorkProcessor.java:150) at org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:117) at org.apache.camel.processor.RouteInflightRepositoryProcessor.processNext(RouteInflightRepositoryProcessor.java:48) at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) at org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99) at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:73) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:99) at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:86) at org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:104) at org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:560) at org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:498) at org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:467) at
[jira] [Commented] (UIMA-3724) Adding (J)CasUtil.selectCoveredSingle()
[ https://issues.apache.org/jira/browse/UIMA-3724?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13963004#comment-13963004 ] Ofer Bronstein commented on UIMA-3724: -- That would be good. Note that selectCovered(jcas, type, covering, count) won't allow for an equivalent to selectCoveredSingleOptional (like for a NamedEntity), unless this will be somehow explicitly treated (another parameter stating if count should be equal or is just an upper limit? replacing count with minCount and maxCount? having a parallel method where count is just an upper limit? probably other ways exist as well.) Adding (J)CasUtil.selectCoveredSingle() --- Key: UIMA-3724 URL: https://issues.apache.org/jira/browse/UIMA-3724 Project: UIMA Issue Type: Improvement Components: uimaFIT Reporter: Ofer Bronstein Assignee: Richard Eckart de Castilho Priority: Minor Labels: patch Fix For: 2.0.1uimaFIT Original Estimate: 5m Remaining Estimate: 5m JCasUtil (and its equivalent CASUtil) have two very useful methods: - {{selectSingle(JCas jCas, ClassT type)}}, retrieving all T type annotations from the CAS, making sure only one exists, and returning it - {{selectCovered(JCas jCas, final ClassT type, AnnotationFS coveringAnnotation)}}, retrieving all T type annotations from the CAS, that exist in the span defined by the covering annotation. My request is to add a {{selectCoveredSingle}} method (I already implemented and tested, written below). It would retrieve all T type annotation in the span of the covering annotation, make sure there is only one, and return it. The uses for such a method would be really common, as this assists in performing something very basic in UIMA - once you have some annotation, you want to retrieve other information on it, and if it is a small unit, then you know in advance that many types of information should only appear once for that annotation. Otherwise, it's an error. For instance, say I have linguistically annotated text, and I hold some intersting annotation of a Token. Then I want to find out what is its Part Of Speech. Then I would simply call: {{selectCoveredSingle(jcas, PartOfSpeech.class, token)}}, and get exactly one PartOfSpeech annotation as I expected. If there is none or more then one, an exception is thrown. One could also use a method like {{selectCoveredSingleOptional}} (not implemented yet), that does exactly the same, but returns null when no such annotation exists, instead of throwing an exception. This makes sense when a token can have some optional attribute. In linguistics, it could be when a Token may be a NamedEntity, but not necessarily. the implementation is made out of two methods - the first should be in JCasUtil, the second should be in CASUtil. === Implementation: === /** * Get the annotation of the given annotation type constrained by a 'covering' annotation. * Iterates over all annotations of the given type to find the covered annotations. * Does not use subiterators. * * @param T *the JCas type. * @param jCas *a JCas containing the annotation. * @param type *a UIMA type. * @param coveringAnnotation *the covering annotation. * @return the single instance of the given type. * @throws IllegalArgumentException if not exactly one instance if the given type is present * under the covering annotation. * @see Subiterator * * @author Ofer Bronstein * @since April 2014 */ @SuppressWarnings(unchecked) public static T extends Annotation T selectCoveredSingle(JCas jCas, final ClassT type, AnnotationFS coveringAnnotation) { return (T) selectCoveredSingle(jCas.getCas(), JCasUtil.getType(jCas, type), coveringAnnotation); } /** * Get the annotation of the given annotation type constrained by a 'covering' annotation. * Iterates over all annotations of the given type to find the covered annotations. * Does not use subiterators. * * @param cas *a cas containing the annotation. * @param type *a UIMA type. * @param coveringAnnotation *the covering annotation. * @return the single instance of the given type. * @throws IllegalArgumentException if not exactly one instance if the given type is present * under the covering annotation. * @see Subiterator * * @author Ofer Bronstein
Re: [VOTE] Release Apache UIMA Ruta 2.2.0 RC5
On 4/8/2014 3:47 AM, Peter Klügl wrote: Am 08.04.2014 09:40, schrieb Peter Klügl: ...Reading this with the fact in mind that the dependency is a library developed and released by ASF, one can easily think that the license file does not need to be changed. Isn't there only one license for a released artifact at ASF? Peter If the dependency is a library developed and released by the ASF, and it doesn't require any license other than the Apache v2 license, then you don't need to repeat that license. However, in this case, the library artifact developers have decided (for reasons I don't know) that they need to include licenses other than the Apache v2 license, for their distributed artifact (their JAR, which, we are, in turn, redistributing), which, means, I think, that if we are (re)distributing their artifact, we have to bubble up their licenses to our top level, or have an alternative licensing statement / strategy that describes what re-bundlers of our work would need to know/do. -Marshall Let me reword it. I thought the license file is for licenses, not for copyright notices. Those should go to the notice file as we do with the IBM or University notices. Peter
Re: [VOTE] Release Apache UIMA Ruta 2.2.0 RC5
On 4/8/2014 3:40 AM, Peter Klügl wrote: Am 07.04.2014 15:26, schrieb Marshall Schor: On 4/7/2014 8:29 AM, Peter Klügl wrote: ... Advice would be greatly appreciated. I looked at the license file in that jar and it seems to have a lot of additional licenses. So, one thing to do is to copy those licenses into the top level license file for your distribution. That would be the engine plugin artifact. Another thing to possibly do is to filter the Jar to remove the parts you're not using, and drop the notices/licenses for those parts (since the jar you'll be distributing won't have those). There are tools out there for figuring out what can be dropped, and doing the filtering - I don't have a link at this moment, but I remember coming across them when looking at Android packaging tooling. I'd rather remove the complete dependency. It is only used in the addons plugin in one view of the cde framework, but we actually have been thinking about using more functionality in the future. This would cause us to do the filtering each time. So, I will cancel the RC and create a new one with an extended LICENSE file, right? Just to mention a reason why this did not happen before: https://www.apache.org/dev/licensing-howto.html#alv2-dep quote Bundling an Apache-2.0-licensed Dependency Assuming once again that that the dependency subtree contains no bundled subcomponents under other licenses and thus the ALv2 applies uniformly to all files, there is no need to modify LICENSE. But this doesn't seem to be the case here. The dependency subtree (the Jar) presumably has something licensed under those other licenses (not Apache-2.0) included in their Jar? If the dependency supplies a NOTICE file, its contents must be analyzed and the relevant portions bubbled up into the top-level NOTICE file. /quote Reading this with the fact in mind that the dependency is a library developed and released by ASF, one can easily think that the license file does not need to be changed. Isn't there only one license for a released artifact at ASF? Anytime we prepare convenience packaging that mixes work we do at the ASF (which is licensed under the Apache v2 license) and other artifacts licensed under other licenses (icons, etc.), we are releasing an artifact which has more than just the Apache v2 license. If others then incorporate our artifact, they have to deal with those other licenses and notices, too. This is something we need to consider when building artifacts. Sometimes, it not so great a concern if we bundle lots of other things having separate notice/files (although it makes it a bit more difficult for end-users to understand their obligations), but other times, for instance, if we expect other developers to take our work and build other products of their own, then it becomes more of a concern, because those other developers will be redistributing their works, and they have to then do a careful analysis of all the licenses and notices (much as we're having to do now ...). -Marshall Peter -Marshall Best, Peter -Marshall
[jira] [Closed] (UIMA-3712) Improve DUCC's cleanup code on stop
[ https://issues.apache.org/jira/browse/UIMA-3712?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Jerry Cwiklik closed UIMA-3712. --- Resolution: Fixed removed unnecessary shutdown hook Improve DUCC's cleanup code on stop --- Key: UIMA-3712 URL: https://issues.apache.org/jira/browse/UIMA-3712 Project: UIMA Issue Type: Bug Components: DUCC Affects Versions: 1.0-Ducc Reporter: Jerry Cwiklik Assignee: Jerry Cwiklik Priority: Minor Remove unnecessary ShutdownHook in AbstractManagedService class. Prevent executing AbstractDuccComponent.stop() multiple times. -- This message was sent by Atlassian JIRA (v6.2#6252)
[jira] [Commented] (UIMA-3725) DUCC Job Driver (JD) hangs if an Error occurs during initialize phase
[ https://issues.apache.org/jira/browse/UIMA-3725?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13963210#comment-13963210 ] Lou DeGenaro commented on UIMA-3725: Need to catch Error (Throwable) and clean-up. DUCC Job Driver (JD) hangs if an Error occurs during initialize phase - Key: UIMA-3725 URL: https://issues.apache.org/jira/browse/UIMA-3725 Project: UIMA Issue Type: Bug Components: DUCC Reporter: Lou DeGenaro Assignee: Lou DeGenaro Fix For: 1.0-Ducc 07 Apr 2014 16:45:24,544 36 INFO jd.JobDriver initialize N/A jd.step:initialize 07 Apr 2014 16:45:24,558 36 ERROR jd.JobDriverComponent process N/A java.lang.NoClassDefFoundError: org.apache.uima.resourceSpecifier.factory.ServiceContext at java.lang.J9VMInternals.verifyImpl(Native Method) at java.lang.J9VMInternals.verify(J9VMInternals.java:93) at java.lang.J9VMInternals.initialize(J9VMInternals.java:170) at org.apache.uima.ducc.transport.uima.dd.generator.DeploymentDescriptorGenerator.generateDeploymentDescriptor(DeploymentDescriptorGenerator.java:216) at org.apache.uima.ducc.transport.uima.dd.generator.DeploymentDescriptorGenerator.generate(DeploymentDescriptorGenerator.java:102) at org.apache.uima.ducc.jd.JobDriver.initialize(JobDriver.java:149) at org.apache.uima.ducc.jd.JobDriverComponent.process(JobDriverComponent.java:145) at org.apache.uima.ducc.jd.JobDriverComponent.evaluateJobDriverConstraints(JobDriverComponent.java:252) at org.apache.uima.ducc.jd.event.JobDriverEventListener.onOrchestratorAbbreviatedStateDuccEvent(JobDriverEventListener.java:39) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:88) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55) at java.lang.reflect.Method.invoke(Method.java:613) at org.apache.camel.component.bean.MethodInfo.invoke(MethodInfo.java:341) at org.apache.camel.component.bean.MethodInfo$1.proceed(MethodInfo.java:238) at org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:166) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) at org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99) at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:73) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) at org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99) at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) at org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:91) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) at org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:330) at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:220) at org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:45) at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) at org.apache.camel.processor.interceptor.DefaultChannel.process(DefaultChannel.java:303) at org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:45) at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) at org.apache.camel.processor.UnitOfWorkProcessor.processAsync(UnitOfWorkProcessor.java:150) at org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:117) at org.apache.camel.processor.RouteInflightRepositoryProcessor.processNext(RouteInflightRepositoryProcessor.java:48) at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) at org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99) at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:73) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:99) at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:86) at org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:104) at
[jira] [Closed] (UIMA-3725) DUCC Job Driver (JD) hangs if an Error occurs during initialize phase
[ https://issues.apache.org/jira/browse/UIMA-3725?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Lou DeGenaro closed UIMA-3725. -- Resolution: Fixed code delivered. DUCC Job Driver (JD) hangs if an Error occurs during initialize phase - Key: UIMA-3725 URL: https://issues.apache.org/jira/browse/UIMA-3725 Project: UIMA Issue Type: Bug Components: DUCC Reporter: Lou DeGenaro Assignee: Lou DeGenaro Fix For: 1.0-Ducc 07 Apr 2014 16:45:24,544 36 INFO jd.JobDriver initialize N/A jd.step:initialize 07 Apr 2014 16:45:24,558 36 ERROR jd.JobDriverComponent process N/A java.lang.NoClassDefFoundError: org.apache.uima.resourceSpecifier.factory.ServiceContext at java.lang.J9VMInternals.verifyImpl(Native Method) at java.lang.J9VMInternals.verify(J9VMInternals.java:93) at java.lang.J9VMInternals.initialize(J9VMInternals.java:170) at org.apache.uima.ducc.transport.uima.dd.generator.DeploymentDescriptorGenerator.generateDeploymentDescriptor(DeploymentDescriptorGenerator.java:216) at org.apache.uima.ducc.transport.uima.dd.generator.DeploymentDescriptorGenerator.generate(DeploymentDescriptorGenerator.java:102) at org.apache.uima.ducc.jd.JobDriver.initialize(JobDriver.java:149) at org.apache.uima.ducc.jd.JobDriverComponent.process(JobDriverComponent.java:145) at org.apache.uima.ducc.jd.JobDriverComponent.evaluateJobDriverConstraints(JobDriverComponent.java:252) at org.apache.uima.ducc.jd.event.JobDriverEventListener.onOrchestratorAbbreviatedStateDuccEvent(JobDriverEventListener.java:39) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:88) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55) at java.lang.reflect.Method.invoke(Method.java:613) at org.apache.camel.component.bean.MethodInfo.invoke(MethodInfo.java:341) at org.apache.camel.component.bean.MethodInfo$1.proceed(MethodInfo.java:238) at org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:166) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) at org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99) at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:73) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) at org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99) at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) at org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:91) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) at org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:330) at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:220) at org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:45) at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) at org.apache.camel.processor.interceptor.DefaultChannel.process(DefaultChannel.java:303) at org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:45) at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) at org.apache.camel.processor.UnitOfWorkProcessor.processAsync(UnitOfWorkProcessor.java:150) at org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:117) at org.apache.camel.processor.RouteInflightRepositoryProcessor.processNext(RouteInflightRepositoryProcessor.java:48) at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) at org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99) at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:73) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:99) at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:86) at org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:104) at
[jira] [Created] (UIMA-3726) DUCC SM Should support dynamic modification of all registration parameters
Jim Challenger created UIMA-3726: Summary: DUCC SM Should support dynamic modification of all registration parameters Key: UIMA-3726 URL: https://issues.apache.org/jira/browse/UIMA-3726 Project: UIMA Issue Type: Improvement Components: DUCC Reporter: Jim Challenger Assignee: Jim Challenger Because services are forever it should be possible to dynamically change all registration options without the need to reregister. Some such options will require service start. In future work we will include a rolling restart to deploy updates with minimal disruption; for now manual stop and restart are required. Some can be dynamically applied. Some require restart of the ping/monitor only; this is done without service disruption. -- This message was sent by Atlassian JIRA (v6.2#6252)
[jira] [Created] (UIMA-3727) DUCC SM Doc updates for reworked SM
Jim Challenger created UIMA-3727: Summary: DUCC SM Doc updates for reworked SM Key: UIMA-3727 URL: https://issues.apache.org/jira/browse/UIMA-3727 Project: UIMA Issue Type: Improvement Components: DUCC Reporter: Jim Challenger Assignee: Jim Challenger This jira will be used to cover the various documentation updates for the reworked and enhanced SM. -- This message was sent by Atlassian JIRA (v6.2#6252)