Author: dblevins Date: Sat Mar 16 23:03:05 2013 New Revision: 1457331 URL: http://svn.apache.org/r1457331 Log: svn merge -r 1457328:1457329 https://svn.apache.org/repos/asf/tomee/tomee/branches/tomee-1.5.x
http://svn.apache.org/viewvc?view=revision&revision=1457329 ------------------------------------------------------------------------ r1457329 | dblevins | 2013-03-16 15:49:19 -0700 (Sat, 16 Mar 2013) | 2 lines TOMEE-835 - Allow Arquillian config properties to be set via properties files ------------------------------------------------------------------------ Added: tomee/tomee/trunk/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/ConfigurationOverrides.java - copied unchanged from r1457329, tomee/tomee/branches/tomee-1.5.x/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/ConfigurationOverrides.java tomee/tomee/trunk/arquillian/arquillian-tomee-common/src/test/ - copied from r1457329, tomee/tomee/branches/tomee-1.5.x/arquillian/arquillian-tomee-common/src/test/ tomee/tomee/trunk/arquillian/arquillian-tomee-common/src/test/java/ - copied from r1457329, tomee/tomee/branches/tomee-1.5.x/arquillian/arquillian-tomee-common/src/test/java/ tomee/tomee/trunk/arquillian/arquillian-tomee-common/src/test/java/org/ - copied from r1457329, tomee/tomee/branches/tomee-1.5.x/arquillian/arquillian-tomee-common/src/test/java/org/ tomee/tomee/trunk/arquillian/arquillian-tomee-common/src/test/java/org/apache/ - copied from r1457329, tomee/tomee/branches/tomee-1.5.x/arquillian/arquillian-tomee-common/src/test/java/org/apache/ tomee/tomee/trunk/arquillian/arquillian-tomee-common/src/test/java/org/apache/openejb/ - copied from r1457329, tomee/tomee/branches/tomee-1.5.x/arquillian/arquillian-tomee-common/src/test/java/org/apache/openejb/ tomee/tomee/trunk/arquillian/arquillian-tomee-common/src/test/java/org/apache/openejb/arquillian/ - copied from r1457329, tomee/tomee/branches/tomee-1.5.x/arquillian/arquillian-tomee-common/src/test/java/org/apache/openejb/arquillian/ tomee/tomee/trunk/arquillian/arquillian-tomee-common/src/test/java/org/apache/openejb/arquillian/common/ - copied from r1457329, tomee/tomee/branches/tomee-1.5.x/arquillian/arquillian-tomee-common/src/test/java/org/apache/openejb/arquillian/common/ tomee/tomee/trunk/arquillian/arquillian-tomee-common/src/test/java/org/apache/openejb/arquillian/common/ConfigurationOverridesTest.java - copied unchanged from r1457329, tomee/tomee/branches/tomee-1.5.x/arquillian/arquillian-tomee-common/src/test/java/org/apache/openejb/arquillian/common/ConfigurationOverridesTest.java tomee/tomee/trunk/arquillian/arquillian-tomee-common/src/test/resources/ - copied from r1457329, tomee/tomee/branches/tomee-1.5.x/arquillian/arquillian-tomee-common/src/test/resources/ tomee/tomee/trunk/arquillian/arquillian-tomee-common/src/test/resources/arquillian-color-orange.properties - copied unchanged from r1457329, tomee/tomee/branches/tomee-1.5.x/arquillian/arquillian-tomee-common/src/test/resources/arquillian-color-orange.properties tomee/tomee/trunk/arquillian/arquillian-tomee-common/src/test/resources/arquillian-color.properties - copied unchanged from r1457329, tomee/tomee/branches/tomee-1.5.x/arquillian/arquillian-tomee-common/src/test/resources/arquillian-color.properties tomee/tomee/trunk/arquillian/arquillian-tomee-common/src/test/resources/default.arquillian-color-orange.properties - copied unchanged from r1457329, tomee/tomee/branches/tomee-1.5.x/arquillian/arquillian-tomee-common/src/test/resources/default.arquillian-color-orange.properties tomee/tomee/trunk/arquillian/arquillian-tomee-common/src/test/resources/default.arquillian-color.properties - copied unchanged from r1457329, tomee/tomee/branches/tomee-1.5.x/arquillian/arquillian-tomee-common/src/test/resources/default.arquillian-color.properties tomee/tomee/trunk/arquillian/arquillian-tomee-remote/src/main/resources/default.arquillian-tomee-remote.properties - copied unchanged from r1457329, tomee/tomee/branches/tomee-1.5.x/arquillian/arquillian-tomee-remote/src/main/resources/default.arquillian-tomee-remote.properties tomee/tomee/trunk/arquillian/arquillian-tomee-webapp-remote/src/main/resources/default.arquillian-tomee-webapp.properties - copied unchanged from r1457329, tomee/tomee/branches/tomee-1.5.x/arquillian/arquillian-tomee-webapp-remote/src/main/resources/default.arquillian-tomee-webapp.properties tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/JavaMailTest.java (with props) tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/StatelessEjbCdiBeanInterceptorsTest.java (with props) tomee/tomee/trunk/container/openejb-jee-accessors/src/test/resources/foo.xml (with props) tomee/tomee/trunk/container/openejb-jee-accessors/src/test/resources/taglib.xml (with props) tomee/tomee/trunk/server/openejb-server/src/main/java/org/apache/openejb/server/Test.java (with props) Modified: tomee/tomee/trunk/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TomEEContainer.java tomee/tomee/trunk/arquillian/arquillian-tomee-remote/pom.xml tomee/tomee/trunk/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEConfiguration.java tomee/tomee/trunk/arquillian/arquillian-tomee-remote/src/test/resources/arquillian.xml tomee/tomee/trunk/arquillian/arquillian-tomee-webapp-remote/pom.xml tomee/tomee/trunk/arquillian/arquillian-tomee-webapp-remote/src/test/resources/arquillian.xml tomee/tomee/trunk/container/openejb-jee-accessors/src/main/java/org/apache/openejb/sxc/TldTaglibXml.java tomee/tomee/trunk/container/openejb-jee/pom.xml tomee/tomee/trunk/container/openejb-jee/src/main/java/org/apache/openejb/jee/JaxbJavaee.java tomee/tomee/trunk/examples/telephone-stateful/src/test/java/org/superbiz/telephone/TelephoneTest.java tomee/tomee/trunk/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/beans/EmployeeHome.java Modified: tomee/tomee/trunk/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TomEEContainer.java URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TomEEContainer.java?rev=1457331&r1=1457330&r2=1457331&view=diff ============================================================================== --- tomee/tomee/trunk/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TomEEContainer.java (original) +++ tomee/tomee/trunk/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TomEEContainer.java Sat Mar 16 23:03:05 2013 @@ -80,41 +80,13 @@ public abstract class TomEEContainer<Con if (prefixes == null) return; - // - // Override the config with system properties - // - final ObjectMap map = new ObjectMap(configuration); - for (String key : map.keySet()) { - for (String prefix : prefixes.value()) { - final String property = prefix + "." + key; - final String value = System.getProperty(property); - - if (value == null) { - LOGGER.log(Level.FINE, String.format("Unset '%s'", property)); - continue; - } - - try { - LOGGER.log(Level.INFO, String.format("Applying override '%s=%s'", property, value)); - map.put(key, value); - } catch (Exception e) { - try { - map.put(key, Integer.parseInt(value)); // we manage String and int and boolean so let's try an int - } catch (Exception ignored) { - try { - map.put(key, Boolean.parseBoolean(value)); // idem let's try a boolean - } catch (Exception ignored2) { - LOGGER.log(Level.WARNING, String.format("Override failed '%s=%s'", property, value), e); - } - } - } - } - } + ConfigurationOverrides.apply(configuration, System.getProperties(), prefixes.value()); setPorts(); // with multiple containers we don't want it so let the user eb able to skip it if (configuration.getExportConfAsSystemProperty()) { + final ObjectMap map = new ObjectMap(configuration); // // Export the config back out to properties // Modified: tomee/tomee/trunk/arquillian/arquillian-tomee-remote/pom.xml URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/arquillian-tomee-remote/pom.xml?rev=1457331&r1=1457330&r2=1457331&view=diff ============================================================================== --- tomee/tomee/trunk/arquillian/arquillian-tomee-remote/pom.xml (original) +++ tomee/tomee/trunk/arquillian/arquillian-tomee-remote/pom.xml Sat Mar 16 23:03:05 2013 @@ -140,6 +140,12 @@ </dependencies> <build> + <resources> + <resource> + <directory>src/main/resources</directory> + <filtering>true</filtering> + </resource> + </resources> <testResources> <testResource> <directory>${project.basedir}/src/test/resources</directory> Modified: tomee/tomee/trunk/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEConfiguration.java URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEConfiguration.java?rev=1457331&r1=1457330&r2=1457331&view=diff ============================================================================== --- tomee/tomee/trunk/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEConfiguration.java (original) +++ tomee/tomee/trunk/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEConfiguration.java Sat Mar 16 23:03:05 2013 @@ -28,11 +28,11 @@ import java.util.List; @Prefixes({"tomee", "tomee.remote"}) public class RemoteTomEEConfiguration extends TomEEConfiguration { - private String groupId = "org.apache.openejb"; - private String artifactId = "apache-tomee"; - private String version = "LATEST"; - private String classifier = "webprofile"; - private String type = "zip"; + private String groupId; + private String artifactId; + private String version; + private String classifier; + private String type; private boolean removeUnusedWebapps = true; private int ajpPort = 8009; private String conf; Modified: tomee/tomee/trunk/arquillian/arquillian-tomee-remote/src/test/resources/arquillian.xml URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/arquillian-tomee-remote/src/test/resources/arquillian.xml?rev=1457331&r1=1457330&r2=1457331&view=diff ============================================================================== --- tomee/tomee/trunk/arquillian/arquillian-tomee-remote/src/test/resources/arquillian.xml (original) +++ tomee/tomee/trunk/arquillian/arquillian-tomee-remote/src/test/resources/arquillian.xml Sat Mar 16 23:03:05 2013 @@ -25,7 +25,6 @@ <property name="httpPort">-1</property> <property name="stopPort">-1</property> <property name="ajpPort">-1</property> - <property name="version">${tomee.version}</property> <property name="dir">target/apache-tomee-remote</property> <property name="appWorkingDir">target/arquillian-test-working-dir</property> <property name="properties"> Modified: tomee/tomee/trunk/arquillian/arquillian-tomee-webapp-remote/pom.xml URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/arquillian-tomee-webapp-remote/pom.xml?rev=1457331&r1=1457330&r2=1457331&view=diff ============================================================================== --- tomee/tomee/trunk/arquillian/arquillian-tomee-webapp-remote/pom.xml (original) +++ tomee/tomee/trunk/arquillian/arquillian-tomee-webapp-remote/pom.xml Sat Mar 16 23:03:05 2013 @@ -277,6 +277,12 @@ </dependencies> <build> + <resources> + <resource> + <directory>src/main/resources</directory> + <filtering>true</filtering> + </resource> + </resources> <testResources> <testResource> <directory>${project.basedir}/src/test/resources</directory> Modified: tomee/tomee/trunk/arquillian/arquillian-tomee-webapp-remote/src/test/resources/arquillian.xml URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/arquillian-tomee-webapp-remote/src/test/resources/arquillian.xml?rev=1457331&r1=1457330&r2=1457331&view=diff ============================================================================== --- tomee/tomee/trunk/arquillian/arquillian-tomee-webapp-remote/src/test/resources/arquillian.xml (original) +++ tomee/tomee/trunk/arquillian/arquillian-tomee-webapp-remote/src/test/resources/arquillian.xml Sat Mar 16 23:03:05 2013 @@ -30,7 +30,6 @@ <property name="stopPort">-1</property> <property name="tomcatVersion">${tomcat.version}</property> <property name="useInstallerServlet">true</property> - <property name="version">${tomee.version}</property> <property name="dir">target/apache-tomee-remote</property> <property name="appWorkingDir">target/arquillian-test-working-dir</property> <property name="properties"> Added: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/JavaMailTest.java URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/JavaMailTest.java?rev=1457331&view=auto ============================================================================== --- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/JavaMailTest.java (added) +++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/JavaMailTest.java Sat Mar 16 23:03:05 2013 @@ -0,0 +1,460 @@ +/* + * 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.core; + +import org.apache.openejb.junit.ApplicationComposer; +import org.apache.openejb.loader.Files; +import org.apache.openejb.loader.IO; +import org.apache.openejb.testing.Module; +import org.junit.Test; +import org.junit.runner.RunWith; + +import javax.annotation.Resource; +import javax.ejb.EJB; +import javax.ejb.Singleton; +import javax.mail.Address; +import javax.mail.Folder; +import javax.mail.Message; +import javax.mail.MessagingException; +import javax.mail.Session; +import javax.mail.Store; +import javax.mail.URLName; +import javax.mail.internet.InternetAddress; +import javax.xml.bind.JAXBContext; +import javax.xml.bind.JAXBException; +import javax.xml.bind.Marshaller; +import javax.xml.bind.Unmarshaller; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; +import java.io.File; +import java.io.OutputStream; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Calendar; +import java.util.Collection; +import java.util.Collections; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Properties; +import java.util.concurrent.atomic.AtomicInteger; + +/** + * @version $Rev$ $Date$ + */ +@RunWith(ApplicationComposer.class) +public class JavaMailTest { + + @EJB + private Orange orange; + + @Module + public Class<?>[] module() { + return new Class[]{Orange.class}; + } + + @Test + public void test() throws Exception { + orange.test(); + } + + public static class ObjectSet<T> { + final Map<T, T> map = new HashMap<T, T>(); + + public ObjectSet() { + } + + public T get(T t) { + final T existing = map.get(t); + if (existing != null) return existing; + map.put(t, t); + return t; + } + + public Collection<T> values() { + return map.values(); + } + } + + public static class Domains { + final ObjectSet<Domain> domains = new ObjectSet<Domain>(); + + public Domain get(EmailAddress address) { + return domains.get(new Domain(address.getDomain())); + } + + public Collection<Domain> get() { + return domains.values(); + } + } + + public static class Domain { + + final ObjectSet<EmailAddress> addresses = new ObjectSet<EmailAddress>(); + + final String name; + + public Domain(String name) { + if (name == null) throw new IllegalArgumentException("Name cannot be null"); + this.name = name.toLowerCase(); + } + + public EmailAddress get(EmailAddress t) { + return addresses.get(t); + } + + public int getEmails() { + int i = 0; + for (EmailAddress address : addresses.values()) { + i += address.getEmails(); + } + + return i; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + Domain domain = (Domain) o; + + if (!name.equals(domain.name)) return false; + + return true; + } + + @Override + public int hashCode() { + return name.hashCode(); + } + } + + public static class EmailAddress { + private final String address; + private final String user; + private final String domain; + private final String name; + private int emails; + + public EmailAddress(InternetAddress internetAddress) { + this(internetAddress.getAddress(), internetAddress.getPersonal()); + } + + public EmailAddress(String address, String name) { + if (address == null) throw new IllegalArgumentException("Address cannot be null"); + this.address = address.toLowerCase(); + final String[] split = address.split("@"); + this.user = split[0]; + this.domain = split[1]; + this.name = name; + } + + public String getUser() { + return user; + } + + public String getDomain() { + return domain; + } + + public String getAddress() { + return address; + } + + public String getName() { + return name; + } + + public int getEmails() { + return emails; + } + + public void increment() { + emails += 1; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + EmailAddress that = (EmailAddress) o; + + if (!address.equals(that.address)) return false; + + return true; + } + + @Override + public int hashCode() { + return address.hashCode(); + } + } + + @XmlRootElement + @XmlAccessorType(value = XmlAccessType.FIELD) + public static class Messages { + + @XmlElement + private List<Msg> messages = new ArrayList<Msg>(); + + public List<Msg> getMessages() { + return messages; + } + } + + @XmlRootElement(name = "message") + @XmlAccessorType(value = XmlAccessType.FIELD) + public static class Msg { + + private final List<Addr> from = new ArrayList<Addr>(); + private final List<Addr> to = new ArrayList<Addr>(); + private String subject; + private Date sentDate; + private Date receivedDate; + private int messageNumber; + private String messageId; + + public Msg() { + } + + public Msg(Message message) throws MessagingException { + for (Address address : message.getFrom()) { + this.from.add(new Addr(address)); + } + for (Address address : message.getAllRecipients()) { + this.to.add(new Addr(address)); + } + this.subject = message.getSubject(); + sentDate = message.getSentDate(); + receivedDate = message.getReceivedDate(); + messageNumber = message.getMessageNumber(); + try { + messageId = message.getHeader("Message-Id")[0]; + } catch (Exception e) { + } + } + + public List<Addr> getFrom() { + return from; + } + + public List<Addr> getTo() { + return to; + } + + public String getSubject() { + return subject; + } + + public void setSubject(String subject) { + this.subject = subject; + } + + public Date getSentDate() { + return sentDate; + } + + public void setSentDate(Date sentDate) { + this.sentDate = sentDate; + } + + public Date getReceivedDate() { + return receivedDate; + } + + public void setReceivedDate(Date receivedDate) { + this.receivedDate = receivedDate; + } + + @XmlAccessorType(value = XmlAccessType.FIELD) + public static class Addr { + + @XmlAttribute + private String address; + + @XmlAttribute + private String name; + + @XmlAttribute + private String domain; + + @XmlAttribute + private String user; + + public Addr() { + } + + public Addr(Address address) { + if (address instanceof InternetAddress) { + InternetAddress internetAddress = (InternetAddress) address; + this.address = internetAddress.getAddress().toLowerCase(); + this.name = internetAddress.getPersonal(); + + try { + final String[] split = this.address.split("@"); + this.user = split[0]; + this.domain = split[1]; + } catch (Exception e) { + e.printStackTrace(); + } + } + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDomain() { + return domain; + } + + public void setDomain(String domain) { + this.domain = domain; + } + + public String getUser() { + return user; + } + + public void setUser(String user) { + this.user = user; + } + } + } + + public static void main(String[] args) throws Exception { + final File saved = new File("/Users/dblevins/work/tomitribe/userlist"); + final List<File> files = Files.collect(saved, ".*.xml"); + + final Domains domains = new Domains(); + + final Calendar calendar = Calendar.getInstance(); + calendar.set(Calendar.YEAR, 2012); + calendar.set(Calendar.DAY_OF_YEAR, 1); + final Date date = calendar.getTime(); + + final JAXBContext jaxbContext = JAXBContext.newInstance(Messages.class); + final Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); + for (File file : files) { + try { + final Msg message = (Msg) unmarshaller.unmarshal(file); + if (message.getReceivedDate().before(date)) continue; + + final Msg.Addr addr = message.getFrom().get(0); + final EmailAddress address = new EmailAddress(addr.getAddress(), addr.getName()); + final Domain domain = domains.get(address); + domain.get(address).increment(); + } catch (JAXBException e) { + System.out.println("FAILED - " + file); + } + } + + for (Domain domain : domains.get()) { + System.out.printf("%s %s\n", domain.getEmails(), domain.name); + } + } + + public static void _main(String[] args) throws Exception { + final Properties props = System.getProperties(); + props.setProperty("mail.store.protocol", "imaps"); + + final Session session = Session.getDefaultInstance(props, null); + + final Store store = session.getStore("imaps"); + store.connect("imap.googlemail.com", "[email protected]", "Sn0wmany"); + + for (Folder folder : store.getDefaultFolder().list()) { + System.out.println(folder.getURLName()); + } + + final Folder folder = store.getFolder("openejb/openejb-users"); + + if (!folder.isOpen()) folder.open(Folder.READ_WRITE); + + final List<Message> list = new ArrayList<Message>(Arrays.asList(folder.getMessages())); + Collections.reverse(list); + + final Domains domains = new Domains(); + + final File saved = new File("/Users/dblevins/work/tomitribe/userlist"); + + final JAXBContext jaxbContext = JAXBContext.newInstance(Messages.class); + final Marshaller marshaller = jaxbContext.createMarshaller(); + marshaller.setProperty("jaxb.formatted.output", true); + +// int i = 0; + for (Message message : list) { + System.out.println(message.getMessageNumber()); + final File file = new File(saved, "message-" + message.getMessageNumber() + ".xml"); + final OutputStream write = IO.write(file); + try { + marshaller.marshal(new Msg(message), write); + } catch (Exception e) { + e.printStackTrace(); + } finally { + write.close(); + } + +// if (i++ > 1) break; + } + + } + + + private static final Map<String, AtomicInteger> map = new HashMap<String, AtomicInteger>(); + + private static AtomicInteger get(String domain) { + { + final AtomicInteger integer = map.get(domain); + if (integer != null) return integer; + } + + final AtomicInteger value = new AtomicInteger(); + map.put(domain, value); + return value; + } + + @Singleton + public static class Orange { + + @Resource + private Session session; + + public void test() throws Exception { + final URLName name = null; + session.getFolder(name).getMessages(); + } + } +} Propchange: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/JavaMailTest.java ------------------------------------------------------------------------------ svn:eol-style = native Added: tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/StatelessEjbCdiBeanInterceptorsTest.java URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/StatelessEjbCdiBeanInterceptorsTest.java?rev=1457331&view=auto ============================================================================== --- tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/StatelessEjbCdiBeanInterceptorsTest.java (added) +++ tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/StatelessEjbCdiBeanInterceptorsTest.java Sat Mar 16 23:03:05 2013 @@ -0,0 +1,123 @@ +/* + * 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.core.stateless; + +import org.apache.openejb.jee.Beans; +import org.apache.openejb.junit.ApplicationComposer; +import org.apache.openejb.testing.Module; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; + +import javax.ejb.EJB; +import javax.ejb.Stateless; +import javax.interceptor.AroundInvoke; +import javax.interceptor.Interceptor; +import javax.interceptor.InterceptorBinding; +import javax.interceptor.Interceptors; +import javax.interceptor.InvocationContext; +import java.lang.annotation.Retention; +import java.lang.annotation.Target; +import java.util.ArrayList; +import java.util.List; + +import static java.lang.annotation.ElementType.METHOD; +import static java.lang.annotation.ElementType.TYPE; +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +/** + * @version $Rev$ $Date$ + */ +@RunWith(ApplicationComposer.class) +public class StatelessEjbCdiBeanInterceptorsTest extends Assert { + + @EJB + private OrangeBean orangeBean; + + @Module + public Class[] module() { + return new Class[]{CdiInterceptor.class, CdiInterceptorBinding.class, EjbInterceptor.class, OrangeBean.class}; + } + + @Module + public Beans beans() { + final Beans beans = new Beans(); + beans.addInterceptor(CdiInterceptor.class); + return beans; + } + + + @Test + public void test() throws Exception { + assertEquals(0, calls.size()); + + orangeBean.hello(); + + assertEquals(new ArrayList<Call>(), calls); + } + + public static List<Call> calls = new ArrayList<Call>(); + + public static enum Call { + CDI, + EJB, + BEAN + } + + + @InterceptorBinding + @Target({TYPE, METHOD}) + @Retention(RUNTIME) + public @interface CdiInterceptorBinding { + } + + @Interceptor + @CdiInterceptorBinding + public static class CdiInterceptor { + + @AroundInvoke + public Object invoke(InvocationContext context) throws Exception { + calls.add(Call.CDI); + return context.proceed(); + } + } + + public static class EjbInterceptor { + + @AroundInvoke + public Object invoke(InvocationContext context) throws Exception { + calls.add(Call.EJB); + return context.proceed(); + } + } + + @Stateless + @Interceptors(EjbInterceptor.class) + @CdiInterceptorBinding + public static class OrangeBean { + + @AroundInvoke + public Object invoke(InvocationContext context) throws Exception { + calls.add(Call.BEAN); + return context.proceed(); + } + + public void hello() { + + } + } +} Propchange: tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/StatelessEjbCdiBeanInterceptorsTest.java ------------------------------------------------------------------------------ svn:eol-style = native Modified: tomee/tomee/trunk/container/openejb-jee-accessors/src/main/java/org/apache/openejb/sxc/TldTaglibXml.java URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-jee-accessors/src/main/java/org/apache/openejb/sxc/TldTaglibXml.java?rev=1457331&r1=1457330&r2=1457331&view=diff ============================================================================== --- tomee/tomee/trunk/container/openejb-jee-accessors/src/main/java/org/apache/openejb/sxc/TldTaglibXml.java (original) +++ tomee/tomee/trunk/container/openejb-jee-accessors/src/main/java/org/apache/openejb/sxc/TldTaglibXml.java Sat Mar 16 23:03:05 2013 @@ -42,6 +42,8 @@ public class TldTaglibXml { try { final XMLStreamReader filter = new TaglibNamespaceFilter(Sxc.prepareReader(inputStream)); return Sxc.unmarhsal(new TldTaglib$JAXB(), new XoXMLStreamReaderImpl(filter)); + } catch (Exception e) { + return new TldTaglib(); } finally { IO.close(inputStream); } Added: tomee/tomee/trunk/container/openejb-jee-accessors/src/test/resources/foo.xml URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-jee-accessors/src/test/resources/foo.xml?rev=1457331&view=auto ============================================================================== --- tomee/tomee/trunk/container/openejb-jee-accessors/src/test/resources/foo.xml (added) +++ tomee/tomee/trunk/container/openejb-jee-accessors/src/test/resources/foo.xml Sat Mar 16 23:03:05 2013 @@ -0,0 +1,34 @@ +<foo> + <!-- after this the default space is + "http://java.sun.com/j2ee/dtds/jsptaglibrary_1_2.dtd" + --> + + <tlibversion>2.0</tlibversion> + <jspversion>1.2</jspversion> + <shortname>BSF JSP Support</shortname> + <uri>http://jakarta.apache.org/taglibs/</uri> + <info> Just testing </info> + + <tag> + <name>scriptlet</name> + <tagclass>org.apache.taglibs.bsf.scriptlet</tagclass> + <bodycontent>tagdependent</bodycontent> + <info>Run script</info> + <attribute> + <name>language</name> + <required>true</required> + </attribute> + </tag> + + <tag> + <name>expression</name> + <tagclass>org.apache.taglibs.bsf.expression</tagclass> + <bodycontent>tagdependent</bodycontent> + <info>Run expression</info> + <attribute> + <name>language</name> + <required>true</required> + </attribute> + </tag> + +</foo> Propchange: tomee/tomee/trunk/container/openejb-jee-accessors/src/test/resources/foo.xml ------------------------------------------------------------------------------ svn:eol-style = native Added: tomee/tomee/trunk/container/openejb-jee-accessors/src/test/resources/taglib.xml URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-jee-accessors/src/test/resources/taglib.xml?rev=1457331&view=auto ============================================================================== --- tomee/tomee/trunk/container/openejb-jee-accessors/src/test/resources/taglib.xml (added) +++ tomee/tomee/trunk/container/openejb-jee-accessors/src/test/resources/taglib.xml Sat Mar 16 23:03:05 2013 @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="ISO-8859-1" ?> +<!DOCTYPE taglib + PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" + "http://java.sun.com/j2ee/dtds/web-jsptaglib_1_1.dtd"> + +<!-- a tab library descriptor --> + +<taglib> + <!-- after this the default space is + "http://java.sun.com/j2ee/dtds/jsptaglibrary_1_2.dtd" + --> + + <tlibversion>2.0</tlibversion> + <jspversion>1.2</jspversion> + <shortname>BSF JSP Support</shortname> + <uri>http://jakarta.apache.org/taglibs/</uri> + <info> Just testing </info> + + <tag> + <name>scriptlet</name> + <tagclass>org.apache.taglibs.bsf.scriptlet</tagclass> + <bodycontent>tagdependent</bodycontent> + <info>Run script</info> + <attribute> + <name>language</name> + <required>true</required> + </attribute> + </tag> + + <tag> + <name>expression</name> + <tagclass>org.apache.taglibs.bsf.expression</tagclass> + <bodycontent>tagdependent</bodycontent> + <info>Run expression</info> + <attribute> + <name>language</name> + <required>true</required> + </attribute> + </tag> + +</taglib> Propchange: tomee/tomee/trunk/container/openejb-jee-accessors/src/test/resources/taglib.xml ------------------------------------------------------------------------------ svn:eol-style = native Modified: tomee/tomee/trunk/container/openejb-jee/pom.xml URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-jee/pom.xml?rev=1457331&r1=1457330&r2=1457331&view=diff ============================================================================== --- tomee/tomee/trunk/container/openejb-jee/pom.xml (original) +++ tomee/tomee/trunk/container/openejb-jee/pom.xml Sat Mar 16 23:03:05 2013 @@ -30,12 +30,11 @@ <packaging>jar</packaging> <name>OpenEJB :: Container :: Java EE</name> - - <properties> - <openejb.osgi.import.pkg> - org.apache.geronimo.specs.jpa;resolution:=optional, - org.apache.geronimo.specs.activation;resolution:=optional, - * + <properties> + <openejb.osgi.import.pkg> + org.apache.geronimo.specs.jpa;resolution:=optional, + org.apache.geronimo.specs.activation;resolution:=optional, + * </openejb.osgi.import.pkg> </properties> Modified: tomee/tomee/trunk/container/openejb-jee/src/main/java/org/apache/openejb/jee/JaxbJavaee.java URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-jee/src/main/java/org/apache/openejb/jee/JaxbJavaee.java?rev=1457331&r1=1457330&r2=1457331&view=diff ============================================================================== --- tomee/tomee/trunk/container/openejb-jee/src/main/java/org/apache/openejb/jee/JaxbJavaee.java (original) +++ tomee/tomee/trunk/container/openejb-jee/src/main/java/org/apache/openejb/jee/JaxbJavaee.java Sat Mar 16 23:03:05 2013 @@ -248,10 +248,10 @@ public class JaxbJavaee { }); JaxbJavaee.HandlerChainsNamespaceFilter xmlFilter = new JaxbJavaee.HandlerChainsNamespaceFilter(parser.getXMLReader()); - xmlFilter.setContentHandler(unmarshaller.getUnmarshallerHandler()); - HandlerChainsStringQNameAdapter adapter = new HandlerChainsStringQNameAdapter(); - adapter.setHandlerChainsNamespaceFilter(xmlFilter); - unmarshaller.setAdapter(HandlerChainsStringQNameAdapter.class, adapter); +// xmlFilter.setContentHandler(unmarshaller.getUnmarshallerHandler()); +// HandlerChainsStringQNameAdapter adapter = new HandlerChainsStringQNameAdapter(); +// adapter.setHandlerChainsNamespaceFilter(xmlFilter); +// unmarshaller.setAdapter(HandlerChainsStringQNameAdapter.class, adapter); SAXSource source = new SAXSource(xmlFilter, inputSource); Modified: tomee/tomee/trunk/examples/telephone-stateful/src/test/java/org/superbiz/telephone/TelephoneTest.java URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/examples/telephone-stateful/src/test/java/org/superbiz/telephone/TelephoneTest.java?rev=1457331&r1=1457330&r2=1457331&view=diff ============================================================================== --- tomee/tomee/trunk/examples/telephone-stateful/src/test/java/org/superbiz/telephone/TelephoneTest.java (original) +++ tomee/tomee/trunk/examples/telephone-stateful/src/test/java/org/superbiz/telephone/TelephoneTest.java Sat Mar 16 23:03:05 2013 @@ -32,8 +32,8 @@ public class TelephoneTest extends TestC @Override protected void setUp() throws Exception { final Properties properties = new Properties(); - properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory"); - properties.setProperty("openejb.embedded.remotable", "true"); +// properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory"); +// properties.setProperty("openejb.embedded.remotable", "true"); // Uncomment these properties to change the defaults //properties.setProperty("ejbd.port", "4202"); //properties.setProperty("ejbd.bind", "localhost"); @@ -83,7 +83,7 @@ public class TelephoneTest extends TestC public void testTalkOverRemoteNetwork() throws Exception { final Properties properties = new Properties(); properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.RemoteInitialContextFactory"); - properties.setProperty(Context.PROVIDER_URL, "ejbd://localhost:" + Integer.parseInt(System.getProperty("ejbd.port", "4201"))); + properties.setProperty(Context.PROVIDER_URL, "http://localhost:8080/tomee/ejb"); final InitialContext remoteContext = new InitialContext(properties); final Telephone telephone = (Telephone) remoteContext.lookup("TelephoneBeanRemote"); Modified: tomee/tomee/trunk/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/beans/EmployeeHome.java URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/beans/EmployeeHome.java?rev=1457331&r1=1457330&r2=1457331&view=diff ============================================================================== --- tomee/tomee/trunk/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/beans/EmployeeHome.java (original) +++ tomee/tomee/trunk/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/beans/EmployeeHome.java Sat Mar 16 23:03:05 2013 @@ -17,16 +17,17 @@ package org.apache.openejb.test.beans; -public interface EmployeeHome extends javax.ejb.EJBHome{ - +public interface EmployeeHome extends javax.ejb.EJBHome { + public Employee create(String lastname, String firstName) - throws javax.ejb.CreateException, java.rmi.RemoteException; - - public int sum(int one, int two) throws java.rmi.RemoteException; - - public java.util.Collection findAll( ) - throws javax.ejb.FinderException, java.rmi.RemoteException; - + throws javax.ejb.CreateException, java.rmi.RemoteException; + + public int sum(int one, int two) + throws java.rmi.RemoteException; + + public java.util.Collection findAll() + throws javax.ejb.FinderException, java.rmi.RemoteException; + public Employee findByPrimaryKey(Integer primkey) - throws javax.ejb.FinderException, java.rmi.RemoteException; + throws javax.ejb.FinderException, java.rmi.RemoteException; } \ No newline at end of file Added: tomee/tomee/trunk/server/openejb-server/src/main/java/org/apache/openejb/server/Test.java URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-server/src/main/java/org/apache/openejb/server/Test.java?rev=1457331&view=auto ============================================================================== --- tomee/tomee/trunk/server/openejb-server/src/main/java/org/apache/openejb/server/Test.java (added) +++ tomee/tomee/trunk/server/openejb-server/src/main/java/org/apache/openejb/server/Test.java Sat Mar 16 23:03:05 2013 @@ -0,0 +1,127 @@ +/* + * 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.server; + +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.LinkedBlockingDeque; +import java.util.concurrent.RejectedExecutionHandler; +import java.util.concurrent.ThreadFactory; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; + +/** + * @version $Rev$ $Date$ + */ +public class Test { + + static final AtomicInteger existing = new AtomicInteger(); + + public static void main(String[] args) { + + final ThreadPoolExecutor executor = new ThreadPoolExecutor(2, 5, 30, TimeUnit.SECONDS, new LinkedBlockingDeque<Runnable>(50)); + executor.setRejectedExecutionHandler(new RejectedExecutionHandler() { + @Override + public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) { + System.out.println("Rejecting " + r); + } + }); + executor.setThreadFactory(new ThreadFactory() { + private AtomicInteger ids = new AtomicInteger(0); + + @Override + public Thread newThread(Runnable r) { + return new Thread(r, "Thread-" + ids.incrementAndGet()) { + { + System.out.println("Creating Thread " + getName()); + existing.incrementAndGet(); + } + + @Override + public void run() { + System.out.println("Running " + getName() + " : "); + super.run(); + } + + protected void finalize() throws Throwable { + existing.decrementAndGet(); + System.out.println("Finalize " + getName()); + super.finalize(); + } + + }; + } + }); + + final Thread thread = new Thread() { + @Override + public void run() { + while (true) { + report(executor); + System.gc(); + Test.sleep(5, TimeUnit.SECONDS); + } + } + }; + thread.start(); + + report(executor); + + byte[] list = new byte[100]; + final CountDownLatch latch = new CountDownLatch(1); + int i = 0; + for (byte b : list) { + final int id = ++i; + final Runnable runnable = new Runnable() { + @Override + public void run() { + try { + System.out.println("Executing " + this + " in thread: " + Thread.currentThread().getName()); + latch.await(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + + @Override + public String toString() { + return "Runnable-" + id; + } + }; + + System.out.println("Adding " + runnable); + executor.execute(runnable); + report(executor); + } + + latch.countDown(); + + } + + private static void report(ThreadPoolExecutor executor) { + final String format = String.format("CorePoolSize %s, PoolSize %s, LargestPoolSize %s, Existing %s", executor.getCorePoolSize(), executor.getPoolSize(), executor.getLargestPoolSize(), existing.get()); + System.out.println(format); + } + + private static void sleep(long time, TimeUnit unit) { + try { + Thread.sleep(unit.toMillis(time)); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } +} Propchange: tomee/tomee/trunk/server/openejb-server/src/main/java/org/apache/openejb/server/Test.java ------------------------------------------------------------------------------ svn:eol-style = native
