### Eclipse Workspace Patch 1.0 #P org.eclipse.jst.jee.ejb Index: .classpath =================================================================== RCS file: /cvsroot/webtools/ejbtools/plugins/org.eclipse.jst.jee.ejb/.classpath,v retrieving revision 1.3 diff -u -r1.3 .classpath --- .classpath 10 May 2007 22:54:35 -0000 1.3 +++ .classpath 23 Feb 2010 15:19:31 -0000 @@ -1,6 +1,7 @@ + Index: META-INF/MANIFEST.MF =================================================================== RCS file: /cvsroot/webtools/ejbtools/plugins/org.eclipse.jst.jee.ejb/META-INF/MANIFEST.MF,v retrieving revision 1.18 diff -u -r1.18 MANIFEST.MF --- META-INF/MANIFEST.MF 1 Oct 2009 13:31:23 -0000 1.18 +++ META-INF/MANIFEST.MF 23 Feb 2010 15:19:31 -0000 @@ -22,7 +22,12 @@ org.eclipse.emf.ecore.xmi;bundle-version="[2.2.0,3.0.0)", org.eclipse.jst.j2ee.ejb;bundle-version="[1.1.0,1.2.0)", org.eclipse.wst.common.emf;bundle-version="[1.1.0,2.0.0)", - org.eclipse.wst.common.emfworkbench.integration;bundle-version="[1.1.0,2.0.0)" + org.eclipse.wst.common.emfworkbench.integration;bundle-version="[1.1.0,2.0.0)", + org.eclipse.wst.validation;bundle-version="1.2.200", + org.eclipse.ui.ide;bundle-version="3.6.0", + org.eclipse.wst.common.frameworks.ui;bundle-version="1.2.0", + org.eclipse.jst.ejb.ui;bundle-version="1.1.500", + org.eclipse.jface;bundle-version="3.6.0" Eclipse-LazyStart: true Bundle-Localization: plugin Bundle-Vendor: %Bundle-Vendor.0 Index: ejb/org/eclipse/jst/jee/model/internal/Messages.java =================================================================== RCS file: /cvsroot/webtools/ejbtools/plugins/org.eclipse.jst.jee.ejb/ejb/org/eclipse/jst/jee/model/internal/Messages.java,v retrieving revision 1.1 diff -u -r1.1 Messages.java --- ejb/org/eclipse/jst/jee/model/internal/Messages.java 11 Mar 2008 15:54:24 -0000 1.1 +++ ejb/org/eclipse/jst/jee/model/internal/Messages.java 23 Feb 2010 15:19:31 -0000 @@ -13,7 +13,9 @@ import java.util.MissingResourceException; import java.util.ResourceBundle; -public class Messages { +import org.eclipse.osgi.util.NLS; + +public class Messages extends NLS { private static final String BUNDLE_NAME = "org.eclipse.jst.jee.model.internal.messages"; //$NON-NLS-1$ private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME); @@ -28,4 +30,9 @@ return '!' + key + '!'; } } + + public static final String UIEJB3Validator_NoBeansErrorMessage = "UIEJB3Validator_NoBeansErrorMessage"; //$NON-NLS-1$ + public static final String UIEJB3Validator_NoBeansErrorLocation = "UIEJB3Validator_NoBeansErrorLocation"; //$NON-NLS-1$ + public static final String CreateBeanQuickFix_CreateNewSessionBean = "CreateBeanQuickFix_CreateNewSessionBean"; //$NON-NLS-1$ + public static final String CreateBeanQuickFix_CreateNewMDB = "CreateBeanQuickFix_CreateNewMDB"; //$NON-NLS-1$ } Index: ejb/org/eclipse/jst/jee/model/internal/messages.properties =================================================================== RCS file: /cvsroot/webtools/ejbtools/plugins/org.eclipse.jst.jee.ejb/ejb/org/eclipse/jst/jee/model/internal/messages.properties,v retrieving revision 1.1 diff -u -r1.1 messages.properties --- ejb/org/eclipse/jst/jee/model/internal/messages.properties 11 Mar 2008 15:54:24 -0000 1.1 +++ ejb/org/eclipse/jst/jee/model/internal/messages.properties 23 Feb 2010 15:19:31 -0000 @@ -1 +1,6 @@ EJBAnnotationReader.DisposeEjbAnnotationReader=Dispose ejb annotation reader +UIEJB3Validator_NoBeansErrorMessage=An EJB module must contain one or more EJBs. +UIEJB3Validator_NoBeansErrorLocation={0} project +CreateBeanQuickFix_CreateNewSessionBean=Create new session bean +CreateBeanQuickFix_CreateNewMDB=Create new message driven bean + Index: ejbvalidator/org/eclipse/jst/jee/internal/ejb/workbench/validation/CreateBeanQuickFix.java =================================================================== RCS file: ejbvalidator/org/eclipse/jst/jee/internal/ejb/workbench/validation/CreateBeanQuickFix.java diff -N ejbvalidator/org/eclipse/jst/jee/internal/ejb/workbench/validation/CreateBeanQuickFix.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ ejbvalidator/org/eclipse/jst/jee/internal/ejb/workbench/validation/CreateBeanQuickFix.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,58 @@ +package org.eclipse.jst.jee.internal.ejb.workbench.validation; + +import org.eclipse.core.resources.IMarker; +import org.eclipse.core.resources.IProject; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.wizard.WizardDialog; +import org.eclipse.jst.ejb.ui.internal.wizard.AddMessageDrivenBeanWizard; +import org.eclipse.jst.ejb.ui.internal.wizard.AddSessionBeanWizard; +import org.eclipse.jst.jee.model.internal.Messages; +import org.eclipse.swt.widgets.Display; +import org.eclipse.ui.IMarkerResolution; +import org.eclipse.ui.IWorkbenchWizard; +import org.eclipse.ui.PlatformUI; +import org.eclipse.wst.common.componentcore.internal.operation.IArtifactEditOperationDataModelProperties; +import org.eclipse.wst.common.frameworks.internal.datamodel.ui.DataModelWizard; + +@SuppressWarnings("restriction") +public class CreateBeanQuickFix implements IMarkerResolution { + + public static enum BEAN_TYPE { + SESSION, + MESSAGE_DRIVEN + } + + private BEAN_TYPE beanType; + private IProject project; + + public CreateBeanQuickFix(BEAN_TYPE bType, IProject proj) { + this.beanType = bType; + this.project = proj; + } + + public String getLabel() { + return Messages.getString((beanType == BEAN_TYPE.SESSION) ? + Messages.CreateBeanQuickFix_CreateNewSessionBean : + Messages.CreateBeanQuickFix_CreateNewMDB); + } + + public void run(IMarker marker) { + Runnable r = new Runnable() { + public void run() { + openNewBeanWizard(); + } + }; + Display.getDefault().asyncExec(r); + } + + private void openNewBeanWizard() { + DataModelWizard wizard = (beanType == BEAN_TYPE.SESSION) ? new AddSessionBeanWizard() : + new AddMessageDrivenBeanWizard(); + wizard.getDataModel().setStringProperty(IArtifactEditOperationDataModelProperties.COMPONENT_NAME, project.getName()); + ((IWorkbenchWizard) wizard).init(PlatformUI.getWorkbench(), new StructuredSelection(project)); + WizardDialog dialog = new WizardDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), + wizard); + dialog.open(); + } + +} Index: ejbvalidator/org/eclipse/jst/jee/internal/ejb/workbench/validation/NoBeansQuickFixer.java =================================================================== RCS file: ejbvalidator/org/eclipse/jst/jee/internal/ejb/workbench/validation/NoBeansQuickFixer.java diff -N ejbvalidator/org/eclipse/jst/jee/internal/ejb/workbench/validation/NoBeansQuickFixer.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ ejbvalidator/org/eclipse/jst/jee/internal/ejb/workbench/validation/NoBeansQuickFixer.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,21 @@ +package org.eclipse.jst.jee.internal.ejb.workbench.validation; + +import org.eclipse.core.resources.IMarker; +import org.eclipse.core.resources.IProject; +import org.eclipse.ui.IMarkerResolution; +import org.eclipse.ui.IMarkerResolutionGenerator2; + +public class NoBeansQuickFixer implements IMarkerResolutionGenerator2 { + + public IMarkerResolution[] getResolutions(IMarker marker) { + return new IMarkerResolution[] { + new CreateBeanQuickFix(CreateBeanQuickFix.BEAN_TYPE.SESSION, (IProject)marker.getResource()), + new CreateBeanQuickFix(CreateBeanQuickFix.BEAN_TYPE.MESSAGE_DRIVEN, (IProject)marker.getResource()) + }; + } + + public boolean hasResolutions(IMarker marker) { + return true; + } + +} Index: ejbvalidator/org/eclipse/jst/jee/internal/ejb/workbench/validation/UIEJB3Validator.java =================================================================== RCS file: ejbvalidator/org/eclipse/jst/jee/internal/ejb/workbench/validation/UIEJB3Validator.java diff -N ejbvalidator/org/eclipse/jst/jee/internal/ejb/workbench/validation/UIEJB3Validator.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ ejbvalidator/org/eclipse/jst/jee/internal/ejb/workbench/validation/UIEJB3Validator.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,62 @@ +package org.eclipse.jst.jee.internal.ejb.workbench.validation; + +import java.text.MessageFormat; + +import org.eclipse.core.resources.IMarker; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.jst.j2ee.model.ModelProviderManager; +import org.eclipse.jst.j2ee.project.JavaEEProjectUtilities; +import org.eclipse.jst.javaee.ejb.EJBJar; +import org.eclipse.jst.javaee.ejb.EnterpriseBeans; +import org.eclipse.jst.jee.model.internal.Messages; +import org.eclipse.wst.validation.AbstractValidator; +import org.eclipse.wst.validation.ValidationEvent; +import org.eclipse.wst.validation.ValidationResult; +import org.eclipse.wst.validation.ValidationState; +import org.eclipse.wst.validation.ValidatorMessage; + +public class UIEJB3Validator extends AbstractValidator { + + public static String MARKER_ID_NO_BEANS = "org.eclipse.jst.jee.ejb3.nobeans"; //$NON-NLS-1$ + + @Override + public ValidationResult validate(IResource resource, int kind, ValidationState state, IProgressMonitor monitor) { + if ((resource == null) || !IProject.class.isInstance(resource)) + return null; + IProject proj = (IProject)resource; + if (!JavaEEProjectUtilities.isEJBProject(proj)) + return null; + EJBJar ejbJar = (EJBJar)ModelProviderManager.getModelProvider(proj).getModelObject(); + EnterpriseBeans ebs = ejbJar.getEnterpriseBeans(); + if (ebs.getSessionBeans().size() + ebs.getMessageDrivenBeans().size() == 0) { + ValidationResult vRes = new ValidationResult(); + ValidatorMessage vMsg = createValidatorMessage(Messages.getString(Messages.UIEJB3Validator_NoBeansErrorMessage), proj, IMarker.SEVERITY_ERROR, IMarker.PRIORITY_HIGH); + vRes.add(vMsg); + return vRes; + } + return null; + } + + @Override + public ValidationResult validate(ValidationEvent event, ValidationState state, IProgressMonitor monitor){ + IResource res = event.getResource(); + return validate(res, 0, state, monitor); + } + + static private ValidatorMessage createValidatorMessage(String txt, + IResource res, + int severity, + int priority) { + ValidatorMessage msg = ValidatorMessage.create(txt, res); + msg.setAttribute(IMarker.SEVERITY, severity); + msg.setAttribute(IMarker.PRIORITY, priority); + msg.setAttribute(IMarker.MARKER, IMarker.BOOKMARK); + msg.setAttribute(IMarker.LOCATION, MessageFormat.format(Messages.getString(Messages.UIEJB3Validator_NoBeansErrorLocation), + new Object[] {res.getName()})); + msg.setType(MARKER_ID_NO_BEANS); + return msg; + } + +} Index: plugin.properties =================================================================== RCS file: /cvsroot/webtools/ejbtools/plugins/org.eclipse.jst.jee.ejb/plugin.properties,v retrieving revision 1.2 diff -u -r1.2 plugin.properties --- plugin.properties 7 Jun 2007 19:32:48 -0000 1.2 +++ plugin.properties 23 Feb 2010 15:19:32 -0000 @@ -10,4 +10,7 @@ ############################################################################### # properties file for org.eclipse.jst.jee.ejb Bundle-Name.0 = JEE Ejb Plug-in -Bundle-Vendor.0 = Eclipse.org \ No newline at end of file +Bundle-Vendor.0 = Eclipse.org +org.eclipse.jst.jee.ejb3.nobeans.marker.type = Invalid EJB project +org.eclipse.jst.jee.ejb3.validator.name = EJB 3.x Validator +org.eclipse.jst.jee.ejb3.nobeansmessage.label = No beans in the EJB project \ No newline at end of file Index: plugin.xml =================================================================== RCS file: /cvsroot/webtools/ejbtools/plugins/org.eclipse.jst.jee.ejb/plugin.xml,v retrieving revision 1.15 diff -u -r1.15 plugin.xml --- plugin.xml 16 Oct 2009 19:04:18 -0000 1.15 +++ plugin.xml 23 Feb 2010 15:19:32 -0000 @@ -13,5 +13,45 @@ + + + + + + + + + + + + + + + + + + + + + +