| /* |
| * Copyright 2008 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.google.gwt.dev.resource.impl; |
| |
| import com.google.gwt.core.ext.TreeLogger; |
| |
| import java.util.Map; |
| |
| /** |
| * A location that acts as a starting point for finding resources |
| * {@link ResourceOracleImpl}. |
| */ |
| public abstract class ClassPathEntry { |
| |
| @Override |
| public final boolean equals(Object other) { |
| if (other instanceof ClassPathEntry) { |
| ClassPathEntry otherCpe = (ClassPathEntry) other; |
| boolean ret = getLocation().equals(otherCpe.getLocation()); |
| // The concrete class should not differ if the location is equal |
| assert (ret ? getClass() == otherCpe.getClass() : true); |
| return ret; |
| } else { |
| return false; |
| } |
| } |
| |
| /** |
| * Finds every resource at abstract path P within this classpath such that P |
| * begins with a prefix X from the path prefix set and P is allowed by the |
| * filter associated with X. |
| * |
| * @return a map with key as an allowed resource and value as the PathPrefix |
| * that allows the resource; note no guarantees are made regarding the |
| * identities of the returned resource objects, and the same object |
| * may be returned across multiple calls |
| */ |
| public abstract Map<AbstractResource, ResourceResolution> findApplicableResources( |
| TreeLogger logger, PathPrefixSet pathPrefixSet); |
| |
| /** |
| * Gets a URL string that describes this class path entry. |
| * |
| * ClassPathEntries with the same location string are considered equal. |
| */ |
| public abstract String getLocation(); |
| |
| @Override |
| public final int hashCode() { |
| return getLocation().hashCode(); |
| } |
| |
| @Override |
| public String toString() { |
| return getClass().getSimpleName() + ": " + getLocation(); |
| } |
| } |