Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 260913 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/equinox/internal/provisional/p2/metadata/TouchpointType.java (-55 lines)
Removed Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2007, 2008 IBM Corporation and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 *
8
 * Contributors:
9
 *     IBM Corporation - initial API and implementation
10
 *     EclipseSource - ongoing Development
11
 *******************************************************************************/
12
package org.eclipse.equinox.internal.provisional.p2.metadata;
13
14
import org.eclipse.equinox.internal.provisional.p2.core.Version;
15
16
/**
17
 * Identifies a particular touchpoint. A touchpoint is identified by an id 
18
 * and a version.
19
 */
20
public class TouchpointType implements ITouchpointType {
21
	private String id;//never null
22
	private Version version;//never null
23
24
	TouchpointType(String id, Version aVersion) {
25
		this.id = id;
26
		this.version = aVersion;
27
	}
28
29
	public boolean equals(Object obj) {
30
		if (this == obj)
31
			return true;
32
		if (super.equals(obj))
33
			return true;
34
		if (obj == null || !(obj instanceof ITouchpointType))
35
			return false;
36
		ITouchpointType other = (ITouchpointType) obj;
37
		return id.equals(other.getId()) && version.equals(other.getVersion());
38
	}
39
40
	public String getId() {
41
		return id;
42
	}
43
44
	public Version getVersion() {
45
		return version;
46
	}
47
48
	public int hashCode() {
49
		return 31 * id.hashCode() + version.hashCode();
50
	}
51
52
	public String toString() {
53
		return "Touchpoint: " + id + ' ' + getVersion(); //$NON-NLS-1$
54
	}
55
}
(-)src/org/eclipse/equinox/internal/provisional/p2/metadata/RequiredCapability.java (-182 lines)
Removed Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2007, 2008 IBM Corporation and others. All rights reserved. This
3
 * program and the accompanying materials are made available under the terms of
4
 * the Eclipse Public License v1.0 which accompanies this distribution, and is
5
 * available at http://www.eclipse.org/legal/epl-v10.html
6
 * 
7
 * Contributors: 
8
 *     IBM Corporation - initial API and implementation
9
 *     EclipseSource - ongoing development
10
 ******************************************************************************/
11
package org.eclipse.equinox.internal.provisional.p2.metadata;
12
13
import org.eclipse.core.runtime.Assert;
14
import org.eclipse.equinox.internal.provisional.p2.core.VersionRange;
15
16
/**
17
 * A required capability represents some external constraint on an {@link IInstallableUnit}.
18
 * Each capability represents something an {@link IInstallableUnit} needs that
19
 * it expects to be provided by another {@link IInstallableUnit}. Capabilities are
20
 * entirely generic, and are intended to be capable of representing anything that
21
 * an {@link IInstallableUnit} may need either at install time, or at runtime.
22
 * <p>
23
 * Capabilities are segmented into namespaces.  Anyone can introduce new 
24
 * capability namespaces. Some well-known namespaces are introduced directly
25
 * by the provisioning framework.
26
 * 
27
 * @see IInstallableUnit#NAMESPACE_IU_ID
28
 */
29
public class RequiredCapability implements IRequiredCapability {
30
	private static final String[] NO_SELECTORS = new String[0];
31
32
	private String filter;
33
	private final boolean multiple;
34
	private final String name;//never null
35
	private final String namespace;//never null
36
	private boolean optional;
37
	private boolean greedy = true;
38
	private final VersionRange range;//never null
39
	private String[] selectors = NO_SELECTORS;//never null
40
41
	/**
42
	 * TODO replace booleans with int options flag.
43
	 */
44
	RequiredCapability(String namespace, String name, VersionRange range, String filter, boolean optional, boolean multiple) {
45
		Assert.isNotNull(namespace);
46
		Assert.isNotNull(name);
47
		this.namespace = namespace;
48
		this.name = name;
49
		this.range = range == null ? VersionRange.emptyRange : range;
50
		this.optional = optional;
51
		this.filter = filter;
52
		this.multiple = multiple;
53
	}
54
55
	RequiredCapability(String namespace, String name, VersionRange range, String filter, boolean optional, boolean multiple, boolean greedy) {
56
		this(namespace, name, range, filter, optional, multiple);
57
		this.greedy = greedy;
58
	}
59
60
	public boolean equals(Object obj) {
61
		if (this == obj)
62
			return true;
63
		if (obj == null)
64
			return false;
65
		if (!(obj instanceof IRequiredCapability))
66
			return false;
67
		final IRequiredCapability other = (IRequiredCapability) obj;
68
		if (filter == null) {
69
			if (other.getFilter() != null)
70
				return false;
71
		} else if (!filter.equals(other.getFilter()))
72
			return false;
73
		if (multiple != other.isMultiple())
74
			return false;
75
		if (!name.equals(other.getName()))
76
			return false;
77
		if (!namespace.equals(other.getNamespace()))
78
			return false;
79
		if (optional != other.isOptional())
80
			return false;
81
		if (!range.equals(other.getRange()))
82
			return false;
83
		return true;
84
	}
85
86
	public String getFilter() {
87
		return filter;
88
	}
89
90
	public String getName() {
91
		return name;
92
	}
93
94
	public String getNamespace() {
95
		return namespace;
96
	}
97
98
	/**
99
	 * Returns the range of versions that satisfy this required capability. Returns
100
	 * an empty version range ({@link VersionRange#emptyRange} if any version
101
	 * will satisfy the capability.
102
	 * @return the range of versions that satisfy this required capability.
103
	 */
104
	public VersionRange getRange() {
105
		return range;
106
	}
107
108
	/**
109
	 * Returns the properties to use for evaluating required capability filters 
110
	 * downstream from this capability. For example, if the selector "doc"
111
	 * is provided, then a downstream InstallableUnit with a required capability
112
	 * filtered with "doc=true" will be included.
113
	 */
114
	public String[] getSelectors() {
115
		return selectors;
116
	}
117
118
	public int hashCode() {
119
		final int prime = 31;
120
		int result = 1;
121
		result = prime * result + ((filter == null) ? 0 : filter.hashCode());
122
		result = prime * result + (multiple ? 1231 : 1237);
123
		result = prime * result + name.hashCode();
124
		result = prime * result + namespace.hashCode();
125
		result = prime * result + (optional ? 1231 : 1237);
126
		result = prime * result + range.hashCode();
127
		return result;
128
	}
129
130
	public boolean isMultiple() {
131
		return multiple;
132
	}
133
134
	public boolean isOptional() {
135
		return optional;
136
	}
137
138
	/**
139
	 * TODO This object shouldn't be mutable since it makes equality unstable, and
140
	 * introduces lifecycle issues (how are the changes persisted, etc)
141
	 */
142
	public void setFilter(String filter) {
143
		this.filter = filter;
144
	}
145
146
	/**
147
	 * TODO This object shouldn't be mutable since it makes equality unstable, and
148
	 * introduces lifecycle issues (how are the changes persisted, etc)
149
	 */
150
	public void setSelectors(String[] selectors) {
151
		this.selectors = selectors;
152
	}
153
154
	public boolean isGreedy() {
155
		return greedy;
156
	}
157
158
	public String toString() {
159
		StringBuffer result = new StringBuffer();
160
161
		if (IInstallableUnit.NAMESPACE_IU_ID.equals(getNamespace())) {
162
			//print nothing for an IU id dependency because this is the default (most common) case
163
			result.append(""); //$NON-NLS-1$
164
		} else if ("osgi.bundle".equals(getNamespace())) { //$NON-NLS-1$
165
			result.append("bundle"); //$NON-NLS-1$
166
		} else if ("java.package".equals(getNamespace())) { //$NON-NLS-1$
167
			result.append("package"); //$NON-NLS-1$
168
		} else {
169
			result.append(getNamespace());
170
		}
171
		if (result.length() > 0)
172
			result.append(' ');
173
		result.append(getName());
174
		result.append(' ');
175
		//for an exact version match, print a simpler expression
176
		if (range.getMinimum().equals(range.getMaximum()))
177
			result.append('[').append(range.getMinimum()).append(']');
178
		else
179
			result.append(range);
180
		return result.toString();
181
	}
182
}
(-)src/org/eclipse/equinox/internal/provisional/p2/metadata/ILicense.java (-1 / +1 lines)
Lines 40-46 Link Here
40
	 * version of the license where all whitespace has been reduced to one space.
40
	 * version of the license where all whitespace has been reduced to one space.
41
	 * 
41
	 * 
42
	 * Any SPI must maintain the same semantics as:
42
	 * Any SPI must maintain the same semantics as:
43
	 * <code>{@link org.eclipse.equinox.internal.provisional.p2.metadata.License#getDigest()}</code>
43
	 * <code>{@link org.eclipse.equinox.internal.p2.metadata.License#getDigest()}</code>
44
	 * @return the message digest as a <code>BigInteger</code>, never <code>null</code>
44
	 * @return the message digest as a <code>BigInteger</code>, never <code>null</code>
45
	 */
45
	 */
46
	public BigInteger getDigest();
46
	public BigInteger getDigest();
(-)src/org/eclipse/equinox/internal/provisional/p2/metadata/Copyright.java (-63 lines)
Removed Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2008 IBM Corporation and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 *
8
 * Contributors:
9
 *     IBM Corporation - initial API and implementation
10
 *******************************************************************************/
11
package org.eclipse.equinox.internal.provisional.p2.metadata;
12
13
import java.net.URI;
14
15
/**
16
 * The <code>Copyright</code> class represents a software copyright.  A copyright has 
17
 * required body text which may be the full text or a summary.  An optional location field can be specified
18
 * which links to full text.  
19
 */
20
public class Copyright implements ICopyright {
21
	/**
22
	 * The <code>body</code> contains the descriptive text for the copyright. This may
23
	 * be a summary for a copyright specified in a URL.
24
	 */
25
	private final String body;
26
27
	/**
28
	 * The <code>location</code> is the location of a document containing a copyright notice.
29
	 */
30
	private URI location;
31
32
	/**
33
	 * Creates a new copyright. The body must contain the full text of the copyright.
34
	 * 
35
	 * @param location the location of a document containing the copyright notice, or <code>null</code>
36
	 * @param body the copyright body, cannot be <code>null</code>
37
	 * @throws IllegalArgumentException when the <code>body</code> is <code>null</code>
38
	 */
39
	public Copyright(URI location, String body) {
40
		if (body == null)
41
			throw new IllegalArgumentException("body cannot be null"); //$NON-NLS-1$
42
		this.location = location;
43
		this.body = body;
44
	}
45
46
	/**
47
	 * Returns the location of a document containing the copyright notice.
48
	 * 
49
	 * @return The location of the copyright notice, or <code>null</code>
50
	 */
51
	public URI getLocation() {
52
		return location;
53
	}
54
55
	/**
56
	 * Returns the license body.
57
	 * 
58
	 * @return the license body, never <code>null</code>
59
	 */
60
	public String getBody() {
61
		return body;
62
	}
63
}
(-)src/org/eclipse/equinox/internal/provisional/p2/metadata/RequirementChange.java (-115 lines)
Removed Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2007, 2008 IBM Corporation and others. All rights reserved. This
3
 * program and the accompanying materials are made available under the terms of
4
 * the Eclipse Public License v1.0 which accompanies this distribution, and is
5
 * available at http://www.eclipse.org/legal/epl-v10.html
6
 * 
7
 * Contributors: IBM Corporation - initial API and implementation
8
 ******************************************************************************/
9
package org.eclipse.equinox.internal.provisional.p2.metadata;
10
11
import org.eclipse.equinox.internal.provisional.p2.core.Version;
12
import org.eclipse.equinox.internal.provisional.p2.core.VersionRange;
13
14
public class RequirementChange implements IRequirementChange {
15
	private IRequiredCapability applyOn;
16
	private IRequiredCapability newValue;
17
18
	public RequirementChange(IRequiredCapability applyOn2, IRequiredCapability newValue2) {
19
		if (applyOn2 == null && newValue2 == null)
20
			throw new IllegalArgumentException();
21
		this.applyOn = applyOn2;
22
		this.newValue = newValue2;
23
	}
24
25
	public IRequiredCapability applyOn() {
26
		return applyOn;
27
	}
28
29
	public IRequiredCapability newValue() {
30
		return newValue;
31
	}
32
33
	public boolean matches(IRequiredCapability toMatch) {
34
		if (!toMatch.getNamespace().equals(applyOn.getNamespace()))
35
			return false;
36
		if (!toMatch.getName().equals(applyOn.getName()))
37
			return false;
38
		if (toMatch.getRange().equals(applyOn.getRange()))
39
			return true;
40
41
		return intersect(toMatch.getRange(), applyOn.getRange()) == null ? false : true;
42
	}
43
44
	private VersionRange intersect(VersionRange r1, VersionRange r2) {
45
		Version resultMin = null;
46
		boolean resultMinIncluded = false;
47
		Version resultMax = null;
48
		boolean resultMaxIncluded = false;
49
50
		int minCompare = r1.getMinimum().compareTo(r2.getMinimum());
51
		if (minCompare < 0) {
52
			resultMin = r2.getMinimum();
53
			resultMinIncluded = r2.getIncludeMinimum();
54
		} else if (minCompare > 0) {
55
			resultMin = r1.getMinimum();
56
			resultMinIncluded = r1.getIncludeMinimum();
57
		} else if (minCompare == 0) {
58
			resultMin = r1.getMinimum();
59
			resultMinIncluded = r1.getIncludeMinimum() && r2.getIncludeMinimum();
60
		}
61
62
		int maxCompare = r1.getMaximum().compareTo(r2.getMaximum());
63
		if (maxCompare > 0) {
64
			resultMax = r2.getMaximum();
65
			resultMaxIncluded = r2.getIncludeMaximum();
66
		} else if (maxCompare < 0) {
67
			resultMax = r1.getMaximum();
68
			resultMaxIncluded = r1.getIncludeMaximum();
69
		} else if (maxCompare == 0) {
70
			resultMax = r1.getMaximum();
71
			resultMaxIncluded = r1.getIncludeMaximum() && r2.getIncludeMaximum();
72
		}
73
74
		int resultRangeComparison = resultMin.compareTo(resultMax);
75
		if (resultRangeComparison < 0)
76
			return new VersionRange(resultMin, resultMinIncluded, resultMax, resultMaxIncluded);
77
		else if (resultRangeComparison == 0 && resultMinIncluded == resultMaxIncluded)
78
			return new VersionRange(resultMin, resultMinIncluded, resultMax, resultMaxIncluded);
79
		else
80
			return null;
81
	}
82
83
	public int hashCode() {
84
		final int prime = 31;
85
		int result = 1;
86
		result = prime * result + ((applyOn == null) ? 0 : applyOn.hashCode());
87
		result = prime * result + ((newValue == null) ? 0 : newValue.hashCode());
88
		return result;
89
	}
90
91
	public boolean equals(Object obj) {
92
		if (this == obj)
93
			return true;
94
		if (obj == null)
95
			return false;
96
		if (!(obj instanceof IRequirementChange))
97
			return false;
98
		final IRequirementChange other = (IRequirementChange) obj;
99
		if (applyOn == null) {
100
			if (other.applyOn() != null)
101
				return false;
102
		} else if (!applyOn.equals(other.applyOn()))
103
			return false;
104
		if (newValue == null) {
105
			if (other.newValue() != null)
106
				return false;
107
		} else if (!newValue.equals(other.newValue()))
108
			return false;
109
		return true;
110
	}
111
112
	public String toString() {
113
		return applyOn + " --> " + newValue; //$NON-NLS-1$
114
	}
115
}
(-)src/org/eclipse/equinox/internal/provisional/p2/metadata/License.java (-145 lines)
Removed Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2008 Genuitec, LLC and others. All rights reserved. This
3
 * program and the accompanying materials are made available under the terms of
4
 * the Eclipse Public License v1.0 which accompanies this distribution, and is
5
 * available at http://www.eclipse.org/legal/epl-v10.html
6
 * 
7
 * Contributors: 
8
 * 		Genuitec, LLC - initial API and implementation
9
 * 		IBM Corporation - optional URL field instead of required name
10
 *      EclipseSource - ongoing development
11
 ******************************************************************************/
12
package org.eclipse.equinox.internal.provisional.p2.metadata;
13
14
import java.io.UnsupportedEncodingException;
15
import java.math.BigInteger;
16
import java.net.URI;
17
import java.security.MessageDigest;
18
import java.security.NoSuchAlgorithmException;
19
20
/**
21
 * The <code>License</code> class represents a software license.  A license has required body text
22
 * which may be the full text or an annotation.  An optional URL field can be specified
23
 * which links to full text.  Licenses can be easily compared using their digests.
24
 */
25
public class License implements ILicense {
26
	/**
27
	 * The <code>body</code> contains the descriptive text for the license. This may
28
	 * be a summary for a full license specified in a URL.
29
	 */
30
	private final String body;
31
32
	/**
33
	 * The <code>location</code> is the URL of the license.
34
	 */
35
	private URI location;
36
37
	/**
38
	 * The <code>digest</code> is the cached message digest of the normalized body
39
	 */
40
	private BigInteger digest;
41
42
	/**
43
	 * Creates a new license object which is identified by users using the <code>body</code> field.
44
	 * The body should contain either the full text of the license or an summary for a license
45
	 * fully specified in the given location.
46
	 * 
47
	 * @param location the location of a document containing the full license, or <code>null</code>
48
	 * @param body the license body, cannot be <code>null</code>
49
	 * @throws IllegalArgumentException when the <code>body</code> is <code>null</code>
50
	 */
51
	public License(URI location, String body) {
52
		if (body == null)
53
			throw new IllegalArgumentException("body cannot be null"); //$NON-NLS-1$
54
		this.body = body;
55
		this.location = location;
56
	}
57
58
	/**
59
	 * Returns the location of a document containing the full license.
60
	 * 
61
	 * @return the location of the license document, or <code>null</code>
62
	 */
63
	public URI getLocation() {
64
		return location;
65
	}
66
67
	/**
68
	 * Returns the license body.
69
	 * @return the license body, never <code>null</code>
70
	 */
71
	public String getBody() {
72
		return body;
73
	}
74
75
	/**
76
	 * Returns the message digest of the license body.  The digest is calculated on a normalized
77
	 * version of the license where all whitespace has been reduced to one space.
78
	 * @return the message digest as a <code>BigInteger</code>, never <code>null</code>
79
	 */
80
	public synchronized BigInteger getDigest() {
81
		if (digest == null)
82
			digest = calculateLicenseDigest();
83
		return digest;
84
	}
85
86
	/* (non-Javadoc)
87
	 * @see java.lang.Object#equals(java.lang.Object)
88
	 */
89
	public boolean equals(Object obj) {
90
		if (obj == this)
91
			return true;
92
		if (obj == null)
93
			return false;
94
		if (obj instanceof ILicense) {
95
			ILicense other = (ILicense) obj;
96
			if (other.getDigest().equals(getDigest()))
97
				return true;
98
		}
99
		return false;
100
	}
101
102
	/* (non-Javadoc)
103
	 * @see java.lang.Object#hashCode()
104
	 */
105
	public int hashCode() {
106
		return getDigest().hashCode();
107
	}
108
109
	private BigInteger calculateLicenseDigest() {
110
		String message = normalize(getBody());
111
		try {
112
			MessageDigest algorithm = MessageDigest.getInstance("MD5"); //$NON-NLS-1$
113
			algorithm.reset();
114
			algorithm.update(message.getBytes("UTF-8")); //$NON-NLS-1$
115
			byte[] digestBytes = algorithm.digest();
116
			return new BigInteger(1, digestBytes);
117
		} catch (NoSuchAlgorithmException e) {
118
			throw new RuntimeException(e);
119
		} catch (UnsupportedEncodingException e) {
120
			throw new RuntimeException(e);
121
		}
122
	}
123
124
	/**
125
	 * Replace all sequences of whitespace with a single whitespace character.
126
	 */
127
	private String normalize(String license) {
128
		String text = license.trim();
129
		StringBuffer result = new StringBuffer();
130
		int length = text.length();
131
		for (int i = 0; i < length; i++) {
132
			char c = text.charAt(i);
133
			boolean foundWhitespace = false;
134
			while (Character.isWhitespace(c) && i < length) {
135
				foundWhitespace = true;
136
				c = text.charAt(++i);
137
			}
138
			if (foundWhitespace)
139
				result.append(' ');
140
			if (i < length)
141
				result.append(c);
142
		}
143
		return result.toString();
144
	}
145
}
(-)src/org/eclipse/equinox/internal/provisional/p2/metadata/TouchpointInstruction.java (-161 lines)
Removed Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2008 IBM Corporation and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 *
8
 * Contributors:
9
 *     IBM Corporation - initial API and implementation
10
 *     EclipseSource - ongoing development
11
 *******************************************************************************/
12
package org.eclipse.equinox.internal.provisional.p2.metadata;
13
14
import java.util.Iterator;
15
import java.util.Map;
16
17
/**
18
 * A touchpoint instruction contains either a sequence of instruction statements
19
 * to be executed during a particular engine phase, or some simple string value
20
 * that is needed by a touchpoint to execute its phases.
21
 * <p>
22
 * The format of a touchpoint instruction statement sequence is as follows:
23
 * 
24
 *   statement-sequence :
25
 *     | statement ';'
26
 *      | statement-sequence statement
27
 *      ;
28
 *
29
 *Where a statement is of the format:
30
 *
31
 *  statement :
32
 *      | actionName '(' parameters ')'
33
 *      ;
34
 *
35
 *  parameters :
36
 *      | // empty
37
 *      | parameter
38
 *      | parameters ',' parameter
39
 *      ;
40
 *
41
 *   parameter : 
42
 *      | paramName ':' paramValue
43
 *      ;
44
 *
45
 * actionName, paramName, paramValue :
46
 *      | String 
47
 *      ;
48
 *
49
 * @noextend This class is not intended to be subclassed by clients.
50
 * @see MetadataFactory#createTouchpointInstruction(String, String)
51
 */
52
public class TouchpointInstruction implements ITouchpointInstruction {
53
54
	private final String body;
55
	private final String importAttribute;
56
57
	/**
58
	 * Encodes an action statement in string form. This method will
59
	 * take care of escaping any illegal characters in function parameter values.
60
	 * 
61
	 * @param actionName The name of the action.
62
	 * @param parameters The function's parameters. This is a Map<String,String>
63
	 * where the keys are parameter names, and the values are parameter values
64
	 * @return An encoded touchpoint instruction statement
65
	 */
66
	public static String encodeAction(String actionName, Map parameters) {
67
		StringBuffer result = new StringBuffer(actionName);
68
		result.append('(');
69
		for (Iterator it = parameters.entrySet().iterator(); it.hasNext();) {
70
			Map.Entry entry = (Map.Entry) it.next();
71
			result.append(entry.getKey());
72
			result.append(':');
73
			appendEncoded(result, (String) entry.getValue());
74
			if (it.hasNext())
75
				result.append(',');
76
		}
77
		result.append(')').append(';');
78
		return result.toString();
79
	}
80
81
	/**
82
	 * Append the given value to the given buffer, encoding any illegal characters
83
	 * with appropriate escape sequences.
84
	 */
85
	private static void appendEncoded(StringBuffer buf, String value) {
86
		char[] chars = value.toCharArray();
87
		for (int i = 0; i < chars.length; i++) {
88
			switch (chars[i]) {
89
				case '$' :
90
				case ',' :
91
				case ':' :
92
				case ';' :
93
				case '{' :
94
				case '}' :
95
					buf.append("${#").append(Integer.toString(chars[i])).append('}'); //$NON-NLS-1$
96
					break;
97
				default :
98
					buf.append(chars[i]);
99
			}
100
		}
101
	}
102
103
	/**
104
	 * Clients must use the factory method on {@link MetadataFactory}.
105
	 */
106
	TouchpointInstruction(String body, String importAttribute) {
107
		this.body = body;
108
		this.importAttribute = importAttribute;
109
	}
110
111
	public boolean equals(Object obj) {
112
		if (this == obj)
113
			return true;
114
		if (obj == null)
115
			return false;
116
		if (!(obj instanceof ITouchpointInstruction))
117
			return false;
118
		ITouchpointInstruction other = (ITouchpointInstruction) obj;
119
		if (body == null) {
120
			if (other.getBody() != null)
121
				return false;
122
		} else if (!body.equals(other.getBody()))
123
			return false;
124
		if (importAttribute == null) {
125
			if (other.getImportAttribute() != null)
126
				return false;
127
		} else if (!importAttribute.equals(other.getImportAttribute()))
128
			return false;
129
		return true;
130
	}
131
132
	/**
133
	 * Returns the body of this touchpoint instruction. The body is either a sequence
134
	 * of instruction statements, or a simple string value.
135
	 * 
136
	 * @return The body of this touchpoint instruction
137
	 */
138
	public String getBody() {
139
		return body;
140
	}
141
142
	//TODO What is this? Please doc
143
	public String getImportAttribute() {
144
		return importAttribute;
145
	}
146
147
	public int hashCode() {
148
		final int prime = 31;
149
		int result = 1;
150
		result = prime * result + ((body == null) ? 0 : body.hashCode());
151
		result = prime * result + ((importAttribute == null) ? 0 : importAttribute.hashCode());
152
		return result;
153
	}
154
155
	/**
156
	 * Returns a string representation of this instruction for debugging purposes only.
157
	 */
158
	public String toString() {
159
		return "Instruction[" + body + ',' + importAttribute + ']'; //$NON-NLS-1$
160
	}
161
}
(-)src/org/eclipse/equinox/internal/provisional/p2/metadata/ProvidedCapability.java (-79 lines)
Removed Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2007, 2009 IBM Corporation and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 *
8
 * Contributors:
9
 *     IBM Corporation - initial API and implementation
10
 *     EclipseSource - ongoing development
11
 *******************************************************************************/
12
package org.eclipse.equinox.internal.provisional.p2.metadata;
13
14
import org.eclipse.core.runtime.Assert;
15
import org.eclipse.equinox.internal.provisional.p2.core.Version;
16
17
/**
18
 * Describes a capability as exposed or required by an installable unit
19
 */
20
public class ProvidedCapability implements IProvidedCapability {
21
	private final String name;
22
	private final String namespace;
23
	private final Version version;
24
25
	ProvidedCapability(String namespace, String name, Version version) {
26
		Assert.isNotNull(namespace);
27
		Assert.isNotNull(name);
28
		this.namespace = namespace;
29
		this.name = name;
30
		this.version = version == null ? Version.emptyVersion : version;
31
	}
32
33
	public boolean equals(Object other) {
34
		if (other == null)
35
			return false;
36
		if (!(other instanceof IProvidedCapability))
37
			return false;
38
		IProvidedCapability otherCapability = (IProvidedCapability) other;
39
		if (!(namespace.equals(otherCapability.getNamespace())))
40
			return false;
41
		if (!(name.equals(otherCapability.getName())))
42
			return false;
43
		return version.equals(otherCapability.getVersion());
44
	}
45
46
	public String getName() {
47
		return name;
48
	}
49
50
	public String getNamespace() {
51
		return namespace;
52
	}
53
54
	public Version getVersion() {
55
		return version;
56
	}
57
58
	public int hashCode() {
59
		return namespace.hashCode() * name.hashCode() * version.hashCode();
60
	}
61
62
	/**
63
	 * Returns whether this provided capability satisfies the given required capability.
64
	 * @return <code>true</code> if this capability satisfies the given required
65
	 * capability, and <code>false</code> otherwise.
66
	 */
67
	public boolean satisfies(IRequiredCapability candidate) {
68
		if (getName() == null || !getName().equals(candidate.getName()))
69
			return false;
70
		if (getNamespace() == null || !getNamespace().equals(candidate.getNamespace()))
71
			return false;
72
		return candidate.getRange().isIncluded(version);
73
	}
74
75
	public String toString() {
76
		return namespace + '/' + name + '/' + version;
77
	}
78
79
}
(-)src/org/eclipse/equinox/internal/provisional/p2/metadata/TouchpointData.java (-90 lines)
Removed Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2007, 2008 IBM Corporation and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 *
8
 * Contributors:
9
 *     IBM Corporation - initial API and implementation
10
 *     EclipseSource - ongoing development
11
 *******************************************************************************/
12
package org.eclipse.equinox.internal.provisional.p2.metadata;
13
14
import java.util.*;
15
import java.util.Map.Entry;
16
17
/**
18
 * Touchpoint data instances contain the additional information needed by a touchpoint
19
 * to execute each engine phase it participates in. This includes the sequence of
20
 * instruction statements to be executed during each phase, and any additional
21
 * supporting data needed to perform the phase.
22
 *
23
 * @noextend This class is not intended to be subclassed by clients.
24
 * @see MetadataFactory#createTouchpointData(Map)
25
 */
26
public class TouchpointData implements ITouchpointData {
27
28
	/**
29
	 * Map of (String->TouchpointInstruction). The set
30
	 * of keys supported is up to the touchpoint that will process these
31
	 * instructions. This map is never null.
32
	 */
33
	private Map instructions;
34
35
	public int hashCode() {
36
		return 31 * 1 + ((instructions == null) ? 0 : instructions.hashCode());
37
	}
38
39
	public boolean equals(Object obj) {
40
		if (this == obj)
41
			return true;
42
		if (obj == null)
43
			return false;
44
		if (!(obj instanceof ITouchpointData))
45
			return false;
46
		final ITouchpointData other = (ITouchpointData) obj;
47
		if (instructions == null) {
48
			if (other.getInstructions() != null)
49
				return false;
50
		} else if (!instructions.equals(other.getInstructions()))
51
			return false;
52
		return true;
53
	}
54
55
	/**
56
	 * Clients must use the factory method on {@link MetadataFactory}.
57
	 */
58
	TouchpointData(Map instructions) {
59
		this.instructions = instructions;
60
	}
61
62
	/**
63
	 * Returns the touchpoint instruction corresponding to the given key.
64
	 */
65
	public ITouchpointInstruction getInstruction(String instructionKey) {
66
		return (ITouchpointInstruction) instructions.get(instructionKey);
67
	}
68
69
	/**
70
	 * Returns an unmodifiable map of the touchpoint instructions. The map
71
	 * keys are strings, and the values are instances of {@link ITouchpointInstruction}.
72
	 *
73
	 * @return the touchpoint instructions
74
	 */
75
	public Map getInstructions() {
76
		return Collections.unmodifiableMap(instructions);
77
	}
78
79
	/**
80
	 * Returns a string representation of the touchpoint data for debugging purposes only.
81
	 */
82
	public String toString() {
83
		StringBuffer result = new StringBuffer();
84
		for (Iterator iterator = instructions.entrySet().iterator(); iterator.hasNext();) {
85
			Entry instruction = (Entry) iterator.next();
86
			result.append(instruction.getKey()).append(" -> ").append(instruction.getValue()).append('\n'); //$NON-NLS-1$
87
		}
88
		return result.toString();
89
	}
90
}
(-)src/org/eclipse/equinox/internal/p2/metadata/RequiredCapability.java (+184 lines)
Added Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2007, 2008 IBM Corporation and others. All rights reserved. This
3
 * program and the accompanying materials are made available under the terms of
4
 * the Eclipse Public License v1.0 which accompanies this distribution, and is
5
 * available at http://www.eclipse.org/legal/epl-v10.html
6
 * 
7
 * Contributors: 
8
 *     IBM Corporation - initial API and implementation
9
 *     EclipseSource - ongoing development
10
 ******************************************************************************/
11
package org.eclipse.equinox.internal.p2.metadata;
12
13
import org.eclipse.core.runtime.Assert;
14
import org.eclipse.equinox.internal.provisional.p2.core.VersionRange;
15
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
16
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
17
18
/**
19
 * A required capability represents some external constraint on an {@link IInstallableUnit}.
20
 * Each capability represents something an {@link IInstallableUnit} needs that
21
 * it expects to be provided by another {@link IInstallableUnit}. Capabilities are
22
 * entirely generic, and are intended to be capable of representing anything that
23
 * an {@link IInstallableUnit} may need either at install time, or at runtime.
24
 * <p>
25
 * Capabilities are segmented into namespaces.  Anyone can introduce new 
26
 * capability namespaces. Some well-known namespaces are introduced directly
27
 * by the provisioning framework.
28
 * 
29
 * @see IInstallableUnit#NAMESPACE_IU_ID
30
 */
31
public class RequiredCapability implements IRequiredCapability {
32
	private static final String[] NO_SELECTORS = new String[0];
33
34
	private String filter;
35
	private final boolean multiple;
36
	private final String name;//never null
37
	private final String namespace;//never null
38
	private boolean optional;
39
	private boolean greedy = true;
40
	private final VersionRange range;//never null
41
	private String[] selectors = NO_SELECTORS;//never null
42
43
	/**
44
	 * TODO replace booleans with int options flag.
45
	 */
46
	public RequiredCapability(String namespace, String name, VersionRange range, String filter, boolean optional, boolean multiple) {
47
		Assert.isNotNull(namespace);
48
		Assert.isNotNull(name);
49
		this.namespace = namespace;
50
		this.name = name;
51
		this.range = range == null ? VersionRange.emptyRange : range;
52
		this.optional = optional;
53
		this.filter = filter;
54
		this.multiple = multiple;
55
	}
56
57
	public RequiredCapability(String namespace, String name, VersionRange range, String filter, boolean optional, boolean multiple, boolean greedy) {
58
		this(namespace, name, range, filter, optional, multiple);
59
		this.greedy = greedy;
60
	}
61
62
	public boolean equals(Object obj) {
63
		if (this == obj)
64
			return true;
65
		if (obj == null)
66
			return false;
67
		if (!(obj instanceof IRequiredCapability))
68
			return false;
69
		final IRequiredCapability other = (IRequiredCapability) obj;
70
		if (filter == null) {
71
			if (other.getFilter() != null)
72
				return false;
73
		} else if (!filter.equals(other.getFilter()))
74
			return false;
75
		if (multiple != other.isMultiple())
76
			return false;
77
		if (!name.equals(other.getName()))
78
			return false;
79
		if (!namespace.equals(other.getNamespace()))
80
			return false;
81
		if (optional != other.isOptional())
82
			return false;
83
		if (!range.equals(other.getRange()))
84
			return false;
85
		return true;
86
	}
87
88
	public String getFilter() {
89
		return filter;
90
	}
91
92
	public String getName() {
93
		return name;
94
	}
95
96
	public String getNamespace() {
97
		return namespace;
98
	}
99
100
	/**
101
	 * Returns the range of versions that satisfy this required capability. Returns
102
	 * an empty version range ({@link VersionRange#emptyRange} if any version
103
	 * will satisfy the capability.
104
	 * @return the range of versions that satisfy this required capability.
105
	 */
106
	public VersionRange getRange() {
107
		return range;
108
	}
109
110
	/**
111
	 * Returns the properties to use for evaluating required capability filters 
112
	 * downstream from this capability. For example, if the selector "doc"
113
	 * is provided, then a downstream InstallableUnit with a required capability
114
	 * filtered with "doc=true" will be included.
115
	 */
116
	public String[] getSelectors() {
117
		return selectors;
118
	}
119
120
	public int hashCode() {
121
		final int prime = 31;
122
		int result = 1;
123
		result = prime * result + ((filter == null) ? 0 : filter.hashCode());
124
		result = prime * result + (multiple ? 1231 : 1237);
125
		result = prime * result + name.hashCode();
126
		result = prime * result + namespace.hashCode();
127
		result = prime * result + (optional ? 1231 : 1237);
128
		result = prime * result + range.hashCode();
129
		return result;
130
	}
131
132
	public boolean isMultiple() {
133
		return multiple;
134
	}
135
136
	public boolean isOptional() {
137
		return optional;
138
	}
139
140
	/**
141
	 * TODO This object shouldn't be mutable since it makes equality unstable, and
142
	 * introduces lifecycle issues (how are the changes persisted, etc)
143
	 */
144
	public void setFilter(String filter) {
145
		this.filter = filter;
146
	}
147
148
	/**
149
	 * TODO This object shouldn't be mutable since it makes equality unstable, and
150
	 * introduces lifecycle issues (how are the changes persisted, etc)
151
	 */
152
	public void setSelectors(String[] selectors) {
153
		this.selectors = selectors;
154
	}
155
156
	public boolean isGreedy() {
157
		return greedy;
158
	}
159
160
	public String toString() {
161
		StringBuffer result = new StringBuffer();
162
163
		if (IInstallableUnit.NAMESPACE_IU_ID.equals(getNamespace())) {
164
			//print nothing for an IU id dependency because this is the default (most common) case
165
			result.append(""); //$NON-NLS-1$
166
		} else if ("osgi.bundle".equals(getNamespace())) { //$NON-NLS-1$
167
			result.append("bundle"); //$NON-NLS-1$
168
		} else if ("java.package".equals(getNamespace())) { //$NON-NLS-1$
169
			result.append("package"); //$NON-NLS-1$
170
		} else {
171
			result.append(getNamespace());
172
		}
173
		if (result.length() > 0)
174
			result.append(' ');
175
		result.append(getName());
176
		result.append(' ');
177
		//for an exact version match, print a simpler expression
178
		if (range.getMinimum().equals(range.getMaximum()))
179
			result.append('[').append(range.getMinimum()).append(']');
180
		else
181
			result.append(range);
182
		return result.toString();
183
	}
184
}
(-)src/org/eclipse/equinox/internal/p2/metadata/TouchpointData.java (+91 lines)
Added Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2007, 2008 IBM Corporation and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 *
8
 * Contributors:
9
 *     IBM Corporation - initial API and implementation
10
 *     EclipseSource - ongoing development
11
 *******************************************************************************/
12
package org.eclipse.equinox.internal.p2.metadata;
13
14
import java.util.*;
15
import java.util.Map.Entry;
16
import org.eclipse.equinox.internal.provisional.p2.metadata.*;
17
18
/**
19
 * Touchpoint data instances contain the additional information needed by a touchpoint
20
 * to execute each engine phase it participates in. This includes the sequence of
21
 * instruction statements to be executed during each phase, and any additional
22
 * supporting data needed to perform the phase.
23
 *
24
 * @noextend This class is not intended to be subclassed by clients.
25
 * @see MetadataFactory#createTouchpointData(Map)
26
 */
27
public class TouchpointData implements ITouchpointData {
28
29
	/**
30
	 * Map of (String->TouchpointInstruction). The set
31
	 * of keys supported is up to the touchpoint that will process these
32
	 * instructions. This map is never null.
33
	 */
34
	private Map instructions;
35
36
	public int hashCode() {
37
		return 31 * 1 + ((instructions == null) ? 0 : instructions.hashCode());
38
	}
39
40
	public boolean equals(Object obj) {
41
		if (this == obj)
42
			return true;
43
		if (obj == null)
44
			return false;
45
		if (!(obj instanceof ITouchpointData))
46
			return false;
47
		final ITouchpointData other = (ITouchpointData) obj;
48
		if (instructions == null) {
49
			if (other.getInstructions() != null)
50
				return false;
51
		} else if (!instructions.equals(other.getInstructions()))
52
			return false;
53
		return true;
54
	}
55
56
	/**
57
	 * Clients must use the factory method on {@link MetadataFactory}.
58
	 */
59
	public TouchpointData(Map instructions) {
60
		this.instructions = instructions;
61
	}
62
63
	/**
64
	 * Returns the touchpoint instruction corresponding to the given key.
65
	 */
66
	public ITouchpointInstruction getInstruction(String instructionKey) {
67
		return (ITouchpointInstruction) instructions.get(instructionKey);
68
	}
69
70
	/**
71
	 * Returns an unmodifiable map of the touchpoint instructions. The map
72
	 * keys are strings, and the values are instances of {@link ITouchpointInstruction}.
73
	 *
74
	 * @return the touchpoint instructions
75
	 */
76
	public Map getInstructions() {
77
		return Collections.unmodifiableMap(instructions);
78
	}
79
80
	/**
81
	 * Returns a string representation of the touchpoint data for debugging purposes only.
82
	 */
83
	public String toString() {
84
		StringBuffer result = new StringBuffer();
85
		for (Iterator iterator = instructions.entrySet().iterator(); iterator.hasNext();) {
86
			Entry instruction = (Entry) iterator.next();
87
			result.append(instruction.getKey()).append(" -> ").append(instruction.getValue()).append('\n'); //$NON-NLS-1$
88
		}
89
		return result.toString();
90
	}
91
}
(-)src/org/eclipse/equinox/internal/p2/metadata/ProvidedCapability.java (+81 lines)
Added Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2007, 2009 IBM Corporation and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 *
8
 * Contributors:
9
 *     IBM Corporation - initial API and implementation
10
 *     EclipseSource - ongoing development
11
 *******************************************************************************/
12
package org.eclipse.equinox.internal.p2.metadata;
13
14
import org.eclipse.core.runtime.Assert;
15
import org.eclipse.equinox.internal.provisional.p2.core.Version;
16
import org.eclipse.equinox.internal.provisional.p2.metadata.IProvidedCapability;
17
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
18
19
/**
20
 * Describes a capability as exposed or required by an installable unit
21
 */
22
public class ProvidedCapability implements IProvidedCapability {
23
	private final String name;
24
	private final String namespace;
25
	private final Version version;
26
27
	public ProvidedCapability(String namespace, String name, Version version) {
28
		Assert.isNotNull(namespace);
29
		Assert.isNotNull(name);
30
		this.namespace = namespace;
31
		this.name = name;
32
		this.version = version == null ? Version.emptyVersion : version;
33
	}
34
35
	public boolean equals(Object other) {
36
		if (other == null)
37
			return false;
38
		if (!(other instanceof IProvidedCapability))
39
			return false;
40
		IProvidedCapability otherCapability = (IProvidedCapability) other;
41
		if (!(namespace.equals(otherCapability.getNamespace())))
42
			return false;
43
		if (!(name.equals(otherCapability.getName())))
44
			return false;
45
		return version.equals(otherCapability.getVersion());
46
	}
47
48
	public String getName() {
49
		return name;
50
	}
51
52
	public String getNamespace() {
53
		return namespace;
54
	}
55
56
	public Version getVersion() {
57
		return version;
58
	}
59
60
	public int hashCode() {
61
		return namespace.hashCode() * name.hashCode() * version.hashCode();
62
	}
63
64
	/**
65
	 * Returns whether this provided capability satisfies the given required capability.
66
	 * @return <code>true</code> if this capability satisfies the given required
67
	 * capability, and <code>false</code> otherwise.
68
	 */
69
	public boolean satisfies(IRequiredCapability candidate) {
70
		if (getName() == null || !getName().equals(candidate.getName()))
71
			return false;
72
		if (getNamespace() == null || !getNamespace().equals(candidate.getNamespace()))
73
			return false;
74
		return candidate.getRange().isIncluded(version);
75
	}
76
77
	public String toString() {
78
		return namespace + '/' + name + '/' + version;
79
	}
80
81
}
(-)src/org/eclipse/equinox/internal/p2/metadata/Copyright.java (+65 lines)
Added Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2008 IBM Corporation and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 *
8
 * Contributors:
9
 *     IBM Corporation - initial API and implementation
10
 *******************************************************************************/
11
package org.eclipse.equinox.internal.p2.metadata;
12
13
import org.eclipse.equinox.internal.provisional.p2.metadata.ICopyright;
14
15
import java.net.URI;
16
17
/**
18
 * The <code>Copyright</code> class represents a software copyright.  A copyright has 
19
 * required body text which may be the full text or a summary.  An optional location field can be specified
20
 * which links to full text.  
21
 */
22
public class Copyright implements ICopyright {
23
	/**
24
	 * The <code>body</code> contains the descriptive text for the copyright. This may
25
	 * be a summary for a copyright specified in a URL.
26
	 */
27
	private final String body;
28
29
	/**
30
	 * The <code>location</code> is the location of a document containing a copyright notice.
31
	 */
32
	private URI location;
33
34
	/**
35
	 * Creates a new copyright. The body must contain the full text of the copyright.
36
	 * 
37
	 * @param location the location of a document containing the copyright notice, or <code>null</code>
38
	 * @param body the copyright body, cannot be <code>null</code>
39
	 * @throws IllegalArgumentException when the <code>body</code> is <code>null</code>
40
	 */
41
	public Copyright(URI location, String body) {
42
		if (body == null)
43
			throw new IllegalArgumentException("body cannot be null"); //$NON-NLS-1$
44
		this.location = location;
45
		this.body = body;
46
	}
47
48
	/**
49
	 * Returns the location of a document containing the copyright notice.
50
	 * 
51
	 * @return The location of the copyright notice, or <code>null</code>
52
	 */
53
	public URI getLocation() {
54
		return location;
55
	}
56
57
	/**
58
	 * Returns the license body.
59
	 * 
60
	 * @return the license body, never <code>null</code>
61
	 */
62
	public String getBody() {
63
		return body;
64
	}
65
}
(-)src/org/eclipse/equinox/internal/p2/metadata/RequirementChange.java (+118 lines)
Added Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2007, 2008 IBM Corporation and others. All rights reserved. This
3
 * program and the accompanying materials are made available under the terms of
4
 * the Eclipse Public License v1.0 which accompanies this distribution, and is
5
 * available at http://www.eclipse.org/legal/epl-v10.html
6
 * 
7
 * Contributors: IBM Corporation - initial API and implementation
8
 ******************************************************************************/
9
package org.eclipse.equinox.internal.p2.metadata;
10
11
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequiredCapability;
12
import org.eclipse.equinox.internal.provisional.p2.metadata.IRequirementChange;
13
14
import org.eclipse.equinox.internal.provisional.p2.core.Version;
15
import org.eclipse.equinox.internal.provisional.p2.core.VersionRange;
16
17
public class RequirementChange implements IRequirementChange {
18
	private IRequiredCapability applyOn;
19
	private IRequiredCapability newValue;
20
21
	public RequirementChange(IRequiredCapability applyOn2, IRequiredCapability newValue2) {
22
		if (applyOn2 == null && newValue2 == null)
23
			throw new IllegalArgumentException();
24
		this.applyOn = applyOn2;
25
		this.newValue = newValue2;
26
	}
27
28
	public IRequiredCapability applyOn() {
29
		return applyOn;
30
	}
31
32
	public IRequiredCapability newValue() {
33
		return newValue;
34
	}
35
36
	public boolean matches(IRequiredCapability toMatch) {
37
		if (!toMatch.getNamespace().equals(applyOn.getNamespace()))
38
			return false;
39
		if (!toMatch.getName().equals(applyOn.getName()))
40
			return false;
41
		if (toMatch.getRange().equals(applyOn.getRange()))
42
			return true;
43
44
		return intersect(toMatch.getRange(), applyOn.getRange()) == null ? false : true;
45
	}
46
47
	private VersionRange intersect(VersionRange r1, VersionRange r2) {
48
		Version resultMin = null;
49
		boolean resultMinIncluded = false;
50
		Version resultMax = null;
51
		boolean resultMaxIncluded = false;
52
53
		int minCompare = r1.getMinimum().compareTo(r2.getMinimum());
54
		if (minCompare < 0) {
55
			resultMin = r2.getMinimum();
56
			resultMinIncluded = r2.getIncludeMinimum();
57
		} else if (minCompare > 0) {
58
			resultMin = r1.getMinimum();
59
			resultMinIncluded = r1.getIncludeMinimum();
60
		} else if (minCompare == 0) {
61
			resultMin = r1.getMinimum();
62
			resultMinIncluded = r1.getIncludeMinimum() && r2.getIncludeMinimum();
63
		}
64
65
		int maxCompare = r1.getMaximum().compareTo(r2.getMaximum());
66
		if (maxCompare > 0) {
67
			resultMax = r2.getMaximum();
68
			resultMaxIncluded = r2.getIncludeMaximum();
69
		} else if (maxCompare < 0) {
70
			resultMax = r1.getMaximum();
71
			resultMaxIncluded = r1.getIncludeMaximum();
72
		} else if (maxCompare == 0) {
73
			resultMax = r1.getMaximum();
74
			resultMaxIncluded = r1.getIncludeMaximum() && r2.getIncludeMaximum();
75
		}
76
77
		int resultRangeComparison = resultMin.compareTo(resultMax);
78
		if (resultRangeComparison < 0)
79
			return new VersionRange(resultMin, resultMinIncluded, resultMax, resultMaxIncluded);
80
		else if (resultRangeComparison == 0 && resultMinIncluded == resultMaxIncluded)
81
			return new VersionRange(resultMin, resultMinIncluded, resultMax, resultMaxIncluded);
82
		else
83
			return null;
84
	}
85
86
	public int hashCode() {
87
		final int prime = 31;
88
		int result = 1;
89
		result = prime * result + ((applyOn == null) ? 0 : applyOn.hashCode());
90
		result = prime * result + ((newValue == null) ? 0 : newValue.hashCode());
91
		return result;
92
	}
93
94
	public boolean equals(Object obj) {
95
		if (this == obj)
96
			return true;
97
		if (obj == null)
98
			return false;
99
		if (!(obj instanceof IRequirementChange))
100
			return false;
101
		final IRequirementChange other = (IRequirementChange) obj;
102
		if (applyOn == null) {
103
			if (other.applyOn() != null)
104
				return false;
105
		} else if (!applyOn.equals(other.applyOn()))
106
			return false;
107
		if (newValue == null) {
108
			if (other.newValue() != null)
109
				return false;
110
		} else if (!newValue.equals(other.newValue()))
111
			return false;
112
		return true;
113
	}
114
115
	public String toString() {
116
		return applyOn + " --> " + newValue; //$NON-NLS-1$
117
	}
118
}
(-)src/org/eclipse/equinox/internal/p2/metadata/License.java (+147 lines)
Added Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2008 Genuitec, LLC and others. All rights reserved. This
3
 * program and the accompanying materials are made available under the terms of
4
 * the Eclipse Public License v1.0 which accompanies this distribution, and is
5
 * available at http://www.eclipse.org/legal/epl-v10.html
6
 * 
7
 * Contributors: 
8
 * 		Genuitec, LLC - initial API and implementation
9
 * 		IBM Corporation - optional URL field instead of required name
10
 *      EclipseSource - ongoing development
11
 ******************************************************************************/
12
package org.eclipse.equinox.internal.p2.metadata;
13
14
import org.eclipse.equinox.internal.provisional.p2.metadata.ILicense;
15
16
import java.io.UnsupportedEncodingException;
17
import java.math.BigInteger;
18
import java.net.URI;
19
import java.security.MessageDigest;
20
import java.security.NoSuchAlgorithmException;
21
22
/**
23
 * The <code>License</code> class represents a software license.  A license has required body text
24
 * which may be the full text or an annotation.  An optional URL field can be specified
25
 * which links to full text.  Licenses can be easily compared using their digests.
26
 */
27
public class License implements ILicense {
28
	/**
29
	 * The <code>body</code> contains the descriptive text for the license. This may
30
	 * be a summary for a full license specified in a URL.
31
	 */
32
	private final String body;
33
34
	/**
35
	 * The <code>location</code> is the URL of the license.
36
	 */
37
	private URI location;
38
39
	/**
40
	 * The <code>digest</code> is the cached message digest of the normalized body
41
	 */
42
	private BigInteger digest;
43
44
	/**
45
	 * Creates a new license object which is identified by users using the <code>body</code> field.
46
	 * The body should contain either the full text of the license or an summary for a license
47
	 * fully specified in the given location.
48
	 * 
49
	 * @param location the location of a document containing the full license, or <code>null</code>
50
	 * @param body the license body, cannot be <code>null</code>
51
	 * @throws IllegalArgumentException when the <code>body</code> is <code>null</code>
52
	 */
53
	public License(URI location, String body) {
54
		if (body == null)
55
			throw new IllegalArgumentException("body cannot be null"); //$NON-NLS-1$
56
		this.body = body;
57
		this.location = location;
58
	}
59
60
	/**
61
	 * Returns the location of a document containing the full license.
62
	 * 
63
	 * @return the location of the license document, or <code>null</code>
64
	 */
65
	public URI getLocation() {
66
		return location;
67
	}
68
69
	/**
70
	 * Returns the license body.
71
	 * @return the license body, never <code>null</code>
72
	 */
73
	public String getBody() {
74
		return body;
75
	}
76
77
	/**
78
	 * Returns the message digest of the license body.  The digest is calculated on a normalized
79
	 * version of the license where all whitespace has been reduced to one space.
80
	 * @return the message digest as a <code>BigInteger</code>, never <code>null</code>
81
	 */
82
	public synchronized BigInteger getDigest() {
83
		if (digest == null)
84
			digest = calculateLicenseDigest();
85
		return digest;
86
	}
87
88
	/* (non-Javadoc)
89
	 * @see java.lang.Object#equals(java.lang.Object)
90
	 */
91
	public boolean equals(Object obj) {
92
		if (obj == this)
93
			return true;
94
		if (obj == null)
95
			return false;
96
		if (obj instanceof ILicense) {
97
			ILicense other = (ILicense) obj;
98
			if (other.getDigest().equals(getDigest()))
99
				return true;
100
		}
101
		return false;
102
	}
103
104
	/* (non-Javadoc)
105
	 * @see java.lang.Object#hashCode()
106
	 */
107
	public int hashCode() {
108
		return getDigest().hashCode();
109
	}
110
111
	private BigInteger calculateLicenseDigest() {
112
		String message = normalize(getBody());
113
		try {
114
			MessageDigest algorithm = MessageDigest.getInstance("MD5"); //$NON-NLS-1$
115
			algorithm.reset();
116
			algorithm.update(message.getBytes("UTF-8")); //$NON-NLS-1$
117
			byte[] digestBytes = algorithm.digest();
118
			return new BigInteger(1, digestBytes);
119
		} catch (NoSuchAlgorithmException e) {
120
			throw new RuntimeException(e);
121
		} catch (UnsupportedEncodingException e) {
122
			throw new RuntimeException(e);
123
		}
124
	}
125
126
	/**
127
	 * Replace all sequences of whitespace with a single whitespace character.
128
	 */
129
	private String normalize(String license) {
130
		String text = license.trim();
131
		StringBuffer result = new StringBuffer();
132
		int length = text.length();
133
		for (int i = 0; i < length; i++) {
134
			char c = text.charAt(i);
135
			boolean foundWhitespace = false;
136
			while (Character.isWhitespace(c) && i < length) {
137
				foundWhitespace = true;
138
				c = text.charAt(++i);
139
			}
140
			if (foundWhitespace)
141
				result.append(' ');
142
			if (i < length)
143
				result.append(c);
144
		}
145
		return result.toString();
146
	}
147
}
(-)src/org/eclipse/equinox/internal/p2/metadata/TouchpointInstruction.java (+163 lines)
Added Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2008 IBM Corporation and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 *
8
 * Contributors:
9
 *     IBM Corporation - initial API and implementation
10
 *     EclipseSource - ongoing development
11
 *******************************************************************************/
12
package org.eclipse.equinox.internal.p2.metadata;
13
14
import java.util.Iterator;
15
import java.util.Map;
16
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointInstruction;
17
import org.eclipse.equinox.internal.provisional.p2.metadata.MetadataFactory;
18
19
/**
20
 * A touchpoint instruction contains either a sequence of instruction statements
21
 * to be executed during a particular engine phase, or some simple string value
22
 * that is needed by a touchpoint to execute its phases.
23
 * <p>
24
 * The format of a touchpoint instruction statement sequence is as follows:
25
 * 
26
 *   statement-sequence :
27
 *     | statement ';'
28
 *      | statement-sequence statement
29
 *      ;
30
 *
31
 *Where a statement is of the format:
32
 *
33
 *  statement :
34
 *      | actionName '(' parameters ')'
35
 *      ;
36
 *
37
 *  parameters :
38
 *      | // empty
39
 *      | parameter
40
 *      | parameters ',' parameter
41
 *      ;
42
 *
43
 *   parameter : 
44
 *      | paramName ':' paramValue
45
 *      ;
46
 *
47
 * actionName, paramName, paramValue :
48
 *      | String 
49
 *      ;
50
 *
51
 * @noextend This class is not intended to be subclassed by clients.
52
 * @see MetadataFactory#createTouchpointInstruction(String, String)
53
 */
54
public class TouchpointInstruction implements ITouchpointInstruction {
55
56
	private final String body;
57
	private final String importAttribute;
58
59
	/**
60
	 * Encodes an action statement in string form. This method will
61
	 * take care of escaping any illegal characters in function parameter values.
62
	 * 
63
	 * @param actionName The name of the action.
64
	 * @param parameters The function's parameters. This is a Map<String,String>
65
	 * where the keys are parameter names, and the values are parameter values
66
	 * @return An encoded touchpoint instruction statement
67
	 */
68
	public static String encodeAction(String actionName, Map parameters) {
69
		StringBuffer result = new StringBuffer(actionName);
70
		result.append('(');
71
		for (Iterator it = parameters.entrySet().iterator(); it.hasNext();) {
72
			Map.Entry entry = (Map.Entry) it.next();
73
			result.append(entry.getKey());
74
			result.append(':');
75
			appendEncoded(result, (String) entry.getValue());
76
			if (it.hasNext())
77
				result.append(',');
78
		}
79
		result.append(')').append(';');
80
		return result.toString();
81
	}
82
83
	/**
84
	 * Append the given value to the given buffer, encoding any illegal characters
85
	 * with appropriate escape sequences.
86
	 */
87
	private static void appendEncoded(StringBuffer buf, String value) {
88
		char[] chars = value.toCharArray();
89
		for (int i = 0; i < chars.length; i++) {
90
			switch (chars[i]) {
91
				case '$' :
92
				case ',' :
93
				case ':' :
94
				case ';' :
95
				case '{' :
96
				case '}' :
97
					buf.append("${#").append(Integer.toString(chars[i])).append('}'); //$NON-NLS-1$
98
					break;
99
				default :
100
					buf.append(chars[i]);
101
			}
102
		}
103
	}
104
105
	/**
106
	 * Clients must use the factory method on {@link MetadataFactory}.
107
	 */
108
	public TouchpointInstruction(String body, String importAttribute) {
109
		this.body = body;
110
		this.importAttribute = importAttribute;
111
	}
112
113
	public boolean equals(Object obj) {
114
		if (this == obj)
115
			return true;
116
		if (obj == null)
117
			return false;
118
		if (!(obj instanceof ITouchpointInstruction))
119
			return false;
120
		ITouchpointInstruction other = (ITouchpointInstruction) obj;
121
		if (body == null) {
122
			if (other.getBody() != null)
123
				return false;
124
		} else if (!body.equals(other.getBody()))
125
			return false;
126
		if (importAttribute == null) {
127
			if (other.getImportAttribute() != null)
128
				return false;
129
		} else if (!importAttribute.equals(other.getImportAttribute()))
130
			return false;
131
		return true;
132
	}
133
134
	/**
135
	 * Returns the body of this touchpoint instruction. The body is either a sequence
136
	 * of instruction statements, or a simple string value.
137
	 * 
138
	 * @return The body of this touchpoint instruction
139
	 */
140
	public String getBody() {
141
		return body;
142
	}
143
144
	//TODO What is this? Please doc
145
	public String getImportAttribute() {
146
		return importAttribute;
147
	}
148
149
	public int hashCode() {
150
		final int prime = 31;
151
		int result = 1;
152
		result = prime * result + ((body == null) ? 0 : body.hashCode());
153
		result = prime * result + ((importAttribute == null) ? 0 : importAttribute.hashCode());
154
		return result;
155
	}
156
157
	/**
158
	 * Returns a string representation of this instruction for debugging purposes only.
159
	 */
160
	public String toString() {
161
		return "Instruction[" + body + ',' + importAttribute + ']'; //$NON-NLS-1$
162
	}
163
}
(-)src/org/eclipse/equinox/internal/p2/metadata/TouchpointType.java (+56 lines)
Added Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2007, 2008 IBM Corporation and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 *
8
 * Contributors:
9
 *     IBM Corporation - initial API and implementation
10
 *     EclipseSource - ongoing Development
11
 *******************************************************************************/
12
package org.eclipse.equinox.internal.p2.metadata;
13
14
import org.eclipse.equinox.internal.provisional.p2.core.Version;
15
import org.eclipse.equinox.internal.provisional.p2.metadata.ITouchpointType;
16
17
/**
18
 * Identifies a particular touchpoint. A touchpoint is identified by an id 
19
 * and a version.
20
 */
21
public class TouchpointType implements ITouchpointType {
22
	private String id;//never null
23
	private Version version;//never null
24
25
	public TouchpointType(String id, Version aVersion) {
26
		this.id = id;
27
		this.version = aVersion;
28
	}
29
30
	public boolean equals(Object obj) {
31
		if (this == obj)
32
			return true;
33
		if (super.equals(obj))
34
			return true;
35
		if (obj == null || !(obj instanceof ITouchpointType))
36
			return false;
37
		ITouchpointType other = (ITouchpointType) obj;
38
		return id.equals(other.getId()) && version.equals(other.getVersion());
39
	}
40
41
	public String getId() {
42
		return id;
43
	}
44
45
	public Version getVersion() {
46
		return version;
47
	}
48
49
	public int hashCode() {
50
		return 31 * id.hashCode() + version.hashCode();
51
	}
52
53
	public String toString() {
54
		return "Touchpoint: " + id + ' ' + getVersion(); //$NON-NLS-1$
55
	}
56
}
(-)src/org/eclipse/equinox/p2/publisher/eclipse/FeaturesAction.java (-2 / +2 lines)
Lines 1-5 Link Here
1
/*******************************************************************************
1
/*******************************************************************************
2
 * Copyright (c) 2008-2009 Code 9 and others. All rights reserved. This
2
 * Copyright (c) 2008 Code 9 and others. All rights reserved. This
3
 * program and the accompanying materials are made available under the terms of
3
 * program and the accompanying materials are made available under the terms of
4
 * the Eclipse Public License v1.0 which accompanies this distribution, and is
4
 * the Eclipse Public License v1.0 which accompanies this distribution, and is
5
 * available at http://www.eclipse.org/legal/epl-v10.html
5
 * available at http://www.eclipse.org/legal/epl-v10.html
Lines 342-348 Link Here
342
			}
342
			}
343
			if (entries[i].isPlugin()) {
343
			if (entries[i].isPlugin()) {
344
				IRequiredCapability from = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, getTransformedId(entries[i].getId(), entries[i].isPlugin(), /*isGroup*/true), VersionRange.emptyRange, getFilter(entries[i]), entries[i].isOptional(), false);
344
				IRequiredCapability from = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, getTransformedId(entries[i].getId(), entries[i].isPlugin(), /*isGroup*/true), VersionRange.emptyRange, getFilter(entries[i]), entries[i].isOptional(), false);
345
				requirementChanges.add(new RequirementChange(from, req));
345
				requirementChanges.add(MetadataFactory.createRequirementChange(from, req));
346
				continue;
346
				continue;
347
			}
347
			}
348
			patchRequirements.add(req);
348
			patchRequirements.add(req);
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTest7.java (-1 / +1 lines)
Lines 52-58 Link Here
52
		//		RequiredCapability[][] scope = new RequiredCapability[0][0]; //new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false, false)}};
52
		//		RequiredCapability[][] scope = new RequiredCapability[0][0]; //new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false, false)}};
53
		//		p1 = createIUPatch("P", new Version("1.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, TouchpointType.NONE, NO_TP_DATA, false, null, new RequirementChange[] {changeX}, scope, null);
53
		//		p1 = createIUPatch("P", new Version("1.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, TouchpointType.NONE, NO_TP_DATA, false, null, new RequirementChange[] {changeX}, scope, null);
54
54
55
		IRequirementChange changeY = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "Y", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "Y", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
55
		IRequirementChange changeY = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "Y", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "Y", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
56
		IRequiredCapability[][] scopePP = new IRequiredCapability[0][0]; //new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", VersionRange.emptyRange, null, false, false, false)}};
56
		IRequiredCapability[][] scopePP = new IRequiredCapability[0][0]; //new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", VersionRange.emptyRange, null, false, false, false)}};
57
		pp1 = createIUPatch("PP", new Version("1.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, false, null, new IRequirementChange[] {changeY}, scopePP, null);
57
		pp1 = createIUPatch("PP", new Version("1.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, false, null, new IRequirementChange[] {changeY}, scopePP, null);
58
58
(-)src/org/eclipse/equinox/p2/tests/planner/Bug252638.java (-1 / +1 lines)
Lines 20-26 Link Here
20
	protected void setUp() throws Exception {
20
	protected void setUp() throws Exception {
21
		super.setUp();
21
		super.setUp();
22
		a1 = createIU("A", new Version("1.0.0"), true);
22
		a1 = createIU("A", new Version("1.0.0"), true);
23
		IRequirementChange change = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
23
		IRequirementChange change = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
24
		IRequiredCapability lifeCycle = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[2.0.0, 3.0.0)"), null, false, false, false);
24
		IRequiredCapability lifeCycle = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[2.0.0, 3.0.0)"), null, false, false, false);
25
		p1 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, lifeCycle);
25
		p1 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, lifeCycle);
26
26
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTestOptional2.java (-1 / +1 lines)
Lines 37-43 Link Here
37
		p2 = createIU(P2, new Version(1, 0, 0), true);
37
		p2 = createIU(P2, new Version(1, 0, 0), true);
38
		p2b = createIU(P2, new Version(1, 1, 1), true);
38
		p2b = createIU(P2, new Version(1, 1, 1), true);
39
39
40
		IRequirementChange changepp1 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.1.1, 1.1.1]"), null, true, false, true));
40
		IRequirementChange changepp1 = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.1.1, 1.1.1]"), null, true, false, true));
41
		IRequiredCapability lifeCyclepp1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
41
		IRequiredCapability lifeCyclepp1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
42
		IRequiredCapability[][] scopepp1 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0,1.0.0]"), null, false, false)}};
42
		IRequiredCapability[][] scopepp1 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0,1.0.0]"), null, false, false)}};
43
		pp1 = createIUPatch(PP1, new Version("3.0.0"), true, new IRequirementChange[] {changepp1}, scopepp1, lifeCyclepp1);
43
		pp1 = createIUPatch(PP1, new Version("3.0.0"), true, new IRequirementChange[] {changepp1}, scopepp1, lifeCyclepp1);
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTestOptional3.java (-2 / +2 lines)
Lines 38-45 Link Here
38
		p2 = createIU(P2, new Version(1, 0, 0), true);
38
		p2 = createIU(P2, new Version(1, 0, 0), true);
39
		p2b = createIU(P2, new Version(1, 1, 1), true);
39
		p2b = createIU(P2, new Version(1, 1, 1), true);
40
40
41
		IRequirementChange changepp1 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.1.1, 1.1.1]"), null, true, false, true));
41
		IRequirementChange changepp1 = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.1.1, 1.1.1]"), null, true, false, true));
42
		IRequirementChange changepp2 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
42
		IRequirementChange changepp2 = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
43
		IRequiredCapability lifeCyclepp1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
43
		IRequiredCapability lifeCyclepp1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
44
		IRequiredCapability[][] scopepp1 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0,1.0.0]"), null, false, false)}};
44
		IRequiredCapability[][] scopepp1 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0,1.0.0]"), null, false, false)}};
45
		pp1 = createIUPatch(PP1, new Version("3.0.0"), true, new IRequirementChange[] {changepp1, changepp2}, scopepp1, lifeCyclepp1);
45
		pp1 = createIUPatch(PP1, new Version("3.0.0"), true, new IRequirementChange[] {changepp1, changepp2}, scopepp1, lifeCyclepp1);
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTestUpdate5.java (-1 / +1 lines)
Lines 42-48 Link Here
42
		p1b = createIU(P1, new Version(1, 1, 1), true);
42
		p1b = createIU(P1, new Version(1, 1, 1), true);
43
		p2b = createIU(P2, new Version(1, 1, 1), true);
43
		p2b = createIU(P2, new Version(1, 1, 1), true);
44
44
45
		IRequirementChange changepp1 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
45
		IRequirementChange changepp1 = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
46
		IRequiredCapability lifeCyclepp1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
46
		IRequiredCapability lifeCyclepp1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
47
		IRequiredCapability[][] scopepp1 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 3.0.0]"), null, false, false)}};
47
		IRequiredCapability[][] scopepp1 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 3.0.0]"), null, false, false)}};
48
		pp1 = createIUPatch(PP1, new Version("3.0.0"), true, new IRequirementChange[] {changepp1}, scopepp1, lifeCyclepp1);
48
		pp1 = createIUPatch(PP1, new Version("3.0.0"), true, new IRequirementChange[] {changepp1}, scopepp1, lifeCyclepp1);
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTestUpdate2.java (-2 / +2 lines)
Lines 42-53 Link Here
42
		p1b = createIU(P1, new Version(1, 1, 1), true);
42
		p1b = createIU(P1, new Version(1, 1, 1), true);
43
		p2b = createIU(P2, new Version(1, 1, 1), true);
43
		p2b = createIU(P2, new Version(1, 1, 1), true);
44
44
45
		IRequirementChange changepp1 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
45
		IRequirementChange changepp1 = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
46
		IRequiredCapability lifeCyclepp1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
46
		IRequiredCapability lifeCyclepp1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
47
		IRequiredCapability[][] scopepp1 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0,1.0.0]"), null, false, false)}};
47
		IRequiredCapability[][] scopepp1 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0,1.0.0]"), null, false, false)}};
48
		pp1 = createIUPatch(PP1, new Version("3.0.0"), true, new IRequirementChange[] {changepp1}, scopepp1, lifeCyclepp1);
48
		pp1 = createIUPatch(PP1, new Version("3.0.0"), true, new IRequirementChange[] {changepp1}, scopepp1, lifeCyclepp1);
49
49
50
		IRequirementChange changepp2 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
50
		IRequirementChange changepp2 = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
51
		IRequiredCapability lifeCyclepp2 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
51
		IRequiredCapability lifeCyclepp2 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
52
		IRequiredCapability[][] scopepp2 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false)}};
52
		IRequiredCapability[][] scopepp2 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false)}};
53
		pp2 = createIUPatch(PP2, new Version("5.0.0"), true, new IRequirementChange[] {changepp2}, scopepp2, lifeCyclepp2);
53
		pp2 = createIUPatch(PP2, new Version("5.0.0"), true, new IRequirementChange[] {changepp2}, scopepp2, lifeCyclepp2);
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTest7b.java (-2 / +2 lines)
Lines 48-58 Link Here
48
		req[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", new VersionRange("[1.0.0, 1.1.0)"), null, false, true);
48
		req[0] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", new VersionRange("[1.0.0, 1.1.0)"), null, false, true);
49
		f1 = createIU("F", new Version(1, 0, 0), req);
49
		f1 = createIU("F", new Version(1, 0, 0), req);
50
50
51
		IRequirementChange changeX = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "X", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "X", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
51
		IRequirementChange changeX = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "X", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "X", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
52
		IRequiredCapability[][] scope = new IRequiredCapability[0][0]; //new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false, false)}};
52
		IRequiredCapability[][] scope = new IRequiredCapability[0][0]; //new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false, false)}};
53
		p1 = createIUPatch("P", new Version("1.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, false, null, new IRequirementChange[] {changeX}, scope, null);
53
		p1 = createIUPatch("P", new Version("1.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, false, null, new IRequirementChange[] {changeX}, scope, null);
54
54
55
		IRequirementChange changeY = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "Y", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "Y", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
55
		IRequirementChange changeY = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "Y", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "Y", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
56
		IRequiredCapability[][] scopePP = new IRequiredCapability[0][0]; //new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", VersionRange.emptyRange, null, false, false, false)}};
56
		IRequiredCapability[][] scopePP = new IRequiredCapability[0][0]; //new RequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", VersionRange.emptyRange, null, false, false, false)}};
57
		pp1 = createIUPatch("PP", new Version("1.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, false, null, new IRequirementChange[] {changeY}, scopePP, null);
57
		pp1 = createIUPatch("PP", new Version("1.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, false, null, new IRequirementChange[] {changeY}, scopePP, null);
58
58
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTest5.java (-1 / +1 lines)
Lines 34-40 Link Here
34
		f1 = createIU("F", new Version(1, 0, 0), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true)});
34
		f1 = createIU("F", new Version(1, 0, 0), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true)});
35
		a1 = createIU("A", new Version("1.0.0"), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.1.0)"), null, false, true)});
35
		a1 = createIU("A", new Version("1.0.0"), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.1.0)"), null, false, true)});
36
		b1 = createIU("B", new Version(1, 2, 0), true);
36
		b1 = createIU("B", new Version(1, 2, 0), true);
37
		IRequirementChange change = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
37
		IRequirementChange change = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
38
		IRequiredCapability lifeCycle = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "F", new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
38
		IRequiredCapability lifeCycle = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "F", new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
39
		IRequiredCapability[][] scope = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0,1.0.0]"), null, false, false)}};
39
		IRequiredCapability[][] scope = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0,1.0.0]"), null, false, false)}};
40
		p1 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, scope, lifeCycle);
40
		p1 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, scope, lifeCycle);
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTest1.java (-1 / +1 lines)
Lines 30-36 Link Here
30
		super.setUp();
30
		super.setUp();
31
		a1 = createIU("A", new Version("1.0.0"), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.1.0)"), null, false, true)});
31
		a1 = createIU("A", new Version("1.0.0"), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.1.0)"), null, false, true)});
32
		b1 = createIU("B", new Version(1, 2, 0), true);
32
		b1 = createIU("B", new Version(1, 2, 0), true);
33
		IRequirementChange change = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
33
		IRequirementChange change = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
34
		p1 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
34
		p1 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
35
35
36
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, p1});
36
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, p1});
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTestUpdate4.java (-1 / +1 lines)
Lines 41-47 Link Here
41
		p1b = createIU(P1, new Version(1, 1, 1), true);
41
		p1b = createIU(P1, new Version(1, 1, 1), true);
42
		p2b = createIU(P2, new Version(1, 1, 1), true);
42
		p2b = createIU(P2, new Version(1, 1, 1), true);
43
43
44
		IRequirementChange changepp1 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
44
		IRequirementChange changepp1 = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
45
		IRequiredCapability lifeCyclepp1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, VersionRange.emptyRange, null, false, false, true);
45
		IRequiredCapability lifeCyclepp1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, VersionRange.emptyRange, null, false, false, true);
46
		IRequiredCapability[][] scopepp1 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 3.0.0]"), null, false, false)}};
46
		IRequiredCapability[][] scopepp1 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 3.0.0]"), null, false, false)}};
47
		pp1 = createIUPatch(PP1, new Version("3.0.0"), true, new IRequirementChange[] {changepp1}, scopepp1, lifeCyclepp1);
47
		pp1 = createIUPatch(PP1, new Version("3.0.0"), true, new IRequirementChange[] {changepp1}, scopepp1, lifeCyclepp1);
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTest13.java (-1 / +1 lines)
Lines 34-40 Link Here
34
		b1 = createIU("B", new Version(1, 0, 0), true);
34
		b1 = createIU("B", new Version(1, 0, 0), true);
35
		d1 = createIU("D", new Version(1, 0, 0), true);
35
		d1 = createIU("D", new Version(1, 0, 0), true);
36
		c1 = createIU("C", new Version(1, 0, 0), true);
36
		c1 = createIU("C", new Version(1, 0, 0), true);
37
		IRequirementChange change = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "D", new VersionRange("[1.0.0, 1.3.0)"), null, false, false, true));
37
		IRequirementChange change = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "D", new VersionRange("[1.0.0, 1.3.0)"), null, false, false, true));
38
		p1 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
38
		p1 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
39
39
40
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, c1, d1, p1});
40
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, c1, d1, p1});
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTestOptional.java (-1 / +1 lines)
Lines 39-45 Link Here
39
		p1b = createIU(P1, new Version(1, 1, 1), true);
39
		p1b = createIU(P1, new Version(1, 1, 1), true);
40
		p2b = createIU(P2, new Version(1, 1, 1), true);
40
		p2b = createIU(P2, new Version(1, 1, 1), true);
41
41
42
		IRequirementChange changepp1 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.1.1, 1.1.1]"), null, true, false, true));
42
		IRequirementChange changepp1 = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.1.1, 1.1.1]"), null, true, false, true));
43
		IRequiredCapability lifeCyclepp1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
43
		IRequiredCapability lifeCyclepp1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
44
		IRequiredCapability[][] scopepp1 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0,1.0.0]"), null, false, false)}};
44
		IRequiredCapability[][] scopepp1 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0,1.0.0]"), null, false, false)}};
45
		pp1 = createIUPatch(PP1, new Version("3.0.0"), true, new IRequirementChange[] {changepp1}, scopepp1, lifeCyclepp1);
45
		pp1 = createIUPatch(PP1, new Version("3.0.0"), true, new IRequirementChange[] {changepp1}, scopepp1, lifeCyclepp1);
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTestUpdate.java (-2 / +2 lines)
Lines 43-54 Link Here
43
		p1b = createIU(P1, new Version(1, 1, 1), true);
43
		p1b = createIU(P1, new Version(1, 1, 1), true);
44
		p2b = createIU(P2, new Version(1, 1, 1), true);
44
		p2b = createIU(P2, new Version(1, 1, 1), true);
45
45
46
		IRequirementChange changepp1 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
46
		IRequirementChange changepp1 = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
47
		IRequiredCapability lifeCyclepp1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
47
		IRequiredCapability lifeCyclepp1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
48
		IRequiredCapability[][] scopepp1 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0,1.0.0]"), null, false, false)}};
48
		IRequiredCapability[][] scopepp1 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0,1.0.0]"), null, false, false)}};
49
		pp1 = createIUPatch(PP1, new Version("3.0.0"), true, new IRequirementChange[] {changepp1}, scopepp1, lifeCyclepp1);
49
		pp1 = createIUPatch(PP1, new Version("3.0.0"), true, new IRequirementChange[] {changepp1}, scopepp1, lifeCyclepp1);
50
50
51
		IRequirementChange changepp2 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
51
		IRequirementChange changepp2 = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
52
		IRequiredCapability lifeCyclepp2 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
52
		IRequiredCapability lifeCyclepp2 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
53
		IRequiredCapability[][] scopepp2 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false)}};
53
		IRequiredCapability[][] scopepp2 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false)}};
54
		pp2 = createIUPatch(PP2, new Version("5.0.0"), true, new IRequirementChange[] {changepp2}, scopepp2, lifeCyclepp2);
54
		pp2 = createIUPatch(PP2, new Version("5.0.0"), true, new IRequirementChange[] {changepp2}, scopepp2, lifeCyclepp2);
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTest2.java (-1 / +1 lines)
Lines 36-42 Link Here
36
		IProvidedCapability[] cap = new IProvidedCapability[] {MetadataFactory.createProvidedCapability("foo", "bar", new Version(1, 0, 0))};
36
		IProvidedCapability[] cap = new IProvidedCapability[] {MetadataFactory.createProvidedCapability("foo", "bar", new Version(1, 0, 0))};
37
		a1 = createIU("A", new Version("1.0.0"), null, new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.1.0)"), null, false, false)}, cap, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, false, null);
37
		a1 = createIU("A", new Version("1.0.0"), null, new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.1.0)"), null, false, false)}, cap, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, false, null);
38
		b1 = createIU("B", new Version(1, 2, 0), true);
38
		b1 = createIU("B", new Version(1, 2, 0), true);
39
		IRequirementChange change = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
39
		IRequirementChange change = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
40
		p1 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0, 1.1.0]"), null, false, false, false)}}, null);
40
		p1 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0, 1.1.0]"), null, false, false, false)}}, null);
41
		p2 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.3.0, 1.5.0]"), null, false, false, false)}}, null);
41
		p2 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.3.0, 1.5.0]"), null, false, false, false)}}, null);
42
		p3 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, new IRequiredCapability[][] { {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0, 1.1.0]"), null, false, false, false)}, {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.3.0, 1.5.0]"), null, false, false, false)}}, null);
42
		p3 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, new IRequiredCapability[][] { {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0, 1.1.0]"), null, false, false, false)}, {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.3.0, 1.5.0]"), null, false, false, false)}}, null);
(-)src/org/eclipse/equinox/p2/tests/planner/SDKPatchingTest2.java (-2 / +2 lines)
Lines 33-39 Link Here
33
		changeVersion(newJDTLaunching, newJDTLaunchingVersion);
33
		changeVersion(newJDTLaunching, newJDTLaunchingVersion);
34
		newIUs.add(MetadataFactory.createInstallableUnit(newJDTLaunching));
34
		newIUs.add(MetadataFactory.createInstallableUnit(newJDTLaunching));
35
35
36
		IRequirementChange change = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "org.eclipse.jdt.launching", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "org.eclipse.jdt.launching", new VersionRange(newJDTLaunchingVersion, true, newJDTLaunchingVersion, true), null, false, false, true));
36
		IRequirementChange change = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "org.eclipse.jdt.launching", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "org.eclipse.jdt.launching", new VersionRange(newJDTLaunchingVersion, true, newJDTLaunchingVersion, true), null, false, false, true));
37
		IRequiredCapability lifeCycle = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "org.eclipse.jdt.feature.group", new VersionRange("[3.5.0.v20081202-0800-7p83FGDFHmHuj2mNpJBSKZe, 3.5.0.v20081202-0800-7p83FGDFHmHuj2mNpJBSKZe]"), null, false, false, true);
37
		IRequiredCapability lifeCycle = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "org.eclipse.jdt.feature.group", new VersionRange("[3.5.0.v20081202-0800-7p83FGDFHmHuj2mNpJBSKZe, 3.5.0.v20081202-0800-7p83FGDFHmHuj2mNpJBSKZe]"), null, false, false, true);
38
		patchInstallingJDTLaunching = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, new IRequiredCapability[0][0], lifeCycle);
38
		patchInstallingJDTLaunching = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, new IRequiredCapability[0][0], lifeCycle);
39
39
Lines 45-51 Link Here
45
		changeVersion(newDebugUI, newDebugVersion);
45
		changeVersion(newDebugUI, newDebugVersion);
46
		newIUs.add(MetadataFactory.createInstallableUnit(newDebugUI));
46
		newIUs.add(MetadataFactory.createInstallableUnit(newDebugUI));
47
47
48
		IRequirementChange change2 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "org.eclipse.jdt.debug.ui", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "org.eclipse.jdt.debug.ui", new VersionRange(newDebugVersion, true, newDebugVersion, true), null, false, false, true));
48
		IRequirementChange change2 = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "org.eclipse.jdt.debug.ui", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "org.eclipse.jdt.debug.ui", new VersionRange(newDebugVersion, true, newDebugVersion, true), null, false, false, true));
49
		IRequiredCapability lifeCycle2 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "org.eclipse.jdt.feature.group", new VersionRange("[3.5.0.v20081202-0800-7p83FGDFHmHuj2mNpJBSKZe, 3.5.0.v20081202-0800-7p83FGDFHmHuj2mNpJBSKZe]"), null, false, false, true);
49
		IRequiredCapability lifeCycle2 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "org.eclipse.jdt.feature.group", new VersionRange("[3.5.0.v20081202-0800-7p83FGDFHmHuj2mNpJBSKZe, 3.5.0.v20081202-0800-7p83FGDFHmHuj2mNpJBSKZe]"), null, false, false, true);
50
		patchInstallingDebugUI = createIUPatch("P2", new Version("1.0.0"), true, new IRequirementChange[] {change2}, new IRequiredCapability[0][0], lifeCycle2);
50
		patchInstallingDebugUI = createIUPatch("P2", new Version("1.0.0"), true, new IRequirementChange[] {change2}, new IRequiredCapability[0][0], lifeCycle2);
51
51
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTest6.java (-2 / +2 lines)
Lines 38-49 Link Here
38
		c1 = createIU("C", new Version("1.0.0"), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "D", new VersionRange("[1.0.0, 1.1.0)"), null, false, true)});
38
		c1 = createIU("C", new Version("1.0.0"), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "D", new VersionRange("[1.0.0, 1.1.0)"), null, false, true)});
39
		d1 = createIU("D", new Version(1, 2, 0), true);
39
		d1 = createIU("D", new Version(1, 2, 0), true);
40
40
41
		IRequirementChange changeA = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
41
		IRequirementChange changeA = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
42
		IRequiredCapability[][] scopeP1 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false, false)}};
42
		IRequiredCapability[][] scopeP1 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false, false)}};
43
		IRequiredCapability[] reqOnPP = new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "PP", new VersionRange("[1.0.0, 2.0.0)"), null, false, false, true)};
43
		IRequiredCapability[] reqOnPP = new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "PP", new VersionRange("[1.0.0, 2.0.0)"), null, false, false, true)};
44
		p1 = createIUPatch("P", new Version("1.0.0"), null, reqOnPP, NO_PROVIDES, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, false, null, new IRequirementChange[] {changeA}, scopeP1, null);
44
		p1 = createIUPatch("P", new Version("1.0.0"), null, reqOnPP, NO_PROVIDES, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, false, null, new IRequirementChange[] {changeA}, scopeP1, null);
45
45
46
		IRequirementChange changeC = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "D", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "D", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
46
		IRequirementChange changeC = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "D", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "D", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
47
		IRequiredCapability[][] scopePP1 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", VersionRange.emptyRange, null, false, false, false)}};
47
		IRequiredCapability[][] scopePP1 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", VersionRange.emptyRange, null, false, false, false)}};
48
		pp1 = createIUPatch("PP", new Version("1.0.0"), true, new IRequirementChange[] {changeC}, scopePP1, null);
48
		pp1 = createIUPatch("PP", new Version("1.0.0"), true, new IRequirementChange[] {changeC}, scopePP1, null);
49
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, c1, d1, p1, pp1});
49
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, c1, d1, p1, pp1});
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTest10.java (-2 / +2 lines)
Lines 35-44 Link Here
35
		b1 = createIU("B", new Version(1, 0, 0), true);
35
		b1 = createIU("B", new Version(1, 0, 0), true);
36
		b2 = createIU("B", new Version(1, 2, 0), true);
36
		b2 = createIU("B", new Version(1, 2, 0), true);
37
		b3 = createIU("B", new Version(1, 3, 0), true);
37
		b3 = createIU("B", new Version(1, 3, 0), true);
38
		IRequirementChange change = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.2.0, 1.2.0]"), null, false, false, true));
38
		IRequirementChange change = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.2.0, 1.2.0]"), null, false, false, true));
39
		p1 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
39
		p1 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
40
40
41
		IRequirementChange anotherChangeB = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.3.0, 1.3.0]"), null, false, false, true));
41
		IRequirementChange anotherChangeB = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.3.0, 1.3.0]"), null, false, false, true));
42
		pp1 = createIUPatch("PP", new Version("1.0.0"), true, new IRequirementChange[] {anotherChangeB}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
42
		pp1 = createIUPatch("PP", new Version("1.0.0"), true, new IRequirementChange[] {anotherChangeB}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
43
43
44
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, b2, b3, p1, pp1});
44
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, b2, b3, p1, pp1});
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTest1c.java (-1 / +1 lines)
Lines 34-40 Link Here
34
		b1 = createIU("B", new Version(1, 0, 0), true);
34
		b1 = createIU("B", new Version(1, 0, 0), true);
35
		b2 = createIU("B", new Version(1, 2, 0), true);
35
		b2 = createIU("B", new Version(1, 2, 0), true);
36
		b3 = createIU("B", new Version(1, 3, 0), true);
36
		b3 = createIU("B", new Version(1, 3, 0), true);
37
		IRequirementChange change = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.2.0, 1.2.0]"), null, false, false, true));
37
		IRequirementChange change = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.2.0, 1.2.0]"), null, false, false, true));
38
		p1 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
38
		p1 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
39
39
40
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, b2, p1});
40
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, b2, p1});
(-)src/org/eclipse/equinox/p2/tests/planner/PatchFailingToInstall.java (-2 / +2 lines)
Lines 37-48 Link Here
37
		p1b = createIU("P1", new Version(1, 1, 1), true);
37
		p1b = createIU("P1", new Version(1, 1, 1), true);
38
		p2b = createIU("P2", new Version(1, 1, 1), true);
38
		p2b = createIU("P2", new Version(1, 1, 1), true);
39
39
40
		IRequirementChange changepp1 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
40
		IRequirementChange changepp1 = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
41
		IRequiredCapability lifeCyclepp1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "p2.feature", new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
41
		IRequiredCapability lifeCyclepp1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "p2.feature", new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
42
		IRequiredCapability[][] scopepp1 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "P1", new VersionRange("[1.1.1,1.1.1]"), null, false, false)}};
42
		IRequiredCapability[][] scopepp1 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "P1", new VersionRange("[1.1.1,1.1.1]"), null, false, false)}};
43
		pp1 = createIUPatch("PP1", new Version("3.0.0"), true, new IRequirementChange[] {changepp1}, scopepp1, lifeCyclepp1);
43
		pp1 = createIUPatch("PP1", new Version("3.0.0"), true, new IRequirementChange[] {changepp1}, scopepp1, lifeCyclepp1);
44
44
45
		IRequirementChange changepp2 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
45
		IRequirementChange changepp2 = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
46
		IRequiredCapability lifeCyclepp2 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "p2.feature", new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
46
		IRequiredCapability lifeCyclepp2 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "p2.feature", new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
47
		IRequiredCapability[][] scopepp2 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "P2", new VersionRange("[1.1.1,1.1.1]"), null, false, false)}};
47
		IRequiredCapability[][] scopepp2 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "P2", new VersionRange("[1.1.1,1.1.1]"), null, false, false)}};
48
		pp2 = createIUPatch("PP2", new Version("5.0.0"), true, new IRequirementChange[] {changepp2}, scopepp2, lifeCyclepp2);
48
		pp2 = createIUPatch("PP2", new Version("5.0.0"), true, new IRequirementChange[] {changepp2}, scopepp2, lifeCyclepp2);
(-)src/org/eclipse/equinox/p2/tests/planner/PP2ShouldFailToInstall.java (-2 / +2 lines)
Lines 37-48 Link Here
37
		p1b = createIU("P1", new Version(1, 1, 1), true);
37
		p1b = createIU("P1", new Version(1, 1, 1), true);
38
		p2b = createIU("P2", new Version(1, 1, 1), true);
38
		p2b = createIU("P2", new Version(1, 1, 1), true);
39
39
40
		IRequirementChange changepp1 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "P1", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "P1", new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
40
		IRequirementChange changepp1 = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "P1", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "P1", new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
41
		IRequiredCapability lifeCyclepp1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "p2.feature", new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
41
		IRequiredCapability lifeCyclepp1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "p2.feature", new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
42
		IRequiredCapability[][] scopepp1 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "p2.feature", new VersionRange("[1.0.0,1.0.0]"), null, false, false)}};
42
		IRequiredCapability[][] scopepp1 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "p2.feature", new VersionRange("[1.0.0,1.0.0]"), null, false, false)}};
43
		pp1 = createIUPatch("PP1", new Version("3.0.0"), true, new IRequirementChange[] {changepp1}, scopepp1, lifeCyclepp1);
43
		pp1 = createIUPatch("PP1", new Version("3.0.0"), true, new IRequirementChange[] {changepp1}, scopepp1, lifeCyclepp1);
44
44
45
		IRequirementChange changepp2 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "P2", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "P2", new VersionRange("[3.1.1, 3.1.1]"), null, false, false, true));
45
		IRequirementChange changepp2 = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "P2", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "P2", new VersionRange("[3.1.1, 3.1.1]"), null, false, false, true));
46
		IRequiredCapability lifeCyclepp2 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "p2.feature", new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
46
		IRequiredCapability lifeCyclepp2 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "p2.feature", new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
47
		IRequiredCapability[][] scopepp2 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "p2.feature", new VersionRange("[1.0.0, 1.0.0]"), null, false, false)}};
47
		IRequiredCapability[][] scopepp2 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "p2.feature", new VersionRange("[1.0.0, 1.0.0]"), null, false, false)}};
48
		pp2 = createIUPatch("PP2", new Version("5.0.0"), true, new IRequirementChange[] {changepp2}, scopepp2, lifeCyclepp2);
48
		pp2 = createIUPatch("PP2", new Version("5.0.0"), true, new IRequirementChange[] {changepp2}, scopepp2, lifeCyclepp2);
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTest12.java (-1 / +1 lines)
Lines 32-38 Link Here
32
		a1 = createIU("A", new Version("1.0.0"), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.1.0)"), null, false, true, true)});
32
		a1 = createIU("A", new Version("1.0.0"), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.1.0)"), null, false, true, true)});
33
		b1 = createIU("B", new Version(1, 0, 0), true);
33
		b1 = createIU("B", new Version(1, 0, 0), true);
34
		b2 = createIU("B", new Version(1, 2, 0), true);
34
		b2 = createIU("B", new Version(1, 2, 0), true);
35
		IRequirementChange change = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.4.0, 1.5.0)"), null, false, true, true));
35
		IRequirementChange change = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.4.0, 1.5.0)"), null, false, true, true));
36
		p1 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
36
		p1 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
37
37
38
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, b2, p1});
38
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, b2, p1});
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTestUninstall.java (-2 / +2 lines)
Lines 42-53 Link Here
42
		p1b = createIU(P1, new Version(1, 1, 1), true);
42
		p1b = createIU(P1, new Version(1, 1, 1), true);
43
		p2b = createIU(P2, new Version(1, 1, 1), true);
43
		p2b = createIU(P2, new Version(1, 1, 1), true);
44
44
45
		IRequirementChange changepp1 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
45
		IRequirementChange changepp1 = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
46
		IRequiredCapability lifeCyclepp1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
46
		IRequiredCapability lifeCyclepp1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
47
		IRequiredCapability[][] scopepp1 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0,1.0.0]"), null, false, false)}};
47
		IRequiredCapability[][] scopepp1 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0,1.0.0]"), null, false, false)}};
48
		pp1 = createIUPatch(PP1, new Version("3.0.0"), true, new IRequirementChange[] {changepp1}, scopepp1, lifeCyclepp1);
48
		pp1 = createIUPatch(PP1, new Version("3.0.0"), true, new IRequirementChange[] {changepp1}, scopepp1, lifeCyclepp1);
49
49
50
		IRequirementChange changepp2 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
50
		IRequirementChange changepp2 = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
51
		IRequiredCapability lifeCyclepp2 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
51
		IRequiredCapability lifeCyclepp2 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
52
		IRequiredCapability[][] scopepp2 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false)}};
52
		IRequiredCapability[][] scopepp2 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false)}};
53
		pp2 = createIUPatch(PP2, new Version("5.0.0"), true, new IRequirementChange[] {changepp2}, scopepp2, lifeCyclepp2);
53
		pp2 = createIUPatch(PP2, new Version("5.0.0"), true, new IRequirementChange[] {changepp2}, scopepp2, lifeCyclepp2);
(-)src/org/eclipse/equinox/p2/tests/planner/Bug249605.java (-3 / +3 lines)
Lines 34-46 Link Here
34
		b2 = createIU("B", new Version(1, 2, 0), true);
34
		b2 = createIU("B", new Version(1, 2, 0), true);
35
		b3 = createIU("B", new Version(1, 3, 0), true);
35
		b3 = createIU("B", new Version(1, 3, 0), true);
36
36
37
		IRequirementChange change = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.2.0)"), null, false, false, true));
37
		IRequirementChange change = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.2.0)"), null, false, false, true));
38
		p1 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
38
		p1 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
39
39
40
		IRequirementChange change2 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.2.0, 1.3.0)"), null, false, false, true));
40
		IRequirementChange change2 = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.2.0, 1.3.0)"), null, false, false, true));
41
		p2 = createIUPatch("P", new Version("1.2.0"), null, new IRequiredCapability[0], new IProvidedCapability[0], new HashMap(), null, null, true, MetadataFactory.createUpdateDescriptor("P", new VersionRange("[1.0.0, 1.2.0)"), 0, null), new IRequirementChange[] {change2}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
41
		p2 = createIUPatch("P", new Version("1.2.0"), null, new IRequiredCapability[0], new IProvidedCapability[0], new HashMap(), null, null, true, MetadataFactory.createUpdateDescriptor("P", new VersionRange("[1.0.0, 1.2.0)"), 0, null), new IRequirementChange[] {change2}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
42
42
43
		IRequirementChange change3 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.3.0, 1.4.0)"), null, false, false, true));
43
		IRequirementChange change3 = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.3.0, 1.4.0)"), null, false, false, true));
44
		p3 = createIUPatch("P", new Version("1.3.0"), null, new IRequiredCapability[0], new IProvidedCapability[0], new HashMap(), null, null, true, MetadataFactory.createUpdateDescriptor("P", new VersionRange("[1.0.0, 1.3.0)"), 0, null), new IRequirementChange[] {change3}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
44
		p3 = createIUPatch("P", new Version("1.3.0"), null, new IRequiredCapability[0], new IProvidedCapability[0], new HashMap(), null, null, true, MetadataFactory.createUpdateDescriptor("P", new VersionRange("[1.0.0, 1.3.0)"), 0, null), new IRequirementChange[] {change3}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
45
45
46
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, b2, b3, p1, p2, p3});
46
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, b2, b3, p1, p2, p3});
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTest1b.java (-1 / +1 lines)
Lines 32-38 Link Here
32
		a1 = createIU("A", new Version("1.0.0"), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.1.0)"), null, false, true)});
32
		a1 = createIU("A", new Version("1.0.0"), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.1.0)"), null, false, true)});
33
		b1 = createIU("B", new Version(1, 0, 0), true);
33
		b1 = createIU("B", new Version(1, 0, 0), true);
34
		b2 = createIU("B", new Version(1, 2, 0), true);
34
		b2 = createIU("B", new Version(1, 2, 0), true);
35
		IRequirementChange change = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
35
		IRequirementChange change = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
36
		p1 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
36
		p1 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
37
37
38
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, b2, p1});
38
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, b2, p1});
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTest11.java (-1 / +1 lines)
Lines 32-38 Link Here
32
		a1 = createIU("A", new Version("1.0.0"), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.1.0)"), null, false, true, true)});
32
		a1 = createIU("A", new Version("1.0.0"), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.1.0)"), null, false, true, true)});
33
		b1 = createIU("B", new Version(1, 0, 0), true);
33
		b1 = createIU("B", new Version(1, 0, 0), true);
34
		b2 = createIU("B", new Version(1, 2, 0), true);
34
		b2 = createIU("B", new Version(1, 2, 0), true);
35
		IRequirementChange change = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), "foo=bar", false, false, true));
35
		IRequirementChange change = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), "foo=bar", false, false, true));
36
		p1 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
36
		p1 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
37
37
38
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, b2, p1});
38
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, b2, p1});
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTestMultiplePatch.java (-2 / +2 lines)
Lines 44-55 Link Here
44
		p2b = createIU(P2, new Version(1, 1, 1), true);
44
		p2b = createIU(P2, new Version(1, 1, 1), true);
45
		p3 = createIU(P3, new Version(1, 0, 0), true);
45
		p3 = createIU(P3, new Version(1, 0, 0), true);
46
46
47
		IRequirementChange changepp1 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
47
		IRequirementChange changepp1 = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
48
		IRequiredCapability lifeCyclepp1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
48
		IRequiredCapability lifeCyclepp1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
49
		IRequiredCapability[][] scopepp1 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0,1.0.0]"), null, false, false)}};
49
		IRequiredCapability[][] scopepp1 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0,1.0.0]"), null, false, false)}};
50
		pp1 = createIUPatch(PP1, new Version("3.0.0"), true, new IRequirementChange[] {changepp1}, scopepp1, lifeCyclepp1);
50
		pp1 = createIUPatch(PP1, new Version("3.0.0"), true, new IRequirementChange[] {changepp1}, scopepp1, lifeCyclepp1);
51
51
52
		IRequirementChange changepp2 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
52
		IRequirementChange changepp2 = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
53
		IRequiredCapability lifeCyclepp2 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
53
		IRequiredCapability lifeCyclepp2 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
54
		IRequiredCapability[][] scopepp2 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false)}};
54
		IRequiredCapability[][] scopepp2 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false)}};
55
		pp2 = createIUPatch(PP2, new Version("5.0.0"), true, new IRequirementChange[] {changepp2}, scopepp2, lifeCyclepp2);
55
		pp2 = createIUPatch(PP2, new Version("5.0.0"), true, new IRequirementChange[] {changepp2}, scopepp2, lifeCyclepp2);
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTest3.java (-1 / +1 lines)
Lines 37-43 Link Here
37
		a3 = createIU("A", new Version(3, 0, 0), true);
37
		a3 = createIU("A", new Version(3, 0, 0), true);
38
		b1 = createIU("B", new Version(1, 0, 0), true);
38
		b1 = createIU("B", new Version(1, 0, 0), true);
39
		b2 = createIU("B", new Version(2, 0, 0), true);
39
		b2 = createIU("B", new Version(2, 0, 0), true);
40
		IRequirementChange change = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[2.0.0, 2.1.0)"), null, false, false, true));
40
		IRequirementChange change = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[2.0.0, 2.1.0)"), null, false, false, true));
41
		IRequiredCapability lifeCycle = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "F", new VersionRange("[1.0.0, 1.1.0)"), null, false, false, false);
41
		IRequiredCapability lifeCycle = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "F", new VersionRange("[1.0.0, 1.1.0)"), null, false, false, false);
42
		p1 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0, 1.1.0]"), null, false, false, false)}}, lifeCycle);
42
		p1 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0, 1.1.0]"), null, false, false, false)}}, lifeCycle);
43
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, b2, p1, a3, f1, f2});
43
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, b2, p1, a3, f1, f2});
(-)src/org/eclipse/equinox/p2/tests/planner/SDKPatchingTest1.java (-1 / +1 lines)
Lines 31-37 Link Here
31
		changeVersion(newCommon, newVersionCommon);
31
		changeVersion(newCommon, newVersionCommon);
32
		newIUs.add(MetadataFactory.createInstallableUnit(newCommon));
32
		newIUs.add(MetadataFactory.createInstallableUnit(newCommon));
33
33
34
		IRequirementChange change = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "org.eclipse.equinox.common", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "org.eclipse.equinox.common", new VersionRange(newVersionCommon, true, newVersionCommon, true), null, false, false, true));
34
		IRequirementChange change = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "org.eclipse.equinox.common", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "org.eclipse.equinox.common", new VersionRange(newVersionCommon, true, newVersionCommon, true), null, false, false, true));
35
		IRequiredCapability lifeCycle = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "org.eclipse.rcp.feature.group", new VersionRange("[3.5.0.v20081110-9E9vFtpFlN1yW2Ray4WRVBYE, 3.5.0.v20081110-9E9vFtpFlN1yW2Ray4WRVBYE]"), null, false, false, true);
35
		IRequiredCapability lifeCycle = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "org.eclipse.rcp.feature.group", new VersionRange("[3.5.0.v20081110-9E9vFtpFlN1yW2Ray4WRVBYE, 3.5.0.v20081110-9E9vFtpFlN1yW2Ray4WRVBYE]"), null, false, false, true);
36
		patchInstallingCommon = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, new IRequiredCapability[0][0], lifeCycle);
36
		patchInstallingCommon = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {change}, new IRequiredCapability[0][0], lifeCycle);
37
37
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTestUpdate3.java (-2 / +2 lines)
Lines 42-53 Link Here
42
		p1b = createIU(P1, new Version(1, 1, 1), true);
42
		p1b = createIU(P1, new Version(1, 1, 1), true);
43
		p2b = createIU(P2, new Version(1, 1, 1), true);
43
		p2b = createIU(P2, new Version(1, 1, 1), true);
44
44
45
		IRequirementChange changepp1 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
45
		IRequirementChange changepp1 = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P1, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
46
		IRequiredCapability lifeCyclepp1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 3.0.0]"), null, false, false, true);
46
		IRequiredCapability lifeCyclepp1 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 3.0.0]"), null, false, false, true);
47
		IRequiredCapability[][] scopepp1 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 3.0.0]"), null, false, false)}};
47
		IRequiredCapability[][] scopepp1 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 3.0.0]"), null, false, false)}};
48
		pp1 = createIUPatch(PP1, new Version("3.0.0"), true, new IRequirementChange[] {changepp1}, scopepp1, lifeCyclepp1);
48
		pp1 = createIUPatch(PP1, new Version("3.0.0"), true, new IRequirementChange[] {changepp1}, scopepp1, lifeCyclepp1);
49
49
50
		IRequirementChange changepp2 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
50
		IRequirementChange changepp2 = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2, new VersionRange("[1.1.1, 1.1.1]"), null, false, false, true));
51
		IRequiredCapability lifeCyclepp2 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
51
		IRequiredCapability lifeCyclepp2 = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false, true);
52
		IRequiredCapability[][] scopepp2 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false)}};
52
		IRequiredCapability[][] scopepp2 = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, P2_FEATURE, new VersionRange("[1.0.0, 1.0.0]"), null, false, false)}};
53
		pp2 = createIUPatch(PP2, new Version("5.0.0"), true, new IRequirementChange[] {changepp2}, scopepp2, lifeCyclepp2);
53
		pp2 = createIUPatch(PP2, new Version("5.0.0"), true, new IRequirementChange[] {changepp2}, scopepp2, lifeCyclepp2);
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTest9.java (-3 / +3 lines)
Lines 35-45 Link Here
35
		b1 = createIU("B", new Version(1, 0, 0), true);
35
		b1 = createIU("B", new Version(1, 0, 0), true);
36
		b2 = createIU("B", new Version(1, 2, 0), true);
36
		b2 = createIU("B", new Version(1, 2, 0), true);
37
		c1 = createIU("C", new Version(1, 0, 0), true);
37
		c1 = createIU("C", new Version(1, 0, 0), true);
38
		IRequirementChange changeB = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
38
		IRequirementChange changeB = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
39
		IRequirementChange changeC = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
39
		IRequirementChange changeC = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
40
		p1 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {changeB, changeC}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
40
		p1 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {changeB, changeC}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
41
41
42
		IRequirementChange anotherChangeC = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", new VersionRange("[1.1.0, 1.3.0)"), null, true, false, true));
42
		IRequirementChange anotherChangeC = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", new VersionRange("[1.1.0, 1.3.0)"), null, true, false, true));
43
		pp1 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {changeB, anotherChangeC}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
43
		pp1 = createIUPatch("P", new Version("1.0.0"), true, new IRequirementChange[] {changeB, anotherChangeC}, new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false)}}, null);
44
44
45
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, b2, c1, p1, pp1});
45
		createTestMetdataRepository(new IInstallableUnit[] {a1, b1, b2, c1, p1, pp1});
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTest8.java (-2 / +2 lines)
Lines 46-56 Link Here
46
		req[2] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", new VersionRange("[2.0.0, 3.1.0)"), null, false, true);
46
		req[2] = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", new VersionRange("[2.0.0, 3.1.0)"), null, false, true);
47
		f1 = createIU("F", new Version(1, 0, 0), req);
47
		f1 = createIU("F", new Version(1, 0, 0), req);
48
48
49
		IRequirementChange changeA = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[2.0.0, 3.0.0)"), null, false, false, true));
49
		IRequirementChange changeA = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[2.0.0, 3.0.0)"), null, false, false, true));
50
		IRequiredCapability[][] scope = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "F", VersionRange.emptyRange, null, false, false, false)}};
50
		IRequiredCapability[][] scope = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "F", VersionRange.emptyRange, null, false, false, false)}};
51
		p1 = createIUPatch("P", new Version("1.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, false, null, new IRequirementChange[] {changeA}, scope, null);
51
		p1 = createIUPatch("P", new Version("1.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, false, null, new IRequirementChange[] {changeA}, scope, null);
52
52
53
		IRequirementChange changeB = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[2.0.0, 3.0.0)"), null, false, false, true));
53
		IRequirementChange changeB = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[2.0.0, 3.0.0)"), null, false, false, true));
54
		IRequiredCapability[][] scopePP = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "F", VersionRange.emptyRange, null, false, false, false)}};
54
		IRequiredCapability[][] scopePP = new IRequiredCapability[][] {{MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "F", VersionRange.emptyRange, null, false, false, false)}};
55
		r1 = createIUPatch("R", new Version("1.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, false, null, new IRequirementChange[] {changeB}, scopePP, null);
55
		r1 = createIUPatch("R", new Version("1.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, false, null, new IRequirementChange[] {changeB}, scopePP, null);
56
56
(-)src/org/eclipse/equinox/p2/tests/planner/PatchTest4.java (-2 / +2 lines)
Lines 42-49 Link Here
42
		b2 = createIU("B", new Version(2, 0, 0), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "D", new VersionRange("[2.0.0, 3.1.0)"), null, false, false, true)});
42
		b2 = createIU("B", new Version(2, 0, 0), new IRequiredCapability[] {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "D", new VersionRange("[2.0.0, 3.1.0)"), null, false, false, true)});
43
		d2 = createIU("D", new Version(2, 0, 0), true);
43
		d2 = createIU("D", new Version(2, 0, 0), true);
44
44
45
		IRequirementChange changeA = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[2.0.0, 2.1.0)"), null, false, false, true));
45
		IRequirementChange changeA = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[2.0.0, 2.1.0)"), null, false, false, true));
46
		IRequirementChange changeC = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "D", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "D", new VersionRange("[2.0.0, 2.1.0)"), null, false, false, true));
46
		IRequirementChange changeC = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "D", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "D", new VersionRange("[2.0.0, 2.1.0)"), null, false, false, true));
47
47
48
		IRequiredCapability lifeCycle = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "F", VersionRange.emptyRange, null, false, false, false);
48
		IRequiredCapability lifeCycle = MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "F", VersionRange.emptyRange, null, false, false, false);
49
		IRequiredCapability[][] scope = new IRequiredCapability[][] { {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0, 1.1.0]"), null, false, false, false)}, {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", new VersionRange("[1.0.0, 1.1.0]"), null, false, false, false)}};
49
		IRequiredCapability[][] scope = new IRequiredCapability[][] { {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0, 1.1.0]"), null, false, false, false)}, {MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "C", new VersionRange("[1.0.0, 1.1.0]"), null, false, false, false)}};
(-)src/org/eclipse/equinox/p2/tests/metadata/repository/SPIMetadataRepositoryTest.java (+4 lines)
Lines 9-14 Link Here
9
******************************************************************************/
9
******************************************************************************/
10
package org.eclipse.equinox.p2.tests.metadata.repository;
10
package org.eclipse.equinox.p2.tests.metadata.repository;
11
11
12
import org.eclipse.equinox.internal.p2.metadata.RequiredCapability;
13
14
import org.eclipse.equinox.internal.p2.metadata.ProvidedCapability;
15
12
import java.io.File;
16
import java.io.File;
13
import java.io.UnsupportedEncodingException;
17
import java.io.UnsupportedEncodingException;
14
import java.math.BigInteger;
18
import java.math.BigInteger;
(-)src/org/eclipse/equinox/p2/tests/touchpoint/eclipse/AddRepositoryActionTest.java (+2 lines)
Lines 10-15 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.equinox.p2.tests.touchpoint.eclipse;
11
package org.eclipse.equinox.p2.tests.touchpoint.eclipse;
12
12
13
import org.eclipse.equinox.internal.p2.metadata.TouchpointInstruction;
14
13
import java.net.URI;
15
import java.net.URI;
14
import java.util.HashMap;
16
import java.util.HashMap;
15
import java.util.Map;
17
import java.util.Map;
(-)src/org/eclipse/equinox/p2/tests/metadata/IUPersistenceTest.java (-6 / +6 lines)
Lines 264-272 Link Here
264
		ITouchpointData tpData = createTouchpointData(instructions);
264
		ITouchpointData tpData = createTouchpointData(instructions);
265
		IUpdateDescriptor update = createUpdateDescriptor();
265
		IUpdateDescriptor update = createUpdateDescriptor();
266
		boolean singleton = false;
266
		boolean singleton = false;
267
		IRequirementChange change1 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
267
		IRequirementChange change1 = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
268
		IRequirementChange change2 = new RequirementChange(null, MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
268
		IRequirementChange change2 = MetadataFactory.createRequirementChange(null, MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
269
		IRequirementChange change3 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), null);
269
		IRequirementChange change3 = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), null);
270
		IRequiredCapability[][] scope = new IRequiredCapability[][] { {MetadataFactory.createRequiredCapability("foo", "bar", null, null, true, true), MetadataFactory.createRequiredCapability("foo", "bar", null, null, true, true)}, {MetadataFactory.createRequiredCapability("zoo", "far", null, null, true, true)}};
270
		IRequiredCapability[][] scope = new IRequiredCapability[][] { {MetadataFactory.createRequiredCapability("foo", "bar", null, null, true, true), MetadataFactory.createRequiredCapability("foo", "bar", null, null, true, true)}, {MetadataFactory.createRequiredCapability("zoo", "far", null, null, true, true)}};
271
		IInstallableUnitPatch iu = createIUPatch(id, version, filter, requirements, additionalProvides, propertyMap, TOUCHPOINT_OSGI, tpData, singleton, update, new IRequirementChange[] {change1, change2, change3}, scope, null);
271
		IInstallableUnitPatch iu = createIUPatch(id, version, filter, requirements, additionalProvides, propertyMap, TOUCHPOINT_OSGI, tpData, singleton, update, new IRequirementChange[] {change1, change2, change3}, scope, null);
272
		return iu;
272
		return iu;
Lines 280-288 Link Here
280
		ITouchpointData tpData = createTouchpointData(instructions);
280
		ITouchpointData tpData = createTouchpointData(instructions);
281
		IUpdateDescriptor update = createUpdateDescriptor();
281
		IUpdateDescriptor update = createUpdateDescriptor();
282
		boolean singleton = false;
282
		boolean singleton = false;
283
		IRequirementChange change1 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
283
		IRequirementChange change1 = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
284
		IRequirementChange change2 = new RequirementChange(null, MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
284
		IRequirementChange change2 = MetadataFactory.createRequirementChange(null, MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
285
		IRequirementChange change3 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), null);
285
		IRequirementChange change3 = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), null);
286
		IRequiredCapability[][] scope = new IRequiredCapability[][] {{}};
286
		IRequiredCapability[][] scope = new IRequiredCapability[][] {{}};
287
		IInstallableUnitPatch iu = createIUPatch(id, version, filter, requirements, additionalProvides, propertyMap, TOUCHPOINT_OSGI, tpData, singleton, update, new IRequirementChange[] {change1, change2, change3}, scope, null);
287
		IInstallableUnitPatch iu = createIUPatch(id, version, filter, requirements, additionalProvides, propertyMap, TOUCHPOINT_OSGI, tpData, singleton, update, new IRequirementChange[] {change1, change2, change3}, scope, null);
288
		return iu;
288
		return iu;
(-)src/org/eclipse/equinox/p2/tests/metadata/IUPatchPersistenceTest.java (-3 / +3 lines)
Lines 286-294 Link Here
286
		ITouchpointData tpData = createTouchpointData(instructions);
286
		ITouchpointData tpData = createTouchpointData(instructions);
287
		IUpdateDescriptor update = createUpdateDescriptor();
287
		IUpdateDescriptor update = createUpdateDescriptor();
288
		boolean singleton = false;
288
		boolean singleton = false;
289
		IRequirementChange change1 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
289
		IRequirementChange change1 = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
290
		IRequirementChange change2 = new RequirementChange(null, MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
290
		IRequirementChange change2 = MetadataFactory.createRequirementChange(null, MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.1.0, 1.3.0)"), null, false, false, true));
291
		IRequirementChange change3 = new RequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), null);
291
		IRequirementChange change3 = MetadataFactory.createRequirementChange(MetadataFactory.createRequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), null);
292
		IRequiredCapability[][] scope = new IRequiredCapability[][] { {MetadataFactory.createRequiredCapability("foo", "bar", null, null, true, true), MetadataFactory.createRequiredCapability("foo", "bar", null, null, true, true)}, {MetadataFactory.createRequiredCapability("zoo", "far", null, null, true, true)}};
292
		IRequiredCapability[][] scope = new IRequiredCapability[][] { {MetadataFactory.createRequiredCapability("foo", "bar", null, null, true, true), MetadataFactory.createRequiredCapability("foo", "bar", null, null, true, true)}, {MetadataFactory.createRequiredCapability("zoo", "far", null, null, true, true)}};
293
		IRequiredCapability lifeCycle = MetadataFactory.createRequiredCapability("zoo", "x", null, null, false, false, false);
293
		IRequiredCapability lifeCycle = MetadataFactory.createRequiredCapability("zoo", "x", null, null, false, false, false);
294
		IInstallableUnitPatch iu = createIUPatch(id, version, filter, requirements, additionalProvides, propertyMap, TOUCHPOINT_OSGI, tpData, singleton, update, new IRequirementChange[] {change1, change2, change3}, scope, lifeCycle);
294
		IInstallableUnitPatch iu = createIUPatch(id, version, filter, requirements, additionalProvides, propertyMap, TOUCHPOINT_OSGI, tpData, singleton, update, new IRequirementChange[] {change1, change2, change3}, scope, lifeCycle);
(-)src/org/eclipse/equinox/internal/p2/metadata/repository/io/MetadataParser.java (-1 / +1 lines)
Lines 406-412 Link Here
406
		}
406
		}
407
407
408
		protected void finished() {
408
		protected void finished() {
409
			requirementChanges.add(new RequirementChange(from.size() == 0 ? null : (IRequiredCapability) from.get(0), to.size() == 0 ? null : (IRequiredCapability) to.get(0)));
409
			requirementChanges.add(MetadataFactory.createRequirementChange(from.size() == 0 ? null : (IRequiredCapability) from.get(0), to.size() == 0 ? null : (IRequiredCapability) to.get(0)));
410
		}
410
		}
411
	}
411
	}
412
412
(-)src/org/eclipse/equinox/internal/provisional/p2/metadata/generator/MetadataGeneratorHelper.java (-1 / +1 lines)
Lines 841-847 Link Here
841
			}
841
			}
842
			if (entries[i].isPlugin()) {
842
			if (entries[i].isPlugin()) {
843
				IRequiredCapability from = MetadataFactory.createRequiredCapability(IU_NAMESPACE, getTransformedId(entries[i].getId(), entries[i].isPlugin(), /*isGroup*/true), VersionRange.emptyRange, getFilter(entries[i]), entries[i].isOptional(), false);
843
				IRequiredCapability from = MetadataFactory.createRequiredCapability(IU_NAMESPACE, getTransformedId(entries[i].getId(), entries[i].isPlugin(), /*isGroup*/true), VersionRange.emptyRange, getFilter(entries[i]), entries[i].isOptional(), false);
844
				requirementChanges.add(new RequirementChange(from, req));
844
				requirementChanges.add(MetadataFactory.createRequirementChange(from, req));
845
				continue;
845
				continue;
846
			}
846
			}
847
			patchRequirements.add(req);
847
			patchRequirements.add(req);

Return to bug 260913