Copyright (c) 2000, 2017 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
/*******************************************************************************
* Copyright (c) 2000, 2017 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.team.internal.core.subscribers;
import java.io.IOException;
import java.io.InputStream;
import org.eclipse.core.runtime.IProgressMonitor;
This is an internal class that is used by the ContentComparisonSyncInfoFilter
and ContentComparisonDiffFilter
to compare the contents of the local and remote resources. /**
* This is an internal class that is used by the
* {@link org.eclipse.team.core.synchronize.SyncInfoFilter.ContentComparisonSyncInfoFilter}
* and {@link ContentComparisonDiffFilter} to compare the contents of the local
* and remote resources.
*/
public class ContentComparator extends AbstractContentComparator{
public ContentComparator(boolean ignoreWhitespace) {
super(ignoreWhitespace);
}
Returns true
if both input streams byte contents is
identical.
Params: - is1 –
first input to contents compare
- is2 –
second input to contents compare
Returns: true
if content is equal
/**
* Returns <code>true</code> if both input streams byte contents is
* identical.
*
* @param is1
* first input to contents compare
* @param is2
* second input to contents compare
* @return <code>true</code> if content is equal
*/
@Override
protected boolean contentsEqual(IProgressMonitor monitor, InputStream is1,
InputStream is2, boolean ignoreWhitespace) {
try {
if (is1 == is2)
return true;
// no byte contents
if (is1 == null && is2 == null)
return true;
// only one has contents
if (is1 == null || is2 == null)
return false;
while (true) {
int c1 = is1.read();
while (shouldIgnoreWhitespace() && isWhitespace(c1))
c1 = is1.read();
int c2 = is2.read();
while (shouldIgnoreWhitespace() && isWhitespace(c2))
c2 = is2.read();
if (c1 == -1 && c2 == -1)
return true;
if (c1 != c2)
break;
}
} catch (IOException ex) {
} finally {
try {
try {
if (is1 != null) {
is1.close();
}
} finally {
if (is2 != null) {
is2.close();
}
}
} catch (IOException e) {
// Ignore
}
}
return false;
}
private boolean isWhitespace(int c) {
if (c == -1)
return false;
return Character.isWhitespace((char) c);
}
}