Merge pull request #100 from coheigea/parser-doctypes

Disallow DocTypes in the Blueprint Parser
diff --git a/blueprint/blueprint-cm/src/main/java/org/apache/aries/blueprint/compendium/cm/CmPropertyPlaceholder.java b/blueprint/blueprint-cm/src/main/java/org/apache/aries/blueprint/compendium/cm/CmPropertyPlaceholder.java
index 840d3c6..1af990a 100644
--- a/blueprint/blueprint-cm/src/main/java/org/apache/aries/blueprint/compendium/cm/CmPropertyPlaceholder.java
+++ b/blueprint/blueprint-cm/src/main/java/org/apache/aries/blueprint/compendium/cm/CmPropertyPlaceholder.java
@@ -18,6 +18,7 @@
  */
 package org.apache.aries.blueprint.compendium.cm;
 
+import java.util.Arrays;
 import java.util.Dictionary;
 import java.util.Enumeration;
 import java.util.Properties;
@@ -40,7 +41,7 @@
     private static final Logger LOGGER = LoggerFactory.getLogger(CmPropertyPlaceholder.class);
 
     private ExtendedBlueprintContainer blueprintContainer;
-    private ConfigurationAdmin configAdmin; 
+    private ConfigurationAdmin configAdmin;
     private String persistentId;
     private String updateStrategy;
     private ManagedObjectManager managedObjectManager;
@@ -154,10 +155,12 @@
                     if (v2 != null) {
                         return false;
                     }
-                } else {
-                    if (!v1.equals(v2)) {
+                } else if (v1 instanceof Object[] && v2 instanceof Object[]) {
+                    if (!Arrays.deepEquals((Object[]) v1, (Object[]) v2)) {
                         return false;
                     }
+                } else if (!v1.equals(v2)) {
+                    return false;
                 }
             }
             return true;
diff --git a/esa-ant-task/src/main/java/org/apache/aries/ant/taskdefs/BundleSelector.java b/esa-ant-task/src/main/java/org/apache/aries/ant/taskdefs/BundleSelector.java
index 31793f8..75bdbe3 100755
--- a/esa-ant-task/src/main/java/org/apache/aries/ant/taskdefs/BundleSelector.java
+++ b/esa-ant-task/src/main/java/org/apache/aries/ant/taskdefs/BundleSelector.java
@@ -60,7 +60,7 @@
 			}
 			catch (Exception e) {
 				// nothing to do
-				isValid = isValid && false;
+				isValid = false;
 			}
 			finally {
 				try {
diff --git a/jndi/jndi-core/src/main/java/org/apache/aries/jndi/ContextHelper.java b/jndi/jndi-core/src/main/java/org/apache/aries/jndi/ContextHelper.java
index e0b5a4d..4a69607 100644
--- a/jndi/jndi-core/src/main/java/org/apache/aries/jndi/ContextHelper.java
+++ b/jndi/jndi-core/src/main/java/org/apache/aries/jndi/ContextHelper.java
@@ -181,23 +181,24 @@
     }
 
     private static Optional<ContextProvider> getInitialContextUsingBuilder(BundleContext context,
-                                                                           Hashtable<?, ?> environment) {
-        for (ServiceReference<InitialContextFactoryBuilder> ref : Activator.getInitialContextFactoryBuilderServices()) {
-            InitialContextFactoryBuilder builder = Activator.getService(context, ref);
-            try {
-                InitialContextFactory factory = builder.createInitialContextFactory(environment);
-                if (factory != null) {
-                    return Optional.of(new SingleContextProvider(context, ref, factory.getInitialContext(environment)));
-                }
-            } catch (NamingException ne) {
-                // ignore this, if the builder fails we want to move onto the next one
-                logger.log(Level.FINE, "Exception caught", ne);
-            } catch (NullPointerException npe) {
-                logger.log(Level.SEVERE, "NPE caught in ContextHelper.getInitialContextUsingBuilder. context=" + context + " ref=" + ref);
-                throw npe;
-            }
-        }
-        return Optional.empty();
+    		Hashtable<?, ?> environment) throws NamingException {
+    	
+    	for (ServiceReference<InitialContextFactoryBuilder> ref : Activator.getInitialContextFactoryBuilderServices()) {
+    		InitialContextFactoryBuilder builder = Activator.getService(context, ref);
+    		InitialContextFactory factory=null;
+    		try {
+    			factory = builder.createInitialContextFactory(environment);
+    		} catch (NamingException ne) {
+    			// ignore this, if the builder fails we want to move onto the next one
+    			logger.log(Level.FINE, "Exception caught", ne);
+    		} catch (NullPointerException npe) {
+    			logger.log(Level.SEVERE, "NPE caught in ContextHelper.getInitialContextUsingBuilder. context=" + context + " ref=" + ref);
+    			throw npe;
+    		}
+    		if (factory != null) {
+    			return Optional.of(new SingleContextProvider(context, ref, factory.getInitialContext(environment)));
+    		}
+    	}
+    	return Optional.empty();
     }
-
 }
diff --git a/proxy/proxy-impl/pom.xml b/proxy/proxy-impl/pom.xml
index 80161d7..545d535 100644
--- a/proxy/proxy-impl/pom.xml
+++ b/proxy/proxy-impl/pom.xml
@@ -77,13 +77,13 @@
             <groupId>org.ow2.asm</groupId>
             <artifactId>asm</artifactId>
             <optional>true</optional>
-            <version>7.1</version>
+            <version>7.2</version>
         </dependency>
         <dependency>
             <groupId>org.ow2.asm</groupId>
             <artifactId>asm-commons</artifactId>
             <optional>true</optional>
-            <version>7.1</version>
+            <version>7.2</version>
         </dependency>
         <dependency>
             <groupId>org.slf4j</groupId>
diff --git a/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/ProxyUtils.java b/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/ProxyUtils.java
index e91cbf4..0babe4e 100644
--- a/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/ProxyUtils.java
+++ b/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/ProxyUtils.java
@@ -36,49 +36,53 @@
    */
   public static int getWeavingJavaVersion() {
     if (weavingJavaVersion == -1 ) {
-    	//In order to avoid an inconsistent stack error the version of the woven byte code needs to match
-    	//the level of byte codes in the original class
-    	switch(JAVA_CLASS_VERSION) {
-                        case Opcodes.V13:
-                                LOGGER.debug("Weaving to Java 13");
-                                weavingJavaVersion = Opcodes.V13;
-                                break;
-                        case Opcodes.V12:
-                                LOGGER.debug("Weaving to Java 12");
-                                weavingJavaVersion = Opcodes.V12;
-                                break;
-			case Opcodes.V11:
-				LOGGER.debug("Weaving to Java 11");
-				weavingJavaVersion = Opcodes.V11;
-				break;
-			case Opcodes.V10:
-				LOGGER.debug("Weaving to Java 10");
-				weavingJavaVersion = Opcodes.V10;
-				break;
-			case Opcodes.V9:
-				LOGGER.debug("Weaving to Java 9");
-				weavingJavaVersion = Opcodes.V9;
-				break;
-    		case Opcodes.V1_8:
-    			LOGGER.debug("Weaving to Java 8");
-    			weavingJavaVersion = Opcodes.V1_8;
-    			break;
-    		case Opcodes.V1_7:
-    			LOGGER.debug("Weaving to Java 7");
-    			weavingJavaVersion = Opcodes.V1_7;
-    			break;
-    		case Opcodes.V1_6:
-    			LOGGER.debug("Weaving to Java 6");
-    			weavingJavaVersion = Opcodes.V1_6;
-    			break;
-    		case Opcodes.V1_5:
-    			LOGGER.debug("Weaving to Java 5");
-    			weavingJavaVersion = Opcodes.V1_5;
-    			break;
-    		default:
-    			//aries should work with Java 5 or above - also will highlight when a higher level (and unsupported) level of Java is released
-    			throw new IllegalArgumentException("Invalid Java version " + JAVA_CLASS_VERSION);
-    	}
+      //In order to avoid an inconsistent stack error the version of the woven byte code needs to match
+      //the level of byte codes in the original class
+      switch(JAVA_CLASS_VERSION) {
+        case Opcodes.V14:
+          LOGGER.debug("Weaving to Java 14");
+          weavingJavaVersion = Opcodes.V14;
+          break;
+        case Opcodes.V13:
+          LOGGER.debug("Weaving to Java 13");
+          weavingJavaVersion = Opcodes.V13;
+          break;
+        case Opcodes.V12:
+          LOGGER.debug("Weaving to Java 12");
+          weavingJavaVersion = Opcodes.V12;
+          break;
+        case Opcodes.V11:
+          LOGGER.debug("Weaving to Java 11");
+          weavingJavaVersion = Opcodes.V11;
+          break;
+        case Opcodes.V10:
+          LOGGER.debug("Weaving to Java 10");
+          weavingJavaVersion = Opcodes.V10;
+          break;
+        case Opcodes.V9:
+          LOGGER.debug("Weaving to Java 9");
+          weavingJavaVersion = Opcodes.V9;
+          break;
+        case Opcodes.V1_8:
+          LOGGER.debug("Weaving to Java 8");
+          weavingJavaVersion = Opcodes.V1_8;
+          break;
+        case Opcodes.V1_7:
+          LOGGER.debug("Weaving to Java 7");
+          weavingJavaVersion = Opcodes.V1_7;
+          break;
+        case Opcodes.V1_6:
+          LOGGER.debug("Weaving to Java 6");
+          weavingJavaVersion = Opcodes.V1_6;
+          break;
+        case Opcodes.V1_5:
+          LOGGER.debug("Weaving to Java 5");
+          weavingJavaVersion = Opcodes.V1_5;
+          break;
+        default:
+          //aries should work with Java 5 or above - also will highlight when a higher level (and unsupported) level of Java is released
+          throw new IllegalArgumentException("Invalid Java version " + JAVA_CLASS_VERSION);
+      }
     } 
     return weavingJavaVersion;
   } 
diff --git a/proxy/proxy-itests/pom.xml b/proxy/proxy-itests/pom.xml
index 39f22b9..81781b7 100644
--- a/proxy/proxy-itests/pom.xml
+++ b/proxy/proxy-itests/pom.xml
@@ -69,7 +69,7 @@
             <groupId>org.apache.aries.proxy</groupId>
             <artifactId>org.apache.aries.proxy</artifactId>
             <scope>test</scope>
-            <version>1.1.5-SNAPSHOT</version>
+            <version>1.1.7-SNAPSHOT</version>
         </dependency>
 
         <!-- pax exam -->
diff --git a/samples/ariestrader/modules/ariestrader-api/src/main/java/org/apache/aries/samples/ariestrader/api/persistence/MarketSummaryDataBean.java b/samples/ariestrader/modules/ariestrader-api/src/main/java/org/apache/aries/samples/ariestrader/api/persistence/MarketSummaryDataBean.java
index 13df51e..a5fff45 100644
--- a/samples/ariestrader/modules/ariestrader-api/src/main/java/org/apache/aries/samples/ariestrader/api/persistence/MarketSummaryDataBean.java
+++ b/samples/ariestrader/modules/ariestrader-api/src/main/java/org/apache/aries/samples/ariestrader/api/persistence/MarketSummaryDataBean.java
@@ -62,30 +62,30 @@
 
 	public String toString()
 	{
-		String ret = "\n\tMarket Summary at: " + getSummaryDate()
-			+ "\n\t\t        TSIA:" + getTSIA()
-			+ "\n\t\t    openTSIA:" + getOpenTSIA()
-			+ "\n\t\t        gain:" + getGainPercent()
-			+ "\n\t\t      volume:" + getVolume()
-			;
+		StringBuilder ret = new StringBuilder();
+		ret.append("\n\tMarket Summary at: ").append(getSummaryDate())
+		   .append("\n\t\t        TSIA:").append(getTSIA())
+		   .append("\n\t\t    openTSIA:").append(getOpenTSIA())
+		   .append("\n\t\t        gain:").append(getGainPercent())
+		   .append("\n\t\t      volume:").append(getVolume());
 
 		if ( (getTopGainers()==null) || (getTopLosers()==null) )
-			return ret;
-		ret += "\n\t\t   Current Top Gainers:";
+			return ret.toString();
+		ret.append("\n\t\t   Current Top Gainers:");
 		Iterator it = getTopGainers().iterator();
 		while ( it.hasNext() ) 
 		{
 			QuoteDataBean quoteData = (QuoteDataBean) it.next();
-			ret += ( "\n\t\t\t"  + quoteData.toString() );
+			ret.append("\n\t\t\t").append(quoteData.toString());
 		}
-		ret += "\n\t\t   Current Top Losers:";
+		ret.append("\n\t\t   Current Top Losers:");
 		it = getTopLosers().iterator();
 		while ( it.hasNext() ) 
 		{
 			QuoteDataBean quoteData = (QuoteDataBean) it.next();
-			ret += ( "\n\t\t\t"  + quoteData.toString() );
+			ret.append("\n\t\t\t").append(quoteData.toString());
 		}
-		return ret;		
+		return ret.toString();		
 	}
 	public String toHTML()
 	{
diff --git a/transaction/transaction-blueprint/src/main/resources/org/apache/aries/transaction/parsing/transactionv20.xsd b/transaction/transaction-blueprint/src/main/resources/org/apache/aries/transaction/parsing/transactionv20.xsd
index 5f0e000..cc11435 100644
--- a/transaction/transaction-blueprint/src/main/resources/org/apache/aries/transaction/parsing/transactionv20.xsd
+++ b/transaction/transaction-blueprint/src/main/resources/org/apache/aries/transaction/parsing/transactionv20.xsd
@@ -26,7 +26,7 @@
         <xsd:annotation>

             <xsd:documentation>

         <![CDATA[

-          The <enable-annotations> element is used to enable annotation scanning for @Transactional annotations

+          The <enable> element is used to enable annotation scanning for @Transactional annotations

         ]]>

             </xsd:documentation>

         </xsd:annotation>