public static XMLFragmentMapping getInstance( FragmentMapping fm, XMLElementResolverFactory resolverFac) { logger.debug("Resolving fragment-mapping: " + fm); XMLResolver<FragmentMapping, XMLFragmentMapping> fmResolver = resolverFac.getResolver(FragmentMapping.class, XMLFragmentMapping.class); if (fmResolver == null) throw new ReuseRuntimeException( "No XMLResolver found for " + FragmentMapping.class + ", " + XMLFragmentMapping.class); IdGenerator<XMLFragmentMapping> fmIdGenerator = resolverFac.getIdGenerator(XMLFragmentMapping.class); if (fmIdGenerator == null) throw new ReuseRuntimeException("No IdGenerator found for " + XMLFragmentMapping.class); if (fmResolver.isBound(fm)) { XMLFragmentMapping resolved = fmResolver.resolve(fm); logger.debug("Cache hit for fragment-mapping: " + fm + ", in cache: " + resolved); return resolved; } // TFragmentizer2.printFragmentMapping(fm); Set<Operator> ops = fm.getOperators(); Set<XMLOperator> xmlOps = new HashSet<XMLOperator>(); for (Operator op : ops) { XMLOperator xmlOp = XMLOperator.getInstance(op, resolverFac); xmlOps.add(xmlOp); } XMLFragmentMapping xmlFm = new XMLFragmentMapping(); String id = fm.getId(); // if no id is set -> generate one if (id == null) { id = fmIdGenerator.generateId(xmlFm); } xmlFm.setId(id); xmlFm.setOperators(xmlOps); fmResolver.bind(fm, xmlFm); logger.debug("Resolved fragment-mapping: " + fm + " to: " + xmlFm); return xmlFm; }
@Test public void testGenerateIdWithStringScopes() throws Exception { String id = instance.generateId(scopes, bundle); assertEquals("r1-someid_01", id); }