123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- /* *******************************************************************
- * Copyright (c) 2005-2010 Contributors
- * All rights reserved.
- * This program and the accompanying materials are made available
- * under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Andy Clement (IBM, SpringSource)
- * ******************************************************************/
-
- package org.aspectj.weaver;
-
- import java.io.DataInputStream;
- import java.io.IOException;
- import java.io.InputStream;
-
- import org.aspectj.weaver.AjAttribute.WeaverVersionInfo;
-
- /**
- * Lightweight subclass of DataInputStream that knows what version of the weaver was used to construct the data in it. The input
- * stream has a constant pool reader attached which enables it to decode constant pool references found within the data being read.
- *
- * @author Andy Clement
- */
- public class VersionedDataInputStream extends DataInputStream {
-
- private WeaverVersionInfo version = new WeaverVersionInfo();// assume we are the latest unless something tells us otherwise...
-
- private ConstantPoolReader constantPoolReader;
-
- public VersionedDataInputStream(InputStream is, ConstantPoolReader constantPoolReader) {
- super(is);
- this.constantPoolReader = constantPoolReader;
- }
-
- public int getMajorVersion() {
- return version.getMajorVersion();
- }
-
- public int getMinorVersion() {
- return version.getMinorVersion();
- }
-
- public long getBuildstamp() {
- return version.getBuildstamp();
- }
-
- public void setVersion(WeaverVersionInfo version) {
- this.version = version;
- }
-
- public String readUtf8(int cpIndex) {
- if (constantPoolReader == null) {
- throw new IllegalStateException();
- }
- if (cpIndex < 0) {
- throw new IllegalStateException(cpIndex + "");
- }
- return constantPoolReader.readUtf8(cpIndex);
- }
-
- public boolean canDecompress() {
- return constantPoolReader != null;
- }
-
- public boolean isAtLeast169() {
- return getMajorVersion() >= AjAttribute.WeaverVersionInfo.WEAVER_VERSION_AJ169;
- }
-
- public String readPath() throws IOException {
- return readUtf8(readShort());
- }
-
- public String readSignature() throws IOException {
- return readUtf8(readShort());
- }
-
- public UnresolvedType readSignatureAsUnresolvedType() throws IOException {
- return UnresolvedType.forSignature(readUtf8(readShort()));
- }
-
- public String toString() {
- return "VersionedDataInputStream: version=" + version + " constantPoolReader?" + (constantPoolReader != null);
- }
- }
|