You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by we...@apache.org on 2009/09/30 10:16:46 UTC

svn commit: r820207 - in /myfaces/extensions/scripting/trunk/core: core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/ core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/ core/src/main/java/org/apache/myfaces/scripting/...

Author: werpu
Date: Wed Sep 30 08:16:45 2009
New Revision: 820207

URL: http://svn.apache.org/viewvc?rev=820207&view=rev
Log:
https://issues.apache.org/jira/browse/EXTSCRIPT-25
Artefact event system added, but not finalized yet,
next works will happen in the annotation processing area
so that we get following use cases working with annotations
Bean Annotation added on managed bean
Bean Annotation moved from one bean to the other
Bean Annotation removed from the managed bean
It makes sense to limit outselfs to managed beans for now
because they are the most complicated case due to their IOC and scoping
nature every other usecase is easy to deal with in comparison
once we get the beans properly working

Added:
    myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/
    myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/ObjectRefreshedEvent.java   (with props)
    myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/SystemEvent.java   (with props)
    myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/SystemEventListener.java   (with props)
    myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/SystemEventProcessor.java   (with props)
    myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/
    myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/AnnotatedArtefactLoadedEvent.java   (with props)
    myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/AnnotatedArtefactRemovedEvent.java   (with props)
    myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/BaseEvent.java   (with props)
    myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/BeanLoadedEvent.java   (with props)
    myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/BeanRemovedEvent.java   (with props)
    myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/ClassRefreshedEvent.java   (with props)
    myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/ManagedPropertyLoadedEvent.java   (with props)
    myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/ManagedPropertyRemovedEvent.java   (with props)
    myfaces/extensions/scripting/trunk/core/core/src/test/java/org/apache/myfaces/scripting/core/scanEvents/
    myfaces/extensions/scripting/trunk/core/core/src/test/java/org/apache/myfaces/scripting/core/scanEvents/EventSystemTest.java   (with props)
Modified:
    myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/util/ProxyUtils.java
    myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/BeanImplementationListener.java
    myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/JavaAnnotationScanner.java

Added: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/ObjectRefreshedEvent.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/ObjectRefreshedEvent.java?rev=820207&view=auto
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/ObjectRefreshedEvent.java (added)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/ObjectRefreshedEvent.java Wed Sep 30 08:16:45 2009
@@ -0,0 +1,49 @@
+/*
+ * 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.myfaces.scripting.core.scanEvents;
+
+import org.apache.myfaces.scripting.core.scanEvents.events.BaseEvent;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class ObjectRefreshedEvent extends BaseEvent {
+
+    Object _origin;
+    Object _target;
+    private static final int EVT_TYPE_OBJECT_REFRESHED = 3;
+
+    public ObjectRefreshedEvent(Object origin, Object target) {
+        super(origin.getClass().getName());
+        _origin = origin;
+        _target = target;
+    }
+
+    public ObjectRefreshedEvent( int artefactType, Object origin, Object target) {
+        super(origin.getClass().getName(), artefactType);
+        _origin = origin;
+        _target = target;
+    }
+
+    public Integer getEventType() {
+        return EVT_TYPE_OBJECT_REFRESHED;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+}

Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/ObjectRefreshedEvent.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/ObjectRefreshedEvent.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Added: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/SystemEvent.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/SystemEvent.java?rev=820207&view=auto
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/SystemEvent.java (added)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/SystemEvent.java Wed Sep 30 08:16:45 2009
@@ -0,0 +1,11 @@
+package org.apache.myfaces.scripting.core.scanEvents;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+public interface SystemEvent {
+    public Integer getEventType();
+    public String getAffectedClassName();
+    public Integer getArtefactType();
+}

Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/SystemEvent.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/SystemEvent.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Added: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/SystemEventListener.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/SystemEventListener.java?rev=820207&view=auto
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/SystemEventListener.java (added)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/SystemEventListener.java Wed Sep 30 08:16:45 2009
@@ -0,0 +1,15 @@
+package org.apache.myfaces.scripting.core.scanEvents;
+
+import java.util.Set;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+public interface SystemEventListener {
+
+    public Set<Integer> supportsEvents();
+
+    public void handleEvent(SystemEvent evt);
+
+}

Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/SystemEventListener.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/SystemEventListener.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Added: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/SystemEventProcessor.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/SystemEventProcessor.java?rev=820207&view=auto
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/SystemEventProcessor.java (added)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/SystemEventProcessor.java Wed Sep 30 08:16:45 2009
@@ -0,0 +1,61 @@
+/*
+ * 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.myfaces.scripting.core.scanEvents;
+
+import java.util.Set;
+import java.util.HashSet;
+import java.util.Collections;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ *          <p/>
+ *          Scan events, which operate on a request scale
+ *          reachable via the proxy utils
+ *          <p/>
+ *          We have to add an event processing system here
+ *          because submodules which are dynamically bound
+ *          sometimes have to notify the core about the loading
+ *          and refreshing state
+ */
+
+public class SystemEventProcessor {
+    Set<SystemEventListener> _listeners = Collections.synchronizedSet(new HashSet<SystemEventListener>());
+
+    public void addListener(SystemEventListener listener) {
+        _listeners.add(listener);
+    }
+
+    public void removeListener(SystemEventListener listener) {
+        _listeners.remove(listener);
+    }
+
+    public void clear() {
+        _listeners.clear();
+    }
+
+    public void dispatchEvent(SystemEvent event) {
+        //we only trigger on events which have a registered listener
+        for (SystemEventListener listener : _listeners) {
+            if (listener.supportsEvents().contains(event.getEventType())) {
+                listener.handleEvent(event);
+            }
+        }
+    }
+}

Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/SystemEventProcessor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/SystemEventProcessor.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Added: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/AnnotatedArtefactLoadedEvent.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/AnnotatedArtefactLoadedEvent.java?rev=820207&view=auto
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/AnnotatedArtefactLoadedEvent.java (added)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/AnnotatedArtefactLoadedEvent.java Wed Sep 30 08:16:45 2009
@@ -0,0 +1,42 @@
+/*
+ * 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.myfaces.scripting.core.scanEvents.events;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class AnnotatedArtefactLoadedEvent extends BaseEvent  {
+    private static final int EVT_TYPE_BEAN_ADDED = 1;
+
+
+    public AnnotatedArtefactLoadedEvent(String affectedClass) {
+        super(affectedClass);
+    }
+
+    public AnnotatedArtefactLoadedEvent(String scannedClass, int artefactType) {
+        super(scannedClass, artefactType);
+    }
+
+    public Integer getEventType() {
+        return EVT_TYPE_BEAN_ADDED;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+}

Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/AnnotatedArtefactLoadedEvent.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/AnnotatedArtefactLoadedEvent.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Added: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/AnnotatedArtefactRemovedEvent.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/AnnotatedArtefactRemovedEvent.java?rev=820207&view=auto
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/AnnotatedArtefactRemovedEvent.java (added)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/AnnotatedArtefactRemovedEvent.java Wed Sep 30 08:16:45 2009
@@ -0,0 +1,42 @@
+/*
+ * 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.myfaces.scripting.core.scanEvents.events;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class AnnotatedArtefactRemovedEvent extends BaseEvent {
+    public static final int EVT_TYPE_BEAN_REMOVED = 0;
+
+
+    public AnnotatedArtefactRemovedEvent(String affectedClass) {
+        super(affectedClass);
+    }
+
+    public AnnotatedArtefactRemovedEvent(String scannedClass, int artefactType) {
+        super(scannedClass, artefactType);
+    }
+
+    public Integer getEventType() {
+        return EVT_TYPE_BEAN_REMOVED;
+    }
+
+}

Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/AnnotatedArtefactRemovedEvent.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/AnnotatedArtefactRemovedEvent.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Added: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/BaseEvent.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/BaseEvent.java?rev=820207&view=auto
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/BaseEvent.java (added)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/BaseEvent.java Wed Sep 30 08:16:45 2009
@@ -0,0 +1,64 @@
+/*
+ * 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.myfaces.scripting.core.scanEvents.events;
+
+import org.apache.myfaces.scripting.core.scanEvents.SystemEvent;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public abstract class BaseEvent implements SystemEvent {
+
+    public static final int ARTEFACT_TYPE_UNKNOWN = -1;
+    public static final int ARTEFACT_TYPE_MANAGEDBEAN = 1;
+    public static final int ARTEFACT_TYPE_MANAGEDPROPERTY = 2;
+    public static final int ARTEFACT_TYPE_RENDERKIT = 3;
+    public static final int ARTEFACT_TYPE_VIEWHANDLER = 4;
+    public static final int ARTEFACT_TYPE_RENDERER = 5;
+    public static final int ARTEFACT_TYPE_COMPONENT = 6;
+    public static final int ARTEFACT_TYPE_VALIDATOR = 7;
+    public static final int ARTEFACT_TYPE_BEHAVIOR = 8;
+
+
+    private String _scannedClass = null;
+    private int _artefactType = ARTEFACT_TYPE_UNKNOWN;
+
+    protected BaseEvent(String scannedClass) {
+        _scannedClass = scannedClass;
+    }
+
+    protected BaseEvent(String scannedClass, int artefactType) {
+        _scannedClass = scannedClass;
+        _artefactType = artefactType;
+    }
+
+    public String getAffectedClassName() {
+        return _scannedClass;  
+    }
+
+    public Integer getEventType() {
+        return null;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public Integer getArtefactType() {
+        return null;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+}

Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/BaseEvent.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/BaseEvent.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Added: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/BeanLoadedEvent.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/BeanLoadedEvent.java?rev=820207&view=auto
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/BeanLoadedEvent.java (added)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/BeanLoadedEvent.java Wed Sep 30 08:16:45 2009
@@ -0,0 +1,41 @@
+/*
+ * 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.myfaces.scripting.core.scanEvents.events;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class BeanLoadedEvent extends AnnotatedArtefactLoadedEvent {
+    String _beanName;
+
+    public BeanLoadedEvent(String affectedClass, String beanName) {
+        super(affectedClass, ARTEFACT_TYPE_MANAGEDBEAN);
+        _beanName = beanName;
+    }
+
+    public String getBeanName() {
+        return _beanName;
+    }
+
+    public void setBeanName(String beanName) {
+        _beanName = beanName;
+    }
+}

Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/BeanLoadedEvent.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/BeanLoadedEvent.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Added: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/BeanRemovedEvent.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/BeanRemovedEvent.java?rev=820207&view=auto
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/BeanRemovedEvent.java (added)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/BeanRemovedEvent.java Wed Sep 30 08:16:45 2009
@@ -0,0 +1,41 @@
+/*
+ * 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.myfaces.scripting.core.scanEvents.events;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class BeanRemovedEvent extends AnnotatedArtefactLoadedEvent {
+    String _beanName;
+
+    public BeanRemovedEvent(String affectedClass, String beanName) {
+        super(affectedClass, ARTEFACT_TYPE_MANAGEDBEAN);
+        _beanName = beanName;
+    }
+
+    public String getBeanName() {
+        return _beanName;
+    }
+
+    public void setBeanName(String beanName) {
+        _beanName = beanName;
+    }
+}

Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/BeanRemovedEvent.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/BeanRemovedEvent.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Added: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/ClassRefreshedEvent.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/ClassRefreshedEvent.java?rev=820207&view=auto
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/ClassRefreshedEvent.java (added)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/ClassRefreshedEvent.java Wed Sep 30 08:16:45 2009
@@ -0,0 +1,41 @@
+/*
+ * 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.myfaces.scripting.core.scanEvents.events;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class ClassRefreshedEvent extends BaseEvent  {
+    public static final int EVT_TYPE_CLASSREFRESH = 2;
+
+    public ClassRefreshedEvent(String className) {
+        super(className);
+    }
+
+    public ClassRefreshedEvent(String scannedClass, int artefactType) {
+        super(scannedClass, artefactType);
+    }
+
+    public Integer getEventType() {
+        return EVT_TYPE_CLASSREFRESH;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+}

Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/ClassRefreshedEvent.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/ClassRefreshedEvent.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Added: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/ManagedPropertyLoadedEvent.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/ManagedPropertyLoadedEvent.java?rev=820207&view=auto
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/ManagedPropertyLoadedEvent.java (added)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/ManagedPropertyLoadedEvent.java Wed Sep 30 08:16:45 2009
@@ -0,0 +1,43 @@
+/*
+ * 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.myfaces.scripting.core.scanEvents.events;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class ManagedPropertyLoadedEvent extends AnnotatedArtefactLoadedEvent {
+
+    String _propertyName;
+
+    public ManagedPropertyLoadedEvent(String affectedClass, String propertyName) {
+        super(affectedClass, ARTEFACT_TYPE_MANAGEDPROPERTY);
+        _propertyName = propertyName;
+    }
+
+    public String getPropertyName() {
+        return _propertyName;
+    }
+
+    public void setPropertyName(String propertyName) {
+        _propertyName = propertyName;
+    }
+
+}

Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/ManagedPropertyLoadedEvent.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/ManagedPropertyLoadedEvent.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Added: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/ManagedPropertyRemovedEvent.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/ManagedPropertyRemovedEvent.java?rev=820207&view=auto
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/ManagedPropertyRemovedEvent.java (added)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/ManagedPropertyRemovedEvent.java Wed Sep 30 08:16:45 2009
@@ -0,0 +1,41 @@
+/*
+ * 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.myfaces.scripting.core.scanEvents.events;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class ManagedPropertyRemovedEvent extends AnnotatedArtefactLoadedEvent {
+    String _propertyName;
+
+    public ManagedPropertyRemovedEvent(String affectedClass, String propertyName) {
+        super(affectedClass, ARTEFACT_TYPE_MANAGEDPROPERTY);
+        _propertyName = propertyName;
+    }
+
+    public String getPropertyName() {
+        return _propertyName;
+    }
+
+    public void setPropertyName(String propertyName) {
+        _propertyName = propertyName;
+    }
+}

Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/ManagedPropertyRemovedEvent.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/scanEvents/events/ManagedPropertyRemovedEvent.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Modified: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/util/ProxyUtils.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/util/ProxyUtils.java?rev=820207&r1=820206&r2=820207&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/util/ProxyUtils.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/util/ProxyUtils.java Wed Sep 30 08:16:45 2009
@@ -24,6 +24,7 @@
 import org.apache.myfaces.scripting.api.BaseWeaver;
 import org.apache.myfaces.scripting.core.MethodLevelReloadingHandler;
 import org.apache.myfaces.scripting.core.DummyWeaver;
+import org.apache.myfaces.scripting.core.scanEvents.SystemEventProcessor;
 import org.apache.myfaces.scripting.refresh.FileChangedDaemon;
 import org.apache.commons.logging.LogFactory;
 import org.apache.commons.logging.Log;
@@ -52,6 +53,9 @@
      */
     static ThreadLocal _weaverHolder = new ThreadLocal();
 
+    static ThreadLocal _eventProcessorHolder = new ThreadLocal();
+
+
     public static void init() {
 
     }
@@ -60,6 +64,19 @@
         _weaverHolder.set(null);
     }
 
+
+    /**
+     * @return returns the thread bound system event processor
+     */
+    public static SystemEventProcessor getEventProcessor() {
+        SystemEventProcessor retVal = (SystemEventProcessor) _eventProcessorHolder.get();
+        if (retVal == null) {
+            retVal = new SystemEventProcessor();
+            _eventProcessorHolder.set(retVal);
+        }
+        return retVal;
+    }
+
     public static void setWeaver(Object weaver) {
         _weaverHolder.set(weaver);
         if (FileChangedDaemon.getInstance().getWeavers() == null) {

Added: myfaces/extensions/scripting/trunk/core/core/src/test/java/org/apache/myfaces/scripting/core/scanEvents/EventSystemTest.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/test/java/org/apache/myfaces/scripting/core/scanEvents/EventSystemTest.java?rev=820207&view=auto
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/test/java/org/apache/myfaces/scripting/core/scanEvents/EventSystemTest.java (added)
+++ myfaces/extensions/scripting/trunk/core/core/src/test/java/org/apache/myfaces/scripting/core/scanEvents/EventSystemTest.java Wed Sep 30 08:16:45 2009
@@ -0,0 +1,77 @@
+/*
+ * 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.myfaces.scripting.core.scanEvents;
+
+import static org.junit.Assert.*;
+import org.junit.Test;
+import org.apache.myfaces.scripting.core.scanEvents.events.AnnotatedArtefactRemovedEvent;
+import org.apache.myfaces.scripting.core.scanEvents.events.ClassRefreshedEvent;
+
+import java.util.Set;
+import java.util.HashSet;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class EventSystemTest {
+
+    boolean succeeded = false;
+    SystemEventProcessor processor = new SystemEventProcessor();
+
+
+    SystemEventListener listener1 = new SystemEventListener() {
+        public Set<Integer> supportsEvents() {
+            Set<Integer> supports = new HashSet<Integer>();
+            supports.add(ClassRefreshedEvent.EVT_TYPE_CLASSREFRESH);
+            return supports;  //To change body of implemented methods use File | Settings | File Templates.
+        }
+
+        public void handleEvent(SystemEvent evt) {
+            succeeded = true;
+        }
+    };
+
+    SystemEventListener listener2 = new SystemEventListener() {
+        public Set<Integer> supportsEvents() {
+            Set<Integer> supports = new HashSet<Integer>();
+            supports.add(AnnotatedArtefactRemovedEvent.EVT_TYPE_BEAN_REMOVED);
+            return supports;  //To change body of implemented methods use File | Settings | File Templates.
+        }
+
+        public void handleEvent(SystemEvent evt) {
+            fail("should not be called");
+        }
+    };
+
+
+   
+
+    @Test
+    public void testEventHandling() {
+        processor.addListener(listener1);
+        processor.addListener(listener2);
+
+        processor.dispatchEvent(new ClassRefreshedEvent("java.lang.Object"));
+
+        assertTrue("Event dispatching succeeded", succeeded);
+    }
+
+}

Propchange: myfaces/extensions/scripting/trunk/core/core/src/test/java/org/apache/myfaces/scripting/core/scanEvents/EventSystemTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: myfaces/extensions/scripting/trunk/core/core/src/test/java/org/apache/myfaces/scripting/core/scanEvents/EventSystemTest.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Modified: myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/BeanImplementationListener.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/BeanImplementationListener.java?rev=820207&r1=820206&r2=820207&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/BeanImplementationListener.java (original)
+++ myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/BeanImplementationListener.java Wed Sep 30 08:16:45 2009
@@ -26,6 +26,11 @@
 import org.apache.myfaces.config.impl.digester.elements.ManagedBean;
 import org.apache.myfaces.scripting.api.AnnotationScanListener;
 import org.apache.myfaces.scripting.core.util.ReflectUtil;
+import org.apache.myfaces.scripting.core.util.ProxyUtils;
+import org.apache.myfaces.scripting.core.scanEvents.events.BeanLoadedEvent;
+import org.apache.myfaces.scripting.core.scanEvents.events.BeanRemovedEvent;
+import org.apache.myfaces.scripting.core.scanEvents.events.ManagedPropertyLoadedEvent;
+import org.apache.myfaces.scripting.core.scanEvents.events.ManagedPropertyRemovedEvent;
 
 import javax.faces.bean.*;
 import java.lang.reflect.Field;
@@ -75,6 +80,7 @@
         _alreadyRegistered.put(beanName, mbean);
         config.addManagedBean(beanName, mbean);
 
+        ProxyUtils.getEventProcessor().dispatchEvent(new BeanLoadedEvent(clazz.getName(), beanName));
     }
 
     private void resolveScope(Class clazz, ManagedBean mbean) {
@@ -124,6 +130,8 @@
         resolveScope(clazz, mbean);
 
         config.addManagedBean(beanName, mbean);
+
+        ProxyUtils.getEventProcessor().dispatchEvent(new BeanLoadedEvent(clazz.getFullyQualifiedName(), beanName));
     }
 
     private void resolveScope(JavaClass clazz, ManagedBean mbean) {
@@ -182,6 +190,8 @@
                 mpc.setPropertyClass(field.getType().getName()); // FIXME - primitives, arrays, etc.
                 mpc.setValue(property.value());
                 mbean.addProperty(mpc);
+                ProxyUtils.getEventProcessor().dispatchEvent(new ManagedPropertyLoadedEvent(field.getType().getName(), name));
+
                 continue;
             }
         }
@@ -210,6 +220,7 @@
                         managedProperty.setPropertyClass(field.getType().getValue()); // FIXME - primitives, arrays, etc.
                         managedProperty.setValue((String) ann.getPropertyMap().get("value"));
                         mbean.addProperty(managedProperty);
+                        ProxyUtils.getEventProcessor().dispatchEvent(new ManagedPropertyLoadedEvent(field.getType().getValue(), name));
                     }
                 }
             }
@@ -302,12 +313,25 @@
 
         //We refresh the managed beans, dead references still can cause
         //runtime errors but in this case we cannot do anything
+        org.apache.myfaces.config.element.ManagedBean mbeanFound = null;
+
         for (Map.Entry mbean : managedBeans.entrySet()) {
             org.apache.myfaces.config.element.ManagedBean bean = (org.apache.myfaces.config.element.ManagedBean) mbean.getValue();
             if (!bean.getClass().getName().equals(className)) {
                 config.addManagedBean((String) mbean.getKey(), (org.apache.myfaces.config.element.ManagedBean) mbean.getValue());
+            } else {
+                mbeanFound = (org.apache.myfaces.config.element.ManagedBean) mbean.getValue();
             }
         }
+        if (mbeanFound != null) {
+            if (mbeanFound instanceof ManagedBean) {
+                ManagedBean mbeanToDispatch = (ManagedBean) mbeanFound;
+                for (org.apache.myfaces.config.impl.digester.elements.ManagedProperty prop : mbeanToDispatch.getManagedProperties()) {
+                    ProxyUtils.getEventProcessor().dispatchEvent(new ManagedPropertyRemovedEvent(prop.getPropertyClass(), prop.getPropertyName()));
+                }
+                ProxyUtils.getEventProcessor().dispatchEvent(new BeanRemovedEvent(className, mbeanToDispatch.getManagedBeanName()));
 
+            }
+        }
     }
 }

Modified: myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/JavaAnnotationScanner.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/JavaAnnotationScanner.java?rev=820207&r1=820206&r2=820207&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/JavaAnnotationScanner.java (original)
+++ myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/JavaAnnotationScanner.java Wed Sep 30 08:16:45 2009
@@ -24,6 +24,7 @@
 import com.thoughtworks.qdox.model.JavaSource;
 import org.apache.myfaces.scripting.api.AnnotationScanListener;
 import org.apache.myfaces.scripting.api.AnnotationScanner;
+import org.apache.myfaces.scripting.core.util.ProxyUtils;
 
 import java.io.File;
 import java.util.LinkedList;
@@ -31,6 +32,8 @@
 import java.util.Map;
 import java.util.HashMap;
 
+import org.apache.myfaces.scripting.core.scanEvents.events.AnnotatedArtefactRemovedEvent;
+
 /**
  * @author Werner Punz (latest modification by $Author$)
  * @version $Revision$ $Date$
@@ -149,6 +152,8 @@
                     listener.register(clazz, ann);
 
                     _registeredAnnotations.put(clazz.getName(), ann.getClass().getName());
+
+
                 } else {
                     annotationMoved(clazz, ann, listener);
 
@@ -171,7 +176,7 @@
                 if (listener.supportsAnnotation(registeredAnnotation)) {
                     listener.purge(clazz.getFullyQualifiedName());
                     _registeredAnnotations.remove(clazz.getFullyQualifiedName());
-
+                    ProxyUtils.getEventProcessor().dispatchEvent(new AnnotatedArtefactRemovedEvent(clazz.getFullyQualifiedName()));
                 }
             }
         }
@@ -191,7 +196,6 @@
                 if (listener.supportsAnnotation(registeredAnnotation)) {
                     listener.purge(clazz.getName());
                     _registeredAnnotations.remove(clazz.getName());
-
                 }
             }
         }