Return-Path: Delivered-To: apmail-openwebbeans-commits-archive@www.apache.org Received: (qmail 47530 invoked from network); 23 Mar 2011 18:57:01 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 23 Mar 2011 18:57:01 -0000 Received: (qmail 53751 invoked by uid 500); 23 Mar 2011 17:10:37 -0000 Delivered-To: apmail-openwebbeans-commits-archive@openwebbeans.apache.org Received: (qmail 53734 invoked by uid 500); 23 Mar 2011 17:10:37 -0000 Mailing-List: contact commits-help@openwebbeans.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@openwebbeans.apache.org Delivered-To: mailing list commits@openwebbeans.apache.org Received: (qmail 53721 invoked by uid 99); 23 Mar 2011 17:10:37 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 23 Mar 2011 17:10:37 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 23 Mar 2011 17:10:28 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 07232238890D; Wed, 23 Mar 2011 17:10:06 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1084643 - in /openwebbeans/trunk/webbeans-impl/src: main/java/org/apache/webbeans/event/ main/java/org/apache/webbeans/util/ test/java/org/apache/webbeans/newtests/specalization/ test/java/org/apache/webbeans/newtests/specalization/observer/ Date: Wed, 23 Mar 2011 17:10:05 -0000 To: commits@openwebbeans.apache.org From: struberg@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20110323171006.07232238890D@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: struberg Date: Wed Mar 23 17:10:05 2011 New Revision: 1084643 URL: http://svn.apache.org/viewvc?rev=1084643&view=rev Log: OWB-550 cleanup specialization and events We must not send events to disabled beans. Added: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/BeanA.java (with props) openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/BeanB.java (with props) openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/ObserverTest.java (with props) openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/TestEvent.java (with props) Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/ObserverMethodImpl.java openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/AlternativeSpecializesProducerTest.java Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/ObserverMethodImpl.java URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/ObserverMethodImpl.java?rev=1084643&r1=1084642&r2=1084643&view=diff ============================================================================== --- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/ObserverMethodImpl.java (original) +++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/ObserverMethodImpl.java Wed Mar 23 17:10:05 2011 @@ -187,12 +187,16 @@ public class ObserverMethodImpl imple { logger.trace("Notifying with event payload : [{0}]", event); - AbstractOwbBean baseComponent = (AbstractOwbBean) bean; - AbstractOwbBean specializedComponent = null; + AbstractOwbBean component = (AbstractOwbBean) bean; + if (!bean.isEnabled()) + { + return; + } + Object object = null; CreationalContext creationalContext = null; - List methodArgsMap = null; + List methodArgsMap; if(annotatedMethod == null) { methodArgsMap = getMethodArguments(event); @@ -229,11 +233,10 @@ public class ObserverMethodImpl imple else { BeanManagerImpl manager = bean.getWebBeansContext().getBeanManagerImpl(); - specializedComponent = (AbstractOwbBean)WebBeansUtil.getMostSpecializedBean(manager, baseComponent); - Context context = null; + Context context; try { - context = manager.getContext(specializedComponent.getScope()); + context = manager.getContext(component.getScope()); } catch (ContextNotActiveException cnae) { @@ -244,14 +247,14 @@ public class ObserverMethodImpl imple // on Reception.IF_EXISTS: ignore this bean if a the contextual instance doesn't already exist - object = context.get(specializedComponent); + object = context.get(component); if (ifExist && object == null) { return; } - creationalContext = manager.createCreationalContext(specializedComponent); + creationalContext = manager.createCreationalContext(component); if (isPrivateMethod) { @@ -260,7 +263,7 @@ public class ObserverMethodImpl imple // proxy private methods (thus the invocation on the contextual reference would fail) if (object == null) { - object = context.get(specializedComponent, creationalContext); + object = context.get(component, creationalContext); } } else @@ -269,7 +272,7 @@ public class ObserverMethodImpl imple // we need to pick the contextual reference because of section 7.2: // "Invocations of producer, disposer and observer methods by the container are // business method invocations and are in- tercepted by method interceptors and decorators." - object = manager.getReference(specializedComponent, specializedComponent.getBeanClass(), creationalContext); + object = manager.getReference(component, component.getBeanClass(), creationalContext); } if (object != null) @@ -286,9 +289,9 @@ public class ObserverMethodImpl imple finally { //Destory bean instance - if (baseComponent.getScope().equals(Dependent.class) && object != null) + if (component.getScope().equals(Dependent.class) && object != null) { - baseComponent.destroy(object,creationalContext); + component.destroy(object, creationalContext); } //Destroy observer method dependent instances Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java?rev=1084643&r1=1084642&r2=1084643&view=diff ============================================================================== --- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java (original) +++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java Wed Mar 23 17:10:05 2011 @@ -135,7 +135,6 @@ import org.apache.webbeans.exception.hel import org.apache.webbeans.exception.inject.DefinitionException; import org.apache.webbeans.exception.inject.DeploymentException; import org.apache.webbeans.exception.inject.InconsistentSpecializationException; -import org.apache.webbeans.exception.inject.NullableDependencyException; import org.apache.webbeans.inject.AlternativesManager; import org.apache.webbeans.intercept.InterceptorData; import org.apache.webbeans.intercept.InterceptorDataImpl; @@ -1319,39 +1318,6 @@ public final class WebBeansUtil return false; } - /** - * Returns true if array contains the StereoType meta annotation - * - * @return true if array contains the StereoType meta annotation - */ - @Deprecated - public static boolean isComponentHasStereoType(OwbBean component) - { - return WebBeansContext.getInstance().getAnnotationManager().isComponentHasStereoType(component); - } - - /** - * Returns bean stereotypes. - * @param bean bean instance - * @return bean stereotypes - */ - @Deprecated - public static Annotation[] getComponentStereoTypes(OwbBean bean) - { - return WebBeansContext.getInstance().getAnnotationManager().getComponentStereoTypes(bean); - } - - /** - * Returns true if name exists,false otherwise. - * @param bean bean instance - * @return true if name exists - */ - @Deprecated - public static boolean hasNamedOnStereoTypes(OwbBean bean) - { - return WebBeansContext.getInstance().getAnnotationManager().hasNamedOnStereoTypes(bean); - } - public static String getManagedBeanDefaultName(String clazzName) { Asserts.assertNotNull(clazzName); @@ -1399,28 +1365,6 @@ public final class WebBeansUtil } /** - * Validates that given class obeys stereotype model - * defined by the specification. - * @param clazz stereotype class - */ - @Deprecated - public static void checkStereoTypeClass(Class clazz) - { - WebBeansContext.getInstance().getAnnotationManager().checkStereoTypeClass(clazz, clazz.getDeclaredAnnotations()); - } - - /** - * Validates that given class obeys stereotype model - * defined by the specification. - * @param clazz stereotype class - */ - @Deprecated - public static void checkStereoTypeClass(Class clazz, Annotation...annotations) - { - WebBeansContext.getInstance().getAnnotationManager().checkStereoTypeClass(clazz, annotations); - } - - /** * Return true if a list of beans are directly specialized/extended each other. * * @param beans, a set of specialized beans. @@ -1917,21 +1861,6 @@ public final class WebBeansUtil return webBeansContext.getSecurityService().doPrivilegedGetDeclaredConstructor(clazz); } - public static void checkNullable(Class type, AbstractOwbBean component) - { - Asserts.assertNotNull(type, "type parameter can not be null"); - Asserts.assertNotNull(component, "component parameter can not be null"); - - if (type.isPrimitive()) - { - if (component.isNullable()) - { - throw new NullableDependencyException("Injection point for primitive type resolves webbeans component " - + "with return type : " + component.getReturnType().getName() + " with nullable"); - } - } - } - /** * Configures the producer method specialization. * @@ -1989,18 +1918,6 @@ public final class WebBeansUtil } - @Deprecated - public static void checkInterceptorResolverParams(Annotation... interceptorBindings) - { - WebBeansContext.getInstance().getAnnotationManager().checkInterceptorResolverParams(interceptorBindings); - } - - @Deprecated - public static void checkDecoratorResolverParams(Set apiTypes, Annotation... qualifiers) - { - WebBeansContext.getInstance().getAnnotationManager().checkDecoratorResolverParams(apiTypes, qualifiers); - } - /** * Returns true if instance injection point false otherwise. * @@ -2027,7 +1944,7 @@ public final class WebBeansUtil return false; } - Class rawType = null; + Class rawType; if(ClassUtil.isParametrizedType(injectionPoint.getType())) { @@ -2065,7 +1982,7 @@ public final class WebBeansUtil Class clazz = injectionTargetEvent.getAnnotatedType().getJavaClass(); if (webBeansContext.getInterceptorsManager().isInterceptorEnabled(clazz)) { - ManagedBean component = null; + ManagedBean component; webBeansContext.getInterceptorUtil().checkInterceptorConditions(clazz); component = defineManagedBean(managedBeanCreator, injectionTargetEvent, false); @@ -2201,88 +2118,6 @@ public final class WebBeansUtil } } - public static boolean isManagedBean(AbstractOwbBean component) - { - if(component.getWebBeansType().equals(WebBeansType.MANAGED) || - component.getWebBeansType().equals(WebBeansType.INTERCEPTOR) || - component.getWebBeansType().equals(WebBeansType.DECORATOR)) - { - return true; - } - - return false; - } - - public static boolean isProducerBean(AbstractOwbBean bean) - { - if(bean.getWebBeansType().equals(WebBeansType.PRODUCERFIELD) || - bean.getWebBeansType().equals(WebBeansType.PRODUCERMETHOD)) - { - return true; - } - - return false; - } - - /** - * Returns true if bean is an enterprise bean, false otherwise. - * @param bean bean instance - * @return true if bean is an enterprise bean - */ - public static boolean isEnterpriseBean(AbstractOwbBean bean) - { - Asserts.assertNotNull(bean,"Bean is null"); - - if(bean.getWebBeansType().equals(WebBeansType.ENTERPRISE)) - { - return true; - } - - return false; - } - -// public static void addInjectedImplicitEventComponent(InjectionPoint injectionPoint) -// { -// Type type = injectionPoint.getType(); -// -// if(!(type instanceof ParameterizedType)) -// { -// return; -// } -// -// Type[] args = new Type[0]; -// -// Class clazz = null; -// if (type instanceof ParameterizedType) -// { -// ParameterizedType pt = (ParameterizedType) type; -// args = pt.getActualTypeArguments(); -// } -// -// clazz = (Class)args[0]; -// -// Annotation[] qualifiers = new Annotation[injectionPoint.getQualifiers().size()]; -// qualifiers = injectionPoint.getQualifiers().toArray(qualifiers); -// -// Bean bean = createObservableImplicitComponent(EventImpl.class, clazz, qualifiers); -// BeanManagerImpl.getManager().addBean(bean); -// } - - -// public static void addInjectedImplicitInstanceComponent(InjectionPoint injectionPoint) -// { -// ParameterizedType genericType = (ParameterizedType)injectionPoint.getType(); -// -// Class> clazz = (Class>)genericType.getRawType(); -// -// Annotation[] qualifiers = new Annotation[injectionPoint.getQualifiers().size()]; -// qualifiers = injectionPoint.getQualifiers().toArray(qualifiers); -// -// Bean> bean = createInstanceComponent(genericType,clazz, genericType.getActualTypeArguments()[0], qualifiers); -// BeanManagerImpl.getManager().addBean(bean); -// -// } - public static Bean getMostSpecializedBean(BeanManager manager, Bean component) { Set> beans = manager.getBeans(component.getBeanClass(), @@ -2436,24 +2271,6 @@ public final class WebBeansUtil } } - /** - * Returns true if bean instance is an enterprise bean instance - * false otherwise. - * @param beanInstance bean instance - * @return true if bean instance is an enterprise bean instance - */ - public static boolean isBeanHasEnterpriseMarker(Object beanInstance) - { - Asserts.assertNotNull(beanInstance,"Bean instance is null"); - - if(beanInstance instanceof EnterpriseBeanMarker) - { - return true; - } - - return false; - } - public static void checkInjectionPointNamedQualifier(InjectionPoint injectionPoint) { Set qualifierset = injectionPoint.getQualifiers(); @@ -3117,7 +2934,6 @@ public final class WebBeansUtil managedBeanCreator.defineDisposalMethods(); //Define disposal method after adding producers } - @SuppressWarnings("unchecked") public ManagedBean defineAbstractDecorator(AnnotatedType type) { Modified: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/AlternativeSpecializesProducerTest.java URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/AlternativeSpecializesProducerTest.java?rev=1084643&r1=1084642&r2=1084643&view=diff ============================================================================== --- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/AlternativeSpecializesProducerTest.java (original) +++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/AlternativeSpecializesProducerTest.java Wed Mar 23 17:10:05 2011 @@ -32,7 +32,8 @@ import junit.framework.Assert; import org.apache.webbeans.newtests.AbstractUnitTest; import org.junit.Test; -public class AlternativeSpecializesProducerTest extends AbstractUnitTest { +public class AlternativeSpecializesProducerTest extends AbstractUnitTest +{ private static final String PACKAGE_NAME = AlternativeSpecializesProducerTest.class.getPackage().getName(); @@ -65,7 +66,6 @@ public class AlternativeSpecializesProdu Assert.assertTrue(pen.getID().contains("premium")); shutDownContainer(); - } } Added: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/BeanA.java URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/BeanA.java?rev=1084643&view=auto ============================================================================== --- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/BeanA.java (added) +++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/BeanA.java Wed Mar 23 17:10:05 2011 @@ -0,0 +1,39 @@ +/* + * 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.webbeans.newtests.specalization.observer; + +import javax.enterprise.context.ApplicationScoped; +import javax.enterprise.event.Observes; +import java.io.Serializable; + +@ApplicationScoped +public class BeanA implements Serializable +{ + private static final long serialVersionUID = 9096367220631667211L; + + protected void observeTestEvent(@Observes TestEvent testEvent) + { + testEvent.addInvocation(getBeanName()); + } + + public String getBeanName() + { + return getClass().getSimpleName(); + } +} Propchange: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/BeanA.java ------------------------------------------------------------------------------ svn:eol-style = native Added: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/BeanB.java URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/BeanB.java?rev=1084643&view=auto ============================================================================== --- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/BeanB.java (added) +++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/BeanB.java Wed Mar 23 17:10:05 2011 @@ -0,0 +1,36 @@ +/* + * 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.webbeans.newtests.specalization.observer; + + +import javax.enterprise.context.ApplicationScoped; +import javax.enterprise.inject.Specializes; + +@Specializes +@ApplicationScoped +public class BeanB extends BeanA +{ + private static final long serialVersionUID = 821164664338581947L; + + @Override + public String getBeanName() + { + return super.getBeanName() + ":[specialize]"; + } +} Propchange: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/BeanB.java ------------------------------------------------------------------------------ svn:eol-style = native Added: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/ObserverTest.java URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/ObserverTest.java?rev=1084643&view=auto ============================================================================== --- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/ObserverTest.java (added) +++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/ObserverTest.java Wed Mar 23 17:10:05 2011 @@ -0,0 +1,53 @@ +/* + * 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.webbeans.newtests.specalization.observer; + +import org.apache.webbeans.newtests.AbstractUnitTest; +import org.junit.Assert; +import org.junit.Test; + +import javax.enterprise.inject.spi.Bean; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Set; + + +public class ObserverTest extends AbstractUnitTest +{ + + @Test + public void testObserverMethodsInSpecializedBeans() + { + Collection> beanClasses = new ArrayList>(); + beanClasses.add(BeanA.class); + beanClasses.add(BeanB.class); + startContainer(beanClasses, null); + + Set> beans = getBeanManager().getBeans(BeanA.class); + Assert.assertEquals(1, beans.size()); + + TestEvent testEvent = new TestEvent(); + getBeanManager().fireEvent(testEvent); + + Assert.assertEquals(1, testEvent.getCalledObservers().size()); + Assert.assertTrue(testEvent.getCalledObservers().iterator().next().endsWith(":[specialize]")); + + shutDownContainer(); + } +} Propchange: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/ObserverTest.java ------------------------------------------------------------------------------ svn:eol-style = native Added: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/TestEvent.java URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/TestEvent.java?rev=1084643&view=auto ============================================================================== --- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/TestEvent.java (added) +++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/TestEvent.java Wed Mar 23 17:10:05 2011 @@ -0,0 +1,37 @@ +/* + * 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.webbeans.newtests.specalization.observer; + +import java.util.ArrayList; +import java.util.List; + +public class TestEvent +{ + private List calledObserverNames = new ArrayList(); + + public void addInvocation(String observerName) + { + this.calledObserverNames.add(observerName); + } + + public List getCalledObservers() + { + return calledObserverNames; + } +} Propchange: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/specalization/observer/TestEvent.java ------------------------------------------------------------------------------ svn:eol-style = native