/* * Copyright 2008 Whohoo 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.googlecode.mycontainer.util.cpscanner; import java.net.URL; public abstract class ClassScannerListener implements ScannerListener { public void resourceFound(URL base, URL resource) { try { if (isClass(resource)) { String str = resource.toString(); String baseStr = base.toString(); StringBuilder builder = new StringBuilder(str); int idx = builder.indexOf("!"); if (idx < 0) { idx = baseStr.length(); } else { idx += 2; } builder.delete(0, idx); builder.delete(builder.length() - 6, builder.length()); str = builder.toString().replaceAll("/", "."); Class<?> clazz = Class.forName(str); classFound(base, clazz); } } catch (ClassNotFoundException e) { throw new RuntimeException(e); } } public boolean isClass(URL url) { return url.toString().endsWith(".class"); } public abstract void classFound(URL base, Class<?> clazz); }