Skip to content

Commit

Permalink
catch and wrap exceptions thrown by observers during container initia…
Browse files Browse the repository at this point in the history
…lization

git-svn-id: http://anonsvn.jboss.org/repos/weld/ri/trunk@2854 1c488680-804c-0410-94cd-c6b725194a0e
  • Loading branch information
mojavelinux committed Jun 19, 2009
1 parent 55532c6 commit 12c8254
Show file tree
Hide file tree
Showing 4 changed files with 106 additions and 10 deletions.
48 changes: 48 additions & 0 deletions impl/src/main/java/org/jboss/webbeans/DeploymentException.java
@@ -0,0 +1,48 @@
/*
* JBoss, Home of Professional Open Source
* Copyright 2008, Red Hat Middleware LLC, and individual contributors
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* Licensed 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.jboss.webbeans;

/**
* Thrown if an deployment exception occurs.
*
* @author Pete Muir
*/
public class DeploymentException extends RuntimeException
{
private static final long serialVersionUID = 8014646336322875707L;

public DeploymentException()
{
super();
}

public DeploymentException(String message, Throwable throwable)
{
super(message, throwable);
}

public DeploymentException(String message)
{
super(message);
}

public DeploymentException(Throwable throwable)
{
super(throwable);
}

}
@@ -1,16 +1,16 @@
package org.jboss.webbeans.bootstrap;

import javax.enterprise.inject.spi.AfterBeanDiscovery;
import javax.inject.DeploymentException;

import org.jboss.webbeans.DefinitionException;

public class AfterBeanDiscoveryImpl implements AfterBeanDiscovery
{

public void addDefinitionError(Throwable t)
{
//XXX spec says need to delay abort until all observers
//XXX spec says need to delay abort until all observers
//have been notified
throw new DeploymentException(t);
throw new DefinitionException(t);
}

}
Expand Up @@ -2,13 +2,15 @@

import javax.enterprise.inject.spi.AfterDeploymentValidation;

import org.jboss.webbeans.DeploymentException;

public class AfterDeploymentValidationImpl implements AfterDeploymentValidation
{
public void addDeploymentProblem(Throwable t)
{
//XXX spec says need to delay abort until all observers
//XXX spec says need to delay abort until all observers
//have been notified
throw new RuntimeException(t);
throw new DeploymentException(t);
}

}
Expand Up @@ -9,7 +9,7 @@
* 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,
* 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.
Expand All @@ -19,6 +19,8 @@
import org.jboss.webbeans.BeanManagerImpl;
import org.jboss.webbeans.BeanValidator;
import org.jboss.webbeans.CurrentManager;
import org.jboss.webbeans.DefinitionException;
import org.jboss.webbeans.DeploymentException;
import org.jboss.webbeans.bean.standard.EventBean;
import org.jboss.webbeans.bean.standard.InjectionPointBean;
import org.jboss.webbeans.bean.standard.InstanceBean;
Expand Down Expand Up @@ -201,18 +203,62 @@ public void boot()
manager.setEnabledInterceptorClasses(parser.getEnabledInterceptorClasses());
}
log.debug("Deployment types: " + manager.getEnabledDeploymentTypes());
manager.fireEvent(new BeforeBeanDiscoveryImpl());
fireBeforeBeanDiscoveryEvent();
registerBeans(getServices().get(WebBeanDiscovery.class).discoverWebBeanClasses(), ejbDescriptors);
manager.fireEvent(new AfterBeanDiscoveryImpl());
fireAfterBeanDiscoveryEvent();
log.debug("Web Beans initialized. Validating beans.");
manager.getResolver().resolveInjectionPoints();
new BeanValidator(manager).validate();
manager.getResolver().resolveInjectionPoints();
manager.fireEvent(new AfterDeploymentValidationImpl());
fireAfterDeploymentValidationEvent();
endDeploy(requestBeanStore);
}
}

protected void fireBeforeBeanDiscoveryEvent()
{
BeforeBeanDiscoveryImpl event = new BeforeBeanDiscoveryImpl();
try
{
manager.fireEvent(event);
}
catch (Exception e)
{
throw new DefinitionException(e);
}
}

protected void fireAfterBeanDiscoveryEvent()
{
AfterBeanDiscoveryImpl event = new AfterBeanDiscoveryImpl();
try
{
manager.fireEvent(event);
}
catch (Exception e)
{
throw new DefinitionException(e);
}

// TODO handle registered definition errors
}

protected void fireAfterDeploymentValidationEvent()
{
AfterDeploymentValidationImpl event = new AfterDeploymentValidationImpl();

try
{
manager.fireEvent(event);
}
catch (Exception e)
{
throw new DeploymentException(e);
}

// TODO handle registered deployment errors
}

/**
* Gets version information
*
Expand Down

0 comments on commit 12c8254

Please sign in to comment.