You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-commits@axis.apache.org by sc...@apache.org on 2010/05/10 18:28:22 UTC
svn commit: r942814 - in /axis/axis2/java/core/trunk/modules:
jaxws-integration/test/org/apache/axis2/jaxws/misc/
jaxws-integration/test/org/apache/axis2/jaxws/misc/a/
jaxws-integration/test/org/apache/axis2/jaxws/misc/b/
jaxws/src/org/apache/axis2/jax...
Author: scheu
Date: Mon May 10 16:28:22 2010
New Revision: 942814
URL: http://svn.apache.org/viewvc?rev=942814&view=rev
Log:
AXIS2-4708
Contributor:Rich Scheuerle
Summary: JAX-WS change to prefer referenced JAXB classes during JAXBContext construction.
A validation test is contributed with the code.
Added:
axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/misc/a/
axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/misc/a/Bean1.java
axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/misc/a/Bean2.java
axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/misc/b/
axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/misc/b/Bean1.java
axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/misc/b/Bean2.java
Modified:
axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/misc/JAXBContextTest.java
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/JAXBContextFromClasses.java
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/JAXBUtils.java
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/runtime/description/marshal/impl/PackageSetBuilder.java
Modified: axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/misc/JAXBContextTest.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/misc/JAXBContextTest.java?rev=942814&r1=942813&r2=942814&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/misc/JAXBContextTest.java (original)
+++ axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/misc/JAXBContextTest.java Mon May 10 16:28:22 2010
@@ -186,4 +186,30 @@ public class JAXBContextTest extends Abs
assertTrue(jaxbContext4 != jaxbContext3);
assertTrue(context4.contains("org.test.addnumbers"));
}
+
+ public void test03() throws JAXBException {
+ // Simulate a web services that references a.Bean2 and b.Bean1
+ // Note that both these beans are in the same namespace
+ // but not the same package.
+ // Also note that there are other colliding classes in the
+ // packages.
+ TreeSet<String> context = new TreeSet<String>();
+ context.add("org.apache.axis2.jaxws.misc.a");
+ context.add("org.apache.axis2.jaxws.misc.b");
+ context.add("[org.apache.axis2.jaxws.misc.a.Bean2]");
+ context.add("[org.apache.axis2.jaxws.misc.b.Bean1]");
+
+
+ JAXBContext jaxbContext = JAXBUtils.getJAXBContext(context);
+
+ // Ensure that the jaxbContext IS produced and contains
+ // both a.Bean2 and b.Bean1.
+ String jaxbContextString = jaxbContext.toString();
+
+ assertTrue("The JAXBContext should contain a.Bean2: " + jaxbContextString,
+ jaxbContextString.indexOf("org.apache.axis2.jaxws.misc.a.Bean2") > 0);
+ assertTrue("The JAXBContext should contain b.Bean1: " + jaxbContextString,
+ jaxbContextString.indexOf("org.apache.axis2.jaxws.misc.b.Bean1") > 0);
+
+ }
}
\ No newline at end of file
Added: axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/misc/a/Bean1.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/misc/a/Bean1.java?rev=942814&view=auto
==============================================================================
--- axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/misc/a/Bean1.java (added)
+++ axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/misc/a/Bean1.java Mon May 10 16:28:22 2010
@@ -0,0 +1,25 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.axis2.jaxws.misc.a;
+
+import javax.xml.bind.annotation.XmlType;
+
+@XmlType(name="bean1", namespace="urn://sample")
+public class Bean1 {
+}
Added: axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/misc/a/Bean2.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/misc/a/Bean2.java?rev=942814&view=auto
==============================================================================
--- axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/misc/a/Bean2.java (added)
+++ axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/misc/a/Bean2.java Mon May 10 16:28:22 2010
@@ -0,0 +1,25 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.axis2.jaxws.misc.a;
+
+import javax.xml.bind.annotation.XmlType;
+
+@XmlType(name="bean2", namespace="urn://sample")
+public class Bean2 {
+}
Added: axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/misc/b/Bean1.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/misc/b/Bean1.java?rev=942814&view=auto
==============================================================================
--- axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/misc/b/Bean1.java (added)
+++ axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/misc/b/Bean1.java Mon May 10 16:28:22 2010
@@ -0,0 +1,25 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.axis2.jaxws.misc.b;
+
+import javax.xml.bind.annotation.XmlType;
+
+@XmlType(name="bean1", namespace="urn://sample")
+public class Bean1 {
+}
Added: axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/misc/b/Bean2.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/misc/b/Bean2.java?rev=942814&view=auto
==============================================================================
--- axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/misc/b/Bean2.java (added)
+++ axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/misc/b/Bean2.java Mon May 10 16:28:22 2010
@@ -0,0 +1,25 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.axis2.jaxws.misc.b;
+
+import javax.xml.bind.annotation.XmlType;
+
+@XmlType(name="bean2", namespace="urn://sample")
+public class Bean2 {
+}
Modified: axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/JAXBContextFromClasses.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/JAXBContextFromClasses.java?rev=942814&r1=942813&r2=942814&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/JAXBContextFromClasses.java (original)
+++ axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/JAXBContextFromClasses.java Mon May 10 16:28:22 2010
@@ -66,12 +66,21 @@ public class JAXBContextFromClasses {
*
* @param classArray
* @param cl
+ * @param properties
+ * @param classRefs optional List<String> of class references
* @return JAXBContext
* @throws JAXBException
*/
public static JAXBContext newInstance(Class[] classArray,
+ ClassLoader cl,
+ Map<String, ?> properties) throws JAXBException {
+ return newInstance(classArray, cl, properties, new ArrayList<String>());
+ }
+
+ public static JAXBContext newInstance(Class[] classArray,
ClassLoader cl,
- Map<String, ?> properties)
+ Map<String, ?> properties,
+ List<String> classRefs)
throws JAXBException {
JAXBContext jaxbContext = null;
try {
@@ -95,7 +104,7 @@ public class JAXBContextFromClasses {
original.add(classArray[i]);
}
ArrayList<Class> best = new ArrayList<Class>();
- jaxbContext = findBestSet(original, cl, best, properties);
+ jaxbContext = findBestSet(original, cl, best, properties, classRefs);
}
@@ -144,40 +153,43 @@ public class JAXBContextFromClasses {
/**
* Utility class that quickly divides a list of classes into two categories.
- * The primary category classes contain JAXB annotations.
- * The secondary category classes do not contain JAXB annotations
+ * The primary category classes contains classes that are referenced.
+ * The secondary category classes are the remaining classes
* @param original
* @param primary
* @param secondary
*/
- static void separate(List<Class> original, List<Class> primary, List<Class> secondary) {
+ static void separate(List<Class> original,
+ List<Class> primary,
+ List<Class> secondary,
+ List<String> classRefs) {
for (int i=0; i<original.size(); i++) {
Class cls = original.get(i);
+ String clsName = cls.getCanonicalName();
if (commonArrayClasses.contains(cls)) {
if (log.isDebugEnabled()) {
log.debug("This looks like a JAXB common class. Adding it to primary list:" +
cls.getName());
}
primary.add(cls);
- } else if (getAnnotation(cls, XmlType.class) != null ||
- getAnnotation(cls, XmlRootElement.class) != null) {
+ } else if (classRefs.contains(clsName)) {
if (log.isDebugEnabled()) {
- log.debug("This looks like a JAXB class. Adding it to primary list:" +
- cls.getName());
+ log.debug("This is a referenced class. Adding it to primary list:" +
+ clsName);
}
Package pkg = cls.getPackage();
if (pkg != null && pkg.getName().endsWith(".jaxws")) {
if (log.isDebugEnabled()) {
log.debug("This looks like a jaxws generated Class. Adding it to the front of the primary list:" +
- cls.getName());
+ cls.getName());
}
primary.add(0,cls); // Add to the front of the list
} else {
- primary.add(cls); // This looks like a JAXB class...add it
+ primary.add(cls);
}
} else {
if (log.isDebugEnabled()) {
- log.debug("This may not be a JAXB class. Adding it to secondary list:" +
+ log.debug("This class is not referenced by the web service. Adding it to secondary list:" +
cls.getName());
}
Package pkg = cls.getPackage();
@@ -188,7 +200,7 @@ public class JAXBContextFromClasses {
}
secondary.add(0,cls); // Add to the front of the list
} else {
- secondary.add(cls); // This looks like it might be something else...not JAXB
+ secondary.add(cls);
}
}
}
@@ -199,13 +211,15 @@ public class JAXBContextFromClasses {
* of classes and returns the JAXBContext for this minimal set.
* @param original List<Class>
* @param cl ClassLoader
- * @param ListMClass> is populated with the minimal, best set of classes
+ * @param List<Class> is populated with the minimal, best set of classes
+ * @param List<String> input list of classes that are directly referenced in the web service api
* @return JAXBContext
*/
static JAXBContext findBestSet(List<Class> original,
ClassLoader cl,
List<Class> best,
- Map<String, ?> properties) {
+ Map<String, ?> properties,
+ List<String> classRefs) {
if (log.isDebugEnabled()) {
log.debug("Could not construct JAXBContext with the initial list.");
@@ -214,11 +228,11 @@ public class JAXBContextFromClasses {
JAXBContext jc = null;
Class[] clsArray = new Class[0];
- // Divide the list into the classes that have JAXB annotations (primary)
- // and those that do not (secondary)
+ // Divide the list into the classes that are referenced (primary)
+ // and the rest (secondary)
ArrayList<Class> primary = new ArrayList<Class> ();
ArrayList<Class> secondary = new ArrayList<Class> ();
- separate(original, primary, secondary);
+ separate(original, primary, secondary, classRefs);
// Prime the pump
// Build a JAXBContext with the primary classes
Modified: axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/JAXBUtils.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/JAXBUtils.java?rev=942814&r1=942813&r2=942814&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/JAXBUtils.java (original)
+++ axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/JAXBUtils.java Mon May 10 16:28:22 2010
@@ -287,20 +287,27 @@ public class JAXBUtils {
TreeSet<String> validContextPackages = new TreeSet<String>(contextPackages);
- pruneDirectives(validContextPackages);
+ List<String> classRefs = pruneDirectives(validContextPackages);
int numPackages = validContextPackages.size();
ClassLoader tryCl = cl;
- contextValue = createJAXBContextValue(validContextPackages, cl, forceArrays, properties);
+ contextValue = createJAXBContextValue(validContextPackages,
+ cl,
+ forceArrays,
+ properties,
+ classRefs);
// If we don't get all the classes, try the cached classloader
if (cacheKey != null && numPackages != validContextPackages.size()) {
tryCl = cacheKey;
validContextPackages = new TreeSet<String>(contextPackages);
- pruneDirectives(validContextPackages);
- contextValue = createJAXBContextValue(validContextPackages, cacheKey,
- forceArrays, properties);
+ classRefs = pruneDirectives(validContextPackages);
+ contextValue = createJAXBContextValue(validContextPackages,
+ cacheKey,
+ forceArrays,
+ properties,
+ classRefs);
}
synchronized (jaxbMap) {
// Add the context value with the original package set
@@ -370,10 +377,12 @@ public class JAXBUtils {
* "com.A"
* "com.C"
* @param contextPackages
+ * @return List<String> class references
*/
- protected static void pruneDirectives(TreeSet<String> contextPackages) {
+ protected static List<String> pruneDirectives(TreeSet<String> contextPackages) {
List<String> removePkgsList = new ArrayList<String>();
List<String> strongPkgsList = new ArrayList<String>();
+ List<String> classRefs = new ArrayList<String>();
// Walk the contextPackages looking for entries representing directives
Iterator<String> it = contextPackages.iterator();
@@ -404,6 +413,17 @@ public class JAXBUtils {
strongPkg = strongPkg.trim();
strongPkgsList.add(strongPkg);
}
+ if (entry.startsWith("[")) {
+ if (log.isDebugEnabled()) {
+ log.debug("Class Reference found:" + entry);
+ }
+ // Remove the entry using an iterator remove()
+ it.remove();
+
+ // Store the class
+ String cls = entry.substring(1, entry.length()-1);
+ classRefs.add(cls);
+ }
}
// Now walk the contextPackages and remove the overriden packages
@@ -422,6 +442,7 @@ public class JAXBUtils {
// Now add back all of the strong packages
contextPackages.addAll(strongPkgsList);
+ return classRefs;
}
/**
@@ -431,13 +452,15 @@ public class JAXBUtils {
* @param cl ClassLoader
* @param forceArrays boolean (true if JAXBContext must include all arrays)
* @param properties Map of properties for the JAXBContext.newInstance creation method
+ * @param classRefs List of class references
* @return JAXBContextValue (JAXBContext + constructionType)
* @throws JAXBException
*/
private static JAXBContextValue createJAXBContextValue(TreeSet<String> contextPackages,
ClassLoader cl,
boolean forceArrays,
- Map<String, ?> properties) throws JAXBException {
+ Map<String, ?> properties,
+ List<String> classRefs) throws JAXBException {
JAXBContextValue contextValue = null;
if (log.isDebugEnabled()) {
@@ -597,7 +620,7 @@ public class JAXBUtils {
//Lets add all common array classes
addCommonArrayClasses(fullList);
Class[] classArray = fullList.toArray(new Class[0]);
- JAXBContext context = JAXBContext_newInstance(classArray, cl, properties);
+ JAXBContext context = JAXBContext_newInstance(classArray, cl, properties, classRefs);
if (context != null) {
if (forceArrays) {
contextValue = new JAXBContextValue(context, CONSTRUCTION_TYPE.BY_CLASS_ARRAY_PLUS_ARRAYS);
@@ -1287,12 +1310,15 @@ public class JAXBUtils {
*
* @param classArray
* @param cl ClassLoader that loaded the classes
+ * @param properties Map<String, ?>
+ * @param ClassRefs List<String>
* @return
* @throws Exception
*/
private static JAXBContext JAXBContext_newInstance(final Class[] classArray,
final ClassLoader cl,
- Map<String, ?> properties)
+ Map<String, ?> properties,
+ List<String> classRefs)
throws JAXBException {
// NOTE: This method must remain private because it uses AccessController
JAXBContext jaxbContext = null;
@@ -1307,7 +1333,10 @@ public class JAXBUtils {
}
// Get JAXBContext from classes
- jaxbContext = JAXBContextFromClasses.newInstance(classArray, cl, properties);
+ jaxbContext = JAXBContextFromClasses.newInstance(classArray,
+ cl,
+ properties,
+ classRefs);
return jaxbContext;
}
Modified: axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/runtime/description/marshal/impl/PackageSetBuilder.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/runtime/description/marshal/impl/PackageSetBuilder.java?rev=942814&r1=942813&r2=942814&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/runtime/description/marshal/impl/PackageSetBuilder.java (original)
+++ axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/runtime/description/marshal/impl/PackageSetBuilder.java Mon May 10 16:28:22 2010
@@ -296,21 +296,25 @@ public class PackageSetBuilder {
}
// Also consider the request and response wrappers
- String requestWrapperPkg = getPackageFromClassName(msrd.getRequestWrapperClassName(opDesc));
+ String requestWrapperName = msrd.getRequestWrapperClassName(opDesc);
+ String requestWrapperPkg = getPackageFromClassName(requestWrapperName);
if (log.isDebugEnabled()) {
log.debug("Package from Request Wrapper annotation = " + requestWrapperPkg);
}
if (requestWrapperPkg != null) {
set.add(requestWrapperPkg);
set.add("@" + requestWrapperPkg); // Indicates a package from an actual class reference (versus namespace)
+ set.add("[" + requestWrapperName + "]"); // Indicates a actual class reference
}
- String responseWrapperPkg = getPackageFromClassName(msrd.getResponseWrapperClassName(opDesc));
+ String responseWrapperName = msrd.getResponseWrapperClassName(opDesc);
+ String responseWrapperPkg = getPackageFromClassName(responseWrapperName);
if (log.isDebugEnabled()) {
log.debug("Package from Response Wrapper annotation = " + responseWrapperPkg);
}
if (responseWrapperPkg != null) {
set.add(responseWrapperPkg);
set.add("@" + responseWrapperPkg); // Indicates a package from an actual class reference (versus namespace)
+ set.add("[" + responseWrapperName + "]"); // Indicates a actual class reference
}
// The wrapper class and the element defining the wrapper may be
@@ -353,6 +357,7 @@ public class PackageSetBuilder {
if (pkg != null) {
set.add(pkg);
set.add("@" + pkg); // Indicates a package from an actual class reference (versus namespace)
+ set.add("[" + cls.getCanonicalName() + "]"); // Indicates a actual class reference
}
}
}
@@ -384,6 +389,7 @@ public class PackageSetBuilder {
if (pkg != null) {
set.add(pkg);
set.add("@" + pkg); // Indicates a package from an actual class reference (versus namespace)
+ set.add("[" + paramClass.getCanonicalName() + "]"); // Indicates a actual class reference
}
}
}
@@ -471,6 +477,7 @@ public class PackageSetBuilder {
if (pkg != null) {
set.add(pkg);
set.add("@" + pkg); // Indicates a package from an actual class reference (versus namespace)
+ set.add("[" + tClass.getCanonicalName() + "]"); // Indicates a actual class reference
}
// If there is an xmlType, and it maps to a package then add
// an override if the package is different.
@@ -519,6 +526,7 @@ public class PackageSetBuilder {
if (pkg != null) {
set.add(pkg);
set.add("@" + pkg); // Indicates a package from an actual class reference (versus namespace)
+ set.add("[" + eClass.getCanonicalName() + "]"); // Indicates a actual class reference
}
if (pkg != null) {
@@ -661,6 +669,7 @@ public class PackageSetBuilder {
}
set.add(pkg);
set.add("@" + pkg); // Indicates a package from an actual class reference (versus namespace)
+ set.add("[" + seeAlso[i].getCanonicalName() + "]"); // Indicates a actual class reference
}
}
}