blob: e67fcb0fd4b2066490ffc332e839ccfaa8339eb1 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010, 2022 IBM Corporation and others.
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jst.jsf.test.util.mock.java;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.eclipse.jdt.core.IAccessRule;
import org.eclipse.jdt.core.IClasspathAttribute;
import org.eclipse.jdt.core.IClasspathEntry;
public class MockClasspathEntry implements IClasspathEntry
{
private final int _entryKind;
private final IPath _path;
public MockClasspathEntry(final int entryKind, final IPath path)
{
_entryKind = entryKind;
_path = path;
switch (entryKind)
{
case IClasspathEntry.CPE_CONTAINER:
case IClasspathEntry.CPE_LIBRARY:
case IClasspathEntry.CPE_PROJECT:
case IClasspathEntry.CPE_SOURCE:
case IClasspathEntry.CPE_VARIABLE:
// do nothing
break;
default:
throw new IllegalArgumentException("entryKind must be valid: "
+ _entryKind);
}
}
public boolean combineAccessRules()
{
throw new UnsupportedOperationException();
}
public IAccessRule[] getAccessRules()
{
throw new UnsupportedOperationException();
}
public int getContentKind()
{
throw new UnsupportedOperationException();
}
public int getEntryKind()
{
return _entryKind;
}
public IPath[] getExclusionPatterns()
{
throw new UnsupportedOperationException();
}
public IClasspathAttribute[] getExtraAttributes()
{
throw new UnsupportedOperationException();
}
public IPath[] getInclusionPatterns()
{
throw new UnsupportedOperationException();
}
public IPath getOutputLocation()
{
throw new UnsupportedOperationException();
}
public IPath getPath()
{
return _path;
}
public IPath getSourceAttachmentPath()
{
throw new UnsupportedOperationException();
}
public IPath getSourceAttachmentRootPath()
{
throw new UnsupportedOperationException();
}
public IClasspathEntry getReferencingEntry()
{
throw new UnsupportedOperationException();
}
public boolean isExported()
{
throw new UnsupportedOperationException();
}
public IClasspathEntry getResolvedEntry()
{
throw new UnsupportedOperationException();
}
@Override
public String toString()
{
final StringBuffer buffer = new StringBuffer();
buffer.append(getPath());
buffer.append('[');
switch (getEntryKind())
{
case IClasspathEntry.CPE_LIBRARY:
buffer.append("CPE_LIBRARY"); //$NON-NLS-1$
break;
case IClasspathEntry.CPE_PROJECT:
buffer.append("CPE_PROJECT"); //$NON-NLS-1$
break;
case IClasspathEntry.CPE_SOURCE:
buffer.append("CPE_SOURCE"); //$NON-NLS-1$
break;
case IClasspathEntry.CPE_VARIABLE:
buffer.append("CPE_VARIABLE"); //$NON-NLS-1$
break;
case IClasspathEntry.CPE_CONTAINER:
buffer.append("CPE_CONTAINER"); //$NON-NLS-1$
break;
}
buffer.append("]"); //$NON-NLS-1$
// switch (getContentKind())
// {
// case IPackageFragmentRoot.K_BINARY:
// buffer.append("K_BINARY"); //$NON-NLS-1$
// break;
// case IPackageFragmentRoot.K_SOURCE:
// buffer.append("K_SOURCE"); //$NON-NLS-1$
// break;
// case ClasspathEntry.K_OUTPUT:
// buffer.append("K_OUTPUT"); //$NON-NLS-1$
// break;
// }
// buffer.append(']');
// if (getSourceAttachmentPath() != null)
// {
// buffer.append("[sourcePath:"); //$NON-NLS-1$
// buffer.append(getSourceAttachmentPath());
// buffer.append(']');
// }
// if (getSourceAttachmentRootPath() != null)
// {
// buffer.append("[rootPath:"); //$NON-NLS-1$
// buffer.append(getSourceAttachmentRootPath());
// buffer.append(']');
// }
// buffer.append("[isExported:"); //$NON-NLS-1$
// buffer.append(this.isExported);
// buffer.append(']');
// IPath[] patterns = this.inclusionPatterns;
// int length;
// if ((length = patterns == null ? 0 : patterns.length) > 0)
// {
// buffer.append("[including:"); //$NON-NLS-1$
// for (int i = 0; i < length; i++)
// {
// buffer.append(patterns[i]);
// if (i != length - 1)
// {
// buffer.append('|');
// }
// }
// buffer.append(']');
// }
// patterns = this.exclusionPatterns;
// if ((length = patterns == null ? 0 : patterns.length) > 0)
// {
// buffer.append("[excluding:"); //$NON-NLS-1$
// for (int i = 0; i < length; i++)
// {
// buffer.append(patterns[i]);
// if (i != length - 1)
// {
// buffer.append('|');
// }
// }
// buffer.append(']');
// }
// if (this.accessRuleSet != null)
// {
// buffer.append('[');
// buffer.append(this.accessRuleSet.toString(false/* on one line */));
// buffer.append(']');
// }
// if (this.entryKind == CPE_PROJECT)
// {
// buffer.append("[combine access rules:"); //$NON-NLS-1$
// buffer.append(this.combineAccessRules);
// buffer.append(']');
// }
// if (getOutputLocation() != null)
// {
// buffer.append("[output:"); //$NON-NLS-1$
// buffer.append(getOutputLocation());
// buffer.append(']');
// }
// if ((length = this.extraAttributes == null ? 0
// : this.extraAttributes.length) > 0)
// {
// buffer.append("[attributes:"); //$NON-NLS-1$
// for (int i = 0; i < length; i++)
// {
// buffer.append(this.extraAttributes[i]);
// if (i != length - 1)
// {
// buffer.append(',');
// }
// }
// buffer.append(']');
// }
return buffer.toString();
}
/**
* Returns true if the given object is a classpath entry with equivalent
* attributes.
*/
@Override
public boolean equals(final Object object)
{
if (this == object)
{
return true;
}
if (object instanceof MockClasspathEntry)
{
final MockClasspathEntry otherEntry = (MockClasspathEntry) object;
// if (this.contentKind != otherEntry.getContentKind())
// {
// return false;
// }
if (this._entryKind != otherEntry.getEntryKind())
{
return false;
}
// if (this.isExported != otherEntry.isExported())
// {
// return false;
// }
if (!this._path.equals(otherEntry.getPath()))
{
return false;
}
// IPath otherPath = otherEntry.getSourceAttachmentPath();
// if (this.sourceAttachmentPath == null) {
// if (otherPath != null)
// {
// return false;
// }
// } else {
// if (!this.sourceAttachmentPath.equals(otherPath))
// {
// return false;
// }
// }
//
// otherPath = otherEntry.getSourceAttachmentRootPath();
// if (this.sourceAttachmentRootPath == null) {
// if (otherPath != null)
// {
// return false;
// }
// } else {
// if (!this.sourceAttachmentRootPath.equals(otherPath))
// {
// return false;
// }
// }
//
// if (!equalPatterns(this.inclusionPatterns,
// otherEntry.getInclusionPatterns()))
// {
// return false;
// }
// if (!equalPatterns(this.exclusionPatterns,
// otherEntry.getExclusionPatterns()))
// {
// return false;
// }
// final AccessRuleSet otherRuleSet = otherEntry.getAccessRuleSet();
// if (getAccessRuleSet() != null) {
// if (!getAccessRuleSet().equals(otherRuleSet))
// {
// return false;
// }
// } else if (otherRuleSet != null)
// {
// return false;
// }
// if (this.combineAccessRules != otherEntry.combineAccessRules())
// {
// return false;
// }
// otherPath = otherEntry.getOutputLocation();
// if (this.specificOutputLocation == null) {
// if (otherPath != null)
// {
// return false;
// }
// } else {
// if (!this.specificOutputLocation.equals(otherPath))
// {
// return false;
// }
// }
// if (!equalAttributes(this.extraAttributes,
// otherEntry.getExtraAttributes()))
// {
// return false;
// }
return true;
} else
{
return false;
}
}
@Override
public IPath getExternalAnnotationPath(IProject project, boolean resolve) {
return Path.ROOT;
}
@Override
public int hashCode()
{
return _path.hashCode();
}
}