/** * Try and automatically update, if automatic updating is enabled. * * @param forceUpdate * @return true if LWC was updated */ public boolean tryAutoUpdate(boolean forceUpdate) { if (!forceUpdate) { // do we qualify for an automatic update? if (!shouldAutoUpdate()) { return false; } } // we shouldn't update if the current version is the same as the latest, or their build numbers // are equal Version current = LWCInfo.FULL_VERSION; if (current.equals(latestVersion) || (current.getBuildNumber() > 0 && latestVersion.getBuildNumber() > 0 && current.getBuildNumber() == latestVersion.getBuildNumber())) { return false; } logger.info(Colors.Red + "LWC update found!"); // make sure all class files are loaded in our jar file before we overwrite it loadAllClasses(); // update_site/version/LWC.jar UpdaterFile file = new UpdaterFile("plugins/LWC.jar", getLatestDownloadURL()); // queue it fileQueue.offer(file); // immediately download downloadFiles(); return true; }
/** * Parse the persistence unit definitions based on persistence_2_0.xsd. * * @param reader * @return * @throws XMLStreamException */ private static PersistenceUnitMetadata parsePU(XMLStreamReader reader, Version version) throws XMLStreamException { PersistenceUnitMetadata pu = new PersistenceUnitMetadataImpl(); List<String> classes = new ArrayList<String>(1); List<String> jarfiles = new ArrayList<String>(1); List<String> mappingFiles = new ArrayList<String>(1); Properties properties = new Properties(); // set defaults pu.setTransactionType(PersistenceUnitTransactionType.JTA); pu.setValidationMode(ValidationMode.AUTO); pu.setSharedCacheMode(SharedCacheMode.UNSPECIFIED); pu.setPersistenceProviderClassName( "org.hibernate.ejb.HibernatePersistence"); // TODO: move to domain.xml? if (version.equals(Version.JPA_1_0)) { pu.setPersistenceXMLSchemaVersion("1.0"); } else { pu.setPersistenceXMLSchemaVersion("2.0"); } final int count = reader.getAttributeCount(); for (int i = 0; i < count; i++) { final String value = reader.getAttributeValue(i); if (traceEnabled) { JPA_LOGGER.tracef("parse persistence.xml: attribute value(%d) = %s", i, value); } final String attributeNamespace = reader.getAttributeNamespace(i); if (attributeNamespace != null && !attributeNamespace.isEmpty()) { continue; } final Attribute attribute = Attribute.forName(reader.getAttributeLocalName(i)); switch (attribute) { case NAME: pu.setPersistenceUnitName(value); break; case TRANSACTIONTYPE: if (value.equalsIgnoreCase("RESOURCE_LOCAL")) pu.setTransactionType(PersistenceUnitTransactionType.RESOURCE_LOCAL); break; default: throw unexpectedAttribute(reader, i); } } // until the ending PERSISTENCEUNIT tag while (reader.hasNext() && reader.nextTag() != END_ELEMENT) { final Element element = Element.forName(reader.getLocalName()); if (traceEnabled) { JPA_LOGGER.tracef("parse persistence.xml: element=%s", element.getLocalName()); } switch (element) { case CLASS: classes.add(Util.resolveSystemProperty(reader.getElementText())); break; case DESCRIPTION: final String description = Util.resolveSystemProperty(reader.getElementText()); break; case EXCLUDEUNLISTEDCLASSES: String text = Util.resolveSystemProperty(reader.getElementText()); if (text == null || text.isEmpty()) { // the spec has examples where an empty // exclude-unlisted-classes element has the same // effect as setting it to true pu.setExcludeUnlistedClasses(true); } else { pu.setExcludeUnlistedClasses(Boolean.valueOf(text)); } break; case JARFILE: String file = Util.resolveSystemProperty(reader.getElementText()); jarfiles.add(file); break; case JTADATASOURCE: pu.setJtaDataSourceName(Util.resolveSystemProperty(reader.getElementText())); break; case NONJTADATASOURCE: pu.setNonJtaDataSourceName(Util.resolveSystemProperty(reader.getElementText())); break; case MAPPINGFILE: mappingFiles.add(Util.resolveSystemProperty(reader.getElementText())); break; case PROPERTIES: parseProperties(reader, properties); break; case PROVIDER: pu.setPersistenceProviderClassName(Util.resolveSystemProperty(reader.getElementText())); break; case SHAREDCACHEMODE: String cm = Util.resolveSystemProperty(reader.getElementText()); pu.setSharedCacheMode(SharedCacheMode.valueOf(cm)); break; case VALIDATIONMODE: String validationMode = Util.resolveSystemProperty(reader.getElementText()); pu.setValidationMode(ValidationMode.valueOf(validationMode)); break; default: throw unexpectedElement(reader); } } if (traceEnabled) { JPA_LOGGER.trace("parse persistence.xml: reached ending persistence-unit tag"); } pu.setManagedClassNames(classes); pu.setJarFiles(jarfiles); pu.setMappingFiles(mappingFiles); pu.setProperties(properties); return pu; }