You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by jl...@apache.org on 2007/12/20 08:49:21 UTC
svn commit: r605823 [2/2] - in
/openejb/trunk/sandbox/openejb-eclipse-plugin: assembly/ eclipse/
features/org.apache.openejb.feature/ plugins/
plugins/org.apache.openejb.helper.annotation/
plugins/org.apache.openejb.helper.annotation/META-INF/ plugins/...
Modified: openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.apache.openejb.helper.annotation/src/main/java/org/apache/openejb/helper/annotation/OpenEjbXmlConverter.java
URL: http://svn.apache.org/viewvc/openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.apache.openejb.helper.annotation/src/main/java/org/apache/openejb/helper/annotation/OpenEjbXmlConverter.java?rev=605823&r1=605822&r2=605823&view=diff
==============================================================================
--- openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.apache.openejb.helper.annotation/src/main/java/org/apache/openejb/helper/annotation/OpenEjbXmlConverter.java (original)
+++ openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.apache.openejb.helper.annotation/src/main/java/org/apache/openejb/helper/annotation/OpenEjbXmlConverter.java Wed Dec 19 23:49:19 2007
@@ -1,182 +1,384 @@
-/*
- * 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.openejb.helper.annotation;
-
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import javax.ejb.TransactionAttributeType;
-import javax.ejb.TransactionManagementType;
-
-import org.apache.openejb.jee.ApplicationException;
-import org.apache.openejb.jee.AssemblyDescriptor;
-import org.apache.openejb.jee.EjbJar;
-import org.apache.openejb.jee.EnterpriseBean;
-import org.apache.openejb.jee.EntityBean;
-import org.apache.openejb.jee.JaxbJavaee;
-import org.apache.openejb.jee.MessageDrivenBean;
-import org.apache.openejb.jee.MethodTransaction;
-import org.apache.openejb.jee.SessionBean;
-import org.apache.openejb.jee.SessionType;
-import org.apache.openejb.jee.StatefulBean;
-import org.apache.openejb.jee.StatelessBean;
-import org.apache.openejb.jee.TransactionType;
-import org.eclipse.core.resources.IProject;
-import org.xml.sax.InputSource;
-
-/**
- * Scans an openejb-jar.xml file using a SAX parser, and adds annotations
- * to source based on the XML.
- *
- * Depends on an implementation of IJavaProjectAnnotationFacade
- *
- */
-public class OpenEjbXmlConverter {
-
- public static final String CLS_TRANSACTION_ATTRIBUTE = "javax.ejb.TransactionAttribute";
- public static final String CLS_APPLICATION_EXCEPTION = "javax.ejb.ApplicationException";
- public static final String CLS_STATEFUL = "javax.ejb.Stateful";
- public static final String CLS_STATELESS = "javax.ejb.Stateless";
- public static final String CLS_MESSAGE_DRIVEN = "javax.ejb.MessageDriven";
- public static final String STATELESS_CLASS = CLS_STATELESS;
- protected IJavaProjectAnnotationFacade annotationHelper;
-
-
- /**
- * Constucts a new converter
- * @param annotationHelper Annotation Facade to use for adding annotations
- */
- public OpenEjbXmlConverter(IJavaProjectAnnotationFacade annotationHelper) {
- this.annotationHelper = annotationHelper;
- }
-
- /**
- * Constructs a new converter - uses the default implementation of
- * IJavaProjectAnnotationFacade - JavaProjectAnnotationFacade
- * @param project An eclipse Java project
- */
- public OpenEjbXmlConverter(IProject project) {
- this(new JavaProjectAnnotationFacade(project));
- }
-
- /**
- * Parses the XML
- * @param source An input source to the content of ejb-jar.xml
- * @return Whether or not the parsing was successful
- */
- public boolean convert(InputSource source) {
- try {
- EjbJar ejbJar = (EjbJar) JaxbJavaee.unmarshal(EjbJar.class, source.getByteStream());
-
- processEnterpriseBeans(ejbJar);
- processApplicationExceptions(ejbJar);
-
- return true;
- } catch (Exception e) {
- return false;
- }
- }
-
- private void processApplicationExceptions(EjbJar ejbJar) {
- List<ApplicationException> exceptionList = ejbJar.getAssemblyDescriptor().getApplicationException();
- Iterator<ApplicationException> iterator = exceptionList.iterator();
-
- while (iterator.hasNext()) {
- ApplicationException element = (ApplicationException) iterator.next();
- String exceptionClass = element.getExceptionClass();
-
- annotationHelper.addClassAnnotation(exceptionClass, CLS_APPLICATION_EXCEPTION);
- }
- }
-
- private void processEnterpriseBeans(EjbJar ejbJar) {
- EnterpriseBean[] enterpriseBeans = ejbJar.getEnterpriseBeans();
- Iterator<EnterpriseBean> iterator = Arrays.asList(enterpriseBeans).iterator();
- while (iterator.hasNext()) {
- EnterpriseBean bean = (EnterpriseBean) iterator.next();
- if (bean instanceof SessionBean) {
- SessionBean sessionBean = (SessionBean) bean;
- processSessionBean(sessionBean);
- } else if (bean instanceof EntityBean) {
- EntityBean entityBean = (EntityBean) bean;
- processEntityBean(entityBean);
- } else if (bean instanceof MessageDrivenBean) {
- MessageDrivenBean messageDriven = (MessageDrivenBean) bean;
- processMessageDrivenBean(messageDriven);
- }
-
- processTransactionManagement(bean, ejbJar.getAssemblyDescriptor());
- }
-
- }
-
- private void processTransactionManagement(EnterpriseBean bean, AssemblyDescriptor descriptor) {
- TransactionType transactionType = bean.getTransactionType();
-
- if (transactionType != null && (! TransactionType.CONTAINER.equals(transactionType))) {
- Map<String,Object> props = new HashMap<String, Object>();
- props.put("value", TransactionManagementType.BEAN);
-
- annotationHelper.addClassAnnotation(bean.getEjbClass(), "javax.ejb.TransactionManagement", props);
- }
-
- Map<String, List<MethodTransaction>> methodTransactions = descriptor.getMethodTransactions(bean.getEjbName());
- if (methodTransactions.containsKey("*")) {
- List<MethodTransaction> defaultTransactions = methodTransactions.get("*");
- MethodTransaction defaultTransaction = defaultTransactions.get(0);
-
- Map<String, Object> props = new HashMap<String, Object>();
- props.put("value", TransactionAttributeType.valueOf(defaultTransaction.getAttribute().name()));
- annotationHelper.addClassAnnotation(bean.getEjbClass(), CLS_TRANSACTION_ATTRIBUTE, props);
- }
-
- Iterator<String> iterator = methodTransactions.keySet().iterator();
- while (iterator.hasNext()) {
- String methodName = (String) iterator.next();
- if ("*".equals(methodName)) {
- continue;
- }
-
- List<MethodTransaction> transactions = methodTransactions.get(methodName);
- MethodTransaction methodTransaction = transactions.get(0);
-
- Map<String, Object> props = new HashMap<String, Object>();
- props.put("value", TransactionAttributeType.valueOf(methodTransaction.getAttribute().name()));
- annotationHelper.addMethodAnnotation(bean.getEjbClass(), methodName, CLS_TRANSACTION_ATTRIBUTE, props);
- }
- }
-
- private void processMessageDrivenBean(MessageDrivenBean entityBean) {
- annotationHelper.addClassAnnotation(entityBean.getEjbClass(), CLS_MESSAGE_DRIVEN);
- }
-
- private void processEntityBean(EntityBean entityBean) {
- }
-
- private void processSessionBean(SessionBean sessionBean) {
- String ejbClass = sessionBean.getEjbClass();
- if (sessionBean instanceof StatelessBean || sessionBean.getSessionType() == SessionType.STATELESS) {
- annotationHelper.addClassAnnotation(ejbClass, CLS_STATELESS);
- } else if (sessionBean instanceof StatefulBean || sessionBean.getSessionType() == SessionType.STATELESS) {
- annotationHelper.addClassAnnotation(ejbClass, CLS_STATEFUL);
- }
- }
-}
+/*
+ * 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.openejb.helper.annotation;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import javax.annotation.security.DeclareRoles;
+import javax.annotation.security.DenyAll;
+import javax.annotation.security.PermitAll;
+import javax.annotation.security.RolesAllowed;
+import javax.annotation.security.RunAs;
+import javax.ejb.MessageDriven;
+import javax.ejb.Remote;
+import javax.ejb.RemoteHome;
+import javax.ejb.Stateful;
+import javax.ejb.Stateless;
+import javax.ejb.TransactionAttribute;
+import javax.ejb.TransactionAttributeType;
+import javax.ejb.TransactionManagement;
+import javax.ejb.TransactionManagementType;
+import javax.interceptor.ExcludeClassInterceptors;
+import javax.interceptor.ExcludeDefaultInterceptors;
+import javax.interceptor.Interceptors;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+import javax.xml.transform.sax.SAXSource;
+
+import org.apache.openejb.jee.ActivationConfig;
+import org.apache.openejb.jee.ActivationConfigProperty;
+import org.apache.openejb.jee.ApplicationException;
+import org.apache.openejb.jee.AssemblyDescriptor;
+import org.apache.openejb.jee.EjbJar;
+import org.apache.openejb.jee.EnterpriseBean;
+import org.apache.openejb.jee.EntityBean;
+import org.apache.openejb.jee.InterceptorBinding;
+import org.apache.openejb.jee.JaxbJavaee;
+import org.apache.openejb.jee.MessageDrivenBean;
+import org.apache.openejb.jee.Method;
+import org.apache.openejb.jee.MethodParams;
+import org.apache.openejb.jee.MethodPermission;
+import org.apache.openejb.jee.MethodTransaction;
+import org.apache.openejb.jee.NamedMethod;
+import org.apache.openejb.jee.RemoteBean;
+import org.apache.openejb.jee.SecurityRoleRef;
+import org.apache.openejb.jee.SessionBean;
+import org.apache.openejb.jee.SessionType;
+import org.apache.openejb.jee.StatefulBean;
+import org.apache.openejb.jee.StatelessBean;
+import org.apache.openejb.jee.TransactionType;
+import org.eclipse.core.resources.IProject;
+import org.xml.sax.InputSource;
+
+/**
+ * Scans an ejb-jar.xml file using a JAXB parser, and adds annotations
+ * to source based on the XML.
+ *
+ * Depends on an implementation of IJavaProjectAnnotationFacade
+ *
+ */
+public class OpenEjbXmlConverter {
+
+ public static final String CLS_TRANSACTION_ATTRIBUTE = "javax.ejb.TransactionAttribute";
+ public static final String CLS_APPLICATION_EXCEPTION = "javax.ejb.ApplicationException";
+ public static final String CLS_STATEFUL = "javax.ejb.Stateful";
+ public static final String CLS_STATELESS = "javax.ejb.Stateless";
+ public static final String CLS_MESSAGE_DRIVEN = "javax.ejb.MessageDriven";
+ public static final String STATELESS_CLASS = CLS_STATELESS;
+ protected IJavaProjectAnnotationFacade annotationHelper;
+
+
+ /**
+ * Constucts a new converter
+ * @param annotationHelper Annotation Facade to use for adding annotations
+ */
+ public OpenEjbXmlConverter(IJavaProjectAnnotationFacade annotationHelper) {
+ this.annotationHelper = annotationHelper;
+ }
+
+ /**
+ * Constructs a new converter - uses the default implementation of
+ * IJavaProjectAnnotationFacade - JavaProjectAnnotationFacade
+ * @param project An eclipse Java project
+ */
+ public OpenEjbXmlConverter(IProject project) {
+ this(new JavaProjectAnnotationFacade(project));
+ }
+
+ /**
+ * Parses the XML
+ * @param source An input source to the content of ejb-jar.xml
+ * @return Whether or not the parsing was successful
+ */
+ public boolean convert(InputSource source) {
+ try {
+ EjbJar ejbJar = (EjbJar) JaxbJavaee.unmarshal(EjbJar.class, source.getByteStream());
+
+ processEnterpriseBeans(ejbJar);
+ processApplicationExceptions(ejbJar);
+
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ private void processApplicationExceptions(EjbJar ejbJar) {
+ List<ApplicationException> exceptionList = ejbJar.getAssemblyDescriptor().getApplicationException();
+ Iterator<ApplicationException> iterator = exceptionList.iterator();
+
+ while (iterator.hasNext()) {
+ ApplicationException element = (ApplicationException) iterator.next();
+ String exceptionClass = element.getExceptionClass();
+
+ annotationHelper.addClassAnnotation(exceptionClass, javax.ejb.ApplicationException.class, null);
+ }
+ }
+
+ private void processEnterpriseBeans(EjbJar ejbJar) {
+ EnterpriseBean[] enterpriseBeans = ejbJar.getEnterpriseBeans();
+ Iterator<EnterpriseBean> iterator = Arrays.asList(enterpriseBeans).iterator();
+ while (iterator.hasNext()) {
+ EnterpriseBean bean = (EnterpriseBean) iterator.next();
+ if (bean instanceof SessionBean) {
+ SessionBean sessionBean = (SessionBean) bean;
+ processSessionBean(sessionBean);
+ } else if (bean instanceof EntityBean) {
+ EntityBean entityBean = (EntityBean) bean;
+ processEntityBean(entityBean);
+ } else if (bean instanceof MessageDrivenBean) {
+ MessageDrivenBean messageDriven = (MessageDrivenBean) bean;
+ processMessageDrivenBean(messageDriven);
+ }
+
+ processTransactionManagement(bean, ejbJar.getAssemblyDescriptor());
+ processBeanSecurityIdentity(bean);
+ processDeclaredRoles(bean);
+ processMethodPermissions(ejbJar);
+ }
+
+
+
+ }
+
+ /**
+ * Generates transaction management annotations for an Enterprise Bean
+ * @param bean The enterprise bean to generate annotations for
+ * @param descriptor The assembly descriptor
+ */
+ public void processTransactionManagement(EnterpriseBean bean, AssemblyDescriptor descriptor) {
+ TransactionType transactionType = bean.getTransactionType();
+
+ if (transactionType != null && (! TransactionType.CONTAINER.equals(transactionType))) {
+ Map<String,Object> props = new HashMap<String, Object>();
+ props.put("value", TransactionManagementType.BEAN);
+
+ annotationHelper.addClassAnnotation(bean.getEjbClass(), TransactionManagement.class, props);
+ }
+
+ Map<String, List<MethodTransaction>> methodTransactions = descriptor.getMethodTransactions(bean.getEjbName());
+ if (methodTransactions.containsKey("*")) {
+ List<MethodTransaction> defaultTransactions = methodTransactions.get("*");
+ MethodTransaction defaultTransaction = defaultTransactions.get(0);
+
+ Map<String, Object> props = new HashMap<String, Object>();
+ props.put("value", TransactionAttributeType.valueOf(defaultTransaction.getAttribute().name()));
+ annotationHelper.addClassAnnotation(bean.getEjbClass(), TransactionAttribute.class, props);
+ }
+
+ Iterator<String> iterator = methodTransactions.keySet().iterator();
+ while (iterator.hasNext()) {
+ String methodName = (String) iterator.next();
+ if ("*".equals(methodName)) {
+ continue;
+ }
+
+ List<MethodTransaction> transactions = methodTransactions.get(methodName);
+ MethodTransaction methodTransaction = transactions.get(0);
+
+ Map<String, Object> props = new HashMap<String, Object>();
+ props.put("value", TransactionAttributeType.valueOf(methodTransaction.getAttribute().name()));
+
+ MethodParams methodParams = methodTransaction.getMethod().getMethodParams();
+ String[] params = methodParams.getMethodParam().toArray(new String[0]);
+ annotationHelper.addMethodAnnotation(bean.getEjbClass(), methodName, params, TransactionAttribute.class, props);
+ }
+ }
+
+ public void processMessageDrivenBean(MessageDrivenBean bean) {
+ Map<String, Object> props = new HashMap<String, Object>();
+
+ ActivationConfig activationConfig = bean.getActivationConfig();
+ if (activationConfig != null) {
+ List<Map<String, Object>> activationConfigPropertiesList = new ArrayList<Map<String,Object>>();
+
+ List<ActivationConfigProperty> activationConfigProperties = activationConfig.getActivationConfigProperty();
+
+ for (ActivationConfigProperty activationConfigProperty : activationConfigProperties) {
+ HashMap<String, Object> configProps = new HashMap<String, Object>();
+ configProps.put("propertyName", activationConfigProperty.getActivationConfigPropertyName());
+ configProps.put("propertyValue", activationConfigProperty.getActivationConfigPropertyValue());
+
+ activationConfigPropertiesList.add(configProps);
+ }
+
+ props.put("activationConfig", activationConfigPropertiesList.toArray(new HashMap[0]));
+ }
+
+ annotationHelper.addClassAnnotation(bean.getEjbClass(), MessageDriven.class, props);
+ }
+
+ private void processEntityBean(EntityBean entityBean) {
+ }
+
+ public void processSessionBean(SessionBean sessionBean) {
+ String ejbClass = sessionBean.getEjbClass();
+ if (sessionBean instanceof StatelessBean || sessionBean.getSessionType() == SessionType.STATELESS) {
+ annotationHelper.addClassAnnotation(ejbClass, Stateless.class, null);
+ } else if (sessionBean instanceof StatefulBean || sessionBean.getSessionType() == SessionType.STATELESS) {
+ annotationHelper.addClassAnnotation(ejbClass, Stateful.class, null);
+ }
+
+ if (sessionBean instanceof RemoteBean) {
+ if (sessionBean.getRemote() != null && sessionBean.getRemote().length() > 0) {
+ annotationHelper.addClassAnnotation(sessionBean.getRemote(), Remote.class, null);
+ }
+
+ if (sessionBean.getHome() != null && sessionBean.getHome().length() > 0) {
+ Map<String, Object> props = new HashMap<String, Object>();
+ props.put("value", sessionBean.getHome());
+ annotationHelper.addClassAnnotation(ejbClass, RemoteHome.class, props);
+ }
+ }
+ }
+
+ public void processMethodPermissions(EjbJar ejbJar) {
+ AssemblyDescriptor descriptor = ejbJar.getAssemblyDescriptor();
+
+ List<MethodPermission> methodPermissions = descriptor.getMethodPermission();
+ Iterator<MethodPermission> iterator = methodPermissions.iterator();
+
+ while (iterator.hasNext()) {
+ MethodPermission methodPermission = (MethodPermission) iterator.next();
+ List<String> roles = methodPermission.getRoleName();
+
+ if (roles == null || roles.size() == 0) {
+ continue;
+ }
+
+ String[] roleList = roles.toArray(new String[0]);
+ Map<String, Object> roleProps = new HashMap<String, Object>();
+ roleProps.put("value", roleList);
+
+
+ List<Method> methods = methodPermission.getMethod();
+ Iterator<Method> methodIter = methods.iterator();
+
+ while (methodIter.hasNext()) {
+ Method method = (Method) methodIter.next();
+ EnterpriseBean enterpriseBean = ejbJar.getEnterpriseBean(method.getEjbName());
+
+ MethodParams methodParams = method.getMethodParams();
+ String[] params = methodParams.getMethodParam().toArray(new String[0]);
+
+ if ((! "*".equals(method.getMethodName())) && descriptor.getExcludeList().getMethod().contains(method)) {
+ annotationHelper.addMethodAnnotation(enterpriseBean.getEjbClass(), method.getMethodName(), params, DenyAll.class, null);
+ continue;
+ }
+
+ if (methodPermission.getUnchecked()) {
+ if ("*".equals(method.getMethodName())) {
+ annotationHelper.addClassAnnotation(enterpriseBean.getEjbClass(), PermitAll.class, null);
+ } else {
+ annotationHelper.addMethodAnnotation(enterpriseBean.getEjbClass(), method.getMethodName(), params, PermitAll.class, null);
+ }
+ } else {
+ if ("*".equals(method.getMethodName())) {
+ annotationHelper.addClassAnnotation(enterpriseBean.getEjbClass(), RolesAllowed.class, roleProps);
+ } else {
+ annotationHelper.addMethodAnnotation(enterpriseBean.getEjbClass(), method.getMethodName(), params, RolesAllowed.class, roleProps);
+ }
+ }
+ }
+ }
+ }
+
+ public void processBeanSecurityIdentity(EnterpriseBean bean) {
+ if (bean.getSecurityIdentity() == null) {
+ return;
+ }
+
+ Map<String, Object> runAsProps = new HashMap<String, Object>();
+ runAsProps.put("value", bean.getSecurityIdentity().getRunAs());
+
+ annotationHelper.addClassAnnotation(bean.getEjbClass(), RunAs.class, runAsProps);
+ }
+
+ public void processDeclaredRoles(EnterpriseBean bean) {
+ if (! (bean instanceof RemoteBean)) {
+ return;
+ }
+
+ RemoteBean remoteBean = (RemoteBean) bean;
+ List<SecurityRoleRef> securityRoleRefs = remoteBean.getSecurityRoleRef();
+
+ if (securityRoleRefs == null || securityRoleRefs.size() == 0) {
+ return;
+ }
+
+ Map<String, Object> props = new HashMap<String, Object>();
+ List<String> roleList = new ArrayList<String>();
+
+ for (SecurityRoleRef securityRoleRef : securityRoleRefs) {
+ roleList.add(securityRoleRef.getRoleName());
+ }
+
+ props.put("value", roleList.toArray(new String[0]));
+ annotationHelper.addClassAnnotation(bean.getEjbClass(), DeclareRoles.class, props);
+ }
+
+ public void processInterceptors(EjbJar ejbJar) {
+ List<InterceptorBinding> interceptorBindings = ejbJar.getAssemblyDescriptor().getInterceptorBinding();
+
+ for (InterceptorBinding interceptorBinding : interceptorBindings) {
+ EnterpriseBean bean = ejbJar.getEnterpriseBean(interceptorBinding.getEjbName());
+
+ List<String> interceptorClasses = interceptorBinding.getInterceptorClass();
+
+ String[] classes = interceptorClasses.toArray(new String[0]);
+
+ Map<String, Object> properties = new HashMap<String, Object>();
+ properties.put("value", classes);
+
+ if (interceptorBinding.getMethod() == null) {
+ if (interceptorBinding.getExcludeDefaultInterceptors()) {
+ annotationHelper.addClassAnnotation(bean.getEjbClass(), ExcludeDefaultInterceptors.class, properties);
+ }
+
+ if (interceptorBinding.getExcludeClassInterceptors()) {
+ annotationHelper.addClassAnnotation(bean.getEjbClass(), ExcludeClassInterceptors.class, properties);
+ }
+
+ annotationHelper.addClassAnnotation(bean.getEjbClass(), Interceptors.class, properties);
+ } else {
+ NamedMethod method = interceptorBinding.getMethod();
+ String[] signature = method.getMethodParams().getMethodParam().toArray(new String[0]);
+
+ if (interceptorBinding.getExcludeDefaultInterceptors()) {
+ annotationHelper.addMethodAnnotation(bean.getEjbClass(), method.getMethodName(), signature, ExcludeDefaultInterceptors.class, properties);
+ }
+
+ if (interceptorBinding.getExcludeClassInterceptors()) {
+ annotationHelper.addMethodAnnotation(bean.getEjbClass(), method.getMethodName(), signature, ExcludeClassInterceptors.class, properties);
+ }
+
+ annotationHelper.addMethodAnnotation(bean.getEjbClass(), method.getMethodName(), signature, Interceptors.class, properties);
+ }
+ }
+ }
+}
Modified: openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.apache.openejb.helper.annotation/src/main/java/org/apache/openejb/helper/annotation/wizards/EJBMigrationRefactoring.java
URL: http://svn.apache.org/viewvc/openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.apache.openejb.helper.annotation/src/main/java/org/apache/openejb/helper/annotation/wizards/EJBMigrationRefactoring.java?rev=605823&r1=605822&r2=605823&view=diff
==============================================================================
--- openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.apache.openejb.helper.annotation/src/main/java/org/apache/openejb/helper/annotation/wizards/EJBMigrationRefactoring.java (original)
+++ openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.apache.openejb.helper.annotation/src/main/java/org/apache/openejb/helper/annotation/wizards/EJBMigrationRefactoring.java Wed Dec 19 23:49:19 2007
@@ -1,113 +1,115 @@
-/*
- * 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.openejb.helper.annotation.wizards;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-
-import org.apache.openejb.helper.annotation.JavaProjectAnnotationFacade;
-import org.apache.openejb.helper.annotation.OpenEjbXmlConverter;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.ltk.core.refactoring.Change;
-import org.eclipse.ltk.core.refactoring.Refactoring;
-import org.eclipse.ltk.core.refactoring.RefactoringStatus;
-import org.eclipse.ltk.core.refactoring.RefactoringStatusEntry;
-import org.xml.sax.InputSource;
-
-public class EJBMigrationRefactoring extends Refactoring {
-
- protected String ejbJarXmlFile;
- protected String openEjbJarXmlFile;
- protected IProject project;
-
- @Override
- public RefactoringStatus checkFinalConditions(IProgressMonitor pm)
- throws CoreException, OperationCanceledException {
-
- return new RefactoringStatus();
- }
-
- @Override
- public RefactoringStatus checkInitialConditions(IProgressMonitor pm)
- throws CoreException, OperationCanceledException {
-
- if (ejbJarXmlFile == null || ejbJarXmlFile.length() == 0) {
- return RefactoringStatus.createErrorStatus("No ejb-jar.xml specified");
- }
-
- IFile file = project.getFile(ejbJarXmlFile);
- if (! (file.exists())) {
- return RefactoringStatus.createErrorStatus("Specified ejb-jar.xml does not exist");
- }
-
- return new RefactoringStatus();
- }
-
- @Override
- public Change createChange(IProgressMonitor pm) throws CoreException,
- OperationCanceledException {
-
- IFile file = project.getFile(ejbJarXmlFile);
- if (! (file.exists())) {
- return null;
- }
-
- JavaProjectAnnotationFacade annotationFacade = new JavaProjectAnnotationFacade(project);
- OpenEjbXmlConverter converter = new OpenEjbXmlConverter(annotationFacade);
- converter.convert(new InputSource(file.getContents()));
-
- return annotationFacade.getChange();
- }
-
- @Override
- public String getName() {
- return "EJB 3.0 Annotation Migration Refactoring Wizard";
- }
-
- public String getEjbJarXmlFile() {
- return ejbJarXmlFile;
- }
-
- public void setEjbJarXmlFile(String ejbJarXmlFile) {
- this.ejbJarXmlFile = ejbJarXmlFile;
- }
-
- public String getOpenEjbJarXmlFile() {
- return openEjbJarXmlFile;
- }
-
- public void setOpenEjbJarXmlFile(String openEjbJarXmlFile) {
- this.openEjbJarXmlFile = openEjbJarXmlFile;
- }
-
- public IProject getProject() {
- return project;
- }
-
- public void setProject(IProject project) {
- this.project = project;
- }
-
-
-}
+/*
+ * 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.openejb.helper.annotation.wizards;
+
+import org.apache.openejb.helper.annotation.JavaProjectAnnotationFacade;
+import org.apache.openejb.helper.annotation.OpenEjbXmlConverter;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.OperationCanceledException;
+import org.eclipse.ltk.core.refactoring.Change;
+import org.eclipse.ltk.core.refactoring.Refactoring;
+import org.eclipse.ltk.core.refactoring.RefactoringStatus;
+import org.xml.sax.InputSource;
+
+public class EJBMigrationRefactoring extends Refactoring {
+
+ protected String ejbJarXmlFile;
+ protected String openEjbJarXmlFile;
+ protected IProject project;
+ protected RefactoringStatus status = new RefactoringStatus();
+
+ @Override
+ public RefactoringStatus checkFinalConditions(IProgressMonitor pm)
+
+
+ throws CoreException, OperationCanceledException {
+
+ status = new RefactoringStatus();
+
+ return status;
+ }
+
+ @Override
+ public RefactoringStatus checkInitialConditions(IProgressMonitor pm)
+ throws CoreException, OperationCanceledException {
+
+ if (ejbJarXmlFile == null || ejbJarXmlFile.length() == 0) {
+ return RefactoringStatus.createErrorStatus("No ejb-jar.xml specified");
+ }
+
+ IFile file = project.getFile(ejbJarXmlFile);
+ if (! (file.exists())) {
+ return RefactoringStatus.createErrorStatus("Specified ejb-jar.xml does not exist");
+ }
+
+ return new RefactoringStatus();
+ }
+
+ @Override
+ public Change createChange(IProgressMonitor pm) throws CoreException,
+ OperationCanceledException {
+
+ IFile file = project.getFile(ejbJarXmlFile);
+ if (! (file.exists())) {
+ return null;
+ }
+
+ JavaProjectAnnotationFacade annotationFacade = new JavaProjectAnnotationFacade(project);
+ OpenEjbXmlConverter converter = new OpenEjbXmlConverter(annotationFacade);
+ converter.convert(new InputSource(file.getContents()));
+
+ String[] warnings = annotationFacade.getWarnings();
+ for (String warning : warnings) {
+ status.addWarning(warning);
+ }
+
+ return annotationFacade.getChange();
+ }
+
+ @Override
+ public String getName() {
+ return "EJB 3.0 Annotation Migration Refactoring Wizard";
+ }
+
+ public String getEjbJarXmlFile() {
+ return ejbJarXmlFile;
+ }
+
+ public void setEjbJarXmlFile(String ejbJarXmlFile) {
+ this.ejbJarXmlFile = ejbJarXmlFile;
+ }
+
+ public String getOpenEjbJarXmlFile() {
+ return openEjbJarXmlFile;
+ }
+
+ public void setOpenEjbJarXmlFile(String openEjbJarXmlFile) {
+ this.openEjbJarXmlFile = openEjbJarXmlFile;
+ }
+
+ public IProject getProject() {
+ return project;
+ }
+
+ public void setProject(IProject project) {
+ this.project = project;
+ }
+}
Modified: openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.apache.openejb.helper.annotation/src/main/java/org/apache/openejb/helper/annotation/wizards/EJBMigrationWizard.java
URL: http://svn.apache.org/viewvc/openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.apache.openejb.helper.annotation/src/main/java/org/apache/openejb/helper/annotation/wizards/EJBMigrationWizard.java?rev=605823&r1=605822&r2=605823&view=diff
==============================================================================
--- openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.apache.openejb.helper.annotation/src/main/java/org/apache/openejb/helper/annotation/wizards/EJBMigrationWizard.java (original)
+++ openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.apache.openejb.helper.annotation/src/main/java/org/apache/openejb/helper/annotation/wizards/EJBMigrationWizard.java Wed Dec 19 23:49:19 2007
@@ -17,12 +17,14 @@
package org.apache.openejb.helper.annotation.wizards;
-import org.eclipse.ltk.core.refactoring.Refactoring;
import org.eclipse.ltk.ui.refactoring.RefactoringWizard;
public class EJBMigrationWizard extends RefactoringWizard {
- public EJBMigrationWizard(Refactoring refactoring, int flags) {
+ private final EJBMigrationRefactoring refactoring;
+
+ public EJBMigrationWizard(EJBMigrationRefactoring refactoring, int flags) {
super(refactoring, flags);
+ this.refactoring = refactoring;
}
protected EJBJarSelectionPage ejbJarSelectionPage;
@@ -30,4 +32,5 @@
@Override
protected void addUserInputPages() {
}
+
}
Modified: openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.eclipse.jst.server.generic.openejb/maven-eclipse.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.eclipse.jst.server.generic.openejb/maven-eclipse.xml?rev=605823&r1=605822&r2=605823&view=diff
==============================================================================
--- openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.eclipse.jst.server.generic.openejb/maven-eclipse.xml (original)
+++ openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.eclipse.jst.server.generic.openejb/maven-eclipse.xml Wed Dec 19 23:49:19 2007
@@ -1,14 +0,0 @@
-<project default="copy-resources">
- <target name="init"/>
- <target name="copy-resources" depends="init">
- <copy todir="target/classes/META-INF" filtering="false">
- <fileset dir="META-INF" includes="MANIFEST.MF"/>
- </copy>
- <copy todir="target/classes/buildfiles" filtering="false">
- <fileset dir="buildfiles" includes="*"/>
- </copy>
- <copy todir="target/classes/servers" filtering="false">
- <fileset dir="servers" includes="*"/>
- </copy>
- </target>
-</project>
\ No newline at end of file
Modified: openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/pom.xml?rev=605823&r1=605822&r2=605823&view=diff
==============================================================================
--- openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/pom.xml (original)
+++ openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/pom.xml Wed Dec 19 23:49:19 2007
@@ -1,148 +1,150 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ~ 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.
- -->
-<!-- $Rev: 577554 $ $Date: 2007-09-20 06:35:12 +0100 (Thu, 20 Sep 2007) $ -->
-<project>
- <modelVersion>4.0.0</modelVersion>
- <groupId>org.apache.openejb</groupId>
- <artifactId>eclipse-plugins-parent</artifactId>
- <packaging>pom</packaging>
- <name>${artifactId}</name>
- <parent>
- <groupId>org.apache.openejb</groupId>
- <artifactId>eclipse-plugins</artifactId>
- <version>1.0.0</version>
- <relativePath>../pom.xml</relativePath>
- </parent>
- <build>
- <plugins>
- <plugin>
- <artifactId>maven-clean-plugin</artifactId>
- <inherited>false</inherited>
- <configuration>
- <filesets>
- <fileset>
- <directory>.</directory>
- <includes>
- <include>.metadata</include>
- </includes>
- </fileset>
- </filesets>
- </configuration>
- </plugin>
- </plugins>
- <pluginManagement>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-eclipse-plugin</artifactId>
- <configuration>
- <additionalProjectnatures>
- <projectnature>org.eclipse.pde.PluginNature</projectnature>
- </additionalProjectnatures>
- <classpathContainers>
- <classpathContainer>org.eclipse.pde.core.requiredPlugins</classpathContainer>
- <classpathContainer>org.eclipse.jdt.launching.JRE_CONTAINER</classpathContainer>
- </classpathContainers>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.geronimo.devtools</groupId>
- <artifactId>maven-eclipsepde-plugin</artifactId>
- <executions>
- <execution>
- <id>initialize</id>
- <phase>validate</phase>
- <goals>
- <goal>manifestbundles</goal>
- <goal>install</goal>
- </goals>
- </execution>
- <execution>
- <id>validate-bundle-classpath</id>
- <phase>process-resources</phase>
- <goals>
- <goal>validatemanifest</goal>
- </goals>
- <configuration>
- <classpathEntriesDir>lib</classpathEntriesDir>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <artifactId>maven-jar-plugin</artifactId>
- <configuration>
- <archive>
- <manifestFile>${basedir}/META-INF/MANIFEST.MF</manifestFile>
- </archive>
- </configuration>
- </plugin>
- <plugin>
- <artifactId>maven-antrun-plugin</artifactId>
- <executions>
- <!-- workaround for bugzilla 147936 -->
- <execution>
- <id>backup</id>
- <phase>process-sources</phase>
- <configuration>
- <tasks>
- <copy file="${basedir}/.classpath" todir="${project.build.directory}" overwrite="false" failonerror="false"/>
- <copy file="${basedir}/.project" todir="${project.build.directory}" overwrite="false" failonerror="false"/>
- </tasks>
- </configuration>
- <goals>
- <goal>run</goal>
- </goals>
- </execution>
- <execution>
- <id>restore</id>
- <phase>compile</phase>
- <configuration>
- <tasks>
- <copy file="${project.build.directory}/.classpath" todir="${basedir}" overwrite="true" failonerror="false"/>
- <copy file="${project.build.directory}/.project" todir="${basedir}" overwrite="true" failonerror="false"/>
- </tasks>
- </configuration>
- <goals>
- <goal>run</goal>
- </goals>
- </execution>
- <!-- /workaround -->
- </executions>
- </plugin>
- <plugin>
- <artifactId>maven-clean-plugin</artifactId>
- <configuration>
- <filesets>
- <fileset>
- <directory>.</directory>
- <includes>
- <include>lib</include>
- </includes>
- </fileset>
- </filesets>
- </configuration>
- </plugin>
- </plugins>
- </pluginManagement>
- </build>
- <modules>
- <module>org.apache.openejb.helper.annotation</module>
- <module>org.eclipse.jst.server.generic.openejb</module>
- </modules>
-</project>
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ 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.
+ -->
+<!-- $Rev: 577554 $ $Date: 2007-09-20 06:35:12 +0100 (Thu, 20 Sep 2007) $ -->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.apache.openejb</groupId>
+ <artifactId>eclipse-plugins-parent</artifactId>
+ <packaging>pom</packaging>
+ <name>${artifactId}</name>
+ <parent>
+ <groupId>org.apache.openejb</groupId>
+ <artifactId>eclipse-plugins</artifactId>
+ <version>1.0.0</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-clean-plugin</artifactId>
+ <inherited>false</inherited>
+ <configuration>
+ <filesets>
+ <fileset>
+ <directory>.</directory>
+ <includes>
+ <include>.metadata</include>
+ </includes>
+ </fileset>
+ </filesets>
+ </configuration>
+ </plugin>
+ </plugins>
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-eclipse-plugin</artifactId>
+ <configuration>
+ <additionalProjectnatures>
+ <projectnature>org.eclipse.pde.PluginNature</projectnature>
+ </additionalProjectnatures>
+ <classpathContainers>
+ <classpathContainer>org.eclipse.pde.core.requiredPlugins</classpathContainer>
+ <classpathContainer>org.eclipse.jdt.launching.JRE_CONTAINER</classpathContainer>
+ </classpathContainers>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.geronimo.devtools</groupId>
+ <artifactId>maven-eclipsepde-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>initialize</id>
+ <phase>validate</phase>
+ <goals>
+ <goal>manifestbundles</goal>
+ <goal>install</goal>
+ </goals>
+ </execution>
+ <execution>
+ <id>validate-bundle-classpath</id>
+ <phase>process-resources</phase>
+ <goals>
+ <goal>validatemanifest</goal>
+ </goals>
+ <configuration>
+ <classpathEntriesDir>lib</classpathEntriesDir>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <artifactId>maven-jar-plugin</artifactId>
+ <configuration>
+ <archive>
+ <manifestFile>${basedir}/META-INF/MANIFEST.MF</manifestFile>
+ </archive>
+ </configuration>
+ </plugin>
+ <plugin>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <executions>
+ <!-- workaround for bugzilla 147936 -->
+ <execution>
+ <id>backup</id>
+ <phase>process-sources</phase>
+ <configuration>
+ <tasks>
+ <copy file="${basedir}/.classpath" todir="${project.build.directory}" overwrite="false" failonerror="false"/>
+ <copy file="${basedir}/.project" todir="${project.build.directory}" overwrite="false" failonerror="false"/>
+ </tasks>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
+ <execution>
+ <id>restore</id>
+ <phase>compile</phase>
+ <configuration>
+ <tasks>
+ <copy file="${project.build.directory}/.classpath" todir="${basedir}" overwrite="true" failonerror="false"/>
+ <copy file="${project.build.directory}/.project" todir="${basedir}" overwrite="true" failonerror="false"/>
+ </tasks>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+
+ </execution>
+ <!-- /workaround -->
+ </executions>
+ </plugin>
+ <plugin>
+ <artifactId>maven-clean-plugin</artifactId>
+ <configuration>
+ <filesets>
+ <fileset>
+ <directory>.</directory>
+ <includes>
+ <include>lib</include>
+ </includes>
+ </fileset>
+ </filesets>
+ </configuration>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+ </build>
+ <modules>
+ <module>org.apache.openejb.helper.annotation</module>
+ <module>org.apache.openejb.helper.annotation.test</module>
+ <module>org.eclipse.jst.server.generic.openejb</module>
+ </modules>
+</project>