java.util.LinkedHashMap#values ( )源码实例Demo

下面列出了java.util.LinkedHashMap#values ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

@Override
public String[] getArray(String key) {
    Object obj = getObject(key, null);
    if (obj == null) {
        return new String[0];
    }

    // TODO find better way to parse config yaml into a list instead of a LinkedHashMap in the first place
    if (obj instanceof LinkedHashMap) {
        LinkedHashMap lm = (LinkedHashMap) obj;
        String[] strings = new String[lm.size()];
        int i = 0;
        for (Object entryValue : lm.values()) {
            strings[i++] = String.valueOf(entryValue);
        }
        return strings;
    }

    return (String[]) obj;
}
 
源代码2 项目: lucene-solr   文件: SpatialHeatmapFacets.java
/** Called by FacetComponent's impl of
 * {@link org.apache.solr.handler.component.SearchComponent#modifyRequest(ResponseBuilder, SearchComponent, ShardRequest)}. */
public static void distribModifyRequest(ShardRequest sreq, LinkedHashMap<String, HeatmapFacet> heatmapFacets) {
  // Set the format to PNG because it's compressed and it's the only format we have code to read at the moment.
  // We re-write the facet.heatmap list with PNG format in local-params where it has highest precedence.

  //Remove existing heatmap field param vals; we will rewrite
  sreq.params.remove(FacetParams.FACET_HEATMAP);
  for (HeatmapFacet facet : heatmapFacets.values()) {
    //add heatmap field param
    ModifiableSolrParams newLocalParams = new ModifiableSolrParams();
    if (facet.localParams != null) {
      newLocalParams.add(facet.localParams);
    }
    // Set format to PNG; it's the only one we parse
    newLocalParams.set(FacetParams.FACET_HEATMAP_FORMAT, FacetHeatmap.FORMAT_PNG);
    sreq.params.add(FacetParams.FACET_HEATMAP,
        newLocalParams.toLocalParamsString() + facet.facetOn);
  }
}
 
源代码3 项目: flink   文件: StreamingFileCommitter.java
private void commitPartitions(long checkpointId) throws Exception {
	List<String> partitions = checkpointId == Long.MAX_VALUE ?
			trigger.endInput() :
			trigger.committablePartitions(checkpointId);
	if (partitions.isEmpty()) {
		return;
	}

	try (TableMetaStoreFactory.TableMetaStore metaStore = metaStoreFactory.createTableMetaStore()) {
		for (String partition : partitions) {
			LinkedHashMap<String, String> partSpec = extractPartitionSpecFromPath(new Path(partition));
			LOG.info("Partition {} of table {} is ready to be committed", partSpec, tableIdentifier);
			Path path = new Path(locationPath, generatePartitionPath(partSpec));
			PartitionCommitPolicy.Context context = new PolicyContext(
					new ArrayList<>(partSpec.values()), path);
			for (PartitionCommitPolicy policy : policies) {
				if (policy instanceof MetastoreCommitPolicy) {
					((MetastoreCommitPolicy) policy).setMetastore(metaStore);
				}
				policy.commit(context);
			}
		}
	}
}
 
源代码4 项目: j2objc   文件: MetadataWriter.java
private Expression createAnnotations(List<Annotation> annotations) {
  // Group repeated annotations.
  LinkedHashMap<DeclaredType, List<Annotation>> groupedAnnotations = new LinkedHashMap<>();
  for (Annotation annotation : annotations) {
    DeclaredType type = annotation.getAnnotationMirror().getAnnotationType();
    groupedAnnotations.computeIfAbsent(type, k -> new ArrayList<>()).add(annotation);
  }

  List<Expression> expressions = new ArrayList<>();
  for (List<Annotation> group : groupedAnnotations.values()) {
    if (group.size() == 1) {
      expressions.add(translationUtil.createAnnotation(group.get(0).getAnnotationMirror()));
    } else {
      expressions.add(createContainerAnnotation(group));
    }
  }
  return translationUtil.createObjectArray(expressions, annotationArray);
}
 
源代码5 项目: android_9.0.0_r45   文件: LayoutTransition.java
/**
 * Starts the animations set up for a CHANGING transition. We separate the setup of these
 * animations from actually starting them, to avoid side-effects that starting the animations
 * may have on the properties of the affected objects. After setup, we tell the affected parent
 * that this transition should be started. The parent informs its ViewAncestor, which then
 * starts the transition after the current layout/measurement phase, just prior to drawing
 * the view hierarchy.
 *
 * @hide
 */
public void startChangingAnimations() {
    LinkedHashMap<View, Animator> currentAnimCopy =
            (LinkedHashMap<View, Animator>) currentChangingAnimations.clone();
    for (Animator anim : currentAnimCopy.values()) {
        if (anim instanceof ObjectAnimator) {
            ((ObjectAnimator) anim).setCurrentPlayTime(0);
        }
        anim.start();
    }
}
 
源代码6 项目: biojava   文件: GeneFeatureHelperTest.java
/**
 * Test of getGeneSequences method, of class GeneFeatureHelper.
 */
@Test
public void testGetGeneSequences() throws Exception {
	// logger.info("getGeneSequences");
	LinkedHashMap<String, ChromosomeSequence> chromosomeSequenceList = GeneFeatureHelper
			.loadFastaAddGeneFeaturesFromGmodGFF3(new File("src/test/resources/volvox_all.fna"), new File(
					"src/test/resources/volvox.gff3"), true);
	LinkedHashMap<String, GeneSequence> geneSequenceHashMap = GeneFeatureHelper
			.getGeneSequences(chromosomeSequenceList.values());
	Collection<GeneSequence> geneSequences = geneSequenceHashMap.values();

	File tmp = File.createTempFile("volvox_all_genes_exon_uppercase", "fna");
	tmp.deleteOnExit();
	FastaWriterHelper.writeGeneSequence(tmp, geneSequences, true);
}
 
源代码7 项目: mycore   文件: MCRTransferPackage.java
/**
 * Builds the transfer package.
 * 
 * @throws MCRUsageException is thrown if some of the referenced objects or derivates couldn't be retrieved
 */
public void build() throws MCRUsageException {
    LinkedHashMap<MCRObjectID, MCRObject> objectMap = new LinkedHashMap<>();
    Set<MCRCategoryID> categories = new HashSet<>();
    resolveChildrenAndLinks(source, objectMap, categories);

    this.objects = new LinkedHashSet<>(objectMap.values());
    this.classifications = categories.stream().map(MCRCategoryID::getRootID).distinct().collect(Collectors.toSet());
    this.fileContainers = buildFileContainers(source);
}
 
源代码8 项目: j2objc   文件: LinkedHashMapTest.java
/**
 * java.util.LinkedHashMap#clone()
 */
public void test_clone() {
    // Test for method java.lang.Object java.util.LinkedHashMap.clone()
    LinkedHashMap hm2 = (LinkedHashMap) hm.clone();
    assertTrue("Clone answered equivalent LinkedHashMap", hm2 != hm);
    for (int counter = 0; counter < hmSize; counter++)
        assertTrue("Clone answered unequal LinkedHashMap", hm
                .get(objArray2[counter]) == hm2.get(objArray2[counter]));

    LinkedHashMap map = new LinkedHashMap();
    map.put("key", "value");
    // get the keySet() and values() on the original Map
    Set keys = map.keySet();
    Collection values = map.values();
    assertEquals("values() does not work",
            "value", values.iterator().next());
    assertEquals("keySet() does not work",
            "key", keys.iterator().next());
    AbstractMap map2 = (AbstractMap) map.clone();
    map2.put("key", "value2");
    Collection values2 = map2.values();
    assertTrue("values() is identical", values2 != values);

    // values() and keySet() on the cloned() map should be different
    assertEquals("values() was not cloned",
            "value2", values2.iterator().next());
    map2.clear();
    map2.put("key2", "value3");
    Set key2 = map2.keySet();
    assertTrue("keySet() is identical", key2 != keys);
    assertEquals("keySet() was not cloned",
            "key2", key2.iterator().next());
}
 
源代码9 项目: nexus-repository-r   文件: RPackagesUtils.java
public static List<Map<String, String>> merge(List<List<Map<String, String>>> parts) {
  final LinkedHashMap<String, Map<String, String>> merged = new LinkedHashMap<>();
  for (List<Map<String, String>> part : parts) {
    for (Map<String, String> thisEntry : part) {
      merged.putIfAbsent(thisEntry.get(P_PACKAGE), thisEntry);
    }
  }
  return new ArrayList<>(merged.values());
}
 
源代码10 项目: ctsms   文件: RecentEntityMenuBase.java
public static List<MenuItem> getMenuItems(ArrayList<RecentEntityMenuBase> menus) {
	LinkedHashMap<String, MenuItem> menuItems = new LinkedHashMap<String, MenuItem>();
	if (menus != null && menus.size() > 0) {
		Iterator<RecentEntityMenuBase> it = menus.iterator();
		while (it.hasNext()) {
			findMenuItems(it.next().createMenuModel(WebUtil.getSessionScopeBean(), 0).getContents(), menuItems);
		}
	}
	return new ArrayList<MenuItem>(menuItems.values());
}
 
源代码11 项目: gate-core   文件: DocTimeReporter.java
/**
 * Sorts LinkedHashMap by its values(natural descending order). keeps the
 * duplicates as it is.
 *
 * @param passedMap
 *          An Object of type LinkedHashMap to be sorted by its values.
 * @return An Object containing the sorted LinkedHashMap.
 */
private LinkedHashMap<?,?> sortHashMapByValues(LinkedHashMap<String,String> passedMap) {
  List<String> mapKeys = new ArrayList<String>(passedMap.keySet());
  List<String> mapValues = new ArrayList<String>(passedMap.values());

  Collections.sort(mapValues, new ValueComparator());
  Collections.sort(mapKeys);
  // Reversing the collection to sort the values in descending order
  Collections.reverse(mapValues);
  LinkedHashMap<String,String> sortedMap = new LinkedHashMap<String,String>();

  Iterator<String> valueIt = mapValues.iterator();
  while (valueIt.hasNext()) {
    String val = valueIt.next();
    Iterator<String> keyIt = mapKeys.iterator();
    while (keyIt.hasNext()) {
      String key = keyIt.next();
      String comp1 = passedMap.get(key);
      String comp2 = val;

      if (comp1.equals(comp2)) {
        passedMap.remove(key);
        mapKeys.remove(key);
        sortedMap.put(key, val);
        break;
      }
    }
  }
  return sortedMap;
}
 
源代码12 项目: gate-core   文件: PRTimeReporter.java
/**
 * Sorts LinkedHashMap by its values(natural descending order). keeps the
 * duplicates as it is.
 *
 * @param passedMap
 *          An Object of type LinkedHashMap to be sorted by its values.
 *
 * @return An Object containing the sorted LinkedHashMap.
 */
private LinkedHashMap<String,String> sortHashMapByValues(LinkedHashMap<String,String> passedMap) {
    List<String> mapKeys = new ArrayList<String>(passedMap.keySet());
    List<String> mapValues = new ArrayList<String>(passedMap.values());

    Collections.sort(mapValues, new ValueComparator());
    Collections.sort(mapKeys);
    Collections.reverse(mapValues);
    LinkedHashMap<String,String> sortedMap = new LinkedHashMap<String,String>();

    Iterator<String> valueIt = mapValues.iterator();
    while (valueIt.hasNext()) {
      String val = valueIt.next();
      Iterator<String> keyIt = mapKeys.iterator();
      while (keyIt.hasNext()) {
        String key = keyIt.next();
        String comp1 = passedMap.get(key);
        String comp2 = val;

        if (comp1.equals(comp2)) {
          passedMap.remove(key);
          mapKeys.remove(key);
          sortedMap.put(key, val);
          break;
        }
      }
    }
    return sortedMap;
}
 
源代码13 项目: delion   文件: PartnerBookmarksReader.java
private void recreateFolderHierarchy(LinkedHashMap<Long, Bookmark> idMap) {
    for (Bookmark bookmark : idMap.values()) {
        if (bookmark.mId == ROOT_FOLDER_ID) continue;

        // Look for invalid parent ids and self-cycles.
        if (!idMap.containsKey(bookmark.mParentId) || bookmark.mParentId == bookmark.mId) {
            bookmark.mParent = idMap.get(ROOT_FOLDER_ID);
            bookmark.mParent.mEntries.add(bookmark);
            continue;
        }

        bookmark.mParent = idMap.get(bookmark.mParentId);
        bookmark.mParent.mEntries.add(bookmark);
    }
}
 
源代码14 项目: biojava   文件: FastaWriter.java
public static void main(String[] args) {
	try {
		FileInputStream is = new FileInputStream("/Users/Scooter/scripps/dyadic/c1-454Scaffolds.faa");


		FastaReader<ProteinSequence, AminoAcidCompound> fastaReader = new FastaReader<ProteinSequence, AminoAcidCompound>(is, new GenericFastaHeaderParser<ProteinSequence, AminoAcidCompound>(), new ProteinSequenceCreator(AminoAcidCompoundSet.getAminoAcidCompoundSet()));
		LinkedHashMap<String, ProteinSequence> proteinSequences = fastaReader.process();
		is.close();


	  //  logger.debug(proteinSequences);

		FileOutputStream fileOutputStream = new FileOutputStream("/Users/Scooter/scripps/dyadic/c1-454Scaffolds_temp.faa");

		BufferedOutputStream bo = new BufferedOutputStream(fileOutputStream);
		long start = System.currentTimeMillis();
		FastaWriter<ProteinSequence, AminoAcidCompound> fastaWriter = new FastaWriter<ProteinSequence, AminoAcidCompound>(bo, proteinSequences.values(), new GenericFastaHeaderFormat<ProteinSequence, AminoAcidCompound>());
		fastaWriter.process();
		bo.close();
		long end = System.currentTimeMillis();
		logger.info("Took {} seconds", (end - start));

		fileOutputStream.close();


	} catch (IOException e) {
		logger.warn("Exception: ", e);
	}
}
 
源代码15 项目: Tomcat8-Source-Read   文件: SpnegoAuthenticator.java
private void fix() {
    /*
     * Useful references:
     * http://tools.ietf.org/html/rfc4121#page-5
     * http://tools.ietf.org/html/rfc2743#page-81
     * https://msdn.microsoft.com/en-us/library/ms995330.aspx
     */

    // Scan until we find the mech types list. If we find anything
    // unexpected, abort the fix process.
    if (!tag(0x60)) return;
    if (!length()) return;
    if (!oid("1.3.6.1.5.5.2")) return;
    if (!tag(0xa0)) return;
    if (!length()) return;
    if (!tag(0x30)) return;
    if (!length()) return;
    if (!tag(0xa0)) return;
    lengthAsInt();
    if (!tag(0x30)) return;
    // Now at the start of the mechType list.
    // Read the mechTypes into an ordered set
    int mechTypesLen = lengthAsInt();
    int mechTypesStart = pos;
    LinkedHashMap<String, int[]> mechTypeEntries = new LinkedHashMap<>();
    while (pos < mechTypesStart + mechTypesLen) {
        int[] value = new int[2];
        value[0] = pos;
        String key = oidAsString();
        value[1] = pos - value[0];
        mechTypeEntries.put(key, value);
    }
    // Now construct the re-ordered mechType list
    byte[] replacement = new byte[mechTypesLen];
    int replacementPos = 0;

    int[] first = mechTypeEntries.remove("1.2.840.113554.1.2.2");
    if (first != null) {
        System.arraycopy(token, first[0], replacement, replacementPos, first[1]);
        replacementPos += first[1];
    }
    for (int[] markers : mechTypeEntries.values()) {
        System.arraycopy(token, markers[0], replacement, replacementPos, markers[1]);
        replacementPos += markers[1];
    }

    // Finally, replace the original mechType list with the re-ordered
    // one.
    System.arraycopy(replacement, 0, token, mechTypesStart, mechTypesLen);
}
 
源代码16 项目: tomcatsrc   文件: SpnegoAuthenticator.java
private void fix() {
    /*
     * Useful references:
     * http://tools.ietf.org/html/rfc4121#page-5
     * http://tools.ietf.org/html/rfc2743#page-81
     * https://msdn.microsoft.com/en-us/library/ms995330.aspx
     */

    // Scan until we find the mech types list. If we find anything
    // unexpected, abort the fix process.
    if (!tag(0x60)) return;
    if (!length()) return;
    if (!oid("1.3.6.1.5.5.2")) return;
    if (!tag(0xa0)) return;
    if (!length()) return;
    if (!tag(0x30)) return;
    if (!length()) return;
    if (!tag(0xa0)) return;
    lengthAsInt();
    if (!tag(0x30)) return;
    // Now at the start of the mechType list.
    // Read the mechTypes into an ordered set
    int mechTypesLen = lengthAsInt();
    int mechTypesStart = pos;
    LinkedHashMap<String, int[]> mechTypeEntries = new LinkedHashMap<String, int[]>();
    while (pos < mechTypesStart + mechTypesLen) {
        int[] value = new int[2];
        value[0] = pos;
        String key = oidAsString();
        value[1] = pos - value[0];
        mechTypeEntries.put(key, value);
    }
    // Now construct the re-ordered mechType list
    byte[] replacement = new byte[mechTypesLen];
    int replacementPos = 0;

    int[] first = mechTypeEntries.remove("1.2.840.113554.1.2.2");
    if (first != null) {
        System.arraycopy(token, first[0], replacement, replacementPos, first[1]);
        replacementPos += first[1];
    }
    for (int[] markers : mechTypeEntries.values()) {
        System.arraycopy(token, markers[0], replacement, replacementPos, markers[1]);
        replacementPos += markers[1];
    }

    // Finally, replace the original mechType list with the re-ordered
    // one.
    System.arraycopy(replacement, 0, token, mechTypesStart, mechTypesLen);
}
 
源代码17 项目: sakai   文件: DbSiteService.java
/**
 * @inheritDoc
 */
@SuppressWarnings("unchecked")
public List getSites(SelectionType type, Object ofType, String criteria, Map propertyCriteria,  List excludedSites, SortType sort, PagingPosition page, boolean requireDescription, String userId)
{
	userId = getCurrentUserIdIfNull(userId);
	List<String> siteIds = getSiteIds(type, ofType, criteria, propertyCriteria, excludedSites, sort, page, userId);
	LinkedHashMap<String, Site> siteMap = getOrderedSiteMap(siteIds, requireDescription);

	SqlReader reader = requireDescription ? fullSiteReader : lightSiteReader;
	String order = null;
	if ((sort != SortType.CREATED_BY_ASC)
			&& (sort != SortType.CREATED_BY_DESC)
			&& (sort != SortType.MODIFIED_BY_ASC)
			&& (sort != SortType.MODIFIED_BY_DESC))
	{
		order = getSitesOrder(sort);
	}

	// Account for limitations in the number of IN parameters we can use by batching
	// Load just the sites that weren't found in cache
	List<String> siteIdsToLoad = siteMap.entrySet().stream().filter(e -> e.getValue() == null)
			.map(Map.Entry::getKey).collect(Collectors.toList());
	int remaining = siteIdsToLoad.size();
	while (remaining > 0)
	{
		// We are using fixed sized buckets for IN clause parameters, up to the platform maximum number and filling
		// with as many values as we have for this batch. This is to prepare a small number of queries and tabulate
		// query statistics in a meaningful way. Any remaining slots are filled with null, which optimizes nicely
		// and does not affect results against a non-null column (as with IDs).

		// Fill a bucket by passing the sublist from our current element to the end (remaining length)
		int start = siteIdsToLoad.size() - remaining;
		Object[] values = getFilledBucket(siteIdsToLoad.subList(start, start + remaining));
		int bucketSize = values.length;
		String where = getWhereSiteIdIn(values);

		List<Site> dbSites;
		dbSites = (List<Site>) getSelectedResources(where, order, values, null, reader);

		// Cache the sites we retrieved and put them in the right ordered slots for return
		for (Site site : dbSites)
		{
			cacheSite(site);
			siteMap.put(site.getId(), site);
		}

		remaining -= bucketSize;
	}

	// Ensure we don't have any nulls in the return list
	for (Iterator<Site> i = siteMap.values().iterator(); i.hasNext(); )
	{
		if (i.next() == null) i.remove();
	}

	return new ArrayList<>(siteMap.values());
}
 
@Override
	public void actionPerformed(AnActionEvent e) {
		LOG.info("actionPerformed GenerateLexerRulesForLiteralsAction");
		final Project project = e.getProject();

		final PsiFile psiFile = e.getData(LangDataKeys.PSI_FILE);
		if (psiFile == null) {
			return;
		}
		String inputText = psiFile.getText();
		ParsingResult results = ParsingUtils.parseANTLRGrammar(inputText);

		final Parser parser = results.parser;
		final ParseTree tree = results.tree;
		Collection<ParseTree> literalNodes = XPath.findAll(tree, "//ruleBlock//STRING_LITERAL", parser);
		LinkedHashMap<String, String> lexerRules = new LinkedHashMap<String, String>();
		for (ParseTree node : literalNodes) {
			String literal = node.getText();
			String ruleText = String.format("%s : %s ;",
											RefactorUtils.getLexerRuleNameFromLiteral(literal), literal);
			lexerRules.put(literal, ruleText);
		}

		// remove those already defined
		String lexerRulesXPath = "//lexerRule";
		String treePattern = "<TOKEN_REF> : <STRING_LITERAL>;";
		ParseTreePattern p = parser.compileParseTreePattern(treePattern, ANTLRv4Parser.RULE_lexerRule);
		List<ParseTreeMatch> matches = p.findAll(tree, lexerRulesXPath);

		for (ParseTreeMatch match : matches) {
			ParseTree lit = match.get("STRING_LITERAL");
			if (lexerRules.containsKey(lit.getText())) { // we have rule for this literal already
				lexerRules.remove(lit.getText());
			}
		}

		final LiteralChooser chooser =
			new LiteralChooser(project, new ArrayList<String>(lexerRules.values()));
		chooser.show();
		List<String> selectedElements = chooser.getSelectedElements();
		// chooser disposed automatically.

		final Editor editor = e.getData(PlatformDataKeys.EDITOR);
		final Document doc = editor.getDocument();
		final CommonTokenStream tokens = (CommonTokenStream) parser.getTokenStream();
//		System.out.println(selectedElements);
		if (selectedElements != null) {
			String text = doc.getText();
			int cursorOffset = editor.getCaretModel().getOffset();
			// make sure it's not in middle of rule; put between.
//					System.out.println("offset "+cursorOffset);
			Collection<ParseTree> allRuleNodes = XPath.findAll(tree, "//ruleSpec", parser);
			for (ParseTree r : allRuleNodes) {
				Interval extent = r.getSourceInterval(); // token indexes
				int start = tokens.get(extent.a).getStartIndex();
				int stop = tokens.get(extent.b).getStopIndex();
//						System.out.println("rule "+r.getChild(0).getText()+": "+start+".."+stop);
				if (cursorOffset < start) {
					// before this rule, so must be between previous and this one
					cursorOffset = start; // put right before this rule
					break;
				}
				else if (cursorOffset >= start && cursorOffset <= stop) {
					// cursor in this rule
					cursorOffset = stop + 2; // put right before this rule (after newline)
					if (cursorOffset >= text.length()) {
						cursorOffset = text.length();
					}
					break;
				}
			}

			String allRules = Utils.join(selectedElements.iterator(), "\n");
			text =
				text.substring(0, cursorOffset) +
					"\n" + allRules + "\n" +
					text.substring(cursorOffset, text.length());
			MyPsiUtils.replacePsiFileFromText(project, psiFile, text);
		}
	}
 
源代码19 项目: teiid-spring-boot   文件: TeiidRSProvider.java
private InputStream executeProc(Connection conn, String procedureName,
        LinkedHashMap<String, Object> parameters, String charSet, boolean usingReturn) throws SQLException {
    // the generated code sends a empty string rather than null.
    if (charSet != null && charSet.trim().isEmpty()) {
        charSet = null;
    }
    Object result = null;
    StringBuilder sb = new StringBuilder();
    sb.append("{ "); //$NON-NLS-1$
    if (usingReturn) {
        sb.append("? = "); //$NON-NLS-1$
    }
    sb.append("CALL ").append(procedureName); //$NON-NLS-1$
    sb.append("("); //$NON-NLS-1$
    boolean first = true;
    for (Map.Entry<String, Object> entry : parameters.entrySet()) {
        if (entry.getValue() == null) {
            continue;
        }
        if (!first) {
            sb.append(", "); //$NON-NLS-1$
        }
        first = false;
        sb.append(SQLStringVisitor.escapeSinglePart(entry.getKey())).append("=>?"); //$NON-NLS-1$
    }
    sb.append(") }"); //$NON-NLS-1$

    CallableStatement statement = conn.prepareCall(sb.toString());
    if (!parameters.isEmpty()) {
        int i = usingReturn ? 2 : 1;
        for (Object value : parameters.values()) {
            if (value == null) {
                continue;
            }
            statement.setObject(i++, value);
        }
    }

    final boolean hasResultSet = statement.execute();
    if (hasResultSet) {
        ResultSet rs = statement.getResultSet();
        if (rs.next()) {
            result = rs.getObject(1);
        } else {
            throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "Only result producing procedures are allowed");
        }
    } else if (usingReturn) {
        result = statement.getObject(1);
    }
    return handleResult(charSet, result);
}
 
源代码20 项目: Tomcat7.0.67   文件: SpnegoAuthenticator.java
private void fix() {
    /*
     * Useful references:
     * http://tools.ietf.org/html/rfc4121#page-5
     * http://tools.ietf.org/html/rfc2743#page-81
     * https://msdn.microsoft.com/en-us/library/ms995330.aspx
     */

    // Scan until we find the mech types list. If we find anything
    // unexpected, abort the fix process.
    if (!tag(0x60)) return;
    if (!length()) return;
    if (!oid("1.3.6.1.5.5.2")) return;
    if (!tag(0xa0)) return;
    if (!length()) return;
    if (!tag(0x30)) return;
    if (!length()) return;
    if (!tag(0xa0)) return;
    lengthAsInt();
    if (!tag(0x30)) return;
    // Now at the start of the mechType list.
    // Read the mechTypes into an ordered set
    int mechTypesLen = lengthAsInt();
    int mechTypesStart = pos;
    LinkedHashMap<String, int[]> mechTypeEntries = new LinkedHashMap<String, int[]>();
    while (pos < mechTypesStart + mechTypesLen) {
        int[] value = new int[2];
        value[0] = pos;
        String key = oidAsString();
        value[1] = pos - value[0];
        mechTypeEntries.put(key, value);
    }
    // Now construct the re-ordered mechType list
    byte[] replacement = new byte[mechTypesLen];
    int replacementPos = 0;

    int[] first = mechTypeEntries.remove("1.2.840.113554.1.2.2");
    if (first != null) {
        System.arraycopy(token, first[0], replacement, replacementPos, first[1]);
        replacementPos += first[1];
    }
    for (int[] markers : mechTypeEntries.values()) {
        System.arraycopy(token, markers[0], replacement, replacementPos, markers[1]);
        replacementPos += markers[1];
    }

    // Finally, replace the original mechType list with the re-ordered
    // one.
    System.arraycopy(replacement, 0, token, mechTypesStart, mechTypesLen);
}