You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by an...@apache.org on 2015/12/04 17:15:41 UTC
[37/39] tomee git commit: EOL
http://git-wip-us.apache.org/repos/asf/tomee/blob/52567075/container/openejb-core/src/main/java/org/apache/openejb/bval/BeanValidationAppendixInterceptor.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/bval/BeanValidationAppendixInterceptor.java b/container/openejb-core/src/main/java/org/apache/openejb/bval/BeanValidationAppendixInterceptor.java
index 9efded1..1395f0d 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/bval/BeanValidationAppendixInterceptor.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/bval/BeanValidationAppendixInterceptor.java
@@ -1,205 +1,205 @@
-/*
- * 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.bval;
-
-import org.apache.openejb.core.ThreadContext;
-import org.apache.openejb.loader.SystemInstance;
-import org.apache.openejb.util.LogCategory;
-import org.apache.openejb.util.Logger;
-
-import javax.interceptor.AroundInvoke;
-import javax.interceptor.InvocationContext;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
-import javax.validation.ConstraintViolation;
-import javax.validation.ConstraintViolationException;
-import javax.validation.ValidationException;
-import javax.validation.Validator;
-import java.lang.reflect.Method;
-import java.util.Collections;
-import java.util.Set;
-
-/**
- * A simple interceptor to validate parameters and returned value using
- * bean validation spec. It doesn't use group for now.
- */
-public class BeanValidationAppendixInterceptor {
- private static final Logger logger = Logger.getInstance(LogCategory.OPENEJB, BeanValidationAppendixInterceptor.class);
- private static final Class<?> APACHE_BVAL_METHOD_CLASS = initApache();
- private static final Class<?> HIBERNATE_METHOD_CLASS = initHibernate();
- public static final Class<?>[] BVAL_ARG_TYPES = new Class<?>[]{
- Class.class, Method.class, Object[].class, Class[].class
- };
- public static final Class<?>[] HIBERNATE_ARG_TYPES = new Class<?>[]{
- Object.class, Method.class, Object[].class, Class[].class
- };
-
- private static final boolean ON;
-
- static {
- boolean on = true;
- try {
- BeanValidationAppendixInterceptor.class.getClassLoader().loadClass("javax.validation.executable.ExecutableValidator");
- on = "true".equalsIgnoreCase(SystemInstance.get().getProperty("openejb.bval.10.interceptor.force", "false"));
- if (!on) {
- logger.debug(BeanValidationAppendixInterceptor.class.getName() + " deactivated since BVal 1.1 is usable, use openejb.bval.10.interceptor.force=true to force it");
- }
- } catch (final Throwable e) {
- // no-op
- }
- ON = on;
- }
-
- @AroundInvoke
- public Object aroundInvoke(final InvocationContext ejbContext) throws Exception {
- if (!BeanValidationAppendixInterceptor.ON) {
- return ejbContext.proceed();
- }
-
- Object validatorObject = null;
- Validator validator = null;
- try {
- validator = (Validator) new InitialContext().lookup("java:comp/Validator");
- } catch (final NamingException ne) {
- // no-op
- } catch (final Exception e) {
- logger.warning("BeanValidationAppendixInterceptor unexpected error: " + e);
- return ejbContext.proceed();
- }
-
- final ThreadContext threadContext = ThreadContext.getThreadContext();
- Class<?> bvalClazzToValidate = ejbContext.getTarget().getClass();
- if (threadContext != null && ejbContext.getTarget().getClass().getInterfaces().length > 0) {
- bvalClazzToValidate = threadContext.getInvokedInterface();
- }
-
- Method method = ejbContext.getMethod();
- if (!bvalClazzToValidate.equals(ejbContext.getTarget().getClass())) {
- method = bvalClazzToValidate.getMethod(method.getName(), method.getParameterTypes());
- }
-
- Set<?> violations = Collections.emptySet();
- if (APACHE_BVAL_METHOD_CLASS != null && validator != null) {
- validatorObject = validator.unwrap(APACHE_BVAL_METHOD_CLASS);
- violations = call(Set.class, validatorObject, "validateParameters",
- new Object[]{
- bvalClazzToValidate, method, ejbContext.getParameters(), new Class[0]
- },
- BVAL_ARG_TYPES);
- } else if (HIBERNATE_METHOD_CLASS != null && validator != null) {
- validatorObject = validator.unwrap(HIBERNATE_METHOD_CLASS);
- violations = call(Set.class, validatorObject, "validateAllParameters",
- new Object[]{
- ejbContext.getTarget(), ejbContext.getMethod(), ejbContext.getParameters(), new Class[0]
- },
- HIBERNATE_ARG_TYPES);
- } else { // a warning message to inform Apache Bean Validation is not present
- if (validator == null) {
- logger.error("can't find validator");
- } else {
- logger.warning("Apache Bean Validation is not present, "
- + BeanValidationAppendixInterceptor.class.getName() + " will not work. "
- + "Please put it if you want to validate your parameters and returned values "
- + "with bean validation JSR.");
- }
- }
-
- if (violations.size() > 0) {
- throw buildValidationException((Set<ConstraintViolation<?>>) violations);
- }
-
- final Object returnedValue = ejbContext.proceed();
-
- violations = Collections.emptySet();
- if (validatorObject != null && APACHE_BVAL_METHOD_CLASS != null) {
- violations = call(Set.class, validatorObject, "validateReturnedValue",
- new Object[]{
- bvalClazzToValidate, method, returnedValue, new Class[0]
- },
- new Class<?>[]{
- Class.class, Method.class, Object.class, Class[].class
- });
- } else if (validatorObject != null && HIBERNATE_METHOD_CLASS != null) {
- violations = call(Set.class, validatorObject, "validateReturnValue",
- new Object[]{
- ejbContext.getTarget(), ejbContext.getMethod(), returnedValue, new Class[0]
- },
- new Class<?>[]{
- Object.class, Method.class, Object.class, Class[].class
- });
- }
-
- if (violations.size() > 0) {
- throw buildValidationException((Set<ConstraintViolation<?>>) violations);
- }
-
- return returnedValue;
- }
-
-
- // just a simple EJBException for now
- private RuntimeException buildValidationException(final Set<ConstraintViolation<?>> violations) {
- return new ConstraintViolationException(violations);
- }
-
- private static <T> T call(final Class<T> returnedType, final Object o, final String methodName, final Object[] params, final Class<?>[] types) {
- Method method = null;
- boolean accessible = true;
- try {
- method = o.getClass().getMethod(methodName, types);
- accessible = method.isAccessible();
- if (!accessible) {
- accessible = false;
- method.setAccessible(true);
- }
- return returnedType.cast(method.invoke(o, params));
- } catch (final Exception e) {
- e.printStackTrace();
- throw new ValidationException("can't call method " + methodName + " on " + o, e);
- } finally {
- if (method != null) {
- method.setAccessible(accessible);
- }
- }
- }
-
- private static ClassLoader getClassLaoder() {
- ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
- if (classLoader == null) {
- classLoader = BeanValidationAppendixInterceptor.class.getClassLoader();
- }
- return classLoader;
- }
-
- private static Class<?> initApache() {
- try {
- return getClassLaoder().loadClass("org.apache.bval.jsr303.extensions.MethodValidator");
- } catch (final ClassNotFoundException e) {
- return null;
- }
- }
-
- private static Class<?> initHibernate() {
- try {
- return getClassLaoder().loadClass("org.hibernate.validator.method.MethodValidator");
- } catch (final ClassNotFoundException e) {
- return null;
- }
- }
-}
-
+/*
+ * 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.bval;
+
+import org.apache.openejb.core.ThreadContext;
+import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.util.LogCategory;
+import org.apache.openejb.util.Logger;
+
+import javax.interceptor.AroundInvoke;
+import javax.interceptor.InvocationContext;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import javax.validation.ConstraintViolation;
+import javax.validation.ConstraintViolationException;
+import javax.validation.ValidationException;
+import javax.validation.Validator;
+import java.lang.reflect.Method;
+import java.util.Collections;
+import java.util.Set;
+
+/**
+ * A simple interceptor to validate parameters and returned value using
+ * bean validation spec. It doesn't use group for now.
+ */
+public class BeanValidationAppendixInterceptor {
+ private static final Logger logger = Logger.getInstance(LogCategory.OPENEJB, BeanValidationAppendixInterceptor.class);
+ private static final Class<?> APACHE_BVAL_METHOD_CLASS = initApache();
+ private static final Class<?> HIBERNATE_METHOD_CLASS = initHibernate();
+ public static final Class<?>[] BVAL_ARG_TYPES = new Class<?>[]{
+ Class.class, Method.class, Object[].class, Class[].class
+ };
+ public static final Class<?>[] HIBERNATE_ARG_TYPES = new Class<?>[]{
+ Object.class, Method.class, Object[].class, Class[].class
+ };
+
+ private static final boolean ON;
+
+ static {
+ boolean on = true;
+ try {
+ BeanValidationAppendixInterceptor.class.getClassLoader().loadClass("javax.validation.executable.ExecutableValidator");
+ on = "true".equalsIgnoreCase(SystemInstance.get().getProperty("openejb.bval.10.interceptor.force", "false"));
+ if (!on) {
+ logger.debug(BeanValidationAppendixInterceptor.class.getName() + " deactivated since BVal 1.1 is usable, use openejb.bval.10.interceptor.force=true to force it");
+ }
+ } catch (final Throwable e) {
+ // no-op
+ }
+ ON = on;
+ }
+
+ @AroundInvoke
+ public Object aroundInvoke(final InvocationContext ejbContext) throws Exception {
+ if (!BeanValidationAppendixInterceptor.ON) {
+ return ejbContext.proceed();
+ }
+
+ Object validatorObject = null;
+ Validator validator = null;
+ try {
+ validator = (Validator) new InitialContext().lookup("java:comp/Validator");
+ } catch (final NamingException ne) {
+ // no-op
+ } catch (final Exception e) {
+ logger.warning("BeanValidationAppendixInterceptor unexpected error: " + e);
+ return ejbContext.proceed();
+ }
+
+ final ThreadContext threadContext = ThreadContext.getThreadContext();
+ Class<?> bvalClazzToValidate = ejbContext.getTarget().getClass();
+ if (threadContext != null && ejbContext.getTarget().getClass().getInterfaces().length > 0) {
+ bvalClazzToValidate = threadContext.getInvokedInterface();
+ }
+
+ Method method = ejbContext.getMethod();
+ if (!bvalClazzToValidate.equals(ejbContext.getTarget().getClass())) {
+ method = bvalClazzToValidate.getMethod(method.getName(), method.getParameterTypes());
+ }
+
+ Set<?> violations = Collections.emptySet();
+ if (APACHE_BVAL_METHOD_CLASS != null && validator != null) {
+ validatorObject = validator.unwrap(APACHE_BVAL_METHOD_CLASS);
+ violations = call(Set.class, validatorObject, "validateParameters",
+ new Object[]{
+ bvalClazzToValidate, method, ejbContext.getParameters(), new Class[0]
+ },
+ BVAL_ARG_TYPES);
+ } else if (HIBERNATE_METHOD_CLASS != null && validator != null) {
+ validatorObject = validator.unwrap(HIBERNATE_METHOD_CLASS);
+ violations = call(Set.class, validatorObject, "validateAllParameters",
+ new Object[]{
+ ejbContext.getTarget(), ejbContext.getMethod(), ejbContext.getParameters(), new Class[0]
+ },
+ HIBERNATE_ARG_TYPES);
+ } else { // a warning message to inform Apache Bean Validation is not present
+ if (validator == null) {
+ logger.error("can't find validator");
+ } else {
+ logger.warning("Apache Bean Validation is not present, "
+ + BeanValidationAppendixInterceptor.class.getName() + " will not work. "
+ + "Please put it if you want to validate your parameters and returned values "
+ + "with bean validation JSR.");
+ }
+ }
+
+ if (violations.size() > 0) {
+ throw buildValidationException((Set<ConstraintViolation<?>>) violations);
+ }
+
+ final Object returnedValue = ejbContext.proceed();
+
+ violations = Collections.emptySet();
+ if (validatorObject != null && APACHE_BVAL_METHOD_CLASS != null) {
+ violations = call(Set.class, validatorObject, "validateReturnedValue",
+ new Object[]{
+ bvalClazzToValidate, method, returnedValue, new Class[0]
+ },
+ new Class<?>[]{
+ Class.class, Method.class, Object.class, Class[].class
+ });
+ } else if (validatorObject != null && HIBERNATE_METHOD_CLASS != null) {
+ violations = call(Set.class, validatorObject, "validateReturnValue",
+ new Object[]{
+ ejbContext.getTarget(), ejbContext.getMethod(), returnedValue, new Class[0]
+ },
+ new Class<?>[]{
+ Object.class, Method.class, Object.class, Class[].class
+ });
+ }
+
+ if (violations.size() > 0) {
+ throw buildValidationException((Set<ConstraintViolation<?>>) violations);
+ }
+
+ return returnedValue;
+ }
+
+
+ // just a simple EJBException for now
+ private RuntimeException buildValidationException(final Set<ConstraintViolation<?>> violations) {
+ return new ConstraintViolationException(violations);
+ }
+
+ private static <T> T call(final Class<T> returnedType, final Object o, final String methodName, final Object[] params, final Class<?>[] types) {
+ Method method = null;
+ boolean accessible = true;
+ try {
+ method = o.getClass().getMethod(methodName, types);
+ accessible = method.isAccessible();
+ if (!accessible) {
+ accessible = false;
+ method.setAccessible(true);
+ }
+ return returnedType.cast(method.invoke(o, params));
+ } catch (final Exception e) {
+ e.printStackTrace();
+ throw new ValidationException("can't call method " + methodName + " on " + o, e);
+ } finally {
+ if (method != null) {
+ method.setAccessible(accessible);
+ }
+ }
+ }
+
+ private static ClassLoader getClassLaoder() {
+ ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+ if (classLoader == null) {
+ classLoader = BeanValidationAppendixInterceptor.class.getClassLoader();
+ }
+ return classLoader;
+ }
+
+ private static Class<?> initApache() {
+ try {
+ return getClassLaoder().loadClass("org.apache.bval.jsr303.extensions.MethodValidator");
+ } catch (final ClassNotFoundException e) {
+ return null;
+ }
+ }
+
+ private static Class<?> initHibernate() {
+ try {
+ return getClassLaoder().loadClass("org.hibernate.validator.method.MethodValidator");
+ } catch (final ClassNotFoundException e) {
+ return null;
+ }
+ }
+}
+
http://git-wip-us.apache.org/repos/asf/tomee/blob/52567075/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java b/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java
index 81195c0..0a945a3 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java
@@ -1,419 +1,419 @@
-/*
- * 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.cdi;
-
-import org.apache.openejb.AppContext;
-import org.apache.openejb.BeanContext;
-import org.apache.openejb.OpenEJBRuntimeException;
-import org.apache.openejb.assembler.classic.AppInfo;
-import org.apache.openejb.assembler.classic.Assembler;
-import org.apache.openejb.loader.SystemInstance;
-import org.apache.openejb.util.LogCategory;
-import org.apache.openejb.util.Logger;
-import org.apache.webbeans.config.BeansDeployer;
-import org.apache.webbeans.config.OpenWebBeansConfiguration;
-import org.apache.webbeans.config.WebBeansContext;
-import org.apache.webbeans.config.WebBeansFinder;
-import org.apache.webbeans.container.BeanManagerImpl;
-import org.apache.webbeans.intercept.InterceptorResolutionService;
-import org.apache.webbeans.portable.AbstractProducer;
-import org.apache.webbeans.portable.InjectionTargetImpl;
-import org.apache.webbeans.portable.events.discovery.BeforeShutdownImpl;
-import org.apache.webbeans.spi.ContainerLifecycle;
-import org.apache.webbeans.spi.ContextsService;
-import org.apache.webbeans.spi.JNDIService;
-import org.apache.webbeans.spi.ResourceInjectionService;
-import org.apache.webbeans.spi.ScannerService;
-import org.apache.webbeans.spi.adaptor.ELAdaptor;
-import org.apache.webbeans.util.WebBeansConstants;
-import org.apache.webbeans.util.WebBeansUtil;
-import org.apache.webbeans.xml.WebBeansXMLConfigurator;
-
-import javax.el.ELResolver;
-import javax.enterprise.inject.spi.BeanManager;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletContextEvent;
-import javax.servlet.jsp.JspApplicationContext;
-import javax.servlet.jsp.JspFactory;
-import java.util.Properties;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ThreadFactory;
-import java.util.concurrent.TimeUnit;
-
-/**
- * @version $Rev:$ $Date:$
- */
-public class OpenEJBLifecycle implements ContainerLifecycle {
- public static final ThreadLocal<AppInfo> CURRENT_APP_INFO = new ThreadLocal<AppInfo>();
-
- //Logger instance
- private static final Logger logger = Logger.getInstance(LogCategory.OPENEJB_CDI, OpenEJBLifecycle.class);
-
- public static final String OPENEJB_CDI_SKIP_CLASS_NOT_FOUND = "openejb.cdi.skip-class-not-found";
-
- /**
- * Discover bean classes
- */
- protected ScannerService scannerService;
-
- protected final ContextsService contextsService;
-
- /**
- * Deploy discovered beans
- */
- private final BeansDeployer deployer;
-
- /**
- * XML discovery.
- */
- //XML discovery is removed from the specification. It is here for next revisions of spec.
- private final WebBeansXMLConfigurator xmlDeployer;
-
- /**
- * Using for lookup operations
- */
- private final JNDIService jndiService;
-
- /**
- * Root container.
- */
- private final BeanManagerImpl beanManager;
- private final WebBeansContext webBeansContext;
- /**
- * Manages unused conversations
- */
- private ScheduledExecutorService service;
-
- public OpenEJBLifecycle(final WebBeansContext webBeansContext) {
- this.webBeansContext = webBeansContext;
- beforeInitApplication(null);
-
- this.beanManager = webBeansContext.getBeanManagerImpl();
- this.xmlDeployer = new WebBeansXMLConfigurator();
- this.deployer = new BeansDeployer(this.xmlDeployer, webBeansContext);
- this.jndiService = webBeansContext.getService(JNDIService.class);
- this.beanManager.setXMLConfigurator(this.xmlDeployer);
- this.scannerService = webBeansContext.getScannerService();
- this.contextsService = webBeansContext.getContextsService();
-
- initApplication(null);
- }
-
- @Override
- public BeanManager getBeanManager() {
- return this.beanManager;
- }
-
- @Override
- public void startApplication(final Object startupObject) {
- if (ServletContextEvent.class.isInstance( startupObject)) {
- startServletContext(ServletContext.class.cast(getServletContext(startupObject))); // TODO: check it is relevant
- return;
- } else if (!StartupObject.class.isInstance(startupObject)) {
- logger.debug("startupObject is not of StartupObject type; ignored");
- return;
- }
-
- final StartupObject stuff = (StartupObject) startupObject;
- final ClassLoader oldCl = Thread.currentThread().getContextClassLoader();
-
- // Initalize Application Context
- logger.info("OpenWebBeans Container is starting...");
-
- final long begin = System.currentTimeMillis();
-
- try {
- Thread.currentThread().setContextClassLoader(stuff.getClassLoader());
-
- //Before Start
- beforeStartApplication(startupObject);
-
-
- //Load all plugins
- webBeansContext.getPluginLoader().startUp();
-
- //Get Plugin
- final CdiPlugin cdiPlugin = (CdiPlugin) webBeansContext.getPluginLoader().getEjbPlugin();
-
- final AppContext appContext = stuff.getAppContext();
- if (stuff.getWebContext() == null) {
- appContext.setWebBeansContext(webBeansContext);
- }
-
- cdiPlugin.setClassLoader(stuff.getClassLoader());
- cdiPlugin.setWebBeansContext(webBeansContext);
- cdiPlugin.startup();
-
- //Configure EJB Deployments
- cdiPlugin.configureDeployments(stuff.getBeanContexts());
-
- //Resournce Injection Service
- final CdiResourceInjectionService injectionService = (CdiResourceInjectionService) webBeansContext.getService(ResourceInjectionService.class);
- injectionService.setAppContext(stuff.getAppContext());
-
- //Deploy the beans
- try {
- //Initialize contexts
- this.contextsService.init(startupObject);
-
- //Scanning process
- logger.debug("Scanning classpaths for beans artifacts.");
-
- if (CdiScanner.class.isInstance(scannerService)) {
- final CdiScanner service = CdiScanner.class.cast(scannerService);
- service.init(startupObject);
- } else {
- new CdiScanner().init(startupObject);
- }
-
- //Scan
- this.scannerService.scan();
-
- // just to let us write custom CDI Extension using our internals easily
- CURRENT_APP_INFO.set(StartupObject.class.cast(startupObject).getAppInfo());
-
- //Deploy bean from XML. Also configures deployments, interceptors, decorators.
- deployer.deploy(scannerService);
- } catch (final Exception e1) {
- SystemInstance.get().getComponent(Assembler.class).getLogger().error("CDI Beans module deployment failed", e1);
- throw new OpenEJBRuntimeException(e1);
- } finally {
- CURRENT_APP_INFO.remove();
- }
-
- for (final BeanContext bc : stuff.getBeanContexts()) {
- final CdiEjbBean cdiEjbBean = bc.get(CdiEjbBean.class);
- if (cdiEjbBean == null) {
- continue;
- }
-
- if (AbstractProducer.class.isInstance(cdiEjbBean)) {
- AbstractProducer.class.cast(cdiEjbBean).defineInterceptorStack(cdiEjbBean, cdiEjbBean.getAnnotatedType(), cdiEjbBean.getWebBeansContext());
- }
- bc.mergeOWBAndOpenEJBInfo();
- bc.set(InterceptorResolutionService.BeanInterceptorInfo.class, InjectionTargetImpl.class.cast(cdiEjbBean.getInjectionTarget()).getInterceptorInfo());
- cdiEjbBean.initInternals();
- }
-
- //Start actual starting on sub-classes
- afterStartApplication(startupObject);
- } finally {
- Thread.currentThread().setContextClassLoader(oldCl);
-
- // cleanup threadlocal used to enrich cdi context manually
- OptimizedLoaderService.ADDITIONAL_EXTENSIONS.remove();
- CdiScanner.ADDITIONAL_CLASSES.remove();
- }
-
- logger.info("OpenWebBeans Container has started, it took {0} ms.", Long.toString(System.currentTimeMillis() - begin));
- }
-
- @Override
- public void stopApplication(final Object endObject) {
- logger.debug("OpenWebBeans Container is stopping.");
-
- try {
- //Sub-classes operations
- beforeStopApplication(null);
-
- //Fire shut down
- if (WebappBeanManager.class.isInstance(beanManager)) {
- WebappBeanManager.class.cast(beanManager).beforeStop();
- }
- this.beanManager.fireEvent(new BeforeShutdownImpl());
-
- //Destroys context
- this.contextsService.destroy(null);
-
- //Unbind BeanManager
- if (jndiService != null) {
- jndiService.unbind(WebBeansConstants.WEB_BEANS_MANAGER_JNDI_NAME);
- }
-
- //Free all plugin resources
- ((CdiPlugin) webBeansContext.getPluginLoader().getEjbPlugin()).clearProxies();
- webBeansContext.getPluginLoader().shutDown();
-
- //Clear extensions
- webBeansContext.getExtensionLoader().clear();
-
- //Delete Resolutions Cache
- beanManager.getInjectionResolver().clearCaches();
-
- //Delete AnnotateTypeCache
- webBeansContext.getAnnotatedElementFactory().clear();
-
- //After Stop
- afterStopApplication(null);
-
- // Clear BeanManager
- this.beanManager.clear();
-
- // Clear singleton list
- WebBeansFinder.clearInstances(WebBeansUtil.getCurrentClassLoader());
-
- } catch (final Exception e) {
- logger.error("An error occured while stopping the container.", e);
- }
-
- }
-
- /**
- * @return the scannerService
- */
- protected ScannerService getScannerService() {
- return scannerService;
- }
-
- /**
- * @return the contextsService
- */
- public ContextsService getContextService() {
- return contextsService;
- }
-
- /**
- * @return the xmlDeployer
- */
- protected WebBeansXMLConfigurator getXmlDeployer() {
- return xmlDeployer;
- }
-
- /**
- * @return the jndiService
- */
- protected JNDIService getJndiService() {
- return jndiService;
- }
-
- @Override
- public void initApplication(final Properties properties) {
- afterInitApplication(properties);
- }
-
- protected void beforeInitApplication(final Properties properties) {
- //Do nothing as default
- }
-
- protected void afterInitApplication(final Properties properties) {
- //Do nothing as default
- }
-
- protected void afterStartApplication(final Object startupObject) {
- if (WebappBeanManager.class.isInstance(beanManager)) {
- WebappBeanManager.class.cast(beanManager).afterStart();
- }
- }
-
- public void startServletContext(final ServletContext servletContext) {
- service = initializeServletContext(servletContext, webBeansContext);
- }
-
- public static ScheduledExecutorService initializeServletContext(final ServletContext servletContext, final WebBeansContext context) {
- final String strDelay = context.getOpenWebBeansConfiguration().getProperty(OpenWebBeansConfiguration.CONVERSATION_PERIODIC_DELAY, "150000");
- final long delay = Long.parseLong(strDelay);
-
- final ScheduledExecutorService executorService = Executors.newScheduledThreadPool(1, new ThreadFactory() {
- @Override
- public Thread newThread(final Runnable runable) {
- final Thread t = new Thread(runable, "OwbConversationCleaner-" + servletContext.getContextPath());
- t.setDaemon(true);
- return t;
- }
- });
- executorService.scheduleWithFixedDelay(new ConversationCleaner(context), delay, delay, TimeUnit.MILLISECONDS);
-
- final ELAdaptor elAdaptor = context.getService(ELAdaptor.class);
- final ELResolver resolver = elAdaptor.getOwbELResolver();
- //Application is configured as JSP
- if (context.getOpenWebBeansConfiguration().isJspApplication()) {
- logger.debug("Application is configured as JSP. Adding EL Resolver.");
-
- final JspFactory factory = JspFactory.getDefaultFactory();
- if (factory != null) {
- final JspApplicationContext applicationCtx = factory.getJspApplicationContext(servletContext);
- applicationCtx.addELResolver(resolver);
- } else {
- logger.debug("Default JspFactory instance was not found");
- }
- }
-
- // Add BeanManager to the 'javax.enterprise.inject.spi.BeanManager' servlet context attribute
- servletContext.setAttribute(BeanManager.class.getName(), context.getBeanManagerImpl());
-
- return executorService;
- }
-
- /**
- * Conversation cleaner thread, that
- * clears unused conversations.
- */
- private static final class ConversationCleaner implements Runnable {
- private final WebBeansContext webBeansContext;
-
- private ConversationCleaner(final WebBeansContext webBeansContext) {
- this.webBeansContext = webBeansContext;
- }
-
- public void run() {
- webBeansContext.getConversationManager().destroyWithRespectToTimout();
-
- }
- }
-
- protected void afterStopApplication(final Object stopObject) throws Exception {
-
- //Clear the resource injection service
- final ResourceInjectionService injectionServices = webBeansContext.getService(ResourceInjectionService.class);
- if (injectionServices != null) {
- injectionServices.clear();
- }
-
- //Comment out for commit OWB-502
- //ContextFactory.cleanUpContextFactory();
-
- CdiAppContextsService.class.cast(contextsService).removeThreadLocals();
-
- WebBeansFinder.clearInstances(WebBeansUtil.getCurrentClassLoader());
- }
-
- /**
- * Returns servlet context otherwise throws exception.
- *
- * @param object object
- * @return servlet context
- */
- private Object getServletContext(Object object) {
- if (ServletContextEvent.class.isInstance(object)) {
- object = ServletContextEvent.class.cast(object).getServletContext();
- return object;
- }
- return object;
- }
-
- protected void beforeStartApplication(final Object startupObject) {
- //Do nothing as default
- }
-
- protected void beforeStopApplication(final Object stopObject) throws Exception {
- if (service != null) {
- service.shutdownNow();
- }
- }
-}
+/*
+ * 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.cdi;
+
+import org.apache.openejb.AppContext;
+import org.apache.openejb.BeanContext;
+import org.apache.openejb.OpenEJBRuntimeException;
+import org.apache.openejb.assembler.classic.AppInfo;
+import org.apache.openejb.assembler.classic.Assembler;
+import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.util.LogCategory;
+import org.apache.openejb.util.Logger;
+import org.apache.webbeans.config.BeansDeployer;
+import org.apache.webbeans.config.OpenWebBeansConfiguration;
+import org.apache.webbeans.config.WebBeansContext;
+import org.apache.webbeans.config.WebBeansFinder;
+import org.apache.webbeans.container.BeanManagerImpl;
+import org.apache.webbeans.intercept.InterceptorResolutionService;
+import org.apache.webbeans.portable.AbstractProducer;
+import org.apache.webbeans.portable.InjectionTargetImpl;
+import org.apache.webbeans.portable.events.discovery.BeforeShutdownImpl;
+import org.apache.webbeans.spi.ContainerLifecycle;
+import org.apache.webbeans.spi.ContextsService;
+import org.apache.webbeans.spi.JNDIService;
+import org.apache.webbeans.spi.ResourceInjectionService;
+import org.apache.webbeans.spi.ScannerService;
+import org.apache.webbeans.spi.adaptor.ELAdaptor;
+import org.apache.webbeans.util.WebBeansConstants;
+import org.apache.webbeans.util.WebBeansUtil;
+import org.apache.webbeans.xml.WebBeansXMLConfigurator;
+
+import javax.el.ELResolver;
+import javax.enterprise.inject.spi.BeanManager;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletContextEvent;
+import javax.servlet.jsp.JspApplicationContext;
+import javax.servlet.jsp.JspFactory;
+import java.util.Properties;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.ThreadFactory;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * @version $Rev:$ $Date:$
+ */
+public class OpenEJBLifecycle implements ContainerLifecycle {
+ public static final ThreadLocal<AppInfo> CURRENT_APP_INFO = new ThreadLocal<AppInfo>();
+
+ //Logger instance
+ private static final Logger logger = Logger.getInstance(LogCategory.OPENEJB_CDI, OpenEJBLifecycle.class);
+
+ public static final String OPENEJB_CDI_SKIP_CLASS_NOT_FOUND = "openejb.cdi.skip-class-not-found";
+
+ /**
+ * Discover bean classes
+ */
+ protected ScannerService scannerService;
+
+ protected final ContextsService contextsService;
+
+ /**
+ * Deploy discovered beans
+ */
+ private final BeansDeployer deployer;
+
+ /**
+ * XML discovery.
+ */
+ //XML discovery is removed from the specification. It is here for next revisions of spec.
+ private final WebBeansXMLConfigurator xmlDeployer;
+
+ /**
+ * Using for lookup operations
+ */
+ private final JNDIService jndiService;
+
+ /**
+ * Root container.
+ */
+ private final BeanManagerImpl beanManager;
+ private final WebBeansContext webBeansContext;
+ /**
+ * Manages unused conversations
+ */
+ private ScheduledExecutorService service;
+
+ public OpenEJBLifecycle(final WebBeansContext webBeansContext) {
+ this.webBeansContext = webBeansContext;
+ beforeInitApplication(null);
+
+ this.beanManager = webBeansContext.getBeanManagerImpl();
+ this.xmlDeployer = new WebBeansXMLConfigurator();
+ this.deployer = new BeansDeployer(this.xmlDeployer, webBeansContext);
+ this.jndiService = webBeansContext.getService(JNDIService.class);
+ this.beanManager.setXMLConfigurator(this.xmlDeployer);
+ this.scannerService = webBeansContext.getScannerService();
+ this.contextsService = webBeansContext.getContextsService();
+
+ initApplication(null);
+ }
+
+ @Override
+ public BeanManager getBeanManager() {
+ return this.beanManager;
+ }
+
+ @Override
+ public void startApplication(final Object startupObject) {
+ if (ServletContextEvent.class.isInstance( startupObject)) {
+ startServletContext(ServletContext.class.cast(getServletContext(startupObject))); // TODO: check it is relevant
+ return;
+ } else if (!StartupObject.class.isInstance(startupObject)) {
+ logger.debug("startupObject is not of StartupObject type; ignored");
+ return;
+ }
+
+ final StartupObject stuff = (StartupObject) startupObject;
+ final ClassLoader oldCl = Thread.currentThread().getContextClassLoader();
+
+ // Initalize Application Context
+ logger.info("OpenWebBeans Container is starting...");
+
+ final long begin = System.currentTimeMillis();
+
+ try {
+ Thread.currentThread().setContextClassLoader(stuff.getClassLoader());
+
+ //Before Start
+ beforeStartApplication(startupObject);
+
+
+ //Load all plugins
+ webBeansContext.getPluginLoader().startUp();
+
+ //Get Plugin
+ final CdiPlugin cdiPlugin = (CdiPlugin) webBeansContext.getPluginLoader().getEjbPlugin();
+
+ final AppContext appContext = stuff.getAppContext();
+ if (stuff.getWebContext() == null) {
+ appContext.setWebBeansContext(webBeansContext);
+ }
+
+ cdiPlugin.setClassLoader(stuff.getClassLoader());
+ cdiPlugin.setWebBeansContext(webBeansContext);
+ cdiPlugin.startup();
+
+ //Configure EJB Deployments
+ cdiPlugin.configureDeployments(stuff.getBeanContexts());
+
+ //Resournce Injection Service
+ final CdiResourceInjectionService injectionService = (CdiResourceInjectionService) webBeansContext.getService(ResourceInjectionService.class);
+ injectionService.setAppContext(stuff.getAppContext());
+
+ //Deploy the beans
+ try {
+ //Initialize contexts
+ this.contextsService.init(startupObject);
+
+ //Scanning process
+ logger.debug("Scanning classpaths for beans artifacts.");
+
+ if (CdiScanner.class.isInstance(scannerService)) {
+ final CdiScanner service = CdiScanner.class.cast(scannerService);
+ service.init(startupObject);
+ } else {
+ new CdiScanner().init(startupObject);
+ }
+
+ //Scan
+ this.scannerService.scan();
+
+ // just to let us write custom CDI Extension using our internals easily
+ CURRENT_APP_INFO.set(StartupObject.class.cast(startupObject).getAppInfo());
+
+ //Deploy bean from XML. Also configures deployments, interceptors, decorators.
+ deployer.deploy(scannerService);
+ } catch (final Exception e1) {
+ SystemInstance.get().getComponent(Assembler.class).getLogger().error("CDI Beans module deployment failed", e1);
+ throw new OpenEJBRuntimeException(e1);
+ } finally {
+ CURRENT_APP_INFO.remove();
+ }
+
+ for (final BeanContext bc : stuff.getBeanContexts()) {
+ final CdiEjbBean cdiEjbBean = bc.get(CdiEjbBean.class);
+ if (cdiEjbBean == null) {
+ continue;
+ }
+
+ if (AbstractProducer.class.isInstance(cdiEjbBean)) {
+ AbstractProducer.class.cast(cdiEjbBean).defineInterceptorStack(cdiEjbBean, cdiEjbBean.getAnnotatedType(), cdiEjbBean.getWebBeansContext());
+ }
+ bc.mergeOWBAndOpenEJBInfo();
+ bc.set(InterceptorResolutionService.BeanInterceptorInfo.class, InjectionTargetImpl.class.cast(cdiEjbBean.getInjectionTarget()).getInterceptorInfo());
+ cdiEjbBean.initInternals();
+ }
+
+ //Start actual starting on sub-classes
+ afterStartApplication(startupObject);
+ } finally {
+ Thread.currentThread().setContextClassLoader(oldCl);
+
+ // cleanup threadlocal used to enrich cdi context manually
+ OptimizedLoaderService.ADDITIONAL_EXTENSIONS.remove();
+ CdiScanner.ADDITIONAL_CLASSES.remove();
+ }
+
+ logger.info("OpenWebBeans Container has started, it took {0} ms.", Long.toString(System.currentTimeMillis() - begin));
+ }
+
+ @Override
+ public void stopApplication(final Object endObject) {
+ logger.debug("OpenWebBeans Container is stopping.");
+
+ try {
+ //Sub-classes operations
+ beforeStopApplication(null);
+
+ //Fire shut down
+ if (WebappBeanManager.class.isInstance(beanManager)) {
+ WebappBeanManager.class.cast(beanManager).beforeStop();
+ }
+ this.beanManager.fireEvent(new BeforeShutdownImpl());
+
+ //Destroys context
+ this.contextsService.destroy(null);
+
+ //Unbind BeanManager
+ if (jndiService != null) {
+ jndiService.unbind(WebBeansConstants.WEB_BEANS_MANAGER_JNDI_NAME);
+ }
+
+ //Free all plugin resources
+ ((CdiPlugin) webBeansContext.getPluginLoader().getEjbPlugin()).clearProxies();
+ webBeansContext.getPluginLoader().shutDown();
+
+ //Clear extensions
+ webBeansContext.getExtensionLoader().clear();
+
+ //Delete Resolutions Cache
+ beanManager.getInjectionResolver().clearCaches();
+
+ //Delete AnnotateTypeCache
+ webBeansContext.getAnnotatedElementFactory().clear();
+
+ //After Stop
+ afterStopApplication(null);
+
+ // Clear BeanManager
+ this.beanManager.clear();
+
+ // Clear singleton list
+ WebBeansFinder.clearInstances(WebBeansUtil.getCurrentClassLoader());
+
+ } catch (final Exception e) {
+ logger.error("An error occured while stopping the container.", e);
+ }
+
+ }
+
+ /**
+ * @return the scannerService
+ */
+ protected ScannerService getScannerService() {
+ return scannerService;
+ }
+
+ /**
+ * @return the contextsService
+ */
+ public ContextsService getContextService() {
+ return contextsService;
+ }
+
+ /**
+ * @return the xmlDeployer
+ */
+ protected WebBeansXMLConfigurator getXmlDeployer() {
+ return xmlDeployer;
+ }
+
+ /**
+ * @return the jndiService
+ */
+ protected JNDIService getJndiService() {
+ return jndiService;
+ }
+
+ @Override
+ public void initApplication(final Properties properties) {
+ afterInitApplication(properties);
+ }
+
+ protected void beforeInitApplication(final Properties properties) {
+ //Do nothing as default
+ }
+
+ protected void afterInitApplication(final Properties properties) {
+ //Do nothing as default
+ }
+
+ protected void afterStartApplication(final Object startupObject) {
+ if (WebappBeanManager.class.isInstance(beanManager)) {
+ WebappBeanManager.class.cast(beanManager).afterStart();
+ }
+ }
+
+ public void startServletContext(final ServletContext servletContext) {
+ service = initializeServletContext(servletContext, webBeansContext);
+ }
+
+ public static ScheduledExecutorService initializeServletContext(final ServletContext servletContext, final WebBeansContext context) {
+ final String strDelay = context.getOpenWebBeansConfiguration().getProperty(OpenWebBeansConfiguration.CONVERSATION_PERIODIC_DELAY, "150000");
+ final long delay = Long.parseLong(strDelay);
+
+ final ScheduledExecutorService executorService = Executors.newScheduledThreadPool(1, new ThreadFactory() {
+ @Override
+ public Thread newThread(final Runnable runable) {
+ final Thread t = new Thread(runable, "OwbConversationCleaner-" + servletContext.getContextPath());
+ t.setDaemon(true);
+ return t;
+ }
+ });
+ executorService.scheduleWithFixedDelay(new ConversationCleaner(context), delay, delay, TimeUnit.MILLISECONDS);
+
+ final ELAdaptor elAdaptor = context.getService(ELAdaptor.class);
+ final ELResolver resolver = elAdaptor.getOwbELResolver();
+ //Application is configured as JSP
+ if (context.getOpenWebBeansConfiguration().isJspApplication()) {
+ logger.debug("Application is configured as JSP. Adding EL Resolver.");
+
+ final JspFactory factory = JspFactory.getDefaultFactory();
+ if (factory != null) {
+ final JspApplicationContext applicationCtx = factory.getJspApplicationContext(servletContext);
+ applicationCtx.addELResolver(resolver);
+ } else {
+ logger.debug("Default JspFactory instance was not found");
+ }
+ }
+
+ // Add BeanManager to the 'javax.enterprise.inject.spi.BeanManager' servlet context attribute
+ servletContext.setAttribute(BeanManager.class.getName(), context.getBeanManagerImpl());
+
+ return executorService;
+ }
+
+ /**
+ * Conversation cleaner thread, that
+ * clears unused conversations.
+ */
+ private static final class ConversationCleaner implements Runnable {
+ private final WebBeansContext webBeansContext;
+
+ private ConversationCleaner(final WebBeansContext webBeansContext) {
+ this.webBeansContext = webBeansContext;
+ }
+
+ public void run() {
+ webBeansContext.getConversationManager().destroyWithRespectToTimout();
+
+ }
+ }
+
+ protected void afterStopApplication(final Object stopObject) throws Exception {
+
+ //Clear the resource injection service
+ final ResourceInjectionService injectionServices = webBeansContext.getService(ResourceInjectionService.class);
+ if (injectionServices != null) {
+ injectionServices.clear();
+ }
+
+ //Comment out for commit OWB-502
+ //ContextFactory.cleanUpContextFactory();
+
+ CdiAppContextsService.class.cast(contextsService).removeThreadLocals();
+
+ WebBeansFinder.clearInstances(WebBeansUtil.getCurrentClassLoader());
+ }
+
+ /**
+ * Returns servlet context otherwise throws exception.
+ *
+ * @param object object
+ * @return servlet context
+ */
+ private Object getServletContext(Object object) {
+ if (ServletContextEvent.class.isInstance(object)) {
+ object = ServletContextEvent.class.cast(object).getServletContext();
+ return object;
+ }
+ return object;
+ }
+
+ protected void beforeStartApplication(final Object startupObject) {
+ //Do nothing as default
+ }
+
+ protected void beforeStopApplication(final Object stopObject) throws Exception {
+ if (service != null) {
+ service.shutdownNow();
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/tomee/blob/52567075/container/openejb-core/src/main/java/org/apache/openejb/cipher/PasswordCipher.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/cipher/PasswordCipher.java b/container/openejb-core/src/main/java/org/apache/openejb/cipher/PasswordCipher.java
index 52e3fe6..fc657dd 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/cipher/PasswordCipher.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/cipher/PasswordCipher.java
@@ -1,51 +1,51 @@
-/*
- * 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.cipher;
-
-/**
- * Implementations of {@link org.apache.openejb.cipher.PasswordCipher} allow to encode and decode passwords
- * used to connect to a database.
- * <p/>
- * Several implementations may exist, as several encryption algorithms may be
- * supported. One-way encryption algorithm (hash) can't be used as we need to
- * give a plain password to the database. {@link #encrypt(String)} method is not
- * mandatory as we don't need to encode a password, but it's useful to get the
- * encrypted value for a given plain text password. In the case you have
- * implemented both methods, you can use the PasswordCodec command line tool to
- * encode/decode a password.
- */
-public interface PasswordCipher {
-
- /**
- * Encodes a given plain text password and returns the encoded password.
- *
- * @param plainPassword The password to encode. May not be <code>null</code>, nor empty.
- * @return The encoded password.
- */
- char[] encrypt(String plainPassword);
-
- /**
- * Decodes an encoded password and returns a plain text password.
- *
- * @param encryptedPassword The ciphered password to decode. May not be <code>null</code>,
- * nor empty.
- * @return The plain text password.
- */
- String decrypt(char[] encryptedPassword);
-
-}
+/*
+ * 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.cipher;
+
+/**
+ * Implementations of {@link org.apache.openejb.cipher.PasswordCipher} allow to encode and decode passwords
+ * used to connect to a database.
+ * <p/>
+ * Several implementations may exist, as several encryption algorithms may be
+ * supported. One-way encryption algorithm (hash) can't be used as we need to
+ * give a plain password to the database. {@link #encrypt(String)} method is not
+ * mandatory as we don't need to encode a password, but it's useful to get the
+ * encrypted value for a given plain text password. In the case you have
+ * implemented both methods, you can use the PasswordCodec command line tool to
+ * encode/decode a password.
+ */
+public interface PasswordCipher {
+
+ /**
+ * Encodes a given plain text password and returns the encoded password.
+ *
+ * @param plainPassword The password to encode. May not be <code>null</code>, nor empty.
+ * @return The encoded password.
+ */
+ char[] encrypt(String plainPassword);
+
+ /**
+ * Decodes an encoded password and returns a plain text password.
+ *
+ * @param encryptedPassword The ciphered password to decode. May not be <code>null</code>,
+ * nor empty.
+ * @return The plain text password.
+ */
+ String decrypt(char[] encryptedPassword);
+
+}
http://git-wip-us.apache.org/repos/asf/tomee/blob/52567075/container/openejb-core/src/main/java/org/apache/openejb/cipher/PlainTextPasswordCipher.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/cipher/PlainTextPasswordCipher.java b/container/openejb-core/src/main/java/org/apache/openejb/cipher/PlainTextPasswordCipher.java
index 4b71dad..099b4ef 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/cipher/PlainTextPasswordCipher.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/cipher/PlainTextPasswordCipher.java
@@ -1,54 +1,54 @@
-/*
- * 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.cipher;
-
-/**
- * This {@link org.apache.openejb.cipher.PlainTextPasswordCipher} is an {@link org.apache.openejb.cipher.PasswordCipher}
- * implementation that does not use any encryption/decryption algorithm at all.
- */
-public class PlainTextPasswordCipher implements PasswordCipher {
-
- /**
- * Returns the <code>encryptedPassword</code> as plain text string.
- *
- * @param encryptedPassword the encoded password
- * @return String the decoded password
- * @see org.apache.openejb.cipher.PasswordCipher#decrypt(char[])
- */
- public String decrypt(final char[] encryptedPassword) {
- if (null == encryptedPassword) {
- throw new IllegalArgumentException("encodedPassword cannot be null.");
- }
- return new String(encryptedPassword);
- }
-
- /**
- * Returns the <code>plainPassword</code> as plain text character array.
- *
- * @param plainPassword the plain-text password
- * @return the plain-text password as character array
- * @see org.apache.openejb.cipher.PasswordCipher#encrypt(String)
- */
- public char[] encrypt(final String plainPassword) {
- if (null == plainPassword) {
- throw new IllegalArgumentException("plainPassword cannot be null.");
- }
- return plainPassword.toCharArray();
- }
-
-}
+/*
+ * 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.cipher;
+
+/**
+ * This {@link org.apache.openejb.cipher.PlainTextPasswordCipher} is an {@link org.apache.openejb.cipher.PasswordCipher}
+ * implementation that does not use any encryption/decryption algorithm at all.
+ */
+public class PlainTextPasswordCipher implements PasswordCipher {
+
+ /**
+ * Returns the <code>encryptedPassword</code> as plain text string.
+ *
+ * @param encryptedPassword the encoded password
+ * @return String the decoded password
+ * @see org.apache.openejb.cipher.PasswordCipher#decrypt(char[])
+ */
+ public String decrypt(final char[] encryptedPassword) {
+ if (null == encryptedPassword) {
+ throw new IllegalArgumentException("encodedPassword cannot be null.");
+ }
+ return new String(encryptedPassword);
+ }
+
+ /**
+ * Returns the <code>plainPassword</code> as plain text character array.
+ *
+ * @param plainPassword the plain-text password
+ * @return the plain-text password as character array
+ * @see org.apache.openejb.cipher.PasswordCipher#encrypt(String)
+ */
+ public char[] encrypt(final String plainPassword) {
+ if (null == plainPassword) {
+ throw new IllegalArgumentException("plainPassword cannot be null.");
+ }
+ return plainPassword.toCharArray();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/tomee/blob/52567075/container/openejb-core/src/main/java/org/apache/openejb/cipher/StaticDESPasswordCipher.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/cipher/StaticDESPasswordCipher.java b/container/openejb-core/src/main/java/org/apache/openejb/cipher/StaticDESPasswordCipher.java
index f6cd88f..1741e4f 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/cipher/StaticDESPasswordCipher.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/cipher/StaticDESPasswordCipher.java
@@ -1,97 +1,97 @@
-/*
- * 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.cipher;
-
-import org.apache.openejb.OpenEJBRuntimeException;
-import org.apache.openejb.util.Base64;
-
-import javax.crypto.Cipher;
-import javax.crypto.spec.SecretKeySpec;
-
-/**
- * This {@link org.apache.openejb.cipher.PasswordCipher} implementation uses a the Triple-DES encryption
- * algorithm.
- */
-public class StaticDESPasswordCipher implements PasswordCipher {
-
- private static final byte[] _3desData = {
- (byte) 0x76, (byte) 0x6F, (byte) 0xBA, (byte) 0x39, (byte) 0x31,
- (byte) 0x2F, (byte) 0x0D, (byte) 0x4A, (byte) 0xA3, (byte) 0x90,
- (byte) 0x55, (byte) 0xFE, (byte) 0x55, (byte) 0x65, (byte) 0x61,
- (byte) 0x13, (byte) 0x34, (byte) 0x82, (byte) 0x12, (byte) 0x17,
- (byte) 0xAC, (byte) 0x77, (byte) 0x39, (byte) 0x19};
-
- private static final SecretKeySpec KEY = new SecretKeySpec(_3desData, "DESede");
-
- /**
- * The name of the transformation defines Triple-DES encryption
- */
- private static final String TRANSFORMATION = "DESede";
-
- /**
- * @throws RuntimeException in any case of error.
- * @see org.apache.openejb.cipher.PasswordCipher#encrypt(String)
- */
- public char[] encrypt(final String plainPassword) {
- if (null == plainPassword || plainPassword.length() == 0) {
- throw new IllegalArgumentException("plainPassword cannot be null nor empty.");
- }
-
- final byte[] plaintext = plainPassword.getBytes();
- try {
- // Get a 3DES Cipher object
- final Cipher cipher = Cipher.getInstance(TRANSFORMATION);
- // Set it into encryption mode
- cipher.init(Cipher.ENCRYPT_MODE, KEY);
-
- // Encrypt data
- final byte[] cipherText = cipher.doFinal(plaintext);
- return new String(Base64.encodeBase64(cipherText)).toCharArray();
-
- } catch (final Exception e) {
- throw new OpenEJBRuntimeException(e);
- }
- }
-
- /**
- * @throws RuntimeException in any case of error.
- * @see org.apache.openejb.cipher.PasswordCipher#decrypt(char[])
- */
- public String decrypt(final char[] encodedPassword) {
- if (null == encodedPassword || encodedPassword.length == 0) {
- throw new IllegalArgumentException("encodedPassword cannot be null nor empty.");
- }
-
- try {
- final byte[] cipherText = Base64.decodeBase64(
- String.valueOf(encodedPassword).getBytes());
-
- // Get a 3DES Cipher object
- final Cipher cipher = Cipher.getInstance(TRANSFORMATION);
- // Set it into decryption mode
- cipher.init(Cipher.DECRYPT_MODE, KEY);
-
- // Decrypt data
- return new String(cipher.doFinal(cipherText));
-
- } catch (final Exception e) {
- throw new OpenEJBRuntimeException(e);
- }
- }
-
-}
+/*
+ * 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.cipher;
+
+import org.apache.openejb.OpenEJBRuntimeException;
+import org.apache.openejb.util.Base64;
+
+import javax.crypto.Cipher;
+import javax.crypto.spec.SecretKeySpec;
+
+/**
+ * This {@link org.apache.openejb.cipher.PasswordCipher} implementation uses a the Triple-DES encryption
+ * algorithm.
+ */
+public class StaticDESPasswordCipher implements PasswordCipher {
+
+ private static final byte[] _3desData = {
+ (byte) 0x76, (byte) 0x6F, (byte) 0xBA, (byte) 0x39, (byte) 0x31,
+ (byte) 0x2F, (byte) 0x0D, (byte) 0x4A, (byte) 0xA3, (byte) 0x90,
+ (byte) 0x55, (byte) 0xFE, (byte) 0x55, (byte) 0x65, (byte) 0x61,
+ (byte) 0x13, (byte) 0x34, (byte) 0x82, (byte) 0x12, (byte) 0x17,
+ (byte) 0xAC, (byte) 0x77, (byte) 0x39, (byte) 0x19};
+
+ private static final SecretKeySpec KEY = new SecretKeySpec(_3desData, "DESede");
+
+ /**
+ * The name of the transformation defines Triple-DES encryption
+ */
+ private static final String TRANSFORMATION = "DESede";
+
+ /**
+ * @throws RuntimeException in any case of error.
+ * @see org.apache.openejb.cipher.PasswordCipher#encrypt(String)
+ */
+ public char[] encrypt(final String plainPassword) {
+ if (null == plainPassword || plainPassword.length() == 0) {
+ throw new IllegalArgumentException("plainPassword cannot be null nor empty.");
+ }
+
+ final byte[] plaintext = plainPassword.getBytes();
+ try {
+ // Get a 3DES Cipher object
+ final Cipher cipher = Cipher.getInstance(TRANSFORMATION);
+ // Set it into encryption mode
+ cipher.init(Cipher.ENCRYPT_MODE, KEY);
+
+ // Encrypt data
+ final byte[] cipherText = cipher.doFinal(plaintext);
+ return new String(Base64.encodeBase64(cipherText)).toCharArray();
+
+ } catch (final Exception e) {
+ throw new OpenEJBRuntimeException(e);
+ }
+ }
+
+ /**
+ * @throws RuntimeException in any case of error.
+ * @see org.apache.openejb.cipher.PasswordCipher#decrypt(char[])
+ */
+ public String decrypt(final char[] encodedPassword) {
+ if (null == encodedPassword || encodedPassword.length == 0) {
+ throw new IllegalArgumentException("encodedPassword cannot be null nor empty.");
+ }
+
+ try {
+ final byte[] cipherText = Base64.decodeBase64(
+ String.valueOf(encodedPassword).getBytes());
+
+ // Get a 3DES Cipher object
+ final Cipher cipher = Cipher.getInstance(TRANSFORMATION);
+ // Set it into decryption mode
+ cipher.init(Cipher.DECRYPT_MODE, KEY);
+
+ // Decrypt data
+ return new String(cipher.doFinal(cipherText));
+
+ } catch (final Exception e) {
+ throw new OpenEJBRuntimeException(e);
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/tomee/blob/52567075/container/openejb-core/src/main/java/org/apache/openejb/classloader/FalseFilter.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/classloader/FalseFilter.java b/container/openejb-core/src/main/java/org/apache/openejb/classloader/FalseFilter.java
index 3378221..3452f19 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/classloader/FalseFilter.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/classloader/FalseFilter.java
@@ -1,29 +1,29 @@
-/*
- * 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.classloader;
-
-import org.apache.xbean.finder.filter.Filter;
-
-public class FalseFilter implements Filter {
- public static final FalseFilter INSTANCE = new FalseFilter();
-
- @Override
- public boolean accept(final String name) {
- return false;
- }
-}
+/*
+ * 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.classloader;
+
+import org.apache.xbean.finder.filter.Filter;
+
+public class FalseFilter implements Filter {
+ public static final FalseFilter INSTANCE = new FalseFilter();
+
+ @Override
+ public boolean accept(final String name) {
+ return false;
+ }
+}
http://git-wip-us.apache.org/repos/asf/tomee/blob/52567075/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentFilterable.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentFilterable.java b/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentFilterable.java
index ec3365a..f4b9be6 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentFilterable.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentFilterable.java
@@ -1,33 +1,33 @@
-/*
- * 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.config;
-
-/**
- * @version $Rev$
- */
-public interface DeploymentFilterable {
- String DEPLOYMENTS_CLASSPATH_PROPERTY = "openejb.deployments.classpath";
- String SEARCH_CLASSPATH_FOR_DEPLOYMENTS_PROPERTY = DEPLOYMENTS_CLASSPATH_PROPERTY;
- String CLASSPATH_INCLUDE = "openejb.deployments.classpath.include";
- String CLASSPATH_EXCLUDE = "openejb.deployments.classpath.exclude";
- String PACKAGE_INCLUDE = "openejb.deployments.package.include";
- String PACKAGE_EXCLUDE = "openejb.deployments.package.exclude";
- String CLASSPATH_REQUIRE_DESCRIPTOR = RequireDescriptors.PROPERTY;
- String CLASSPATH_FILTER_DESCRIPTORS = "openejb.deployments.classpath.filter.descriptors";
- String CLASSPATH_FILTER_SYSTEMAPPS = "openejb.deployments.classpath.filter.systemapps";
-}
+/*
+ * 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.config;
+
+/**
+ * @version $Rev$
+ */
+public interface DeploymentFilterable {
+ String DEPLOYMENTS_CLASSPATH_PROPERTY = "openejb.deployments.classpath";
+ String SEARCH_CLASSPATH_FOR_DEPLOYMENTS_PROPERTY = DEPLOYMENTS_CLASSPATH_PROPERTY;
+ String CLASSPATH_INCLUDE = "openejb.deployments.classpath.include";
+ String CLASSPATH_EXCLUDE = "openejb.deployments.classpath.exclude";
+ String PACKAGE_INCLUDE = "openejb.deployments.package.include";
+ String PACKAGE_EXCLUDE = "openejb.deployments.package.exclude";
+ String CLASSPATH_REQUIRE_DESCRIPTOR = RequireDescriptors.PROPERTY;
+ String CLASSPATH_FILTER_DESCRIPTORS = "openejb.deployments.classpath.filter.descriptors";
+ String CLASSPATH_FILTER_SYSTEMAPPS = "openejb.deployments.classpath.filter.systemapps";
+}