/**
* Copyright 2007 Google Inc.
*
* 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 com.tonicsystems.jarjar.transform.jar;
import com.tonicsystems.jarjar.transform.asm.PackageRemapper;
import com.tonicsystems.jarjar.transform.config.ClassDelete;
import com.tonicsystems.jarjar.transform.config.ClassKeepTransitive;
import com.tonicsystems.jarjar.transform.config.ClassRename;
import com.tonicsystems.jarjar.transform.asm.RemappingClassTransformer;
import com.tonicsystems.jarjar.transform.config.ClassKeep;
import com.tonicsystems.jarjar.transform.config.RulesFileParser;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class DefaultJarProcessor extends JarProcessorChain implements RulesFileParser.Output {
private static final Logger LOG = LoggerFactory.getLogger(DefaultJarProcessor.class);
// private final Map<String, String> renames = new HashMap<String, String>();
private final ManifestFilterJarProcessor manifestFilterJarProcessor = new ManifestFilterJarProcessor();
private final ClassFilterJarProcessor classFilterJarProcessor = new ClassFilterJarProcessor();
private final ClassClosureJarProcessor classClosureFilterJarProcessor = new ClassClosureJarProcessor();
private final PackageRemapper packageRemapper = new PackageRemapper();
private final RemappingClassTransformer remappingClassTransformer = new RemappingClassTransformer(packageRemapper);
private final ResourceRenamerJarProcessor resourceRenamerJarProcessor = new ResourceRenamerJarProcessor(packageRemapper);
public DefaultJarProcessor() {
add(new DirectoryFilterJarProcessor());
add(manifestFilterJarProcessor);
add(classFilterJarProcessor);
add(classClosureFilterJarProcessor);
add(new ClassTransformerJarProcessor(remappingClassTransformer));
add(resourceRenamerJarProcessor);
}
@Override
public void addClassDelete(ClassDelete classDelete) {
classFilterJarProcessor.addClassDelete(classDelete);
}
@Override
public void addClassRename(ClassRename classRename) {
packageRemapper.addRule(classRename);
}
@Override
public void addClassKeep(ClassKeep classKeep) {
classFilterJarProcessor.addClassKeep(classKeep);
}
@Override
public void addClassKeepTransitive(ClassKeepTransitive classKeepTransitive) {
classClosureFilterJarProcessor.addKeep(classKeepTransitive);
}
public void setSkipManifest(boolean value) {
manifestFilterJarProcessor.setEnabled(value);
}
}