Classes in this File | Line Coverage | Branch Coverage | Complexity | ||||
TransformingResourceStore |
|
| 1.2;1.2 |
1 | /* | |
2 | * Licensed to the Apache Software Foundation (ASF) under one or more | |
3 | * contributor license agreements. See the NOTICE file distributed with | |
4 | * this work for additional information regarding copyright ownership. | |
5 | * The ASF licenses this file to You under the Apache License, Version 2.0 | |
6 | * (the "License"); you may not use this file except in compliance with | |
7 | * the License. You may obtain a copy of the License at | |
8 | * | |
9 | * http://www.apache.org/licenses/LICENSE-2.0 | |
10 | * | |
11 | * Unless required by applicable law or agreed to in writing, software | |
12 | * distributed under the License is distributed on an "AS IS" BASIS, | |
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
14 | * See the License for the specific language governing permissions and | |
15 | * limitations under the License. | |
16 | */ | |
17 | package org.apache.commons.javaflow.stores; | |
18 | ||
19 | import org.apache.commons.javaflow.bytecode.transformation.ResourceTransformer; | |
20 | import org.apache.commons.jci.stores.ResourceStore; | |
21 | ||
22 | ||
23 | /** | |
24 | * @author tcurdt | |
25 | * | |
26 | */ | |
27 | public final class TransformingResourceStore implements ResourceStore { | |
28 | ||
29 | private final ResourceStore store; | |
30 | private final ResourceTransformer[] transformers; | |
31 | ||
32 | 0 | public TransformingResourceStore( final ResourceStore pStore, final ResourceTransformer[] pTransformers) { |
33 | 0 | store = pStore; |
34 | 0 | transformers = pTransformers; |
35 | 0 | } |
36 | ||
37 | public byte[] read(String resourceName) { | |
38 | 0 | return store.read(resourceName); |
39 | } | |
40 | public void remove(String resourceName) { | |
41 | 0 | store.remove(resourceName); |
42 | 0 | } |
43 | public void write(String resourceName, byte[] resourceData) { | |
44 | 0 | byte[] out = resourceData; |
45 | ||
46 | // FIXME: make the matching configurable | |
47 | //if (resourceName.endsWith(".class")) { | |
48 | 0 | byte[] in = resourceData; |
49 | ||
50 | 0 | for(int i=0; i<transformers.length; i++) { |
51 | 0 | out = transformers[i].transform(in); |
52 | 0 | in = out; |
53 | } | |
54 | //} | |
55 | ||
56 | 0 | store.write(resourceName, out); |
57 | 0 | } |
58 | ||
59 | public String toString() { | |
60 | 0 | return store.toString(); |
61 | } | |
62 | } |