Author: tcurdt Date: Sat Sep 24 05:25:31 2005 New Revision: 291289 URL: http://svn.apache.org/viewcvs?rev=291289&view=rev Log: updated to latest jci, a few other changes
Added: jakarta/commons/sandbox/javaflow/trunk/lib/commons-jci-r291284.jar (with props) jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/stores/ jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/stores/JavaflowResourceStore.java jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/stores/TransformingResourceStore.java - copied, changed from r290097, jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/bytecode/transformation/TransformingResourceStore.java Removed: jakarta/commons/sandbox/javaflow/trunk/lib/commons-jci-r290820.jar jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/RewritingResourceStore.java jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/bytecode/transformation/TransformingResourceStore.java Modified: jakarta/commons/sandbox/javaflow/trunk/project.properties jakarta/commons/sandbox/javaflow/trunk/project.xml Added: jakarta/commons/sandbox/javaflow/trunk/lib/commons-jci-r291284.jar URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/javaflow/trunk/lib/commons-jci-r291284.jar?rev=291289&view=auto ============================================================================== Binary file - no diff available. Propchange: jakarta/commons/sandbox/javaflow/trunk/lib/commons-jci-r291284.jar ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Modified: jakarta/commons/sandbox/javaflow/trunk/project.properties URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/javaflow/trunk/project.properties?rev=291289&r1=291288&r2=291289&view=diff ============================================================================== --- jakarta/commons/sandbox/javaflow/trunk/project.properties (original) +++ jakarta/commons/sandbox/javaflow/trunk/project.properties Sat Sep 24 05:25:31 2005 @@ -31,7 +31,7 @@ # ------------------------------------------------------------------------ # Jars set explicity by path. # ------------------------------------------------------------------------ -maven.jar.commons-jci = lib/commons-jci-r290820.jar +maven.jar.commons-jci = lib/commons-jci-r291284.jar maven.jar.bcel = lib/jakarta-bcel-20050813.jar maven.jar.commons-io = lib/commons-io-20050621.133116.jar maven.jar.asm = lib/asm-20050703.234510.jar Modified: jakarta/commons/sandbox/javaflow/trunk/project.xml URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/javaflow/trunk/project.xml?rev=291289&r1=291288&r2=291289&view=diff ============================================================================== --- jakarta/commons/sandbox/javaflow/trunk/project.xml (original) +++ jakarta/commons/sandbox/javaflow/trunk/project.xml Sat Sep 24 05:25:31 2005 @@ -84,8 +84,8 @@ <dependency> <groupId>commons-jci</groupId> <artifactId>commons-jci</artifactId> - <version>r290820</version> - <jar>${basedir}/lib/commons-jci-r290820.jar</jar> + <version>r291284</version> + <jar>${basedir}/lib/commons-jci-r291284.jar</jar> <type>jar</type> </dependency> <dependency> Added: jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/stores/JavaflowResourceStore.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/stores/JavaflowResourceStore.java?rev=291289&view=auto ============================================================================== --- jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/stores/JavaflowResourceStore.java (added) +++ jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/stores/JavaflowResourceStore.java Sat Sep 24 05:25:31 2005 @@ -0,0 +1,92 @@ +/* + * Copyright 1999-2004 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.commons.javaflow.stores; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Iterator; +import org.apache.bcel.Repository; +import org.apache.bcel.util.ClassLoaderRepository; +import org.apache.commons.javaflow.bytecode.transformation.ResourceTransformer; +import org.apache.commons.javaflow.bytecode.transformation.bcel.BcelClassTransformer; +import org.apache.commons.jci.stores.MemoryResourceStore; +import org.apache.commons.jci.stores.ResourceStore; +import org.apache.commons.jci.stores.TransactionalResourceStore; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * Due to the BCEL dependency handling all + * classes have to be store first and then + * be rewritten. Otherwise we could just + * delegate to the TransformingResourceStore + * + * @author tcurdt + */ +public final class JavaflowResourceStore extends TransactionalResourceStore { + + private final static Log log = LogFactory.getLog(JavaflowResourceStore.class); + + private final TransformingResourceStore tstore; + private final Collection changes = new ArrayList(); + + public JavaflowResourceStore() { + this(new MemoryResourceStore()); + } + + public JavaflowResourceStore(final ResourceStore pStore) { + super(pStore); + tstore = new TransformingResourceStore( + pStore, + new ResourceTransformer[] { new BcelClassTransformer() } + ); + Repository.setRepository(new ClassLoaderRepository(this.getClass().getClassLoader())); + } + + public void write(final String pResourceName, final byte[] pResourceData) { + super.write(pResourceName, pResourceData); + changes.add(pResourceName); + } + + public void onStart() { + changes.clear(); + } + + public void onStop() { + if (changes.size() > 0) { + log.debug("rewriting" + changes); + + for (Iterator it = changes.iterator(); it.hasNext();) { + final String clazzName = (String) it.next(); + try { + final byte[] oldClazz = super.read(clazzName); + + if (oldClazz == null) { + throw new ClassNotFoundException("could not find " + clazzName); + } + + tstore.write(clazzName, oldClazz); + + log.debug("rewrote " + clazzName); + } catch (ClassNotFoundException e) { + log.error("", e); + } + } + + changes.clear(); + } + } +} Copied: jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/stores/TransformingResourceStore.java (from r290097, jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/bytecode/transformation/TransformingResourceStore.java) URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/stores/TransformingResourceStore.java?p2=jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/stores/TransformingResourceStore.java&p1=jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/bytecode/transformation/TransformingResourceStore.java&r1=290097&r2=291289&rev=291289&view=diff ============================================================================== --- jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/bytecode/transformation/TransformingResourceStore.java (original) +++ jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/stores/TransformingResourceStore.java Sat Sep 24 05:25:31 2005 @@ -13,8 +13,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.commons.javaflow.bytecode.transformation; +package org.apache.commons.javaflow.stores; +import org.apache.commons.javaflow.bytecode.transformation.ResourceTransformer; import org.apache.commons.jci.stores.ResourceStore; @@ -42,14 +43,14 @@ byte[] out = resourceData; // FIXME: make the matching configurable - if (resourceName.endsWith(".class")) { + //if (resourceName.endsWith(".class")) { byte[] in = resourceData; for(int i=0; i<transformers.length; i++) { out = transformers[i].transform(in); in = out; } - } + //} store.write(resourceName, out); } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]