Files
sdk/compiler/java/com/google/dart/runner/BundleLibrarySource.java
T
dgrove@google.com 977977e6ea Initial checkin.
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@9 260f80e4-7a28-3924-810f-c04153c831b5
2011-10-05 05:00:35 +00:00

63 lines
1.8 KiB
Java

// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
package com.google.dart.runner;
import com.google.dart.compiler.DartSource;
import com.google.dart.compiler.LibrarySource;
import com.google.dart.compiler.UrlDartSource;
import com.google.dart.compiler.UrlSource;
import java.net.URISyntaxException;
class BundleLibrarySource extends UrlSource implements LibrarySource {
private final class BundleDartSource extends UrlDartSource {
private BundleDartSource(ClassLoader loader, String basePath, String filename)
throws URISyntaxException {
super(loader.getResource(basePath + filename).toURI(), filename, BundleLibrarySource.this);
}
@Override
public String getName() {
return basePath + getRelativePath();
}
}
private final ClassLoader loader;
private final String basePath;
private final String filename;
public BundleLibrarySource(ClassLoader loader, String basePath, String filename)
throws URISyntaxException {
super(loader.getResource(basePath + filename).toURI());
this.loader = loader;
this.basePath = basePath;
this.filename = filename;
}
@Override
public LibrarySource getImportFor(String filename) {
try {
return new BundleLibrarySource(loader, basePath, filename);
} catch (URISyntaxException e) {
throw new AssertionError();
}
}
@Override
public DartSource getSourceFor(final String relPath) {
try {
return new BundleDartSource(loader, basePath, relPath);
} catch (URISyntaxException e) {
throw new AssertionError(e);
}
}
@Override
public String getName() {
return basePath + filename;
}
}