# HG changeset patch # User andrew # Date 1413483493 -3600 # Node ID 39dd7bed2325bd7f1436d48f2478bf4b0ef75ca3 # Parent 4e25a5278078b07bbcf1fd34073eed5ffed46115# Parent fea1db443eb15434dd8c7d4b694d85e04238bb13 Merge 2014/10/14 diff -r 4e25a5278078 -r 39dd7bed2325 .hgtags --- a/.hgtags Sat Sep 13 16:38:49 2014 +0100 +++ b/.hgtags Thu Oct 16 19:18:13 2014 +0100 @@ -437,6 +437,9 @@ 2d103c97c9bd0b3357e6d5e2b5b9ffb64c271288 jdk7u55-b31 b15b4084288fa4ea9caf7f6b4e79d164c77bb1d6 jdk7u55-b32 efd71c6ca0832e894b7e1619111860062fa96458 jdk7u55-b33 +485d7912bc20775bda670ea2236c883366590dd7 jdk7u55-b34 +587be38f9a6d60fbefc92dbe9fbd4c83d579c680 jdk7u55-b35 +62332eaec2ff8fc8bece2a905554ac08e375a661 jdk7u55-b36 cb5f95263f620967f5097c5ff8e0b27cfb9e8c44 jdk7u60-b00 f675dfce1e61a6ed01732ae7cfbae941791cba74 jdk7u60-b01 8a3b9e8492a5ac4e2e0c166dbfc5d058be244377 jdk7u60-b02 @@ -465,6 +468,10 @@ b312ec543dc09db784e161eb89607d4afd4cab1e jdk7u60-b18 23598a667bb89b57d5abab5b37781a0952e16cf9 jdk7u65-b01 1d21eb9011a060c7761c9a8a53e69d58bbea4893 jdk7u60-b19 +39e67887a3b112bf74f84df2aac0f46c65bfb005 jdk7u60-b30 +dfc2c4b9b16bd2d68435ddc9bb12036982021844 jdk7u60-b31 +0e17943c39fadb810b4dd2e9ac732503b86043f4 jdk7u60-b32 +910559d7f754d8fd6ab80a627869877443358316 jdk7u60-b33 8ac19021e6af5d92b46111a6c41430f36ccdb901 jdk7u65-b02 a70d681bc273a110d10cf3c4f9b35b25ca6a600f jdk7u65-b03 7cd17f96988509e99fbb71003aeb76d92b638fef jdk7u65-b04 @@ -485,8 +492,55 @@ dedfc93eeb5f4b28ad1a91902a0676aef0937e42 jdk7u65-b18 db4cccbfd72fc265b736a273797963754434a7d2 jdk7u65-b19 0cd66509e11335fac490076cbdcb2f47c592de86 jdk7u65-b32 +28d868d40df0d420b87698e1215e5039d24a8ae5 jdk7u65-b20 +1ef1681e21ca00edbc8727e849fef50637cc52d8 jdk7u67-b01 +db4cccbfd72fc265b736a273797963754434a7d2 jdk7u65-b40 +190d885fe83b5b1801ee6d7327161254545d55a8 jdk7u65-b31 +6cf7676aa11c053481c0806afda9fc91c2bfd782 jdk7u65-b33 +d63ca1c5bdb9fb2e36ec4afda431c0d1dfdfc07c jdk7u66-b00 +1dce52b208a9528266c26352e03e67ec0ddb4dd7 jdk7u66-b01 +04481967eff566b8a379a0315d2a3a255928d6ce jdk7u66-b09 +73d97ba8b2d94c904f2b087b9f28664eb19e9ce2 jdk7u66-b10 +7ecf8d9df00c185f381fa8cb92ea66fe1e5798ca jdk7u66-b11 +9ac1d99f712a04548d7e5d784f06c87e35023080 jdk7u66-b12 +f562dd8fb2b211a11b9a84849995d61b541723c3 jdk7u66-b13 +ae584331109f291e03af72cc9fcbbe5f8f789ab1 jdk7u66-b14 +36461c772d3101a8cb1eca16a9c81ed53218a4c9 jdk7u66-b15 +19ed8a653a3e8c6536fd1090c14f93e690eda7a3 jdk7u66-b16 +ea1e6f01f95c9a0984378643754d0f493bfa4484 jdk7u66-b17 +6092d0059338df25e82fbc69cc749b95e2565547 jdk7u71-b00 +814a3f0bb13071666375dd35bab7c9cc44c62448 jdk7u71-b01 +ba22fdc22c0410b91f6f992e480d9e8b4c5e85d0 jdk7u71-b02 +30edf4d8760f96b420bd40a2d9552826435356d4 jdk7u71-b03 +22cc8b125a119f9c23d0e81fc6627af330a27e4a jdk7u71-b04 +f612dbc0589894463f569fba245a98f842182d7a jdk7u71-b05 +15bdfc8b209a7c5b4e06907df11d3f795d326c14 jdk7u71-b06 +26ad03c06f31c516329059c5f053330570455887 jdk7u71-b07 +8d9d92a8e6d8610994d1596961395a4ce2bc5a69 jdk7u71-b08 +9ad7bbe28aecaf22c4f5c9ab905207ae963ec2c2 jdk7u71-b09 +32406b446fd458c6d0d8bd610eeb12d96a5f20a4 jdk7u71-b10 +b37043cee55ed025b04a3420908897e69c6c687f jdk7u71-b11 +3a432d7f01ed998ee6ca2ed04e818849a3d1e0c7 jdk7u71-b12 +9dd0dea849dd2550b58346977d9111717c1f38b2 jdk7u71-b13 +a580f2c49eacc68a11cf0e724aec4a974fb77745 jdk7u71-b14 +18676fc7713f5341f298a1ae2aee9e217fcdb5a5 jdk7u72-b01 +e4bbb79df2b13cea8c24ee2e6346e1aa30645400 jdk7u72-b02 +646f7c237e9ecde8df0fc6524b3605a89e6dc135 jdk7u72-b03 +30d42f2fde558b4aeae26cc7bda89b2badf88aab jdk7u72-b04 +761c40c9076aefac72bbff913e8bc088e565386f jdk7u72-b05 +a3961ce4d5c1fd1f9cde546e62760a008b5b9d60 jdk7u72-b06 +1153553de579fbbf8c328ea47f07accf8e2d9ac2 jdk7u72-b07 +7b00d0359f49c82b38bb2f2faafae53eacc1a995 jdk7u72-b08 +f16ea19cfd03274e9e1fd5367c3f4c23accf4e75 jdk7u72-b09 +615c0d49e8927c9b03f5694df4ddb7a5e45eaf6d jdk7u72-b10 +b34f135642cddf3c15f1fecaad320cb12cbd9472 jdk7u72-b11 +cfa494e8b9bcd29ba59f1bfa3c365418b4102f71 jdk7u72-b12 +d4be88d9bfbff3e41bc4121838e90160734d9805 jdk7u72-b13 +e33bca6f8dab3e82b2dec2c52074f19a88e1267e jdk7u72-b14 +587c4a3bfb76c03fa589f61e28ed739c537409bc jdk7u72-b30 bef313c7ff7a7a829f8f6a305bf0c3738ad99795 jdk7u80-b00 0eb2482c3d0663c39794ec4c268acc41c4cd387b jdk7u80-b01 f21a65d1832ce426c02a7d87b9d83b1a4a64018c icedtea-2.6pre07 37d1831108b5ced7f1e63e1cd58b46dba7b76cc9 icedtea-2.6pre06 646981c9ac471feb9c600504585a4f2c59aa2f61 icedtea-2.6pre08 +579128925dd9a0e9c529125c9e299dc0518037a5 jdk7u80-b02 diff -r 4e25a5278078 -r 39dd7bed2325 src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/ArrayBeanInfoImpl.java --- a/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/ArrayBeanInfoImpl.java Sat Sep 13 16:38:49 2014 +0100 +++ b/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/ArrayBeanInfoImpl.java Thu Oct 16 19:18:13 2014 +0100 @@ -79,19 +79,19 @@ @Override public void startElement(UnmarshallingContext.State state, TagName ea) { - state.target = new ArrayList(); + state.setTarget(new ArrayList()); } @Override public void leaveElement(UnmarshallingContext.State state, TagName ea) { - state.target = toArray((List)state.target); + state.setTarget(toArray((List)state.getTarget())); } @Override public void childElement(UnmarshallingContext.State state, TagName ea) throws SAXException { if(ea.matches("","item")) { - state.loader = itemLoader; - state.receiver = this; + state.setLoader(itemLoader); + state.setReceiver(this); } else { super.childElement(state,ea); } @@ -103,9 +103,9 @@ } public void receive(UnmarshallingContext.State state, Object o) { - ((List)state.target).add(o); + ((List)state.getTarget()).add(o); } - }; + } protected Object toArray( List list ) { int len = list.size(); diff -r 4e25a5278078 -r 39dd7bed2325 src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/ElementBeanInfoImpl.java --- a/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/ElementBeanInfoImpl.java Sat Sep 13 16:38:49 2014 +0100 +++ b/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/ElementBeanInfoImpl.java Thu Oct 16 19:18:13 2014 +0100 @@ -208,8 +208,8 @@ @Override public final void startElement(UnmarshallingContext.State state, TagName ea) throws SAXException { - state.loader = core; - state.intercepter = this; + state.setLoader(core); + state.setIntercepter(this); // TODO: make sure there aren't too many duplicate of this code // create the object to unmarshal @@ -231,21 +231,21 @@ fireBeforeUnmarshal(ElementBeanInfoImpl.this, child, state); context.recordOuterPeer(child); - UnmarshallingContext.State p = state.prev; - p.backup = p.target; - p.target = child; + UnmarshallingContext.State p = state.getPrev(); + p.setBackup(p.getTarget()); + p.setTarget(child); core.startElement(state,ea); } public Object intercept(UnmarshallingContext.State state, Object o) throws SAXException { - JAXBElement e = (JAXBElement)state.target; - state.target = state.backup; - state.backup = null; + JAXBElement e = (JAXBElement)state.getTarget(); + state.setTarget(state.getBackup()); + state.setBackup(null); - if (state.nil) { + if (state.isNil()) { e.setNil(true); - state.nil = false; + state.setNil(false); } if(o!=null) diff -r 4e25a5278078 -r 39dd7bed2325 src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/ValueListBeanInfoImpl.java --- a/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/ValueListBeanInfoImpl.java Sat Sep 13 16:38:49 2014 +0100 +++ b/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/ValueListBeanInfoImpl.java Thu Oct 16 19:18:13 2014 +0100 @@ -90,7 +90,7 @@ idx = p; } - state.target = toArray(r); + state.setTarget(toArray(r)); } }; diff -r 4e25a5278078 -r 39dd7bed2325 src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/property/ArrayERProperty.java --- a/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/property/ArrayERProperty.java Sat Sep 13 16:38:49 2014 +0100 +++ b/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/property/ArrayERProperty.java Thu Oct 16 19:18:13 2014 +0100 @@ -98,7 +98,7 @@ UnmarshallingContext context = state.getContext(); context.startScope(1); // inherit the target so that our children can access its target - state.target = state.prev.target; + state.setTarget(state.getPrev().getTarget()); // start it now, so that even if there's no children we can still return empty collection context.getScope(0).start(acc,lister); @@ -116,8 +116,8 @@ super.childElement(state,ea); return; } - state.loader = child.loader; - state.receiver = child.receiver; + state.setLoader(child.loader); + state.setReceiver(child.receiver); } @Override diff -r 4e25a5278078 -r 39dd7bed2325 src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/property/SingleMapNodeProperty.java --- a/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/property/SingleMapNodeProperty.java Sat Sep 13 16:38:49 2014 +0100 +++ b/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/property/SingleMapNodeProperty.java Thu Oct 16 19:18:13 2014 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -147,17 +147,17 @@ public void startElement(UnmarshallingContext.State state, TagName ea) throws SAXException { // create or obtain the Map object try { - target.set((BeanT)state.prev.target); + target.set((BeanT)state.getPrev().getTarget()); map.set(acc.get(target.get())); if(map.get() == null) { map.set(ClassFactory.create(mapImplClass)); } map.get().clear(); - state.target = map.get(); + state.setTarget(map.get()); } catch (AccessorException e) { // recover from error by setting a dummy Map that receives and discards the values handleGenericException(e,true); - state.target = new HashMap(); + state.setTarget(new HashMap()); } } @@ -175,7 +175,7 @@ @Override public void childElement(UnmarshallingContext.State state, TagName ea) throws SAXException { if(ea.matches(entryTag)) { - state.loader = entryLoader; + state.setLoader(entryLoader); } else { super.childElement(state,ea); } @@ -195,26 +195,26 @@ private final Loader entryLoader = new Loader(false) { @Override public void startElement(UnmarshallingContext.State state, TagName ea) { - state.target = new Object[2]; // this is inefficient + state.setTarget(new Object[2]); // this is inefficient } @Override public void leaveElement(UnmarshallingContext.State state, TagName ea) { - Object[] keyValue = (Object[])state.target; - Map map = (Map) state.prev.target; + Object[] keyValue = (Object[])state.getTarget(); + Map map = (Map) state.getPrev().getTarget(); map.put(keyValue[0],keyValue[1]); } @Override public void childElement(UnmarshallingContext.State state, TagName ea) throws SAXException { if(ea.matches(keyTag)) { - state.loader = keyLoader; - state.receiver = keyReceiver; + state.setLoader(keyLoader); + state.setReceiver(keyReceiver); return; } if(ea.matches(valueTag)) { - state.loader = valueLoader; - state.receiver = valueReceiver; + state.setLoader(valueLoader); + state.setReceiver(valueReceiver); return; } super.childElement(state,ea); @@ -232,7 +232,7 @@ this.index = index; } public void receive(UnmarshallingContext.State state, Object o) { - ((Object[])state.target)[index] = o; + ((Object[])state.getTarget())[index] = o; } } diff -r 4e25a5278078 -r 39dd7bed2325 src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/reflect/Accessor.java --- a/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/reflect/Accessor.java Sat Sep 13 16:38:49 2014 +0100 +++ b/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/reflect/Accessor.java Thu Oct 16 19:18:13 2014 +0100 @@ -152,7 +152,7 @@ public void receive(UnmarshallingContext.State state, Object o) throws SAXException { try { - set((BeanT) state.target, (ValueT) o); + set((BeanT) state.getTarget(), (ValueT) o); } catch (AccessorException e) { Loader.handleGenericException(e, true); } catch (IllegalAccessError iae) { diff -r 4e25a5278078 -r 39dd7bed2325 src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/DefaultValueLoaderDecorator.java --- a/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/DefaultValueLoaderDecorator.java Sat Sep 13 16:38:49 2014 +0100 +++ b/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/DefaultValueLoaderDecorator.java Thu Oct 16 19:18:13 2014 +0100 @@ -44,10 +44,10 @@ @Override public void startElement(UnmarshallingContext.State state, TagName ea) throws SAXException { // install the default value, but don't override the one given by the parent loader - if(state.elementDefaultValue==null) - state.elementDefaultValue = defaultValue; + if(state.getElementDefaultValue() == null) + state.setElementDefaultValue(defaultValue); - state.loader = l; + state.setLoader(l); l.startElement(state,ea); } } diff -r 4e25a5278078 -r 39dd7bed2325 src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/Discarder.java --- a/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/Discarder.java Sat Sep 13 16:38:49 2014 +0100 +++ b/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/Discarder.java Thu Oct 16 19:18:13 2014 +0100 @@ -44,8 +44,8 @@ @Override public void childElement(UnmarshallingContext.State state, TagName ea) { - state.target = null; + state.setTarget(null); // registering this allows the discarder to process the whole subtree. - state.loader = this; + state.setLoader(this); } } diff -r 4e25a5278078 -r 39dd7bed2325 src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/DomLoader.java --- a/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/DomLoader.java Sat Sep 13 16:38:49 2014 +0100 +++ b/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/DomLoader.java Thu Oct 16 19:18:13 2014 +0100 @@ -98,10 +98,10 @@ @Override public void startElement(UnmarshallingContext.State state, TagName ea) throws SAXException { UnmarshallingContext context = state.getContext(); - if (state.target == null) - state.target = new State(context); + if (state.getTarget() == null) + state.setTarget(new State(context)); - State s = (State) state.target; + State s = (State) state.getTarget(); try { s.declarePrefixes(context, context.getNewlyDeclaredPrefixes()); s.handler.startElement(ea.uri, ea.local, ea.getQname(), ea.atts); @@ -113,10 +113,10 @@ @Override public void childElement(UnmarshallingContext.State state, TagName ea) throws SAXException { - state.loader = this; - State s = (State) state.prev.target; + state.setLoader(this); + State s = (State) state.getPrev().getTarget(); s.depth++; - state.target = s; + state.setTarget(s); } @Override @@ -124,7 +124,7 @@ if(text.length()==0) return; // there's no point in creating an empty Text node in DOM. try { - State s = (State) state.target; + State s = (State) state.getTarget(); s.handler.characters(text.toString().toCharArray(),0,text.length()); } catch( SAXException e ) { state.getContext().handleError(e); @@ -134,7 +134,7 @@ @Override public void leaveElement(UnmarshallingContext.State state, TagName ea) throws SAXException { - State s = (State) state.target; + State s = (State) state.getTarget(); UnmarshallingContext context = state.getContext(); try { @@ -156,7 +156,7 @@ } // we are done - state.target = s.getElement(); + state.setTarget(s.getElement()); } } diff -r 4e25a5278078 -r 39dd7bed2325 src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/LeafPropertyLoader.java --- a/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/LeafPropertyLoader.java Sat Sep 13 16:38:49 2014 +0100 +++ b/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/LeafPropertyLoader.java Thu Oct 16 19:18:13 2014 +0100 @@ -47,7 +47,7 @@ public void text(UnmarshallingContext.State state, CharSequence text) throws SAXException { try { - xacc.parse(state.prev.target,text); + xacc.parse(state.getPrev().getTarget(), text); } catch (AccessorException e) { handleGenericException(e,true); } catch (RuntimeException e) { diff -r 4e25a5278078 -r 39dd7bed2325 src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/LeafPropertyXsiLoader.java --- a/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/LeafPropertyXsiLoader.java Sat Sep 13 16:38:49 2014 +0100 +++ b/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/LeafPropertyXsiLoader.java Thu Oct 16 19:18:13 2014 +0100 @@ -55,9 +55,9 @@ @Override public void startElement(UnmarshallingContext.State state, TagName ea) throws SAXException { - state.loader = selectLoader(state, ea); - - state.loader.startElement(state, ea); + final Loader loader = selectLoader(state, ea); + state.setLoader(loader); + loader.startElement(state, ea); } protected Loader selectLoader(UnmarshallingContext.State state, TagName ea) throws SAXException { diff -r 4e25a5278078 -r 39dd7bed2325 src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/Loader.java --- a/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/Loader.java Sat Sep 13 16:38:49 2014 +0100 +++ b/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/Loader.java Thu Oct 16 19:18:13 2014 +0100 @@ -88,8 +88,8 @@ public void childElement(UnmarshallingContext.State state, TagName ea) throws SAXException { // notify the error, then recover by ignoring the whole element. reportUnexpectedChildElement(ea, true); - state.loader = Discarder.INSTANCE; - state.receiver = null; + state.setLoader(Discarder.INSTANCE); + state.setReceiver(null); } @SuppressWarnings({"StringEquality"}) @@ -191,10 +191,10 @@ UnmarshallingContext context = state.getContext(); Unmarshaller.Listener listener = context.parent.getListener(); if(beanInfo.hasBeforeUnmarshalMethod()) { - beanInfo.invokeBeforeUnmarshalMethod(context.parent, child, state.prev.target); + beanInfo.invokeBeforeUnmarshalMethod(context.parent, child, state.getPrev().getTarget()); } if(listener!=null) { - listener.beforeUnmarshal(child, state.prev.target); + listener.beforeUnmarshal(child, state.getPrev().getTarget()); } } } @@ -211,10 +211,10 @@ UnmarshallingContext context = state.getContext(); Unmarshaller.Listener listener = context.parent.getListener(); if(beanInfo.hasAfterUnmarshalMethod()) { - beanInfo.invokeAfterUnmarshalMethod(context.parent, child, state.target); + beanInfo.invokeAfterUnmarshalMethod(context.parent, child, state.getTarget()); } if(listener!=null) - listener.afterUnmarshal(child, state.target); + listener.afterUnmarshal(child, state.getTarget()); } } diff -r 4e25a5278078 -r 39dd7bed2325 src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/ProxyLoader.java --- a/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/ProxyLoader.java Sat Sep 13 16:38:49 2014 +0100 +++ b/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/ProxyLoader.java Thu Oct 16 19:18:13 2014 +0100 @@ -41,7 +41,7 @@ @Override public final void startElement(UnmarshallingContext.State state, TagName ea) throws SAXException { Loader loader = selectLoader(state,ea); - state.loader = loader; + state.setLoader(loader); loader.startElement(state,ea); } diff -r 4e25a5278078 -r 39dd7bed2325 src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/SAXConnector.java --- a/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/SAXConnector.java Sat Sep 13 16:38:49 2014 +0100 +++ b/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/SAXConnector.java Thu Oct 16 19:18:13 2014 +0100 @@ -116,17 +116,7 @@ if( qname==null || qname.length()==0 ) qname=local; - - boolean ignorable = true; - StructureLoader sl; - - // not null only if element content is processed (StructureLoader is used) - // ugly - if((sl = this.context.getStructureLoader()) != null) { - ignorable = ((ClassBeanInfoImpl)sl.getBeanInfo()).hasElementOnlyContentModel(); - } - - processText(ignorable); + processText(!context.getCurrentState().isMixed()); tagName.uri = uri; tagName.local = local; @@ -162,7 +152,7 @@ } private void processText( boolean ignorable ) throws SAXException { - if( predictor.expectText() && (!ignorable || !WhiteSpaceProcessor.isWhiteSpace(buffer))) + if (predictor.expectText() && (!ignorable || !WhiteSpaceProcessor.isWhiteSpace(buffer))) next.text(buffer); buffer.setLength(0); } diff -r 4e25a5278078 -r 39dd7bed2325 src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/Scope.java --- a/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/Scope.java Sat Sep 13 16:38:49 2014 +0100 +++ b/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/Scope.java Thu Oct 16 19:18:13 2014 +0100 @@ -97,7 +97,7 @@ public void add( Accessor acc, Lister lister, ItemT value) throws SAXException{ try { if(!hasStarted()) { - this.bean = (BeanT)context.getCurrentState().target; + this.bean = (BeanT)context.getCurrentState().getTarget(); this.acc = acc; this.lister = lister; this.pack = lister.startPacking(bean,acc); @@ -121,7 +121,7 @@ public void start( Accessor acc, Lister lister) throws SAXException{ try { if(!hasStarted()) { - this.bean = (BeanT)context.getCurrentState().target; + this.bean = (BeanT)context.getCurrentState().getTarget(); this.acc = acc; this.lister = lister; this.pack = lister.startPacking(bean,acc); diff -r 4e25a5278078 -r 39dd7bed2325 src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/StructureLoader.java --- a/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/StructureLoader.java Sat Sep 13 16:38:49 2014 +0100 +++ b/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/StructureLoader.java Thu Oct 16 19:18:13 2014 +0100 @@ -171,7 +171,7 @@ context.recordInnerPeer(child); - state.target = child; + state.setTarget(child); fireBeforeUnmarshal(beanInfo, child, state); @@ -196,7 +196,7 @@ String qname = atts.getQName(i); if(atts.getURI(i).equals(WellKnownNamespace.XML_SCHEMA_INSTANCE)) continue; // xsi:* attributes are meant to be processed by us, not by user apps. - Object o = state.target; + Object o = state.getTarget(); Map map = attCatchAll.get(o); if(map==null) { // TODO: use ClassFactory.inferImplClass(sig,knownImplClasses) @@ -238,8 +238,8 @@ } } - state.loader = child.loader; - state.receiver = child.receiver; + state.setLoader(child.loader); + state.setReceiver(child.receiver); } @Override @@ -261,7 +261,7 @@ @Override public void leaveElement(UnmarshallingContext.State state, TagName ea) throws SAXException { state.getContext().endScope(frameSize); - fireAfterUnmarshal(beanInfo, state.target, state.prev); + fireAfterUnmarshal(beanInfo, state.getTarget(), state.getPrev()); } private static final QNameMap EMPTY = new QNameMap(); diff -r 4e25a5278078 -r 39dd7bed2325 src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/TextLoader.java --- a/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/TextLoader.java Sat Sep 13 16:38:49 2014 +0100 +++ b/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/TextLoader.java Thu Oct 16 19:18:13 2014 +0100 @@ -51,7 +51,7 @@ public void text(UnmarshallingContext.State state, CharSequence text) throws SAXException { try { - state.target = xducer.parse(text); + state.setTarget(xducer.parse(text)); } catch (AccessorException e) { handleGenericException(e,true); } catch (RuntimeException e) { diff -r 4e25a5278078 -r 39dd7bed2325 src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/UnmarshallingContext.java --- a/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/UnmarshallingContext.java Sat Sep 13 16:38:49 2014 +0100 +++ b/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/UnmarshallingContext.java Thu Oct 16 19:18:13 2014 +0100 @@ -183,20 +183,19 @@ /** * Loader that owns this element. */ - public Loader loader; + private Loader loader; /** * Once {@link #loader} is completed, this receiver * receives the result. */ - public Receiver receiver; + private Receiver receiver; - public Intercepter intercepter; - + private Intercepter intercepter; /** * Object being unmarshalled by this {@link #loader}. */ - public Object target; + private Object target; /** * Hack for making JAXBElement unmarshalling work. @@ -225,7 +224,7 @@ * @see ElementBeanInfoImpl.IntercepterLoader#startElement(State, TagName) * @see ElementBeanInfoImpl.IntercepterLoader#intercept(State, Object) */ - public Object backup; + private Object backup; /** * Number of {@link UnmarshallingContext#nsBind}s declared thus far. @@ -241,17 +240,22 @@ * or by a child {@link Loader} when * {@link Loader#startElement(State, TagName)} is called. */ - public String elementDefaultValue; + private String elementDefaultValue; /** * {@link State} for the parent element * * {@link State} objects form a doubly linked list. */ - public State prev; + private State prev; private State next; - public boolean nil = false; + private boolean nil = false; + + /** + * specifies that we are working with mixed content + */ + private boolean mixed = false; /** * Gets the context. @@ -262,13 +266,17 @@ private State(State prev) { this.prev = prev; - if(prev!=null) + if(prev!=null) { prev.next = this; + if (prev.mixed) // parent is in mixed mode + this.mixed = true; + } } private void push() { - if(next==null) - allocateMoreStates(); + if(next==null) { + next = new State(this); + } State n = next; n.numNsDecl = nsLen; current = n; @@ -278,11 +286,71 @@ assert prev!=null; loader = null; nil = false; + mixed = false; receiver = null; intercepter = null; elementDefaultValue = null; target = null; current = prev; + next = null; + } + + public boolean isMixed() { + return mixed; + } + + public Object getTarget() { + return target; + } + + public void setLoader(Loader loader) { + if (loader instanceof StructureLoader) // set mixed mode + mixed = !((StructureLoader)loader).getBeanInfo().hasElementOnlyContentModel(); + this.loader = loader; + } + + public void setReceiver(Receiver receiver) { + this.receiver = receiver; + } + + public State getPrev() { + return prev; + } + + public void setIntercepter(Intercepter intercepter) { + this.intercepter = intercepter; + } + + public void setBackup(Object backup) { + this.backup = backup; + } + + public void setTarget(Object target) { + this.target = target; + } + + public Object getBackup() { + return backup; + } + + public boolean isNil() { + return nil; + } + + public void setNil(boolean nil) { + this.nil = nil; + } + + public Loader getLoader() { + return loader; + } + + public String getElementDefaultValue() { + return elementDefaultValue; + } + + public void setElementDefaultValue(String elementDefaultValue) { + this.elementDefaultValue = elementDefaultValue; } } @@ -322,7 +390,6 @@ this.parent = _parent; this.assoc = assoc; this.root = this.current = new State(null); - allocateMoreStates(); } public void reset(InfosetScanner scanner,boolean isInplaceMode, JaxBeanInfo expectedType, IDResolver idResolver) { @@ -369,22 +436,6 @@ return null; } - /** - * Allocates a few more {@link State}s. - * - * Allocating multiple {@link State}s at once allows those objects - * to be allocated near each other, which reduces the working set - * of CPU. It improves the chance the relevant data is in the cache. - */ - private void allocateMoreStates() { - // this method should be used only when we run out of a state. - assert current.next==null; - - State s = current; - for( int i=0; i<8; i++ ) - s = new State(s); - } - public void clearStates() { State last = current; while (last.next != null) last = last.next; @@ -487,16 +538,15 @@ } public void text(CharSequence pcdata) throws SAXException { - State cur = current; pushCoordinator(); try { - if(cur.elementDefaultValue!=null) { - if(pcdata.length()==0) { + if (current.elementDefaultValue != null) { + if (pcdata.length() == 0) { // send the default value into the unmarshaller instead - pcdata = cur.elementDefaultValue; + pcdata = current.elementDefaultValue; } } - cur.loader.text(cur,pcdata); + current.loader.text(current, pcdata); } finally { popCoordinator(); } diff -r 4e25a5278078 -r 39dd7bed2325 src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/ValuePropertyLoader.java --- a/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/ValuePropertyLoader.java Sat Sep 13 16:38:49 2014 +0100 +++ b/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/ValuePropertyLoader.java Thu Oct 16 19:18:13 2014 +0100 @@ -49,18 +49,17 @@ public void text(UnmarshallingContext.State state, CharSequence text) throws SAXException { try { - xacc.parse(state.target,text); + xacc.parse(state.getTarget(),text); } catch (AccessorException e) { handleGenericException(e,true); } catch (RuntimeException e) { - if(state.prev != null) { - if(state.prev.target instanceof JAXBElement) { - ; // do nothing - issue 601 - don't report exceptions like - // NumberFormatException when unmarshalling "nillable" element - // (I suppose JAXBElement indicates this - } else { + if(state.getPrev() != null) { + if (!(state.getPrev().getTarget() instanceof JAXBElement)) handleParseConversionException(state,e); - } + // else + // do nothing - issue 601 - don't report exceptions like + // NumberFormatException when unmarshalling "nillable" element + // (I suppose JAXBElement indicates this } else { handleParseConversionException(state,e); } diff -r 4e25a5278078 -r 39dd7bed2325 src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/XsiNilLoader.java --- a/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/XsiNilLoader.java Sat Sep 13 16:38:49 2014 +0100 +++ b/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/XsiNilLoader.java Thu Oct 16 19:18:13 2014 +0100 @@ -62,7 +62,7 @@ onNil(state); boolean hasOtherAttributes = (ea.atts.getLength() - 1) > 0; // see issues 6759703 and 565 - need to preserve attributes even if the element is nil; only when the type is stored in JAXBElement - if (!(hasOtherAttributes && (state.prev.target instanceof JAXBElement))) { + if (!(hasOtherAttributes && (state.getPrev().getTarget() instanceof JAXBElement))) { return Discarder.INSTANCE; } } @@ -96,8 +96,8 @@ @Override protected void onNil(UnmarshallingContext.State state) throws SAXException { try { - acc.set(state.prev.target,null); - state.prev.nil = true; + acc.set(state.getPrev().getTarget(),null); + state.getPrev().setNil(true); } catch (AccessorException e) { handleGenericException(e,true); } @@ -113,7 +113,7 @@ @Override protected void onNil(UnmarshallingContext.State state) { // let the receiver add this to the lister - state.target = null; + state.setTarget(null); } } } diff -r 4e25a5278078 -r 39dd7bed2325 src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/XsiTypeLoader.java --- a/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/XsiTypeLoader.java Sat Sep 13 16:38:49 2014 +0100 +++ b/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/XsiTypeLoader.java Thu Oct 16 19:18:13 2014 +0100 @@ -61,7 +61,7 @@ beanInfo = defaultBeanInfo; Loader loader = beanInfo.getLoader(null,false); - state.loader = loader; + state.setLoader(loader); loader.startElement(state,ea); }